pascal初识.docx

上传人:b****3 文档编号:4592547 上传时间:2022-12-07 格式:DOCX 页数:120 大小:203.48KB
下载 相关 举报
pascal初识.docx_第1页
第1页 / 共120页
pascal初识.docx_第2页
第2页 / 共120页
pascal初识.docx_第3页
第3页 / 共120页
pascal初识.docx_第4页
第4页 / 共120页
pascal初识.docx_第5页
第5页 / 共120页
点击查看更多>>
下载资源
资源描述

pascal初识.docx

《pascal初识.docx》由会员分享,可在线阅读,更多相关《pascal初识.docx(120页珍藏版)》请在冰豆网上搜索。

pascal初识.docx

pascal初识

第一课 初识Pascal语言

  信息学奥林匹克竞赛是一项益智性的竞赛活动,核心是考查选手的智力和使用计算机解题的能力。

选手首先应针对竞赛中题目的要求构建数学模型,进而构造出计算机可以接受的算法,之后要写出高级语言程序,上机调试通过。

程序设计是信息学奥林匹克竞赛的基本功,在青少年朋友参与竞赛活动的第一步必须掌握一门高级语言及其程序设计方法。

一、Pascal语言概述

  PASCAL语言也是一种算法语言,它是瑞士苏黎世联邦工业大学的N.沃思(NiklausWirth)教授于1968年设计完成的,1971年正式发表。

1975年,对PASCAL语言进行了修改,作为"标准PASCAL语言"。

  PASCAL语言是在ALGOL60的基础上发展而成的。

它是一种结构化的程序设计语言,可以用来编写应用程序。

它又是一种系统程序设计语言,可以用来编写顺序型的系统软件(如编译程序)。

它的功能强、编译程序简单,是70年代影响最大一种算法语言。

二、Pascal语言的特点

  从使用者的角度来看,PASCAL语言有以下几个主要的特点:

  ⒈它是结构化的语言。

PASCAL语言提供了直接实现三种基本结构的语句以及定义"过程"和"函数"(子程序)的功能。

可以方便地书写出结构化程序。

在编写程序时可以完全不使用GOTO语句和标号。

这就易于保证程序的正确性和易读性。

PASCAL语言强调的是可靠性、易于验证性、概念的清晰性和实现的简化。

在结构化这一点上,比其它(如BASIC,FORTRAN77)更好一些。

  ⒉有丰富的数据类型。

PASCAL提供了整数、实型、字符型、布尔型、枚举型、子界型以及由以上类型数据构成的数组类型、集合类型、记录类型和文件类型。

此外,还提供了其它许多语言中所没有的指针类型。

沃思有一个著名的公式:

"算法+数据结构=程序"。

指出了在程序设计中研究数据的重要性。

丰富的数据结构和上述的结构化性质,使得PASCAL可以被方便地用来描述复杂的算法,得到质量较高的程序。

  ⒊能适用于数值运算和非数值运算领域。

有些语言(如FORTRAN66,ALGOL60)只适用于数值计算,有些语言(如COBOL)则适用于商业数据处理和管理领域。

PASCAL的功能较强,能广泛应用于各种领域。

PASCAL语言还可以用于辅助设计,实现计算机绘图功能。

  ⒋PASCAL程序的书写格式比较自由。

不象FORTRAN和COBOL那样对程序的书写格式有严格的规定。

PASCAL允许一行写多个语句,一个语句可以分写在多行上,这样就可以使PASCAL程序写得象诗歌格式一样优美,便于阅读。

  由于以上特点,许多学校选PASCAL作为程序设计课程中的一种主要的语言。

它能给学生严格而良好的程序设计的基本训练。

培养学生结构化程序设计的风格。

但它也有一些不足之处,如它的文件处理功能较差等。

三、Pascal语言程序的基本结构

  任何程序设计语言都有着一组自己的记号和规则。

PASCAL语言同样必须采用其本身所规定的记号和规则来编写程序。

