logo资料库

北航程序设计语言原理作业 第一二次作业.docx

第1页 / 共2页
第2页 / 共2页
资料共2页,全文预览结束
第一次课后作业 一. 请给出 Java 语言哪些值是头等程序对象,哪些值不是?为什么? 在程序语言学中把相当于数学对象的程序对象叫做头等对象,因为它们作为运算对象的 权利未受到任何限制。程序对象的权限具体说来是: 可作为操作数出现在表达式中求值。 可作为单独的存储实体。可作为参数传递到过程或函数。可作为函数返回值。可以构成复杂 的数据结构。 Java 中的头等对象: 1. java 基本数据类型(6 个整数型,2 个浮点型,1 个字符类型,1 个布尔类型)的实例是 头等对象,因为他们满足头等对象的要求,相当于数学对象进行操作。 2. java 中类的实例对象是头等对象。 3. 数组对象,映射对象等。 Java 中的非头等对象: 1. 函数抽象,因为他们不能作为返回值。 2. 数组元素,不是可存储体,也不能作为函数返回值。 3. 类,同样不能作为函数返回值。 第二次课后作业 1. 计算对象的实现-存储 - 请给出 R 语言和 python 语言中哪些值是可存储值,哪些是不可存储值。 可存储值,指最小可直接访问的可存储单元中的值。 R 语言: 可存储值: - 双整型(double)、整型(integer)、字符型(character)、逻辑型(logical)、 复数类型(complex)以及原始类型(raw). 不可存储值: - 向量、因子、矩阵、数据框、多维数组、列表、时间序列 Python 语言: 可存储值: - 数值类型,字符类型,布尔类型 不可存储值: - 列表,元组,字典,集合 - 请给出 R 语言和 Python 语言中的存储模型和存储管理机制。 R 语言: 存储模型: 静态存储(全局变量),动态存储 存储管理机制:R 语言对象存储在内存的两个不同的地方,一种是堆内存一种是地址对。 Python: 存储模型: 静态存储 使用 global 声明的全局变量 动态存储模型:数组,字典 存储管理机制:使用引用计数进行垃圾回收,当指向某一对象的引用计数为 0 后,对 象会被回收到 python 内建的内存池,当程序再次申请内存时,会从内存池中分配, 加快效率。 2. 计算对象的连接—束定
- 请给出 R 语言和 Python 语言中采用的束定机制和作用域规则。 R 语言:束定机制是无类型语言的束定机制,作用域规则是词法作用域 Python 语言和 R 语言采用了相同的束定机制和作用域规则。 一个变量名可以完全动态地束定到任何类型的值或操作集上。 在 python 中还有不同的设定,在 python 中,赋值语句就是约束建立的地方,一个约束在 程序正文中是否起作用是由该约束在文本中的位置决定的,而不是在运行时动态决定的,因 此 python 是具有静态作用域,也叫做词法作用域。 python 作用域采用了 LEGB 规则,按照 local 域->enclosing 域->global 域->builtin 域的顺序 查找名字对应的约束。
分享到:
收藏