PASCAL语言基础.docx

上传人:b****8 文档编号:9421400 上传时间:2023-02-04 格式:DOCX 页数:103 大小:177.12KB
下载 相关 举报
PASCAL语言基础.docx_第1页
第1页 / 共103页
PASCAL语言基础.docx_第2页
第2页 / 共103页
PASCAL语言基础.docx_第3页
第3页 / 共103页
PASCAL语言基础.docx_第4页
第4页 / 共103页
PASCAL语言基础.docx_第5页
第5页 / 共103页
点击查看更多>>
下载资源
资源描述

PASCAL语言基础.docx

《PASCAL语言基础.docx》由会员分享,可在线阅读,更多相关《PASCAL语言基础.docx(103页珍藏版)》请在冰豆网上搜索。

PASCAL语言基础.docx

PASCAL语言基础

PASCAL语言基础

第一章、什么是计算机语言

计算机语言是计算机软件中非常独特的一部份,它属于系统软件,但又和应用软件息息相关。

它的作用是:

使人类能够用某些命令、指令去让计算机为人类进行数值、逻辑运算。

计算机语言中,只有一种语言是计算机能自己识别的,就是最底层、最难的机器语言,这是一般人类所无法接受的语言,所以在此基础上,人们发展出了许多高级的语言,这些语言的共同特点是:

人类无需去掌握高深的机器语言,只要掌握这些更容易理解、更贴近人类的高级语言,用高级语言编出程序后,再由语言解释、编译系统去把程序解释、编译成机器语言让计算机去执行。

目前最常用的高级语言大致有以下几种:

BASIC语言:

是一般计算机入门者的首选语言,命令少,容易掌握,从BASIC,BASICA,GWBASIC,TRUEBASIC,TURBOBASIC,QUICKBASIC等一直发展到目前的WINDOWS环境下的VB。

PASCAL语言:

最适合科学计算、数据处理的语言,运行、编译速度最快,从TURBOPASCAL5.5,6.0,7.0一直到现在的WINDOWS环境下的DELPHI以及LAZARUS等面向对象的PASCAL,以及目前信息学竞赛使用的FREEPASCAL各个版本。

C语言:

主要适用于应用软件的开发,是计算机人员的必修课,但在算法实现、建模方面不如PASCAL方便。

从C,C++,一直到现在的WIONDOWS环境下的VC、C++等。

实际上,我们日常所用的各种软件,包括Windows,WORD、EXCEL、各种游戏等等,全部都是使用程序设计语言编写出来的软件,我们只有掌握了程序设计语言,才能进行计算机软件的开发。

在我们的信息学竞赛中,所有的题目都是非常复杂的数值与逻辑运算,所以世界上广泛采用PASCAL语言作编程工具,我们采用的是FREEPASCAL2.0版本或者相近版本。

我们学习信息学竞赛除了要掌握程序设计语言,能够使用程序设计语言编写程序外,还有一部分要掌握的更加重要的内容就是——算法设计,它能够使我们的程序运行速度更快、效率、精度更高,使我们的程序取得快人一步的优势,算法设计在本书中我们将接触一部分。

第二章、PASCAL语言入门

第一节、PASCAL语言的特点

以法国数学家命名的PASCAL语言是世界上使用最广泛,最有效的语言之一。

其主要特点是:

严格的结构化形式;丰富完备的数据类型;运行能力、效率高;查错能力强等等。

与BASIC、C等语言相比,PASCAL语言更适合科学计算,运行速度最快,编译能力最强,编译成的可执行文件也最小。

PASCAL语言是编译执行的语言(BASIC语言是解释执行),因此在速度与效率上都比BASIC语言提高了一个档次。

所谓解释执行,是在程序环境下编写好程序后,执行它时是一句一句地由语言解释器翻译成机器语言,由计算机去执行,计算机能在程序编辑时就发现程序中错误,但程序运行速度慢;而编译执行是在程序环境中编写好程序后,执行时先由编译器把整个程序编译成机器语言,然后再由计算机执行,计算机必须在编译程序时才能发现程序中的错误,但程序运行速度快。

第二节、FREEPASCAL的集成环境

一个题目,如果用PASCAL语言来解,在建立好数学模型及完成一定的自然语言描述后,就用PASCAL语言来编辑出程序,编译后再运行(可以作为一个过程),这样才能得到答案。

FREEPASCAL提供了一个功能非常强大的集成环境,我们可以利用它来完成上述所有过程。

进入这个环境的方法很多,可以根据实际情况自己进入。

进入集成环境后屏幕上显示如下:

