当前位置:首页 >> 学科竞赛 >>

Pascal基础知识复习1


Pascal 基础知识复习
内容:标准数据类型、基本运算符、基本语句、数组、字符串、常用标准函数或过程、 记录 1、标准数据类型: ①整数 类 整 型 数 单 词 范 围 分配的空间 1 个字节 2 个字节 4 个字节 1 个字节 2 个字节 短整数 长整数 字节型 字 型 shortint integer longint byte word -128..127 -32

768..32767 -2147483648..2147483647 0..255 0..65535

②、实数类型: pascal 中有以下几种实数类型:(其中后 4 种必须用{$sn+}编译才可用) 类型 基本实数类型 单精度 双精度 扩展型 装配十进制型 单词 real single double extended comp 范围 2.9×10 —1.7×10 1.5×10 —3.4×10 5.0×10 1.9×10
-324 -4951 18 -45 -39 38 38 308 4932

有效数字 11—12 7—8 15—16 19—20 19—20

分配的空间 6 4 8 10

—1.7×10

—1.1×10

-9.2×10 —9.2×10

18

③、字符类型(char) 字符类型对应一个英文字符、 数字、 符号等字符, pascal 中为其分配 1 个字节的空间, 在 每一字符对应一个编号,我们称之为 ascii 码(美国国家标准信息交换码) ,我们可以用函数 ord( )来求出某个字符的 ascii 码,如: ord(’a’)=65,ord(’b’)=66,……,ord(’z’)=90。 ord(’a’)=97,ord(’b’)=98,……,ord(’z’)=122 ord(’0’)=48,ord(’1’)=49,……,ord(’9’)=57 我们也可以用函数 chr( )来求出某个 ascii 码对应的字符,如: chr(65)= ’ a’ ,chr(66)= ’b’……, 由此可以看出:chr 与 ord 是两个互逆运算:如: chr(ord(’1’))= ’1’ ord(chr(99))=99 若要将小写字母’y’转换成大写字母,我们可以 chr(ord(’y’)+32)实现;也可以用函 数 upcase( )来实现:upcase(’y’)=’y’ 。 ④、布尔类型(boolean) 布尔类型表示一种判定的结果,其值只有 true(正确)和 false(错误)两个,如 5>3 的 判定结果是 true,而 3>5 的判定结果是 false。 在 pascal 中规定:ord(false)=0;ord(true)=0; 2、基本运算符 数学运算: +、-、*、/ 、div、mod; 布尔运算: not、and、or; 关系运算符: =、<>、>、<、>=、<= 这些运算符优先顺序规则是: i 括号内的表达式先计算 ii 运算符的优先级有 4 级,排列如下 最高级 not

第一级 * 、/、div、 mod、 and 第二级 + 、-、 or 第三级 =、<>、>、<、>=、<= 根据上面运算符的顺序,请写出下列表达式的值: not 5>3= 27+8 div 3 =7-6 mod 4= 思考题: 5 and 3= 7 or 0=

3、基本语句: 输入语句: 输入语句:read 和 readln 格式:read(x1,x2,…,xn); 或 readln(x1,x2,…,xn); 功能:从输入文件中(即 input)中读入数据,假如没有非凡地用过程 assign 将 input 指明具体的用户输入文件时,input 就是“键盘” 。 注重:一次读入多个数据时,数据之间用空格隔开,但字符类型则字符见不用空格; readln 语句后可不跟变量,表示输入任意键或者换一行;readln 语句输入完后,自动跳到下 一行行首,后面的输入语句从下一行行首开始读数据; 例如:给整型变量 x,y,z 输入值。 程序 1:从键盘输入 var x,y,z:integer; begin readln(x,y,z); end. 缺省的输入文件是键盘 程序 2:从文件 data.in 中输入 var x,y,z:integer; begin assign(input,’data.in’);{指明从其他文件读} reset(input); readln(x,y,z); close(input); end. 输出语句: 输出语句 write 和 writeln 格式:write(v1,v2,…,vn); 或 writeln(v1,v2,…,vn); 功能:将括号中的实际内容写到标准文件(output)中,假如没有非凡地用过程 assign 将 output 指明具体的用户输入文件时,output 就是“显示器的屏幕” 。 注重: 假如是变量或表达式, 则应输出他们的值, 假如是常量或字符串, 则照原样输出。 write 语句输出后光标不换行,writeln 语句输出后,光标换一行,writeln 语句后可不跟仁任 何内容,表示输出一个换行符。 可以用场宽来控制输出的位置: 单场宽:假设变量 a=56;则语句 write(a:8)和 语句 write(a:1)分别输出为: □□□□□□56 占用 8 个格子 56 由于 56 本身必须占用 2 个格子,而指定的场宽 1 小于 2,故照 原样输出 双场宽:主要针对实数,第一个场宽表示整个实数占用的格子,第 2 个场宽指明小数位 数。 假设 a=54.098;则语句 write(a:8:2); 和语句 write(a:1:0);分别输出 {读方式} {读数据} {关闭文件}

