单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,第3章 结构化控制语句,韩 格,2010年9月,第3章 结构化控制语句,1,提纲,结构化程序设计方法简介,三种控制结构,选择控制语句,循环控制语句,跳转语句,提纲结构化程序设计方法简介,2,3.1 结构化程序设计方法简介,两种程序设计方法,结构化,程序设计方法,面向对象,程序设计方法,结构化方法的特点,“自顶向下、逐步求精”,“模块化”,含有,三种基本控制结构,C语言,C+、Java、C#语言,3.1 结构化程序设计方法简介两种程序设计方法C语言C+、,3,3.1 结构化程序设计方法简介,“模块化”示意图,3.1 结构化程序设计方法简介“模块化”示意图,4,3.2 三种控制结构,顺序结构,语句A,语句B,入口,出口,3.2 三种控制结构顺序结构语句A语句B入口出口,5,3.2 三种控制结构,选择结构,条件成立?,语句A,语句B,入口,入口,出口,Yes,No,3.2 三种控制结构选择结构条件成立?语句A语句B入口入口出,6,3.2 三种控制结构,循环结构,条件成立,?,语句,Yes,入口,出口,No,Yes,3.2 三种控制结构循环结构条件成立?语句Yes入口出口No,7,3.3 选择控制语句,if 选择语句,选择语句又称为分支语句,它通过对给定的条件进行判断,从而决定执行,一个或多个,分支中的哪一支,C+编程语言中常用“if”关键字引导程序的选择执行结构,if 选择语句形式如:,if(判定条件)执行语句,3.3 选择控制语句if 选择语句,8,3.3 选择控制语句,if 语句用法例子,高校学生成绩管理系统中,经常需要对学生的考试分数,进行是否大于60分的判断操作,对于大于60分的学生,告,诉修够该课程的学分,否则告诉未修够学分。(,见程序:3_1.cpp、3_2.cpp,),3.3 选择控制语句if 语句用法例子,9,3.3 选择控制语句,程序3_1.cpp(单路if语句),#include,using namespace std;,int main(),float grade=0.0;,cout ,请输入学生成绩:,grade;,if(grade=60),cout,该生通过考试,!endl;,cout ,n成绩判定结束.,endl;,return 0;,3.3 选择控制语句程序3_1.cpp(单路if语句),10,3.3 选择控制语句,程序3_2.cpp(if/else语句),#include,using namespace std;,int main(),float grade=0.0;,cout 请输入学生成绩:grade;,if(grade=60),cout该生通过考试!endl;,else,cout 该生未通过考试!endl;,cout n成绩判定结束.endl;,return 0;,3.3 选择控制语句程序3_2.cpp(if/else语句,11,3.3 选择控制语句,活动图(Activity Diagram),UML中的活动图描述程序执行活动的顺序,展现从一个活动到另一个活动的控制流,活动图也被称为,流程图,四部分组成:实心圆、带环的实现圆、矩形、菱形、箭头,实心圆表示程序的执行活动的开始;带环的实现圆表示程序的执行活动结束;矩形表示处理过程、菱形表示进行判定、箭头表示程序的活动方向,3.3 选择控制语句活动图(Activity Diagram,12,3.3 选择控制语句,活动图例子,程序3_2.cpp的活动图,3.3 选择控制语句活动图例子程序3_2.cpp的活动图,13,3.3 选择控制语句,使用if语句的要点,if 判定语句后面紧接大括号“”,在其中写入条件为,真,(,ture,)的处理语句,如果“”中只含有一条语句,则可以省略“”,else语句与if语句用法类似,if/else 语句应该成对出现,并采用对齐和缩进格式提高程序的可读性,3.3 选择控制语句使用if语句的要点,14,3.3 选择控制语句,多if/else 嵌套的例子,在学生成绩系统中,经常对学生的分数进行等级划分,如,大于90分记为A;8089记为B;7079记为C;6069记为,D;60分以下记为E。使用多个if/else 嵌套实现上述功能,的判断,,见程序3_3.cpp,。,3.3 选择控制语句多if/else 嵌套的例子,15,3.3 选择控制语句,#include,using namespace std;,int main(),float grade=0.0;,cout 请输入学生成绩:grade;,if(grade=90)/第一个if,coutA=80)/第二个if,coutB=70)/第三个if,coutC=60)/第四个if,coutDendl;,else /与第四个if配对,coutEendl;,/第四个 else的花括号 结束,/第三个 else的花括号 结束,/第二个 else的花括号 结束,/第一个 else的花括号 结束,return 0;/main函数结束,3.3 选择控制语句 else /,17,3.3 选择控制语句,switch多路选择,switch关键字支持多分支(,多路,)的选择,针对嵌套的if/else语句可以通过switch语句替代,使得代码更加直观、易读,switch引导的选择结构中包括,case,、,break,、,default,关键字,3.3 选择控制语句switch多路选择,18,3.3 选择控制语句,switch的语法格式,switch(整数表达式),case 常量表达式1:;,case 常量表达式2:;,case 常量表达式n:;,default:;,3.3 选择控制语句switch的语法格式,19,3.3 选择控制语句,程序3_4.cpp(switch语句),switch,switch(grade),case A:,cout90100endl;,break;,case B:,cout8089endl;,break;,case C:,cout7079endl;,break;,case D:,cout6069endl;,break;,case E:,cout059endl;,3.3 选择控制语句 程序3_4.cpp(switch语句),20,3.3 选择控制语句,使用switch语句的要点,switch后面括号中的表达式只能是,整型,、,字符型,或,枚举型,表达式,case分支语句起标号的作用,,标号不能重名,在各个case分支中的,break语句起着退出switch语句的作用,可以使多个case语句共用一组语句序列,default引导在所有case以外的情况,要执行的语句,可缺省,各个case(包括default)语句的出现次序可以任意,每个case语句中不必用,而整体的switch结构一定要用,switch结构也可以嵌套,3.3 选择控制语句使用switch语句的要点,21,3.4 循环控制语句,三种循环结构,C+提供了三种循环控制语句:,while语句,,,dowhile语句,,,for语句,三种语句的共性:循环结构相同(进入循环的条件,循环体,退出循环的条件);完成的功能相同,三种语句的差异:三者进入与退出循环的方式不同,3.4 循环控制语句三种循环结构,22,3.4 循环控制语句,while语句:当条件满足时进入,重复执行循环体,直到,条件不满足,时退出。,dowhile语句:无条件进入,执行一次循环体后判断是否满足条件,当条件满足时重复执行循环体,直到条件不满足时退出。,for语句:当循环变量在指定范围内变化时,重复执行循环体,直到循环变量超出了,指定的范围,时退出。,3.4 循环控制语句while语句:当条件满足时进入,重复执,23,3.4 循环控制语句,while语句语法格式,控制变量初始化化,while(含有控制变量的条件表达式),代码段,更新控制变量,循环体,3.4 循环控制语句while语句语法格式循环体,24,3.4 循环控制语句,while语句的执行过程,首先对条件表达式进行判断,若判断结果为,假,(,false,,,0,),则,跳过循环体,,执行while结构后面的语句。,若判断结果为,真,(,true,,,非0,),则,进入循环体,,执行其中的语句序列。,执行完一次循环体语句后,修改循环变量,再对条件表达式进行判断,若判断结果为真,则再执行一次循环体语句,依次类推,直到判断结果为假时,退出while循环语句,转而执行后面的语句。,先判断后执行,3.4 循环控制语句while语句的执行过程先判断后执行,25,3.4 循环控制语句,程序3_5.cpp(while语句),#include,using namespace std;,int main(),int counter=1;/初始化控制变量,while(counter=10)/循环条件,cout counter ;,counter+;/控制变量自增1,/循环体结束,cout endl;/换行,return 0;/程序成功结束,/main函数结束,3.4 循环控制语句程序3_5.cpp(while语句),26,3.4 循环控制语句,程序3_5.cpp的活动图,3.4 循环控制语句程序3_5.cpp的活动图,27,3.4 循环控制语句,do-while语句语法格式,控制变量初始化化,do,代码段,更新控制变量,while(含有控制变量的条件表达式),循环体,3.4 循环控制语句do-while语句语法格式循环体,28,3.4 循环控制语句,do-while语句的执行过程,当流程到达do后,立即执行循环体语句,然后再对条件表达式进行判断。,若条件表达式的值为,真,(,非0,),则,重复执行循环体语句,,否则退出。,先执行后判断,3.4 循环控制语句do-while语句的执行过程先执行后判,29,3.4 循环控制语句,程序3_6.cpp(do-while语句),#include,using namespace std;,int main(),int counter=1;/初始化控制变量,do,cout counter ;,counter+;/控制变量自增1,while(counter=10);/判定循环条件,cout endl;/换行,return 0;/程序成功结束,/main函数结束,3.4 循环控制语句程序3_6.cpp(do-while语句,30,3.4 循环控制语句,while和do-while的差别,while语句有可能一次都不执行循环体,而dowhile循环至少执行一次,因为直到程序到达循环体的尾部遇到while时,才知道继续条件是什么。,dowhile循环体是一个单语句,中间的循环代码被花括号包围起来,并且while(表达式)后面要有分号“;”而while(表达式)结构语句后面没有分号“;”。,3.4 循环控制语句while和do-while的差别,31,3.4 循环控制语句,for语句语法格式,控制变量初始化化,for(表达式1;表达式2;表达式3),代码段,3.4 循环控制语句for语句语法格式,32,3.4 循环控制语句,表达式1可以称为,初始化表达式,,一般用于对循环变量进行初始化或赋初值。,表达式2可以称为,条件表达式,,当它的判断条件为真时,就执行循环体语句,否则终止循环,退出for结构。,表达式3可以称为,修正表达式,,一般用于在每次循环体执行之后,对循环变量进行修改操作。,当表达式2为真时,循环体执行的一组语句序列。,3.4 循环控制语句表达式1可以称为初始化表达式,一般用于对,33,3.4 循环控制语句,for语句的执行过程,(1)先求解表达式1;,(2)求解表达式2,若为0(假),则结束循环,并转到(5);,(3)若表达式2为非0(真),则执行循环体,然后求解表达式3;,(4)转回(2);,(5