尽管不同版本的PASCAL语言所采用的记号的数量、形式不尽相同,但其基本成分一般都符合标准PASCAL的规定,只是某些扩展功能各不相同罢了。

下面我们首先来了解Pascal语言的程序基本结构。

  为了明显起见先举一个最简单的PASCAL程序例子:

【例1】

  从这个简单的程序可以看到:

  ⒈一个PASCAL程序分为两个部分:

程序首部和程序体(或称分程序)。

  ⒉程序首部是程序的开头部分,它包括:

  ⑴程序标志。

用"program"来标识"这是一个PASCAL程序"。

PASCAL规定任何一个PASCAL程序的首部都必须以此字开头。

在turbopascal语言中,首部也可省略。

  ⑵程序名称。

由程序设计者自己定义,如例中的exam1。

  在写完程序首部之后,应有一个分号。

  ⒊程序体是程序的主体,在有的书本里也称"分程序"。

程序体包括说明部分(也可省略)和执行部分两个部分。

  ⑴说明部分用来描述程序中用到的变量、常量、类型、过程与函数等。

本程序中第二行是"变量说明",用来定义变量的名称、类型。

  PASCAL规定,凡程序中用到所有变量、符号常量、数组、标号、过程与函数、记录、文件等数据都必须在说明部分进行定义(或称"说明")。

也就是说,不允许使用未说明先使用。

  ⑵执行部分的作用是通知计算机执行指定的操作。

如果一个程序中不写执行部分,在程序运行时计算机什么工作也不做。

因此,执行部分是一个PASCAL程序的核心部分。

  执行部分以"begin"开始,以"end"结束,其间有若干个语句,语句之间以分号隔开。

执行部分之后有一个句点,表示整个程序结束。

  ⒋PASCAL程序的书写方法比较灵活。

当然,书写不应以节省篇幅为目的,而应以程序结构清晰、易读为目的。

在编写程序时尽量模仿本书中例题程序格式。

  ⒌在程序中,一对大括号间的文字称为注释。

注释的内容由人们根据需要书写,可以用英语或汉语表示。

注释可以放在任何空格可以出现的位置。

执行程序时计算机对注释不予理睬。

四、TurboPascal语言系统的使用

  目前,常用的Pascal语言系统有TurboPascal7.0与BorlandPascal7.0,下面我们就来学习TurboPascal7.0系统的使用。

1.系统的启动

  在运行系统目录下的启动程序TURBO.EXE,即可启动系统。

屏幕上出现如图1所示的集成环境。

2.TurboPascal系统集成环境简介

  最顶上一行为主菜单。

中间蓝色框内为编辑窗口,在它个编辑窗口内可以进行程序的编辑。

最底下一行为提示行,显示出系统中常用命令的快捷键,如将当前编辑窗口中文件存盘的命令快捷键为F2,获得系统帮助的快捷键为F1,等等。

    

3.新建程序窗口

  按F10进行主菜单,选择FILE菜单,执行其中New命令。

就可建立一个新的程序窗口(默认文件名为Noname00.pas或Noname01.pas等)。

4.程序的输入、编辑与运行

  在当前程序窗口中,一行一行的输入程序。

事实上,程序窗口是一个全屏幕编辑器。

所以对程序的编辑与其它编辑器的编辑方法类似,这里不再重复。

  当程序输入完毕之后,一般要先按Alt+F9(或执行compile菜单中compile命令)对程序进行编译。

如果程序有语法错误,则会在程序窗口的第一行处显示第一个红色错误信息。

若无语法错误,则窗口正中央会出现一个对话框,提示编译成功。

接下来,我们可以运行程序了。

程序的运行可以通过按ALT+R打开RUN菜单中的RUN命令,或直接按快捷键CTRL+F9。

则可以在用户窗口中输出运行结果。

通常在程序运行结束后系统回到Pascal系统的集成环境,因此要查看运行结果,要按ALT+F5将屏幕切换到用户屏幕。

5.程序的保存与打开

  当我们想把程序窗口中的程序存入磁盘时,可以通过按F2键(或执行File菜单中的save命令)来保存程序。

