关于全国奥林匹克计算机竞赛初中组
第2章Pascal语言的基础知识
第三章序列结构编程
第四章选择结构化程序设计。
第五章循环结构规划
仅此而已。1.1帕斯卡编辑环境
2.1帕斯卡字符和符号
1.标识符
(1)标识符的定义:标识符是以字母开头的字母数字序列,有效长度为63个字符,大小写相等。可用于标记常量、变量、程序、函数等。例如,在示例1.1中,Area(程序名)、pi(符号常量)、s和r(变量名)都是标识符。
(2)标识符的分类:
A.保留字(关键字)
所谓保留字,就是在Pascal语言中有特定的含义。你必须理解它的意思,才能正确使用它,否则就会产生错误。标准Pascal语言有35个保留字,Turbo Pascal语言有51。以下是Pascal语言中的保留字:
AND,ARRAY,BEGIN,CASE,CONST,DIV,DO,DOWNTO,ELSE,END,FILE,FOR,fun,GOTO,IF,IN,LABEL,MOD,NIL,NOT,OF,OR,PACKED,PROCEDURE,PROGRAM,RECORD,REPEAT,SET,THEN。
b标准标识符:指Pascal语言中预定义的标识符,具有特殊含义。
下面列出了Turbo Pascal语言中一些常用的标准表标识符:
标准常数False Maxint True
标准类型布尔字符实数整数
标准函数Abs Arctan Chr Cos Eof Eoln Exp
在奇数Ord Pred回合中
Sqrt成功中继c
标准过程Dispose Get New Pack Page Put Read
Readln复位重写解包写入写入
标准文件输入输出
C.自定义标识:根据自己的需求自行定义。
(1)所选标识符不能与保留字相同。
(2)语法上,预定义的标准标识符允许作为你自己定义的标识符,但最好不要使用。
下面列出了定义标识符时可以使用的字符:
a——Z;a——z;0——9;+,-,*,/,=,& lt& gt,& lt=,& gt=,& lt,& gt,(,),[,],{,},:=,,,;,.,:,..,',^
2.2帕斯卡数据类型
数据是编程的重要内容,它的重要特征——数据类型——决定了数据可以参与的形状、取值范围和运算。
Turbo Pascal提供了丰富的数据类型,分为简单类型、构造类型和指针类型三大类,其中简单类型又分为标准型(整型、实型、字符型和布尔型)和自定义型(枚举型和子边界型),构造型又分为数组型、集合型、记录型和文件型。除了指针类型是动态数据类型以外,这些数据类型都是静态数据类型。在这些数据类型中,简单类型都是有序类型,除了实型之外的简单类型都是有序类型。所谓有序型,是指它们的值不仅有序而且有序号。
本文主要介绍四种常用的数据类型:整型、实型、字符型和布尔型。
1.整数
整数数据用于存储整数。Turbo Pascal支持五种预定义的整数,分别是短整型、整型、长整型、字节型和字型。Turbo Pascal使用相同的名称作为它们的标识符。每种类型指定相应的整数值范围和占用的内存字节数。
以字节格式键入数值范围
Shortint-128...128 1有符号8位
因特尔-32768...32767 2有符号16位
Longint-2147483648...2147483647 4有符号32位
字节0..255 1有符号8位
单词0..65535 2有符号16位。
Turbo Pascal指定了两个预定义的整数常量标识符maxint和maxlonint,它们分别代表某些常量值。maxint是32767,longint是2147483647,它们的类型分别是Integer和longint。
2.实型
实数数据用于存储实数。Turbo Pascal支持五种预定义的实数类型,分别是real(基本实数类型)、single(但精确实数类型)、double(双精度实数类型)、extended(扩展实数类型)和comp(汇编实数类型)。Turbo Pascal分别使用相同的名称作为它们的标识符。每种类型都指定了相应的实数范围、占用的内存字节数以及它们可以达到的精度。
以字节表示的数值范围类型的有效位数
真实2.9e-39..1.7e38 6 11..12
单个1.5e-45..3.4e38 4 7..8
双5.0e-324..1.7e308 8 15..16
Turbo Pascal支持两种执行实际操作的代码生成模式:软件模拟模式和80x87浮点模式。除了real可以直接运行在软件仿真模式下,其他类型都必须运行在80x87浮点模式下。
3.布尔型
布尔数据用于存储逻辑值(布尔值)。布尔值只有两个:假和真,假的序号是0,真的序号是1。False和true是预定义的常量标识符,分别表示逻辑false和逻辑true。真实的
4.字符类型
Char用作字符类型的标识符。字符类型必须用单引号括起来。字母作为字符类型时,大小写不等价,字符类型只允许单引号中有一个字符,否则就是字符串。
2.3常量和变量
1.常数
(1)常数:在程序的整个运行过程中其值保持不变的量。
(2)常量定义:常量定义出现在描述部分。其语法格式为:
常数
& lt常量标识符> = & lt常数>;
...
& lt常量标识符> = & lt常数>;
常数标识符的类型由定义它的常数的类型决定。例如,const a=12暗示A是整数;Const r=3.21暗示R是实型。......
(3)常量定义部分必须以保留字const开头,可以包含一个或几个常量定义,每个常量以分号结尾。
(4)Turbo Pascal型常数
类型常量,也称为变量常量,是Turbo Pascal的一个扩展特性。类型常量的定义不同于标准Pascal规定的常量和变量的定义。类型常数定义的语法格式:
常数
& lt简单类型常量标识符>;:简单类型=常量;
例如:
常数
计数器:整数= 0;
标志:boolean = true
索引:0..100=0;
2.可变的
(1)变量:在程序运行过程中其值可以改变的量。
(2)变量描述:变量描述出现在描述部分。其语法格式为:
定义变量
& lt变量标识符列表>;:& lttype >;
...
& lt变量标识符列表>;:& lttype >;
其中,保留字var表示变量描述部分的开始。变量标识符列表是用逗号分隔的标识符序列,冒号后面的类型是类型标识符。每个变量描述都以分号结束。
例如:
定义变量
a、b、c:整数;
m,n:真实;
2.4标准功能
1.算术函数
函数标识符参数类型表示结果类型
Abs整数和实绝对值与自变量相同。
反正切整数
Cos整数,实余弦实数
指数整数,实数指数实数类型
Frac整数,实数小数部分实数
Int整数,实数整数,部分实数整数
整数,实数自然对数实数类型
Pi自变量pi实型
正弦整数,实数正弦实数
Sqr整数和实平方是同一个自变量。
Sqrt整数,实数平方根实数类型
例如:ABS(-4)= 4 ABS(-7.49)= 7.49 arctan(0)= 0.0。
sin(pi)= 0.0 cos(pi)=-1.0 frac(-3.71)=-0.71
int(-3.71)=-3.0 sqr(4)= 16 sqrt(4)= 2
2.标准函数
函数标识符参数类型表示结果类型
奇整数判断奇布尔类型
Pred离散型求前向收敛自变量
连续相同自变量的Succ离散型
例如:odd(1000)= false pred(2000)= 1999 succ(2000)= 2001。
odd(3)= true pred(' x ')= ' w succ(' x ')= ' y '
3.转移函数
函数标识符参数类型表示结果类型
对应于chr字节独立变量的字符类型
顺序离散型自变量对应序号长。
舍入实数舍入长度
Trunc实数截断整数长度
例如:chr(66)= ' b ' ord(' a ')= 65 round(-4.3)=-5 trunc(2.88)= 2。
4.杂项功能
函数标识符参数类型表示结果类型
Random没有自变量[0,1,随机实数为实数。
随机字[0,独立变量之间的随机整数]字
Randomize初始化没有参数的内部随机数生成器longint。
大写字符类型将小写英文字母转换为大写字符。
Downcase字符类型将小写英文字母更改为大写字符。
2.5运算符和表达式
65438+
(1)运算符
是实打实的类型。如果所有操作数都是整数,并且运算不是除法,则结果是整数。如果运算是除法,结果是实数类型。算术运算符
运算符运算操作数结果类型
+加整型,实型只要有一个操作数是实型,结果就是
-减法整数,实数类型是实数类型,如果所有操作数都是整数。
*整数相乘,实数类型且运算不是除法,则结果是整数。
/Divide integer,real type如果运算是除法,结果是real type。
Div整除整数整数
模整数整数
B.逻辑运算符
运算符运算操作数结果类型
非逻辑、非布尔、布尔
与逻辑和布尔布尔类型
或逻辑或布尔布尔
异或逻辑异或布尔布尔
C.关系运算符
运算符运算操作数结果类型
=等于简单类型布尔类型
& lt& gt不等于简单类型布尔类型
& lt布尔类型小于简单类型
& gt大于简单类型的布尔类型
& lt=小于或等于简单类型的布尔类型
& gt=大于或等于简单类型的布尔类型
(2)优先权
操作员优先级
不是1(高)
*、/、div、mod和2
异或、+、-或3
in,=,& lt& gt,& gt=,& lt=,& lt& gt4(低)
2.表示
(1)算术表达式:算术表达式是用算术运算符连接常数、变量和函数的公式。算术表达式中每个运算符的顺序是:()-& gt;功能-& gt;*,/,div,mod-& gt;+,1
(2)布尔表达式:Turbo Pascal为布尔表达式提供了以下基本运算:逻辑运算和关系运算。
(3)数学表达式和pascal语言表达式的区别
数学表达式帕斯卡表达式注意
2a 2*a *不能省略。
a \b a/b除法符号的书写
a≠b a & lt;& gtb不等式符号的书写
a≤b a & lt;=b小于或等于符号。
3.1赋值语句
PASCAL有两个可以改变变量值的语句。赋值语句是其中之一(另一个是read语句)。赋值,顾名思义就是给某个量赋值。可以理解为变量相当于事物的容器,赋值的过程就是把事物放入容器的过程。赋值语句的格式如下:
变量:=表达式;
写赋值语句有以下几点要注意:
1,分配号":= "
赋值号由两个字符组成,是一个运算符。如果把这两个字符分开,它们还有其他的含义:“:”是分隔符,“=”是关系运算符,决定两个对象是否相等。刚写完程序的同学要特别注意这一点。
例子:a,b:整数;-是一个声明。“:”是变量表和变量类型的分隔符。
a = b——这是一个表达式。它的值是布尔类型的量:真或假。
a:= 3;-是一个声明。将整数常量值3赋给整数变量a。
2.首先应该解释变量。
出现在赋值号左边的变量应该先在程序头的描述部解释,否则编译时会出错。
3.表达式必须有明确的值。
出现在赋值号右边的表达式必须是可求值的。也就是说,运算之后,可以得到一个具体明确的值。想想看,如果你连自己的价值都不知道,怎么把价值“给”给别人呢?
4.分配号两边的数据类型必须相同或兼容。
我们知道,PASCAL中的变量和常量都有一个属性叫做“数据类型”。只有那些具有相同或兼容数据类型的用户才能相互赋值。
这句话怎么理解?比如我们用小茶杯泡功夫茶,用饭碗盛饭。如果用饭碗泡功夫茶,用小杯子盛米饭,一定很搞笑,不可行。回到PASCAL,如果赋值号左边的变量是整数,那么右边表达式的值也应该是整数;如果赋值号左边的变量是字符类型,那么右边表达式的值类型也应该是字符类型...否则,将会出现错误。这是数据类型相同的情况。
对于数据类型兼容性,我们也可以用一个例子来帮助理解。我们都喝过功夫茶和一大杯茶。把功夫茶倒在大茶杯里,一般没有问题;但是如果把大杯的茶倒进功夫杯呢?可能小杯装不下大杯里的茶,茶就“溢出”了。在PASCAL中也会出现这种情况。当一种数据类型的值范围包含另一种数据类型的值范围时,可能会出现类型兼容。实数类型和整数类型、整数类型、字符类型以及它们各自的子边界类型...如果把整数值赋给实变量,把整数子界值赋给整型变量,就不会出错;但如果反过来,就会出现“溢出”,就会出错。
所以在写赋值语句的时候,要注意两边的类型是否匹配。
示例:有如下步骤:
var a,b:整数;c:真实;d:0..100;
开始
a:= 100;
b:= a;
{ -上述值被赋予相同的数据类型}
d:= 100;
b:= d;
c:= b;
{ -
d:= b;
a:= c;
{ -上面两条赋值语句都溢出了,编译时出错。}
结束。
3.2阅读陈述
read语句和赋值语句一样,可以改变变量的值。与赋值语句不同,读语句从键盘或文件中接收值来给变量赋值,而赋值语句是直接从程序语句中获取的。阅读声明的格式如下:
Read(变量名列表);
Readln(变量名表);
readln
Reading语句是编程中最常用的语句之一。使用时有几点需要注意:
1,变量列表。写在括号里的变量要在变量描述里提前说明;变量之间用“,”分隔;
示例:
var a,b:整数;
读(a,b);
2.从键盘接收数据时,要注意不同数据类型数据的分隔符不同。所谓分隔符,就是两个完整数值之间的标记。也可以理解为,计算机从键盘读取数据时,一旦遇到分隔符,就认为当前数据读取完毕,可以赋给相应的变量。各种数据类型的分隔符如下:
数值类型(包括整数类型、实数类型及其子边界类型)以空格或回车符作为分隔符;
字符型不需要分隔符(因为字符型数据的长度是固定的,只有一个);
字符串由回车符分隔。
3.注意read和readln的区别。
示例:有两个程序具有相同的变量,如下所示。我们可以通过比较read和readln对于不同read语句的执行结果的异同,来了解两者的区别。
变量描述var a,b,c,d:整数;执行结果
a b c d
程序段1读作(a);
readln(b,c);
改为(d);
1 2 3 6
程序段2 readln(a);
读作(b,c);
阅读(d) 1 6 7 8
输入数据1 2 3 4 5
6 7 8
当程序段被执行时,“读(a);”语句接收第一个数据1,并将其赋给变量a;然后执行第二条语句“readln(b,c);”,接收第一行数据中的2和3,分别赋给变量b和c。与此同时,这个银行里的其他所有数据都被屏蔽了,也就是被宣布无效。程序段2的实施也是如此。
所以我们可以得出一个结论,read只接收数据的语句,在readln语句接收到数据后,也声明了其他所有对等体的数据无效。
4、“阅读”语句从键盘接收回车。这种说法通常用在需要停顿的地方。比如输出的时候,用来等程序员看清楚结果。
3.3写一份声明
Write语句是Pascal中唯一能发出运算结果并显示在显示屏上的语句。格式如下:
写(输出刻度);{输出后不换行}
Writeln(输出规模);{输出后换行}
writeln{输出回车符}
使用写语句也有一些小问题需要注意。
1,输出可以是:
可变。输出变量的值。输出多个变量时,变量之间用“,”分隔。
表情。输出是表达式的值。
不变。直接输出常量值。
2.字段宽度限制在以不同格式输出数值时的作用:
示例1:输出多个空格。
写(':n);句子的意思是输出冒号前的数据项,宽度为n个字符。如果数据项的长度小于n,前面用空格填充;如果数据项的长度大于n,则以实际长度输出。如上输出n个空格。
示例2:数据项间隔。
比如最多输出四位数据:write(x:5)。数据之间至少有一个空格。
例3:实际数据小数位数的确定。
当真实数据没有格式限制时,以科学计数的形式输出,与我们一般的书写习惯不同。如果字段宽度有限,它会产生不同的效果:
var a:真实;
开始
a:= 15/8;
writeln(a);{输出1.875000000e+00}
wiiteln(甲:0:2);{输出1.88的整数部分按实际位数输出,小数部分保留两位小数,最后一位四舍五入。}
Writeln(a:0:0):{ Output 2只输出整数部分,小数部分四舍五入}
结束。
3、“书面”语句通常用于在输出多组数据时,通过在屏幕上输出空行来分隔数据组。
4.1 IF语句
条件语句用于响应条件的两个方面。
比如今天下雨,我们就在家;否则(不会下雨),我们就去旅游。
再比如:如果已经得到搜索结果,就把答案打印出来;否则(还没有结果),继续搜索。
IF语句的一般格式是:
IF条件
THEN语句1{条件为真时的响应和处理}
ELSE语句2;{条件为假时的响应和处理}
使用条件语句时要注意:
1.条件语句是一种语句。IF、THEN和ELSE都是语句的一部分。所以它只能有一个“;”作为分隔符,放在句末,尤其是ELSE之前。
2.如果我们的程序只需要处理条件为真的情况,而不需要处理条件为假的情况,那么IF语句省略ELSE子句,格式变成:
IF条件
然后语句1;{条件为真时的响应和处理}
例如,如果数字a大于或等于0,则输出它的平方根。
如果a & gt=0然后writeln(sqrt(a));
对于上面的例子,当条件为假时,我们不需要处理它,所以我们简单地省去ELSE子句。
3.if语句可以嵌套在多个层中。为了避免嵌套时产生误解,可以用begin、end end将嵌套部分括起来;Else子句通常与最近的if子句匹配:
IF条件
那么开始吧
如果条件1,则...其他...;
结束
否则开始
如果条件2,则...其他...;
结束;
示例1。输入A和B两个数,输出较大的数。
tt计划;
var a,b:整数;
开始
写('请输入a,b:');
readln(a,b);
如果a & gt然后写下(a)
else writeln(b);
结束。
4.2案例陈述
情况陈述适用于响应一个条件的多种情况。
格式:
的格表达式
参考号1:语句1;
2号:陈述2;
……
参考号n:语句n;
Else语句n+1
结束;
使用case语句时有几点需要注意:
1.end对应case标签和句子用“:”隔开;else和语句之间没有分隔符。
2.标签必须是与表达式类型相同的常数。
例2:某自动加油站A、B、C汽油单价(元/公斤)分别为1.50、1.35、1.65、438+08,还提供“自加”或“辅助”两种服务等级,用户可得5%或65438。写个程序,用户输入油量,汽油品种,服务类型(f-自动,m-自助,e-辅助),然后计算应付。
程序PCA se 1;
定义变量
油,助:炭;
kg,合计:实;
开始
写('输入以公斤(kg)为单位的数量):');readln(千克);
写('哪种汽油(a、b、c):');readln(油);
wirte('哪种类型的服务(f,m,e):');readln(帮助);
的外壳油
' a ':合计:= 1.50 * kg;
b ':合计:= 1.35 * kg;
' c ':合计:= 1.18 * kg;
else writeln('输入错误!')
结束;
{——————待处理的汽油种类}
案例帮助
f ':
' m ':合计:=合计*(1-0.05);
e ':合计:=合计*(1-0.10);
else writeln('输入错误!')
结束;
{———————办理服务类型}
writeln
writeln('合计为',合计:10:2);
结束。
3.多个标签可以对应同一个句子。
4.语句可以是多条语句,但必须用语句括号括起来(begin...结束)。
5.case语句也可以嵌套。
例3:从键盘读取年和月,输出一个月有多少天。
程序pcase2
定义变量
年、月、日:整数;
runnian:布尔型;
开始
写('输入年份和月份:');readln(年、月);
案例月份
1,3,5,7,8,10,12:日:= 31;
4,6,9,11:日:= 30;{—————处理31天及以上30天的情况}
2:开始
runnian:=(年模400=0)或((年模4=0)和(年模100 & lt;& gt0));
案例运行年份
true:day:= 28;
false:day:= 29;
结束;
结束;{————以上处理的是2月的情况:闰年28天,平年29天}
结束;
结束。