PASCAL语言程序设计.docx
- 文档编号:4989919
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:80
- 大小:113.87KB
PASCAL语言程序设计.docx
《PASCAL语言程序设计.docx》由会员分享,可在线阅读,更多相关《PASCAL语言程序设计.docx(80页珍藏版)》请在冰豆网上搜索。
PASCAL语言程序设计
第一部分PASCAL语言程序设计
第一章PASCAL语言基础
Pascal语言是瑞士苏黎士工科大学的NiklansWirth(沃思)1971年发表的,是为了纪念17世纪法国著名哲学和数学研究者BlaiscPascal而将它命名为Pascal程序设计语言。
Pascal语言是信息学奥赛中普遍使用的程序设计语言。
第一节 程序的组成与上机调试运行
一、程序的组成
我们先看一道例题。
例1-1输入两个整数a和b,计算a和b的和(a+b)。
【参考程序】
programa1(input,output);//程序首部
var a,b,c:
integer;//程序说明部分,a,b,c被说明为整型变量
begin//程序执行部分,下面是程序的内容
write('a=');//在屏幕上输出一个字符串“a=”,输出完后不换行
read(a);//从键盘输入一个数值赋给变量a
write('b=');//在屏幕上输出一个字符串“b=”,输出完后不换行
read(b);//从键盘输入一个数值赋给变量b
c:
=a+b;//计算a+b的和,并将这个和赋值给变量c
writeln(a,'+',b,'=',c);//输出a+b=c的等式,输出完后换行
end.//程序结束
【样例输入】
a=10
b=30
【样例输出】
10+30=40
由上可以看出,一个Pascal程序由以下三部分组成:
(1)由Program引导的一行是Pascal程序的首部。
程序首部指出了源程序的名称,是由用户自己给出的,该例子称为a1。
程序名后用括号括住的两个参数input与output,通常表示程序运行中的标准输入和输出文件,程序首部以分号结束。
(2)Pascal程序的第二部分是说明部分。
说明部分要求列出程序中引用的全部常量、变量、转移标号、类型、过程和函数的有关说明。
若变量c在说明部分没有说明,后边的语句c:
=a+b在执行时;翻译软件便能指出其错误并提醒用户加以改正,程序中每个语句都以分号表示结束。
(3)程序的第三个部分是用BEGIN和END括住的一串语句,称为程序的执行部分。
有的书中将说明部分和执行部分合称为程序体。
二、PASCAL语言编辑软件的基本操作
下面我们以FreePascal1.10系统为例来学习一下Pascal语言编辑软件的使用。
1.FreePascal的启动
在运行程序目录下(一般是c:
\pp\bin\go32v2)运行启动程序fp.exe,即可启动系统。
屏幕上出现如图1-1所示的集成环境。
图1-1
2.FreePascal系统集成开发环境(IDE)简介
最顶上一行为主菜单,中间蓝色框内为编辑窗口,在编辑窗口内可以进行程序的编辑,最底下一行为提示行,显示出系统中常用命令的快捷键,如将当前编辑窗口中文件存盘的命令快捷键为F2,打开磁盘文件命令F3,等等。
3.新建程序窗口
按F10切换到主菜单,选择FILE菜单,执行其中New命令,就可建立一个新的程序窗口(默认文件名为Noname00.pas或Noname01.pas等)。
4.程序的输入、编辑与运行
在当前程序窗口中,一行一行的输入程序。
当程序输入完毕之后,一般要先按Alt+F9(或执行compile菜单中compile命令)对程序进行编译。
如果程序有语法错误,则会出现一个Compiler窗口,提示你语句错误的坐标。
若无语法错误,则窗口正中央会出现一个对话框,提示编译成功。
接下来,我们可以运行程序了。
程序的运行可以通过按ALT+R打开RUN菜单中的RUN命令,或直接按快捷键CTRL+F9,则可以在用户窗口中输出运行结果。
通常在程序运行结束后系统回到Pascal系统的集成环境,因此要查看运行结果,要按ALT+F5将屏幕切换到用户屏幕。
5.程序的保存与打开
当我们想把程序窗口中的程序存入磁盘时,可以通过按F2键(或执行File菜单中的save命令)来保存程序。
第一次保存文件时屏幕上会出现一个对话框要求输入文件名(默认扩展名为.pas)。
当我们要将磁盘上的PASCAL程序打开(装入窗口)时,可按F3(或执行File菜单中的Open命令)来打开程序,此时系统也会弹出一个对话框要求输入要打开的文件名,或直接在文件对话框列表中选择所要打开的文件。
第二节常量、变量与数据类型
一、常量
(1)常量:
在某个程序运行的整个过程中其值不能发生改变的量。
(2)常量定义:
常量定义出现在说明部分。
它的语法格式是:
const
<常量标识符>=<常量>;
...
<常量标识符>=<常量>;
例如:
const
pi=3.141592;//此种方式定义的常量在程序中不可以改变
(3)常量定义部分必须以保留字const开头,可以包含一个或几个常量定义,而且每个常量均以分号结束。
二、变量
(1)变量定义:
在某个程序的运行过程中其值可以发生改变的量。
它应具有以下三个要素:
变量名、变量类型和变量值。
(2)变量说明:
变量说明出现在说明部分。
它的语法格式是:
var
<变量列表>:
<类型>;
...
<变量列表>:
<类型>;
(3)变量名
每一个变量必须用一个合适的标识符来命名。
标识符是用来标识处理对象(如常量、变量、类型、过程、函数、程序和文件等)的符号名称。
标识符是编程者命名的,自由度很大。
命名中应该注意遵循一定的规则,如必须以字母开头,后面可以跟字母、数字和连字符“_”,若有连字符“_”则必须位于标识符中间。
如:
a,root,tot,t3,exp_1都是合法的标识符,而3a,a#,my%都不是合法的标识符。
(4)变量的类型
在Pascal程序执行的任一时刻,变量总有相应的值。
由于变量是有类型的,所以整型变量对应整数值,实型变量对应实数值。
在Pascal语言中规定:
在程序中使用的变量必须先定义后使用。
如果用到的变量没有定义就使用,程序编译时会出现“IdentifiernotfoundX”的错误信息。
例1-2已知某圆的半径r=15.15,求该圆的面积s?
【分析】圆的面积s=3.14*圆的半径r*圆的半径r
【参考程序】
programt301;
constpi=3.14;
vars,r:
real;//定义两个实型变量s,r
begin
r:
=15.15;
s:
=pi*r*r;
writeln(s:
10:
2);//显示宽度是10,保留两位小数
end.
【输出结果】
47.57
三、数据类型
Pascal语言提供了丰富的数据类型,大致分为以下三类,如图1-2所示:
图1-2
简单类型是指该类型不能再分解为其它类型,而结构类型是由简单类型所组成的,或者说结构类型是由简单类型所构造成的。
1.整型
一个整型数据用来存放整数。
FreePascal支持七种预定义整型,它们是shortint(短整型)、integer(整型)、longint(长整型)、byte(字节型)、word(字类型)、int64和Qword,每一种类型规定了相应的整数取值范围以及所占用的内存字节数。
类型
数值范围
占字节数
Shortint
-128..127
1
byte
0..255
1
word
0..65535
2
integer
32768..32767
2
longint
-2147483648..2147483647
4
int64
-9223372036854775808..9223372036854775807
8
qword
0..184********709551615
8
FreePascal预定义了两个整型常量标识符maxint和maxlongint,他们各表示确定的常数值,maxint为32767,maxlongint为2147483647,他们的类型分别是integer和longint。
2.实型
FreePascal语言支持五种预定义实型,它们是real(基本实型)、single(单精度实型)、double(双精度实型)、comp()、extended(扩展实型),每一种类型规定了相应的实数取值范围、所占用的内存字节数以及它们所能达到的精度。
类型
数值范围
占字节数
有效位数
real
2.9e-39..1.7e38
6
11..12
single
1.5e-45..3.4e38
4
7..8
double
5.0e-324..1.7e308
8
15..16
Comp(装配实型)
-2^63+1..2^63-1
8
19..20
extended(扩展实型)
3.4e-4932..1.1e4932
10
19..20
实型常量包括正实数、负实数和实数零。
pascal中表示实型常量的形式有两种。
⑴十进制表示法
这是人们日常使用的带小数点的表示方法,要求小数点前后必须有数字。
如0.0、-0.0、+5.61、-8.0、-6.050等都是实型常量,而0.、.55都不是合法的实数形式。
⑵科学记数法
科学记数法是采用指数形式的表示方法,如1.25×10^5可表示成1.25E+05。
在科学记数法中,字母“E”表示10这个“底数”,而E之前为一个十进制表示的小数,称为尾数,E之后必须为一个整数,称为“指数”。
如-1234.56E+26、+0.268E-5、1E5是合法形式,而.34E12、2.E5、E5、E、1.2E+0.5都不是合法形式的实数。
值得注意的是实数的运算比整数的运算速度慢且无法像整数那样精确表示,只能近似表示。
3.布尔型(boolean)
一个布尔型数据用来存放逻辑值(布尔值),布尔型的值只有两个:
false(假值)和true(真值)。
4.字符型(char)
字符型只允许单引号中有一个字符,否则就是字符串(string)。
如:
'A','y','9','7'。
例1-3有如下程序,运行它,看有什么结果?
programaa;
var a,b:
integer;c,d:
real;m,n:
booLean;ch:
char;
begin
a:
=10;b:
=5;
writeln('a=',a,'','b=',b);
c:
=a/b;
writeln('c=',c);
ch:
='T';
writeln('ch=',ch);
m:
=5>6; n:
=10>7;
writeln('m=',m,'','n=',n);
end.
【输出结果】
a=10b=5
c=2.000000000000000E+000
ch=T
m=FALSEn=TRUE
例1-4编写程序,输出如下图形。
【参考程序】
programaa;
begin
writeln(' $');
writeln('$$$');
writeln('$$$$$');
end.
第三节表达式与标准函数
一、算术运算符与算术表达式
1.算术运算符
常用的有以下6个算术运算符:
+(加)、-(减)、*(乘)、/(实数除)、DIV(整除)、MOD(求余)
其中,/(实数除)得到结果为实型,如5.0/2.0=2.5,4/2=2.0,DIV(求两个数相除后的整数部分),它要求除数和被除数均为整型,结果也为整型,如10DIV2=5,5DIV10=0,-15DIV4=-3,DIV运算只取商的整数部分,参与DIV运算的两个对象不能为实型。
mod(求两个数相除后的余数部分)也只能用于整数运算,结果为整数,例如:
10mod4=2,-17mod-4=-1,4mod(-13)=4。
2.算术表达式
在Pascal语言中,算术表达式的意义为:
所有符合Pascal语法规则的数值型运算对象(数值型常量、变量、函数)、运算符、圆括号所组成的有意义的式子。
表达式的结果可按标准类型分成算术表达式(运算结果为整型/实型)及布尔表达式(运算结果为布尔型)。
3.关系运算符和关系表达式
由一个关系运算符将两个类型相容且有序的表达式连结起来的式子,称之为关系表达式,其结果为布尔型(真true或假false)。
这里用到的Pascal语言中的关系运算符有:
>(大于) =(等于) <(小于) >=(大于等于) <=(小于等于) <>(不等于)
共六个。
4.布尔运算及布尔表达式
(1)布尔常量和变量
在Pascal语言中,布尔运算又称为逻辑运算,布尔值也称为逻辑值,它有“真”与“假”两个,分别用“TRUE”与“FALSE”这两个布尔常量来表示的。
用来存放逻辑值的变量称为布尔变量,它的作用就是存放一个布尔常量。
当然,布尔变量也必须先定义后使用。
例如:
VAR T,F:
BOOLEAN;
在这里,使用BOOLEAN这个标准类型标识符来定义T与F这两个布尔变量。
(2)布尔运算
布尔运算有三个运算符:
Not(逻辑非)、And(逻辑与)、Or(逻辑或)
由一个布尔运算符将两个类型相容且有序的表达式连结起来的式子,称之为布尔表达式。
在一个既包括有布尔运算符,又有关系运算符的表达式中,它们的运算次序为:
1)括号
2)函数
3)NOT(逻辑非)
4)*、/、DIV、MOD、AND
5)+、-、OR
6)>、=、<、>=、<=、<>
(3)布尔型数据的输入与输出
在Pascal的程序中,只能通过赋值语句给布尔型变量赋值,不能用READ语句输入一个布尔常量,但可以用write或writeln语句直接输出布尔变量和布尔常量的值。
例1-5判断程序运算结果
programaa;
vara,b,s,d:
integer;L,e,g,f,h,m:
boolean;
begin
a:
=3;b:
=7;
s:
=a+b;d:
=adivb;
L:
=a
=a=b;
g:
=a>b;f:
=eorg;h:
=eandg;m:
=noth;
write('s=',s:
5);
writeln('d=',d:
5);
writeln('L=',L);
writeln('e=',e,'g=',g);
writeln(f,'',h,'',m);
end.
【输出结果】
s= 10d= 0
L=TRUE
e=FALSEg=FALSE
FALSEFALSETRUE
二、标准函数
Pascal预先定义了很多种标准函数,其调用格式如下:
变量名:
=函数名(自变量参数);
1.算术函数
算术函数可以直接参与算术运算,函数的自变量和函数的类型均为数值型。
函数名称
函数标识符
自变量类型
结果类型
说明
绝对值
abs(x)
整型、实型
同自变量
求X的绝对值
平方
sqr(x)
整型、实型
同自变量
求X的平方
平方根
sqrt(x)
非负整型、非负实型
非负实数
求X的平方根
指数
exp(x)
整型、实型
实型
相当于EXP(X)=ex(底数为e)
自然对数
ln(x)
整型、实型
实型
求X的自然对数(底数为e)
算术函数使用注意事项:
(1)绝对值函数abs(X)与数学中的意义功能相同,如:
abs(7.1)=7.1,abs(-16)=16
(2)平方值函数sqr(X)即求X2值,如:
sqr(5)=25
(3)在Pascal语言中,若要计算y=Xn,可以用y=exp(n*LN(x))来表示。
(4)平方根函数sqrt(X)与数学中的
意义功能相同,运算时要求自变量X>=0。
如果要计算
的值,那只能借助其它方法了。
如:
=exp(1/3*LN(x))。
(5)指数函数exp(x)与对数函数LN(x)是一对逆函数。
与数学中相应函数的区别在于它们都是以自然对数e(e
2.71828)为底。
例如:
exp
(2)即求e2=2.71828*2.71828
7.3890461
反过来,LN(7.3890461)=2
附:
对数的定义:
假定a是一个不等于1的正实数(即
且a>0),对于正实数b(即b>0),如果存在一个实数c,满足
这样的关系式,那么我们说”c是以a为底,b的对数”。
并以数学符号
来表示此意义。
(注:
读作”以a为底,b的对数”,其中a叫作
的”底”,b叫作
的”真数”)
2.转换函数
转换函数的功能是可以根据需要将数据类型进行转换。
函数名
函数标识符
自变量类型
函数值类型
说明
截尾
trunc(x)
实型
整型
取x的整数部分
舍入
round(x)
实型
整型
对x四舍五入后取它的整数部分
序号
ord(x)
整型、
字符型、布尔型
整型
求x对应的序号
字符
chr(x)
整型
字符型
求x对应的字符
转换函数使用注意事项:
(1)截尾函数trunc(x)可以将实数型自变量x的小数部分截去,函数值为整数。
如:
trunc(17.8)的值为17,trunc(-6.41)的值为-6。
(2)舍入函数round(x)是将实数型自变量x的小数部分四舍五入,取它的整数部分。
如:
round(17.8)的值为18,round(-6.1)的值为-6。
(3)当序号函数的自变量为字符时,函数值为该字符的ASCⅡ码,当自变量为整型数据时,则ord(x)的值为自变量本身,当自变量为BOOLEAN时,Pascal中规定:
FALSE的序号为0,TRUE的序号为1。
如:
ord('A')=65,ord('a')=97,ord('0')=48,ord(68)=68,ord(FALSE)=0,ord(TRUE)=1。
序号函数ord(x)与字符函数chr(x)的功能相反,它们是一对逆函数。
如:
chr(ord('A'))='A',ord(chr(96))=96。
3.顺序函数
函数名称
函数标识符
自变量类型
函数值类型
说明
前趋
pred(x)
整型、
字符型、
布尔型
整型、
字符型、布尔型
求x的前一个数据
若x是第一项,则函数无意义
后继
succ(x)
整型、
字符型、
布尔型
整型、字符型、布尔型
求x的后一个数据
若x是最后一项,则函数无意义
顺序函数使用注意事项:
(1)前趋函数pred(x)和后继函数succ(x)是一对逆函数。
如:
pred(succ(x))=x,succ(pred(x))=x。
(2)顺序函数的自变量x必须是一个有顺序的数据类型,如实数型的数虽然能比较大小但无法确定x前一项和后一项到底是什么数,所以实型数没有前驱和后继。
(3)当自变量x为数据第一项时,它没有前驱,如pred(FALSE)无意义;当自变量x为最后一项时,它没有后继。
如succ(TRUE)无意义。
4.逻辑判断函数
函数名称
函数标识符
自变量类型
函数值类型
说明
奇函数
odd(x)
整型
布尔型
判断x的奇偶性
奇函数使用注意事项:
奇函数的值为BOOLEAN类型,即只存在“真”(TRUE)和“假”(FALSE)。
如:
odd(5)=true,odd(10)=false
第四节赋值语句、输入与输出语句
一、赋值语句
1.格式:
变量:
=表达式;
2.使用说明:
(1)该语句具有先计算后赋值的功能,即先计算出来表达式的值,然后将其值赋给左边的变量或函数标识符,注意:
一个赋值语句只能给一个变量赋值。
(2)“:
=”称为赋值号,要注意不能与关系运算符“=”混淆,只有在赋值语句中才能使用赋值号,赋值号具有方向性,是将赋值号右边表达式的值计算出来,赋予赋值号左边的变量,所以赋值号的左边只能是变量,并且赋值号两边的类型应该具有赋值相容性,如整型的值可以赋值给实型变量,反之则不行,字符型可以赋值给字符串型变量,反之也不行。
(3)被赋值的变量本身可以作为因子参与运算,如n:
=n-1,i:
=i+1,s:
=s+x。
例1-6写出执行下面的程序运行后,变量A、B、C的值。
programa16;
var a,b:
integer;c:
real;
begin
a:
=200;
b:
=adiv10;
c:
=a;
writeln(a:
7,b:
7,c:
7:
2);
end.
二、输入语句(读语句)
1.格式:
read(输入项); 或 readln<(输入项)>
2.使用说明:
(1)执行该语句时,从键盘上(或文件中)读入数据,将其值依次赋给输入项中的变量。
注意输入的数据必须是常量,且输入的数据类型必须和变量一一对应。
(2)输入项中的括号内应是一组变量,这里一组的含义是可以为一个,也可以是多个,若是多个时,各变量之间必须用逗号分隔,最后一个没有符号,他们必须在程序说明部分预先说明,他们可以是整型、实型或字符型等数据类型,但不能是布尔型,因为布尔型不可以直接读入。
如:
Read(a,b,c,d);或Readln(M,N,L);
(3)程序运行后,执行到Read或Readln语句时,系统处于等待状态,等待用户从键盘上输入数据,且当输入项中的变量为多个时,要求输入的相应数据个数不能少于其变量的个数,当输入的数据个数少于变量个数时,系统仍处于等待状态,接着输入的数据无论是换行输入还是不换行输入均有效。
注意:
输入数值(整型或实型)数据时,数据间用空格或回车键分隔,最后一定要有一个回车,表示输入结束;输入字符型数据时,数据间不能用空格分隔,可以连续输入(不用空格)或用回车键一个一个字符分隔输入。
(4)READ与READLN的区别:
read语句是一个接一个地读数据,在执行完本Read语句(读完本语句中变量所需的数据)后,下一个读语句接着从该数据输入行中继续读数据,也就是说,不换行。
Readln则不同,在读完本Readln语句中变量所需的数据后,自动换行,该数据行中剩余的数据多余无用,并且readln可以不带参数表,即可以没有任何输入项,只是等待读入一个换行符(回车),经常用于暂停程序的运行,直到输入一个回车。
例1-7设I,J,K是整型变量,现需将30,20,10分别赋给这三个变量,要求写出对应于下列语句的所有可能的输入格式:
read(i,j,k);
解:
所有可能输入格式如下(注:
其中用“□”来表示空格,每一行后均有一个回车,以下均同):
(1)30□20□10
(2)30□20
10
(3)30
20□10
(4)30
20
10
例1-8设A,B,C是字符型变量,现需将'P','A','S'分别赋给这三个变量,要求写出对应于下列语句所有可能的输入格式:
read(a,b,c);
(1)PAS
(2)PA
S
(3)P
AS
(4)P
A
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PASCAL 语言程序设计