第一次保存文件时屏幕上会出现一个对话框要求输入文件名(默认扩展名为.pas)。

  当我们要将磁盘上的程序文件中的PASCAL程序装入窗口时,可按F3(或执行File菜单中的Open命令)来装入程序,此时系统也会弹出一个对话框要求输入要打开的文件名,或直接在文件对话框列表中选择所要的文件,然后回到打开文件。

五、第一个程序

  下面程序在运行时,会提示输入一个圆的半径,然后会在屏幕上画一个圆。

按回车后程序结束回到程序窗口。

Programex1;

Usesgraph;

VarGm,Gd,R:

integer;

Begin

Gd:

=0;

Write('Pleaseentertheradius:

');readln(R);

Initgraph(Gm,Gd,'');

Setcolor(Green);

Circle(320,240,R);

Readln;

Closegraph;

End.

  注意,如果上面程序运行时会出现初始化图形错误,请将系统目录下BGI子目录EGAVGA.BGI和UNITS子目录中的Graph.tpu拷贝到系统目录下BIN目录即可。

上节课,我们学习了Pascal语言的程序基本结构,在一个程序中,所有的操作都由执行部分来完成,而执行部分又都是由一个个语句组成的。

因此,下面开始我们要学习pascal语言的基本语句,并且在学习过程中逐步学会程序设计的基本方法。

  这节课我们要学习两种语句,即赋值语句与输出语句。

在语句学习之前我们要先了解一些pascal语言的基础知识。

一、常量、变量与算术表达式

(一)常量

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

如123,145.88,'abc',true等。

  ⒈整型常量

  整型常量采用我们平常使用的十进制整数表示。

如138,0,-512等都是整型常量,而18.或18.0都不是整型常量。

  pascal中有一个标准标识符Maxint,它代表所使用的计算机系统允许的最大整型数,而最小的整型数即为-Maxint-1。

TurboPascal还定义了长整数常量MaxLongInt,其值为2147483647。

  ⒉实型常量

  实型常量包括正实数、负实数和实数零。

pascal中表示实型常量的形式有两种。

  ⑴十进制表示法

  这是人们日常使用的带小数点的表示方法。

  如0.0,-0.0,+5.61,-8.0,-6.050等都是实型常量,而0.,.37都不是合法的实数形式。

  ⑵科学记数法

  科学记数法是采用指数形式的表示方法,如1.25×105可表示成1.25E+05。

在科学记数法中,字母"E"表示10这个"底数",而E之前为一个十进制表示的小数,称为尾数,E之后必须为一个整数,称为"指数"。

如-1234.56E+26,+0.268E-5,1E5是合法形式,而.34E12,2.E5,E5,E,1.2E+0.5都不是合法形式的实数。

  无论实数是用十进制表示法还是科学表示法,它们在计算机内的表示形式是一样的,总是用浮点方式存储。

  和整数相比,实数能表示的范围大得多,但值得注意的是实数的运算整数的运算速度慢且无法像整数那样精确表示,只能近似表示。

⒊字符常量

  在Pascal语言中,字符常量是由单个字符组成,所有字符来自ASCII字符集,共有256个字符。

在程序中,通常用一对单引号将单个字符括起来表示一个字符常量。

如:

'a','A','0'等。

特殊地,对于单引号字符,则要表示成''''。

对于ASCII字符集中,按每个字符在字符集中的位置,将每个字符编号为0-255,编号称为对应字符的序号。

4.布尔常量

  布尔型常量仅有两个值,真和假,分别用标准常量名true和false表示。

它们的序号分别为1和0。

5.符号常量

  一个常量即可以直接用字面形式表示(称为直接常量,如124,156.8),也可以用一个标识符来代表一个常量,称为"符号常量"。

但符号常量必须在程序中的说明部分定义,也就是说先定义,后使用。

  定义符号常量的一般格式:

CONST

<常量标识符>=<常量>

说明:

常量说明部分以关键字const开头,后面的标识符为常量标识符,其中"="号后的常量为整数、实数、字符、字符串(字符、字符串常量在后面章节中将作介绍)。

而且,在常量说明部分可以将几个常量说明成符号常量,共用一个关键字"const"。

例如:

则在本程序中pi和zero作为符号常量,分别代表实数3.14159和整数0。

也就是说,常量说明部分既定义了常量名及其值,又隐含定义了常量的类型。

  关于符号常量,应注意下列几点:

  ⑴符号常量一经定义,在程序的执行部分就只能使用该常量标识符,而不能修改其值。

  ⑵使用符号常量比直接用数值更能体现"见名知义"的原则,也便于修改参数,故一个较好的程序中,应尽量使用符号常量,在执行部分基本上不出现直接常量。

  

(二)变量

  变量代表了一个存储单元,其中的值是可变的,故称为变量。

如游戏"魂斗罗"中玩者命的个数最初为3,当你死了一次命减少一,这里命的个数就是一个变量(或者说命的个数存储在一个存储单元中)。

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

  变量有三个要素是:

变量名、变量类型、变量值。

  一个程序中可能要使用到若干个变量,为了区别不同的变量,必须给每个变量(存贮单元)取一个名(称为变量名),该变量(存贮单元)存放的值称为变量的值,变量中能够存放值的类型为变量的类型。

例如"魂斗罗"游戏中用于存放"命"的变量,在游戏程序中的名字可取为N,它的类型为整型,游戏初始时这个变量的值为3。

  1.变量名

  用一个合法的标识符代表一个变量。

如n,m,rot,total等都是合法变量名。

在程序中用到的变量必须在说明部分加以说明,变量名应遵循自定义标识符的命名规则,并注?

quot;见名知义"的原则,即用一些有意义的单词作为变量名。

  "自定义标识符"的命名规则为:

自定义标识符必须以字母(包含下划线"_")开头,后面的字符可以是字母或数字。

标识符长度不超过63个字符。

  2.变量的类型

  常量是有类型的数据,变量在某一固定时刻用来存放一个常量,因此也应有相应的类型。

如整型变量用来存放整数,实型变量用来存放实数。

  3.变量说明

  在程序中若要使用变量,变量的名称及类型在程序的变量说明部分加以定义,变量的值则在程序的执行部分中才能赋给。

  变量说明的一般格式:

  VAR

<变量标识符>[,<变量标识符>]:

<类型>;

(中括号内部分表示可省,下同)

  其中VAR是pascal保留字,表示开始一个变量说明段,每个变量标识符或由逗号隔开的多个变量标识,必须在它的冒号后面说明成同一类型。

一个程序中,可以说明许多不同类型的变量,每种类型变量之间用分号隔开,共用一个VAR符号。

例如:

var

age,day:

integer;

amount,average:

real;

  其中,Integer(整型)、Real(实型)是标准标识符,它们是"类型标识符",代表了确定的类型,如age和day被定义为整型变量,amount和average被定义为实型变量。

  一旦定义了变量,就确定了它的类型,也就是说,就确定了该变量的取值范围和对该变量所能进行的运算。

(三)算术表达式

⑴算术表达式的定义

  pascal语言中的算术表达式是由符合pascal语法规定的运算对象(包括常量、变量、函数)、算术运算符、圆括号组成的有意义的式子。

如:

A+3.14159*5/8.4-Abs(-1123)

⑵算术运算符

  常用的有以下6个算术运算符:

  ① +(加)

  ② -(减)

  ③ *(乘)

  ④ /(实数除)得到结果为实型.如5.0/2.0=2.5,5/2=2.5,4/2=2.0而不等于2。

  ⑤ DIV(整除)DIV它要求除数和被除数均为整型,结果也为整型。

如10DIV2=5,10DIV3=3,5DIV10=0.-15DIV4=-3。

DIV运算只取商的整数部分,参与DIV运算的两个对象不能为实型。

  ⑥ mod(求余),也只能用于整数运算,结果为整数。

例如:

10mod4=2,-17mod4=-1,4mod(-3)=1,-4mod3=-1,即amodb=a-(adivb)*b。

(3)运算优先顺序

  如果一个表达式里出现两个或两个以上的运算符,则必须规定它们的运算次序。

pascal规定:

  ①表达式中相同优先级的运算符,按从左到右顺序计算;

  ②表达式中不同优先级的运算符,按从高到低顺序计算;

  ③括号优先级最高,从内到外逐层降低;

在算术运算中运算符的优先顺序与数学上的四则运算一致,即"先乘除后加减"(注:

"MOD"、"DIV"运算的优先级与"*"、"/"相同)。

二、赋值语句

  变量既然代表一个存储单元,其值是可变的,那么其中的值是怎么提供的,又是怎么改变的呢?

可以通过赋值语句来进行。

1、赋值语句的格式

变量名:

=表达式;

其中":

="称为赋值号。

2、执行过程

计算机先计算赋值号右边表达式的值,然后将表达式的值赋给变量名代表的变量。

如:

A:

=(9*8)-(2-1);A:

=A+1

三、输出语句

输出语句的作用是将程序运算的结果输出到屏幕或打印机等输出设备。

这里通常是指输出到屏幕。

(一)输出语句的两种格式

1、write语句

格式Write(表达式1,表达式2,……);

如:

write(1,2,3,4);

write(1.2,3.4,5);

write('MynameisLiping');

2、writeln语句

格式:

Write(表达式1,表达式2,……)或writeln

(二)输出语句的功能

  计算机执行到某一输出语句时,先计算出输出语句中的每个表达式的值,并将每一个表达式的值一个接一个地输出到屏幕上。

  Write语句与writeln语句格式上都相似,但它们在功能上有所不同,两个语句的区别在于,write语句将其后括号中的表达式一个接一个输出后,没有换行。

而writeln语句则在输出各个表达式的值后换行。

例如以下两个程序段的输出分别为:

write(1,2,3,4);write(5,6);

输出为:

123456

writeln(1,2,3,4);write(5,6);

输出为:

1234

56

四、应用例析

例1:

  某仓库5月1日有粮食100吨,5月2日又调进20吨,5月3日卖出库存的3分之二,5月4日又调进库存的3倍粮食,问该仓库从5月1日到5月4日期间每天的粮食分别是多少吨?

(输出每天的库存量)

分析:

在这个问题中,主要要描述从5月1日到5月4日期间仓库的粮食库存量,且易知它是不断变化的。

因此我们可以用一个变量A来描述仓库的粮食库存量。

程序可写如下:

Programex1;

VarA:

integer;

Begin

A:

=100;Writeln('5/1:

',A);

A:

=A+20;Writeln('5/2:

',A);

A:

=Adiv3;writeln('5/3:

',A);

A:

=A*4;writeln('5/4:

',A);Readln;

End.

例2:

  有三个小朋友甲乙丙。

甲有50粒糖果,乙有43粒糖果,两有13粒糖果。

现在他们做一个游戏。

从甲开始,将自己的糖分三份,自己留一份,其余两份分别给乙与丙,多余的糖果自己吃掉,然后乙与丙也依次这样做。

问最后甲、乙、丙三人各有书多少粒糖果?

分析:

  这个问题中我们关心的是在游戏过程中每个小朋友的糖果个数,且他们所拥有的的糖果数是在变化的。

因此可用a,b,c三个变量分别存放甲乙丙三个小朋友在某一时刻所拥有的糖果数。

对于每人,分糖后,他的糖果数一定为原来的糖果数div3(因为分糖过程糖果的数目不一定都刚好分完,用整除恰恰可以表示多余的糖自己吃掉)。

而其他两人则增加与这个小朋友现在拥有的一样的糖果。

程序可写如下:

programex2;

 varA,B,C:

integer;

begin

 A:

=50;B:

=43;C:

=13;{初始时每个小朋友所拥有的糖果数}

 A:

=Adiv3;B:

=B+A;C:

=C+A;{甲小朋友分糖果后,每个人拥有的糖果数变化情况}

 B:

=Bdiv3;A:

=A+B;C:

=C+B;{乙小朋友分糖果后,每个人拥有的糖果数变化情况}

 C:

=Cdiv3;A:

=A+C;B:

=B+C;{丙小朋友分糖果后,每个人拥有的糖果数变化情况}

 writeln('A=',A,'B=',B,'C=',C);{输出结果}

 readln;

end.

注:

  上程序中倒数第三行中'A='表示一个字符串(即用一对单引号括起来的一串字符),对于字符串,输出字符串的内容(即引号内的所得字符,而引号不输出)。

以上程序的运行结果为:

A=51B=35C=16

练习二

1、已知某梯形的上底A=13,下底B=18,高H=9,求它的面积S。

2、某机关组织游泳比赛。

将一堆西瓜分给前三名,把该堆西瓜中的一半又半个西瓜奖给第一名;剩下的一半又半个西瓜给第二名;把最后剩下的一半又半个西瓜给第三名,但每次分时并没切开任何一个西瓜,且刚好西瓜分完。

问前三名各分到多少个西瓜

3、已知某圆的半径R=139,求该圆的周长C与面积S?

第三课带格式的输出语句及输入语句

一、写语句的输出格式

  在pascal语言中输出数据时是可以按照一定格式的,对整数隐含的输出形式为按十进制数形式。

对实数的输出,隐含的形式是科学记数法形式(如果不想用科学记数法输出而用小数形式输出,要自己另行定义)。

  事实上,输出语句中的每个输出项中的表达式之后可以加上格式说明,若输出项后没有加格式说明,则数据按系统隐含的格式输出,还可加上一定格式符号按特定格式输出。

⒈隐含的输出格式

  pascal语言为整型量、实型量、布尔型量和字符串(用一对单引号括起来的字符序列)规定了每种数据所占的宽度(即一个数据占几列),一个数据所占的宽度称为"场宽"或"字段宽"。

系统给出的隐含场宽称为标准场宽。

每一种pascal版本给定的标准场宽不尽相同。

下表给出标准pascal和pc机上两种pascal版所规定的标准场宽。

       标准场宽

  ━━━━━━━━━━━━━━━━━

  数据类型 标准pascalTurbopascal

  ─────────────────

  integer10实际长度

  real2217

  布尔型104或5

  字符串串长串长

  ━━━━━━━━━━━━━━━━━

在TurboPascal系统中,对于整型字符串的输出都是按数据本身长度输出,对于布尔型数据(只有True和False两种值),TRUE为4列,FALSE为5列,一律采用大写输出。

而real型数据的输出时,则按17列输出,其中第一列为符号位,正号不显示,后四位为"E±nn",中间的12列为尾数部分。

如:

writeln(sqrt(75));

则输出□8.6602540379E+00。

而writeln(sqrt(81));

则输出□9.0000000000E+00。

有时,在程序中往往根据实际情况,需要自己定义场宽。

⒉指定场宽

  在写语句中输出项含有格式符号时,就是为了指定场宽。

⑴指定单场宽.

  格式:

write(表达式:

N)或writeln(表达式:

N),其中N为自然数,指定单场宽后,所有数据不再按标准场宽输出,而按指定场宽输出。

若数据实际长度小于指定场宽时,则一律"向右靠齐,左留空格"。

  如write(1234:

8);write('abcdef':

12)

输出结果:

□□□□1234□□□□□□abcdef

  对于标准实型数据指定单场宽时,如果场宽大于标准场宽时,右靠齐按标准场宽格式输出17位,左留空格。

若场宽小于标准场宽时,第一位仍为符号位,最后四位仍为"E±nn",中间部分为尾数显示部分。

如果指定的宽度小于8位,则数据按8位格式"*.*E±nn"输出。

⑵指定双场宽

  如果输出项是实数时,如果希望输出的实数不用科学记数法输出,而用小数形式输出,可以用指定双场宽方法输出。

  双场宽输出格式为:

write(实型表达式:

m:

n),其中m和n都是自然数,m用以指定整个数据所

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

当前位置:首页 > 初中教育 > 语文

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

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