第 二 课 程序组成、基本数据类型、表达式 我们以上一章练习题为例说明Pascal程序的结构形式: program area_of_circle(input,output);───程序首部 { Declaration Part } const pi=3.1416; 说明部分 var s,r:real; { Excutable Part } 分程序 begin readln(r); s:=pi*sqr(r); 执行部分 writeln('S=',s) end. 每个Pascal程序均由程序首部和分程序组成,用句号表示结束,即: 程序 = 程序首部 + 分程序.
第 二 课 程序组成、基本数据类型、表达式 程序首部 程序首部是程序的开头部分,由“program”这个固定的字及随后的程序名和程序参数表组成,以分号结束。程序名由用户自己定义,例如上述求圆面积的程序被定义为area_of_circle。程序参数表表示程序的输入和输出对象,对于通常的输入设备(键盘)和输出设备(屏幕)Turbo Pascal允许省略。甚至Turbo Pascal还允许将整个程序首部省略。 此外,在一对大括号{ }内的内容为注释,注释可出现在Pascal程序的任何位置上,对程序的某一段或某一语句加以解释,仅供用户阅读,对程序的运行不起任何作用。 Program Area_of_Circle (input,output); { Declaration Part } const pi = 3.1416; var s,r : real; { Excutable Part } begin writeln('Please input radius: '); readln(r); s := Pi*sqr(r); writeln('S = ',s); readln; end.
第 二 课 程序组成、基本数据类型、表达式 分程序由程序的说明部分和执行部分组成。 { Excutable Part } 1、程序的说明部分 Pascal语言有一个与简单语言的不同之处:凡在程序中使用的常量、变量等都需说明,即都必须在说明部分说明之后才能使用。在示例中,第三、第四行分别是常量和变量的说明:pi取不变量3.1416,s、r是二个实型变量。具体说明方法将在以后的有关内容中作详细介绍。 2、程序的执行部分 自begin开始至end结束的这部分称为程序的执行部分。它由一系列的语句组成。语句之间用分号“;”隔开。执行部分所有的语句完成整个程序设计的任务。示例中的执行部分由输出提示语句、输入半径r,计算圆面积s及输出圆面积s四条语句组成。begin和end仅作为起止标志。 Turbo Pascal的书写格式比较灵活,允许一行写几条语句,也允许条一语句写成多行。为了提高程序的可读性和便于纠错,Pascal程序提倡用锯齿形书写格式,本书中的程序书写都将采用这种格式。 Program Area_of_Circle (input,output); { Declaration Part } Const pi = 3.1416; var s,r : real; { Excutable Part } begin writeln('Please input radius: '); readln(r); s := Pi*sqr(r); writeln('S = ',s); readln; end.
第 二 课 程序组成、基本数据类型、表达式 第二节 基本语法单位 第二节 基本语法单位 Pascal语言中任何复杂的语句都由一些基本的单位组成,这些基本语法单位有: 一、保留字(或关键字) 指Pascal中具有特定含义的一些符号,不能再另作它用。例如“begin”、“end”、“const”、“var”等都有专门的用途,不能作为程序名或变量名。Turbo Pascal 7.0共有51个保留字。 二、标识符 标识符用来标识(表示)各种对象的名称。可以标识常量、变量、程序等。例如示例中的area_of_circle(程序名)、pi(符号常量)、s和r(变量名)都属标识符。Turbo Pascal规定:标识符必须由字母开头的字母、数字和含下划线组成,有效长度不超过63个字符,且不分大小写。 标识符又可分为两种: 1、标准标识符:指Pascal系统预先定义好的标识符,故又称预定义标识符,具有特定含义。例如:integer、real用于标识类型,read、write用于标识过程等等。 2、用户定义标识符:由用户自己定义的标识符。例如定义一个变量名或一个程序名。在定义标识符时应注意,尽量用具有一定含义的英文单词(或汉语拼音)命名,让人一看到某个变量名或程序名就知道表示什么,即所谓的“见名知义”。例如sum表示求和,sub表示子程序等等。但要禁止使用保留字或标准标识符作为用户标识符。
数据是程序设计的一个重要内容,其重要特征--数据类型,确定了该数据的形式、取值范围及所能参与的运算。 第 二 课 程序组成、基本数据类型、表达式 第三节 数据类型 数据是程序设计的一个重要内容,其重要特征--数据类型,确定了该数据的形式、取值范围及所能参与的运算。 Turbo Pascal语言提供了丰富的数据类型,这些数据类型可分为以下三大类: 整型 标准类型 实型 字符型 简单类型 布尔型 用户自定义类型 枚举型 子界型 数组类型(包含字符串类型) 记录类型 数据类型 结构类型 集合类型 文件类型 指针类型 简单类型、结构类型和指针类型。在本节先介绍属于简单类型中的整数、实型、字符型和布尔型四种标准数据类型。
第 二 课 程序组成、基本数据类型、表达式 一、整数类型 通常的整数类型包括正整数、负整数和零。 整数只能由正负号和数字组成,正整数可以省去符号“+”。Pascal语言用标识符integer表示整数类型。整型数范围为[-32768,32767]。 例如: 385、0、+4334、-6785 都是合法的整数。 78,542、7.00、45A 都是非法的整数。 Turbo Pascal还支持另四种预定义整型,它们是shortint(短整型)、 longint(长整型)、 byte(字节型)和 word(字类型),Turbo Pascal分别用相同的名字作为他们的标识符。每一种类型规定了相应的整数取值范围以及所占用的内存字节数。从中可以看出取值范围大或有效位数多的类型占用的内存字节数也多,有些类型不包括负数。
第 二 课 程序组成、基本数据类型、表达式 类型 数值范围 占字节数 格式 shortint -128..128 1 带符号8位 inteter -32768..32767 2 带符号16位 longint -2147483648..2147483647 4 带符号32位 byte 0..255 word 0..65535 Turbo Pascal规定了两个预定义整型常量标识符maxint和maxlonint,它们各表示确定的常数值,maxint为32767, longint为2147483647,他们的类型分别是integer 和longint。
第 二 课 程序组成、基本数据类型、表达式 二、实数类型 实数类型的数据包括正实数、负实数和实数零。Pascal语言中以二种方法表示实数: 1、通常带小数的实数表示法。例如: 4.51、-3.87、+0.0都是合法的。 2、科学记数法。例如: 4.85E+2 表示4.85×102 -1.384E2 表示-1.384×102 -7.65E-5 表示-7.65×10-5 在科学记数法中,字母“E”表示10这个“底数”, 而E之前为一个十进制表示的小数,称为尾数, E之后必须为一个整数,称为“指数”。 如-1234.56E+26 , +0.268E-5 , 1E5是合法形式, 而 .34E12 、2.E5 、E5、E、1.2E+0.5都不是合法形式的实数。
第 二 课 程序组成、基本数据类型、表达式 Pascal语言用标识符real表示实数类型。实数的范围为│10-38~1038│。 无论实数是用十进制表示法还是科学表示法,在计算机内的表示形式是一样的,总是用“浮点方式”存储。和整数相比,实数能表示的范围大得多,但值得注意的是实数的运算比整数的运算速度慢且无法像整数那样精确表示,只能近似表示。 Turbo Pascal还支持另四种预定义实型,它们是single(单精度实型)、double(双精度实型)、extended(扩展实型)、comp(装配实型),Turbo Pascal分别用相同的名字作为他们的标识符。每一种类型规定了相应的实数取值范围、所占用的内存字节数以及它们所能达到的精度。同样,实型类型取值范围大相应的占用内存字节数也多。 类型 数值范围 占字节数 有效位数 real 2.9e-39..1.7e38 6 11..12 single 1.5e-45..3.4e38 4 7..8 double 5.0e-324..1.7e308 8 15..16 extended 3.4e-4932..1.1e4932 10 19..20 comp -263+1..263-1
第 二 课 程序组成、基本数据类型、表达式 三、字符类型 四、布尔类型 在Pascal语言中,字符常量是由单个字符组成,所有字符来自ASCII字符集,共有256个字符。在程序中,通常用一对单引号将单个字符括起来表示一个字符常量。如:‘a’,‘A’,‘9’ 等。 特殊地,对于单引号字符,则要表示成''''(四个单引号)。对于ASCII字符集中,按每个字符在字符集中的位置,将其编为0-255,称为对应字符的序号。 Pascal语言中用标识符char表示字符类型。 四、布尔类型 布尔类型的数据只有两个:真,用true表示;假,用false表示。 它们的序号分别为1和0。 布尔类型的标识符为boolean。 这四种标准类型中,除实数类型外的其他类型均属顺序类型,即在该类型的任意两个相邻常量中不可能插入第三个量介于这两个量之间。
第 二 课 常量、变量、标准函数和表达式 例如: program ex; const pi=3.14159; begin 一、常量和符号常量 一个常量即可以直接用字面形式表示(称为直接常量,124、156.8),也可以用一个标识符来代表一个常量,称为“符号常量”。但符号常量必须在程序中的说明部分定义,也就是说先定义,后使用。 定义符号常量的一般格式: const <常量标识符>=<常量> 说明:常量说明部分以关键字const开头, 后面的标识符为常量标识符,其中“=”号后的常量为整数、实数、字符。而且,在常量说明部分可以将几个常量说明成符号常量,共用一个关键字“const”。 例如: program ex; const pi=3.14159; begin readln(r); s:=pi*r*r; writeln(s) end. 在本程序中pi作为符号常量,代表实数3.14159。也就是说,常量说明部分既定义了常量名及其值,又隐含定义了常量的类型。 关于符号常量,应注意下列几点: ⑴符号常量一经定义,在程序的执行部分就只能使用该常量标识符,而不能修改其值。 ⑵使用符号常量比直接用数值更能体现“见名知义”的原则,也便于修改其值,故一个较好的程序中,应尽量使用符号常量。
第 二 课 常量、变量、标准函数和表达式 二、变量 变量代表了一个存储单元,其中的值是可变的,故称为变量。如游戏“魂斗罗”中玩者命的个数最初为3,当你死了一次命减少1,这里命的个数就是一个变量(或者说命的个数存储在一个存储单元中)。在程序运行过程中,其值可以改变的量,称为变量。 作为变量有三个要素:变量名、变量类型、变量值。 一个程序中可能要使用到若干个变量,为了区别不同的变量,必须给每个变量(存贮单元)取一个名(称为变量名),该变量(存贮单元)存放的值称为变量的值,变量中能够存放值的类型为变量的类型。例如 “魂斗罗”游戏中用于存放“命”的变量,在游戏程序中的名字可取为N,它的类型为整型,游戏初始时这个变量的值为3。 1、变量名 用一个合法的标识符代表一个变量。如n、m、rot、total 等都是合法变量名。在程序中用到的变量必须在说明部分加以说明,变量名应遵循自定义标识符的命名规则,并注意“见名知义”的原则。 2、变量的类型 常量是有类型的数据,变量在某一固定时刻用来存放一个常量,因此也应有相应的类型。如整型变量用来存放整数,实型变量用来存放实数。
第 二 课 常量、变量、标准函数和表达式 例如: var age,day : integer, amount,average : real; 3、变量说明 在程序中若要使用变量,变量的名称及类型在程序的变量说明部分加以定义,变量的值则在程序的执行部分中才能赋给。 变量说明的一般格式: var <变量标识符>[,<变量标识符>]: <类型>; (中括号内部分表示可省去) 其中var是pascal保留字,表示一个变量说明段的开始, 每个变量标识符或由逗号隔开的多个变量标识, 必须在它的冒号后面说明成同一类型。一个程序中,可以说明许多不同类型的变量,每种类型变量之间用分号隔开,共用一个var符号。 例如: var age,day : integer, amount,average : real; 其中,integer(整型)、real(实型)是标准标识符,它们是用来说明变量类型的“类型标识符”,代表了确定的类型,如age和 day 被定义为整型变量,amount和average被定义为实型变量。 一旦定义了变量,就确定了它的类型,也就是确定了该变量的取值范围和对该变量所能进行的运算。
第 二 课 常量、变量、标准函数和表达式 三、算术表达式 1、算术表达式的定义 pascal语言中的算术表达式是由符合pascal语法规定的运算对象(包括常量、变量、函数)、算术运算符、圆括号组成的有意义的式子。如:A+3.14159*5/8.4-Abs(-1123) 2、算术运算符 常用的有以下6个算术运算符: ① + (加) ② - (减) ③ * (乘) ④ / (实数除)得到结果为实型.如5.0/2.0=2.5, 5/2= 2. 5,4/2=2.0而不等于2。 ⑤ DIV (整除) DIV它要求除数和被除数均为整型, 结果也为整型。如10 DIV 2=5、10 DIV 3=3、 5 DIV 10=0、 -15 DIV 4= -3。DIV运算只取商的整数部分,参与DIV运算的两个对象不能为实型。 ⑥ MOD (求余),也只能用于整数运算,结果为整数。例如:10 mod 4 = 2 、 -17 mod 4= -1、4 mod (-3) = 1、- 4 mod 3 = -1,即 a mod b = a - (a div b) * b。
第 二 课 常量、变量、标准函数和表达式 3、运算优先顺序 如果一个表达式里出现两个或两个以上的运算符, 则必须规定它们的运算次序。pascal规定: ①表达式中相同优先级的运算符,按从左到右顺序计算; ②表达式中不同优先级的运算符,按从高到低顺序计算; ③括号优先级最高,从内到外逐层降低。 在算术运算中运算符的优先顺序与数学上的四则运算一致,即“先乘除后加减”(注:“MOD”、“DIV”运算的优先级与“*”、“/”相同)。 概括起来,算术表达式中各运算符的次序为: ()─→函数─→*、/、div、mod─→+、- 算术表达式是用算术运算符联结常量、变量、函数的式子。其中变量必须有确定的值。一个常量、一个变量或一个函数也看作是一个表达式。 例如:a=21,b=4,c=3,d=2,e=3时, a-b*c div d mod e 的结果为21。
第 二 课 常量、变量、标准函数和表达式 习习 题 1、下列标识符哪些是合法的?哪些是非法的? 习习 题 1、下列标识符哪些是合法的?哪些是非法的? worth,begin,false,x*y,$wx,char-set,A34, No value,false,h(x),98765 2、指出下列表达式的值 (1) 9 div 4 (2)9 mod 4 (3) 31 div (5 mod 2) (4) 17-4*3 div 7
第 二 课 常量、变量、标准函数和表达式 3、每个程序必须有(选择正确项,多选) (1)程序首项 (2)注释 (3)常量定义部分 (1)程序首项 (2)注释 (3)常量定义部分 (4)标号定义部分 (5)变量定义部分 (6)语句部分 4、将下列数写成Pascal数的形式,并使小数点前保留一位非零数字 , 66666.6666 , , 74×105 5、 试述顺序类型的概念。
习题答案 1E-6 6.66666666E4 -8.75E-1 7.4E6 习 题 1、下列标识符哪些是合法的?哪些是非法的? 习 题 1、下列标识符哪些是合法的?哪些是非法的? worth,begin,false,x*y,$wx,char-set,A34, No value,h(x),98765 2、指出下列表达式的值 (1) 9 div 4 =2 (2)9 mod 4 =1 (3) 31 div (5 mod 2) =31 (4) 17-4*3 div 7 =16 3、每个程序必须有(选择正确项,多选) (1)程序首项 (2)注释 (3)常量定义部分 (4)标号定义部分 (5)变量定义部分 (6)语句部分 4、将下列数写成Pascal数的形式,并使小数点前保留一位非零数字 , 66666.6666 , , 74×105 5、试述顺序类型的概念。除实数类型外的其他类型均属顺序类型,即在该类型的任意两个相邻常量中不可能插入第三个量介于这两个量之间。