lenovo-第三章过程式程序设计语言.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 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)

magui + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8140007116000003

1亿VIP精品文档

相关文档