PASCAL语言简介_第1页
PASCAL语言简介_第2页
PASCAL语言简介_第3页
PASCAL语言简介_第4页
PASCAL语言简介_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第一个程序Pascal语言的编译器有很多,我们这里以Dev-Pascal为主要编程工具。 该软件界面如下:e Dev- Pascal 1 .9d日Bi皀£厲01.点击 New source file 按钮新建一源?©tL3 编译并运1仙 0® tici舄u_Ix-uj ufl i<jolAMy DocLim |program程序莒部”程序名戟简筆说明、begin程序开始的掠恵、write Helio, World' J :燃寡上煽出堂引导下的再容、reetdln;等铸操作老按一次回车、end.f程净结束的标志、Line?.1 Unit1 Messag

2、e5门Ljntitl*1.paiLHint: unil A can't be Sfinat lirked, swrtching to static linking cannot open oirtput file c docume"1 admiii" 1 invdocu"1',5;1< 1-unlitn.oasWarnrq- Eitor vjhile bnkri口11Ml21V2.输入代码并保存,保存路径不得有中文字符Jpile log I我们输入如下代码后编译运行。12345P rogram my_p rogram; beginwrite(

3、'Hello,World'); readln;end.程序首部,程序名或简单说明 程序开始的标志屏幕上输出单引号下的内容 等待操作者按一次回车程序结束的标志如果没有输入错误的话,计算机应能在黑色背景上显示“Hello,World ”。12345例:计算a+b的值。P rogram circle;vara,b,x:integer; 定义变量 begina:=100;678910b:=50;x:=a+b;write ln ('a+b=',x); readln;end.输出并换行Pascal字符与符号1 .标识符(1)标识符的定义:标识符就是以字母开头的字母数字序列,

4、有效长度为 大小写等效。可以用来标示常量、变量、程序、函数等。(2)标识符的分类:a.保留字(关键字)所谓保留字是指在 Pascal语言中具有特定的含义,你必须了解它的含义, 用,否则会造成错误。下面是Pascal语言的保留字:63个字符,并且以便于正确的使AND ARRAY BEGIN CASE CONST DIV DODOWNTOELSE END FILE FOR FUNTION GOTO IFINLABEL MOD NIL NOT OF OR P ACKEDPROCEDUREP ROGRAM RECORD REP EAT SET THEN TOTYPEUNTIL VAR WHILE WI

5、THb.标准标识符:指 PascaI语言预先定义的标识符,具有特殊含义。以下列举了 Turbo Pascal语言部分常用的标准表识符:标准常量FalseMaxi ntTrue标准类型Boolea nCharRealIn teger标准函数AbsArcta nChrCosEofEol nExpLnOddOrdPredRou ndSinSqrSqrtSuccTru nc标准过程Disp oseGetNewPackPagePutReadReadlnResetRewriteUnp ackWriteWriteln标准文件Inp utOut putPascal数据类型P ascal提供了丰富的数据类型,

6、据类型。在这里主要介绍整型、实型、字符型和布尔型四种常用的数1.整型Pascal支持五种预定义整型,它们是shortint (短整型)、integer一个整型数据用来存放整数。(整型)、longint (长整型)、byte (字节型)和 word (字类型)。每一种类型相应的整数取值 范围以及所占用的内存字节数见下表:类型数值范围占字节数 I格式ShorIi nt-128-1281 1带符号8位In teger-3276-327672带符号16位Lon gI nt-2147483648-21474836474带符号32位Byte0-2551带符号8位Word0-655352带符号16位Pasc

7、al规定了两个预定义整型常量标识符maxint和maxlongint,他们各表示确定的常数值,maxi nt 为 32767 , lo ngi nt 为 2147483647,他们的类型分别是in teger 和 longint2.实型一个实型数据用来存放实数。Pascal支持五种预定义实型,它们是single(单精度实型)、real(基本实型)、double (双精度实型)、extended (扩展实型)、comp (装配实型)。每一种类型相 应的实数取值范围、所占用的内存字节数以及它们所能达到的精度见下表:类型数值范围占字节数有效位数编译开关Si ngle1.5e-45-3.4e+3847

