Free Pascal 简要语法书Word文件下载.docx
- 文档编号:20851344
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:24
- 大小:68.60KB
Free Pascal 简要语法书Word文件下载.docx
《Free Pascal 简要语法书Word文件下载.docx》由会员分享,可在线阅读,更多相关《Free Pascal 简要语法书Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。
a=2;
{Ordinal(Integer)typeconstant.}
c=’4’;
{Charactertypeconstant}
s=’Thisisaconstantstring!
’;
{Stringtypeconstant}
s=chr(32)
ls=SizeOf(Longint);
ti:
array[1..3]ofLongint=(1,2,3);
tj:
array[1..3][1..2]ofinteger((1,3),(1,2),(1,1));
2.类型说明(type)
类型名=类型
类型说明;
Type
point=record
x,y,z:
real;
color:
end;
junk=setofchar;
Days=(Mon,Tue,Wed,Thu,Fri,Sat,Sun);
WorkDays:
Setofdays;
3.变量定义
变量名(多个变量名用逗号分开):
变量类型;
i:
e:
c:
char;
s:
string;
sn:
array[1..12]ofinteger;
p:
point;
变量类型
i.整数类型
ii.实数类型
iii.布尔类型
TypeRange
Boolean1true、false
iv.字符类型
char1
String默认最大255个字符
4.自定义函数
function函数名(形式参数表):
返回类型;
函数的说明部分
函数主体;
……
函数名:
=返回值;
functionmax(x,y:
integer):
m:
ifx>
ythenm:
=xelsem:
=y;
max:
=m;
当函数被赋值后,可以用exit直接退出函数,回到主程序。
5.自定义过程
procedure过程名(形式参数表);
过程说明部分;
过程主体;
end;
可以用过程exit直接退出过程,回到主程序。
例题:
Programex1;
Var
a:
_______;
________;
_________;
=10;
=2;
=a/b;
writeln(c);
end.
三、表达式的书写:
在程序中的表达式书写方式与数学书写方式有一些区别:
1.数学运算符号:
+-*/divmod
div表示整除运算例13div4=3
mod表示取余运算例13mod4=1(moddiv为运算符号前后必须留空白)
2.关系运算符号:
>
<
==>
关系运算的结果为真假值例5>
7=false
表示不等于例8<
9=____________
3.逻辑运算符号:
notandor
not将关系表达式的结果取反not(5>
7)=____________
and连接两个关系表达式,当这两个关系表达式的结果为真,整个表达式结果才为真
or连接连接两个关系表达式,当这两个关系表达式有一个的结果为真,整个表达式结果就为真
》》练习:
表示x在[5,10]之间
a,b,c代表三边,表示a,b,c构成了等腰三角形,等边三角形
表示x是偶数
xyz代表一个三位数,设计公式分别计算出x,y,z的值
4.标准函数
一些比较复杂的运算,不能简单的使用以上运算符号表示,我们采用函数来计算;
特别注意:
函数的应用范围
Abs(x)函数值为x的绝对值
Sqr(x)函数值为x的平方
Int(x)函数值为x的整数部分
Sqrt(x)函数值为x的平方根
Random函数值为0-1之间的随机小数
Random(x)函数值为0-x之间的随机整数
Trunc(x)舍去实数x的小数部分,并转换为整型
Round(x)对实数x作四舍五入,并转换为整型
chr(x)函数值为整数x所对应的ascⅡ字符
ord(x)函数值为字符x所对应的数值
5.表达式的书写规则
所有表达式内容必要写在同一行
只能使用合法的运算符号,不能省略任何符号
只能使用小括号,可以多次使用
注意表达式计算时的优先计算顺序
》》练习题:
改写一下表达式
y3+2y2+5y-7
一元二次方程求根公式
四。
程序语句(每个完整的语句结束后,使用分号表示表示当前语句结束)
a)顺序语句
i.赋值语句变量:
=表达式;
ii.输入语句read(变量名表);
readln(变量名表);
iii.输出语句write(输出项);
writeln(输出项);
iv.注释{块注释}//行注释
例:
(程序片断)
Programjuxing;
var
l,h,s:
begin
readln(l,h);
=l*h;
writeln(‘s=‘,s);
end.
》》练习:
阅读程序写答案
x:
=4;
y:
=5;
=x+y;
writeln(‘x=’,x,’y=’,y);
上机练习题:
●输入半径,求球的表面积和体积
●从键盘输入两个整数,交换后输出
●输入两个整数,利用绝对值函数,输出其中较大的一个
●编写程序,随机产生一个三位自然数,分离出它的百位、十位和各位数字,并求和。
b)分支语句
i.if条件then语句1;
if条件then语句1else语句2;
若条件为真,则执行语句1;
否则执行语句2
ii.case表达式of
常数表1:
语句1;
常数表2:
语句2;
常数表n:
语句n;
else语句n+1
end
根据表达式的值,选择由哪个语句执行。
iii.语句可以用begin..end构成复合语句,在复合语句中,可以再放入分支语句,称为“分支嵌套”
程序片断填空
read(a);
if__________then
writeln(‘是偶数’)
else
writeln(‘不是偶数’);
上机练习
●输入3个数,求最大值
●输入月份年份,输出该月天数
●设计一个自动收银的计算器,当购物在200元以内(含200)按九折付款,超出200元,200以内(含200)按九折付款,200以外部分按七折付款
c)循环语句
i.for循环变量:
=初值to终值do循环体语句;
for循环变量:
=初值downto终值do循环体语句;
ii.while布尔表达式do循环体语句
iii.repeat
语句1
语句2;
语句n;
until布尔表达式;
iv.两个在循环中常用过程:
break和continue
break:
退出本层循环;
continue:
结束本次循环,进入下一次循环
v.for循环和while循环的循环语句体可以用begin..end围起来,构成复合语句。
如果复合语句中,再放入循环,称为“循环嵌套”
输入自然数n,输出n个“*”
Programex_for;
i,n:
readln(n);
fori:
=1to___do
write(‘*’);
例题:
用循环实现1+2+3+4+…+n
Programex_for;
s,i,n:
=0;
=1tondo
s:
=__________;
writeln(‘s=‘,s);
上机练习
Ex12.pas
读入n([1,30000])值,计算输出s的值
S=1+3+5+……+n
输入样例ex12.in只有一行
5
输出样例ex12.ou只有一行
9
Ex13.pas
读入([1,10])n值,计算输出n!
的值
n!
=1*2*3*4……*n
输入样例ex13.in只有一行
输出样例ex13.ou
120
Ex14.pas
读入n([1,10])值,分别输出1!
,2!
,3!
,……n!
输入样例ex14.in只有一行
输出样例ex14.ou共有n行
1
2
6
24
Ex15.pas
读入一个正整数([0,30000]),输出它各位数之和。
输入样例:
ex15.in
4589
输出样例:
ex15.ou
26
Ex16.pas
从n个整数中输出最大的数。
Ex16.in共有两行,第一行n([1,100]),第二行是这n个数([-30000,30000])
Ex16.ou共一行,最大的数
3
4595-12
95
5.数组结构
a)数组:
定义一组具有相同功能,相同名称的变量
i.定义
1.type
数组类型=array[下标范围]of数组元素类型;
数组变量:
数组类型;
2.var
array[下标范围]of数组元素类型;
type
arrtype=array[1..100]ofinteger;
arr1:
arrtype;
arr2:
array[1..100]ofinteger;
arr3:
array[‘a’..’z’]ofinteger;
arr4:
array[0..10,0..30]ofchar;
ii.数组的基本操作
arr:
array[1..10]ofinteger;
i,key:
//key是需要操作的数据
1.赋值
fori:
=1to10doarr[i]:
=i*i;
2.查找(查找key的值在数组的哪个位置)
functionfind(arr:
arrayofinteger,key:
find:
=-1;
//如果key不在数组中,则返回-1
=1to10do
ifarr[i]=keythenbegin
=i;
break;
3.删除(删除指定的元素,剩下的元素前移,数组长度-1)
4.插入(在指定位置k插入元素,先将k..n的元素后移,再插入元素。
注意考虑数组是否越界)
5.排序(输入一组数据放在a[1..n]中,将它们按从低到高的次序排列)
a)选择排序
思路:
从数组中选择一个最小的值,把它和第一个数交换;
从剩下的数据中,再找最小值,和第二个数交换……
=1ton-1dobegin
min:
=i//min存放最小数的位置
forj:
=i+1tondo
ifa[j]<
a[min]thenmin:
=j
=a[i];
a[i]:
=a[min];
a[min]:
b)冒泡排序
两两比较,大数放在后面,一轮下来(比较n-1次),最大的数放在最后;
再对剩下的n-1个数进行比较……
=1ton-1do
=1ton-ido
ifa[j+1]<
a[j]thenbegin
=a[j];
a[j]:
=a[j+1];
a[j+1]:
c)插入排序
把数组分成左右两部分,对两部分分别排序,再把以排好序的两部分插入到一个数组中,使整体有序。
d)快速排序
把元素插入到原数组中,使元素左边的数都比它小,右边的数都比它大。
从第一个数据a[1]开始插入,从左开始,找到第一个比a[1]大的数据a[i];
从右开始,找到第一个比a[1]小的数据a[j],交换a[i]和a[j],直到i>
=j,交换a[1]和a[j],完成第一次插入。
……
对a[l..r]使用快速排序
procedurequicksort(a[l..r]);
ifl<
rthenbegin
=partition(a[l..r]);
//s是一个插入点
quicksort(a[l..s-1]);
quicksort(a[s+1..l]);
递归对左右数据快排
functionpartition(a[l..r]):
=a[l];
=l;
j:
=r+1;
repeat
repeati:
=i+1untila[i]>
=p;
repeatj:
=j-1untila[j]<
swap(a[i],a[j]);
untili>
swap(a[l],a[j]);
partition:
=j;
注:
以上是伪代码,编程时需要根据语法规则作改变
b)特殊数组:
字符串
i.var
st:
ii.字符串在内存中占有的空间是它的最大长度+1个字节
iii.第一个字节用来存放赋值后字符串变量的实际长度(<
=最大长度),可用0下标来访问;
如ord(a[0])返回值该字符串的长度
iv.该字符串变量中每一个字符都又相应的下标。
可以通过下标访问单个字符。
类似字符串数组。
6.文件读写
a)常用过程
i.assign(input,fin):
将fin和标准输入设备关联,以后的输入将从fin中寻找
ii.assign(output,fout):
将fout和标准输出设备关联,以后将数据输出到fout
iii.reset(input):
初始化输入文件让文件变量指向文件的开始处
iv.rewrite(output):
初始化输出文件让文件变量指向文件的开始处
v.close(input)或close(output):
关闭文件使用完文件后一定要关闭文件(无论读写,否则数据丢失)
附录一:
保留字
absoluteelsenilsetandendnot
shlarrayfileobjectshrasmfor
ofstringbeginfunctiononthenbreak
gotooperatortocaseifortype
constimplementationpackedunitconstructorin
procedureuntilcontinueinheritedprogramuseson
destructorinlinerecordvardivinterfaceraise
reintroducewhiledolabelrepeatwithdownto
modselfxorasfinalizationlibrary
threadvarclassfinallytryexceptinitializationproperty
exportsisdisposefalsetrueexitnew
附录二:
编译错误说明
下面列出在编译程序时可能出现的错误,在集成环境下,将自动加载源程序并定位于出错处。
l内存溢出
2缺标识符
3标识符未定义
4标识符重定义
5语法错误
6实型常量错
7整型常量错
8字符串常量跨行
9文件嵌套过多
10非正常文件结束
11行过长
12缺类型标识符
13打开文件过多
14无效文件名
15文件未找到
16磁盘满
17无效编译指示
18文件过多
19指针定义中未定义类型
20缺变量标识符
21类型错误
22结构过长
24文件分量不能为文件
25无效字符串长度
26类型不匹配
27无效子界基类型
28下界大于上界
29缺有序类型
30缺整型常数
31缺常数
32缺整型或实型常数
33缺指针类型标识符
34无效的函数结果类型
35缺标号标识符
36缺BEGIN
37缺END
38缺整型表达式
39缺有序表达式
40缺布尔表达式
41操作数类型与操作符不匹配
42表达式错
43非法赋值
44缺字段标识符
45目标文件过长
46未定义外部标识符
47数据段过长
50缺DO
51无效PUBLIC定义
52无效EXTRN定义
53EXTRN定义过多
54缺0F
55缺INTERFACE
56无效重定位引用
57缺THEN
58缺T0或DOWNTO
59未定义的向前引用
60过程过多
61无效类型转换
62被零除D
63无效文件类型
64不能读写该类型的变量
65缺指针变量
66缺字符串变量
67缺字符串表达式
68单元循环引用
69单元名不匹配
70单元版本不匹配
71单元重名
72单元文件格式错误
73缺IMPLEMENTATl0N
74常数与CASE类型不相匹配
75缺记录变量
76常数越界
77缺文件变量
78缺指针变量
79缺整型或实型表达式
80标号不在当前块中
81标号已定义
82标号未定义
83无效参数
84缺UNIT
85缺“;
”
86缺“:
87缺“,”
88缺“(”
89缺“)”
90缺“=”
91缺“:
=”
92缺“[”或“(.”
93缺“]”或“.)”
94缺“.”
96变量过多
97无效FOR控制变量
98缺整型变量
99此处不允许用文件和
100字符串长度不匹配
101无效字顺序
102缺字符串常数
103缺整型或实型变量
104缺有序变量
105INLINE错
106缺字符表达式
107重定位项过多
112CASE常量越界
113语句错
114不能调用中断过程
116必须在8087方式下编译
117末找到目标地址
118此处不允许包含文件
120缺NIL
121无效限定符
122无效变量引用
123符号过多
124语句部分过长
126文件必须为变量参数
127条件符号过多
128条件指令错位
130初始条件定义错
13l过程和函数头与前面定义的不匹酉
132严重磁盘错误
133不能计算该表达式
134表达式错误结束
l35无效格式说明符
136无效间接引用
137此处不允许结构变量
138无SYSTEM单元不能计算
l39不能存取该符号
140无效浮点运算
141不能将覆盖编译至内存
142缺过程和函数变量
143无效过程或函数引用
144不能覆盖该单元
147缺对象类型
148不允许局部对象类型
149缺VIRTUAL
150缺方法标识符
151不允许虚拟构造方法
152缺构造方法标识符
153缺释放方法标识符
154FAIL只允许在构造方法内使用
155无效的操作符和操作数组合
156缺内存引用
l57不能加减可重定位符号
158无效寄存器组合
159未激活286/287指令
160无效符号引用
161代码生成错
162缺ASM
附录三:
运行时错误
运行错误是指程序运行时出现的错误,当发生时,显示如下信息:
RUNTIMEERRORNNNNATXXXX:
YYYY
其中,nnnn是运行错误代码,xxxx是错误发生的程序段,yyyy是错误地址偏移。
1无效Dos功能号
2文件末找到
3路径未找到
4打开文件过多
5禁止文件存取
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Free Pascal 简要语法书 简要 语法