FileEditSearchRunCompileDebugToolsOptionsWindowHelp

菜单区

程序编辑区

F1HelpF3OpenALTF9CompileF9MakeALTF10LocalMenu

功能键区

用键盘选择菜单的方法是:

按F10,激活菜单后,用光标键来选择;或是直接用ALT健加菜单的第一字母,如ALT+F,即能调出FILE菜单。

另外,我们也可用鼠标来调用菜单,操作方法与其它软件一样。

功能健中定义了:

F1可得到帮助;F3打开一个已存盘的程序文件;ALTF9编译当前程序;F9把当前程序编译成EXE(可执行)文件,ALTF10打开菜单,当然,还有一些功能键并没有在这里显示,在后面的学习中我们将逐个涉及,大家自己也可以从菜单中发现。

第三节、一个PASCAL程序

一、进入编辑状态:

选择菜单[FILE][OPEN](今后涉及到菜单调用时,均以此格式表示,即选择FILE菜单中的OPEN功能)功能,打开一个程序文件,在输入文件名时,输入文件的主名即可进入程序编辑状态。

这时可用编辑功能健:

光标键:

用以上下左右移动光标位置;

INSERT:

插入/改写状态切换;

TAB;光标跳至下一制表位;

CAPSLOCK:

大小写切换;

DELETE:

删除光标位一字符;

BACKSPACE:

删除光标前一字符;

CTRL+Y:

删除光标处一行;

HOME:

光标跳至行首;

END:

光标跳至行未;

PAGEUP:

上翻一页;

PAGEDOWN:

下翻一页;

ENTER:

回车/换行;

二、编辑一个PASCAL程序:

[例1、1]输出一句话的小程序:

programQ1;

begin

writeln(‘YouarewelcometothePASCALworld!

’);

end.

请在编辑状态下编辑输入上述程序,第一行为程序开头,程序名(这一行并不是必须的,今后的程序中我们会经常省略之一行);第二行BEGIN表示程序开始,最后一行END表示程序结束;WRITELN()语句把括号中单引号中的的字符打印在屏幕上;记住,一般每行以分号“;”结束,但END后以句号“.”结束,而BEGIN后没有标点符号。

即:

除BEGIN外,每一句PASCAL语句后均有分号或句号,只有程序的最后一个END后才用句号,而其它任何行未都是分号!

三、在集成环境中运行程序:

上述程序[例1、1]编辑好后,如果要运行,只需选择菜单[RUN][RUN]命令(或CRTL+F9),如果程序正确的,就会在屏幕(这个屏幕叫程序输出屏幕)上显示:

YouarewelcometothePASCALworld!

但是我们看到,输出屏幕上显示的结果一闪而过就又回到了集成环境屏幕显示,我们几乎看不到在屏幕上显示的结果,要查看刚才的屏幕显示,只需选择菜单[RUN][USERSCREEN](或ALT+F5),就又能回到输出屏幕,敲任意键又回到集成环境中。

如果程度出错,则程序没有被运行完就会回到集成环境中,并且光标停在错误的这一行,在编辑窗口中的第一行还会显示出错信息,如:

Run-timeerror错误代码at错误发生地址

四、保存文件

把当前编辑的程序文件以当前名存盘,只需运行菜单命令[FILE][SAVE](或F2),即可。

五、关闭当前文件

当前文件不想现在再编辑了,可把它关闭掉,即运行菜单命令[WINDOWS][CLOSE](或ALT+F3),即可。

六、打开已有文件

欲打开一个已经存在的程序文件,运行菜单命令[FILE][OPEN](或F3),再按TAB键去选择或不按TAB键而直接输入文件名即可。

七、练习

在集成环境中输入以下程序,程序的作用是计算圆的面积,圆的半径由用户从键盘输入,编辑运行正确后请存盘:

programarea_of_cicle;

constpi=3.1416;

vars:

real;

r:

integer;

begin

writeln(‘Pleaseinputradius:

’);

readln(r);

s:

=pi*r*r;

writeln(‘s=’,s);

end.

运行举例:

Pleaseinputradius:

5

s=7.854000000E+01

 

第三章、PASCAL语言程序基本概念

第一节、PASCAL程序的组成

我们仍以上述程序为例:

[例2、1]

programarea_of_cicle;

constpi=3.1416;

vars:

real;

r:

integer;

begin

writeln(‘Pleaseinputradius:

’);

readln(r);

s:

=pi*r*r;

writeln(‘s=’,s);

end.

每一个PASCAL程序都由程序头部和程序主体组成,最后以“end.”作为整个程序的结束。

一、程序头部