□□□54.10 54 赋值语句: 赋值语句 := 格式:变量:=表达式; 功能:计算表达式的值并赋值给变量。 注重:赋值号两边的数据类型必须相同或相容,对于这一点的理解:变量:=表达式 左边是整数类型,则右边表达式计算结果的类型必须是整数类型; 左边是字符类型,则右边表达式计算结果的类型必须是字符类型; 左边是实数类型,则右边表达式计算结果可以是整数类型、也可以是实数类型。 左边是 boolean,则右边表达式计算结果的类型 boolean; 由此可见:只有实属可以兼容整数,所以整数类型与实数类型是相容的。 两变量 a,b 值交换的代码:c:=a; a:=b; b:=c;或:c:=a+b; a:=c-a; b:=c-b; 分支语句:if 条件 then 语句; 格式一: if (条件)then 语句; <——假如条件成立,则执行语句; 格式二: if (条件)then 语句 1 else 语句 2; <—假如条件成立,则执行语句 1,否则执行语句 2; 分情况语句 分情况语句 case <情况表达式> of 情况 1:语句 1; 情况 2:语句 2; …… 情况 n:语句 n; else 语句 n+1 {者条语句可省略} end; for 循环 格式一:for 变量:=初值 to 终值 do 循环体; 格式二:for 变量:=初值 downto 终值 do 循环体; 说明:◆格式一的循环次数是:终值-初值+1、格式二的循环次数是:初值-终值+1; ◆是一个枚举型循环:例如:for i:=1 to 10 do s:=s+i; 变量 i 分别取:1 2 3 4 5 6 7 8 9 10;每取得一个值,循环语句执行一次; ◆该循环是先判定后执行,循环有可能依次也不执行。 while 循环 格式: while (条件) do 循环体; {当条件满足,则循环执行,知道条件不满足为止} repeat 循环 格式: repeat 循环体 until 条件; {执行循环知道条件满足为止} 循环语句中用到的两条命令:break 和 continue:break 推出当前循环、contiune 不执行 if 情况表达式=情况 1 then 语句 1; if 情况表达式=情况 2 then 语句 2; …… if 情况表达式=情况 n then 语句 n;

