分校C课件第6讲语句和算法30

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第六讲语句和算法常用语句算法及其表示结构化程序设计程序设计举例2/18C程序源程序文件1源程序文件2源程序文件n预处理命令函数n函数1数据声明函数首部函数体数据声明执行语句C语句概述3/18一个c程序可以有若干个源程序文件组成一个源文件可以有若干个函数和预处理命令以及全局变量声明部分组成一个函数有函数首部和函数体组成函数体由数据声明和执行语句组成C语句分为5类声明语句控制语句函数调用语句表达式语句复合语句空语句声明语句(可以说是表达式语句的一种)类型说明符变量名;类型说明符函数名(参数表);C语句概述4/18(二)函数调用语句有一个函数调用加一个分号构成一个语句Printf(ThisisaCstatement.);函数名(参数表);C语句概述(一)控制语句完成一定的控制功能1if()~else条件语句6break间断语句2for()~循环语句7switch()开关语句3while()~循环语句8goto转向语句4do~while();循环语句9return返回语句5continue继续语句5/18(四)复合语句用一对{}括起来的语句{z=x+y;t=z/100;printf(“%f”,t);}(五)空语句只有一个分号的语句(什么也不做)用来做流程的转向点用来作为循环语句中的循环体(三)表达式语句有一个表达式加一个分号构成一个语句a=3;表达式;分号赋值表达式表达式语句C语句概述6/18程序=数据结构+算法。算法:简而言之,就是解决问题的方法与步骤。算法是程序设计的灵魂,是问题求解过程中的精确描述,一个算法由有限条可以完全机械地执行的、有确定结果的指令组成。程序设计语言:是程序开发工具,即是将算法转化为程序的开发工具。程序:算法的具体实现。学习C语言,不仅要熟练掌握其语言本身的特点、语法规则等以外,更重要的就是掌握分析问题、解决问题的方法,就是锻炼分析、分解,最终归纳整理出算法的能力。程序设计和算法Algorithmisthespiritofaprogram.算法是程序的灵魂7/181)有穷性:算法中的每个步骤由计算机执行的次数及时间是有限的。2)确定性:算法中的每个步骤含义明确,无二义性。3)可行性:算法中描述的操作都可通过有限次的基本运算来实现。4)输入:一个算法应具有零个或多个输入。5)输出:一个算法应具有一个或多个输出。算法应具有下面五个特性:8/18算法的描述方法常用的有自然语言、流程图、N-S图、伪代码等。1)自然语言例:编程求1+2+3+┄+100。算法为:S1:设置一个累和变量sum和一个计数变量n;并设它们的初值都为0;S2:判断n=100,若成立转S3,否则转S5;S3:sum+n==sum,n+1==n;S4:转S2;S5:输出sum.。算法的表示方法9/18算法的自然语言表示问题计算1+2+3+…+100算法的自然语言表示语句和算法步骤1:i=1,sum=0。步骤2:如果i不大于100,顺序执行步骤3;否则,执行步骤5。步骤3:sum加上i,相加后的值仍放在sum中,即:sum=sum+i。步骤4:使i的值增1得到下一个加数,即i=i+1;执行步骤2。步骤5:变量sum中的值就是要得到的结果;输出结果,算法结束。10/18算法的伪代码表示问题计算1+2+3+…+1001、伪代码表示语句和算法i=1sum=0whilei=100dosum=sum+ii=i+1endwhileprintsum•人为的、非正式的语言•与日常用语类似•帮助程序员在写程序之前“设想出”程序•很容易被转换成C程序•一般只包括可执行语句11/18算法的流程图表示2、流程图表示语句和算法i=1sum=0i=100sum=sum+ii=i+1Out:sumYNstartend程序的开始和结束动作流向线判断输入/输出连接注释框12/181973年,美国学者I.Nassi和B.Shneiderman提出了一种新的流程图形,并以他们的名字命名为N-S结构化流程图。在这种流程图中,完全去掉了带箭头的流程线。全部算法写在一个矩形框内,在该框内还可以包含其他从属于它的框,利用N-S图表示算法就像堆积木一样,它十分适合结构化程序设计,因而很受欢迎。N-S图相比流程图方法来说主要特点是去掉了流程线,从而避免了设计出无规则任意转向的算法,更容易让学习的人养成利用结构化方法构造算法的习惯。3、N-S图表示13/18用N-S流程图表示算法N-S流程图:去掉流程线,算法的每一步用矩形框表示,并把它们按执行顺序连接起来对算法进行描述,这种描述的方法称为N-S流程图。用N-S流程图表示3种基本结构的符号如图14/1815/18⑴求1+2+3+……+100⑵求一元二次方程ax2+bx+c=0的解N-S图16/18用传统的流程图和N-S图表示算法,直观易懂,但画起来比较费事。由于在设计一个算法时,不可能一挥而就,常常需要反复修改,且修改流程图又比较麻烦。因此,为了表示算法的简便,常常采用伪代码。伪代码是用介于自然语言和计算机语言之间的文字(可以是中文)和符号来描述算法。4、伪代码表示17/185、算法的计算机语言表示C语言表示语句和算法#includestdio.hintmain(){inti,sum;//定义变量,函数所有变量必须在首部定义i=1;sum=0;//变量赋初值while(i=100)//循环累加100次{sum=sum+i;i=i+1;}printf(“1+2+3+...+100=%d”,sum);//输出结果return0;}(cw0501.c)18/18流程图与算法的结构化描述程序控制计算机程序中指定语句执行的顺序。顺序执行程序中的语句按照它们的书写顺序一句接一句地执行。控制转移把待执行的下一个语句指定为不是书写顺序中的下一个语句。goto语句带来很多问题。C语言中限制使用。程序结构不清晰、可读性差、不利于维护。语句和算法19/18结构化程序3种控制结构都是单入/单出控制结构。结构化程序由3种结构通过以下方式组合而成:堆叠(stacking)嵌套(nesting)语句和算法stackingnestingAsum=sum+iBi=i+1sequencestructure20/18C语言的结构循环结构AifTFBif-elseFTATFbreakTFbreakTFbreakswitchABC选择结构顺序结构21/18C语言的控制结构循环结构循环结构条件TFwhile条件TFdo-whilefor条件TF22/18结构化程序设计的规则规则1和2循环结构规则2规则2规则2规则1:从一个最简单的流程图开始。规则2:任何一个矩形框都可以被两个顺序相连的矩形框替换。23/18结构化程序设计的规则规则3:任何一个矩形框都可以被任何控制结构替换。循环结构Rule3Rule3Rule324/18非结构化程序非结构化的程序循环结构satckingnestingoverlapinggoto25/18一般来说,只要在程序中能正确的使用“三种基本结构(顺序、分支和循环)”表示解题步骤(算法);使用“模块”来封装功能的思想,进而设计的程序,可以被界定为结构化程序设计。其特点是:•自顶向下;•逐步细化;•模块化设计;•结构化编码。结构化程序设计方法26/18结构化程序设计方法是学习程序设计必须掌握的基础。1)结构程序设计是避免用goto语句的一种程序设计;2)结构程序设计是自顶向下的程序设计;3)结构程序设计是一种组织和编制程序的方法,利用它编制的程序是容易理解和容易修改的;4)程序结构化的一个主要功能是使得正确性的证明容易实现;5)结构程序设计允许在设计过程中的每一步验证其正确性,即自动导致自我说明与自我捍卫的程序风格;6)结构程序设计讨论了如何将任何大规模的和复杂的流程图转换成一种标准的形式,使得它们能够用几种标准的控制结构(通常是顺序、分支和循环)通过重复和嵌套来表示。结构化程序设计方法27/18程序设计举例问题:把十进制整数407转换成八进制形式并输出。分析与设计转换规则:除8取余法。用三个变量分别保存八进制形式的三位数,即三次除法运算所得的余数。语句和算法407850868062728/18#includestdio.hintmain(){intn1,n2,n3;printf(“407=“);n1=407%8;n2=407/8%8;//对n1的商再求余n3=407/8/8%8;//对n2的商再求余printf(“0%d%d%d\n”,n3,n2,n1);}程序设计举例源代码(cw0502.c)语句和算法407=0627407850868062729/18小结语句是组成程序的基本成分。C语言的常用语句算法概念与程序设计的关系表示方法结构化程序设计语句和算法请自学本章教材内容并预习下一章的内容与实验请自己做本章的习题与实验体验本章到此结束,谢谢您的光临!THANKYOUVERYMUCH!

1 / 30
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功