1 / 33

第三章 基本控制结构

第三章 基本控制结构. 3.1 顺序结构程序设计 3.2 选择结构程序设计 3.3 循环控制. 第三章 基本控制结构. 教学目标 : 1. 掌握 C++ 语言常用的输入 / 输出方式 2. 熟练掌握 if … else 的两种语法 3. 掌握 for 、 while 、 do-while 语句的用法 教学重点 : 1. 赋值语句、数据的输入输出及输入输出中常用的控制格式 2. 程序设计中构成选择、循环的算法; 教学难点 : 选择、 循环的嵌套算法分析。. 3.1 顺序结构程序设计.

Télécharger la présentation

第三章 基本控制结构

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第三章 基本控制结构 3.1 顺序结构程序设计 3.2 选择结构程序设计 3.3 循环控制

  2. 第三章 基本控制结构 • 教学目标: 1.掌握 C++ 语言常用的输入 / 输出方式 2.熟练掌握 if … else 的两种语法 3.掌握 for 、 while 、 do-while 语句的用法 • 教学重点: 1.赋值语句、数据的输入输出及输入输出中常用的控制格式 2.程序设计中构成选择、循环的算法; 教学难点: 选择、循环的嵌套算法分析。

  3. 3.1 顺序结构程序设计 3.1.1 C++ 语句概述 3.1.2 顺序结构程序设计 3.1.3 数据输入与输出

  4. 3.1.1 C++ 语句概述 在程序设计语言中,程序是按什么顺序执行的呢?默认按程序中语句顺序执行,语句是程序的基本功能单元。当然也有分支选择,跳转,循环非顺序执行,正体现了计算机的“智能”。C++程序也不例外。分三种基本控制结构: (1)顺序结构 (2)选择结构 (3)循环结构

  5. C++语句 声明语句 表达式语句 选择语句 循环语句 跳转语句 复合语句 1、声明语句(说明语句) • 程序中的实体标识符必须先声明后使用 • 实体标识符如:变量、常量、函数、结构、类、对象等。 • 声明的实质:告之实体类型 (1)变量声明 (2)常量声明 (3)函数声明 (4)类型声明 • 声明语句其它功能:实体定义,变量赋值

  6. 2、表达式语句 • 格式:表达式; • 类别: (1)赋值语句 (2)复合赋值语句 (3)增(减)量语句 (4)函数调用语句 (5)输入输出语句 • 表达式语句与表达式的区别: 表达式可以包含在其他表达式中,而语句不可。 例如:if ((a=b)>0) t=a; 不可写为:if ((a=b;)>0) t=a;

  7. 3.1.2 顺序结构程序设计 • 将多个语句用一对大括号包围,便构成一个复合语句,逻辑上的一条语句 • 例如 • 空语句形式 ;不产生任何动作 • { • { • sum=sum+i; • i++; • } • } { • sum=sum+i; • i++; • }

  8. 3.1.3 数据输入与输出 • 简单的输入输出 • 向标准输出设备(显示器)输出 • 例:int x; • cout<<"x="<<x; • 从标准输入设备(键盘)输入 • 例:int x; • cin>>x;

  9. 3.2 选择结构程序设计 3.2.1 if 语句 3.2.2 switch 语句

  10. 为真 a>10? 为假 执行a减5 执行a加5 3.2.1 选择结构程序设计 1 、基本if语句(一) 格式:If ( <条件> ) <执行体语句> 形式一: 执行体为单条语句,带分号 if(a>0) a-=5; a+=5; //if语句之外

  11. 2 、基本if语句(二)格式:If ( <条件> ) <执行体语句> 形式二: 执行体为复合语句,整个if 语句结束不带分号 if(a>b) { //若a>b int t=a; //则a与b交换 a=b; b=t; } //功能:保持变量b始终为最大值 cout<<“The max is:”<<b<<‘\n’; //if语句之外

  12. 为真 条件? 为假 语句1 语句2 其它语句 3 、 If…else语句(扩展if语句) 格式: If ( <条件> ) <执行体语句1> else <执行体语句2>

  13. 4 、 if 语句—嵌套 一般形式: if( ) • if( ) 语句 1 • else 语句 2 • else • if( ) 语句 3 • else 语句 4 • 特点:if子句或else子句又包含if…else语句 • 注意:语句 1、2、3、4 可以是复合语句,每层的 if 与 else 配对,或用 { } 来确定层次关系。

  14. C++规定:else关键字总是与它前面最近的未配对的可见的那个关键字配对。C++规定:else关键字总是与它前面最近的未配对的可见的那个关键字配对。 例如: • if( ) //第一个if • if( ) { //第二个if • if( ) //第三个if • <语句 1> • } • else • <语句 2> • 注意:复合语句内的 if 对其外面的else 是不可见的

  15. 嵌套if 语句 之阶梯结构 形式: if (表达式1) 语句1 else if (表达式2) 语句2 else if (表达式3) 语句3… else 语句 n • 执行流程:按顺序检测 if 条件,一旦满足则执行相应 • 的if子句,同时整个嵌套if 语句结束;否则执行最后一 • 个else子句.

  16. 三种形式: if (表达式) 语句 • 例:if (x>y) cout<<x; if (表达式) 语句1 else 语句2 • 例:if (x>y) cout<<x; • else cout<<y; if (表达式1) 语句1else if (表达式2) 语句2else if (表达式3) 语句3…else 语句 n 阶梯结构实例 • 将百分制成绩转换成字母等级: int Grade; cin>> Grade; if(>=90) cout<<“A\n”; else if(>=80) cout<<“B\n”; else if(>=70) cout<<“C\n”; else if(>=60) cout<<“D\n”; else cout<<“E\n”;

  17. 3.2.2 switch 语句 1、switch开关语句—特殊的多分支结构 格式: switch ( <表达式> ) { case <常量表达式1> : <语句序列1> case <常量表达式2> : <语句序列2> …… case <常量表达式n> : <语句序列n> default : <语句序列n+1> } 例:等级制转换为百分制 char grade; cin>>grade; 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”; }//执行后不完全合意

  18. 2、Switch与break联用改进 例:等级制转换为百分制 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”; }//执行 switch ( <表达式> ) { case <常量表达式1> : <语句序列1> break; …… case <常量表达式n> : <语句序列n> break; default : <语句序列n+1> }

  19. 可以是整型、字符型、枚举型 每个常量表达式的值不能相同,次序不影响执行结果。 可以是多个语句,但不必用{ }。 3、Switch语句 • 一般形式 • switch (表达式) • { case 常量表达式 1:语句1 • case 常量表达式 2:语句2 • ┆ • case 常量表达式 n:语句n • default : 语句n+1 • } • 执行顺序 • 以case中的常量表达式值为入口标号,由此开始顺序执行。因此,每个case分支最后应该加break语句。

  20. 4、break语句 • 使程序从switch语句内跳出(另还可从循环体跳出) ,继续执行逻辑上的下一条语句。不宜用在别处。 • 5、使用switch语句应注意的问题 • case分支可包含多个语句,且不用{ }。 • 表达式、判断值都是int型或char型。 • 若干分支执行内容相同可共用一组语句。

  21. 3.3 循环控制 3.3.1 while 语句 3.3.2 do-while 语句 3.3.3 for 语句

  22. 可以是复合语句,其中必须含有改变条件表达式值的语句。可以是复合语句,其中必须含有改变条件表达式值的语句。 3.3.1 while 语句 求自然数1~100之和” 我们知道是一个和累加运算,是一个循环求和过程,同样可以用while循环语句实现。 • 形式 while (表达式) 循环体语句 • 执行顺序(四步) • (1)计算表达式的值,若为 true(非0)时,则转步骤(2);若为 false(0)时,则转步骤(4)。 • (2)执行一次循环体语句 • (3)转步骤(1) • (4)结束并退出while循环

  23. #include<iostream> using namespace std; void main() { int i=1, sum=0; while(i<=100) { sum+=i; //相当于sum=sum+i; i++; } cout<<"sum= " <<sum<<endl; } 问题: 1+2+3+4+…+100 执行流程: 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 当条件 循环体 运行结果:sum=5050

  24. 3.3.2 Do…while循环语句 适用:先执行循环体,后判断条件的情况 例: do…while语句 输入一个整数,将各位数字反转后输出。 #include <iostream> using namespace std; int main() { int n, right_digit; cout << "Enter the number: "; cin >> n;// n 保存输入的整数 cout << "The number in reverse order is ";

  25. do { right_digit = n % 10;// 对n求模取出当前个位数 cout << right_digit; n /= 10; // 即n=n/10运算,相当于对n右移一位,去掉已取出的个位数 } while (n != 0); cout<<endl; } 运行结果: Enter the number: 365 The number in reverse order is 563

  26. 直到型循环结构与do-while 语句 • 一般形式 do 语句 while (表达式) • 执行顺序 先执行循环体语句,后判断条件。表达式为 true 时,继续执行循环体 *while语句与do-while语句的区别:

  27. 一般形式比较 while (表达式) do 语句 语句 while (表达式) • 执行流程—最大区别 while先判断控制循环的条件,后执行循环体;do…while先执行循环体,后判断控制循环的条件。 • 结果比较: While语句的循环体可能有时一次也不做; Do…while语句的循环体任何情况下至少要做一次。

  28. 循环前先求解 每次执行完循环体后求解 为true时执行循环体 3.3.3 for 语句 语法形式 for (表达式1;表达式2;表达式3) 语句 执行流程(五步) 求自然数1~100之和问题。 分析:本题需要用累加算法,累加过程是一个循环过程,可以用for语句实现。

  29. #include<iostream> using namespace std; int main() { int i, sum=0; //控制变量和记录累加和变量 for(i=1;i<=100;i++) { sum+=i;//相当于sum=sum+i; } cout<<"sum="<<sum<<endl; } 无循环语句编程 (2*100条语句) int i, sum=0; // i=1; sum+=i; i=2; sum+=i; i=3; sum+=i; ……………… i=100; sum+=i; 运行结果: sum=5050

  30. for 语句举例: 编写程序输出以下图案 * *** ***** ******* ***** *** *

  31. #include<iostream> using 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<<'*'; cout<<endl; } 31

  32. 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<<'*'; cout<<endl; } } 32

  33. 小结: 掌握C++语言循环语句的三种形式及区别,能够选用基本循环语句编写简单的程序段。 思考题: 编写程序,求1000之内的所有“完全数”。所谓“完全数”是指一个数恰好等于其因子之和。例如,6是完全数,因为6=1+2+3 作业题: 1、分别计算整数1至10的平方并输出 2、编写程序,依次计算并输出当半径为5,4,3,2,1时的圆面积。

More Related