基本控制结构程序设计.ppt
《基本控制结构程序设计.ppt》由会员分享,可在线阅读,更多相关《基本控制结构程序设计.ppt(107页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、ok第二章第二章 基本控制结构程序设计基本控制结构程序设计结构化程序设计的特点是任何程序都可由结构化程序设计的特点是任何程序都可由三种基本结构三种基本结构及其组合来描述。及其组合来描述。本章将介绍本章将介绍C+分支结构和循环结构的设分支结构和循环结构的设计方法。还将介绍一些计方法。还将介绍一些常用算法常用算法。ok第二章第二章 基本控制结构程序设计基本控制结构程序设计 2.2 2.2 2.2 2.2 分支结构程序设计分支结构程序设计分支结构程序设计分支结构程序设计 2.7 2.7 2.7 2.7 枚举类型枚举类型枚举类型枚举类型 2.6 2.6 2.6 2.6 常用算法的常用算法的常用算法的常
2、用算法的应用应用应用应用实例实例实例实例 2.4 2.4 2.4 2.4 转向语句转向语句转向语句转向语句 2.3 2.3 2.3 2.3 循环结构循环结构循环结构循环结构程序设计程序设计程序设计程序设计 2.8 2.8 2.8 2.8 输入输出文件简介输入输出文件简介输入输出文件简介输入输出文件简介 2.5 2.5 2.5 2.5 结构化程序设计思想(选读)结构化程序设计思想(选读)结构化程序设计思想(选读)结构化程序设计思想(选读)2.1 2.1 2.1 2.1 算法的概念与表示方法算法的概念与表示方法算法的概念与表示方法算法的概念与表示方法 ok2.1 2.1 算法的概念与表示方法2.1
3、.1 算算 法法 的的 概概 念念 2.1.3 算算 法描述的三种基本结构法描述的三种基本结构2.1.2 算算 法法 的的 表表 示示ok2.1.1 算算 法法 的的 概概 念念 算法:算法:算法是解决问题的步骤。算法是解决问题的步骤。计算机算法的特征:计算机算法的特征:(1)(1)可执行性可执行性(2)(2)确定性确定性(3)(3)有穷性有穷性(4)(4)可输入输出信息可输入输出信息(5)(5)算法是程序设计学习的重点。算法是程序设计学习的重点。ok2.1.2算法的表示算法的表示流程图:流程图:流程图是图形化的表示方法,比较直观,基本流程图是图形化的表示方法,比较直观,基本组成元件包括矩形框
4、、菱形框、箭头线等。其组成元件包括矩形框、菱形框、箭头线等。其中矩形框表示要执行的指令,在框内标注指令中矩形框表示要执行的指令,在框内标注指令内容;菱形框表示要判断其中表达式的值是真内容;菱形框表示要判断其中表达式的值是真还是假;箭头线则标示指令的流程方向。还是假;箭头线则标示指令的流程方向。伪码:伪码:伪码是介于自然语言和程序设计语言之间的一伪码是介于自然语言和程序设计语言之间的一种类自然语言的表示方法,书写形式自由,容种类自然语言的表示方法,书写形式自由,容易转换为程序。易转换为程序。ok2.1.3算法描述的三种基本结构算法描述的三种基本结构3 循循 环环 结结 构构1 顺顺 序序 结结
5、构构2 分分 支支 结结 构构算法的基本结构:算法的基本结构:对算法的理论研究和实践表明,任何算法的描述对算法的理论研究和实践表明,任何算法的描述都可以分解为三种基本结构或它们的组合,这三都可以分解为三种基本结构或它们的组合,这三种基本结构是种基本结构是顺序结构顺序结构、分支结构分支结构和和循环结构循环结构。oknum115;2.1.3算法描述的三种基本结构算法描述的三种基本结构(1)顺序结构顺序结构【例例2 21 1】求求两两数之和。数之和。块1块2块3流程图 寄存器35显示结果:显示结果:35 num115 num220 sum35num220;sumnum1+num2;演示算法执行过程演
6、示算法执行过程输出输出sum;ok2.1.3算法描述的三种基本结构算法描述的三种基本结构(2)分支结构分支结构【例例22】输入三个数,输出其中的最大数。输入三个数,输出其中的最大数。x7;y12;z10;if(xy)maxx;else max y;if(zmax)maxz;输出输出max;x7y12z10CPUmax12比较比较比较比较显示结果:显示结果:12流程图流程图条件块1块2真假演示算法执行过程演示算法执行过程ok2.1.3算法描述的三种基本结构算法描述的三种基本结构(3)循环结构循环结构流程图流程图条件块真假【例例2 23 3】求求4 4个整数的和。个整数的和。0sum4count1
7、2x显示结果:显示结果:60演示算法执行过程演示算法执行过程123142621642118600count4;/整数个数整数个数sum0;/累加和的初值累加和的初值while(count0)x输入一个整数输入一个整数;sumsum+x;countcount-1;输出输出sum;ok2.2 分支结构程序设计分支结构程序设计 对程序的运行流程进行控制,主要通过执行对程序的运行流程进行控制,主要通过执行专门用来控制流程的语句来实现。专门用来控制流程的语句来实现。分支语句分支语句是基本流程控制语句之一。是基本流程控制语句之一。C+C+提供提供三种分支语句。三种分支语句。2.2.1if语句语句 2.2.
8、2if语句的嵌套语句的嵌套 2.2.4swich语句语句 2.2.3条件运算符条件运算符“?:”?:”ok2.2.1 if 语句语句ifif语句基本格式:语句基本格式:1、if(表达式表达式)语句语句1;2、if(表达式表达式)语句语句1;else语句语句2;【例例2.4】输入一个年份,判断是否闰年。输入一个年份,判断是否闰年。【例例2.5】从键盘上输入三个整数,输出从键盘上输入三个整数,输出其中的最大数。其中的最大数。ok嵌套嵌套ifif语句:语句:if if 语语句句中中,如如果果内内嵌嵌语语句句又又是是ifif语语句句,就就构构成成了了嵌嵌套套ifif语语句句。if if 语语句句可可实
9、实现现二二选选一一分分支支,而而嵌嵌套套ifif语语句句则则可可以以实实现现多选一多选一的多路分支情况。的多路分支情况。嵌套有两种形式,嵌套在嵌套有两种形式,嵌套在elseelse分支中分支中:if(表达式表达式1)语句语句1;else if(表达式表达式2)语句语句2;else if else 语句语句n;嵌套在嵌套在ifif分支中:分支中:if if()1)ifif()1;elseelse;2;2.2.2 if语句的嵌套语句的嵌套【例例2.6】用嵌套用嵌套if语句完成语句完成【例例2.5】的任务。的任务。okelseelse和和ifif的配对关系:的配对关系:C+C+规定了规定了ifif和
10、和elseelse的的“就近配对就近配对”原则,即相距最近原则,即相距最近且还没有配对的一对且还没有配对的一对ifif和和elseelse首先配对。首先配对。按上述规定,第按上述规定,第二种嵌套形式中的二种嵌套形式中的elseelse应与第二个应与第二个ifif配对。如果根据程序配对。如果根据程序的逻辑需要改变配对关系,则要将属于同一层的语句放在的逻辑需要改变配对关系,则要将属于同一层的语句放在一对一对“”中。如第二种嵌套形式中,要让中。如第二种嵌套形式中,要让elseelse和第一个和第一个ifif配对,语句必须写成:配对,语句必须写成:if(if(表达式表达式1)1)if(if(表达式表达
11、式2)2)语句语句1;1;else else 语句语句2;2;第二种嵌套形式较容易产生逻辑错误,而第一种形式第二种嵌套形式较容易产生逻辑错误,而第一种形式配对关系则非常明确,因此从程序可读性角度出发,配对关系则非常明确,因此从程序可读性角度出发,建议建议尽量使用第一种嵌套形式。尽量使用第一种嵌套形式。2.2.2 if语句的嵌套语句的嵌套ok配对关系实例:配对关系实例:/语句语句1 1:if(n%3=0)if(n%3=0)if(n%5=0)if(n%5=0)coutcoutnn是是1515的倍数的倍数endlendl;else else coutcout n n是是3 3的倍数但不是的倍数但不是
12、5 5的倍数的倍数 endlendl;/语句语句2 2:if(n%3=0)if(n%3=0)if(n%5=0)if(n%5=0)coutcoutnn是是1515的倍数的倍数endlendl;else else coutcout n n 不是不是3 3的倍数的倍数两个语句的差别只在于一个两个语句的差别只在于一个“”,但表达的逻辑关系却,但表达的逻辑关系却完全不同。完全不同。【例例2.72.7】某商场购物优惠活动某商场购物优惠活动【例例2.82.8】求一元二次方程的根。求一元二次方程的根。ok2.2.3 条件运算符条件运算符“?:”三元运算符:三元运算符:三三元元运运算算符符条条件件运运算算符符“
13、?:?:”可可以以用用来来简简化化ifif语语句句表表达达。其其构成的表达式格式为:构成的表达式格式为:表达式表达式1?1?表达式表达式2:2:表达式表达式3 3例如:例如:intint a=6,b=7,min=ab?a:b;a=6,b=7,min=ab?a:b;/min=6/min=6 min=ab?+a:+b;min=ab?+a:+b;/min=7 a=7 b=7/min=7 a=7 b=7 min=ab?a+:b+;min=ascore;switch(score)case A:case a:coutexcellent;break;case B:case b:coutgood;break;
14、default:coutfair;ok(5)从形式上看,从形式上看,switch语句的可读性比嵌套语句的可读性比嵌套if语句好,语句好,但不是所有多选一的问题都可由开关语句完成,这是因但不是所有多选一的问题都可由开关语句完成,这是因为开关语句中限定了条件表达式的取值类型。为开关语句中限定了条件表达式的取值类型。ok【例例2.9】运输货物实行运输货物实行分段计费分段计费。采用不采用不带带breakbreak的的开关语句实例开关语句实例【例例2.10】设计一个计算器程序,设计一个计算器程序,实现加、减、乘、除运算。实现加、减、乘、除运算。2.2.4switch语句语句ok循环控制语句循环控制语句是
15、基本流程控制语句之一。是基本流程控制语句之一。C+C+提供三种循环语句:提供三种循环语句:2.3.1while语句语句 2.3.4循环的嵌套循环的嵌套 2.3.3for语句语句2.3.2do-while语句语句 2.3 循环结构程序设计循环结构程序设计ok2.3.1 while 语句语句whilewhile语句也称为当循环。语句也称为当循环。语句格式为:语句格式为:while(while(表达式表达式)循环体语句;循环体语句;图图2.5while语句的执行流程图语句的执行流程图求表达式的值求表达式的值表达式表达式值为真值为真?是是否否执行循环体语句执行循环体语句【例例2.11】求求1+2+3+
16、4+100的值。的值。ok2.3.1 while 语句语句注意:注意:在有循环语句的程序中,通常循环开始前对循环在有循环语句的程序中,通常循环开始前对循环条件进行初始化;而在循环体语句中要包含修条件进行初始化;而在循环体语句中要包含修改循环条件的语句,否则循环将不能终止而陷改循环条件的语句,否则循环将不能终止而陷入死循环。入死循环。C+表达方式灵活,上例中的循环语句还可以写成:表达方式灵活,上例中的循环语句还可以写成:while(i=n)sum+=i+;或者或者while(sum+=i+,i=n);/循环体为空语句循环体为空语句修改程序后在修改程序后在VC+平台上运行,看是否正确平台上运行,看
17、是否正确ok2.3.2do-while语句语句 do-while语语句句称称为为直直到到循环循环,格式为:,格式为:do循环体语句循环体语句while(表达式表达式)否否是是表达式的表达式的值为真值为真?执行循环体语句执行循环体语句求表达式的值求表达式的值图图2.6do-while语句的执行流程图语句的执行流程图ok2.3.2do-while语句语句 do/while语句和语句和while语句的区别:语句的区别:do/while语句至少执行一次循环体后再判断语句至少执行一次循环体后再判断循环条件是否满足;循环条件是否满足;while语句先判断条件是否满足,然后才执行语句先判断条件是否满足,然后
18、才执行循环体。可能一次也不执行。循环体。可能一次也不执行。多数情况下可以互相替代。多数情况下可以互相替代。【例例2.12】用迭代法求用迭代法求a的平方根近似值。的平方根近似值。【例例2.13】输入一段文本,统计文本的行输入一段文本,统计文本的行数、单词数及字符数。数、单词数及字符数。ok2.3.3for语句语句 for循循环环语语句句的的格格式式为:为:for(表达式表达式1;表达式表达式2;表达式表达式3)循环体语句循环体语句图图2.7for语句的执行流程图语句的执行流程图否否是是求表达式求表达式1的值的值求表达式求表达式2的值的值表达式表达式2值值为真为真?执行循环体语句执行循环体语句求表
19、达式求表达式3的值的值okokfor语句、while语句、do/while语句比较:inti=1,sum=0;/循环初始条件循环初始条件while(i=4)sum+=i;i+;/修改循环条件修改循环条件inti=1,sum=0;/循环初始条件循环初始条件do sum+=i;i+;/修改循环条件修改循环条件while(i=4);inti,sum=0;for(i=1;i=4;i+)sum+=i;/*/*习习惯惯上上:表表达达式式1 1:循循环环初初始始条条件件;表表达达式式2 2:循循环环终止条件;表达式终止条件;表达式3 3:修改循环条件:修改循环条件*/okokfor语句的应用语句的应用for
20、for语句的几点说明:语句的几点说明:1、是先判断型的,同、是先判断型的,同while语句;语句;2、使用更为灵活:、使用更为灵活:三个表达式可以是任意表达式,因此它们就三个表达式可以是任意表达式,因此它们就可以实现循环初始化、计算、修改循环条可以实现循环初始化、计算、修改循环条件等任务,而不一定非在循环体中进行;件等任务,而不一定非在循环体中进行;okfor语句的应用语句的应用【例例2.142.14】运行结果:运行结果:0 1 1 2 35 8 13 21 3455 89 144 233 377610 987 1597 2584 4181【例例2.152.15】输入一个不超过输入一个不超过5
21、 5位的位的整数,将其反向后输出。整数,将其反向后输出。【例例2.142.14】设计程序输出设计程序输出FibonaciiFibonacii数列的前数列的前2020项项ok2.3.4 循环的嵌套循环的嵌套【例例2.16】打印九九表。打印九九表。嵌套循环:嵌套循环:当循环语句中的循环体中又有循环语句时,就构成了嵌套当循环语句中的循环体中又有循环语句时,就构成了嵌套循环。循环。嵌套层次一般不超过嵌套层次一般不超过3层,以保证可读性。层,以保证可读性。【例例2.172.17】打印如下图形。打印如下图形。*ok2.4 转向语句转向语句break语句语句 return语句语句 goto语句语句 cont
22、inue语句语句 ok2.4 转向语句转向语句 break语句只能用在语句只能用在switch语句语句和和循环语句循环语句中,用来跳出中,用来跳出switch语句或提前终止循环,转去语句或提前终止循环,转去执行执行switch语句或循环语句之后的语句。语句或循环语句之后的语句。在在for循环中可以用循环中可以用break结束循环:结束循环:for(;)if()break;BreakBreak语句:语句:【例例2.18】给定正整数给定正整数m,判定其是否为素数。,判定其是否为素数。ok2.4 转向语句转向语句 continuecontinue语句只能用在语句只能用在循环语句循环语句中,用中,用来
23、来终止本次循环终止本次循环。当程序执行到。当程序执行到continuecontinue语语句时,将跳过其后尚未执行的循环体语句,句时,将跳过其后尚未执行的循环体语句,开始下一次循环开始下一次循环。下一次循环是否执行仍然。下一次循环是否执行仍然取决于循环条件的判断。取决于循环条件的判断。continuecontinue语句与语句与breakbreak语句的区别在于,语句的区别在于,continuecontinue语句结束的只是语句结束的只是本次循环本次循环,而,而breakbreak结束的是结束的是整个循环整个循环。continuecontinue语句:语句:ok例:例:输出输出1100内内3的
24、倍数。的倍数。分析:设置整型变量分析:设置整型变量I从从1变化到变化到100,依次测试,依次测试I是否是否3的倍数,算法属于穷举法。的倍数,算法属于穷举法。for(I=1;I=100;I+)if(I%3!=0)continue;/I不是不是3的倍数,不输出,继续下一个的倍数,不输出,继续下一个I;输出输出I的值;的值;/I是是3的倍数才输出的倍数才输出ok2.4 转向语句转向语句 gotogoto语句和标号语句一起使用,所谓标号语句语句和标号语句一起使用,所谓标号语句是用标识符标识的语句,它控制程序从是用标识符标识的语句,它控制程序从gotogoto语句所语句所在的地方转移到标号语句处。在的地
25、方转移到标号语句处。gotogoto语句会导致程序语句会导致程序结构混乱,可读性降低,而且它所完成的功能完全结构混乱,可读性降低,而且它所完成的功能完全可以用算法的三种基本结构实现,因此一般不提倡可以用算法的三种基本结构实现,因此一般不提倡使用使用gotogoto语句。但在某些特定场合下语句。但在某些特定场合下gotogoto语句可能语句可能会显出价值,比如在多层循环嵌套中,要从深层地会显出价值,比如在多层循环嵌套中,要从深层地方跳出所有循环,如果用方跳出所有循环,如果用breakbreak语句,不仅要使用多语句,不仅要使用多次,而且可读性较差,这时次,而且可读性较差,这时gotogoto语句
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本 控制 结构 程序设计
限制150内