FREE-PASCAL入门-循环结构程序(DOC)

合集下载

Pascal基本教程(循环程序)

Pascal基本教程(循环程序)

Pascal基本教程循环程序for 语句for 语句用来描述已知重复次数的循环结构。

for 语句有两种形式:(1) for 控制变量:=初值to 终值do 语句;(2) for 控制变量:=初值downto 终值do 语句;第一种形式的for 语句是递增循环。

首先将初值赋给控制变量,接着判断控制变量的值是否小于或等于终值,若是,则执行循环体,在执行了循环体之后,自动将控制变量的值该为它的后继值,并重新判断是否小于或等于终值。

当控制变量的值大于终值时,退出for循环,执行for语句之后的语句。

第一种形式的for 语句是递减循环。

首先将初值赋给控制变量,接着判断控制变量的值是否大于或等于终值,若是,则执行循环体,在执行了循环体之后,自动将控制变量的值该为它的前趋值,并重新判断是否大于或等于终值。

当控制变量的值小于终值时,退出for循环,执行for语句之后的语句。

for 语句中的初值、终值、控制变量的数据都必须是顺序类型。

当初值和终值确定后,重复的次数就确定不变了,并且控制变量在重复语句内不能施加任何赋值操作。

例1:计算1+2+3+……+99+100program jia;var i,sum:integer;beginsum:=0;for i:=1 to 100 dosum:=sum+i;writeln(sum);readln;end.练习:试打印出1~20的自然数。

解:①用a代表1~20各数,同时也用a兼作计数,以控制循环次数;②让a从1开始;③输出a;④a自动计数(加1),如果未超越所规定的循环范围则重复步骤③,否则结束循环。

练习:试打印出1~20的自然数。

Program Exam12;Var a:integer ;Beginfor a:=1 to 20 doWriteln (a);ReadlnEnd.例2:打印出30至60的偶数。

方法一:①设a表示30至60的所有的数,可用for循环列出;②用式子 a mod 2=0筛选出其中的偶数并输出。

Pascal入门教程 (3)

Pascal入门教程 (3)

第四章循环程序设计内容提要本章介绍了循环结构程序设计的思路,FOR,WHILE,REPEAT...UNTIL三种循环语句的用法和一些常见算法。

学习要求在本章的学习中,要理解循环程序设计的思路,弄清循环的流程,对FOR循环,WHILE循环,REPEAT三种循环语句能熟练运用,能用多重循环解决实际问题。

在编程中,经常遇到这种问题:对于某个操作要执行许多次,而每次操作都是重复的动作。

在这种情况下,我们便希望计算机能自动完成这些重复的动作。

这就是循环设计的基本思路。

第一节FOR循环我们现在要打印一千个“*”。

这分明是一个重复的动作:把打印一个“*”的动作重复一千次就可以了。

我们只需写出一个打印一个“*”的WRITE语句,然后将该语句执行一千次。

每执行一个WRITE(“*”)语句,程序便统计一次,直到一千。

那么,谁来统计这个数呢?这就是FOR语句。

它的基本格式如下:FOR 循环变量:=初值 TO 终值 DO(循环体)在这个语句中,初值和终值可以取整型,字符型,枚举型,子界型。

循环变量首先被赋予初值,再和终值比较,如小于等于终值就执行下面的循环体,再把循环变量中的值变成它的后继值(如:1的后继值为2,3的后继值为4,“A”的后继值为“B”,“x”的后继值为“y”),又和终值进行比较,如小于等于终值,又执行下面的循环体,直到大于终值为止......后面是它的流程图。

那么,打印一千个“*”的程序可以这样写:例1PROGRAM e1(input,output);VAR i :integer;BEGINfor i:=1 to 1000 dowrite(‘*’);END.在设计FOR语句时有这样一些规则:(1)循环变量的类型一定要与初值和终值的类型一致。

(2)循环变量的初值和终值可以是常量,变量或表达式。

(3)循环体可以不止一个语句,如有多个语句,则用BEGIN 和END语句构成复合句。

(4)如果初值大于终值,则本循环不执行。

循环结构

循环结构

[作业] 1、下列程序段是计算_______ 公式的。 S:=0; t:=1; for i:=1 to 10 do Begin t:=t*I; s:=s+t end; (A) s=1+2+3+4+…+10 (B) s=1*2*3*4*…*10 (C)s=1!+2!+3!+…+10! (D) s=1+2*3+3*4+4*5+…+9*10 注:N!表示1*2*3*…*N ,如3!=1*2*3 本题的循环体不止一句,是一个复合语句,用begin 和 end 圈起来了。 2、var x1,x2,I,x:integer; 该题采用列表法,将变量的值分步写出来。 begin x1:=3; i x x2 x1 x2:=8; 0 8 3 for i:=1 to 5 do 1 begin x:=(x1+x2)*2; 2 x1:=x2; x2:=x; 3 end; 4 writeln(‘x=’,x); 5 end. 运行结果:

[例2]求1+2+3+4+……+N的 和小于等于10000的最小的N。
程序如下: var n,s:integer; begin n:=0; s:=0; while s<10000 do begin n:=n+1; s:=s+n; end; writeln(‘N=’,n) end.
[注意]其中的 n和s必须在循环 语句之前赋初值。
[例1]体育彩票。体育彩票的号码由7位数字组成,现 用电脑帮你编一程序产生随机数。
重复7次,可以使用循环语句来实现。 Var a, I :integer; Begin randomize; {启动程序的随机数开关} For i:=1 to 7 do Begin a:=random(10); {a取一个小于10的整数,但不取负数,可以取0} write (a); end; end.

Pascal入门简介:第二课 Pascal入门(二)

Pascal入门简介:第二课 Pascal入门(二)

Pascal入门简介:第二课Pascal入门(二)第四章、循环结构程序设计一、FOR语句格式:1、FOR <循环变量>:=<初值> TO <终值> DO <语句>;2、FOR<循环变量>:=<终值> DOWNTO <初值> DO <语句>。

[例1]:输入10个数,求最大值、最小值、和、及平均值。

PROGRAM ten(input,output);VAR a,s,max,min,avg:real;i:integer;BEGINwrite('please input:');read(a);s:=a;max:=a;min:=a;FOR i:=2 TO 10 DOBEGINread(a);s:=s+a;IF a>maxTHEN max:=aELSE IF a<条件> DO <循环体>[例2]:求s=1!+2!+3!+ (10)PROGRAM sum_fac(input,output);VAR i,j,s,m:integer;BEGINs:=0:for j:=1 to 10 dobegin m:=1;for j:=1 to i do m:=m*j;s:=s+m;end;write(……);END.二、while语句格式:WHILE <条件> DO <循环体>[例1]:输入一串字符串,求第一个“,”前的大小写字母个数和其它字符个数。

program string(input,output);varch:char;c,s,o:integer;beginwrite(……);read(ch);c:=0;s:=0;o:=0;while ch<>',' dobeginif (ch>='A')and(ch<='Z') then c:=c+1else if (ch>='a')and(ch<='z') then s:=s+1else o:=o+1;read(ch);end;write(……);end.三、REPEAT语句格式:REPEAT <循环体> UNTIL [例]:以字符(char)的形式读入一实数,以实形(re al)输出该数。

第7讲 循环结构应用(pascal程序语言基础)——信息学课件PPT

第7讲 循环结构应用(pascal程序语言基础)——信息学课件PPT

例2: 求100—999中的水仙花数(若三位数 满足
ABC=A3+B3+C3)则称此数为水仙花数
输出:153 370 371 407
例3:用循环语句编程,输出下面图形
*************** 15颗 ************* *********** ********* ******* ***** *** * 八行
2006/9/1
循环结构应用
本讲主要内容: 例题讲解
pascal中的三种循环结构语句
① for <循环控制变量>:= <初值表达式> to <终值表达式> do 语句;
②while <布尔表达式> do <语句>
③repeat <语句>
until <布尔表达式>
三种循环结构语句各有各的特点:
for语句:循环次数确定,形式简单、直观。 while语句:循环次数不确定;先判断,后执行循环体。 repeat语句:循环次数不确定,先执行循环体,后判断
i<=9
T
j:=1
F
下一个语句
F
j<=9
T
输出i*j的值
j:=j+1 writeln; i:=i+1
j=1 j=2 i=1 j=3 j=……………… j=1
j=2 i=2 j=3
j=………… i=…… …………
1*1=1 1*2=2 1*3=3 1*………… 2*1=2 2*2=4 2*3=6 2*………… …………
例4:用循环语句编程,输出下面图形
输入n的值来控制图象的规模
@ @@@ @@@@@ ………………

freepascal函数大全(DOC)

freepascal函数大全(DOC)
7、SHL: x SHL n把x换成二进制后向左移n位,相当于 把x乘以2n
四、字符串函数
1.字符串连接运算concat(s1,s2,s3…sn)相当于s1+s2+s3+…+sn.
例:concat(‘11O,OaaO)=O11aaO;
2.求子串。Copy(s,l,L)从字符串s中截取第I个字符开始后的长度为l的子串。
int(x)求x的整数部分 例int(5.6)=5.0结果是real型
frac (x)求x的小数部分 例frac(5.6)=0.6
pred(x)求x的前导pred(‘b')='a' pred(5)=4 pred(true)=false
succ(x)求x的后继succ(‘b')='c' succ(5)=6 succ(false)=true
0
3.SQRT(X)求X的平方根
SQRT(16)=4, SQRT(49)=7 SQRT(81)=9 SQRT(100)=10SQRT(0)=0
4.PRED(X)求X的前趋值
PRED(6)=5 PRED(‘D')='C'PRED(9)=8 PRED(‘r')='q'PRED(FALSE)=TRUE假真
2009-10-31 21:14
pascal标准函数
一、变量改变:
1、inc(i)使用后I:=I+1; Inc(I,b)使用后I:=I+b;
2、Dec(i);使用后I:=I-1;dec(I,b)使用后I:=I-b;
3、求x的绝对值Abs(x)例:abs(-3)=3
二、数学计算方面:
1、求x的平方Sqr(x)例:sqr(4)=16

free pascal 语言入门(1)

free pascal 语言入门(1)

保留字(关键字):有特殊含义,专门用途的英文单词,不能用于 其它场合(共36个,教材P13)
程序,函数,过程的符号
program,function,procedure
说明部分专用定义符号
array, const, file, label, packed, var, record, set, type, of
以字母或下划线开头的字母,数字,下划线的序列 分为两类
标准标识符
标准常量:false,true,maxint 标准类型:integer,real,char,boolean,text 标准文件:input,output 标准函数:abs, cos, odd, ord, sin, sqr, succ, trunc 等等 标准过程:get,read,readln,write,writeln
自定义标识符
由用户在程序首部或说明部分进行定义 自定义标识符时注意点
不能与保留字名字相同 避免与标准标识符同名 有一定的含义,增加程序的可读性(见名知义) 在定义标识符时可以用的字符: _(下划线) A—Z;a—z;(26个字母) 0—9;(10个数字) 必须以下划线或字母开头 可以用 定义

自 定 义 标 识 符 注
例题分析
program p1; var a,b,max:integer; begin a:=3; b:=4; max:=a; if b>max then max:=b; writeln('max=',max); end.
写出下列标识符、保留字的中文含义: Begin ______ end ______ writeln ______ integer______ Div ______ mod ______ var______ readln________ 判断以下标识符的合法性

第6讲 循环结构程序设计(pascal程序语言基础)——信息学课件PPT

第6讲 循环结构程序设计(pascal程序语言基础)——信息学课件PPT

i:=1
F
i<=100
T
sum:=sum+i
i<=100
F T
sum:=sum+i; i:=i+1;
i:=i+1
Writeln(^^);
i:=1 Sum:=0
sum:=sum+i; i:=i+1;
F
i>100
T
Writeln(^^);
Writeln(^^);
求100以内所有自然数的和(三种结构)
循环语句结构
i<=100
F
语句
T
Sum:=sum+i; i:=i+1内所有奇数的和(while循环)
while循环的特点:
① 先判断后执行 ② 循环变量的递增(递减)在“语句”中自行控制
用repeat-until语句实现循环结构 repeat:重复; until:直到;
repeat-until语句的格式:
repeat <语句>
until <布尔表达式>
含义:重复执行<语句>,直到<布尔表达式>为true为止
例:求100以内所有自然数的和(repeat-until语句)
program test2; var I,sum:integer; begin
i:=1; sum:=0; repeat
write(i:3);
end; writeln(‘tesing the
program’); end.
1 2 3 5……10testing…… 1 2 3testing……
③ 循环条件的递增 (递减)需要人工设置
③ 循环条件的递增 (递减)需要人工设置
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

循环结构程序设计第1节 For循环程序实例【问题描述】计算一副扑克牌的点数,其中牌A为1点,牌J、Q、K分别为11、12、13点,大、小王不算点。

【问题分析】根据题意,要计算一副扑克牌的点数,可以先求出一种花色牌的点数和,再乘以4即可。

进一步分析,求一种花色牌的点数和,即是求1~13的连续自然数之和。

我们用S表示所求数的和,用T表示加数,这样可以让T从1变化到13,每次让T不断加入到S中,就可以求出S的值,最后乘以4即可。

【算法设计】◆自然语言①置初值,即S=0,T=1;②使S=S+T ,所求出的和仍放入S中;③使T增加1,即T=T+1;④如果T小于等于13,转第二步,否则转第五步;⑤输出计算结果。

◆程序流程图和结构化流程(N-S)图【程序设计】[程序清单]program ex3_1;vars,t:integer;begins:=0; {S置初值为0}for t:=1 to 13 do {For循环语句}s:=s+t;writeln(‘total:’,s*4);end.[运行示例]total:364【知识拓展】1.在程序处理过程中,经常需要对某一条或一组语句重复执行多次,以最终完成某项任务,这就是循环。

对于重复次数已知,而不依赖循环中语句的结果,常用计数循环(f or / to /do 语句)。

2.for循环语句格式:格式一:for 控制变量:= 初值to 终值do循环体语句;格式二:for 控制变量:= 初值downto 终值do循环体语句;其中for、to、downto、do为保留字,do后面的语句称为循环体。

其中循环控制变量可以是整型、字符或布尔型,但不能为实型。

一般地,可以是顺序类型数据。

初值、终值表达式通常要与控制变量的类型相同。

在for语句中如果使用的是to,称为递增型计数循环语句,如果使用的是downto,称为递减型计数循环语句。

3.For语句的执行过程:①先将初值表达式的值计算出来并赋给循环控制变量。

②判断循环控制变量的值是否已“超过”终值(对于递增型循环来说,“超过”是指“大于”;对递减型循环来说,“超过”是指“小于”)。

如已超过,则跳到步骤⑥。

③如果未超过终值,则执行do后面的语句(称为循环体)。

④循环变量递增(或递减)。

⑤返回执行步骤②。

⑥循环结束,执行for循环下面的一个语句4.使用For语句的的注意事项:①循环控制变量必须为顺序类型。

例如,可以是整型、字符型、布尔型,不能为实型,如:for i=3.5 to 8.5 do write(i)是错误的。

②循环控制变量的值递增或递减的规律是:若是递增型循环,则按Succ函数规律变化;若是递减型循环,则按Pred函数规律变化。

例如:for k:=’a’to ’z’do write(k)将按顺序打印出26个小写英文字母“abcd…z”。

③循环体可以是一条基本语句,也可以是一条复合语句。

例如:for j:=1 to n dobeginreadln(x);wreteln(x+1)end;循环语句的范围直到end才结束。

④循环控制变量不得在循环体内再被赋值。

例如:for x;=1 to 10 dobeginx:=2*z+1;end;是错误的。

⑤循环控制变量的初值和终值一经确定,循环次数就确定不变了。

循环的次数可用如下公式计算:0 若初值〉终值递增型循环的循环次数=Ord(终值)-Ord(初值)+1 若初值≤终值0 若初值〈终值递减型循环的循环次数=Ord(初值)-(终值)+1 若初值≥终值【同步练习】1.宰相的麦子:相传古印度宰相达依尔,是国际象棋的发明者。

有一次,国王因为他的贡献要奖励他,问他想要什么。

达依尔说:“只要在国际象棋棋盘上(共64格)摆上这么些麦子就行了:第一格一粒,第二格两粒,……,后面一格的麦子总是前一格麦子数的两倍,摆满整个棋盘,我就感恩不尽了。

”国王一想,这还不容易。

于是令人扛来一袋麦子,可很快用完了,又扛来一袋,很快用完了……国王很奇怪,请你帮国王计算一下,要多少麦子。

(1立方米的麦子约为1.42×108粒)问题分析:对于编程类问题的描述,要特别注意正确、全面地理解题意,要学会从描述性语言中抽象出具体的数据,并建立数学模型。

在本题中根据“国际象棋棋盘上共有64格,第一格一粒,第二格两粒,……,后面一格的麦子总是前一格麦子数的两倍”的题意,我们可以建立数学模型:第一格为20,第二格为21,第三格为22,……第64格为263,设64格中应放麦子数为S,则可用下面的公式表示:S= 20+21+22+23+……+2631立方米的麦子约为1.42×108粒,那么S粒麦子的体积T为:T=S/(1.42×108)立方米。

这样我们将问题转化为一般数学模型,再根据数学模型写出算法设计,再写出具体程序就水道渠成。

[程序清单]program p3_1_2(input,output);varn,s,t:integerbegins:=0;for n:=0 to 63 dos: =s+2^n;t:=s/(1.42*10^8)writeln(‘s=’,s,)writeln(‘t=’,t );end.[运行示例]S=1.84467441E+19T=1.29906648E+112.阅读下面的程序,说明该程序的作用。

[程序清单]program p3_1_3(input,output);var a,b,c:integer {此处integer表示整型数据}begingwriteln(´请任意输入一个数:´);readln(b);for c:=1 to 5 dobeginread(a);if a>b then b:=a;end;writeln(‘最后的值是:‘´,b:5);end.[运行示例]请任意输入一个数:6↙4↙ 7↙ 13↙ 8↙ 11↙最后的值是:13第2节当循环程序实例【问题描述】农场主的预算报告放暑假学校组织夏令营来到一个农场,农场主热情的接待了他们。

在参观时,同学们发现在农场的左上角圈出了一块地方,这儿阳光充足,通风也不错,但却什么也没有,觉得很奇怪。

农场主告诉大家因为农场四周由许多小朋友因没钱交学费而缀学,所以决定引进品种不错的雌雄一对小白兔,在这饲养。

小白兔需经过一个月才能长大,长大后每个月都生雌雄一对小白兔。

想等小白兔繁殖到1000对的时候,在分发给周围贫困的人,希望能帮助他们重新进入课堂。

现正在写一份预算报告,其中预计所需时间却却没算出来。

同学们现在就让我们来帮助这位好心的农场主算出时间。

【问题分析】这问题从表面来看好象没有什么规律,不妨设计一张表格来推算一下。

因为第一个月小白兔没长大,所以兔子数是1对。

到了第二个月小白兔长大了,生了一对小白兔,兔子数是2对。

第三个月小白兔也长大了,大白兔是2对,它们都生了一对小白兔,兔子数是4对……。

依此类推,发现除了第一个月,其它都是:前一个月的兔子数× 2 = 本月兔子数。

我们发现这又是一个循环,直到兔子数为1000对的时候结束。

可是用for语句显然不行,因为我们不知道循环的次数。

下面我们用当型循环(while/do语句)来编写程序。

农场主的预算可以描述如下:月份:=1;兔子数:=1; { 预定义第一个月的兔子数是1对}while 兔子数<1000 do{当兔子数小于1000对时进入循环}begin月份:=月份+1;兔子数:=兔子数*2;end;【程序设计】[程序清单]program p4-1(input,output);varmonth, rabbit: integer;beginmonth:= 1;rabbit:= 1;while rabbit<1000 dobeginmonth:=month + 1;rabbit:= rabit * 2;end;writeln(‘The months is :’,month);end.【知识拓展】1.while循环语句当型循环(while语句)是这样描述循环的:当指定条件成立时,重复执行指定的语句。

格式:while 布尔表达式 do 语句;例如:k:=10;WHILE k>0 DOBEGINWriteln (k);k:=k-1END;其中(1)WHIlE 和DO是PASCAL保留关键字,是WHILE循环语句的组成部分。

(2)保留关键字DO后面的“语法”只能是一条语句,称为“循环体”;如果循环体中需要包含多个语句则应该如上例所示,采用一条复合语句。

2.WHILE循环的执行功能当执行到WHILE语句时(1)求出布尔表达式的值(2)若布尔表达式的值为真,则执行循环体内的语句;若为“假”,执行步骤4(3)重复步骤1和2(4)循环结束,执行循环后面的语句。

3.本例While循环的结构化流程图如下:【同步练习】1.周末小明遇到一个有趣的题目:找出四位整数abcd中满足下述关系的数:( ab + cd )( ab + cd )= abcd请你帮小明编写一个程序,找出满足条件的所有的数。

问题分析:这道题属于搜索问题,因为是四位整数,不难看出范围是从1000~9999,所求的数究竟在哪里,无法确定,只有在这个范围内从小到大一个一个进行搜索,对每一个数看它的高两位数与低两位数和的平方是否与该数相等。

ab和cd 两个数可以在abcd中将高两位与低两位分离开来。

我们可以这样考虑,将abcd整除100,可得到高两位ab。

如:abcd=1234 ,1234 div 100 = 12。

有了ab,也就可用下面的式子把低两位cd分离出来:abcd -ab ×100 = abcd -ab00 = cd如:1234 -12 ×100 = 1234 -1200 = 34同学们仔细想想,在求解的过程中,条件都是一样的,只是abcd这个数不同。

实际上是在反复做同一个步骤。

下面我们用当型循环来解这道题。

[程序清单]Program xuhuan(input,output);Var i,m,n,k:integer;BeginI:=1000;{给I赋值,即abcd假设一个数;}While I<=9999 do {判断I(即abcd)的值是否超出范围,;如果超过则不执行循环 Begin 体中的语句,结束循环;}M:=I div 100; {分离出ab和cd两个数,如果符合条件,就写出来;}N:=I - m*100;K:=(m+n)*(m+n);If k=I thenWriteln(‘符合条件的四位整数是:’,I);I:=I+1 { I的值加1;}End;End.[运行示例]符合条件的四位整数是:2025符合条件的四位整数是:3025符合条件的四位整数是:98012.从n个数中挑选出最大的数。

相关文档
最新文档