8、-8$N+Real2.9e-39-1.7e+38611-12Double5.0e-324- 1.7e+308815-16$N+Exte nded1.9e-4932-1.1E+49321019-20$N+Comp-263+1-2 63-1之间的整数819-20$N+$n+P rogram compu te;vara,b:integer;divide:Extended;beginwrite('Enter a,b=');ReadLn(a,b); divide:=a/b;writeln(a,7',b,'=',divide);readln;end.除real型外,

9、其它几种关数类型使用时必须要打开编译开关才可使用。 例如下面的程序:12345678910布尔型113.一个布尔型数据用来存放逻辑值(布尔值)。布尔型的值只有两个:false和true,并且false的序号是0,true的序号是1o false和true都是预定义常数标识符,分别表示逻辑假和逻辑真。并且truevfalse o boolean是布尔型的标识符。4.字符型字符型用Char作为标识符。字符型必须用单引号括起来,字母作为字符型时,大小写是不 等价的,并且字符型只允许单引号中有一个字符,否则就是字符串。常量和变量1.常量:它的语法格式是:con st常量标识符 =常量; 例如:cons

10、tcoun ter:i nteger=0; flag:boolea n=true; in dex:0.100=0;2.变量:它的语法格式是:var变量标识符列表 : 类型; 例如:vara,b,c:i nteger;m, n: real;标准函数1. 算术函数例:abs(-4)=4abs(-7.49)=7.49arcta n(0)=0.0sin(pi )=0.0cos( pi )=-1.0frac(-3.71)=-0.71in t(-3.71)=-3.0sqr(4)=16sqrt(4)=22. 标准函数函数标识符自变量类型意义结果类型odd整型判断奇数布尔型pred离散类型求前趋同自变量suc

11、c离散类型求后继同自变量函数标识符自变量类型意义结果类型abs整型、实型绝对值同自变量arcta n整型、实型反正切实型cos整型、实型余弦实型exp整型、实型指数实型frac整型、实型小数部分实型int整型、实型整数部分实型ln整型、实型自然对数实型pi无自变量圆周率实型sin整型、实型正弦实型sqr整型、实型平方同自变量sqrt整型、实型平方根实型3.转换函数函数标识符自变量类型意义结果类型chrbyte自变量对应的字符字符型ord离散类型自变量对 应的序号Ion gi ntrou nd实型四舍五入Ion gi nttrunc实型截断取整Ion gi nt例:chr(66)='B&

12、#39;ord('A')=65 round(-4.3)=-5trunc(2.88)=24.杂类函数函数标识符自变量类型意义结果类型ran dom无自变量0,1 间的随机实数realran domword0,自变量间的随机整数)wordran domize无自变量初始化内部随机数产生器Ion gi ntupcase字符型使小与央文字母变为大与字符型dow ncase字符型使小与央文字母变为大与字符型例:odd(1000)=falseodd(3)=truepred(2000)=1999P red('x')='wsucc(2000)=2001succ('

13、;x')='y'运算符和表达式.算术运算符运算符运算运算对象结果类型+加整型、实型-减整型、实型乘整型、实型/除整型、实型div整除整型整型mod取余整型整型逻辑运算符运算符运算运算对象结果类型not逻辑非布尔型布尔型and逻辑与布尔型布尔型or逻辑或布尔型布尔型xor逻辑异或布尔型布尔型.关系运算符运算符运算运算对象结果类型=等于简单类型布尔型<>不等于简单类型布尔型<小于简单类型布尔型>大于简单类型布尔型<=小于等于简单类型布尔型>=大于等于简单类型布尔型优先级运算符优先级not1(高)*,/,div,mod,a nd2xor,+

14、,-,or3in ,= <>,>=<=<>4(低)表达式数学表达式PASCAL表达式注意2a2*a*号不能省略a七a/b除号的写法a Mba<>b不等号的写法a <ba<=b小于等于号的写法输入输出语句1输出语句:数据类型标准场宽实例输出结果整型实际整数长度Writel n(-1)Writel n( 34)-134实型17Writel n(-11.22)Writel n(123456)科学计数法布尔型4或5Writel n( 3>5)Writel n(true)FalseTrue字符型1Writeln( a'A字符串型串

15、长Writeln( abcd232)Abcd232自定义场宽:例如:设置整型时:Writel n( i:6,ch:5);设置实型数据时:Writel n( r:10:4);2.输入语句: 例如:Read(a,b,c);Readl n( a,b,c);In注意:如果输入语句中有ln则给程序中变量输入完数据后,清空键盘缓冲区,没有则输入后不清空键盘缓冲区。Pascal语句结构IF语句IF语句的一般格式是:IF条件THEN语句1条件为真时的响应、处理 ELSE语句2; 条件为假时的响应、处理 使用条件语句时要注意:1、条件语句是一个语句。IF、THEN、ELSE都是语句的一个部分。所以它只能有 一个

16、;”作为分隔符,放在句子的结束,特别要注意不能放在ELSE之前。如果我们的程序只需对条件为真的情况作出处理,不需要处理条件为假的情况,begin ,end括起嵌套部分;则IF语句省略ELSE分句,格式变成: if语句可以多层嵌套。嵌套时为了避免误解,可以用 else分句一般和最近的if分句配套:IF条件BEGINif条件ENDELSETHEN1 thenelseBEGINif条件End;2 thenelse例:输入两个数 a,b,输出较大的数。123456789101112p rogram tt;Vara,b:i nteger;Begi nwrite(' pl ease input a

17、,b:'); readln( a,b);if a>b the n write ln(a) else writel n( b);en d.语句CASE分情况语句适用于对一个条件的多种情况的响应。格式:case表达式标号1:语句标号2:语句标号n:语句else 语句 n+1end;of1;2;n;例如:12345678910111213141516p rogram tt;Varx,y:i nteger;Begi nRead In (x);Case x of1:y:=10;2:y:=14;Else y:=45;En d;Writel n(y); en d.Rep eat 语句:该语句执

18、行过程是:(1) 首先顺序执行循环体;(2) 然后判断条件表达式的值,若为假,则返回(1 )重新执行,若为真,则结束循环。从键盘输入非零数,计算其积,输入0结束,并输出结果。例如:12345678910111213141516p rogram compute; vars,x:real;begins:=1; x:=1;rep eat s:=s*x; readl n( x);un til x=0;write ln( 's=',s); read In;end.While-do 语句:该语句执行过程是:当语句先判断后执行。条件表达式为假的时候,退出循环,为真时继续循环。 循环do后面的

19、一条语句。一般 do后面为复合语句。在循环体内要有改变条件表达式值的语句即改变循环变量的语句。 义。将出现死循环或一次也不运行。1-100之间的偶数和:1.2.3.4.否则循环没有意例如求12345678910111213141516P rogram compute;vars,i:i nteger;begins:=0; i:=2;while i<=100 dobegins:=s+i;i:=i+2;en d;write ln( 's=',s); readl n;en d.与rep eat的不同点是:while先判断后执行。 while条件为假的时候结束循环,为真循环。whi

20、le循环体只能为一条语句。While1. Re peat先执行后判断;2. Rep eat条件为真时结束循环,为假循环;3. Rep eat循环体可以由多条语句组成,For语句 递增型:12345FOR I:=1 TO 10 DOBEGINWRITELN (I);WRITELN (10-I);END;递减型:12345FOR I:=10 dow nto 1 DOBEGINWRITELN (I);WRITELN (10-I);END;Continue 语句功能是将循环控制返回到条件判断处。Break语句功能是强制退出循环,返回到循环语句的下一语句。过程与函数函数参见下面的例子:Function

21、ba:i nteger;无参函数Function bb(var I,j:i nteger;k:real);Function bc(var i:i nteger;j:i nteger):Boolea n;函数返回值,是用一条赋值语句将结构赋给函数名。如下例中的第1234567891011121314Fun cti on abc(N:i nteger):real; VarI:i nteger;s:real;Beg inS:=1;For i:=1 to 100 doS:=s*l;F:=s;END;Beg inM:=5;Writel n(f(m);此句调用函数 fEnd.过程参见下面的例子:Proce

22、dure aa; 无参过程P rocedure ab(var l,j:i nteger;k:real);F面是一个调用过程的例子:12345678910111213141516p rogram comp ute; varm:i nteger;procedure draw1(n:integer);/ 定义了一个过程 vari:i nteger;beginfor i:=1 to n dowrite('*');writel n;end;/过程结束begindraw1(5);/调用过程 readl n;end.17参数传递运行下面的程序:123456789101112131415161

23、718192021p rogram local_global; var x,y:i nteger;procedure p(var i:integer;j:integer);/i 为变量参数,j 为值参数Begi nwrite In (i:2,j:2);i:=2*i;j:=3*j;write In (i:2,j:2);en d;Begi n x:=1;y:=1;p (x,y);writel n(x:2,y:2); readl n;end.运行结果是:1当使用变量参数时,变量参数将获得实际参数的地址,操作变量参数即是操作实际参 数。可以理解为两把钥匙开同一个房间。当使用值参数时,值参数的改变不改变

24、实际参数的值。在编写程序时,我们有时需要将过程和函数中的值传递给主程序,对于过程有两种方式:第一种方式是利用全局变量,第二种是利用变量参数传递。对于函数不仅可以利用上述方式, 还可以利用函数值传递。全局变量和局部变量在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。全局变量作用域是整个程序;局部变量作用域是定义该变量的子程序。当全局变量与局部变量同名时:在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。例:全局变量和局部变量的使用。123456p rogram local_global; var i,k:i nteger;pro cedure sub1;

25、789101112131415161718192021222324252627Vari,j:i nteger;Begi ni:=17;writeln('i in sub=',i); write In ('k in sub=',k); end;Begi ni:=2;k:=9;write In ('i in mai n-,i);writel n( 'k in sub=',k);sub1;write In ('i in mai n-,i);writeln('j in main=',j);/ 此句要删除 readl n;e

26、nd.上述程序运行时将出现Unknown Identfier ;因为变量j在主程序中没定义。当删除本语句时。运行结果如下:i in mai n = 2 k in mai n = 9i in sub = 17k in sub = 9i in mai n = 2程序的递归F面的程序是用递归的方法逆序输出字母。12345678910111213141516P rogram exam;pro cedure p;varch:char;Begi nread(ch);if ch<>'.' the n p; write(ch);en d;Begi n1718192021222324

27、252627P; readl n; en d.数组和字符串例:从键盘输入10个数,将这10个数逆序输入,并求这10个数的和,输岀这个和。p rogram p1;Var12a:array 1.10 of in teger;i,s:i nteger;Beg infor i:=1 to 10 do read(ai);for i:=10 dow nto 1 do write(ai,''); writel n;s:=0;34567891011for i:=1 to 10 do s:=s+ai; write ln ('s=',s);end.1213141516Pascal的

28、下标是从1开始的。定义一个20行3列的二维数组来存放这些成绩。定义一个20个元素的一维数组来存放平例:竞赛小组共有 20位同学,这学期每位同学共参与了三项比赛,请统计每位同学的平均分。 分析: 均分。P rogram p1;Var12a:array 1.20,1.3 of i nteger; b:array 1.20 of real;i,j:i nteger;Beg infor i:=1 to 20 do3456789Beg infor j:=1 to 3 do read(ai,j);readl n;end;从键盘上读入20个同学的三次竞赛成绩10111213141516for i:=1 to

29、 20 do bi:=0;先将平均分数组清for i:=1 to 20 do0Beg infor j:=1 to 3 do bi:=bi+ai,j;计算总分bi:=bi/3;计算平均分en d;for i:=1 to 20 do write(bi:5:1); 输岀平均分 writel n;end.字符串1.字符串用于存放整批的字符数据。通常编程中使用字符串存放字符化了的数字数据。运算时存放操作数和运算结果。字符串可以看作是特殊的字符串数组来处理。的特点。下面是字符串定义的格式:Var当然,如高精度 它也有自已s:stri ng; s1:stri ng15;字符串定义时,如不指定长度,则按该类型

30、的最大长度( 大可用长度为255个;如果在中括号中给岀一个具体的值( 分配空间。使用时,最大的可用长度即为该值。255个字符)1 255之间)分配空间,则按这个值的大小使用时最2. 字符串的输入、输岀:字符串类型既可按数组方式输入、输岀,也可直接输入、输岀:readln(s) ; writeln(s)多个字符串输入时以回车作为数据间的分隔符;每个readln语句只能读入一个字符串。3. 有关字符串的操作:操作类型作用返 回 值例子en gth(s)函 数求字符串s 的长度整型s:='123456789:l:= length(s);l 的值为 9copy (s,w,k)函 数复制s中从

31、w开始的k 位字 符 串s:='123456789:s1:= copy(s,3,5);s1 的值是'34567'val(s,k,code)过程将字符串s 转为数值, 存在k中; code是错误 代码var s:stri ng;k,code:i nteger; begin s:='1234'val(s,k,code) ; write(k);k=12345tr(i,s)过程将数值i转 为字符串si:=1234;str(i,s);write(s);s='1234'Delete(s,w,k)过程在s中删除 从第w位开 始的k个字s := '

32、;Hon est Abe Lincoln'Delete(s,8,4) ;Writel n(s); 'Ho nest Li ncol n' 符n sert(s1, S, w)过程将s1插到s中第W位S := 'Hon est Lincoln'In sert('Abe ', S, 8); 'Abe Li ncol n' Pos(c, S)函 数求字符c在 s中的位置整型S := ' 123.5'i := Pos(' ', S);i的值为1卜运算符将两个字符串连接起来s1:='1234&#

33、39;s2:='5678's:= s1+s2;'12345678'子界和枚举子界类型:当某些变量的取值范围很具体时,可用子界类型,它更符合实际、便于查错和节省内存。定义如下:ty pe riqi=1.31;zimu='A'.'Z:var day:riqi;ch1:zimu;也可以直接定义:day : 1.31; year:0.200; ch1:'A'.'Z:枚举类型:这些值的次序和枚举类型说明中通过预定义列出所有值的标识符来定义一个有序集合, 的标识符的次序是一致的。枚举类型的形式:(标识符1,,标识符n) 例如:

34、type dayst yp e=(s un day, mon day,tuesday,wed nesday,thursday,friday,saturday)枚举元素只能是标识符,而不能是数值常量或字符常量。例如以下的定义是错误的:type daysty pe=('su n','mo n','tue','wed','thu','fri','sat')枚举元素是标识符,不要把作为枚举元素的标识符视作变量名,它不能被赋值。同一个枚举元素不能出现在两个或两个以上的枚举类型定义中。例如以下的

35、定义是错误的:type dayt yp e1=( mon day,tuesday);dayt yp e2=( mon day,wed nesday);可以将枚举类型的定义和变量的定义结合在一起。例如:var a:(mo nday,tuesday,su nday)枚举类型属于顺序类型。根据定义类型时各枚举元素的排列顺序确定它们的序列,序列号从0开始。例如:已经定义 dayst ypeord(s un day)=0,succ(s un day)=mon day ,p red(friday)=Thursday但是枚举类型中的第一个元素没有前趋,最后一个元素没有后继。P ascal不允许直接读写枚举值

36、,所以枚举值的输出常用case语句间接的输出。枚举值的输入,则要一一判断读入字符是否是枚举类型的标识符。若是才能赋给枚举变量,否则就会出错。 例如:枚举值的输出case day ofsun day:write('s un day'); mon day:write('m on day'); tuesday:write('tuesday');wed nesday:write('wed nesday'); thursday:write('thursday');friday:write('friday');

37、 saturday:write('saturday'); en d;集合类型1集合的定义:type类型名=set of基类型 例如:typenum=set of char;varn:num;或varn: set of char;2 .集合的表示:用一组方括号括号一组元素来表示,元素之间用逗号分隔。如: A,B,C,D有四个枚举量的集合 'A','B',C,D有四个字符的集合1.20包含了 1到20中所有整数的集合0只有一个元素 0的单元素集空集3 集合的运算:(1) 并(a+b):属于a或属于b0.7+0.4的值为0.7(2) 交(a*b):既属

38、于a又属于b0.7*0.4的值为0.4(3) 差(a-b):属于a但不属于b0.7-0.4的值为5.7相等(a=b):a,b的元素完全一样0.7=0.4的值为 false不等(<>):元素不一样0.7<>0.4的值为 true(6)包含于(<=):0.7<=0.4的值为 false包含(>=):0.7>=0.4的值为 true(8)成员(in):1 in 0.4的值为 true4 .注意事项:(1) 集合运算相当快,在程序中常用集合表达式来描述复杂的测试。如A) 条件表达式:(ch=T) or (ch='t') or (ch='Y') or (ch='y')可用集合表达式表示为:ch in T,'t','Y',yB) if (ch>=20) and (ch<=50) then .;可写成:if ch in 20.50 then .;(2) 集合类型是一种使用简便,节省内存面又运算速度快的数据类型。(3) Turbo Pascal规定集合的元素个数不超

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论