Free Pascal 简要语法书.docx
- 文档编号:7725455
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:24
- 大小:68.60KB
Free Pascal 简要语法书.docx
《Free Pascal 简要语法书.docx》由会员分享,可在线阅读,更多相关《Free Pascal 简要语法书.docx(24页珍藏版)》请在冰豆网上搜索。
FreePascal简要语法书
FreePascal简要语法书
一、基本结构
一个FP程序一般可以分为程序首部(Program语句)、程序说明(常量、变量、自定义函数过程)和程序主体(Begin到End.)三部分。
语句间用分号“;”分隔,一般一行写一条语句,程序最后用End.(句点)结束。
基本框架如下:
Program程序名(参数);
Label
标号说明;
Const
常量说明;
Type
类型说明;
Var
变量说明;
Function
函数说明;
Procedure
过程说明;
Begin
程序主体;
End.
用一个实例表示:
数据交换(exchange)。
输入两个整数a,b(-30000 输入文件(exchange.in)有一行,用空格分开的两个整数;输出文件(exchange.out)有一行,用空格分开的两个整数,顺序和输入数据相反。 Programexchange; Const fin=’exchange.in’; fout=’exchange.out’; Var a,b: integer; Procedureinit; begin assign(input,fin); assign(output,fout); reset(input); rewrite(output); end; Procedureswap(varx,y: integer); var t: integer; begin t: =x; x: =b; b: =t; end; Begin init; readln(a,b); swap(a,b); writeln(a,b); close(input); close(output); End. 二、程序说明部分 1.常量定义(const) 常量名=常量数据; Const e=2.7182818;{Realtypeconstant.} 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: integer; end; junk=setofchar; Days=(Mon,Tue,Wed,Thu,Fri,Sat,Sun); WorkDays: Setofdays; 3.变量定义 变量名(多个变量名用逗号分开): 变量类型; var i: integer; e: real; c: char; s: string; sn: array[1..12]ofinteger; p: point; 变量类型 i.整数类型 ii.实数类型 iii.布尔类型 TypeRange Boolean1true、false iv.字符类型 TypeRange char1 String默认最大255个字符 4.自定义函数 function函数名(形式参数表): 返回类型; 函数的说明部分 begin 函数主体; …… 函数名: =返回值; end; functionmax(x,y: integer): integer; var m: integer; begin ifx>ythenm: =xelsem: =y; max: =m; end; 当函数被赋值后,可以用exit直接退出函数,回到主程序。 5.自定义过程 procedure过程名(形式参数表); 过程说明部分; begin 过程主体; …… end; Procedureswap(varx,y: integer); var t: integer; begin t: =x; x: =b; b: =t; end; 可以用过程exit直接退出过程,回到主程序。 例题: Programex1; Var a: _______; b: ________; c: _________; Begin a: =10; b: =2; c: =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: integer; begin readln(l,h); s: =l*h; writeln(‘s=‘,s); end. 》》练习: 阅读程序写答案 x: =4; y: =5; x: =x+y; y: =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; Var i,n: integer; Begin readln(n); fori: =1to___do write(‘*’); End. 例题: 用循环实现1+2+3+4+…+n Programex_for; Var s,i,n: integer; Begin s: =0; readln(n); fori: =1tondo s: =__________; writeln(‘s=‘,s); End. 上机练习 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只有一行 5 输出样例ex13.ou 120 Ex14.pas 读入n([1,10])值,分别输出1! ,2! ,3! ,……n! 输入样例ex14.in只有一行 5 输出样例ex14.ou共有n行 1 2 6 24 120 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数组元素类型; var 数组变量: 数组类型; 2.var 数组变量: array[下标范围]of数组元素类型; type arrtype=array[1..100]ofinteger; var arr1: arrtype; arr2: array[1..100]ofinteger; arr3: array[‘a’..’z’]ofinteger; arr4: array[0..10,0..30]ofchar; ii.数组的基本操作 var arr: array[1..10]ofinteger; i,key: integer;//key是需要操作的数据 1.赋值 fori: =1to10doarr[i]: =i*i; 2.查找(查找key的值在数组的哪个位置) functionfind(arr: arrayofinteger,key: integer): integer; var i: integer; begin find: =-1;//如果key不在数组中,则返回-1 fori: =1to10do ifarr[i]=keythenbegin find: =i; break; end; end; 3.删除(删除指定的元素,剩下的元素前移,数组长度-1) 4.插入(在指定位置k插入元素,先将k..n的元素后移,再插入元素。 注意考虑数组是否越界) 5.排序(输入一组数据放在a[1..n]中,将它们按从低到高的次序排列) a)选择排序 思路: 从数组中选择一个最小的值,把它和第一个数交换;从剩下的数据中,再找最小值,和第二个数交换…… fori: =1ton-1dobegin min: =i//min存放最小数的位置 forj: =i+1tondo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Free Pascal 简要语法书 简要 语法