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

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

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

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

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

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

第四章第3节循环结构的程序设计 For循环 在实际应用中,会经常遇到许多有规律性的重复运算,这就需要掌握本章所介绍的循环结构程序设计。在Pascal语言中,循环结构程序通常由三种的循环语句来实现。它们分别为FOR循环、当循环和直到循环。通常将一组重复执行的语句称为循环体,而控制重复执行或终止执行由重复终止条件决定。因此,重复语句是由循环体及重复终止条件两部分组成。一、计数循环(for/to/do)语句的一般格式 for<控制变量>:=<表达式1>to<表达式2>do<语句>;for<控制变量>:=<表达式1>downto<表达式2>do<语句>;其中for、to、downto和do是Pascal保留字。表达式1与表达式2的值也称为初值和终值。 二、For语句执行过程 ①先将初值赋给左边的变量(称为循环控制变量);②判断循环控制变量的值是否已"超过"终值,如已超过,则跳到步骤⑥;③如果末超过终值,则执行do后面的那个语句(称为循环体);④循环变量递增(对to)或递减(对downto)1;⑤返回步骤②;⑥循环结束,执行for循环下面的一个语句。 三、说明 ①循环控制变量必须是顺序类型,初值和终值可以是常量、变量、表达式,且与控制变量类型一致。例如,可以是整型、布尔型、字符型等,但不能为实型。②循环控制变量的值递增或递减的规律是:选用to则为递增;选用downto则递减。③所谓循环控制变量的值"超过"终值,对递增型循环,"超过"指大于,对递减型循环,"超过"指小于。④循环体可以是一个基本语句,也可以是一个复合语句。⑤循环控制变量的初值和终值一经确定,循环次数就确定了。但是在循环体内对循环变量的值进行修改,常常会使得循环提前结束或进入死环。建议不要在循环体中随意修改控制变量的值。⑥初值与终值在开始重复之前计算,在重复执行过程中,其值不受影响;若初值“超过”终值,不执行循环,循环的次数为0。 ⑦循环次数等于│终值-初值│+1或│ord(初值)-ord(终值)│+1。 四、应用举例 例1.计算1+2+3+…+100的值。分析:我们用累加方法,初值为1,终值为100,循环100次每次将循环控制变量i的值迭加加入一个变量S中,循环结束后此变量中就为所求值。程序如下: programp4_22; vari,s:integer;begin s:=0;fori:=1to100dos=s+i; writeln(s);end. 思考:s=2+4+6+…+100 S=1+1/2+1/3+1/4+…+1/100 S=12+22+32+…+1002 例2.输入一个自然数x,求这个自然数的所有约数之和S。分析:解决这一问题关键是找出所有约数,即x能被y整除,则有xmody=0,然后从1至x进行循环判定。程序如下:programp4_23; varx,y,s:integer;beginwrite('Enterx=');readln(x);s:=0;fory:=1toxdoifxmody=0thens:=s+y;writeln(‘x=’,x,‘s=’,s);end. 例3编程找出四位整数abcd中满足下述关系的数:(ab+cd)(ab+cd)=abcd Programp4_24; Var i,m,n,k:integer; begin fori:=1000to9999do begin m:=idiv100; n:=imod100; k:=(m+n)*(m+n); ifk=ithenwriteln(i) end; end. 以上方法叫“枚举法”,又称“穷举法”,它是计算机解题的一种常用方法。 WHILE循环 一、WHILE循环 对于for循环有时也称为计数循环,当循环次数未知,只能根据某一条件来决定是否进行循环时,用while语句或repeat语句实现循环要更方便。while语句的形式为:while<布尔表达式>do<语句>;其意义为:当布尔表达式的值为true时,执行do后面的语句。二、while语句的执行过程为:①判断布尔表达式的值,如果其值为真,执行步骤2,否则执行步骤4;②执行循环体语句(do后面的语句);③返回步骤1;④结束循环,执行while的下一个语句。说明:这里while和do为保留字,while语句的特点是先判断,后执行。当布尔表达式成立时,重复执行do后面的语句(循环体)。 三、举例 例1、求恰好使s=1+1/2+1/3+…+1/n的值大于10时n的值。分析:"恰好使s的值大于10"意思是当表达式s的前n-1项的和小于或等于10,而加上了第n项后s的值大于10。从数学角度,我们很难计算这个n的值。故从第一项开始,当s的值小于或等于10时,就继续将下一项值累加起来。当s的值超过10时,最后一项的项数即为要求的n。程序如下:vars:real;