Pascal上机与函数【教程】
- 格式:doc
- 大小:56.00 KB
- 文档页数:6
Pascal基础教程目录第一课初识PASCAL语言 (1)第二课赋值语句与简单的输出语句 (5)第三课带格式的输出语句输入语句 (12)第四课简单的分支结构程序设计 (19)第五课if嵌套与case语句 (23)第六课for循环 (29)第七课while循环与repeat-until循环 (30)第八课一维数组 (35)第九课多维数组 (39)第十课字符数组与字符串 (45)第十一课枚举、子界、集合及记录类型 (51)第十二课过程与函数 (66)第十三课动态数据类型(指针类型) (76)第十四课文件 (89)附录一Pascal中的字符串函数和数学函数 (111)附录二关于fillchar的使用和讨论 (116)附录三程序的调试技巧 (117)附录四Pascal的多种退出语句用法 (123)第一课初识Pascal语言信息学奥林匹克竞赛是一项益智性的竞赛活动,核心是考查选手的智力和使用计算机解题的能力。
选手首先应针对竞赛中题目的要求构建数学模型,进而构造出计算机可以接受的算法,之后要写出高级语言程序,上机调试通过。
程序设计是信息学奥林匹克竞赛的基本功,在青少年朋友参与竞赛活动的第一步必须掌握一门高级语言及其程序设计方法。
一、Pascal语言概述PASCAL语言也是一种算法语言,它是瑞士苏黎世联邦工业大学的N.沃思(Niklaus Wirth)教授于1968年设计完成的,1971年正式发表。
1975年,对PASCAL语言进行了修改,作为"标准PASCAL语言"。
PASCAL语言是在ALGOL60的基础上发展而成的。
它是一种结构化的程序设计语言,可以用来编写应用程序。
它又是一种系统程序设计语言,可以用来编写顺序型的系统软件(如编译程序)。
它的功能强、编译程序简单,是70年代影响最大一种算法语言。
二、Pascal语言的特点从使用者的角度来看,PASCAL语言有以下几个主要的特点:⒈它是结构化的语言。
pascal函数百科名片PASCAL内自带的函数,通常可以直接调用,特殊的需要调用数据库,如:used math 目录一、数学函数二、字符串函数三、标准函数四、各单元的函数与过程一、数学函数二、字符串函数三、标准函数编辑本段一、数学函数inc(i) 使i:=i+1;inc(i,b) 使i:=i+b;dec(i) 使i:=i-1;dec(i,b) 使i:=i-b;abs(x) 求x的绝对值。
例:abs(-3)=3chr(x) 求编号x对应的字符。
例:chr(65)='A' chr(97)='a' chr(48)='0'ord(x) 求字符x对应的编号。
例:ord(…A')=65 ord(…a')=97 另外:ord(false)=0 ord(true)=1sqr(x) 求x的平方。
例:sqr(4)=16sqrt(x) 求x的正根。
例:sqrt(16)=4 (ps:负数是不能进行运算的,如果需要就要先取绝对值:sqrt(-4)是错的,应该为sqrt(abs(-4))round(x) 求x的四舍五入。
例:round(4.5)=5trunc(x) 求x的整数部分。
例:trunc(5.6)=5 结果是integer型int(x) 求x的整数部分。
例:int(5.6)=5.0 结果是real型frac (x) 求x的小数部分。
例:frac(5.6)=0.6pred(x) 求x的前导。
例:pred(…b')='a' pred(5)=4 pred(true)=fals esucc(x) 求x的后继。
例:succ(…b')='c' succ(5)=6 succ(false)=trueodd(x) 判断x是否为奇数。
如果是值为true,反之值为false。
例:odd(2)=false odd(5)=truepower(a,n) 求a的n次方。
南京信息工程大学滨江学信息工程系统工程方向1第一章简单程序2第一节Pascal程序结构和基本语句 (2)第二节顺序结构程序与基本数据类型 (6)第二章分支程序 (10)第一节条件语句与复合语句 (10)第二节情况语句与算术标准函数 (12)第三章循环程序 (16)第一节for循环 (16)第二节repeat循环 (22)第三节While循环 (27)第四章函数与过程 (32)第一节函数 (32)第二节自定义过程 (35)第五章Pascal的自定义数据类型 (40)第一节数组与子界类型 (40)第二节二维数组与枚举类型 (48)第三节集合类型 (56)第四节记录类型和文件类型 (60)第五节指针类型与动态数据结构 (67)第六章程序设计与基本算法 (73)第一节递推与递归算法 (73)第二节回溯算法 (80)第七章数据结构及其应用 (86)第一节线性表 (86)第二节队列 (90)第三节栈 (93)第四节数组 (97)第八章搜索 (100)第一节深度优先搜索 (100)第二节广度优先搜索 (111)第九章其他常用知识和算法 (115)第一节图论及其基本算法 (115)第二节动态规划 (122)第一章简单程序无论做任何事情,都要有一定的方式方法与处理步骤。
计算机程序设计比日常生活中的事务处理更具有严谨性、规范性、可行性。
为了使计算机有效地解决某些问题,须将处理步骤编排好,用计算机语言组成“序列”,让计算机自动识别并执行这个用计算机语言组成的“序列”,完成预定的任务。
将处理问题的步骤编排好,用计算机语言组成序列,也就是常说的编写程序。
在Pascal语言中,执行每条语句都是由计算机完成相应的操作。
编写Pascal 程序,是利用Pascal语句的功能来实现和达到预定的处理要求。
“千里之行,始于足下”,我们从简单程序学起,逐步了解和掌握怎样编写程序。
第一节Pascal程序结构和基本语句在未系统学习Pascal语言之前,暂且绕过那些繁琐的语法规则细节,通过下面的简单例题,可以速成掌握Pascal程序的基本组成和基本语句的用法,让初学者直接模仿学习编简单程序。
Pascal经典教程(1—3章)⽆论做任何事情,都要有⼀定的⽅式⽅法与处理步骤。
计算机程序设计⽐⽇常⽣活中的事务处理更具有严谨性、规范性、可⾏性。
为了使计算机有效地解决某些问题,须将处理步骤编排好,⽤计算机语⾔组成“序列”,让计算机⾃动识别并执⾏这个⽤计算机语⾔组成的“序列”,完成预定的任务。
将处理问题的步骤编排好,⽤计算机语⾔组成序列,也就是常说的编写程序。
在Pascal语⾔中,执⾏每条语句都是由计算机完成相应的操作。
编写Pascal程序,是利⽤Pascal语句的功能来实现和达到预定的处理要求。
“千⾥之⾏,始于⾜下”,我们从简单程序学起,逐步了解和掌握怎样编写程序。
程序结构和基本语句在未系统学习Pascal语⾔之前,暂且绕过那些繁琐的语法规则细节,通过下⾯的简单例题,可以速成掌握Pascal程序的基本组成和基本语句的⽤法,让初学者直接模仿学习编简单程序。
[例1.1]编程在屏幕上显⽰“Hello World!”。
Pascal程序:Program ex11;BeginWriteln(‘Hello World!’);ReadLn;End.这个简单样例程序,希望⼤家的程序设计学习能有⼀个良好的开端。
程序中的Writeln是⼀个输出语句,它能命令计算机在屏幕上输出相应的内容,⽽紧跟Writeln语句后是⼀对圆括号,其中⽤单引号引起的部分将被原原本本地显⽰出来。
[例1.2]已知⼀辆⾃⾏车的售价是300元,请编程计算a辆⾃⾏车的总价是多少?解:若总售价⽤m来表⽰,则这个问题可分为以下⼏步处理:①从键盘输⼊⾃⾏车的数⽬a;②⽤公式 m=300*a 计算总售价;③输出计算结果。
Pascal程序:Program Ex12; {程序⾸部}Var a,m : integer; {说明部分}Begin {语句部分}Write(‘a=’);ReadLn(a); {输⼊⾃⾏车数⽬}M := 300*a; {计算总售价}Writeln(‘M=’,m); {输出总售价}ReadLn; {等待输⼊回车键}End.此题程序结构完整,从中可看出⼀个Pascal 程序由三部分组成:(1)程序⾸部由保留字Program开头,后⾯跟⼀个程序名(如:Exl1);其格式为:Program 程序名;程序名由⽤户⾃⼰取,它的第⼀个字符必须是英⽂字母,其后的字符只能是字母或数字和下划线组成,程序名中不能出现运算符、标点符和空格。
Pascal 过程与函数Pascal中的例程有两种形式:过程和函数。
理论上说,过程是你要求计算机执行的操作,函数是能返回值的计算。
两者突出的不同点在于:函数能返回计算结果,即有一个返回值,而过程没有。
两种类型的例程都可以带多个给定类型的参数。
不过实际上函数和过程差别不大,因为你可以调用函数完成一系列操作,跳过其返回值(用可选的出错代码或类似的东西代替返回值);也可以通过过程的参数传递计算结果(这种参数称为引用,下一部分会讲到)。
下例定义了一个过程、两个函数,两个函数的语法略有不同,结果是完全相同的。
procedure Hello;beginShowMessage ('Hello world!');end;function Double (Value: Integer) : Integer;beginDouble := Value * 2;end;// or, as an alternativefunction Double2 (Value: Integer) : Integer;beginResult := Value * 2;end;流行的做法是用Result 给函数赋返回值,而不是用函数名,我认为这样的代码更易读。
一旦定义了这些例程,你就可以多次调用,其中调用过程可执行操作;调用函数能计算返回值。
如下:procedure TForm1.Button1Click (Sender: TObject);beginHello;end;procedure TForm1.Button2Click (Sender: TObject);varX, Y: Integer;beginX := Double (StrToInt (Edit1.Text));Y := Double (X);ShowMessage (IntToStr (Y));end;注意:现在不必考虑上面两个过程的语法,实际上它们是方法。
1、数学函数绝对值函数abs(x)截尾函数trunc(x)四舍五入函数round(x) 取小数函数frac(x) 求平方根函数sqrt(x)和平方函数sqr(x) 2、所有单元 system tp的运行库,包括常用的标准函数和过程,可以在程序中直接使用,不需uses语句说明。
dos 具有日期、时间、目录查找、程序执行等功能crt 具有屏幕模式控制、扩展键盘码、颜色、窗口、声音等功能printer 支持打印输出操作。
graph 高级图形软件包,支持多种图形适配器。
graph3 实现tp3.0的图形软件包。
turbo3 兼容tp3.0的源程序。
overlay 实现高级覆盖管理3、system单元system单元常用过程与函数abs(x) f 求变量的绝对值addr(x) f 测变量地址append(f) p 打开一个存在的文本文件,并将文件指针指向文件末尾准备添加元素arctan(x) f 反正切assign(f,c) p 将字符串c所表示的外部文件名赋给文件变量fassigned(x) p 测试程序当中的指针或变量是否为空blockread(f,d,num) p 读类型文件。
blockwrite(f,d,num) p 写无类型文件break p 中止或结束循环chdir(path) p 改变当前目录chr(x) f 求ascii码值为x的字符close(f) p 关闭文件concat(s1,s2...s3) f 字符串合并continue p 继续循环copy(s,pos,len) f 返回一个字符串的子串cos(x) f 余弦函数cseg f 返回cs寄存器的当前值dec(x) f x:=x-1delete(s,pos,len) p 删除一个字符串的子串dispose(p) p 释放一个动态变量dseg f 返回ds寄存器的当前值eof(f) f 判断文件是否结束eoln(f) f 判断文件类型中的一行是否结束erase(f) p 删除一个存在的外部文件。
1.2上机操作一、启动pascalD:\TP\F10或ALT+F,可使用键盘方式实现启动主功能菜单方式。
File/new:新建一个编辑窗口(打开名为Noname0.pas的新文件)注意:可同时打开多个窗口,但任意时刻只有一个窗口是处于活动状态(活动窗口的边框为双线,静止窗口的边框为单线),活动窗口指拥护当前正在其上工作的窗口。
当多个窗口时,可用alt+(1-9),其中“1-9”表示窗口编号,以数字号选择当前活动窗口。
关闭窗口,则可用alt+F3(关闭当前窗口)F2存盘Change Dir…修改当前文件操作路径。
CTRL+F9 运行程序,若中途需要终止程序运行的话,可:CTRL+C。
切换到输出屏幕:对于WIN98:ALT+F5对于WINXP:在程序结束前,加入Readln语句。
每一种程序设计语言都有自己规定的格式和词汇,词汇集由上述的保留字、标识符和特殊字符数组成的,当我们学习一种程序设计语言时,还应该注意,它的语法和语义,就如我们学习英语语法:表示语言的各种构成记号之间的组合规则。
语义:表示的含义。
1.3 pascal的程序组成例1、求半径为R的圆的面积和周长。
PROGRAM circle(input,output);CONSTpi=3.1415926;V ARr,s,l:integer;BEGINWrite(‘r=’);Readln(r);s:=2*pi*r*r;l:=2*pi*r;writeln(‘s=’,s);;‘;’writeln(‘l=’,l);END.上面的例子,就是一个完整的pascal 的程序。
一个“完整”的pascal程序应该有以下的部分组成):1、 程序首部PROGRAM circle(input,output);程序首部包括保留字PROGRAM 和用户自定义的程序名称(在这个例子中是c ircle )。
用“PROGRAM ”来标识“这是一个Pascal 程序”,任何一个Pascal 程序都必须以此字开头。
保留字:Pascal 规定了一批英文单词,赋予他们以特定的含义,有专门的用途,不能作为它用。
括号中的input,output 是标准的标识符标准的标识符:是预先给标准函数,标准过程、标准常量、标准类型,标准文件定义的标识符,即 Pascal 语言已确定了标准标识符的名称和性质,如标准输入文件.标准输出文件等,在书写程序中可直接使用,不必事先定义。
下面列出标准标识符的一部分:标准常量:false true 、maxint标准类型:integer real boolean char text标准文件:input output标准函数:abs chr odd ord pred qrt succ truce sin cos exp ln标准过程:read readln write writeln用户自定义的程序名称:circle ,是一个用户自定义标识符。
用户自定义标识符:是用户按标识符定义的规则自己定义的.常选用能说明某种意义的英文单词.用户标识符必须事先定义或说明才能在程序中使用它.用户自定义的标识符不能用保留字,最好也不要选用标准标识符.其实就是我们在之前所说的:由字母开头,由字母、数字和下划线构成的符号。
Pascal 语句之间也要分隔开,一般用分号‘;’分隔,—条语句可以分几行写,也可以一行写几条语句;2、 说明部分:Const pi=3.1415926; V ar r,s:real;l:real;说明部分有两个保留字:Const 和Var 。
Const 常量说明,由Const 开头到另一保留字(在例2中是从Const 到V ar 之间)之前的部分,表示为一个“常量说明区”。
在常量保留区内的将被定义为不变的量(在例2中pi 的值始终是3.1415926)。
V ar 变量说明,在变量说明区内的量表示为“变量”。
定义变量和定义常量不同,在定义的时候必须要说明是什么类型的变量(在这个例子里面,两个变量r 和s 被定义为实数real 型的变量),在程序的运行过程中将可以改变其内容,但内容的类型一定要和定义时的类型一致。
计算机处理的数据对象是一个广义的概念. 比如 125、12.76是数据,‘ni hao !’这一串字符也是数据。
前者是数值数据,后者是字符串数据、是非数值数据.为处理这些数据,计算机对它们施加的运算也不同.为此 Pasca 语言建立了数据类型的概念,对描述的数据进行分类.程序中所用到的每一个数据.包括常量和变量都有和它相联系的类型.由此决定了数据所具有的值,也决定了对该数据所能进行的操作。
常量说明区 ——————————————————— 变量说明区Pascal语言中数据具有丰富的类型.按它们的特点可以分为简单类型、构造类型、指针类型和过程类型四大类。
其中简单类型包括标准类型(实数类型、整数类型、字符类型、布尔类型、字符串类型)和用户自定义类型(枚举类型、子界类型)。
其中标准类型用语言系统预先定义的标准标识符表示;整数类型用Integer表示;实数类型用real表示;布尔类型用boolean表示;字符类型用char表示.整数型integer范围:-32768到32767实数型real根据不同的机器有不同的范围,通常用来表示非整数的值字符型char用单引号括起来的单个字符,例如‘a’‘A’‘1’布尔型Boolean用作判断逻辑的“真”和“假”,在Pascal程序中是true和false表示。
注意:常量的数据类型是由其取值决定的,不需要定义。
而变量除了要定义变量的名字外,还必须定义其变量的数据类型。
例如:pi是常量,由于它的值为3.1415926所以pi的数据类型是实型,而l和s,不管半径是什么值,由于r与pi相乘后,结果一定是实数,由此可判断变量l,s的数据类型应定义为实型。
3、程序主体BEGINWrite(‘r=’);Readln(r);s:=2*pi*r*r;l:=2*pi*r;writeln(‘s=’,s);writeln(‘l=’,l);END.这是一个非常简单的程序主体。
Begin和End都是保留字,程序主体以begin开始,以end结束(注意,end后面有一个句号,表示整个程序结束)。
Begin和end之间包含多个语句,在例2中包含了3个语句,每一个语句用分号“;”分隔(begin和end不是语句,只是作为程序主体的起止标志)。
readln(r);readln是标准的过程,作用是读入用户输入的一行数据,并把数据赋值到后面括号内的变量中(注意输入的数据的类型要和变量定义的类型相吻合)s:=pi*r*r;对应于圆面积的求解公式。
注意赋值的格式,被赋值的变量放在前面,赋值的符号是“:=”,赋值符号后面的是公式或变量。
writeln(‘s=’,s);writeln(‘l=’,l);writeln是一个标准的过程,作用是用于输出括号内的内容,内容包括字符串(用单引号括住)以及变量。
可以输出多项的字符串和变量,每一项之间用逗号分隔。
字符串会原样的输出。
变量则会把变量当前的内容输出。
pi*r*r 是一个表达式,它是描述计算机规则的一种算法结构,程序中所有运算都是在表达式中完成的。
它与数学中的表达式有很多相似之处。
表达式用来计算值,根据值的类型,表达式可分为:算术表达式(值是实数和整数)、布尔表达式(值是布尔型)、字符表达式(值是字符型或字符串型)和集合表达式(值是集合类型)算术表达式的定义:是有符合 pascal 的语法规则的数值型运算对象(包括数值型常量、变量、函数)、运算符、圆括号组成的有意义的式子。
例3中,(L/m+1)*p*m ;在程序中可看到还有一些运算符号等。
在pascal 中有6个基本运算符号:①. + (加)②. - (减)③. * (乘)④. / (实数除,得出的结果是实数)⑤. DIV (整除)MOD (求余数,如果a MOD b ,所得结果的符号与a 相同,其值的绝对值在0~|b|-1之间)基本运算符练习:1. 将数学上的式子转换成为pascal 的表达式1) 132+2) ⎪⎭⎫ ⎝⎛-⨯12123) 321652+-⎪⎭⎫ ⎝⎛2. DIV 和MOD 的计算1) 10 DIV 22) 10 DIV 33) 5 DIV 104) -15 DIV 45) 10 MOD 46) -17 MOD 47) -3 MOD 48) 4 MOD -39) -4 MOD 33. pascal 语言源程序结构由哪几部分组成?4.请模仿写出一个Pascal程序实现计算机梯形的面积,假设梯形的上底a=15,下底b=26,高h=12.5.叙述标识符的定义,指出下列用户自定、义的标识符是否合法?为什么?xyz,4ab,end,ab s,b(3),m+n,class,one6.下列数据是整数类型?那些是实数类型?那些是非法的?101,10.32, 1.67E+88,3E+0.6,0.7E3,345600,0.0075E-32,234.0001,E+127.下列符号那些表示字符?哪些表示字符串?那些不属于上述两种范围?‘book’, ’age’ , ’x’ , ’b’ , 12, ’312’ , the , ’### ### ‘ , ’8’ , ’_’ , pen , m , ‘3’8.下列那些是合法的常量定义:constbook=45;blank=’‘;ch:’name’;-x=31;m=7;n=n+12;f=false;y=8-x;v=60;9.下列变量说明哪些是不正确的?为什么?1)V ar 2) vara,b,c:integer; x1,x2,x3:integer;bookname,b,c:char; a,b,tel:character;x,y:real; m,n:bool;10.求出下列表达式的值(数值或逻辑值)1)13*6*8 div 3 2) 5/4*2.5/1.25*(4+6)3)24 div 4*sqr(6)/3.6 4)28 div 4 mod 3*trunc(3.674)5)12 mod 5*ord(succ(‘N’)) div 3-ord(true)6)98 div 12/ord(pred(‘f’)*trunc(2.45+3.6*4)*round(23.56*3-6.75)7)23>12 8)(‘A’>’b’) or (succ(‘E’=’F’)9) pred(true)=false 10)succ(5)>=5备注:pascal语言提供的标准函数:1)算术函数:绝对值函数abs(x):函数值为X的绝对值,a= -23,abs(a)=23平方函数sqr(x): 函数值为X的平方,a=-2,sqr(a)=4平方根函数sqrt(x): 函数值为X的平方根,a=4,sqrt(a)=±2整数函数 int(x): 函数值为X的整数部分,a=3.14,int(a)=3,a=-3.54,int(a)=-3小数函数frac(x): 函数值为X的小数部分,a=3.14,int(a)=0.14,a=-3.54,int(a)=-0.54指数函数exp(x): 函数值为e x,a=3,exp(a)=e3,e=2.对数函数 ln(x): 函数值为x的自然对数,a=3,ln(3)=圆周率函数Pi: 无自变量,函数值为Л的值。