循环体中 continue 后面的语句,直接进行下次循环。 4、数组 定义:一维数组:a:array[1..10] of integer;,相当于 10 个整型单变量,用下标来区分,例 如:a[1]、a[2]、a[10]等。 二维数组:g:array[1..10,1..5] of integer,相当于 10*5=50 个整型单变量,用双下标区分, 依次为:a[1,1]、a[1,2]、a[1,3]、a[1,4]、a[1,5]、a[2,1]、a[2,2]、…、a[10,5]。注重: ? 数组名代表的并不是一个变量,而是一批变量,因而,不能直接整个数组读入,而是要 逐个数组元素读入,通常用循环结构来完成这一功能。 ? 例如: for i:=1 to 10 do read(a[i]); {————从键盘读入数组元素的值;最常用的方法} for i:=1 to 10 do a[i]:=i; {————数组元素 a[1]到 a[10]的值分别为 1 到 10;数据赋初值} for i:=1 to 10 do a[i]:=0; {————数组元素清 0;最常用的数据初始化的方法} for i:=1 to 10 do a[i]:=random(100); {————随机产生 10 个 100 以内的数,赋给各数组元素} Fillchar(a,sizeof(a),true); 初始化数组 ◆关于 fillchar 过程在给数组所有元素赋值的运用:比如要对上面一维数组 a 全部清 0 时的 使用方法: fillchar(a,sizeof(a),0); 对于数组 g:fillchar(g,sizeof(g),0)。 5、字符串 所谓字符串,就是一串字符,与字符是有本质区别的。 定义形式:var s:string; 或 s:string[n];这里的 n 是常数,假如 n=5 则字符串 s 的长度不能超过 5。但这里的 n 不能超 过 255,即字符串 string 类型的变量,最长长度不能超过 255。 例如:var s:string[10]; 注重: ◆字符串的理解可以一维字符数组来理解,例如: var s:string[50]; 相当于 var s:array[1..50] of char; ◆string 的最长长度不超过 255,fp 中的 ansistring 的长度似乎没有限制,可以达到 2gb 的 长度。 ◆ 字符串中常用的的函数:如下: 求长度 length : 定义:function length(s: string): integer; 例子:var s: string; l:integer; begin readln (s); l:=length(s); end. --------------------------------------------------------------------------------------复制子串 copy: 定义: function copy(s: string; index: integer; count: integer): string; 注重:s 是字符串类型的表达式。index 和 count 是整型表达式。copy 返回 s 中从 index 开 始,count 个字符长的一个子串。

例子: var s: string; begin s := 'abcdef'; s := copy(s, 2, 3); { 'bcd' } end. ------------------------------------------------------------------------------插入子串 insert: 定义:procedure insert(source: string; var s: string; index: integer); 注重:source 是字符串类型的表达式。 s 是任意长度字符串类型变量。index 是整型表达 式。insert 把 source 插在 s 中 index 处。假如结果字符串的长度大于 255,那么 255 之后的 字符将被删除。 例子: var s: string; begin s := 'honest lincoln'; insert('abe ', s, 8); {s= 'honest abe lincoln' } end. -----------------------------------------------------------------------------删除子串 delete 定义:procedure delete(var s: string; index: integer; count:integer); 注重:s 是字符串类型变量。 index 和 countare 是整型表达式。delete 删除 s 中从 index 开 始的 count 个字符。假如 index 大于 s 的长度,则不删除任何字符;假如 count 大于 s 中从 index 开始的实际字符数,则删除实际的字符数。 例子:var s: string; begin s := 'honest abe lincoln'; delete(s,8,4); writeln(s); { 'honest lincoln' } delete(s,9,10); writeln(s); { 'honest l' } end. ------------------------------------------------------------------------------字符串转为数值 val: 定义: procedure val(s; var v; var code: integer); 在这里: s 是由一系列数字字符构成的字符串类型变量; 。 v 是整型或实型变量; code 是 integer 型变量 注重:val 将 s 转为它的数值形式。 例子: var s:string;i, code: integer; begin s:='1234'; val(s,i,code); writeln(i); { 1234 } end. -----------------------------------------------------------------------------

数值转为字符串 str: 定义: procedure str(x [: width [: decimals ]]; var s:string); 注重:将数值 x 转成字符串形式。 例子: var s: string[11]; i:integer; r:real; begin i:=123; r:=34.78; str(i, s); {s='123’} str(i:5,s); {s='□□123’} str(r,s); {s='3.478000000000e+01’} str(r:8:3,s);{s='□□34.780’} end; -----------------------------------------------------------------------------求子串起始位置 pos: 定义:function pos(substr: string; s: string): byte; 注重:substr 和 s 字符串类型表达式。pos 在 s 中搜索 substr 并返回一个 integer 值。这个值 是 substr 的第一个字符在 s 中的位置。假如在 s 中没有找到 substr,则 pos 返回 0。 例子:var s: string; p:byte; begin s:= '123.5'; p:=pos('2’,s); {p=2} p:=pos('6’,s); {p=0} end. ----------------------------------------------------------------------------字符完全串连 + 定义:操作符+把两个字符串联在一起。 例子: var s1,s2,s:string; begin s1:='turbo '; s2:='pascal'; s:=s1+s2; { 'turbo pascal' } end. --------------------------------------------------------------------------字符串压缩空格串连 - : 定义:操作符-去掉第一个字符串最后的空格后,将两个字符串联 在一起。 例子: var s1,s2,s:string; begin s1:='turbo '; s2:='pascal'; s:=s1-s2; { 'turbopascal' } end. 常用的其它过程或函数: abs(x)=|x|、 sqr(x)=x2 、 sqrt(x)= 、 pred(x) {求前驱、如 pred(1)=0、prd(0)=-1、pred(‘1’)=’0’ 、pred(‘b’)=’a’}、

