PASCAL语言程序设计_第1页
PASCAL语言程序设计_第2页
PASCAL语言程序设计_第3页
PASCAL语言程序设计_第4页
PASCAL语言程序设计_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 / 53目录第一部分 PASCAL 语言程序设计 .1第一章 PASCAL 语言基础 .1第一节 程序的组成与上机调试运行 .2第二节 常量、变量与数据类型 .3第三节 表达式与标准函数 .6第四节 赋值语句、输入与输出语句 .9习题 .12第二章 程序的三种基本结构 .14第一节 顺序结构 .14第二节 选择结构 .14第三节 循环结构 .16习题 .19第三章 数组 .21第一节 一维数组 .21第二节 二维数组及应用 .24习题 .25第四章 字符与字符串操作 .28第一节 字符和字符数组 .28第二节 字符串变量 .28第三节 字符串应用举例 .30习题 .32第五章 函数与过程 .34第一节 自定义函数 .34第二节 自定义过程 .37第四节 递归 .41第五节 递归与回溯 .44习题 .49第一部分 PASCAL 语言程序设计第一章 PASCAL 语言基础Pascal 语言是瑞士苏黎士工科大学的 Niklans Wirth(沃思)1971 年发表的,是为了纪念 17 世纪法国著名哲学和数学研究者 Blaisc Pascal 而将它命名为 Pascal 程序设计语言。Pascal 语言是信息学奥赛中普遍使用的程序设计语言。2 / 53第一节 程序的组成与上机调试运行一、程序的组成我们先看一道例题。例 1-1 输入两个整数 a 和 b,计算 a 和 b 的和(a+b)。【参考程序】program a1(input,output); /程序首部var a,b,c:integer; /程序说明部分,a,b,c 被说明为整型变量begin /程序执行部分,下面是程序的内容write(a=); /在屏幕上输出一个字符串“a=”,输出完后不换行read(a); /从键盘输入一个数值赋给变量 awrite(b=); /在屏幕上输出一个字符串“b=”,输出完后不换行read(b); /从键盘输入一个数值赋给变量 bc:=a+b; /计算 a+b 的和,并将这个和赋值给变量 cwriteln(a,+,b,=,c); /输出 a+b=c 的等式,输出完后换行end. /程序结束【样例输入】a=10b=30【样例输出】10+30=40由上可以看出,一个 Pascal 程序由以下三部分组成:(1)由 Program 引导的一行是 Pascal 程序的首部。程序首部指出了源程序的名称,是由用户自己给出的,该例子称为 a1。程序名后用括号括住的两个参数 input 与 output,通常表示程序运行中的标准输入和输出文件,程序首部以分号结束。(2)Pascal 程序的第二部分是说明部分。说明部分要求列出程序中引用的全部常量、变量、转移标号、类型、过程和函数的有关说明。若变量 c 在说明部分没有说明,后边的语句 c:=a+b 在执行时;翻译软件便能指出其错误并提醒用户加以改正,程序中每个语句都以分号表示结束。(3)程序的第三个部分是用 BEGIN 和 END 括住的一串语句,称为程序的执行部分。有的书中将说明部分和执行部分合称为程序体。二、PASCAL 语言编辑软件的基本操作下面我们以 Free Pascal 1.10 系统为例来学习一下 Pascal 语言编辑软件的使用。1.Free Pascal 的启动在运行程序目录下(一般是 c:ppbingo32v2)运行启动程序 fp.exe,即可启动系统。屏幕上出现如图 1-1 所示的集成环境。图 1-12.Free Pascal 系统集成开发环境(IDE)简介最顶上一行为主菜单,中间蓝色框内为编辑窗口,在编辑窗口内可以进行程序的编辑,最底下一行为提示行,显示出系统中常用命令的快捷键,如将当前编辑窗口中文件存盘的命令快捷键为 F2,打开磁盘文件命令 F3,等等。3 / 533.新建程序窗口按 F10 切换到主菜单,选择 FILE 菜单,执行其中 New 命令,就可建立一个新的程序窗口(默认文件名为 Noname00.pas 或 Noname01.pas 等)。4.程序的输入、编辑与运行在当前程序窗口中,一行一行的输入程序。当程序输入完毕之后,一般要先按Alt+F9(或执行 compile 菜单中 compile 命令)对程序进行编译。如果程序有语法错误,则会出现一个 Compiler 窗口,提示你语句错误的坐标。若无语法错误,则窗口正中央会出现一个对话框,提示编译成功。接下来,我们可以运行程序了。程序的运行可以通过按 ALT+R 打开 RUN 菜单中的 RUN 命令,或直接按快捷键CTRL+F9,则可以在用户窗口中输出运行结果。通常在程序运行结束后系统回到 Pascal 系统的集成环境,因此要查看运行结果,要按 ALT+F5 将屏幕切换到用户屏幕。5.程序的保存与打开当我们想把程序窗口中的程序存入磁盘时,可以通过按 F2 键(或执行 File 菜单中的save 命令)来保存程序。第一次保存文件时屏幕上会出现一个对话框要求输入文件名(默认扩展名为.pas)。当我们要将磁盘上的 PASCAL 程序打开(装入窗口)时,可按 F3(或执行 File 菜单中的 Open 命令)来打开程序,此时系统也会弹出一个对话框要求输入要打开的文件名,或直接在文件对话框列表中选择所要打开的文件。第二节 常量、变量与数据类型一、常量(1)常量:在某个程序运行的整个过程中其值不能发生改变的量。(2)常量定义:常量定义出现在说明部分。它的语法格式是:const=;.=;例如:constpi=3.141592; /此种方式定义的常量在程序中不可以改变(3)常量定义部分必须以保留字 const 开头,可以包含一个或几个常量定义,而且每个常量均以分号结束。二、变量(1)变量定义:在某个程序的运行过程中其值可以发生改变的量。它应具有以下三个要素:变量名、变量类型和变量值。(2)变量说明:变量说明出现在说明部分。它的语法格式是:var:;.:;(3)变量名每一个变量必须用一个合适的标识符来命名。标识符是用来标识处理对象(如常量、变量、类型、过程、函数、程序和文件等)的符号名称。标识符是编程者命名的,自由度很大。命名中应该注意遵循一定的规则,如必须以字母开头,后面可以跟字母、数字和连字符“_”,若有连字符“_”则必须位于标识符中间。如:a,root,tot,t3,exp_1 都是合法的标识符,而 3a,a#,my%都不是合法的标识符。(4)变量的类型4 / 53在 Pascal 程序执行的任一时刻,变量总有相应的值。由于变量是有类型的,所以整型变量对应整数值,实型变量对应实数值。在 Pascal 语言中规定:在程序中使用的变量必须先定义后使用。如果用到的变量没有定义就使用,程序编译时会出现“Identifier not found X”的错误信息。例 1-2 已知某圆的半径 r=15.15,求该圆的面积 s?【分析】圆的面积 s=3.14*圆的半径 r*圆的半径 r【参考程序】program t301;const pi=3.14;var s,r:real; /定义两个实型变量 s,rbeginr:=15.15;s:=pi*r*r;writeln(s:10:2); /显示宽度是 10,保留两位小数end.【输出结果】47.57三、数据类型Pascal 语言提供了丰富的数据类型,大致分为以下三类,如图 1-2 所示:图 1-2简单类型是指该类型不能再分解为其它类型,而结构类型是由简单类型所组成的,或者说结构类型是由简单类型所构造成的。1.整型一个整型数据用来存放整数。Free Pascal 支持七种预定义整型,它们是shortint(短整型)、integer(整型)、longint(长整型)、byte(字节型)、word(字类型)、int64 和 Qword,每一种类型规定了相应的整数取值范围以及所占用的内存字节数。类型 数值范围 占字节数Shortint -128.127 1byte 0.255 1word 0.65535 2integer 32768.32767 2longint -2147483648.2147483647 4int64 -9223372036854775808.9223372036854775807 8qword 0.18446744073709551615 8Free Pascal 预定义了两个整型常量标识符 maxint 和 maxlongint,他们各表示确定的常数值,maxint 为 32767,maxlongint 为 2147483647,他们的类型分别是 integer 和longint。5 / 532.实型Free Pascal 语言支持五种预定义实型,它们是 real(基本实型)、single(单精度实型)、double(双精度实型)、comp()、extended(扩展实型),每一种类型规定了相应的实数取值范围、所占用的内存字节数以及它们所能达到的精度。类型 数值范围 占字节数有效位数real 2.9e-39.1.7e38 6 11.12single 1.5e-45.3.4e38 4 7.8double 5.0e-324.1.7e308 8 15.16Comp(装配实型) -263+1.263-1 8 19.20extended(扩展实型) 3.4e-4932.1.1e4932 10 19.20实型常量包括正实数、负实数和实数零。pascal 中表示实型常量的形式有两种。十进制表示法这是人们日常使用的带小数点的表示方法,要求小数点前后必须有数字。如 0.0、-0.0、+5.61、-8.0、-6.050 等都是实型常量,而 0.、.55 都不是合法的实数形式。科学记数法科学记数法是采用指数形式的表示方法,如 1.25105 可表示成 1.25E+05。在科学记数法中,字母“E”表示 10 这个“底数”,而 E 之前为一个十进制表示的小数,称为尾数,E 之后必须为一个整数,称为“指数”。如-1234.56E+26、+0.268E-5、1E5 是合法形式,而.34E12、2.E5、E5、E、1.2E+0.5 都不是合法形式的实数。值得注意的是实数的运算比整数的运算速度慢且无法像整数那样精确表示,只能近似表示。3.布尔型(boolean)一个布尔型数据用来存放逻辑值(布尔值),布尔型的值只有两个:false(假值)和true(真值)。4.字符型(char)字符型只允许单引号中有一个字符,否则就是字符串(string)。如:A,y,9,7。例 1-3 有如下程序,运行它,看有什么结果?program aa;var a,b:integer; c,d:real; m,n:booLean; ch:char;begina:=10; b:=5;writeln(a=,a, ,b=,b);c:=a/b;writeln(c=,c);ch:=T;writeln(ch=,ch);m:=56; n:=107;writeln(m=,m, ,n=,n);end.【输出结果】a=10 b=5c= 2.000000000000000E+000ch=Tm=FALSE n=TRUE例 1-4 编写程序,输出如下图形。6 / 53【参考程序】program aa;beginwriteln( $);writeln( $);writeln($);end.第三节 表达式与标准函数一、算术运算符与算术表达式1算术运算符常用的有以下 6 个算术运算符:+(加)、-(减)、*(乘)、/(实数除)、DIV(整除)、MOD(求余)其中,/(实数除)得到结果为实型,如 5.0/2.0=2.5, 4/2=2.0,DIV(求两个数相除后的整数部分),它要求除数和被除数均为整型,结果也为整型,如 10 DIV 2=5,5 DIV 10=0,-15 DIV 4=-3,DIV 运算只取商的整数部分,参与 DIV 运算的两个对象不能为实型。mod (求两个数相除后的余数部分)也只能用于整数运算,结果为整数,例如:10 mod 4=2,-17 mod -4=-1,4 mod (-13)=4。2算术表达式在 Pascal 语言中,算术表达式的意义为:所有符合 Pascal 语法规则的数值型运算对象(数值型常量、变量、函数)、运算符、圆括号所组成的有意义的式子。表达式的结果可按标准类型分成算术表达式(运算结果为整型/实型)及布尔表达式(运算结果为布尔型)。3. 关系运算符和关系表达式由一个关系运算符将两个类型相容且有序的表达式连结起来的式子,称之为关系表达式,其结果为布尔型(真 true 或假 false)。这里用到的 Pascal 语言中的关系运算符有:(大于) =(等于) =(大于等于) (不等于)共六个。4. 布尔运算及布尔表达式(1)布尔常量和变量在 Pascal 语言中,布尔运算又称为逻辑运算,布尔值也称为逻辑值,它有“真”与“假”两个,分别用“TRUE”与“FALSE”这两个布尔常量来表示的。用来存放逻辑值的变量称为布尔变量,它的作用就是存放一个布尔常量。当然,布尔变量也必须先定义后使用。例如:VAR T,F:BOOLEAN;在这里,使用 BOOLEAN 这个标准类型标识符来定义 T 与 F 这两个布尔变量。(2)布尔运算布尔运算有三个运算符:Not(逻辑非)、And(逻辑与)、Or(逻辑或)由一个布尔运算符将两个类型相容且有序的表达式连结起来的式子,称之为布尔表达式。在一个既包括有布尔运算符,又有关系运算符的表达式中,它们的运算次序为:1)括号2)函数3)NOT(逻辑非)4)*、/、DIV、MOD、AND7 / 535)+、-、OR6)、=、=、(3)布尔型数据的输入与输出在 Pascal 的程序中,只能通过赋值语句给布尔型变量赋值,不能用 READ 语句输入一个布尔常量,但可以用 write 或 writeln 语句直接输出布尔变量和布尔常量的值。例 1-5 判断程序运算结果program aa;var a,b,s,d:integer; L,e,g,f,h,m:boolean;begina:=3;b:=7;s:=a+b; d:=a div b;L:=ab;f:=e or g;h:=e and g;m:=not h;write(s=,s:5);writeln(d=,d:5);writeln(L=,L);writeln(e=,e,g=,g);writeln(f, ,h, ,m);end.【输出结果】s= 10d= 0L=TRUEe=FALSEg=FALSEFALSE FALSE TRUE二、标准函数Pascal 预先定义了很多种标准函数,其调用格式如下:变量名:=函数名(自变量参数);1算术函数算术函数可以直接参与算术运算,函数的自变量和函数的类型均为数值型。函数名称函数标识符 自变量类型 结果类型 说明绝对值 abs(x) 整型、实型 同自变量 求 X 的绝对值平方 sqr(x) 整型、实型 同自变量 求 X 的平方平方根 sqrt(x) 非负整型、非负实型非负实数 求 X 的平方根指数 exp(x) 整型、实型 实型 相当于 EXP(X)=ex(底数为 e)自然对数 ln(x) 整型、实型 实型 求 X 的自然对数(底数为 e)算术函数使用注意事项:(1)绝对值函数 abs(X)与数学中的意义功能相同,如:abs(7.1)=7.1,abs(-16)=16(2)平方值函数 sqr(X)即求 X2值,如:sqr(5)=25(3)在 Pascal 语言中,若要计算 y=Xn,可以用 y=exp(n*LN(x)来表示。(4)平方根函数 sqrt(X)与数学中的 意义功能相同,运算时要求自变量 X=0。如果要计算 的值,那只能借助其它方法了。如: =exp(1/3*LN(x)。X3X(5)指数函数 exp(x)与对数函数 LN(x)是一对逆函数。与数学中相应函数的区别在于它们都是以自然对数 e(e 2.71828)为底。例如:exp(2)即求 e2=2.71828*2.71828 7.3890461反过来,LN(7.3890461)=2附:对数的定义:8 / 53假定 a 是一个不等于 1 的正实数(即 且 a0),对于正实数 b(即 b0),如果存在1a一个实数 c,满足 这样的关系式,那么我们说”c 是以 a 为底,b 的对数”。并以cb数学符号 来表示此意义。(注: 读作”以 a 为底 , b 的对数”,其中 aloglogb叫作 的” 底”, b 叫作 的”真数”)ala2转换函数转换函数的功能是可以根据需要将数据类型进行转换。函数名 函数标识符 自变量类型函数值类型说明截尾 trunc(x) 实型 整型 取 x 的整数部分舍入 round(x) 实型 整型 对 x 四舍五入后取它的整数部分序号 ord(x) 整型、字符型、布尔型整型 求 x 对应的序号字符 chr(x) 整型 字符型 求 x 对应的字符转换函数使用注意事项:(1)截尾函数 trunc(x)可以将实数型自变量 x 的小数部分截去,函数值为整数。如:trunc(17.8)的值为 17,trunc(-6.41)的值为-6。(2)舍入函数 round(x)是将实数型自变量 x 的小数部分四舍五入,取它的整数部分。如: round(17.8)的值为 18,round(-6.1)的值为-6。(3)当序号函数的自变量为字符时,函数值为该字符的 ASC码,当自变量为整型数据时,则 ord(x)的值为自变量本身,当自变量为 BOOLEAN 时,Pascal 中规定:FALSE 的序号为 0,TRUE 的序号为 1。如:ord(A)=65,ord(a)=97,ord(0)=48,ord(68)=68,ord(FALSE)=0,ord(TRUE)=1。序号函数 ord(x)与字符函数 chr(x)的功能相反,它们是一对逆函数。如:chr(ord(A)= A,ord(chr(96)=96。3顺序函数函数名称 函数标识符 自变量类型 函数值类型说明前趋 pred(x) 整型、字符型、布尔型整型、字符型、布尔型求 x 的前一个数据若 x 是第一项,则函数无意义后继 succ(x) 整型、字符型、布尔型整型、字符型、布尔型求 x 的后一个数据若 x 是最后一项,则函数无意义顺序函数使用注意事项:(1)前趋函数 pred(x)和后继函数 succ(x)是一对逆函数。如:pred(succ(x)=x,succ(pred(x)=x。(2)顺序函数的自变量 x 必须是一个有顺序的数据类型,如实数型的数虽然能比较大小但无法确定 x 前一项和后一项到底是什么数,所以实型数没有前驱和后继。(3)当自变量 x 为数据第一项时,它没有前驱,如 pred(FALSE)无意义;当自变量 x为最后一项时,它没有后继。如 succ(TRUE)无意义。4逻辑判断函数函数名称 函数标识 自变量类 函数值类型 说明9 / 53符 型奇函数 odd(x) 整型 布尔型 判断 x 的奇偶性奇函数使用注意事项:奇函数的值为 BOOLEAN 类型,即只存在“真”(TRUE)和“假”(FALSE)。如:odd(5)=true,odd(10)=false第四节 赋值语句、输入与输出语句一、赋值语句1格式:变量:=表达式;2使用说明:(1)该语句具有先计算后赋值的功能,即先计算出来表达式的值,然后将其值赋给左边的变量或函数标识符,注意:一个赋值语句只能给一个变量赋值。(2)“:=”称为赋值号,要注意不能与关系运算符“=”混淆,只有在赋值语句中才能使用赋值号,赋值号具有方向性,是将赋值号右边表达式的值计算出来,赋予赋值号左边的变量,所以赋值号的左边只能是变量,并且赋值号两边的类型应该具有赋值相容性,如整型的值可以赋值给实型变量,反之则不行,字符型可以赋值给字符串型变量,反之也不行。(3)被赋值的变量本身可以作为因子参与运算,如 n:=n-1,i:=i+1,s:=s+x。例 1-6 写出执行下面的程序运行后,变量 A、B、C 的值。program a16;var a,b:integer; c:real;begina:=200;b:=a div 10;c:=a;writeln(a:7,b:7,c:7:2);end.二、输入语句(读语句)1格式:read(输入项); 或 readln2使用说明:(1)执行该语句时,从键盘上(或文件中)读入数据,将其值依次赋给输入项中的变量。注意输入的数据必须是常量,且输入的数据类型必须和变量一一对应。(2)输入项中的括号内应是一组变量,这里一组的含义是可以为一个,也可以是多个,若是多个时,各变量之间必须用逗号分隔,最后一个没有符号,他们必须在程序说明部分预先说明,他们可以是整型、实型或字符型等数据类型,但不能是布尔型,因为布尔型不可以直接读入。如:Read(a,b,c,d); 或 Readln(M,N,L);(3)程序运行后,执行到 Read 或 Readln 语句时,系统处于等待状态,等待用户从键盘上输入数据,且当输入项中的变量为多个时,要求输入的相应数据个数不能少于其变量的个数,当输入的数据个数少于变量个数时,系统仍处于等待状态,接着输入的数据无论是换行输入还是不换行输入均有效。注意:输入数值(整型或实型)数据时,数据间用空格或回车键分隔,最后一定要有一个回车,表示输入结束;输入字符型数据时,数据间不能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论