pascl5枚举型子界型

上传人:206****923 文档编号:91042186 上传时间:2019-06-21 格式:DOC 页数:17 大小:20.50KB
返回 下载 相关 举报
pascl5枚举型子界型_第1页
第1页 / 共17页
pascl5枚举型子界型_第2页
第2页 / 共17页
pascl5枚举型子界型_第3页
第3页 / 共17页
pascl5枚举型子界型_第4页
第4页 / 共17页
pascl5枚举型子界型_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《pascl5枚举型子界型》由会员分享,可在线阅读,更多相关《pascl5枚举型子界型(17页珍藏版)》请在金锄头文库上搜索。

1、第五讲:枚举型/子界型/函数与过程/集合与记录/指针一、枚举型和子界型 7.1.1类型定义类型定义的语法格式:type=;=;=; 7.1.2枚举类型通过预定义列出所有值的标识符来定义一个有序集合,这些值的次序和枚举类型说明中的标识符的次序是一致的。枚举类型的形式:(标识符1,标识符n例如:type daystype=(sunday,monday,tuesday,wednesday,thursday,friday,saturday枚举元素只能是标识符,而不能是数值常量或字符常量。例如以下的定义是错误的: type daystype=(sun,mon,tue,wed,thu,fri,sat枚举元

2、素是标识符,不要把作为枚举元素的标识符视作变量名,它不能被赋值。同一个枚举元素不能出现在两个或两个以上的枚举类型定义中。例如以下的定义是错误的:type daytype1=(monday,tuesday;daytype2=(monday,wednesday;可以将枚举类型的定义和变量的定义结合在一起。例如:var a:(monday,tuesday,sunday枚举类型属于顺序类型。根据定义类型时各枚举元素的排列顺序确定它们的序列,序列号从0开始。例如:已经定义daystype ord(sunday=0,succ(sunday=monday,pred(friday=thursdayTurbo

3、Pascal不允许直接读写枚举值,所以枚举值的输出常用case语句间接的输出。枚举值的输入,则要一一判断读入字符是否是枚举类型的标识符。若是才能赋给枚举变量,否则就会出错。例如:枚举值的输出case day ofsunday:write(sunday;monday:write(monday;tuesday:write(tuesday;wednesday:write(wednesday;thursday:write(thursday;friday:write(friday;saturday:write(saturday;end;7.1.3子界类型子界类型是由整型、字符型、枚举型、布尔型的两个常量

4、指定该类型的值域区间。子界类型的形式:常量常量两个常量必须是同一种顺序类型。例如:ab,要求a=b例如:type a=1.3;b=a.d;可以将子界类型的定义和变量的定义结合在一起。例如:var a:19例按月、日、年顺序读入一日期,输出该日期是这一年中的第几天。program date;var year:0.2010;month,i:1.12;day:1.31;dayth:integer;beginread(month,day,year;dyath:=0;for i:=1 to month-1 docase i of1,3,5,7,8,10,12:dayth:=dayth+31;2:if (

5、year mod 4=0and(year mod 1000or(year mod 400 =0then dayth:=dayth+29else dayth=:=dayth+28;4,6,9,11:dayth:=dayth+30;end;dayth:=dayth+day;writeln(daythend. 二、函数和过程 7.2.1函数如果一个子程序执行后能够返回其结果值,那么它就可以用于表达式中,称这种子程序为函数,这种语句序列的定义称为函数说明。函数说明形式如下:function函数名(形式参数表:函数类型;说明部分;begin语句1;语句2;语句nend函数返回一个函数值,过程则能完成一系

6、列各种操作。函数的调用方式出现在表达式中,而过程调用是一句独立的语句。例:计算|X|的函数function zhoufei(x:real:real;var z:integer;beginif x=0 then z:=xelse z:=-xzhoufei:=z;end;Turbo Pascal规定一个函数只能求出一个简单值。 7.2.2过程给某个语句序列组成的子程序赋于一个适当的名字。程序中凡是需要出现这个语句序列的地方,可以简单的写上子程序的名字。这种完成一个操作的子程序称为过程;子程序的定义称为过程说明。过程说明由过程首部和过程体组成,其形式如下:procedure 过程名(形式参数表;-过

7、程首部说明部分;begin执行语句;end;例输出两个数中最大值的过程procedure largest(a,b:integer;beginif ab then writeln(aelse writeln(b;end.三、集合与记录 7.3.1集合以已知序数类型值的集合为值,所构成的类型是集合类型,称已知序数类型为基类型。集合类型的定义形式为:集合类型名set of基类型基类型中不能超过256个可能值,且它们的序数值应在0255之间。表示一个集合值的最通用的方法是逐个枚举集合的元素。下面是集合值标记的例子:3,9,15,20 由3,9,15,20组成的集合 空集l.p,z 由字符l,m,n,o

8、,p,z组成的集合两个相连的集合对象之间,可以通过下列运算符进行运算集合运算符:+ 产生一个包含两个集合元素的集合 * 产生一个只包含两个集合元素公共元素的集合 - 产生一个包含所有属于第一个集合、但不属于第二个机和的元素的集合 例如:A,B,C+D等于A,B,C,DA,B,C*A等于AA,B,CA等于B,C关系运算符= 检查两个集合所包含的元素相同 检查两个集合不相等 = 检查第一个集合中的元素包含第二个集合中的所有元素 in 检查集合基类型的一个元素属于集合 例如:A,B,C=A,B,C等于trueA,B,CC,B,A等于FALSE 7.3.2记录记录是描述同一对象的一组类型可能不同的数据

9、的集合。使用记录类型实现了数据逻辑关系和存放形式上的一致。定义记录类型的一般形式记录类型名record 域名1:类型1;域名2:类型2;域名m:类型m; end;例如:表示学生信息的记录定义typestype=record name:string20; number:integer; sex:(male,female; class:1.20address:stringend;域为记录类型的元素。记录的每个域都有名称,不同域的数据类型可以各不相同,这一点是数组所不能做到的。引用记录变量的元素采用以下标记法:(1直接引用,其形式为记录变量名域名例如:var str1,str2:stype;则str

10、1.name表示学生str1的姓名,str2.sex表示学生str2的性别。(2使用with开域语句,其形式为with 记录变量名 do 语句在with语句中,引用记录变量名不再冠以记录变量名,以简化对记录中域的引用写法。例如描述100个学生的数据信息,引入元素类型为stype的数组students。varstudents:array1.100of stype;number_of_boy,number_of _girl,k:integer:例如下面是一段统计一个班级中男生人数和女生人数的程序。beginnumber_of_boy:=0; number_of_girl:=0;for k:=1 t

11、o 100 dowith studentk doif sex=male then number_of_boy:=number_of_boy+1else number_of_girl:=number_of_girl+1end;with语句的嵌套结构的一般形式:with dowith dowith do;上面的嵌套格式也可以简写为:with do;四、指针 741指针的动态变量1.定义指针类型在Pascal中,指针变量中存放的某个存储单元的地址,即指针变量指向某个存储单元。一个指针变量仅能指向某一种类型的存储单元,这种数据类型是在指针类型的定义中确定的,称为指针类型的基类型。指针类型定义如下:类型

12、名基类型名;例如:type q=integer;var a,b,c:q;说明q是一指向整型存储单元的指针类型,其中为指针符。a,b,c均定义为指针变量,分别可以指向一个整型存储单元。上例也可定义为:var a,b,c:integer;指针也可以指向有结构的存储单元。例如:type person=recordname:string10;sex:(male,female;age:20.70end;var pt:person;pt为指向记录类型person的指针变量。2.动态变量应用一个指针指向的动态存储单元即动态变量的形式如下:指针变量名例如:p、q、r指针变量p和它所指向的动态变量p之间有如下关系: PP以下语句把整数5存放到p所指向的动态变量p 中去: p:=5;以下语句把p所指向的p中的值赋给整型变量i: i:=p;如果指针变量

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号