当前位置:文档之家› 中学信息学奥林匹克竞赛培训教程

中学信息学奥林匹克竞赛培训教程

中学信息学奥林匹克竞赛培训教程Pascal语言和程序设计基础(第一部分)第一部分 Pascal语言和程序设计基础预备知识基本程序结构和几个概念::标识符保留字常量变量运算符表达式标准数据类型Pacal语言程序结构Program prog_name;var变量申明;begin程序体;end.例如:program pname;const n=4;type arr=array [1..4] of integer;var i:integer; a:arr;beginfor i:=1 to n do read(a[i]);readln;for i:=n downto 1 do write(a[i]:4);writeln;end.以上是一个PASCAL程序。

从键盘读入4个数据,逆序输出。

一般来说,一个PASCAL程序包括以下几个部分:程序头:program pname; 其中,program是保留字,表示程序从这个地方开始,pname是标识符,是程序的名字,可由程序员自定。

保留字是PASCAL选定的,具有固定意义和用法的专用单词或缩写,这些单词不允许作其它使用。

如上,“program”就有“程序从这里开始”这样一种特别的意义,而“const”就有“常量说明从这里开始”的意义。

我们不能再用“program”、“const”来作为其它变量、常量等的名字。

标识符是以字母开头的字母数字串,其长度最大为8个字符。

用来表示常量、变量、类型、文件、过程、函数和程序的名字。

如“pname”、“i”、“j”、“a1”就是合法的标识符;但“1a”、“#a”是非法的标识符。

有一点要注意的是,在PASCAL中,字母除了作为字符值或字符串值之外,其大小写是无关的。

如标识符“A1”和“a1”在PASCLA看来是同一标识符。

在PASCAL中除了保留字和自定义的标识符外,还有一类有特殊含义的标识符,这类标识符称为标准标识符。

它们是用来标记程序中经常引用的处理对象,如常量、函数。

(PASCAL定义的保留字和标准标识符附后)标识符在命名的时候要注意:1、名字要易记易读,有意义。

如8皇后问题程序名可以是“queen”也可以是“huanghou”等;2、不能用保留字、标准标识符作为自定义的标识符。

说明部分:const n=4;type ar=array [1..4] of integer;var i:integer; a:ar;其中,const部分是常量说明,说明一些在以下部分用到的,在整个程序执行过程不改变值的量。

这些量PASCAL称为常量。

在程序中用到这个值的地方均用常量名来代替。

如上题中定义“n=4”指本程序处理4个数值,在下面的程序体中就用“n”来代替具体的值(如for i:=1 to n)。

如果要改变处理数据个数,则只在常量说明部分修改“n=4”这一句就行了,而不用在程序中每一个用到的地方都加以修改。

这样不但在编写程序的时候很方便,也增加了程序的可读性,修改时更方便。

常量说明在保留字“const”下开始。

可以有多个语句。

常量说明语句的格式是:“常量名=值;”。

如“n=4;”。

n是常量名,4是该常量的值,“;”是语句分隔符。

type部分是类型说明,说明一些在以下部分用到的数据类型。

如数组、记录、指针等。

类型说明在保留字“type”下开始。

可以有多个语句。

类型说明语句的格式是:“类型名=类型说明;”。

如“ar=array [1..4] of integer;”。

ar是类型名,array [1..4] of integer是类型说明,“;”是语句分隔符。

var部分是变量说明。

变量是指在程序执行过程中可以通过赋值语句或读语句来改变值的量。

所有在程序中使用的变量都应该先在变量说明部分说明。

PASCAL中引用的每个变量都有“名字”和“类型”属性。

变量说明“说明”的主要工作是告诉PASCA下面程序中要用到这个名字的量,同时这个量的类型是什么。

变量说明在保留字“var”下开始。

可以有多个语句。

变量说明语句的格式是:“变量名:变量类型;”。

其中,如果有多个变量同一类型,则变量名与变量名之间用逗号分隔,变量名与变量类型之间用冒号分隔。

如“i:integer;”(i是变量名,integer是类型名)、“i、j:integer;”(i、j 是变量名,integer是类型名)……变量说明要注意:1、有效变量名称不能大于8个字符;2、变量名称必须以字母开头;3、在同一个有效范围内变量名称必须唯一。

各个说明部分均以该部分的保留字开始。

如“const”开始常量说明;“type”开始类型说明;“var”开始变量说明。

一个程序包含多少种类型的说明,看需要而定,不是每一个程序都必须同时包含这三种说明。

如果程序不须要用到常量,则常量说明部分可以省略;如果不须要用到类型说明,则类型说明可省……PASCAL还有一条规则:先说明后引用。

即所有在程序体中用到的“名字”必须都在说明部分说明过才能引用,否则就会出错,通不过编译,也执行不了。

如上,类型“ar”先在类型说明中定义,然后在变量说明中引用;变量i在变量说明中定义,在程序中引用。

程序体:beginfor i:=1 to n doread(a[i]);readln;for i:=n downto 1 dowrite(a[i]:4);writeln;end.程序体是以begin end.括起来的语句系列。

