PASCAL基本程序结构和概念.doc_第1页
PASCAL基本程序结构和概念.doc_第2页
PASCAL基本程序结构和概念.doc_第3页
PASCAL基本程序结构和概念.doc_第4页
PASCAL基本程序结构和概念.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

要求:1 程序的结构2 了解:常量 变量 运算符 表达式 标准数据类型3学会安装TP并做简单的操作。PASCAL基本程序结构和概念标识符 保留字 常量 变量 运算符 表达式 标准数据类型例1:为了明显起见先举一个最简单的PASCAL程序例子:例2:Program ex11;Begin Writeln(Hello World!); ReadLn;End.例3已知一辆自行车的售价是300元,请编程计算a辆自行车的总价是多少?解:若总售价用m来表示,则这个问题可分为以下几步处理:从键盘输入自行车的数目a;用公式 m=300*a 计算总售价;输出计算结果。Pascal程序: Program Ex12; 程序首部 Var a,m : integer; 说明部分 Begin 语句部分 Write(a=); ReadLn(a); 输入自行车数目 M := 300*a; 计算总售价 Writeln(M=,m); 输出总售价 ReadLn; 等待输入回车键 End.例4 输出两个自然数相除的商和余数。解:设被除数、除数、商和余数,分别为A,B,C,D,均为变量,且都是整数类型。题中未给出具体的自然数A、B,可采用键盘输入方式。 给出提示,从键盘输入a, b; 显示两数相除的数学形式; 求出a除以b的商c; 求出a除以b的余数d; 紧接等式后面输出显示商和余数。Pascal程序: Program Ex14; Var a,b,c,d : integer; Begin Write(INPUT A,B:); 给出提示信息 Readln(a,b); 输入a,b Writeln; 输出一空行 Write(a,/,b,=); 输出等式之后不换行 c:=a div b; 整除运算,取商的整数部分 d:=a mod b; 相除求余运算,取商的余数部分 Writeln(C,d); 输出后自动换行 Readln 等待输入回车键 End.例5:从键盘读入4个数据,逆序输出program pname;const n=4;type ar=array 1.4 of integer;var i:integer; a:ar;begin for i:=1 to n do read(ai); readln; for i:=n downto 1 do write(ai:4); writeln;end.例1.6自然数的立方可以表示为两个整数的平方之差,比如43=10262,请输出自然数1996的这种表示形式。(这里的43用自乘三次的形式4*4*4表示;102也用自乘二次的形式10*10表示)解:此题没有现成的计算公式能直接利用,但可以自行推出处理方法或构建适当的运算公式,按着构想的处理方案编排出各步骤。设这个自然数为N,两个平方数分别为X,Y, 将问题表示为求 N3=X2Y2 先找出X的值,仔细观察题中的示例,用数学方法归纳可得出X=N*(N+1)/2;(构成本题可用的计算公式) 再仔细观察,发现Y值比X小一个N值,即 Y=XN; 输出等式 N3=X2Y2 或N*N*N=X*XY*YPascal程序: Program Ex15; Const N=1996; 常量说明 Var X,Y: Longint; 变量说明,此题计算中的数值较大,用长整型 Begin X:=N*(N+1) div 2; div 是整除运算 Y:=X-N; Writeln(N,*,N,*, N,=, X,*, X,Y,*,Y); 输出结果 Readln End.本程序中N是常量,X,Y是变量,为长整数类型(Longint); 程序中的div 是整除运算,其结果只取商的整数部分; 例1.7 求一元二次方程x2+3x+2=0的两个实数根。解:方程的系数是常量,分别用a,b,c表示,可运用数学上现成的求根公式求方程的根,采取如下方法: 先求出d=b2-4ac;(求根公式中需用开方运算的那部分) 再用求根公式算出x1,x2的值。(x1,x2 = ? ) 输出x1,x2. Pascal程序: program Ex16; Const a=1; 常量说明 b=3; c=2; a,b,c表示方程系数 Var d : integer; d为整型变量 X1,X2: Real; X1,X2为实型变量 Begin d:=b*b-4*a*c; x1:=(-b+sqrt(d)/(2*a); 求方程的根 x2:=(-b-sqrt(d)/(2*a); Writeln(X1=,X1,:6,X2=,X2);输出结果 Readln 等待输入一个回车键 End.本程序中的a,b,c均为常量;变量d是整数类型,而变量x1,x2则是实数类型,因为运算式中的Sqrt(d)开平方运算和(/)除法运算使结果为实数。Sqrt( ) 是开平方函数,是Pascal系统的一个标准函数。 一般来说,一个PASCAL程序包括以下几个部分: 程序头:program pname; 其中,program是保留字,表示程序从这个地方开始,pname是标识符,是程序的名字,可由程序员自定。保留字是PASCAL选定的,具有固定意义和用法的专用单词或缩写,这些单词不允许作其它使用。如上,“program”就有“程序从这里开始”这样一种特别的意义,而“const”就有“常量说明从这里开始”的意义。我们不能再用“program”、“const”来作为其它变量、常量等的名字。标识符是以字母开头的字母数字串,其长度最大为8个字符。用来表示常量、变量、类型、文件、过程、函数和程序的名字。如“pname”、“i”、“j”、“a1”就是合法的标识符;但“1a”、“#a”是非法的标识符。有一点要注意的是,在PASCAL中,字母除了作为字符值或字符串值之外,其大小写是无关的。如标识符“A1”和“a1”在PASCLA看来是同一标识符。在PASCAL中除了保留字和自定义的标识符外,还有一类有特殊含义的标识符,这类标识符称为标准标识符。它们是用来标记程序中经常引用的处理对象,如常量、函数。(PASCAL定义的保留字和标准标识符附后) 标识符在命名的时候要注意:1、名字要易记易读,有意义。如8皇后问题程序名可以是“queen”也可以是“huanghou”等;2、不能用保留字、标准标识符作为自定义的标识符。 说明部分:const n=4; type ar=array 1.4 of integer; var i:integer; a:ar; 其中,const部分是常量说明,说明一些在以下部分用到的,在整个程序执行过程不改变值的量。这些量PASCAL称为常量。在程序中用到这个值的地方均用常量名来代替。如上题中定义“n=4”指本程序处理4个数值,在下面的程序体中就用“n”来代替具体的值(如for i:=1 to n)。如果要改变处理数据个数,则只在常量说明部分修改“n=4”这一句就行了,而不用在程序中每一个用到的地方都加以修改。这样不但在编写程序的时候很方便,也增加了程序的可读性,修改时更方便。 常量说明在保留字“const”下开始。可以有多个语句。常量说明语句的格式是:“常量名=值;”。如“n=4;”。n是常量名,4是该常量的值,“;”是语句分隔符。 type部分是类型说明,说明一些在以下部分用到的数据类型。如数组、记录、指针等。 类型说明在保留字“type”下开始。可以有多个语句。类型说明语句的格式是:“类型名=类型说明;”。如“ar=array 1.4 of integer;”。ar是类型名,array 1.4 of integer是类型说明,“;”是语句分隔符。 var部分是变量说明。变量是指在程序执行过程中可以通过赋值语句或读语句来改变值的量。所有在程序中使用的变量都应该先在变量说明部分说明。PASCAL中引用的每个变量都有“名字”和“类型”属性。变量说明“说明”的主要工作是告诉PASCA下面程序中要用到这个名字的量,同时这个量的类型是什么。 变量说明在保留字“var”下开始。可以有多个语句。变量说明语句的格式是:“变量名:变量类型;”。其中,如果有多个变量同一类型,则变量名与变量名之间用逗号分隔,变量名与变量类型之间用冒号分隔。如“i:integer;”(i是变量名,integer是类型名)、“i、j:integer;”(i、j是变量名,integer是类型名) 变量说明要注意:1、有效变量名称不能大于8个字符;2、变量名称必须以字母开头;3、在同一个有效范围内变量名称必须唯一。 各个说明部分均以该部分的保留字开始。如“const”开始常量说明;“type”开始类型说明;“var”开始变量说明。一个程序包含多少种类型的说明,看需要而定,不是每一个程序都必须同时包含这三种说明。如果程序不须要用到常量,则常量说明部分可以省略;如果不须要用到类型说明,则类型说明可省 PASCAL还有一条规则:先说明后引用。即所有在程序体中用到的“名字”必须都在说明部分说明过才能引用,否则就会出错,通不过编译,也执行不了。如上,类型“ar”先在类型说明中定义,然后在变量说明中引用;变量i在变量说明中定义,在程序中引用。 程序体:begin for i:=1 to n do read(ai); readln; for i:=n downto 1 do write(ai:4); writeln; end. 程序体是以begin end.括起来的语句系列。“end”后面是一个小圆点,标识着程序结束,整个程序只有一个是一个程序的主要部分。编程要完成的工作大部分都在这里完成。程序体中每一语句均以“;”作为结束符。在书写程序时,以“分层缩进”的风格来写,以便提高程序的可读性。所谓的“分层缩进”是指在逻辑上同一级的语句其起始点对齐,下一级的语句向右缩进。运算符 表达式 PASCAL中的运算符有算术运算符和关系运算符。和我们在数学课中学的基本一样但在写法上有些不同,在写程序时要特别注意写法的不同: + 加号 - 减号 * 乘号( 数学中写为 ) / 除号( 数学中写为 ) MOD 取余 如 8 MOD 2=0 7 MOD 2=1 2 MOD 3=2 DIV 取整 如 8 DIV 2=4 7 DIV 2=3 2 DIV 3=0 在PASCAL只有上面6种数学运算。其它的就只能利用这6种运算的组合通过语句来实现。如a2(a的平方)可以化成a*a。 大于 小于 不等于(数学中写为 )= 大于等于(数学中写为 )优先级 运算符优先级 not 1(最高) *,/,div,mod,and 2 xor,+,-,or 3 in,=,=,=, 4(最低) 变量、常量通过运算符连接起来的式子我们称为表达式。一个单独的变量或常量也是表达式。如a、a+3、a*3+b都是表达式。写表达式时要注意PASCAL表达式跟我们已经熟悉的数学表达式在格式上的区别: 数学表达式 PASCAL表达式 注意 2a 2*a *号不能省略 ab a/b 除号的写法 ab ab 不等号的写法 ab a=b 小于等于号的写法Pascal语言中的运算符及其优先级 单目运算符(最高优先级) 取变量或函数的地址(返回一个指针) not逻辑取反或按位取反 乘除及按位运算符 *相乘或集合交集 /浮点相除 div整数相除 mod取模(整数相除的余数) as程序运行阶段类型转换(RTTI运算符) and逻辑或按位求和 shl按位左移 shr按位右移 加减运算符 +相加、集合并集、字符串连接或指针增加一个偏移量 -相减、集合差集或指针减少一个偏移量 or逻辑或按位或运算 xor逻辑或按位异或运算 关系及比较运算符(最低优先级) =判断是否相等 判断是否不相等 判断是否大于 =判断是否大于或等于,或是否是一个集合的父集 in判断是否是集合成员 is判断对象是否类型兼容(又一个RTTI运算符) 具体优先顺序: 括号内先算 函数 运算符优先顺序 同级运算按从左到右的次序。 注意: 、与大多数编程语言相反,Pascal语言中and和or运算符的优先级比关系运算符高。因此,如果你的代码为abandcd,编译器首先会编译and运算符,由此导致编译出错。为此你应该把每个表达式用小括号括起来:(ab)and(c = = := ( ) . , : $ (* *) 其中,有些符号是以双字符作为一个整体,拆开后就失去原有的意义。如“”是一个表示“不等于”的关系运算符,如拆开后就变成了两个关系运算符,分别表示“小于”、“大于”。 PASCAL使用的保留字有: AND ARRAY BEGIN CASE CONST DIV DO DOWNTO ELSE END FILE FOR FUNCTION GOTO IF IN LABEL MOD NIL NOT OF PACKED PROCEDURE PROGRAM RECORD REPEAT SET THEN TO TYPE UNTIL VAR WHILE WITH FORWARD 常用的标准标识符有: 标准常量:FALSE

温馨提示

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

评论

0/150

提交评论