chapter3 1语句概述和顺序选择控制_第1页
chapter3 1语句概述和顺序选择控制_第2页
chapter3 1语句概述和顺序选择控制_第3页
chapter3 1语句概述和顺序选择控制_第4页
chapter3 1语句概述和顺序选择控制_第5页
已阅读5页,还剩41页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

内容回顾第二章数据描述南京大学计算机科学与技术系Base

of

Programming1数据类型:值集和操作(运算)集例子:解一元二次方程组文本编辑程序操作符:描述对数据的操作表达式:操作符、操作数及括号构成的运算式,构成了数据处理的基本单位当程序中有多个表达式时,就会面临:先计算哪一个表达式根据不同的情况计算不同的表达式一个或几个表达式需要重复计算多次南京大学计算机科学与技术系Base

of

Programming2第三章程序的流程控制—语句(statement)南京大学计算机科学与技术系Base

of

Programming33.1

程序流程控制概述南京大学计算机科学与技术系Base

of

Programming4程序流程控制概述南京大学计算机科学与技术系Base

of

Programming5语句(statement)语句实现对程序执行流程的控制,包括:顺序控制:按书写次序执行分支控制:根据条件选择执行循环控制:重复执行

简单语句

表达式语句

转向控制语句

空语句

复杂语句

复合语句

分支结构控制语句

循环结构控制语句南京大学计算机科学与技术系Base

of

Programming6C++语句的分类(语法结构上)在C++中,把数据定义也作为语句(表达式语句)看待。这些语句添加标号,构成标号语句C++的语句

(逻辑上讲)南京大学计算机科学与技术系Base

of

Programming7

分支结构控制语句(if、else、switch)

循环结构控制语句(while、do-while、for)

转向控制语句(goto、break、continue、return)除复合语句外,语句一定以;结尾(C++语句书写格式比较自由,

确定语句结束的唯一标识是分号)南京大学计算机科学与技术系Base

of

Programming8含关键词的语句

顺序控制

选择控制

循环(重复)控制

无条件转移控制

程序设计风格南京大学计算机科学与技术系Base

of

Programming9基本内容3.2

顺序控制南京大学计算机科学与技术系Base

of

Programming10顺序控制南京大学计算机科学与技术系Base

of

Programming11表达式语句复合语句空语句1

表达式语句南京大学计算机科学与技术系Base

of

Programming12形式表达式;(即表达式最后加一个分号)举例a=3;z=x*y,

z++;x-y;a

|

b

&

c;//赋值表达式语句//逗号表达式语句//算术表达式语句//逻辑表达式语句连续的多个表达式语句按它们的书写次序(从左到右、从上到下)依次执行。常用的表达式语句南京大学计算机科学与技术系Base

of

Programming13赋值自增/自减输入/输出无返回值的函数调用例如x=a+b; //赋值x++; //自增cin>>a; //输入cout<<b; //输出F(a); //函数调用条件表达式常用在条件赋值语句中,相当于一个if

语句,如c=a>b?a:b;南京大学计算机科学与技术系Base

of

Programming14一种特殊的常用的表达式语句———条件表达式语句…x=(x>=0

&&

x<=9)?x:x%10;…例:

求ax2+bx+c=0方程的根,a、b、c由键盘输入,设a≠0,b≠0,b2-4ac>0。输入系数a、b、c计算delta=b2-4ac计算x1=

(-b+ delta)/2a

、x2

=

(-b-

delta)/2a输出x1、x2分析:

x=(-b±

b2-4ac)/2a南京大学计算机科学与技术系Base

of

Programming15#include

<iostream>#include

<cmath>

//#include

<math.h>}南京大学计算机科学与技术系Base

of

Programming16using

namespace

std;int

main(){double

a=1,

b=3,

c=2,

delta,

x1,

x2;cout

<<

"please

input

a,b,c:";cin

>>

a

>>

b

>>

c;delta

=

b*b

-

4*a*c;b

=

-b/(2*a);c

=

sqrt(delta)/(2*a);x1

=

b+c;x2

=

b-c;cout

<<

x1

<<

","

<<

x2

<<

endl;return

0;Ex:表达式语句2

复合语句(块语句,block)南京大学计算机科学与技术系Base

of

Programming17形式{语句1语句2…}即用{}把若干条语句组合成一个语句,{}内可以有多条语句,可以只有一条语句,也可以没有任何语句注意}后不再加;用法一个复合语句当作一条语句来使用需要把多条语句放在只允许一条语句的场合}//复合语句结束南京大学计算机科学与技术系Base

of

Programming18//复合语句开始举例if

