预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共94页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第三章控制结构第一节语句级控制结构语言可用的、最简单的控制结构。 利用顺序运算符;A;B二.选择1.单选ifthenif(a>b)thenmax=aelsemax=b; max=a和max=b 只选择其中一个执行①ALGOL60的选择结构引起二义性 ifx>0thenifx<6thenx:=0elsex:=9 ②PASCAL的“最近匹配原则” ③ALGOL68中if语句的结束符号fi ④ALGOL68对elseif进行缩写①PL/1的select结构 SELECT: WHEN(A)S1; WHEN(B)S2; WHEN(C)S3; OTHERWISES4; END②PASCAL的case语句: var operator:char; operand1,operand2,result:real; …… ③C语言的switch语句 charopr; floatop1,op2,result; …. C语言ifB1→S1 □B2→S2 □B3→S3 … □BN→SN fi1.计数器制导 当预先知道重复次数时,在循环计数器值的有限集合上重复。FORTRAN的DO循环计数重复的值可在任何有序集上 for...to for...downto①while:0次或多次的重复 ②do-while,repeat-until:多次的重复 ③ALGOL68循环的一般形式: forifromjbyktomwhilebdo...odloop 循环体(语句序列) endloop; 可由exit或exitwhen<条件>终止循环doB1→S1 B2→S2 ... BN→SN od四.语句级控制结构讨论ifBthenSifBthenS1elseS2for(i=1;iN;i++)S大多数程序设计语言有goto语句,这是随意修改程序计数器值的抽象。 Dijkstra于1968年发表了著名论文,论述了goto语句对程序设计的影响。 结论:包含许多goto语句的程序隐含许多出错的机会。回顾控制结构的选择五.用户定义控制结构第二节单元级控制结构四种单元级控制结构这种类型的调用覆盖所有的子程序: FORTRAN语言的子程序和函数 PASCAL语言的函数和过程 C语言的函数 … 都属于显式调用。子程序B参数传递参数的两种绑定方式subprogramS(Fl,F2,…,FN); …… 子程序调用方式 callS(Al,A2,…,AN); 位置方法暗示实参Ai绑定形参FiC++的缺省参数对非局部环境的修改。 ①副作用降低了程序的可读性 ②副作用限制了数学运算律的使用两个变量共享同一数据对象 ①FORTRAN的EQUIVALENCE语句; ②Pascal变参使得形参和实参是别名。 C++的引用参数;swap(a,a); 若i=j swap(b[i],b[j]); 若p、q指向同一数据对象 swap(p,q);③变参和全局变量表示同一数据对象时,也会引起别名。④别名也影响编译器生成优化的代a:=(x-y*z)+w; b:=(x-y*z)+u; 若a与x、y或z中任一个是别名异常:导致程序正常执行中止的事件 要靠发信号来引发 用异常条件来表示。(1)异常如何说明,它的作用域是什么? (2)异常如何发生?(如何捕获异常) (3)发生异常时,如何进行转移?方法1方法21.PL/1异常处理 2.CLU的异常处理 3.Ada的异常处理 自学,了解。4.C语言的出错处理5.C++语言的异常处理1.两个或两个以上程序单元之间交错地执行,这样的程序称为协同程序。协同程序C2例子 “生产者-消费者”问题特点正确访问缓冲区: 不会向已满的缓冲区写数据 不会从空缓冲区读数据append是生产者向缓冲区存数的操作 remove是消费者从缓冲区取数的操作, 设t表示所存项目总数 这两个操作都要修改t的值,相应执行操作(1)t:=t+1和(2)t:=t-1来实现。执行(1)时不能执行(2),反之亦然。 即,(1)和(2)必须以互斥的方式执行,(1)或(2)是不可分的操作。进程的并发性自学