- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
lenovo-第三章过程式程序设计语言.ppt
第三章 过程式程序设计语言;类型是计算机可能实现的结构和约定对客观世界差异的刻划。
同一类型的外延,即同一结构表示所有可能的值构成一个域。
分类原则:同样表示结构,同样语义解释,同样的操作。
同类型值运算结果:同类型。
无符号整数: 二进制解释的值
整数:符号 值 ;3.1.1 字面量、变量、常量;续;3.1.2 值是头等程序对象;3.1.3 类型系统;3.1.3 类型系统;类型等价
按结构等价
type A is array (range 1.. 100) of INTEGER;
type B is array (range 1..100) of INTEGER;
OA1, 0A2: A;
OB1, OB2: B;
OC1: array (range 1.. 100) of INTEGER;
OD1, OD2: array (range 1..100) of INTEGER;
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 是同一类型(虽两次声明, 但同名)
类型完整性准则
涉及值的类型中不能随意限定操作,
力求没有第二类的值
;3.1.4 类型兼容;type BASE is INTEGER;
subtype SON_TYPE is BASE range 1..1000; --子类型
type DIVERSE is new BASE range 1..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); --不合法;3.2 计算对象的实现- 存 储;3.2.1 程序变量的时空特性;递引用 dereference;3.2.1 变量的时态;续;3.2.2 存储模型;存储对象的生存期;静态存储对象;动态存储对象;动态存储对象;堆栈帧管理;参数 ; 举例
求整数连乘积之递归程序:
function product (jj: Integer): Integer;
var kk: Integer;
begin
if jj = 0 then product:=1
else begin readln (kk);
product:=kk * product(jj-1)
end
end; ;Product函数
目标代码;动态堆存储;3.2.3 悬挂引用Dangling Reference;例 悬挂引用(C)
int * dangle (int ** ppp) { //参数是指针的指针
int p=5;
int m=21;
*ppp=p; //传回的指向p的指针
return m;} //返回m的地址
main( ) {
int k =17;
int * pm, *pk=k; //pk指向k
pm = dangle (pk); //返回时pm,Pk均指向已
//失去定义的指针函数的
} //局部量,即p和m
;3.3 计算对象的连接--- 束定Binding;3.3.1 静态束定;3.3.2 动态束定;例 FORTH 的动态束定
0 : 2by3array (:表示编译开始, 后为类型声明符)
1 create
文档评论(0)