选择控制结构.pptx

上传人:莉*** 文档编号:72988863 上传时间:2023-02-14 格式:PPTX 页数:51 大小:517.42KB
返回 下载 相关 举报
选择控制结构.pptx_第1页
第1页 / 共51页
选择控制结构.pptx_第2页
第2页 / 共51页
点击查看更多>>
资源描述

《选择控制结构.pptx》由会员分享,可在线阅读,更多相关《选择控制结构.pptx(51页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、本章学习内容 算法的描述方法 用于单分支控制的if语句 用于双分支控制的if-else语句 用于多路选择的switch语句 break语句在switch语句中的作用 关系运算符 条件运算符 逻辑运算符 程序测试第1页/共51页生活中的问题求解:Problem:烤蛋糕(Baking a Cake)How to solve:1.Start2.将烤箱预热3.准备一个盘子4.在盘子上抹上一些黄油5.将面粉、鸡蛋、糖和香精混合在一起搅拌均匀6.将搅拌好的面粉团放在盘子上7.将盘子放到烤箱内8.End5.1生活中与计算机中的问题求解(Problem Solving Process)第2页/共51页分治策略

2、(Divide and Conquer Strategy)Problem:准备早餐(Prepare a Breakfast)1.Start2.准备早餐3.End第3页/共51页1.Start2.准备早餐 2.1 准备一个金枪鱼三明治 2.2 准备一些薯条 2.3 冲一杯咖啡3.End分治策略(Divide and Conquer Strategy)第4页/共51页1.Start2.准备早餐 2.1 准备一个金枪鱼三明治 2.1.1 拿来两片面包 2.1.2 准备一些金枪鱼酱 2.2 准备一些薯片 2.3 冲一杯咖啡3.End分治策略(Divide and Conquer Strategy)第5

3、页/共51页1.Start1.Start2.2.准备早餐准备早餐 2.1 2.1 准备一个金枪鱼三明治准备一个金枪鱼三明治 2.1.1 2.1.1 拿来两片面包拿来两片面包 2.1.2 2.1.2 准备一些金枪鱼酱准备一些金枪鱼酱 2.2 2.2 准备一些薯片准备一些薯片 2.2.1 2.2.1 将土豆切成片将土豆切成片 2.2.2 2.2.2 油炸这些土豆片油炸这些土豆片 2.3 2.3 冲一杯咖啡冲一杯咖啡3.End3.End分治策略分治策略(Divide and Conquer Strategy Divide and Conquer Strategy)第6页/共51页分治策略分治策略(D

4、ivide and Conquer Strategy Divide and Conquer Strategy)1.Start1.Start2.2.准备早餐准备早餐 2.1 2.1 准备一个金枪鱼三明治准备一个金枪鱼三明治 2.1.1 2.1.1 拿来两片面包拿来两片面包 2.1.2 2.1.2 准备一些金枪鱼酱准备一些金枪鱼酱 2.2 2.2 准备一些薯片准备一些薯片 2.2.1 2.2.1 将土豆切成片将土豆切成片 2.2.2 2.2.2 油炸这些土豆片油炸这些土豆片 2.3 2.3 冲一杯咖啡冲一杯咖啡 2.3.1 2.3.1 烧些开水放入杯中烧些开水放入杯中 2.3.2 2.3.2 在水

5、杯中加入一些咖啡和糖在水杯中加入一些咖啡和糖3.End3.End第7页/共51页5.2算法的概念及其描述方法面向对象程序=对象+消息面向过程的程序=数据结构+算法计算机中的算法(Algorithm)为解决一个具体问题而采取的、确定的、有限的操作步骤,仅指计算机能执行的算法A specific and step-by-step set of instructions for carrying out a procedure or solving a problem,usually with the requirement that the procedure terminate at some

6、point第8页/共51页5.2算法的概念及其描述方法算法的特性有穷性在合理的时间内完成确定性,无歧义 如果x0,则输出Yes;如果x0,则输出No有效性 能有效执行负数开平方没有输入或有多个输入 有一个或多个输出 第9页/共51页5.2算法的概念及其描述方法算法的描述方法自然语言描述传统流程图(Flowchart)在1966年,Bohra 与 Jacopini 提出N-S结构化流程图1973年,美国学者I.Nassi 和 B.Shneiderman 提出伪码(Pseudocode)表示第10页/共51页流程图(Flowchart)Flowchart represents algorithm

7、graphically.Start/EndSymboSymbol lSemanticSemanticProcessInput/OutputTestConnectorFlow of activities第11页/共51页计算机中的问题求解过程Example:买苹果,计算价钱Calculate and display the price of a number of apples if the quantity in kg and price per kg are given.quantityquantity pricePerkg pricePerkgpricepriceprice=quantit

8、y*pricePerkgprice=quantity*pricePerkgInputInputProcessProcessOutputOutputFirst identify the input and output of the problem.First identify the input and output of the problem.第12页/共51页顺序结构(Sequence Structure)给变量赋值赋值表达式语句 赋值表达式;price=quantity*pricePerkg;输入输出数据标准库函数调用语句 scanf(%d,&pricePerkg);printf(%d

9、,price);ABC第13页/共51页【例5.1】计算两整数的最大值 num1num1 num2 num2maxmax?InputInputProcessProcessOutputOutput第14页/共51页if-elseSingle SelectionSingle SelectionDouble SelectionDouble SelectionMultiple SelectionMultiple Selectionifif-else-if选择结构(分支结构)选择结构(分支结构)(Selection StructureSelection Structure)第15页/共51页5.3关系运

10、算符与关系表达式Relational OperationDescriptionExamples of ExpressionValueLess than6 91(true)=Less than or equal to5 Greater than2 60(false)=Greater than or equal to9=51(true)=Equal to7=50(false)!=Not equal to6!=51(true)第16页/共51页5.4用于单分支控制的条件语句(Single Selection)Step aStep aconditionconditionStep mStep mStep

11、 nStep nStep xStep xtruetruefalsefalsestep astep aconditionconditionstep mstep mstep nstep nstep bstep btruetruefalsefalsePseudocode StructurePseudocode Structurestep aif startstep mstep nend_ifstep b第17页/共51页if StatementThe structure is similar to single selection(flowchart)Syntax:ifif (expression)

12、(expression)statement;statement;ororifif (expression)(expression)statement1;statement1;statement2;statement2;复合语句复合语句compound statement被当做一条语句看待被当做一条语句看待表达式非表达式非0 0为真为真第18页/共51页if StatementThe structure is similar to single selection(flowchart)Syntax:ifif (expression)(expression)statement;statement;

13、ororifif (expression)(expression)statement1;statement1;statement2;statement2;Dont forget the Dont forget the bracesbraces !Dont forget the Dont forget the parenthesesparentheses !第19页/共51页#include main()int a,b,max;printf(Input a,b:);scanf(%d,%d,&a,&b);if(a b)max=a;if(a=b)max=b;printf(max=%dn,max);I

14、nput a,b:_Input a,b:20 15_Input a,b:20 15max=20_【例例5.15.1】计算两整数的最大值计算两整数的最大值 第20页/共51页Pseudocode StructurePseudocode StructureStep aif startStep mStep nend_ifelse startStep xStep yend_elseStep zStep aStep aconditionconditionStep mStep mStep nStep nStep zStep ztruetruefalsefalseStep xStep xStep yStep

15、 yStep aStep aconditionconditionStep mStep mStep nStep nStep zStep ztruetruefalsefalseStep xStep xStep yStep y5.55.5用于用于双分支双分支控制的条件语句控制的条件语句(DoubleDouble SelectionSelection)第21页/共51页if-else StatementThe structure is similar to double selection(flowchart)Syntax:ifif (expression)(expression)statement1

16、;statement1;elseelse statement2;statement2;or ifif (expression)(expression)statement1;statement1;statement3;statement3;elseelse statement2;statement2;statement4;statement4;第22页/共51页NoNoYesYesFlowchart:Calculate the Flowchart:Calculate the MaximumMaximumInput Input a and ba and bOutput maxOutput maxa

17、 b?a b?max max b bmax max a aStartStartEndEnd【例例5.25.2】计算两整数的最大值计算两整数的最大值 第23页/共51页scanf(%d,%d,&a,&b);scanf(%d,%d,&a,&b);if(a b)if(a b)max=a;max=a;elseelse max=b;max=b;Turn Flowchart to C ProgramNoNoYesYesInput a and bInput a and bOutput maxOutput maxa b?a b?max max b bmax max a aStartStartEndEnd【例例

18、5.25.2】计算两整数的最大值计算两整数的最大值 printf(max=%dn,printf(max=%dn,max);max);第24页/共51页#include main()int a,b,max;printf(Input a,b:);scanf(%d,%d,&a,&b);if (a b)max=a;else max=b;printf(max=%d,max);if (a b)max=a;if (a=b)max=b;【例例5.25.2】计算两整数的最大值计算两整数的最大值 第25页/共51页#include main()int a,b,max;printf(Input a,b:);scan

19、f(%d,%d,&a,&b);if (a b)max=a;else max=b;printf(max=%d,max);max=a b?a:b;表达式表达式1?1?表达式表达式2:2:表达式表达式3 35.65.6条件运算符和条件表达式条件运算符和条件表达式【例例例5.35.35.3】第26页/共51页5.7用于多分支控制的条件语句(Multiple Selection)Multi-way Multi-way if ifStep aifif(expression1)Step m ifif(expression2)Step n Step zStep aStep aexpression1expres

20、sion1Step mStep mStep nStep nStep zStep ztruetruefalsefalseexpression2expression2truetruefalsefalseStep aStep aexpression1expression1Step mStep mStep nStep nStep zStep ztruetruefalsefalseexpression2expression2truetruefalsefalse第27页/共51页5.7用于多分支控制的条件语句(Multiple Selection)Cascaded Cascaded if ifStep a

21、ifif (expression1)Step m else ifelse if(expression2)Step n else else Step x Step zStep aStep aexpression1expression1Step mStep mStep nStep nStep zStep ztruetruefalsefalseexpression2expression2truetruefalsefalseStep xStep xStep aStep aexpression1expression1Step mStep mStep nStep nStep zStep ztruetrue

22、falsefalseexpression2expression2truetruefalsefalseStep xStep x第28页/共51页5.8用于多路选择的switch语句 The structure is similar to multiple selection(flowchart)switchswitch(expressionexpression)casecase value1value1:statement1;statement1;break;break;case case value2value2:statement2;statement2;break;break;defaul

23、tdefault :statementX;statementX;break;break;Dont forget the Dont forget the braces!braces!Dont forget the Dont forget the colons!colons!Dont forget the Dont forget the blank!blank!第29页/共51页Important Rule!switchswitch(expressionexpression)casecase value1value1:statement1;statement1;break;break;case c

24、ase value2value2:statement2;statement2;break;break;defaultdefault :statementX;statementX;break;break;Must be Must be intint or or charchar!5.8用于多路选择的switch语句 注意!注意!第30页/共51页Example:switch(month)case 1:printf(Januaryn);break;case 2:printf(Februaryn);break;case 3:printf(Marchn);break;default:printf(Ot

25、hersn);break;printf(End);Assume month=1,Assume month=1,so so this step will be this step will be executed.Later executed.Later casecase is is terminated here.terminated here.Jump to Jump to January_JanuaryEnd _5.85.8用于多路选择的用于多路选择的switchswitch语句语句 第31页/共51页Example:switch(month)case 1:printf(Januaryn)

26、;break;case 2:printf(Februaryn);break;case 3:printf(Marchn);break;default:printf(Othersn);break;printf(End);this step will be this step will be executed.Later executed.Later March_MarchEnd _Assume month=3,Assume month=3,so so casecase is is terminated here.terminated here.Jump to Jump to 5.85.8用于多路选

27、择的用于多路选择的switchswitch语句语句 第32页/共51页Example:switch(month)case 1:printf(Januaryn);break;case 2:printf(Februaryn);break;case 3:printf(Marchn);break;default:printf(Othersn);break;printf(End);Nowwhat will Nowwhat will happen if this happen if this breakbreak is taken out from is taken out from the progra

28、m?the program?5.85.8用于多路选择的用于多路选择的switchswitch语句语句 第33页/共51页Example:switch(month)case 1:printf(Januaryn);break;case 2:printf(Februaryn);case 3:printf(Marchn);break;default:printf(Othersn);break;printf(End);No more!No more!5.85.8用于多路选择的用于多路选择的switchswitch语句语句 第34页/共51页Example:switch(month)case 1:prin

29、tf(Januaryn);break;case 2:printf(Februaryn);case 3:printf(Marchn);break;default:printf(Othersn);break;printf(End);this step will be this step will be executed.Later executed.Later February_March _Assume month=2,Assume month=2,so so casecase is is terminated here.terminated here.Jump to Jump to End _

30、execution continues.execution continues.Thus,this step is executed.Thus,this step is executed.So So 5.85.8用于多路选择的用于多路选择的switchswitch语句语句 第35页/共51页Example:switch(month)case 1:printf(Januaryn);break;case 2:printf(Februaryn);case 3:printf(Marchn);break;default:printf(Othersn);break;printf(End);Nowwhat

31、will Nowwhat will happen if these happen if these breakbreaks s are taken are taken out from the out from the program?program?And And if month=1?if month=1?And And if month=34?if month=34?5.85.8用于多路选择的用于多路选择的switchswitch语句语句 最好不省略!第36页/共51页【例5.5】计算器程序编程设计一个简单的计算器程序,要求用户从键盘输入如下形式的表达式:操作数1 运算符op 操作数2

32、然后,计算并输出表达式的值 指定的运算符为 加(+)减(-)乘(*)除(/)第37页/共51页mainmain()()intint data1,data2;/*data1,data2;/*定义两个操作符定义两个操作符*/charchar op;/*op;/*定义运算符定义运算符*/printf(Please enter the expression:);printf(Please enter the expression:);scanf(%d%c%d,&data1,&op,&data2);/*scanf(%d%c%d,&data1,&op,&data2);/*输入运算表达式输入运算表达式*/s

33、witchswitch(op)(op)casecase+:/*+:/*处理加法处理加法*/printf(%d+%d=%dn,data1,data2,data1+printf(%d+%d=%dn,data1,data2,data1+data2);data2);breakbreak;casecase-:/*-:/*处理减法处理减法*/printf(%d-%d=%dn,data1,data2,data1-printf(%d-%d=%dn,data1,data2,data1-data2);data2);breakbreak;casecase*:/*:/*处理乘法处理乘法*/printf(%d*%d=%

34、dn,data1,data2,data1*printf(%d*%d=%dn,data1,data2,data1*data2);data2);breakbreak;casecase/:/*/:/*处理除法处理除法*/ifif(0=data20=data2)printf(Division by zero!n);printf(Division by zero!n);elseelse printf(%d/%d=%dn,data1,data2,printf(%d/%d=%dn,data1,data2,data1/data2);data1/data2);breakbreak;defaultdefault:

35、printf(Invalid operator!n);printf(Invalid operator!n);【例5.5】Why?注释掉会怎样?第38页/共51页思考题语句if(0=data2)的必要性避免“除零错误”1998年11月,科学美国人杂志描述了美国导弹巡洋舰约克敦号上的一起事故,除零错导致军舰推进系统的关闭为什么不用if(data2=0)?如果要求输入的算术表达式中的操作数和运算符之间可以加入任意多个空格符,那么程序如何修改?第39页/共51页mainmain()()intint data1,data2;data1,data2;charchar op;op;printf(Please

36、 enter the expression:);printf(Please enter the expression:);scanf(%d%c%d,&data1,&op,&data2);scanf(%d%c%d,&data1,&op,&data2);/*%c/*%c前有一个空格前有一个空格*/switchswitch(op)(op)casecase+:+:printf(%d+%d=%dn,data1,data2,data1+printf(%d+%d=%dn,data1,data2,data1+data2);data2);breakbreak;casecase-:-:printf(%d-%d=%

37、dn,data1,data2,data1-printf(%d-%d=%dn,data1,data2,data1-data2);data2);breakbreak;casecase*:*:printf(%d*%d=%dn,data1,data2,data1*printf(%d*%d=%dn,data1,data2,data1*data2);data2);breakbreak;casecase/:/:ifif(0=data20=data2)printf(Division by zero!n);printf(Division by zero!n);elseelse printf(%d/%d=%dn,

38、data1,data2,printf(%d/%d=%dn,data1,data2,data1/data2);data1/data2);breakbreak;defaultdefault:printf(Invalid operator!n);printf(Invalid operator!n);【例5.5】空格空格第40页/共51页思考题如果要求对浮点数进行运算,那么程序如何修改?修改例5.5程序,使其能进行浮点数的算术运算,同时允许使用字符*、x与X作为乘号,并且允许输入的算术表达式中的操作数和运算符之间加入任意多个空格符。第41页/共51页mainmain()()floatfloat dat

39、a1,data2;data1,data2;charchar op;op;printf(Please enter the expression:);printf(Please enter the expression:);scanf(%scanf(%f f%c%c%f f,&data1,&op,&data2);,&data1,&op,&data2);switchswitch(op)(op)casecase+:+:printf(%printf(%f f+%+%f f=%=%f fn,data1,data2,data1+n,data1,data2,data1+data2);data2);breakb

40、reak;casecase-:-:printf(%printf(%f f-%-%f f=%=%f fn,data1,data2,data1-n,data1,data2,data1-data2);data2);breakbreak;casecase*:*:case x:case x:case X:case X:printf(%printf(%f f*%*%f f=%=%f fn,data1,data2,data1*n,data1,data2,data1*data2);data2);breakbreak;casecase/:/:if(fabs(data2)=1e-7)/*if(fabs(data2

41、)=A)&(ch=1)&(b+=5)(0=1)(0=1)&(b&(b+=5 =5)0&0&(b(b+=5)=5)0 0a0b5c15d17复合表达式复合表达式(Compound Compound ExpressionExpression)的值的值尽量使用最少的操作数来确定表达式的值,这就意味着表达式中的某些操作数可能不会被计算 第45页/共51页5.10本章扩充内容测试的主要方式给定特定的输入,运行被测软件检查软件的输出是否与预期结果一致测试用例的选取方法尽量覆盖所有分支,减少重复覆盖测试的目的通过运行测试用例找出软件中的Bug成功的测试在于发现迄今为止尚未发现的Bug测试人员的主要任务是站在

42、使用者的角度,通过不断使用和攻击,尽可能多地找出Bug测试的过程就像黑客的攻击过程,专门找软件漏洞第46页/共51页5.10本章扩充内容采用测试用例,通过运行程序查找程序错误的方法实质是一种抽样检查,彻底的测试是不可能的彻底的测试不现实,要考虑时间、费用等限制,不允许无休止的测试测试只能证明程序有错,不能证明程序无错 E.W.Dijkstra测试能提高软件质量,但提高软件质量不能依赖于测试第47页/共51页软件测试方法的分类白盒测试(结构测试)在完全了解程序的结构和处理过程的情况下,按照程序内部的逻辑测试程序,检验程序中的每条逻辑路径是否都能按预定要求正确工作主要用于测试的早期黑盒测试(功能测试)把系统看成一个黑盒子,不考虑程序内部的逻辑结构和处理过程,只根据需求规格说明书的要求,设计测试用例,检查程序的功能是否符合它的功能说明主要用于测试的后期通常结合使用选择有限数量的重要路径进行白盒测试,对重要的功能需求进行黑盒测试第48页/共51页作业习题5.1 5.9实验题本章实验题第49页/共51页Questions and answers第50页/共51页感谢您的观看!第51页/共51页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