程序控制结构分支循环举例.pptx
《程序控制结构分支循环举例.pptx》由会员分享,可在线阅读,更多相关《程序控制结构分支循环举例.pptx(44页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、教学目标(1)理解控制语句的作用和分类,掌握相关语句的使用方法;(2)了解使用伪代码或流程图描述算法的方法。1第1页/共44页基本内容 3.1 基本控制结构3.2 选择结构3.3 循环结构2第2页/共44页3.1 基本控制结构三大基本程序结构:顺序结构:程序是按程序语句或模块在执行流中的顺序逐个执行。选择结构:程序是按设定的条件实现程序执行流的多路分支。循环结构:程序是按给定的条件重复地执行指定的程序段或模块。结论:理论上已经证明,用以上三种基本程序结构的组合可以实现任何复杂的算法。3第3页/共44页三大基本结构示意图顺序结构选择结构循环结构4模块(语句)模块(语句)A A模块(语句)模块(语
2、句)B B条件程序模块1成立成立不成立不成立程序模块2条件程序模块不成立不成立成立成立(当型循环)(当型循环)程序模块成立成立不成立不成立条件(直到型循环)(直到型循环)第4页/共44页顺序结构的实现r=p;p=q;q=r;5第5页/共44页例 3-1 交换两个变量的值#include using namespace std;int main()int a=1,b=2;int tmp;/定义一个整型变量作为中间交换之用cout 交换前:a=a ,b=b endl;tmp=a;a=b;b=tmp;cout 交换后:a=a ,b=b endl;return 0;6第6页/共44页3.2 选择结构C
3、+语言中实现选择结构的语句形式主要有两种:if语句switch语句7第7页/共44页1.if语句语句一路分支:if(表达式)语句序列 两路分支:if(表达式)语句序列1 else 语句序列28条件?成立成立不成立不成立语句序列条件?语句序列 1成立成立不成立不成立语句序列 2语句序列可以是一个语句,也可以是用花括号括起来的复合语句结构语句序列可以是一个语句,也可以是用花括号括起来的复合语句结构第8页/共44页例 3-2:判断成绩是否及格#include using namespace std;int main()int i;couti;if(i=60)cout及格endl;elsecout不及
4、格endl;return 0;9第9页/共44页例 3-3:求一元二次方程的根#include#include using namespace std;int main()double a,b,c,delta,p,q;cout a b c;if(a=0)&(b=0)&(c=0)/最极端情况cout 方程的根可为任意值 endl;else if(a=0)&(b!=0)/转换为一元一次方程情况cout x1=x2=-c/b=0)/实根情况cout x1=p+q endl x2=p-q endl;else/存在共轭复根情况cout x1=p +q i endl;cout x2=p -q iendl;
5、return 0;10第10页/共44页2.switch语句语句多路(开关)选择语句:switch(表达式)case 数值1:语句序列1;case 数值2:语句序列2;case 数值3:语句序列3;default:语句序列n;11第11页/共44页实现真正的多路选择在每一个case模块的最后加上一个break语句12第12页/共44页例3.2 百分制化为优秀、良好、中等、及格和不及格的五级制成绩算法分析:取一个百分成绩经过运算得到5级制成绩。构造什么样的表达式呢?“百分成绩/10=”?共有5个分数档,选择分支大于2,因此用多路开关语句switch。计算结果应该是唯一的。转换后应从switch中
6、break出来。13第13页/共44页#include using namespace std;int main()int grade;coutgrade;switch(grade/10)/根据转换值进行分支选择case 10:case 9:cout优秀endl;break;case 8:cout良好endl;break;case 7:cout中等endl;break;case 6:cout及格endl;break;default:cout不及格endl;return 0;第14页/共44页3.3 循环结构C+语言中实现循环结构的语句形式主要有三种:while语句do-while语句for语句
7、15第15页/共44页while语句|do-while语句当型循环 while(表达式)语句序列 直到型循环 do 语句序列 while(表达式);16循循环环体体循循环环体体条件?语句序列成立成立不成立不成立语句序列不成立不成立成立成立条件?第16页/共44页案例:谁打烂了玻璃?有四个小孩踢皮球,不小心打烂了玻璃,老师问是谁干的。A说:不是我B说:是CC说:是DD说:他胡说 现已知3个小孩说的是真话,一个小孩是假话。根据这些信息,编程找出打烂玻璃的孩子。17 教学设问教学设问 如何求解逻辑问题?如何求解逻辑问题?如何根据案例的问题描述给出对应的数学模型?如何根据案例的问题描述给出对应的数学模
8、型?用什么样的控制结构能够从许多种可能性中找出其中的一种或多种用什么样的控制结构能够从许多种可能性中找出其中的一种或多种正确的解?正确的解?打烂玻璃者为:C*更多案例见本书配套教材更多案例见本书配套教材C/C+C/C+语言程序设计案例教程语言程序设计案例教程 罗建军等编著,清华大学出版社罗建军等编著,清华大学出版社第17页/共44页A说:不是我说:不是我B说:是说:是CC说:是说:是DD说:他胡说说:他胡说现已知现已知3个人说的是真话,一个人是假话。个人说的是真话,一个人是假话。数学模型k!=1k=3k=4k!=4(k!=1)+(k=3)+(k=4)+(k!=4)=3设变量设变量k表示打烂玻璃
9、的孩子表示打烂玻璃的孩子第18页/共44页状态状态代号代号A(1)B(2)C(3)D(4)说真话人数说真话人数打烂玻璃打烂玻璃00010打烂玻璃打烂玻璃00200打烂玻璃打烂玻璃03000打烂玻璃打烂玻璃1按照这按照这4 4种状态假定,逐一测试种状态假定,逐一测试4 4个人的话有几个为真,如个人的话有几个为真,如果不满果不满3 3句为真,就否定这一假定,换下一个状态来试句为真,就否定这一假定,换下一个状态来试第19页/共44页#include using namespace std;int main()for(int k=1;k=4;k+)if(k!=1)+(k=3)+(k=4)+(k!=4)
10、=3)cout打烂玻璃者为:char(64+k)endl;return 0;20第20页/共44页进一步思考考虑更加一般的情况,即本案例出现没有解或有多个解,要为上面的程序增加什么机制,怎么修改程序?如果题目改为有3个小孩说假话,1个小孩说真话,则打烂玻璃的孩子又是谁?21第21页/共44页例 3-4:使用while语句计算1+2+3+100#include using namespace std;int main()int i=1,sum=0;/循环初始条件while(i=100)sum=sum+i;/累加求和i+;/改变循环条件cout 1+2+3+100=sumendl;return 0
11、;22第22页/共44页例 3-5:使用do-while语句计算1+2+3+100#include using namespace std;int main()int i=1,sum=0;/循环初始条件dosum=sum+i;/累加求和i+;/改变循环条件while(i=100);cout 1+2+3+100=sumendl;return 0;23第23页/共44页for语句for语句用来实现计数循环:for(表达式1;表达式2;表达式3)语句1;语句2;语句n;24第24页/共44页例 3-6:使用for语句计算1+2+3+100#include using namespace std;in
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序控制 结构 分支 循环 举例
限制150内