|
循环结构:根据某种条件反复执行程序循环体中的语句 一、首先学习当循环 循环语句充分利用了计算机运算速度快的特点,把大量的重复性的工作交给了计算机处理。 例题: 1. WHILE循环格式。 WHILE 布尔表达式 DO 语句 例如: i:=1; WHILE i<=10 DO BEGIN Writeln (i); i:=i+1 END; 其中 (1)WHIlE 和DO是PASCAL保留关键字,是WHILE循环语句的组成部分。 (2)保留关键字DO后面的语句,称为"循环体";如果循环体中需要包含多个语句则应该如上例所示,采用复合语句的形式。 2. WHILE循环的执行功能 当执行到WHILE语句时 (1)求出布尔表达式的值 (2)若布尔表达式的值为真,则执行循环体内的语句;若为"假",则执行循环体后面的语句 (3)重复步骤⑴和⑵ (4)循环结束,执行循环后面的语句。 注意: 循环中一定要有能够改变布尔表达式值的语句(如i:=i+1),否则会陷入死循环中。 循环中经常会用到i:=i+1或i:=i-1的形式,它们通常被称为计数器,可以用于统计循环执行的次数。还会经常看到s:=s+i或s:=s*i的形式,它们通常被称为累加器或累乘器,累加器中的s使用前通常要清零,累乘器中的s使用前通常要赋初值为1。
例:根据输入的自然数n,求1+2+3+...+n的和。(当然也可以用公式来做) var n,i,s:integer; begin readln(n); i:=0;s:=0; while i<=n do begin i:=i+1; s:=s+i end; writeln(s) end. 例:根据输入的自然数n,求1*2*3*...*n的和。(当然也可以用公式来做) var n,i,s:real; begin readln(n); i:=0;s:=1; while i<=n do begin i:=i+1; s:=s*i end; writeln(s:2:0) end. 二、REPEAT-UNTIL类型 循环的执行形式 REPEAT 语句1 语句2 ...... 语句n UNTIL 布尔表达式 例如:以下循环求n=1+2+3+......+100 n:=0;t:=i; REPEAT n:=n+t; t:=t+1; UNTIL t>100; 其中 (1)REPEAT和UNTIL是PASCAL保留关键字。 (2)在REPEAT和UNTIL之间的语句构成循环。在它们之间可以有任意多个语句,这一点和FOR,WHILE循环不同,FOR,WHILE循环体在语法上只允许一条语句。 REPEAT-UNTIL循环的执行功能 (1)遇到REPEAT语句后,即进入循环体,顺序执行循环体内的语句。 (2)遇到UNTIL语句后,求布尔表达式的值。若值为假,则返回步骤1;若为"真",执行步骤3 (3)循环结束,执行UNTIL后面的下一条语句。 三、For循环 FOR语句构成的循环有递增和递减循环两种形式: 1.递增型FOR循环 FOR 循环控制变量:=循环初值 TO 循环终值 DO 循环的语句(或语段) 例: FOR I:=5 TO 10 DO WRITELN (I); 输出的结果为: 5 6 7 8 9 10 即循环一共执行了6次 如果要重复多个语句,一定要用BEGIN-END形式: 例: FOR I:=1 TO 10 DO BEGIN WRITELN (I); WRITELN (10-I); END; 2.递减型FOR循环 FOR 循环控制变量:=循环初值 DOWNTO 循环终值 DO 循环语句 递减型FOR循环与递增型FOR循环基本相同,只是循环控制变量每次递减。 3.FOR循环的几点注意内容: (1)循环控制变量必须是顺序类型的变量。所谓顺序类型的变量,就是指整型,字符型,枚举型,子界型,不允许是实型。 (2)不允许在循环体内再对循环控制变量赋值。 例如: A:=10;B:=50; FOR K:=A TO B DO BEGIN K:=K+1;{这一句不应该出现,如果有循环步长不为1的情况,可改用while或repeat循环} WRITELN (K); END; 四、多重循环 多重循环 循环体由PASCAL语句构成,当然也可以包含FOR语句,这就构成了循环的嵌套,形成多重循环。 例如,以下FOR循环输出5行,每行输出10个星号(*) FOR i:=1 to 5 DO BEGIN FOR j:=1 TO 10 DO Write('*'); END; 初学者应当特别注意,内层的循环变量不能和外层的循环变量相同。也就是说,嵌套的各层循环应当使用不同的变量作为循环变量。
|