第4章 基本控制结构.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第4章 基本控制结构.ppt》由用户(最好的沉淀)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第4章 基本控制结构 基本 控制 结构
- 资源描述:
-
1、第第4章章程序设计方法学基础程序设计方法学基础基本控制结构基本控制结构哈尔滨工业大学哈尔滨工业大学4.1算法的概念和描述方法算法的概念和描述方法n4.1.1算法的概念算法的概念 n4.1.2算法的描述方法算法的描述方法4.1.1算法的概念算法的概念n算法(算法(Algorithm)为解决一个具体问题而采取的确定的有限的操作步骤,仅指为解决一个具体问题而采取的确定的有限的操作步骤,仅指计算机能执行的算法计算机能执行的算法n计算机中的问题求解计划计算机中的问题求解计划通过程序员按照某种算法编写的计算机程序(通过程序员按照某种算法编写的计算机程序(Computer Program)来实现的)来实现的
2、设计出正确的算法是编写正确的计算机程序的前提条件设计出正确的算法是编写正确的计算机程序的前提条件n程序设计是一门艺术,主要体现在程序设计是一门艺术,主要体现在算法设计算法设计结构设计结构设计n揭示面向过程的程序本质的公式揭示面向过程的程序本质的公式算法算法+数据结构数据结构=程序程序N.Wirth(图灵奖1984)Pascal创始人4.1.1算法的概念算法的概念n算法的特性算法的特性有穷性(有穷性(Finiteness)在合理的时间内完成在合理的时间内完成确定性(确定性(Definiteness)无歧义,能有效执行,且能得到确定的结果无歧义,能有效执行,且能得到确定的结果有效性(有效性(Eff
3、ectiveness)允许没有输入或有多个输入(允许没有输入或有多个输入(Input)必须有一个或多个输出必须有一个或多个输出(Output)4.1.1算法的概念算法的概念n常用的算法描述方法常用的算法描述方法自然语言(自然语言(Natural Language)伪码(伪码(Pseudocode)表示)表示传统的流程图(传统的流程图(Flowchart)N-S结构化流程图结构化流程图4.1.2算法的描述方法算法的描述方法4.1.2算法的描述方法算法的描述方法n以买苹果为例,已知单价每斤以买苹果为例,已知单价每斤y元,问买元,问买x斤苹果,需多斤苹果,需多少钱?少钱?step1:输入x和 y;s
4、tep2:根据公式t=x*y计算总价;step3:输出总价t。Begin Input x,y t=x*y Output t End 通俗易懂,符合人的日通俗易懂,符合人的日常思维习惯,但不易直常思维习惯,但不易直接转化为程序接转化为程序书写无固定格式和规范书写无固定格式和规范,灵活,介于自然语言,灵活,介于自然语言和计算机语言之间,易和计算机语言之间,易于转换为计算机程序于转换为计算机程序4.1.2算法的描述方法算法的描述方法n关键:关键:建立问题的数学模型(建立问题的数学模型(Mathematical Model)即数学建模)即数学建模n计算思维计算思维运用计算机科学的基础概念进行问题求解、
5、系统设计及人运用计算机科学的基础概念进行问题求解、系统设计及人类行为理解等涵盖计算机科学之广度的一系列思维活动类行为理解等涵盖计算机科学之广度的一系列思维活动简单地说,计算思维其实就是在寻找一个问题的解的过程简单地说,计算思维其实就是在寻找一个问题的解的过程中的思维方式中的思维方式4.2计算机的问题求解计算机的问题求解4.3顺序结构顺序结构n顺序结构:最简单、最常用的程序结构顺序结构:最简单、最常用的程序结构n复合语句:复合语句:以两数交换为例以两数交换为例4.34.3顺序结构顺序结构n【例例4.1】已知苹果的单价是每千克已知苹果的单价是每千克p元,问:买元,问:买q千克千克的苹果,需要多少钱
6、?的苹果,需要多少钱?#include int main(void)int p;int q;int t;scanf(%d,%d,&p,&q);t=q*p;printf(%dn,t);return 0;4.4选择结构选择结构n4.4.1选择结构的基本形式选择结构的基本形式n4.4.2条件语句条件语句n4.4.3开关语句开关语句n4.4.4最佳编码原则:正确使用关系和逻辑运算符最佳编码原则:正确使用关系和逻辑运算符4.4.1选择结构的基本形式选择结构的基本形式变是唯一的不变变是唯一的不变n人生常常要面临许多叉路口,不同的抉择将有可能完全改变你人人生常常要面临许多叉路口,不同的抉择将有可能完全改变你
7、人生的轨迹生的轨迹n只要我们能够准确识别,未雨绸缪,积极应变,就一定能做到从只要我们能够准确识别,未雨绸缪,积极应变,就一定能做到从容应对各种变化,把危机转化为机遇。容应对各种变化,把危机转化为机遇。n选择结构选择结构n根据给定的判定条件,判断结果,并根据判断的结果来控制程序的流程根据给定的判定条件,判断结果,并根据判断的结果来控制程序的流程n选择结构(分支结构)选择结构(分支结构)单分支单分支选择结构(选择结构(Single Selection)双分支双分支选择结构(选择结构(Double Selection)多分支多分支选择结构(选择结构(Multiple Selection)n单分支单分
8、支选择结构(选择结构(Single Selection)面临的选择是:面临的选择是:要么执行一个操作,要么跳过它要么执行一个操作,要么跳过它4.4.1选择结构的基本形式选择结构的基本形式变是唯一的不变变是唯一的不变n双分支双分支选择结构(选择结构(Double Selection)面临的选择是:面临的选择是:在两个不同的操作中选择其中的一个来执行在两个不同的操作中选择其中的一个来执行n多分支多分支选择结构(选择结构(Multiple Selection)4.4.1选择结构的基本形式选择结构的基本形式变是唯一的不变变是唯一的不变if-elseifelse-if4.4.2条件语句条件语句无处不在的
9、抉择无处不在的抉择n【例4.2】从键盘输入两个整型数,编程比较并输出两个数中的较大值。n确定问题的输入和输出n建立问题的数学模型n算法描述4.4.2条件语句条件语句无处不在的抉择无处不在的抉择n【例4.2】从键盘输入两个整型数,编程比较并输出两个数中的较大值。4.4.2条件语句条件语句无处不在的抉择无处不在的抉择#include int main(void)int a,b,max;scanf(%d,%d,&a,&b);if(a=b)max=a;elsemax=b;printf(max=%dn,max);return 0;#include int main(void)int a,b;scanf(
10、%d,%d,&a,&b);if(a=b)printf(max=%dn,a);elseprintf(max=%dn,b);return 0;n【例4.2】从键盘输入两个整型数,编程比较并输出两个数中的较大值。4.4.2条件语句条件语句无处不在的抉择无处不在的抉择#include int main(void)int a,b,max;scanf(%d,%d,&a,&b);max=a=b?a:b;printf(max=%dn,max);return 0;#include int main(void)int a,b;scanf(%d,%d,&a,&b);printf(max=%dn,a=b?a:b);/
11、直接打印条件表达式的值直接打印条件表达式的值 return 0;4.4.2条件语句条件语句无处不在的抉择无处不在的抉择n如何如何表示表示真假值?真假值?真真 1假假 0n如何如何判断判断真假值?真假值?非非0 真真0 假假4.4.2条件语句条件语句无处不在的抉择无处不在的抉择4.4.2条件语句条件语句无处不在的抉择无处不在的抉择n逻辑非逻辑非 算术算术 关系关系 逻辑与逻辑与 逻辑或逻辑或 赋值赋值n圆括号优先级最高圆括号优先级最高n【例4.3】从键盘任意输入一个年份year,编程判断其是否为闰年,如果是闰年,则输出“Yes!”,否则输出“No!”。n闰年需要满足下列两个条件中的任意一个。n(
12、1)能被4整除,但不能被100整除。n(2)能被400整除。4.4.2条件语句条件语句无处不在的抉择无处不在的抉择#include int main(void)int year,leap;scanf(%d,&year);leap=(year%4=0)&(year%100!=0)|(year%400=0);if(leap)/若若leap的值为非的值为非0,即为真,即为真printf(Yes!n);elseprintf(No!n);return 0;n【例4.3】从键盘任意输入一个年份year,编程判断其是否为闰年,如果是闰年,则输出“Yes!”,否则输出“No!”。4.4.2条件语句条件语句无处
13、不在的抉择无处不在的抉择#include int main(void)int year;scanf(%d,&year);if(year%4=0)&(year%100!=0)|(year%400=0)printf(Yes!n);elseprintf(No!n);return 0;n【例4.4】从键盘任意输入一个百分制成绩,编程计算并输出其对应的五分制成绩。4.4.3开关语句开关语句条条道路通罗马条条道路通罗马#includeint main(void)int score;char grade;printf(Please input score:);scanf(%d,&score);if(scor
14、e=90&score=80&score=70&score=60&score=0&score 60)grade=E;if(score 100)printf(Input error!n);else printf(grade:%cn,grade);return 0;n【例4.4】从键盘任意输入一个百分制成绩,编程计算并输出其对应的五分制成绩。4.4.3开关语句开关语句条条道路通罗马条条道路通罗马#includeint main(void)int score;char grade;scanf(%d,&score);if(score 100)printf(Input error!n);else if(s
15、core=90)grade=A;else if(score=80)grade=B;else if(score=70)grade=C;else if(score=60)grade=D;else grade=E;printf(grade:%cn,grade);return 0;n【例4.4】从键盘任意输入一个百分制成绩,编程计算并输出其对应的五分制成绩。4.4.3开关语句开关语句条条道路通罗马条条道路通罗马#include int main(void)int score;scanf(%d,&score);if(score100)printf(Input error!n);else if(score
16、=90)printf(%d-An,score);else if(score=80)printf(%d-Bn,score);else if(score=70)printf(%d-Cn,score);else if(score=60)printf(%d-Dn,score);else printf(%d-En,score);return 0;4.4.3开关语句开关语句条条道路通罗马条条道路通罗马n【例4.4】从键盘任意输入一个百分制成绩,编程计算并输出其对应的五分制成绩。4.4.3开关语句开关语句条条道路通罗马条条道路通罗马#include int main(void)int score,mark;
17、scanf(%d,&score);mark=score100?-1:score/10;switch(mark)case 10:case 9:printf(%d-An,score);break;case 8:printf(%d-Bn,score);break;case 7:printf(%d-Cn,score);break;case 6:printf(%d-Dn,score);break;case 5:case 4:case 3:case 2:case 1:case 0:printf(%d-En,score);break;default:printf(Input error!n);return
18、0;n【例4.4】从键盘任意输入一个百分制成绩,编程计算并输出其对应的五分制成绩。4.4.3开关语句开关语句条条道路通罗马条条道路通罗马1.每个每个case后的常量后的常量的类型应与的类型应与switch后后括号内表达式的类型括号内表达式的类型一致,并且一致,并且switch后后括号内表达式的值只括号内表达式的值只能为整型、字符型或能为整型、字符型或枚举类型的常量。枚举类型的常量。2.switch语句与语句与break语句配合使用,才能语句配合使用,才能形成真正意义上的多形成真正意义上的多分支分支3.改变改变case标号出现标号出现的次序,不会影响程的次序,不会影响程序的运行结果序的运行结果4
19、.4.4最佳编码原则:正确使用关系和逻辑运算符最佳编码原则:正确使用关系和逻辑运算符1.不要忽略编译器给出的任何警告信息不要忽略编译器给出的任何警告信息2.不能直接用相等关系运算符判断两个浮点数相等不能直接用相等关系运算符判断两个浮点数相等3.不要将数学表达式直接翻译成不要将数学表达式直接翻译成C表达式表达式4.避免浮点数逻辑运算符的避免浮点数逻辑运算符的“短路短路”特性带来的副作用特性带来的副作用5.在在switch语句中,加入语句中,加入default分支分支if(fabs(a-b)EPS)/浮点数比较相等浮点数比较相等if(fabs(a)b c 的值是真是假?的值是真是假?4.5循环结构
20、循环结构周而复始的循环之道周而复始的循环之道n4.5.1循环的控制方式循环的控制方式n4.5.2计数控制的循环计数控制的循环n4.5.3条件控制的循环条件控制的循环n4.5.4最佳编码原则:结构化程序设计最佳编码原则:结构化程序设计4.5.14.5.1循环的控制方式循环的控制方式当型循环是先测试循环条件,后执行循环体直到型循环是先执行循环体,然后测试循环条件4.5.2 4.5.2 计数控制的循环计数控制的循环n实现计数控制的实现计数控制的forfor语句语句4.5.2 4.5.2 计数控制的循环计数控制的循环#include int main(void)int n;int sum=0;/累加和
展开阅读全文