程序头部毫无疑问是在程序的开头位置,以“program”这个词开始(但经常省略这一),以第一个BEGIN的前一行结束,中间每行后均有分号。

以CONST为开始的部分是说明程序中要用到的常量,以VAR为开始的部分是说明程序中要用到的变量。

即程序中要用到的所有的常量及变量,我们必需在程序首部加以说明其名称及类型。

这些我们将在稍后讲到。

二、程序主体

以第一个BEGIN开始,以最后一个END结束,中间即为程序命令行,每一行均以分号结束!

第二节、PASCAL的数据类型

PASCAL语言的常量与变量都必须在程序头部先加以说明,即说明常量、变量的的名称及数据类型。

PASCAL语言的数据类型很多,最常用的有以下几种:

一、整数类型(没有小数部分)

INTEGER:

取值范围[-32768,32767]。

占用内存2个字节(16位)。

WORD:

取值范围[0,65535]。

占用内存2个字节(16位)。

BYTE:

取值范围[0,255]。

占用内存1个字节(8位)。

LONGINT:

取值范围[-2147483648,2147483647]。

占用内存4个字节(32位)。

SHORTINT:

取值范围[-128,127]。

占用内存1个字节(8位)。

二、实数类型

REAL:

取值范围[2.9E-39,1.7E+38]。

占用内存6个字节(48位)。

实数的表示法有两种:

1、直接表示,如:

-0.4576,123.567,-234,0

2、科学计数法,如:

1.234E-4,-3.546E12

表示1.234乘10的负4次方;-3.546乘10的12次方。

三、字符类型

CHAR:

单字符型,即取1个字符,如‘A’,‘1’。

STRING:

字符串型,即多个字符,如‘ABCD!

123’,‘%¥#DS12’。

如果一个常/变量只要用到1个字符,则可把它定义成CHAR型;如果是多个字符,但不知确切多少个,则定义成STRING型,如果知道确切有N个字符,则定义成STRING[N]型,例如STRING[5],则表示定义的这个字符串变量由5个字符组成。

字符串在PASCAL中使用都是加上单引号。

四、布尔型

BOOLEAN:

布尔型即为逻辑型,取值为TRUE、FALSE,即真、假。

第三节、常量、变量、标准函数和表达式

一、常量和变量

常量:

程序运行过程中,其值不会改变的量,称为常量。

在程序头部中说明,以CONST引导。

变量:

程序运行过程中,其值可改变的量,称为变量。

在程序头部中加以说明,以VAR引导。

如,在[例2、1]中说明的常量PI,变量S、R。

二、标准函数

PASCAL语言提供数量非常大的标准函数供我们使用,这些函数有些可以直接调用,有些放在另外的单元(UNIT)中。

PASCAL也提供了大量的标准过程,和标准函数一样供用户直接或间接调用。

如果一个函数或过程不在SYSTEM(即默认调用的单元)中,而在其它单元中话,即在程序头部的第一行正式行中加上USES单元名;如,如果要使用CLRSCR(清屏过程,在CRT单元中)的话,就必须在程序头部加上:

USESCRT;

函数的调用:

如:

A:

=ABS(-34),即把-34的绝对值赋给变量A;(注意:

函数只能出现在表达式中,即赋值语句中)。

此时:

A的数据类型与括号中的参数-34是一致的。

函数的语法中都会说明,这个函数的参数的类型及这个函数的值(结果)的类型。

过程的调用:

过程即命令,如:

CLRACR;程序运行结果是清屏。

常用标准函数与过程很多,这里只列出最常用的几个。

标准函数

函数名

语法

说明

Abs

Abs(r:

real/integer):

real/integer

返回参数R的绝对值,类型与参数相同

Chr

chr(i:

integer):

char

返回参数所对应的ASCII码值,类型为CHAR

Copy

Copy(s:

string;n,m:

integer):

string

返回字串S的第N个字符开始的M个字符

Cos

Cos(r:

real):

real

返回参数R的余弦值

Exp

Exp(r:

real):

real

返回参数R的以e为底的幂

Int

Int(r:

real):

real

返回参数R的整数部分,返回的值是实数类型

Length

Length(s:

string):

integer

返回字串S的长度

Ln

Ln(r:

real):

real

返回参数R的自然对数

odd

Odd(I:

integer):

boolean

判断参数I是否奇数,如是,则返回TRUE

ord

Ord(s:

scalar):

integer

返回任意有序量的序值

random

Random

返回0至于间的任意一个小数(随机数)

round

Round(r:

real):

longint

返回参数R的四舍五入取整值

sin

Sin(r:

real):

real

