文档介绍:该【三章节过程式程序设计语言 】是由【放射辐射】上传分享,文档一共【94】页,该文档可以免费在线阅读,需要了解更多关于【三章节过程式程序设计语言 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。三章节过程式程序设计语言
类型等价
按结构等价
typeAisarray(range1..100)ofINTEGER;
typeBisarray(range1..100)ofINTEGER;
OA1,0A2:A;
OB1,OB2:B;
OC1:array(range1..100)ofINTEGER;
OD1,OD2:array(range1..100)ofINTEGER;
OE1:A;
OA1,OA2,OB1,OB2,OC1,OD1,OD2,OE1均等价
续
按名等价
OA1,OA2是同一类型(都用A声明)
OA1,OB1,OC1是不同类型(类型名为A,B,无)
OD1,OD2是同一类型(同时声明,虽无名)
O D1,OC1是不同类型(两次声明)
OA1,OE1是同一类型(虽两次声明,但同名)
类型完整性准则
涉及值的类型中不能随意限定操作,
力求没有第二类的值
续
不同类型值混合运算,人为定出计算级别,由低层升格为高层,结果值是高层的
隐式转换弱类型I:=R;
显式转换强类型I:=Integer(R);
强类型按名判定,不同类型名则不兼容只有子类型不同名可以兼容
显式和隐式混合
typeBASEisINTEGER;
subtypeSON_TYPEisBASErange1..1000;--子类型
typeDIVERSEisnewBASErange1..1000;--派生类型
A,B:BASE;
C,D:SON_TYPE;
E:DIVERSE;
…
A:=B+C,--合法,结果为B类型赋给A
A:=C+E;--不合法
A:=C+SON_TYPE(E);--合法,有显式强制
A:=E;--不合法,两个类型
E:=B+BASE(E);--不合法
续
-存储
存储对象是程序对象在计算机中的实现
程序对象不一一对应为存储对象
x:=0;x,0是两程序对象
只有一个存储对象x加指令清零
初值常量也不作为单独存储对象
引用和指针
P指针是地址变量*P是P所指的内容,也有左值和右值
*P左值是P所指地址值,即P的值
*P右值是所指地址内的内容值
引用是常指针是变量的别名,但实现是不一样的
递引用dereference
通过指针变量引用变量的值为递引用
*P1右值即递引用
有些语言显式递引用算符如FORTH的
113VARIABLExx(声明变量xx并赋初值13)
20VARIABLEY(声明变量Y并赋初值0)
3xx2*Y!(相当于Y=xx*2)
如果只写xx2*则为将xx的地址乘以2放在Y之中
分配/未分配/除分配
分配:为程序对象创建—存储对象
编译时分配叫静态分配allocate
运行时分配叫动态分配如声明指针p,执new才分配
未分配:声明了未分配运行时分配
除分配:取消存储对象(程序对象)delete操作显式
自动除配:无用单元收集Garbagecollection
动态语言有,静态可有Ada可没有C
续
4
3
?
?
abcdef
声明和定义:定义必然声明;反之不然
声明的两个作用:给出对象,该对象的时间有效性
出了声明的作用域该对象失去定义。在声明的作用
域内显式删除也失去定义
定义/未定义/失去定义
只要分配存储对象必然有残值,无意义即未定义赋值或初值变量得以定义
a,b:分配且有定义
c,d:分配未定义或失去定义
e,f:未分配或除配