《c顺序结构程序设计.pptx》由会员分享,可在线阅读,更多相关《c顺序结构程序设计.pptx(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 利用计算机解决实际问题的步骤算法分析最有效的方法问题选择实现语言运行程序分析、论证算法流程结束测试程序第1页/共38页2 算法的概念一、算法的概念程序对数据的描述:在程序中要指定数据的类型和数据 的组织形式,即数据结构对操作的描述:即操作步骤,也就是算法算法:为解决一个问题而采取的方法和步骤,称为“算法”它是程序设计的灵魂,是解决“做什么”和“怎么做”的 问题,处理的对象是数据第2页/共38页2 算法的概念二、算法的特性1、有穷性2、确定性3、有效性/可行性4、有零个或多个输入5、有一个或多个输出第3页/共38页2 算法的概念三、算法的表示自然语言表示法传统流程图表示法NS结构化流程图伪代
2、码PAD图等第4页/共38页2 算法的概念三、算法的表示1、自然语言表示法例:对于一个大于等于3的正整数,判断其是否素数算法如下:S1:输入n的值S2:i2作为除数S3:n被i除,得余数rS4:如果r0,表示n能被i整除,则打印“不是素数”,算法结束;否则,继续下一步S5:i1iS6:如果in1,返回执行S3;否则,打印“是素数”,算法结束第5页/共38页2 算法的概念三、算法的表示2、传统流程图表示法起止框判断框处理框输入/输出框注释框流向线连接点第6页/共38页出口1出口2传统流程图表示前例第7页/共38页2 算法的概念三、算法的表示3、算法的三种基本结构Bohra和Jacopini提出了
3、以下三种基本结构:顺序结构、选择结构、循环结构用这三种基本结构作为表示一个良好算法的基本单元。第8页/共38页顺序结构选择结构三种基本结构第9页/共38页当型(While型)循环 直到型(Until型)循环 三种基本结构第10页/共38页三种基本结构的共同特点:2 算法的概念三、算法的表示3、算法的三种基本结构(1)(1)只有一个入口;只有一个入口;(2)(2)只有一个出口;(只有一个出口;(请注意:请注意:一个菱形判断框有一个菱形判断框有两个出口,而一个选择结构只有一个出口。不两个出口,而一个选择结构只有一个出口。不要将菱形框的出口和选择结构的出口混淆。)要将菱形框的出口和选择结构的出口混淆
4、。)(3)(3)结构内的每一部分都有机会被执行到;结构内的每一部分都有机会被执行到;(4)(4)结构内不存在结构内不存在“死循环死循环”(无终止的循环无终止的循环)。第11页/共38页一个出口出口1出口2第12页/共38页2 算法的概念三、算法的表示3、NS结构化流程图 1973 1973年美国学者年美国学者I.NassiI.Nassi和和B.ShneidermanB.Shneiderman提出了提出了一种新的流程图形式。在这种流程图中,完全去一种新的流程图形式。在这种流程图中,完全去掉了带箭头的流程线。全部算法写在一个矩形框掉了带箭头的流程线。全部算法写在一个矩形框内,在该框内还可以包含其它
5、的从属于它的框,内,在该框内还可以包含其它的从属于它的框,或者说,由一些基本的框组成一个大的框。这种或者说,由一些基本的框组成一个大的框。这种流程图又称流程图又称N-SN-S结构化流程图结构化流程图 。第13页/共38页 N-SN-S流程图用以下的流程图符号:流程图用以下的流程图符号:(1)顺序结构(2)选择结构(3)直到型循环(3)当型循环第14页/共38页第15页/共38页N-S图表示算法的优点 比文字描述直观、形象、比文字描述直观、形象、易于理解;比传统易于理解;比传统流程图紧凑易画。尤其是它废除了流程线,流程图紧凑易画。尤其是它废除了流程线,整个算法结构是由各个基本结构按顺序组成整个算
6、法结构是由各个基本结构按顺序组成的,的,N-S流程图中的上下顺序就是执行时的流程图中的上下顺序就是执行时的顺序。用顺序。用N-S图表示的算法都是结构化的算图表示的算法都是结构化的算法,因为它不可能出现流程无规律的跳转,法,因为它不可能出现流程无规律的跳转,而只能自上而下地顺序执行。而只能自上而下地顺序执行。第16页/共38页3 结构化程序设计 一个结构化程序一个结构化程序 就是用高级语言表示的结构化就是用高级语言表示的结构化算法。用三种基本结构组成的程序必然是结构化算法。用三种基本结构组成的程序必然是结构化的程序,这种程序便于编写、便于阅读、便于修的程序,这种程序便于编写、便于阅读、便于修改和
7、维护。改和维护。结构化程序设计强调程序设计风格和程序结构的结构化程序设计强调程序设计风格和程序结构的规范化,提倡清晰的结构。规范化,提倡清晰的结构。结构化程序设计方法的基本思路是:把一个复杂结构化程序设计方法的基本思路是:把一个复杂问题的求解过程问题的求解过程 分阶段进行,每个阶段处理的分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。问题都控制在人们容易理解和处理的范围内。第17页/共38页结构化程序设计方法采取以下方法来保证得到结构化的程序:自顶向下;逐步细化;模块化设计;结构化编码。两种不同的方法:两种不同的方法:自顶向下,逐步细化;自顶向下,逐步细化;自下而上,逐步积累
8、。自下而上,逐步积累。第18页/共38页自顶向下,逐步细化方法的优点:自顶向下,逐步细化方法的优点:考虑周全,结构清晰,层次分明,作考虑周全,结构清晰,层次分明,作者容易写,读者容易看。如果发现某一部者容易写,读者容易看。如果发现某一部分中有一段内容不妥,需要修改,只需找分中有一段内容不妥,需要修改,只需找出该部分修改有关段落即可,与其它部分出该部分修改有关段落即可,与其它部分无关。我们提倡用这种方法设计程序。这无关。我们提倡用这种方法设计程序。这就是用工程的方法设计程序。就是用工程的方法设计程序。第19页/共38页模块设计的方法:模块设计的方法:模块化设计的思想实际上是一种模块化设计的思想实
9、际上是一种“分而治之分而治之”的思想,把的思想,把一个大任务分为若干个子任务,每一个子任务就相对简单了。一个大任务分为若干个子任务,每一个子任务就相对简单了。在拿到一个程序模块以后,根据程序模块的功能将它划在拿到一个程序模块以后,根据程序模块的功能将它划分为若干个子模块,如果这些子模块的规模还嫌大,还再可分为若干个子模块,如果这些子模块的规模还嫌大,还再可以划分为更小的模块。这个过程采用自顶向下方法来实现。以划分为更小的模块。这个过程采用自顶向下方法来实现。子模块一般不超过子模块一般不超过5050行行 划分子模块时应注意模块的独立性,即:使一个模块完划分子模块时应注意模块的独立性,即:使一个模
10、块完成一项功能,耦合性愈少愈好。成一项功能,耦合性愈少愈好。第20页/共38页4 C+语句一、语句的概念C+语句用来向计算机系统发出操作指令,它都是用来完成一定操作任务的。二、C+语句的分类声明语句执行语句空语句复合语句第21页/共38页二、C+语句的分类1、声明语句对变量及其它对象的定义,可以出现在函数中的任何行,也可放在函数外如:int a,b;2、执行语句通知计算机完成一定的操作包括控制语句、函数和流调用语句、表达式语句2、执行语句第22页/共38页(1)控制语句 完成一定的控制功能if()else 条件for()、while()、do while()循环continue 、break
11、结束循环switch 多分支选择语句goto 跳转语句return 从函数返回语句二、C+语句的分类2、执行语句第23页/共38页(2)函数和流对象调用语句 由一次函数调用加一个分号构成一条语句 例 max(a,b);coutxendl;(3)表达式语句 由一个表达式加一个分号构成一条语句,但构 成的语句应该有意义,最典型的为赋值语句 a=3 表达式 a=3;赋值语句 i+1 表达式 i+1;表达式语句 无实际意义二、C+语句的分类2、执行语句第24页/共38页3、空语句只有一个分号的语句,什么也不做主要用来完善程序的结构,有时用来做被转向点或循环语句中的循环体4、复合语句用 把一些语句括起来
12、成为复合语句例 P49二、C+语句的分类第25页/共38页5 数据输出与输入不论C语言还是C+,输入与输出都不是其语言中的正式组成部分,如需使用C中的输入输出函数或C+中的输入输出流,都必须用预处理命令将头文件包含到本文件中如:#include#include 第26页/共38页一、输入流与输出流1、一般格式:cout表达式1表达式2变量1变量2变量n;说明(1)cout可分写成若干行coutThis is a simple C+program.endl;coutThis isa C+program.endl;coutThis is;cout a C+;cout program.;cout e
13、ndl;第27页/共38页(2)不能用一个插入运算符“abcd;cinabcd;cina;cin b;cin c;cin d;第28页/共38页(5)cin输入时系统会根据变量的类型从输入流中提取相应长度的字节char c1,c2;int a;float b;cinc1c2ab;输入:1234 56.78用cin语句得不到空格和回车字符第29页/共38页2、输入输出流的控制符 P53 表3.1 如使用控制符,还需在程序开头加#include 一、输入流与输出流例:输出双精度 输出整数 例3.1第30页/共38页二、getchar和putchar1、字符格式输出函数 putchar()功能:向终
14、端输出一个字符形式:putchar(参数)参数:可以为常量,也可以为变量,还可以是任意整型表达式,参数的值代表的是某字符对应的ASCII码值,也可输出转义字符使用时需加头文件#include 例 P55 例3.2第31页/共38页二、getchar和putchar2、字符格式输入函数 getchar()功能:从终端输入一个字符形式:getchar()无参数,函数的值就是从输入设备得到的字符,得到的字符可以赋给一个字符变量或整型变量;也可以不赋给任何变量,作为表达式的一部分使用时需加头文件#include 例 P56 P56 例3.33.3第32页/共38页三、scanf和printf1、输出函
15、数 printf()功能:向终端输出若干个任意类型的数据格式:printf(格式控制,输出表列)输出表列:需要输出的数据,可以是表达式格式控制:用双引号括起来的字符串(包括格式说明、普通字符)格式说明:由“”和格式字符组成,将输出的数据转换为指定的格式输出普通字符:需要原样输出的字符第33页/共38页三、scanf和printf2、据输入函数 scanf()功能:从输入设备向计算机输入任意类型的数据到相应的变量中格式:scanf(格式控制,地址表列)格式控制:同printf(),普通字符需原样输入地址表列:由若干个地址组成的表列,可以是变量的地址,或字符串的首地址例 P57 例3.4第34页/共38页6 顺序结构程序设计开始输入a,b,c计算x1,x2输出x1,x2结束例3.5 3.5 求一元二次方程ax2+bx+c=0(b2-4ac0)的根第35页/共38页3 顺序结构程序设计例5.19 将任意小写字母,转换为对应的大写字母并输出。输入CCC32输出C开始结束第36页/共38页本章结束作业:P85 2、3、4、5第37页/共38页感谢您的欣赏!第38页/共38页
限制150内