返回参数R的正弦值

sqrt

sqrt(r:

real):

real

返回参数R的平方根

sqr

Sqr(r)

返回参数R的平方值,结果类型与R的类型相同

trunc

Trunc(r:

real):

integer

返回参数R的整数部分,返回的值是整数类型

标准过程

过程名

语法

说明

Delay

(CRT单元)

Delay(ms:

word)

延迟发声MS毫秒

Delete

Delete(s:

string;n,m:

integer)

把串S中的第N个字符开始的M个字符删除

Exit

Exit

从当前执行的程序中退出

Gotoxy

(CRT单元)

Gotoxy(x,y:

integer)

把光标定位到第X列Y行处

halt

Halt

中断程序的运行

nosound

Nosound

关闭机器喇叭

Sound

(CRT单元)

Sound(f:

word)

让机器喇叭发出频率为F的声音,直到nosound

str

Str(I:

integer;vars:

string)

把数值I转换为字符串S

val

Val(s:

string;varr:

real;varc:

word)

把字符串S转换为数值R,并返回错误代码C

三、表达式

由算术运算符(+,—,*,/)及数字、常量、变量、标准函数所组成的式子中心表达式。

如:

5+9;A*B-34*ABS(-34)/INT(B)

另外,PASCAL中有两个很有用的运算符,DIV:

求商的整数值;MOD:

求余数。

如:

8DIV3的值是2,10DIV3的值是3;

8MOD3的值是2,10MOD3的值是1;

在PASCAL的表达式中,不允许出现我们日常生活中的那种分式或根号等式子,我们必须按照PASCAL的语法把它们改写成PASCAL表达式。

在PASCAL的表达式中,运算顺序是:

()函数*,/,DIV,MOD+,-

如:

把下列算式改写成PASCAL表达式:

改写为PASCAL表达式为:

(x*x+3*y-5*(z-2))/(x-y*y)

从上例中可以看出:

1、PASCAL表达式中没有分式,只能以除号“/”来隔开;

2、PASCAL表达式中的分子与分母应该用括号括开;

3、PASCAL表达式中只有小括号,不能有中括号或大括号,小括号可以有很多层;

4、PASCAL表达式中没有乘幂,只能用乘法来表达(在FP中有平方函数,所以可以使用SQR函数);

5、PASCAL*表达式中任意两个常量、变量、数值、括号、函数之间都必须不能缺省运算符,即乘号必不可少;

这些要求希望大家记熟,这是我们编写PASCAL程序的必要基础。

四、练习

1、计算下列表达式的结果:

31div(5mod2)31div5mod231/(5div2)

2、

把下列算式改写为PASCAL表达式:

第四节、程序头部的说明语句

在程序头部的说明语句中,可有以下几种引导词,例:

LABEL10,30:

说明程序中要用到两处标记(即行号)10和30;此项不用掌握。

CONSTp=123;

a=12.346;

s=’abcdefg’;

VARI,j,k:

integer;

X,y:

real;

S1:

string[5];

P:

boolean;

TYPET=record

Tn,tm:

integer;

Ts:

string;

End;

第四章、PASCAL的顺序程序结构

PASCAL是一种结构化的程序设计语言,其包含三种结构:

顺序、选择、重复,其中顺序结构是最基础的,即程序是完全从第一句运行到最后一句,中间没有中断,没有分支,没有反复;而选择结构即是给程序设置了分支;重复结构即反复运行某一段(句)程序。

第一节、赋值语句

赋值语句的一般格式:

变量名:

=表达式

变量名一定要已经在程序头部先说明过,赋值符号其实就是冒号加等于号“:

=”,而绝不能只用等于号“=”。

冒号的左边(即赋值符号的左边)只能是一个变量名!

不能也是表达式,更不能是具体数值。

一个赋值语句中只能出现一个赋值符号。

例如:

以下赋值语句都是正确的:

X:

=1;把1这个数值赋给X这个变量;

A:

=B*C+12*INT(D);把B*C+12*INT(D)这个表达式的值赋给变量A;

Y:

=Y+1;把Y+1的值再赋给Y这个变量,即累加。

以下赋值语句都是错误的:

S:

=T:

=1;不能有两个赋值号在一个语句中;

X+2:

=4;赋值号左边不能是表达式;

Z=3;少了冒号;

由上可以看出,赋值语句实际上是先把等于号右边的表达式计算出,再赋给赋值号左边的变量。

以下[例3、1]程序的作用是先把A,B两个变量赋上值(3和2),打印在屏幕上;然后再交换它们的值,再打印在屏幕上:

ProgramL31;

