(精品)C++课件2.ppt
《(精品)C++课件2.ppt》由会员分享,可在线阅读,更多相关《(精品)C++课件2.ppt(122页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第二章第二章 基本控制结构程序设计基本控制结构程序设计C+程序设计结构化程序设计的特点是任何程序都可由三种基本结构及其组合来描述。本章将介绍C+分支结构和循环结构的设计方法。还将介绍一些常用算法。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.4 2.4 2.4 2.4 转向语句转向语句转向语句转向语句 2.3 2.3 2.3 2.3 循环结构循环结构循环结构循环结构程序
2、设计程序设计程序设计程序设计 2.8 2.8 2.8 2.8 输入输出文件简介输入输出文件简介输入输出文件简介输入输出文件简介 2.5 2.5 2.5 2.5 结构化程序设计思想(选读)结构化程序设计思想(选读)结构化程序设计思想(选读)结构化程序设计思想(选读)2.1 2.1 2.1 2.1 算法的概念与表示方法算法的概念与表示方法算法的概念与表示方法算法的概念与表示方法 2.1 算法的概念与表示方法2.1.1 算法的概念算法的概念2.1.2 算法的表示算法的表示2.1.3 算法描述的三种基本结构算法描述的三种基本结构算法:算法:算法是解决问题的步骤。算法是解决问题的步骤。计算机算法的特征:
3、计算机算法的特征:(1)(1)可执行性可执行性(2)(2)确定性确定性(3)(3)有穷性有穷性(4)(4)可输入输出信息可输入输出信息(5)(5)算法是程序设计学习的重点。算法是程序设计学习的重点。2.1.1 算算 法法 的的 概概 念念 2.1.2 算法的表示算法的表示流程图:算法的图形化表示方法矩形框矩形框:表示要执行的指令,在框内标注指令内容;表示要执行的指令,在框内标注指令内容;菱形框菱形框:表示要判断其中表达式的值是真还是假;表示要判断其中表达式的值是真还是假;箭头线箭头线:标示指令的流程方向。标示指令的流程方向。伪码:伪码是介于自然语言和程序设计语言之间的一种类自然伪码是介于自然语
4、言和程序设计语言之间的一种类自然语言的表示方法,书写形式自由,容易转换为程序。语言的表示方法,书写形式自由,容易转换为程序。2.1.2算法的表示算法的表示活动图:UML活动图(活动图(activity diagram)用于计算流程和工作流程建模。通)用于计算流程和工作流程建模。通常使用活动图来表达顺序程序的流程,这点与传统的流程图很相似,仅常使用活动图来表达顺序程序的流程,这点与传统的流程图很相似,仅仅图示方法上有所不同。仅图示方法上有所不同。活动图要素:1)活动()活动(activity):用一个上下为直线两侧为圆弧的框表示,并在框):用一个上下为直线两侧为圆弧的框表示,并在框内写明活动的名
5、称。内写明活动的名称。2)转移()转移(transition):采用箭头表示。):采用箭头表示。3)分支()分支(branch):采用菱形符号。):采用菱形符号。4)注解()注解(note):采用右上角折叠的矩形表示,说明):采用右上角折叠的矩形表示,说明UML图中符号的图中符号的意义,它与被说明的符号间用虚线连接。意义,它与被说明的符号间用虚线连接。5)起点:起始标志,采用黑色实心圆点表示。)起点:起始标志,采用黑色实心圆点表示。6)终点:结束标志,采用实心的小同心圆表示。)终点:结束标志,采用实心的小同心圆表示。任何算法的描述都可以分解为三种基本结构或它们的组合 顺序结构 分支结构 循环结
6、构2.1.3算法描述的三种基本结构算法描述的三种基本结构num115;【例例2 21 1】求两数之和。求两数之和。寄存器35显示结果:显示结果:35 num115 num220 sum35num220;sumnum1+num2;输出输出sum;顺序结构活动图问题提出问题提出从键盘上输入一个十进制数正整数,若输入从键盘上输入一个十进制数正整数,若输入正确,将其转换成对应的二进制数。否则输正确,将其转换成对应的二进制数。否则输出出“输入有错误输入有错误”。1 1、解决问题的步骤(算法)、解决问题的步骤(算法)2 2、流程图、流程图3 3、编写程序、编写程序4 4、上机调试,验证结果、上机调试,验证
7、结果 顺序结构 number,count=0remainder,result100number=0noremainder=numbe%2number=number/2resultcount+=remainder输出结果输出结果yes余数余数97248 1224 0212 026 023 021 120 1高位高位低位低位输入输入numberNumber=0yesno输入有误输入有误 顺序结构【例例22】输入三个数,输出输入三个数,输出其中的最大数。其中的最大数。x7;y12;z10;if(xy)maxx;else max y;if(zmax)maxz;输出输出max;x7y12z10CPUma
8、x12比较比较比较比较显示结果:显示结果:12演示算法执行过程演示算法执行过程 分支结构【例例2 23 3】求求4 4个整数的和。个整数的和。0sum4count12x显示结果:显示结果:60演示算法执行过程演示算法执行过程123142621642118600count4;/整数个数整数个数sum0;/累加和的初值累加和的初值while(count0)x输入一个整数输入一个整数;sumsum+x;countcount-1;输出输出sum;循环结构2.2 分支结构程序设计2.2.1 if语句语句2.2.2 if语句的嵌套语句的嵌套2.2.3 条件运算符条件运算符2.2.4 switch语句语句
9、分支结构 对程序的运行流程进行控制,主要对程序的运行流程进行控制,主要 通过执行专门用来控制流程的语句来通过执行专门用来控制流程的语句来实现。实现。分支语句分支语句是基本流程控制语句之一是基本流程控制语句之一2.2.1 if 语句语句if(表达式)语句1;if(表达式)语句1;else语句2;执行流程执行流程false(0)true(true(非非0 0)表达式表达式 语语 句句false(0)true(true(非非0 0)表达式表达式 语语 句句 表达式表达式 语语 句句true(非0)false(0)true(true(非非0 0)表达式表达式 语语 句句 表达式表达式 false(0)
10、if(表达式)语句1;2.2.1 if 语句语句执行流程执行流程false(0)false(0)true(true(非非0 0)表达式表达式语语 句句 1语语 句句 2false(0)false(0)true(true(非非0 0)表达式表达式语语 句句 1语语 句句 2true(非0)表达式表达式语语 句句 1false(0)false(0)true(true(非非0 0)表达式表达式语语 句句 1语语 句句 2false(0)表达式表达式语语 句句 22.2.1 if 语句语句if(表达式)语句1;else语句2;分分析析:读读入入三三个个数数,先先求求出出两两个个数数中中较较大大者者,再
11、再将将该该大大数数与与第第三三个个数数比比较较,求出最大数。求出最大数。intmain()inta,b,c,max;coutabc;couta=atb=btc=c=b)max=a;elsemax=b;if(cmax)max=c;cout“最最大大数数为为:”maxendl;return0;【例例2.5】从键盘上输入三个整数,输出其中的最大数。从键盘上输入三个整数,输出其中的最大数。例例2.4 2.4 输入一个年份,判断是否为闰年输入一个年份,判断是否为闰年#includeusingnamespacestd;intmain()intyear;cout“输入年份输入年份”year;if(year%
12、4=0&year%100!=0|year%400=0)coutyear“年时闰年年时闰年”endl;elsecoutyear“年不是闰年年不是闰年”c+d/*等同于等同于(a+b)(c+d),结果为,结果为0或或1*/y=ab/*计算计算ab的值的值0或或1赋给赋给y,y的值为的值为0或或1*/abc/*等同于等同于(ab)c,先求,先求ab的值,的值,再将结果再将结果0或或1与与c比较大小比较大小*/注意注意:数学式数学式abc,应表达为,应表达为ab&bc,参见,参见后文的内容。后文的内容。逻辑运算、逻辑表达式及其求值优化逻辑运算、逻辑表达式及其求值优化 关系表达式由关系运算符连接的表达式
13、。是一种简单的逻由关系运算符连接的表达式。是一种简单的逻辑表达式。值为辑表达式。值为true或或false。设有定义设有定义 floata=3.2;intb=5;则则:3ab/结果是结果是?根据右结合根据右结合原则其运算原则其运算过程如下:过程如下:a5b3.23F,即即0F即即0逻辑运算、逻辑表达式及其求值优化逻辑运算、逻辑表达式及其求值优化 运算运算符符名名称称语语义义!逻辑非逻辑非,单目单目操操作作数数的的值值为为真真,则则结结果为假果为假;反之结果为真反之结果为真&逻辑与逻辑与,双目双目当当两两个个操操作作数数全全为为真真时时,结结果为真,否则为假果为真,否则为假;|逻辑或逻辑或,双目
14、双目两两个个操操作作数数中中有有一一个个为为真,则结果为真真,则结果为真;:逻辑运算、逻辑表达式及其求值优化逻辑运算、逻辑表达式及其求值优化 逻辑运算符逻辑表达式由逻辑运算符连接的表达式,其操作数和运算由逻辑运算符连接的表达式,其操作数和运算结果均为逻辑量。操作数可以是表达式,只要结果均为逻辑量。操作数可以是表达式,只要其值是逻辑量,如关系表达式。其值是逻辑量,如关系表达式。:由于由于逻辑值逻辑值和和整数整数之间的之间的对应关系,对应关系,也允许也允许整型整型和和字符型字符型操作数进行操作数进行逻辑运算逻辑运算:21&021&0/逻辑与,逻辑与,2121与与0 0,结果为假:,结果为假:0 0
15、21|021|0/逻辑或,逻辑或,2121或或0 0,结果为真:,结果为真:1 1!21!21/逻辑非,逻辑非,2121的非,结果为假:的非,结果为假:0 0运算结果同样可以作为一个运算结果同样可以作为一个整数整数参与其他运算。参与其他运算。逻辑运算、逻辑表达式及其求值优化逻辑运算、逻辑表达式及其求值优化 已知已知:inta=10,b=20,c=30;floatx=1.8,y=2.4;ay|ab-!c按按优先级优先级与与结合性结合性,其,其求值顺序求值顺序等同于:等同于:(ay)|(a(b-(!c)t1=1t2=0t4=0-&t3=0t5=bt6=1|得整个表达式的值为:得整个表达式的值为:1
16、逻辑表达式计算时,逻辑逻辑表达式计算时,逻辑“非非”优先级最高,关系优先级最高,关系运算其次,逻辑运算其次,逻辑“与与”和逻辑和逻辑“或或”最低。最低。逻辑表达式求值的优化逻辑表达式求值的优化:在求逻辑表达式值的过程中,一旦表达式的在求逻辑表达式值的过程中,一旦表达式的值能够确定,就不再逐步进行下面的运算。值能够确定,就不再逐步进行下面的运算。称为称为“求值优化求值优化”。已知已知:inta=10,b=20,c=30;求:求:ab|c+/结果以及结果以及a,b,c的的值值t1=1整个表达式的值为整个表达式的值为 1 1可见可见:表达式表达式 c+c+已不需要计算已不需要计算所以所以:c不变仍为
17、不变仍为30编程人员在使用逻辑运算时应当加以小心,优化计算固然提编程人员在使用逻辑运算时应当加以小心,优化计算固然提高了运算效率,但可能产生副作用。高了运算效率,但可能产生副作用。所谓副作用,就是出乎所谓副作用,就是出乎设计人员的意料,得到预想不到的结果。设计人员的意料,得到预想不到的结果。2.2.2 if 语句的嵌套语句的嵌套嵌套if语句:if 语句中,如果内嵌语句又是语句中,如果内嵌语句又是if语句,就构成了语句,就构成了嵌套嵌套if语句。语句。if 语句可实现二选一分支,而嵌套语句可实现二选一分支,而嵌套if语句则可以实现多选一的多路分支情况。语句则可以实现多选一的多路分支情况。嵌套在e
18、lse分支中:if(表达式1)语句1;else if(表达式2)语句2;else if else 语句n;嵌套在if分支中:if()if();else;2.2.2 if 语句的嵌套配对关系实例:配对关系实例:/语句语句1:if(n%3=0)if(n%5=0)coutn是是15的倍数的倍数endl;else cout n是是3的倍数但不是的倍数但不是5的倍数的倍数 endl;/语句语句2:if(n%3=0)if(n%5=0)coutn是是15的倍数的倍数endl;else cout n 0,方程有两个不同实根;方程有两个不同实根;*若若delta0,方程无实根。方程无实根。【例例2.82.8】求
19、一元二次方程的根。求一元二次方程的根。#include#include using namespace std;int main()float a,b,c;float delta,x1,x2;cout输入三个系数输入三个系数a(a!=0),b,c:abc;couta=atb=btc=cendl;delta=b*b-4*a*c;求一元二次方程的根源程序 if 语句【例28】if(delta=0)cout方程有两个相同实根方程有两个相同实根:;coutx1=x2=-b/(2*a)0)delta=sqrt(delta);x1=(-b+delta)/(2*a);x2=(-b-delta)/(2*a);
20、cout方程有两个不同实根方程有两个不同实根:;coutx1=x1tx2=“x2endl;else cout方程无实根方程无实根!endl;/delta0return 0;请在请在VC+VC+平台上运行,输入不同的系数,使程序所有分支都平台上运行,输入不同的系数,使程序所有分支都可以被执行一次。可以被执行一次。if 语句【例28】2.2.3 条件运算符条件运算符“?:”三元运算符“?:”可以用来简化if语句表达。其构成的表达式格式为:表达式表达式1?表达式表达式2:表达式表达式32.2.3 条件运算符条件运算符“?:”表达式表达式1?表达式表达式2:表达式表达式3例如:例如:int a=6,b
21、=7;min=ab?a:b;/min=6min=ab?+a:+b;/min=7 a=7 b=7 min=ab?a+:b+;/min=6 a=7 b=7#include using namespace std;int main()char ch;cout ch;if(ch=A&ch=Z)ch+=32;cout ch=A&ch=Z)?ch+32:ch;把输入字符转换为小写字母。对输入字符进行判把输入字符转换为小写字母。对输入字符进行判断,如果是大写字母,则转换为小写字母;否则,断,如果是大写字母,则转换为小写字母;否则,不转换。不转换。条件运算符“?:”switch(表达式表达式)case常量表达
22、式常量表达式 1:语句语句 1case常量表达式常量表达式 2:语句语句 2case常量表达式常量表达式 n:语句语句 ndefault:语句语句 n+1注:注:表达式类型为非浮点型表达式类型为非浮点型 各常量表达式类型要与之匹配各常量表达式类型要与之匹配 各常量表达式要求各不相等各常量表达式要求各不相等 defaultdefault子句可选。缺省时,子句可选。缺省时,没有匹配值没有匹配值switch switch 语句为空语句为空语句标号语句标号2.2.4 switch语句语句根据一个整型表达式的值决定程序分支表达式表达式语句语句1语句语句2语句语句3语句语句n语句语句n+1=常量常量1 1
23、=常量常量2 2=常量常量3 3=常量常量n n=常量常量n+1n+1执行流程执行流程2.2.4 switch语句语句例题根据考试成绩的等级打印出百分制分数段。例题根据考试成绩的等级打印出百分制分数段。#include using namespace std;int main()char grade;cout Input grade of score(a_d):grade;switch(grade)case a:cout 85_100 n ;case b:cout 70_84 n ;case c:cout 60_69 n ;case d:cout 60 n ;default :cout err
24、or n ;return 0;观察不同输入时的观察不同输入时的观察不同输入时的观察不同输入时的输出结果输出结果输出结果输出结果switch语句#include using namespace std;int main()char grade;cout Input grade of score(a_d):grade;switch(grade)case a:cout 85_100 n ;case b:cout 70_84 n ;case c:cout 60_69 n ;case d:cout 60 n ;default :cout error n ;return 0;输入输入a2.1.2 swit
25、ch 语句例题例题 根据考试成绩的等级打印出百分制分数段。根据考试成绩的等级打印出百分制分数段。switch语句#include using namespace std;int main()char grade;cout Input grade of score(a_d):grade;switch(grade)case a:cout 85_100 n ;case b:cout 70_84 n ;case c:cout 60_69 n ;case d:cout 60 n ;default :cout error n ;return 0;输入输入a2.1.2 switch 语句例题例题 根据考试成
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 C+ 课件
限制150内