欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载  

    研究生课程_程序语言设计原理教程_第03章.ppt

    • 资源ID:5029895       资源大小:131KB        全文页数:26页
    • 资源格式: PPT        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    研究生课程_程序语言设计原理教程_第03章.ppt

    第3章 值与类型,值直接可用, 计算对象以数据值的形式表示,3.1值 对事物性态的表征和度量,表征和度量必须在某个论域的抽象层次上 数据指称内含的表征和度量, 名 值 上层抽象的值是下层的名 成人: 老年, 中年, 青年 123 123 十进制约定 001111011 : 83 八进制约定 001010011 青年: 1525 291 十六进制约定 100100011 : 名 值 实现 1111 11001,类型是计算机可能实现的结构和约定对客观世界差异的刻划。 同一类型的外延,即同一结构表示所有可能的值构成一个域。 分类原则:同样表示结构,同样语义解释,同样的操作。 同类型值运算结果:同类型。 无符号整数: 二进制解释的值 整数:符号 值,3.1.1 值与类型,浮点数: 符号 阶码 尾数,程序语言中:基元(primitive)类型:整型/实(定,浮)/字符/真值/枚举 结构(structured)类型:元组/数组/记录(结构)/表/串,3.1.2 字面量、变量、常量,名字操纵值, 名: 字面量 从名字即知类型 字面值不变 变量 符号名要声明类型 值可变 常量 符号名要声明类型 值不变 基元值的名字是地址的别名, 地址值在计算机中不恒定 操纵地址的名字是指针(地址变量) float *p, x = 37.32; p=,(p)203C,(x)117F,117F,37.32,续,名值可分导致 x = x + 1; 按名 按名取值: 引用reference 存值 左值 右值 int x 既是右值也是左值,3.1.3 程序中的求值方式,表达式中求值靠运算符 函数、过程引用改变值,函数得到函数值,过程改变环境中值(也是 改变状态)。 函数和过程是操作集合的概括, 函数是从原始值到函数值的 映射, 是一种事物的度量到另一种事物度量的联系。 运算符是特殊的函数 单目运算: E 等价表示为 (E) 双目运算: E1E2 等价表示为 (E1, E2),3.1.4 值是头等程序对象(First Class Object),程序语言中的值 字面量(整、实、布尔、字符、枚举、串) 复合量(记录、数组、元组、结构、表、联合、集合、文件) 指针值 变量引用(左值、右值) 函数和过程抽象,数学对象参与运算的权利是一样的,值是计算对象也要按一致性原则: 可出现在表达式中并求值 可作函数返回值 可单独存储 可以构成复杂的数据结构 可作函数参数,3.2 类型,类型定义 值的集合和值上操作集合(V,Op) 类型系统 一组可直接使用的类型 类型规则 类型检查机制,3.2.1基本类型,基本类型:按操作行为划分的值的集合 集合中元素个数叫基数 #S OP1:T T OP2:T × T T,3.2.2复合类型,笛卡尔积 S × T=(x,y)xS, yT # (S × T) = #S * #T 元组、记录,复合类型:基元值以下述数学操作复合,。 。 u v,。 。 。 (,)(,)(,),。 。 。 (,)(,)(,),。 。 。 a b c,S,T,S × T,。 。 u v,。 。 。 right right right ,。 。 left left v,。 。 。 a b c,S,T,S+T,不相交联合 S+T=left xxS right y yt #(S+T) = #S + #T 变体记录, 联合, ML中构造,续,。 u v,, , b, , b,v , v ,,。 a b c,S,T,S T,映射 m: ST, ST= mxSm(x)T #(ST)= (#T)#s 数组下标类型映射为值类型 char v7 9 3 Array v=int(int(intchar) 函数是以算法实现的映射,续,幂集 S= s | s S, # (S) = 2#S 集合论中常规操作: 成员测试、蕴含测 试、并、交、差基数测试,续,3.2.3 递归类型,表 Integer_list = Unit+integer×Integer_list L = Unit + (S×L) # L = 用户定义递归类型 T = T 递归方程最小解 # T = 串 相等测试, 选字符, 选子串, 排序 定义为基本类型, 长度任意, ML 定义为定长字符数组 Pascal, Ada 不提供操作 可变长字符数组 C 定义为字符表, 表操作用于串 Prolog,LISP,3.2.4 类型系统的初步,静态与动态 静 动 变量 有类型 无类型 动态简洁、灵活 参数 有类型 无类型 静态清晰、死板 值 有类型 有类型 弱/强类型 无类型 LISP , Smalltalk 弱类型 变量有类型。类型兼容性大, 系统不作检查 强制类型 隐式类型强制(转换),自动截尾, 补零。显式 类型强制 PL/1 伪强类型 静态均有类型且作检查,由于不严,导出等价准则 Pascal 强类型 类型有严格定义, 均作检查 Ada,类型等价 按结构等价 type A is array (range 1 100) of INTEGER; type B is array (range 1100) of INTEGER; OA1, 0A2: A; OB1, OB2: B; OC1: array (range 1 100) of INTEGER; OD1, OD2: array (range 1100) 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.3 表达式,表达式:操作数运算符序列;嵌套复合函数调用,3.3.1 表示法,凡经求值、比较能得出值的表示均称表达式,3.3.2 表达式种类,初等量即表达式,Ada有: 4.0 -字面量 PI -常量引用 (110=0.0) -数组聚集, 10元素均赋0.0值 (DAY=1, MONTH=OCTOBER, YEAR=1949) -记录聚集 SUM - 变量引用 INTEGER 'LASE -属性表达式、求预定义INTEGER的最大值 SINE(X) -函数引用 COLOR(BLUE) -限定表达式,是COLOR类型中的枚举值 REAL(M*N) -类型强制表达式,将整型转换为REAL (LINE_COUNT+3) -括在括号中的表达式 new CELL '(0,null,null) -分配算子表达式,分配CELL 类型对象并赋初值,续,其他简单表达式: “Valid code above” -初等量 not DESTROYED -因子 2 * LINE_COUNT -项 B * 2-4.0 *A *C -简单表达式 PASSWORD (13)=“BTV“ -关系表达式 COUNT in SMALL_INT -关系表达式(集合元素测试) INDEX = 0 or ITEM_MIT -关系表达式 聚集表达式给结构类型变量赋(初)值。Ada给出三种 表示法以方便应用。,续,续,type TABLE is array (110) of INTEGER; A:TABLE:=(1,2,3,1,4,5,1,0,0,0) -按位置 A:TABLE:=(1=1,2=2,3=3, -按下标名指明 4=1,5=4,6=5, 7=1,others =0) A:TABLE:= TABLE(1|4|7=1,-选择指明的意义是'或' 2=2,3=3,5=4, 6=5,others =0),续,条件表达式 if: if x y then x else y 不是命令(语句) case 表达式: case thismonth of “Feb”=if leap(thisyear) then 29 else 28 |“Apr”=30 |“Sep”=30 |“Nov”=30 | =31 块表达式 let val s = ( a+b+c ) * 0.5 in sqrt(s*(s-a)*(s-b)*(s-c) end 命令表达式 ( c=getchar( ) ) != EOF ( c=getchar( ) ) = A,3.3.3 优先级和结合性,运算符优先级precedence + 结合性规则associative 决定了表达式计算次序 优先级 单目双目算术关系逻辑 照顾数学语义先* / 后+ - 结合性 左结合右结合 照顾数学语义 , 3*4*2 = (34)2 = 812 = 38 (左结合) = (34)2 = 316 (右接合) 中缀表达式优先级可解决二义性在多语法树中取一个,A op B op C A op B op C,左接合,右接合,3.3.4类型兼容,不同类型值混合运算, 人为定出计算级别,由低 层升格为高层, 结果值是高层的 隐式转换 弱类型 I := R; 显式转换 强类型 I := Integer(R); 强类型按名判定,不同类型名则不兼容只有子类型不同名可以兼容 显式和隐式混合,type BASE is INTEGER; subtype SON_TYPE is BASE range 11000; -子类型 type DIVERSE is new BASE range 11000; -派生类型 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); -不合法,续,type UNIVERSE is range type SET is array (UNIVERSE) of Integer; . function “+” (ELEM: in UNIVERSE; A_SET: in SET) return SET; . declare A,B: UNIVRESE; S1, S: SET; begin . S1:=( A + B ) + S end;,隐式,显式,续,

    注意事项

    本文(研究生课程_程序语言设计原理教程_第03章.ppt)为本站会员(来看看)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开