vara,b,c:

integer;

begin

a:

=3;

b:

=2;

writeln(’a=’,a,’’,’b=’,b);

c:

=a;

a:

=b;

b:

=c;

writeln(’a=’,a,’’,’b=’,b);

end.

这边程序说明、解释,大家不用输入。

这时刚说明A,B,C三个变量,值均为0

程序开始

这时A的值为3

这时B的值为2

此句为打印语句,结果在输出屏幕上

这时C的值为3

这时A的值为2

这时B的值为3,此时A,B的值已经交换

打印语句

程序结束

上述程序是一个比较简单的顺序结构的程序,希望大家看懂程序每一句的作用,进一步理解PASCAL程序的语法规则。

在程序运行过程中各变量数值变化的情况如程序右边。

从上述程序中还可以看出,一个变量如果本身已经被赋过值,当再次赋值时,原来的值就不起作用,而被新的值所覆盖。

赋值时一定要考虑数据类型的匹配,如下列程序[例3、2]中一些赋值语句就会出错。

Programq32;

VarI,j,k:

integer;

R:

real;

S:

string;

Begin

I:

=123.456;

R:

=146;

R:

=trunc(1231.54346);

K:

=6/3;

S:

=123;

S:

=’aasd’+1234;

End.

说明I,J,K三个变量是整数型;

R是实数型;

S是字符串型;

程序开始

错误:

因为I是整数型变量,不能把一个实数型数值赋给它;

正确:

146也是一个实数;

正确:

trunc这个函数的返回值是整数型的,可以赋给实数型变量;

错误:

6/3虽然得到的值是2,但这个2是实数型,而不整数型的;

错误:

S是字符串型变量,而123是数值型值;

错误:

表达式中不能把字符串与数值相加。

程序结束

第二节、输出语句

计算机在运行一个程序时,当计算出结果后,是不会自动在屏幕上显示出结果的,而必须由用户用输出(打印)语句把结果显示(打印)到屏幕上。

输出语句就是在程序完成计算后,让用户能够控制计算机把结果显示出来。

PASCAL语言提供了两个输出语句:

WRITE(项目,项目,……);

WRITELN(项目,项目,……);

两个语句用法完全相同,只不过WRITE在输出所有项目后,光标不换行,停在最后一个输出项目后;而WRITELN在输出所有项目后,光标自动换行,跳到下一行开头位置。

PASCAL的输出屏幕与DOS下完全相同,共有25行,80列,即每行可显示80个字符。

例:

[例3、3]:

programq33;

vara,b,c:

integer;

begin

a:

=1;

b:

=a+1;

c:

=a+b;

write(a);

write(b);

writeln(c);

writeln;

writeln(a,b,c);

writeln(a:

4,b:

4,c:

4);

end.

输出结果是:

123

123

123

由上可以看出,一个WRITE语句输出完内容后,光标没有换行;一个WRITE或WRITELN语句中可输出多个项目;一个空的WRITELN语句的作用是换行(即空一行);在WRITE或WRITELN语句中如果输出数值型数据,可用如“A:

4”这种格式来控制变量A在输出时固定占用4个字符位(4个有效数字)。

如:

WRITELN(X:

6:

2);表示输出X的值时,给定6个有效数字,其中2个小数位,即另有3个整数位及一个小数点。

第三节、键盘输入语句

键盘输入语句的作用是,使用户能在程序运行过程中,从键盘对变量进行赋值。

PASCAL提供了两个键盘输入语句:

READ(变量名,变量名,……);

READLN(变量名,变量名,……);

其中变量名必须是在程序头部先说明过的,而在键盘输入时输入的数据也必须与其类型相符。

READ和READLN都可以一次性从键盘输入多个数据,每个数据用空格隔开。

假设READ或READLN要求输入X个数据,而我们输入时也输入了X个数据,这时READ与READLN的功能是完全一样的。

但是,如果要求输入X个数据,而我们输入了多于X个数据时(如X+N个),这时READ与READLN都是把前X个数据赋给X个变量,而剩下的多输入的N个数据就有如下情况:

如果是READ,则这N个数据被保存下来,到下一个READ/READLN语句时再赋给剩下的变量;而用的是READLN的话,这些数据将被放弃,不会留至下一个READ/READLN。

例如如下两个程序[例3、4]:

Programq341;

VarI,j,k,l:

integer;

Begin

Read(I,j);

Read(k,l);

Writeln(I,j,k,l);

End.

Programq342;

VarI,j,k,l:

integer;

Begin

Readln(I,j);

Readln(k,l);

Writeln(I,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 计算机软件及应用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1