“end”后面是一个小圆点,标识着程序结束,整个程序只有一个是一个程序的主要部分。

编程要完成的工作大部分都在这里完成。

程序体中每一语句均以“;”作为结束符。

在书写程序时,以“分层缩进”的风格来写,以便提高程序的可读性。

所谓的“分层缩进”是指在逻辑上同一级的语句其起始点对齐,下一级的语句向右缩进。

运算符表达式PASCAL中的运算符有算术运算符和关系运算符。

和我们在数学课中学的基本一样但在写法上有些不同,在写程序时要特别注意写法的不同:+ 加号;- 减号;* 乘号( 数学中写为× );/ 除号( 数学中写为÷);MOD 取余如:8 MOD 2=0,7 MOD 2=1,2 MOD 3=2;DIV 取整如:8 DIV 2=4,7 DIV 2=3,2 DIV 3=0。

在PASCAL 只有上面6种数学运算。

其它的就只能利用这6种运算的组合通过语句来实现。

如a^2(a的平方)可以化成a*a。

> 大于;< 小于;<> 不等于(数学中写为≠);<= 小于等于(数学中写为≤);>= 大于等于(数学中写为≥),变量、常量通过运算符连接起来的式子我们称为表达式。

一个单独的变量或常量也是表达式。

如a、a+3、a*3+b都是表达式。

写表达式时要注意PASCAL表达式跟我们已经熟悉的数学表达式在格式上的区别:标准数据类型:整型实型字符型布尔型数据类型可以理解为一个取值范围和定义在这取值范围上的运算规则。

想一想我们对于数的理解:小学学自然数,范围是从0开始,那时候不知道有小数,也不知道有负数,允许的运算是+、-、×、÷,而且对于减法规定被减数要大于减数。

到了中学,数的范围扩大了,整数包括正数和负数,减法运算也不再有额外的规定的了。

同理,在PASCAL中“数据类型”也是一个取值范围和在它上面定义的运算规则。

PASCAL中定义好的标准数据类型一共有4个:整型、实型、字符型、布尔型,分别用保留字integer、real、char、boolean来标记它们。

其取值范围和运算如下:整型(integer):范围 -32768——32767;运算 + - * / mod div实型(real):范围运算 + - * /字符型(char):范围可显示的ASCII字符布尔型(boolean):范围 true false 运算 and or not在PASCAL中可使用的基本符号有:(1)大写字母 A—Z ;小写字母a—z ;数字0—9(2)其它字符 + — * / = > < >= <= <> :=() [ ] . ,:‘ $ ^ (* *) { }其中,有些符号是以双字符作为一个整体,拆开后就失去原有的意义。

如“<>”是一个表示“不等于”的关系运算符,如拆开后就变成了两个关系运算符,分别表示“小于”、“大于”。

PASCAL使用的保留字有:AND、ARRAY、BEGIN、CASE、CONST、DIV、DO、DOWNTO、ELSE、END、FILE、FOR、FUNCTION、GOTO 、IF、IN、LABEL、MOD、NIL、NOT、OF、PACKED、PROCEDURE、PROGRAM、RECORD、REPEAT、SET、THEN、TO、TYPE、UNTIL、VAR、WHILE、WITH、FORWARD常用的标准标识符有:标准常量:FALSE TRUE MAXINT MAXLONGINT标准类型:INTEGER BOOLEAN REAL CHAR TEXT标准文件:INPUT OUTPUT标准函数:ABS ACTAN CHR COS EOF ELON EXP LN ODDORD PRED ROUND SIN SQR SQRT SUCC TRUNC 标准过程:ASSIGN GET NEW DISPOSE PACK PUT READREADLN RESET REWRITE UNPACK WRITE WRITELN函数格式:function fun_name(参数表):数据类型;var 变量声明;begin函数体;end;例题:写出计算两个整数a,b的和函数add(a,b)。

过程格式:procedure proc_name(参数表);var 变量声明;begin过程体;end;例题:写出在屏幕打印一行文字:”hello,Pascal language is very easy!”函数和过程的调用:例题:从键盘输入:a,b两个数,输出由这两个数为直角边的三角形的面积。

【xoi00_01.pas】program xoi00_01;function area(const a,b:real):real;var s:real;begins:=a*b/2.0;area:=s;end;procedure myproc;var a,b:real;s:real;beginwrite('Please input two number a,b:');readln(a,b);s:=area(a,b);writeln('the area of trian is: ',s:5:2);end;{============= main program ================}beginmyproc;end.练习:一、判断以下标识符的合法性:a3 3a a17 abcd ex9.5 α β λ二、将下列的数学表达式改写成PASCAL表达式:b^2-4ac三、求下列表达式的值:20 mod 19,一五 mod 9, 7 div 8 ,19 div 3,(4>5) and (7<8),(8>9) or ( 9<10),2 and ((3=3) or (3<7))第一节顺序结构顺序结构是程序设计中最简单的结构,也是最基本的结构,它就是按照程序书写的顺序逐句执行程序中的指令。

相关主题