(x

>

y){t

=

x;x

=y;y

=t;南京大学计算机科学与技术系Base

of

Programming193

空语句形式;(即只有一个分号)用法(空语句不做任何事情)作为分支点(语法上需要一条语句的地方,而该地方又不需做任何事情)作为循环语句中的循环体(多用来做延时)在一个复合语句中,需要转向该复合语句中最后一条语句之后,这时可以采用以下的做法:{.........

goto

end;......end:

;}南京大学计算机Base

of科学与技术系Programming20空语句举例

if

()if()语句else

;else

语句

for(i=1;

i<100;

i++);

for(i=1;

i<=100;

sum+=i++);(即for(i=1;

i<=100;

i++)

sum+=i;)

用空语句和goto语句实现continue语句的功能while

(...){

.........

continue;......}while

(...){等价于end:.........

goto

end;......;}3.3

选择控制南京大学计算机科学与技术系Base

of

Programming21选择控制在程序中,常常需要根据不同的情况来从一组语句中选择一个来执行,这是通过分支结构语句来完成的。

if…语句

if

…else…语句

switch

语句if

语句南京大学计算机科学与技术系Base

of

Programming221

if…语句南京大学计算机科学与技术系Base

of

Programming23形式if(表达式)语句1用法表达式的值为true时,执行语句1表达式的值为false时,不执行语句1举例if

(x>y)

cout

<<

x;#include

<iostream>#include

<cmath>using

namespace

std;int

main(){double

a=1,

b=3,

c=2,

delta,

x1,

x2;cout

<<

"please

input

a,b,c:";cin

>>

a

>>

b

>>

c;delta

=

b*b

-

4*a*c;if

(delta<=0)

cout

<<

“error”<<endl;return;b

=

-b/(2*a);c

=

sqrt(delta)/(2*a);x1

=

b+c;x2

=

b-c;cout

<<

x1

<<

","

<<

x2

<<

endl;return

0;Ex*:if语句对于例:求ax2+bx+c=0方程的根,南京大学计算机科学与技术系Base

of

Programming}24a、b、c由键盘输入,设a≠0,b≠0,b2-4ac>0。南京大学计算机科学与技术系#include

<iostream>#include

<cmath>using

namespacestd;int

main(){double

a=1,

b=3,

c=2,

delta,

x1,

x2;cout

<<

"please

input

a,b,c:";cin

>>

a

>>

b

>>

c;delta

=

b*b

-

4*a*c;if

(delta>0){b

=

-b/(2*a);c

=

sqrt(delta)/(2*a);x1

=

b+c;x2

=

b-c;cout

<<

x1

<<

","

<<

x2

<<

endl;

}return

0;}Ex1**:复合语句对于例:求ax2+bx+c=0方程的根,Base

of

Programming25a、b、c由键盘输入,设a≠0,b≠0,b2-4ac>0。南京大学计算机科学与技术系Base

of

Programming262

if

…else…语句形式if(表达式)语句1else

语句2用法表达式的值为true时,执行语句1表达式的值为false时,执行语句2举例if

(x>y)cout

<<

x;elsecout

<<

y;else及其子句不能作为语句单独使用,必须和if配对南京大学计算机科学与技术系#include

<iostream>#include

<cmath>using

namespacestd;int

main(){double

a=1,

b=3,

c=2,

delta,

x1,

x2;cout

<<

"please

input

a,b,c:";cin

>>

a

>>

b

>>

c;delta

=

b*b

-

4*a*c;if

(delta<=0)

cout

<<

'\a';else{b

=

-b/(2*a);c

=

sqrt(delta)/(2*a);x1

=

b+c;x2

=

b-c;cout

<<

x1

<<

","

<<

x2

<<

endl;

}return

0;}Ex1***:if…else…语句对于例:求ax2+bx+c=0方程的根,Base

of

Programming27a、b、c由键盘输入,设a≠0,b≠0,b2-4ac>0。if…与if…else…的图示第一种格式南京大学计算机科学与技术系Base

of

Programming28第二种格式if(<表达式>)<语句>if(<表达式>)<语句1>else<语句2>if语句的歧义问题

if

语句可以嵌套,此时else与上面最近的未配对的if

配对if

()if

()语句1else

语句2else

语句3if

()

或if

()if

()语句1 {if

()语句1}else

else

语句3else

语句3南京大学计算机科学与技术系Base

of

Programming29

if语句的书写格式:良好的缩进格式可以增加程序可读性,但缩进并不改变程序的逻辑。int

x=0,y=0,z=0;cin

>>

x;if

(x>0)y=10;z=20;cout

<<

y

<<

","

<<

z;当输入的x>0时,y=10,z=20

;当输入的x<=0时,y=0,z=20要用{}将多个语句组合成一个复合语句作为子语句int

x=0,y=0,z=0;cin

>>

x;if

(x>0){

y=10;}

z=20;cout

<<

y

<<

","

<<

z;南京大学计算机科学与技术系Base

of

Programming30if

…else…语句的锯齿格式南京大学计算机科学与技术系Base

of

Programming...31为了提高程序的易读性,在写if语句时,最好采用“锯齿”格式,即把子句往后缩进几列。当if语句的子句也是if语句时,如果嵌套层次很深,“锯

齿”格式将会使程序正文严重偏向右边,从而给程序编辑、查看带来困难。为了减少文本的缩进量,可以把这样的if语句按下面的格式书写:if

(...)...else

if

(...)...else

if

(...)...else...if

(...)...elseif

(...)...elseif

(...)...else等价于:Base

of

Programming32分析:对于例:求ax2+bx+c=0方程的根,a、b、c由键盘输入设a≠0,b≠0,b2-4ac>0。真a=0假真真假假b2-4ac=0b2-4ac>0输出两个实根x1,

x2输出两个复根南京大学p+计q算i,机p科-q学i与技术系2a-

b

+

b2

-

4acx1

=2a-

b

-

b2

-

4acx2

=计算复根的实部和虚部实部p=-b/2a虚部2a2-(b

-

4ac)q

=输出两个相等的实根-b/2a输出提示信息|不是二次方程南京大学计算机科学与技术系Base

of

Programming#include

<iostream>#include

<cmath>using

namespace

std;int

main(){ double

a,b,c,p,q,delta;cout

<<

"please

inputa,b,c:";cin

>>

a

>>

b

>>

c;if

(a

==

0)cout

<<

"error\n";else

if

((delta=b*b-4*a*c)

==

0)cout

<<

"x1=x2="

<<

-b/(2*a)

<<

endl;else

if

(delta

>

0){ p=

-b/(2*a);q

=

sqrt(delta)

/

(2*a);cout

<<

"x1="

<<

p+q<<

"

x2="

<<

p-q<<

endl;}else{ p=

-b/(2*a);q=

sqrt(-delta)

/(2*a);cout

<<

"x1="

<<

p <<

"+"

<<

q

<<

"i,x2="

<<

p

<<

"-"

<<

q

<<

"i"

;}return

0;}33Ex1****:if…else…锯齿结构if语句的效率问题南京大学计算机科学与技术系Base

of

Programming34if

(score

>=

90)cout<<"优";cout<<"良";cout<<"中";cout<<"及格";if

(score<60)cout<<"不及格";效率低下if

(score

>=

90)cout<<"优";if

(score

>=

80

&&

score

<

90)

else

if

(score

>=

80)cout<<"良";if

(score

>=

70

&&

score

<

80)

else

if

(score

>=

70)cout<<"中";if

(score

>=

60

&&

score

<

70)

else

if

(score

>=

60)cout<<"及格";elsecout<<"不及格";避免了不必要的测试if((a=b;)>0)

t=a;

×if(x>y)

{x--;

y++}×if语句中的表达式,一般为逻辑表达式或关系表达式,也可为其它形式(如一个数),其值为true(非0)时执行后面的语句1if语句中的子句(语句1/语句2),可以是一条任何类型的语句,如表达式语句、复合语句、空语句和控制语句,但只能是一条语句。无论哪种形式,整个if语句(包括else子句)只算作一条语句南京大学计算机科学与技术系Base

of

Programming35if语句中的表达式与语句从键盘输入一个星期的一天,输出其对应的英语单词:南京大学计算机科学与技术系Base

of

Programming36include

<iostream>using

namespace

std;{int

day;cin

>>

day;}3

switch(多分支/开关)语句南京大学计算机科学与技术系Base

of

Programming37程序中有时需要从两个(组)以上的语句中选择一个(组)来执行。C++提供了一条多路选择语句:switch语句,它能根据某个表达式的值在多组语句中选择一组语句来执行。每一组语句的最后一个语句往往是break语句。

switch语句便于编译程序进行优化,对于同一个问题,比if语句效率高。

注意switch语句与循环语句的区别。switch语句的格式南京大学计算机科学与技术系Base

of

Programming38switch(<整型表达式>){ case<整型常量表达式1>:<语句序列1>case<整型常量表达式2>:<语句序列2>::case<整型常量表达式n>:<语句序列n>[default:<语句序列n+1>]}从键盘输入一个星期的某一天(0:星期天;1:星期一;…),然后输出其对应的英语单词}南京大学计算机科学与技术系Base

of

Programming39int

day;

cin

>>

day;switch

(day){ case

0:

cout

<<

"Sunday";

break;case

1:

cout

<<

"Monday";

break;case

2:

cout

<<

"Tuesday";

break;case

3:

cout

<<

"Wednesday";

break;case

4:

cout

<<

"Thursday";

break;case

5:

cout

<<

"Friday";

break;case

6:

cout

<<

"Saturday";

break;default:

cout

<<

"Input

error";switch语句中的语句南京大学计算机科学与技术系Base

of

Programming40在switch语句的一个分支的执行中,若没有break语句(最后一个分支除外),则该分支执行完后,将继续执行紧接着的下一个分支中的语句序列。在其它一些语言(如:Pascal)的多路选择语句中,一个分支执行完后将自动结束多路选择语句的执行。C++的switch语句比其它一些语言中的多路选择语句更具灵活性。当若干个分支具有部分重复功能时,

C++的switch语句可以节省代码量。多个case可以共用一组语句,如南京大学计算机科学与技术系Base

of

Programming4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论