信息学初级教程(4)

2019-01-19 17:21

第九章

一、知识点拨

重复结构 for语句

前面所计的两个语句都是在未知循环次数的情况下而用的循环语句,但在程序中,如果我们已经知道循环的次数而来编程序的话,就可以使用FOR循环语句,这也是PASCAL及其它高级语言中用得最多的语句。其语法格式有两种,如下:

(1) 增量为1:

for 变量名:=初值 to 终值 do begin 语句序列(循环体); end;

(2) 增量为-1:

for 变量名:=初值 downto 终值 do begin 语句序列(循环体); end;

变量名的类型由程序头部中定义,而其初值、终值必须和它是同一类型。该变量的类型是能是有序数据类型。

上述两种格式都是用变量的初值与终值来规定循环的次数。如以下两个小程序: Var I:integer; Var I:integer; Begin Begin For I:=1 to 5 do begin For I:=5 downto 1 do begin Write(I); Write(I); End; End; End. End. 运行结果: 运行结果: 12345 54321 由上可以看出FOR循环的作用。 [例5、5]:从键盘输入一个字符串,把它按正序及逆序分别输出: var s:string; l,I:integer; begin

readln(s); l:=length(s);

for I:=1 to l do begin write(s[I]); end;

writeln;

for I:=l downto 1 do begin

15

write(s[I]); end; end.

[例5、6]计算12?22?......?102

var s,a:integer; begin s:=0;

for a:=1 to 10 do begin s:=s+a*a; end;

writeln(s); end.

[例5、7]:计算:1+3+5+7+??101的值: var m,n:integer; begin

m:=0;

for n:=0 to 50 do begin m:=m+(2*n+1); end;

writeln(m); end.

请大家注意上述程序中的几个小技巧,一个是FOR N:=0 TO 50,共循环51次;一个是M:=M+(2*N+1),其是的2*N+1得到的是一序列的奇数。

二、竞赛练习

用for语句做以下练习 1+3+5+…..+…..99=? 01.pas

1+1/2+1/3+1/4+……1/100=? 02.pas

1*2+2*3+3*4+……+n*(n+1)=? 03.pas

1+1/2!+1/3!+…..1/n!+/04.pas

求水仙花数。所谓水仙花数,是指一个三位数abc,如果满足a^3+b^3+c^3=abc,则abc是水仙花数。05.pas

输入一整数A,判断它是否质数。(提示:若从2到A的平方根的范围内,没有一个数能整除A,则A是质数。)06.pas 1+(1+3)+(1+3+5)+。。。。。。。(1+3+5+。。。。。。。+n)=?n为奇数07.pas

s=-1+3-5+7-9+。。。。。。。n n为奇数08.pas

16

第十章

一、知识点拨

重复结构 repeat语句

直到循环语句的语法格式是: repeat

语句序列;(循环体) until 布尔表达式;

其作用是:重复执行语句序列(循环体),直到布尔表达式的值为TRUE为止。即,当执行完一次语句序列后,布尔表达式的值已经为TRUE了,这时循环将不会再被执行,而转向执行UNTIL语句以下的语句。

例:计算M=1+2+3+4+??,直到M的值大于5050为止。[例:5、1] var m,I:integer; begin m:=0; I:=0; Repeat I:=I+1; M:=m+I; Until m>5050; Writeln(I,? ?,m); End.

在上述程序中,我们使用了PASCAL中的两个作用强大的概念:累加和循环。 累加:我们在上述程序中没定了两个累加器:I,M。累加器初值我们在第一句中设定了为0,之后每次运行一次I:=I+1后,I的值就比原来大1。每运行一次M:=M+I后,M的值就被M+I所替代。

循环:这里我们使用的是直到循环,即重复执行循环体中的两个语句,直到M>5050这个条件满足为止(即这个布尔表达式的值为TRUE为止)。

上述程序运行后,会在输出屏幕上显示两个值:101 5151。即当I的值为101时,这时所算得的M的值为5151。亦即,1+2+3+??101=5151。

象上述这种X=1+2+3+??这种加法,我们就把它叫累加,这里的X就是累加器,一般初值为0。

而N=1*2*3*4*5*6*??这种乘法我们把它叫累乘,这里N就是累乘器,一般初值为1(为什么?)。

一般的:1*2*3*??N,我们把这个式子的结果叫做N的阶乘(N!)。如:4!=1*2*3*4。

例:计算8![例5、2] var I:integer; x:longint; begin

17

I:=0; X:=1; Repeat I:=I+1; X:=x*I; Until I=8; Writeln(x); End.

当程序开始时,I的初值被定为0,X的初值被定为1(累乘器)。然而开始进入循环,每次I的值比原来增加1,然后再乘进X中去,直到I等于8时,最后一次把I乘进X后,这时I=8这个条件已经满足(I=20的值已经为TRUE),所以循环就被退出,而程序转向执行UBTIL以后的语句:WRITELN(X);。 请大家想一想,为什么X要定义为LONGINT型。

二、竞赛练习

用repeat循环做以下习题。

计算1—1000之间能同时被3和5整除的整数的和。01.pas

求所有的三位数中十位数能被个位数和百位数之和整除的数。02.pas 求水仙花数。所谓水仙花数,是指一个三位数abc,如果满足a^3+b^3+c^3=abc,则abc是水仙花数。03.pas

求所有满足条件的四位数: (1)这四位数是11的倍数; (2)b+c=a; 04.pas 计算下列式子的值:

(1)1+3+……+9905.pas

(2)1+2+4+8+…+102406.pas

输入一个整数,计算它各位上数字的和。(注意:是任意位的整数)07.pas 输入一整数A,判断它是否质数。(提示:若从2到A的平方根的范围内,没有一个数能整除A,则A是质数。)08.pas

18

第十一章

一、知识点拨

重复结构 while语句

当语句的语法格式是: while 布尔表达式 do begin 语句序列;(循环体) end;

其作用是,当布尔表达式的值为TRUE时,才会运行语句序列(循环体),否则循环将不会被执行,即从循环头部就退出,而转向执行END后的语句。

例:计算8! var I:integer; x:longint; begin I:=0; X:=1;

While I<8 do begin I:=I+1; X:=x*I; End;

Writeln(x); End.

请大家把此程序与上一节的进行比较,看两种循环在运用时有何不同。

REPEAT WHILE

19

循环体 布尔表达式 false 布尔表达式 false true 循环体 true


信息学初级教程(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:宁波市紧固件重点企业名录

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: