FREE-PASCAL入门-循环结构程序(DOC)
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)
第四章循环程序设计内容提要本章介绍了循环结构程序设计的思路,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入门(二)第四章、循环结构程序设计一、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
例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)
四、字符串函数
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)
保留字(关键字):有特殊含义,专门用途的英文单词,不能用于 其它场合(共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
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……
③ 循环条件的递增 (递减)需要人工设置
③ 循环条件的递增 (递减)需要人工设置
_Pascal语言基础知识 循环
Readln(a,b,c) 读入边长
流 程 图
求p
求s
输出面积s
程序从第一句开始,依次 var 顺序执行语句直到结束, a,b,c:integer; 中间无分支和循环,这种 程序结构称为顺序结构 p,s:real; begin readln(a,b,c); p:=(a+b+c)/2; s:=sqrt(p*(p-a)*(p-b)*(p-c)); writeln(s:0:2); end.
• • • • • • • • • • • • • •
【例7】:将例题6的程序用repeat语句改写。 program ex7(input,output); var ch:char; i:integer; begin i:=0; repeat read(ch); if (ch=’a’) or (ch=’A’) then i:=i+1; until ch=’#’; writeln(‘i=’,i) end.
【例4】:输入两个数(均不为零)及一个算术运算符,输 出其运算的结果 程序代码: program ex3(input,output); var x,y,s:real; ch:char; begin writeln(‘input x & y & ch:’); readln(x,y); readln(ch); case ch of ‘+’:s:=x+y; ‘-‘:s:=x-y; ‘*’:s:=x*y; ‘/’:s:=x/y end; writeln(x,ch,y,’=’,s) end.
• • • • • •+3+4+· · · +100之和。 算法分析: 对于求和,我们使用的是累加的办法。 程序代码: program ex1(input,output); var i,sum:integer; begin sum:=0; for i:=1 to 100 do sum:=sum+I; writeln(‘sum=’,sum) end. 补充说明:类似sum迭加变量这样的功能称为“累 加器”;类似i这样的变量称为“计数器”;“计 数器”和“累加器”是在程序中经常使用的基本操 作语句。
pascal循环结构程序
课堂作业二:看程序写结果
(1)program lx_5; var I,x,t:integer; begin t:=0; for I:=1 to 3 do begin read(x); t:=t+x; writeln(‘x=’,x, ‘t=’,t) end end.
绝对值函数ABS(X)
1、绝对值是指去掉正负号的数值,故绝对值 函数ABS(X)就是把自变量X的值去掉符 号。
2、例:ABS(-119)=119 ABS(119)=119
3、绝对值函数的自变量可以是整数或实数, 其相对应的函数的值也是整数或实数。
平方函数SQR(X)和平方根函数SQRT(X)
1、平方即指某个数自己乘以自己。 即SQR(X)=X*X=X2
某市一路公共汽车共有8站从起点发车每到一站先从车上下来一半乘客然后再上来两位乘客到终点前车上还有乘客站从起点发车每到一站先从车上下来一半乘客然后再上来两位乘客到终点前车上还有乘客5人问在起点站发车时车上有多少人
循环结构程序
信息学奥林匹克培训讲座(四)
PASCAL基础知识——函数
函数就是指一种运算。 格式为函数名+(+自变量+) 其中自变量可以是数、字符、变量或表达式。函 数的值为经过某种形式的计算得出的结果。
指求X的后面一个值。 5、例:succ(-119)=-118 succ(119)=120
succ(‘x’)=‘y’ succ(‘R’)=pred(‘S’)
pred(false)=true 6、后继函数的自变量可以是整数、字符或布尔量, 其相对应的函数值也是整数、字符或布尔量。
奇函数ODD(X)
1、奇数指除不2尽的数。奇函数ODD(X) 指X为奇数时,函数的值为真,当X为偶数 时,函数的值为假。
FREE PASCAL 教程
Free Pascal教程目录第一章简单程序 (2)第一节Pascal程序结构和基本语句 (2)第二节顺序结构程序与基本数据类型 (6)第二章分支程序 (9)第一节条件语句与复合语句 (9)第二节情况语句与算术标准函数 (10)第三章循环程序 (14)第一节for循环 (14)第二节repeat循环 (20)第三节While循环 (24)第四章函数与过程 (29)第一节函数 (29)第二节自定义过程 (31)第五章Pascal的自定义数据类型 (36)第一节数组与子界类型 (36)第二节二维数组与枚举类型 (43)第三节集合类型 (51)第四节记录类型和文件类型 (55)第五节指针类型与动态数据结构 (61)第六章程序设计与基本算法 (66)第一节递推与递归算法 (66)第二节回溯算法 (72)第七章数据结构及其应用 (78)第一节线性表 (78)第二节队列 (81)第三节栈 (84)第四节数组 (88)第八章搜索 (91)第一节深度优先搜索 (91)第二节广度优先搜索 (101)第九章其他常用知识和算法 (105)第一节图论及其基本算法 (105)第二节动态规划 (112)第一章简单程序无论做任何事情,都要有一定的方式方法与处理步骤。
计算机程序设计比日常生活中的事务处理更具有严谨性、规范性、可行性。
为了使计算机有效地解决某些问题,须将处理步骤编排好,用计算机语言组成“序列”,让计算机自动识别并执行这个用计算机语言组成的“序列”,完成预定的任务。
将处理问题的步骤编排好,用计算机语言组成序列,也就是常说的编写程序。
在Pascal语言中,执行每条语句都是由计算机完成相应的操作。
编写Pascal程序,是利用Pascal语句的功能来实现和达到预定的处理要求。
“千里之行,始于足下”,我们从简单程序学起,逐步了解和掌握怎样编写程序。
第一节Pascal程序结构和基本语句在未系统学习Pascal语言之前,暂且绕过那些繁琐的语法规则细节,通过下面的简单例题,可以速成掌握Pascal程序的基本组成和基本语句的用法,让初学者直接模仿学习编简单程序。
Free Pascal资料
第一章 Pascal程序的组成一、Pascal程序组成例1:计算半径为R的圆面积S。
program Area; {程序首部}const pi=3.14159; {说明部分——常量说明}var s,r:real; {说明部分----变量说明}begin {执行部分}readln(r);s:=pi*sqr(r);writeln('s=',s);end.上述程序第一行称为程序首部。
其中用花括号(注释可以用{ }或(**)来表示)括起来的内容是注释,注释除了给人看,增加程序的可读性外,对程序编译和运行不起作用。
一个程序可以包含多个出现在不同处注释,亦可无注释。
程序第二行是常量说明,程序第三行是变量说明。
程序从begin到end都是执行(语句)部分。
(1)程序首部例1.1的第一行称为程序首部。
program是保留字,接着是程序名(由你依据“标识符”规则自行定义),最后以分号表示程序首部结束,下面是程序主体的开始。
程序首部在一个Pascal(仅在 Pascal中有效)程序中并非必须出现,它是可选的。
写上它仅起了文档作用。
因此,在时间有限的情况下,编程时完全可以省略程序首部。
(2)程序体a.说明部分说明部分用于定义和说明程序中用到的数据,由单元说明、标号说明、常量说明、类型说明、变量说明、函数或过程说明组成,并且这些数据的说明次序必须按照以上次序。
但是一个简单的 Pascal程序也可以不包含说明部分,即说明部分是可选的。
b.执行部分执行部分描述了程序要执行的操作。
它必须以一个 Pascal保留字begin开始,以保留字end后跟句点结束,其间是一些执行具体操作的语句,并且以分号作为语句之间的分隔符。
begin 和end必须成对出现,紧跟end之后的句号表示执行部分的结束,也表示整个程序的结束。
此后的任何语句都无效。
Pascal规定紧随end之前语句出现的分号允许省略。
(3)一个完全的Pascal程序结构program 程序名;uses 已知单元说明;label 标号说明;const 常量说明;type 类型说明;var 变量说明;function 函数说明;procedure 过程说明;begin语句1;……语句nend.(4)Pascal程序特点A.有穷性B.有0个或者N个输入C.有1个或者N个输出D.二、Pascal字符与符号1.保留字(关键字)所谓保留字是指在Pascal语言中具有特定的含义,你必须了解它的含义,以便于正确的使用,否则会造成错误。
free_pascal_教程
程序框架:一个完全的PASCAL程序结构框架如下:PROGRAM程序名(程序参数表); CONST常量声明;TYPE类型声明;VAR变量声明;FUNCTION函数名(参数表):函数类型;函数声明;PROCEDURE过程名(参数表);过程声明;BEGIN程序主体;END.变量定义:一、变量定义方法VAR变量名1:变量类型1;变量名2:变量类型2;变量名3,变量名4:变量类型3;二、变量命名规则1、首字符必须是英文2、只能由英文、数字和下划线组成。
三、变量类型常用的几个变量类型如下表:输入输出语句:一、输出语句格式Writeln(项目1,项目2,……,项目n); {输出内容后换行}Write(项目1,项目2 ,……,项目n); {输出内容后不换行}二、输入语句格式Read(变量1,变量2,……,变量n); {从键盘输入n个数据,以空格格开}Readln(变量1,变量2 ,……,变量n);{从键盘输入n个数据,以空格格开,读完后换行} 三、赋值语句用法变量名:=表达式; {把右边表达式的值计算出来,结果赋给左边的变量}举例:a:=3;a:=a+1;s:=(a+b)*(c+d);一、装配文件assign(input,’文件路径’); {文件路径一般为相对路径,相对程序的工作目录} reset(input);assign(output,’文件路径’);rewrite(output);二、输入输出方法read(x);write(x);三、关闭文件close(input);close(output); {输出文件必须关闭,否则可能不能正确保存}共四级(同一级优先级相同,按照从左到右的顺序执行)一、单目运算符:(最高优先级)@取变量或函数的地址(返回一个指针)not逻辑取反或按位取反二、乘除及按位运算符*相乘或集合交集/浮点相除div整数相除mod取模 (整数相除的余数)as程序运行阶段类型转换 (RTTI运算符)and逻辑或按位求和shl按位左移shr按位右移三、加减运算符+相加、集合并集、字符串连接或指针增加一个偏移量-相减、集合差集或指针减少一个偏移量or逻辑或按位或运算xor逻辑或按位异或运算四、关系及比较运算符(最低优先级)=判断是否相等<>判断是否不相等<判断是否小于>判断是否大于<=判断是否小于或等于,或是否是一个集合的子集>=判断是否大于或等于,或是否是一个集合的父集in判断是否是集合成员is判断对象是否类型兼容 (又一个RTTI运算符)一、顺序结构的程序按照书写顺序依次执行begin语句1;语句2;end;二、实例输入两个整数x,y,计算x,y的差并输出。
freePascal教程
PASCAL语言程序设计在上一册教材中,我们已经初步了解了P ASCAL语言的三种基本结构、程序设计的基本思想和方法。
本单元是在上册内容的基础上进一步深入学习P ASCAL语言的数组、子程序、字符串处理等基础知识。
随着学习的深入,程序设计的题目类型越来越广泛,难度也越来越大,程序设计者不能“完全”把求解的任务推给计算机,而应对题目作较充分的分析,用较优的算法去求解,因此在计算机上编程解题是一项极好的实践活动,它可以训练观察能力、逻辑思维能力、形式化描述问题能力、规划能力、动手动脑分析问题和解决问题的能力。
第一课循环结构的程序设计在程序设计中,经常处理一些需要重复执行某些操作的问题,这就需要循环结构程序设计,循环结构是程序设计的三种基本结构之一,循环结构是指当某个条件满足时反复执行某些语句,否则不执行。
利用循环结构,使得我们能用少而精的程序编码,来完成大量的重复计算。
在Pascal语言中,实现循环程序设计的主要语句有For语句(计数循环)、While语句(当型循环)、Repeat语句(直到型循环)。
上册教材已经介绍了For语句,本节课介绍While语句、Repeat 语句及多重循环结构。
一、W hile语句结构For循环语句适用于已知次数的循环结构,而在实际的问题中,有时我们并不能确切知道循环要执行多少次,我们判断是否结束循环的依据是某个条件是否满足,比如“当……时就做……”,或者是“一直做到……时为止”,这种循环我们称之为条件循环。
在Pascal中条件循环语句有两种,分别是While循环语句和Repeat循环语句。
下面分别介绍这两种语句的使用方法。
While语句用于“当满足某一条件时进行循环”的情况,因此它也被称为“当型循环”。
While 语句的语法格式如下:While <布尔表达式> do <循环体语句>;While循环语句的执行流程如图1-1-1所示。
图1-1-1 While循环语句执行流程While语句使用说明:(1)当布尔表达为true则执行循环体,若为false,则根本不进入循环体;(2)如果一开始布尔表达式的值就为假时,While循环就会一次循环体都不执行;(3)相反的,如果布尔表达式永远是真的,那么循环就无法结束,从而成为“死循环”,为了避免这种情况的发生,在循环体中就一定要有能改变布尔表达式结果的操作;(4)循环体中的语句一般情况下是多条语句,必须使用begin和end将它们括起来形成一条复合语句。
freePascal教程
第四单元 PASCAL语言程序设计在上一册教材中,我们已经初步了解了P ASCAL语言的三种基本结构、程序设计的基本思想和方法。
本单元是在上册内容的基础上进一步深入学习P ASCAL语言的数组、子程序、字符串处理等基础知识。
随着学习的深入,程序设计的题目类型越来越广泛,难度也越来越大,程序设计者不能“完全”把求解的任务推给计算机,而应对题目作较充分的分析,用较优的算法去求解,因此在计算机上编程解题是一项极好的实践活动,它可以训练观察能力、逻辑思维能力、形式化描述问题能力、规划能力、动手动脑分析问题和解决问题的能力。
第一课循环结构的程序设计在程序设计中,经常处理一些需要重复执行某些操作的问题,这就需要循环结构程序设计,循环结构是程序设计的三种基本结构之一,循环结构是指当某个条件满足时反复执行某些语句,否则不执行。
利用循环结构,使得我们能用少而精的程序编码,来完成大量的重复计算。
在Pascal语言中,实现循环程序设计的主要语句有For语句(计数循环)、While语句(当型循环)、Repeat语句(直到型循环)。
上册教材已经介绍了For语句,本节课介绍While语句、Repeat 语句及多重循环结构。
一、W hile语句结构For循环语句适用于已知次数的循环结构,而在实际的问题中,有时我们并不能确切知道循环要执行多少次,我们判断是否结束循环的依据是某个条件是否满足,比如“当……时就做……”,或者是“一直做到……时为止”,这种循环我们称之为条件循环。
在Pascal中条件循环语句有两种,分别是While循环语句和Repeat循环语句。
下面分别介绍这两种语句的使用方法。
While语句用于“当满足某一条件时进行循环”的情况,因此它也被称为“当型循环”。
While 语句的语法格式如下:While <布尔表达式> do <循环体语句>;While循环语句的执行流程如图1-1-1所示。
图1-1-1 While循环语句执行流程While语句使用说明:(1)当布尔表达为true则执行循环体,若为false,则根本不进入循环体;(2)如果一开始布尔表达式的值就为假时,While循环就会一次循环体都不执行;(3)相反的,如果布尔表达式永远是真的,那么循环就无法结束,从而成为“死循环”,为了避免这种情况的发生,在循环体中就一定要有能改变布尔表达式结果的操作;(4)循环体中的语句一般情况下是多条语句,必须使用begin和end将它们括起来形成一条复合语句。
free pascal
PASCAL程序的结构初步认识例1-1:输入半径求圆的周长和面积?program circle(input,output);constPi=3.14;varr,L,s:real;beginwrite('r=');readln(r);L:=2*pi*r;s:=pi*r*r;writeln('R=',r:8:2,' L=',L:8:2,' S=',s:8:2);end .集成环境、编辑程序、保存程序1.请确定Turbo.exe文件所在磁盘目录。
假如它是放在F:盘的TP7文件夹(又称子目录)中。
2.把您要保存程序文件的盘设为当前盘,并保存文件于当前盘的当前目录中。
假如您的程序文件要存在H:盘的当前目录,则在DOS方式提示符“>”后输入下面命令。
> h:←┘3.调入并执行Turbo.exe,进入Turbo Pascal集成环境。
> f:\tp7\turbo.exe←┘4.在程序编辑窗口中,输入例1-1程序。
注意一个编辑窗口只能编辑一个程序文件。
常用的编辑键有:← ↑ → ↓ :光标移动键。
Delete :删除光标所在字符。
←┘ :回车键,用于换行或在光标处插入一行之用。
5.程序编辑完后,按F10 键,执行主菜单[File]中的[Save]项目菜单保存程序到磁盘中,并试用“yz1-1.PAS”作为例1-1程序存盘文件名。
运行程序、观察运行结果、跟踪调试程序1.按F10 键,执行主菜单[ RUN ]中的[Run]项目菜单,运行程序,然后在提示后输入一个调试用的半径值:r= 10←┘2.按F10 键,执行主菜单[Debug]中的[ output ]项目菜单,打开输出窗口观察到结果如下:R= 10.00 L= 62.80 S= 314.00如果有错,请找出错误并修改它,重复第1步,再执行直到有正确输出结果。
3.重复第1步,再次运行程序,输入另一个园的半径值5,观察输出结果是否也正确,从而确定该程序能否正确解决不同半径的园的周长和面积的求解问题。
信息学奥赛课件 pascal4循环结构
当值为假时,终止循环
➢ 注意: 为了能使while循环正常终止, 循环体中必须能使布尔表达式 的值为假;否则将出现死循环。
《PASCAL程序设计》第4课 — 循环结构
例3:输入若干个字符,终止符是#,计算字母A和a出现的次数
【算法分析】
直到型循环( repeat语句)
➢ 格式: repeat 循环体
until 布尔表达式;
➢ 执行过程: 先执行一次循环体,再判断布尔表达式的值。 若为假,继续循环,直到为真时退出循环
➢ 特点: 先执行后判断,至少执行1次 循环体若包含多条语句,不需要begin..end复合
《PASCAL程序设计》第4课 — 循环结构
【思考】 s=2+4+6+…+100; s=12+22+32+…+1002; s=1-1/2+1/3-1/4…+1/99-1/100;
《PASCAL程序设计》第4课 — 循环结构
例2:编程找出四位整数abcd中满足下述关系的数
(ab+cd)*(ab+cd)=abcd 【算法分析】
四位整数的范围是1000-9999,但所求的数具体是什么,无 法确定,只有在这个范围内逐一搜索,输出符合条件的数。 显然,这可以使用for循环 难点:分离四位整数的高两位与低两位?
【程序如下】
program p2; var i,gw,dw,s:integer;
begin for i:=1000 to 9999 do begin gw:=i div 100; dw:=i mod 100; s:=(gw+dw)*(gw+dw); if s=i then writeln(‘符合条件的数:’,i); end;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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个数中挑选出最大的数。