《基本控制结构 》PPT课件.ppt
第三章 基本控制结构,3.1 顺序结构程序设计 3.2 选择结构程序设计 3.3 循环控制,第三章 基本控制结构,教学目标:1.掌握 C+语言常用的输入/输出方式 2.熟练掌握 if else 的两种语法 3.掌握 for、while、do-while 语句的用法教学重点:1.赋值语句、数据的输入输出及输入输出中常用的控制格式 2.程序设计中构成选择、循环的算法;教学难点:选择、循环的嵌套算法分析。,3.1 顺序结构程序设计,3.1.1 C+语句概述 3.1.2 顺序结构程序设计3.1.3 数据输入与输出,3.1.1 C+语句概述,在程序设计语言中,程序是按什么顺序执行的呢?默认按程序中语句顺序执行,语句是程序的基本功能单元。当然也有分支选择,跳转,循环非顺序执行,正体现了计算机的“智能”。C+程序也不例外。分三种基本控制结构:(1)顺序结构(2)选择结构(3)循环结构,C+语句 声明语句 表达式语句 选择语句 循环语句 跳转语句 复合语句1、声明语句(说明语句)程序中的实体标识符必须先声明后使用实体标识符如:变量、常量、函数、结构、类、对象等。声明的实质:告之实体类型(1)变量声明(2)常量声明(3)函数声明(4)类型声明声明语句其它功能:实体定义,变量赋值,2、表达式语句格式:表达式;类别:(1)赋值语句(2)复合赋值语句(3)增(减)量语句(4)函数调用语句(5)输入输出语句 表达式语句与表达式的区别:表达式可以包含在其他表达式中,而语句不可。例如:if(a=b)0)t=a;不可写为:if(a=b;)0)t=a;,将多个语句用一对大括号包围,便构成一个复合语句,逻辑上的一条语句例如空语句形式;不产生任何动作,sum=sum+i;i+;,sum=sum+i;i+;,3.1.2 顺序结构程序设计,3.1.3 数据输入与输出,简单的输入输出向标准输出设备(显示器)输出例:int x;coutx;,3.2 选择结构程序设计,321 if 语句 322 switch 语句,3.2.1 选择结构程序设计,1、基本if语句(一),格式:If()形式一:执行体为单条语句,带分号 if(a0)a-=5;a+=5;/if语句之外,2、基本if语句(二)格式:If()形式二:执行体为复合语句,整个if 语句结束不带分号 if(ab)/若abint t=a;/则a与b交换 a=b;b=t;/功能:保持变量b始终为最大值cout“The max is:”bn;/if语句之外,3、Ifelse语句(扩展if语句),格式:If()else,4、if 语句嵌套 一般形式:if()if()语句 1 else 语句 2else if()语句 3 else 语句 4特点:if子句或else子句又包含ifelse语句注意:语句 1、2、3、4 可以是复合语句,每层的 if 与 else 配对,或用 来确定层次关系。,C+规定:else关键字总是与它前面最近的未配对的可见的那个关键字配对。例如:if()/第一个if if()/第二个if if()/第三个ifelse 注意:复合语句内的 if 对其外面的else 是不可见的,嵌套if 语句 之阶梯结构 形式:if(表达式1)语句1 else if(表达式2)语句2 else if(表达式3)语句3 else 语句 n执行流程:按顺序检测 if 条件,一旦满足则执行相应的if子句,同时整个嵌套if 语句结束;否则执行最后一个else子句.,三种形式:if(表达式)语句例:if(xy)couty)coutx;else couty;if(表达式1)语句1else if(表达式2)语句2else if(表达式3)语句3 else 语句 n阶梯结构实例将百分制成绩转换成字母等级:,int Grade;cin Grade;if(=90)cout=80)cout=70)cout=60)cout“Dn”;else cout“En”;,322 switch 语句,格式:switch()case:case:case:default:,例:等级制转换为百分制char grade;cingrade;switch(grade)case A:Cout“100-99”endl;case B:Cout“89-80”endl;case C:Cout“79-60”endl;case D:Cout“Less than 60”endl;Default:Cout“Input error!n”;/执行后不完全合意,1、switch开关语句特殊的多分支结构,switch()case:break;case:break;default:,例:等级制转换为百分制switch(grade)case A:cout“100-99”endl;break;case B:cout“89-80”endl;break;case C:cout“79-60”endl;break;case D:cout“Less than 60”endl;break;default:Cout“Input error!n”;/执行,2、Switch与break联用改进,3、Switch语句,一般形式switch(表达式)case 常量表达式 1:语句1 case 常量表达式 2:语句2 case 常量表达式 n:语句n default:语句n+1,执行顺序以case中的常量表达式值为入口标号,由此开始顺序执行。因此,每个case分支最后应该加break语句。,4、break语句使程序从switch语句内跳出(另还可从循环体跳出),继续执行逻辑上的下一条语句。不宜用在别处。5、使用switch语句应注意的问题 case分支可包含多个语句,且不用。表达式、判断值都是int型或char型。若干分支执行内容相同可共用一组语句。,3.3 循环控制,331 while 语句 332 do-while 语句 333 for 语句,331 while 语句,求自然数1100之和”我们知道是一个和累加运算,是一个循环求和过程,同样可以用while循环语句实现。,形式while(表达式)循环体语句,执行顺序(四步)(1)计算表达式的值,若为 true(非0)时,则转步骤(2);若为 false(0)时,则转步骤(4)。(2)执行一次循环体语句(3)转步骤(1)(4)结束并退出while循环,#includeusing namespace std;void main()int i=1,sum=0;while(i=100)sum+=i;/相当于sum=sum+i;i+;coutsum=sumendl;,运行结果:sum=5050,执行流程:int i=1,sum=0;/控制变量i 1-100,初始置1/记录累加和变量sum初始置0控制变量 累加和 当条件 循环体 i=1 sum=0-true-sum+i=sum=1 i=2 sum=1-true-sum+i=sum=3 i=3 sum=3-true-sum+i=sum=6 i=4 sum=6-true-sum+i=sum=10 i=100sum=4950-true-sum+i=sum=5050 i=101sum=5050-false-exit,循环体,当条件,问题:1+2+3+4+100,332 Dowhile循环语句,适用:先执行循环体,后判断条件的情况例:dowhile语句输入一个整数,将各位数字反转后输出。,#include using namespace std;int main()int n,right_digit;cout n;/n 保存输入的整数cout The number in reverse order is;,doright_digit=n%10;/对n求模取出当前个位数cout right_digit;n/=10;/即n=n/10运算,相当于对n右移一位,去掉已取出的个位数 while(n!=0);coutendl;运行结果:Enter the number:365 The number in reverse order is 563,直到型循环结构与do-while 语句,一般形式do 语句while(表达式),执行顺序先执行循环体语句,后判断条件。表达式为 true 时,继续执行循环体,*while语句与do-while语句的区别:,一般形式比较while(表达式)do 语句 语句while(表达式),执行流程最大区别while先判断控制循环的条件,后执行循环体;dowhile先执行循环体,后判断控制循环的条件。结果比较:While语句的循环体可能有时一次也不做;Dowhile语句的循环体任何情况下至少要做一次。,333 for 语句,求自然数1100之和问题。分析:本题需要用累加算法,累加过程是一个循环过程,可以用for语句实现。,语法形式for(表达式1;表达式2;表达式3)语句执行流程(五步),#includeusing namespace std;int main()int i,sum=0;/控制变量和记录累加和变量 for(i=1;i=100;i+)sum+=i;/相当于sum=sum+i;coutsum=sumendl;,运行结果:sum=5050,无循环语句编程(2*100条语句)int i,sum=0;/i=1;sum+=i;i=2;sum+=i;i=3;sum+=i;i=100;sum+=i;,for 语句举例:编写程序输出以下图案,*,#includeusing namespace std;void main()int i,j,n=4;for(i=1;i=n;i+)/输出前4行图案 for(j=1;j=30;j+)cout;/在图案左侧空30列 for(j=1;j=8-2*i;j+)cout;for(j=1;j=2*i-1;j+)cout*;coutendl;,31,for(i=1;i=n-1;i+)/输出后3行图案 for(j=1;j=30;j+)cout;/在图案左侧空30列 for(j=1;j=7-2*i;j+)cout*;coutendl;,32,小结:掌握C+语言循环语句的三种形式及区别,能够选用基本循环语句编写简单的程序段。思考题:编写程序,求1000之内的所有“完全数”。所谓“完全数”是指一个数恰好等于其因子之和。例如,6是完全数,因为6=1+2+3作业题:1、分别计算整数1至10的平方并输出 2、编写程序,依次计算并输出当半径为5,4,3,2,1时的圆面积。,