succ(x) {求后继、如 succ(‘1’)=2、succ(‘1’)=’2’ 、succ(true)=false} 、 ord(x) {求序号、如 ord(1)=1、ord(‘1’)=49、ord(’8’)-ord(‘0’)=8} chr(x) {求字符、如 chr(65)=’a’ 、chr(’48’)=’0’ 、chr(ord(‘a’)-32)=’a’} upcase(x) {求 x 的大写字母、如 upcase(‘a’)=’a’ 、upcase(‘b’)=’b’} odd(x) {若 x 为奇数则 odd(x)=true,若 x 为偶数则 odd(x)=false,如 odd(5)=true} round(x) {求最接近 x 的整数、如:round(3.15)=3、round(4.52)=5} trunc(x) {去掉 x 的小数部分、如:trunc(3.15)=3 、trunc(4.52)=4} 取整函数 int(x):定义:function int(x: real): real; 注重:x 是实型数,返回值也是实型的;返回的是 x 的整数部分,也就是说,x 被截尾了(而 不是四舍五入) 例子: var r: real; begin r := int(123.567); { 123.0 } r := int(-123.456); { -123.0 } end. 取小数函数 frac(x): 定义:function frac(x: real): real; 注重:x 是实型表达式. 结果返回 x 的小数部分; 也就是说,frac(x) = x - int(_x). 例子:var r: real; begin r := frac(123.456); { 0.456 } r := frac(-123.456); { -0.456 } end. 一、函数(包括标准函数和自定义函数) 函数(包括标准函数和自定义函数) 1、函数的定义 格式:FUNCTION 函数名(<形参表>) :返回值类型; VAR <变量说明> BEGIN <函数体> END [注]:1、形参表每个参数都写明其类型; 2、有且只有一个返回值,并且要将返回值赋值给函数名。 [例]:求五边形的面积 function area(a,b,c:real):real; var p:real;

begin p:=(a+b+c)/2; area:=sqrt(p*(p-a)*(p-b)*(p-c); end; 2、函数的调用 1) 、函数的调用必然出现在表达式中(等号的右边) ,不能以单独地在语句出现 2) 、调用时,将每个实参传递给对应的形参 program ml_area(input,output); var l1,l2,l3,l4,l5,l6,l7,s:real; function area(a,b,c:real):real; var p:real; begin p:=(a+b+c)/2; area:=sqrt(p*(p-a)*(p-b)*(p-c); end; begin write('input'); readln(l1,l2,l3,l4,l5,l6,l7); s:=area(l1,l2,l6)+area(l2,l6,l7)+……; writeln('s=',s:10:3); end. 二、过程 格式:PROCEDURE<过程名>(<形式参数表>) VAR <说明部分> BEGIN <过程体> END; [例 1]某过程的形参表为(var a,b:real;c,d:integer;var e:char); 主程序中有如下变量说明:x,y:real; m:integer; next:char; 则以下实参表中合法的有:(1、2、3) 1、(x,y,m+3,70,next) 2、(y,x,m,m,next) 3、(y,x,35,m DIV 10,next) 4、(m,x,30,10,next) 5、(x,y,m,10) 6、(35,0,y,m,10,next) 7、(x,y,m,m/10,next) 8、(A,B,30,10,next) [例 3]:求五个数中的最大值。 program max_in_5(input,output); var

n1,n2,n3,n4,n5:integer; procedure lagest_in_three(a,b,c:integer;var e:integer) begin e:=a; if b>e then e:=b; if c>e then e:=c; end; begin write('……'); readln(n1,n2,n3,n4,n5); lagest(n1,n2,n3,n1); lagest(n1,n4,n5,n1); write(n1); end. 三、嵌套 [例]:计算、 program Cmn(input,output); function fax(x:integer):integer: var i:integer; begin fac:=1; for i:=1 to x do fac:=fac*i; end; function c(a,b:integer):real; begin c:=fac(a)/fac(b)*fac(a-b) end; begin writeln('c(9,3)=',c(9,3)); writeln('c(8,5=',c(8,5)); end. 四、递归 函数或过程调用它本身,称为递归。 [例 1]、用递归计算 n! {=m!/n!(m-n)!} program fac_n(input,output); var n:integer; function fac(n:integer):integer; begin if n=1 then fac:=1

else fac:=n*fac(n-1); end; 五、标识符的作用域 1、全局变量和局部变量 1) 、全局变量:在主程序中被说明,作用域:整个程序; 2) 、局部变量:在子程序中被说明,作用域:主程序及其下级的程序。 2、子程序(function、precedure)的作用域 一个子程序可以调用它的下一级了程序,或可以调用在它之前定义的同级子程序。 [例]写出程序运行的结果。 program range(input,output); var x,y:integer; procedure p1; var x,z:integer; begin x:=10; y:=y+1; z:=10; writeln(x,y,z); end; begin x:=1; y:=1; writeln(x,y); p1; writeln(x,y,z); end. 结果为: (x y z) 1 1 10 2 10 1 2 (error) 3、在子程序中被改变值的变量可以回传的两种方法: a、变量参数 procedure(var 变量名); b、在上一级程序定义了的,且在下一级程序未被重新定义的。 [注]如果主程序的变量在子程序被重新定义,在子程序中主程序的变量被稳藏,在主程序中 子程序的变量无效。


