33
第第第 第第第第第第 3.1 第第第第第第第第 3.2 第第第第第第第第 3.3 第第第第

第三章 基本控制结构

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: 第三章  基本控制结构

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

Page 2: 第三章  基本控制结构

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

教学难点 : 选择、循环的嵌套算法分析。

Page 3: 第三章  基本控制结构

3.1 3.1 顺序结构程序设计 顺序结构程序设计

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

Page 4: 第三章  基本控制结构

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

( 1)顺序结构( 2)选择结构( 3)循环结构

Page 5: 第三章  基本控制结构

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

( 1)变量声明 ( 2)常量声明( 3)函数声明 ( 4)类型声明

• 声明语句其它功能:实体定义,变量赋值

Page 6: 第三章  基本控制结构

2 、表达式语句• 格式:表达式;• 类别: ( 1)赋值语句

( 2)复合赋值语句 ( 3)增(减)量语句

( 4)函数调用语句( 5)输入输出语句

• 表达式语句与表达式的区别:表达式可以包含在其他表达式中,而语句不可。例如: if ((a=b)>0) t=a;不可写为: if ((a=b;)>0) t=a;

Page 7: 第三章  基本控制结构

• 将多个语句用一对大括号包围,便构成一个复合语句,逻辑上的一条语句

• 例如

• 空语句形式 ;不产生任何动作

{ {

sum=sum+i;i++;

}}

{sum=sum+i;i++;

}

3.1.2 顺序结构程序设计

Page 8: 第三章  基本控制结构

3.1.3 3.1.3 数据输入与输出数据输入与输出 简单的输入输出•向标准输出设备(显示器)输出

例: int x;

cout<<"x="<<x; • 从标准输入设备(键盘)输入

例: int x;

cin>>x;

Page 9: 第三章  基本控制结构

3.2 3.2 选择结构程序设计 选择结构程序设计

3 . 2. 1 if 语句 3 . 2. 2 switch 语句

Page 10: 第三章  基本控制结构

3.2.1 3.2.1 选择结构程序设计 选择结构程序设计 1 、基本 if 语句 ( 一 )

格式: If ( < 条件 > ) < 执行体语句 >

形式一:执行体为单条语句,带分号

if(a>0) a-=5;

a+=5; //if 语句之外

为真 为假a>10?

执行 a 减 5

执行 a 加 5

Page 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 语句之外

Page 12: 第三章  基本控制结构

3 、 If…else 语句(扩展 if语句)

格式:If ( < 条件 > )

< 执行体语句 1>else < 执行体语句 2>

为真 为假条件 ?

语句 1

其它语句

语句 2

Page 13: 第三章  基本控制结构

4 、 if 语句—嵌套 一般形式: if( )

if( ) 语句 1 else 语句 2else if( ) 语句 3 else 语句 4

特点: if子句或 else 子句又包含 if…else 语句注意 :语句 1、 2、 3、 4 可以是复合语句,每层的 if 与 else 配对,或用 { } 来确定层次关系。

Page 14: 第三章  基本控制结构

C++ 规定:else 关键字总是与它前面最近的未配对的可见的那个关键字配对。

例如:if( ) // 第一个 if

if( ) { // 第二个 if if( ) // 第三个 if

< 语句 1>}

else < 语句 2>

注意:复合语句内的 if 对其外面的 else 是不可见的

Page 15: 第三章  基本控制结构

嵌套 if 语句 之阶梯结构 形式:

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

Page 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”;

Page 17: 第三章  基本控制结构

3 . 2. 2 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”;}// 执行后不完全合意

1、 switch开关语句—特殊的多分支结构

Page 18: 第三章  基本控制结构

switch ( < 表达式 > ) {case < 常量表达式 1> :

<语句序列 1> break;……

case < 常量表达式 n> :<语句序列 n> break;

default :<语句序列 n+1>

}

例:等级制转换为百分制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 联用改进

Page 19: 第三章  基本控制结构

3 、 Switch 语句

• 一般形式switch ( 表达式 ) { case 常量表达式 1:语句 1 case 常量表达式 2:语句 2 ┆ case 常量表达式 n:语句 n default : 语句 n+1 }

• 执行顺序以 case 中的常量表达式值为入口标号,由此开始顺序执行。因此,每个 case 分支最后应该加 break语句。

可以是多个语句,但不必用 { } 。

可以是整型、字符型、枚举型

每个常量表达式的值不能相同,次序不影响执行结果。

Page 20: 第三章  基本控制结构

4 、 break语句使程序从 switch 语句内跳出 (另还可从循环体跳出 ) ,继续执行逻辑上的下一条语句。不宜用在别处。

5、使用 switch 语句应注意的问题• case 分支可包含多个语句,且不用 { } 。• 表达式、判断值都是 int 型或 char型。• 若干分支执行内容相同可共用一组语句。

Page 21: 第三章  基本控制结构

3.3 3.3 循环控制循环控制

3 . 3. 1 while 语句 3 . 3. 2 do-while 语句 3 . 3. 3 for 语句

Page 22: 第三章  基本控制结构

3 . 3. 1 while 语句求自然数 1~ 100 之和”

我们知道是一个和累加运算,是一个循环求和过程,同样可以用 while 循环语句实现。

• 形式while ( 表达式 ) 循环体语句

可以是复合语句,其中必须含有改变条件表达式值的语句。

执行顺序 (四步 )

( 1 )计算表达式的值,若为 true (非 0 )时,则转步骤(2 );若为 false ( 0 )时,则转步骤( 4 )。

( 2 )执行一次循环体语句

( 3 )转步骤( 1 )

( 4 )结束并退出 while 循环

Page 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;} 运行结果: 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

Page 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 ";

Page 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

Page 26: 第三章  基本控制结构

直到型循环结构与 do-while 语句• 一般形式do 语句while ( 表达式 )

• 执行顺序先执行循环体语句,后判断条件。表达式为 true 时,继续执行循环体

*while 语句与 do-while 语句的区别 :

Page 27: 第三章  基本控制结构

• 一般形式比较while ( 表达式 ) do 语句 语句 while ( 表达式 )

• 执行流程—最大区别while 先判断控制循环的条件,后执行循环体; do…while 先执行循环体,后判断控制循环的条件。

• 结果比较:While 语句的循环体可能有时一次也不做;Do…while 语句的循环体任何情况下至少要做一次。

Page 28: 第三章  基本控制结构

3 . 3. 3 for 语句

求自然数 1~ 100 之和问题。分析:本题需要用累加算法,累加过程是一个循环过程,可以用 for语句实现。

语法形式

for ( 表达式 1;表达式 2;表达式 3) 语句

执行流程(五步)

循环前先求解

为 true时执行循环体每次执行完循环体后求解

Page 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;}

运行结果:sum=5050

无循环语句编程(2*100 条语句 )int i, sum=0;

//i=1; sum+=i;i=2; sum+=i;i=3; sum+=i;

………………i=100; sum+=i;

Page 30: 第三章  基本控制结构

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

***

*****

*******

*****

***

*

Page 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

Page 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

Page 33: 第三章  基本控制结构

小结 : 掌握 C++ 语言循环语句的三种形式及区别,能够选用

基本循环语句编写简单的程序段。

思考题 : 编写程序,求 1000 之内的所有“完全数”。所谓

“完全数”是指一个数恰好等于其因子之和。例如, 6是完全数,因为 6=1+2+3

作业题 : 1 、分别计算整数 1至 10 的平方并输出 2 、编写程序,依次计算并输出当半径为 5, 4, 3, 2,

1时的圆面积。