相关文章:
PASCAL复习1
1/2 相关文档推荐 pascal复习1 8页 1下载券 Pascal基础知识复习1 暂无评价 ...C,D,E 和 F 六种食品,单价分别为:3.1,1.7,2,5.3, 0.9 和 7.2 元...
1 Pascal语言和基础知识_图文
1 Pascal语言和基础知识_学科竞赛_高中教育_教育专区。第一章 Pascal 语言和基础知识 第一章 Pascal 语言和基础知识一、教学目标: 1、了解 Pascal 言语的来源。 ...
pascal复习1
同系列文档 pascal复习21/2 相关文档推荐 Pascal基础知识复习1 暂无评价 10页 ...常量表 n: 语句 n; ELSE 语句 END; 【练习】 1、 用逻辑表达式表示下列...
pascal基础知识
pascal基础知识_物理_自然科学_专业资料。第一部分 Pascal 语言和程序设计基础 ...练习: 一、 判断以下标识符的合法性: a3 3a a17 abcd ex9.5 αβλ二、...
pascal基础1(答案哦)
pascal基础1(答案哦)_其它考试_资格考试/认证_教育专区。一、单选题 1.我们把计算机硬件系统和软件系统总称为 C 。 (A)计算机 CPU (B)固件 (C)计算机系统 ...
pascal基础知识
第一部分 Pascal 语言和程序设计基础 预备知识 基本程序结构和几个概念:: 标识...练习: 一、 判断以下标识符的合法性: a3 3a a17 abcd ex9.5 αβλ二、...
PASCAL知识点小结 1
PASCAL 知识点小结 1 Pascal 的字符与符号 PASCAL 语言中,允许使用的基本字符有三类: 1.英文字母 A~Z、a~z。除了字符串中的字母外,PASCAL 语言的程序中...
pascal第1、2课测试
pascal第1、2课测试_数学_自然科学_专业资料。pascal 基础知识鄞州区信息学竞赛辅导测试卷 1 学校 姓名 一、 选择题 (3 分/题) 1、下列中没有语法错误的 pas...
PASCAL程序的基本知识
PASCAL 程序的基本知识一PASCAL 程序的组成 1. 一个 PASCAL 程序分为两个...练习: 约定(amam-1am-2??a2a1a0)N 来表示 N 进制的一个数,而且 am 不...
Pascal基础练习题1
Pascal练习题 8页 免费如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。Pascal基础练习1练习题可让对Pascal的同学更胜...
更多相关标签: