大学程序设计语言下载课件chap2章节(498KB).pptVIP

  • 1
  • 0
  • 约8.75千字
  • 约 51页
  • 2018-04-10 发布于广东
  • 举报

大学程序设计语言下载课件chap2章节(498KB).ppt

虚拟机的层次 返回本节 绑定和绑定时间 绑定:程序元素与其特性或性质的约束关系。 绑定时间:绑定所发生的时间(翻译或执行)。 绑定和绑定时间可由语言定义或由实现来确定。 绑定时间的分类 执行时(运行时刻) 绑定在程序执行时完成。具体包括变量与值以及变量与其存储单元的绑定关系。这种绑定关系存在两种主要子类: 进入时:在进入一个子程序或一个块结构时发生。如在C语言中,形式参数与 实际参数的绑定,形式参数与存储单元的绑定在程序执行进入一个子程序时就发生。如 int maxInt(int x, int y) main() { if (xy) maxInt = y; ( int a=5, b=8, maxNum; else maxInt= x; } maxNum= maxInt(a,b);} 执行时:在程序执行的任何时候发生。如变量与值通过赋值语句产生的绑定。如,int x; x=12; 转换时(编译时) 程序设计者选定:程序设计者有意识地选择变量名、变量的类型和语句结构等在编译时绑定。如变量定义并初始化时,变量与值的绑定,如 char ch=‘a’; 翻译程序选定:在没有直接规范的情况下,由翻译程序确定。如C语言中一个变量与其存储单元的绑定。如 int ary[10]; 装载程序确定:分别编译的情况下,变量与其存储单元的最终物理存储单元的绑定(重定向),由装载程序确定。如 子程序 变量 编译后P(X)的地址 重定向后P(X)的地址 P x 0~999 (165) 1000~1999( 1165) 语言实现时: 绑定时间一般允许在语言定义中指定。语言设计可以规定一个特别的约束在翻译时间确定,但实际上绑定的时间是由语言的实现所定义的。如,对于Pascal语言,变量的类型在编译时就已确定,但Pascal实现可能在执行时进行类型检查。 语言定义时: 语言的大部分结构是在语言定义时确定的。如选择语句的形式、数据结构类型和程序结构通常在语言定义时是固定的。 实例研究 为了进一步说明绑定和绑定时间,我们试考虑如下简单的实例 X=X+10 1) 变量X的类型集:变量X一般都有一个类型,如实型、整型、布尔类型等。X的类型通常在语言定义时确定,如只有实型、整型、布尔类型、集合类型是允许类型。此时,变量X的类型集绑定时间是语言定义时。有的语言,如C,Java等,允许在程序中自定义类型,则变量X的类型集绑定时间是编译时。 2)变量X的类型:变量X的具体类型一般在编译时确定。通常通过在程序中使用显式声明语句,如C中的 int X。 一些语言如Fortran,Basic语言,程序中的简单变量可以不用显式声明,此时,变量X的类型只能在程序运行过程中,通过赋给变量X的值的类型来确定变量X的类型,此时,变量X的具体类型的绑定时间是运行时。如Basic语言 10 LET X = 12.3 20 LET X = X+10 3) 变量X可能的值:如果X的类型是实型,则X的值就是实数集合中的一个元素,该集合的大小由定义语言的虚拟计算机可以表示和操作的实数确定,它通常是机器硬件上可以方便表示的全体实数。所以,变量X可能的值的绑定时间是语言定义时。 4) 变量X的值:在程序执行的任何一点,变量X都有一个值。如果在定义变量X时进行了初始化,则编译时就将实际的值与变量X绑定。如 int X=12。如果,没有进行初始化,有的语言如C,在编译时将分配给变量X的存储单元中的值与X绑定,有的语言根据变量X的类型自动进行初始化,如将X初始化为0。 在程序运行过程中,通常会根据赋值语句重新改变变量X与其值的绑定关系。此时,变量X与其值的绑定时间是运行时。 5)常数10的表示:在程序文本中,整数10是使用字符串“10”表示的,而在执行时表示为一个位串序列。在程序文本中,选择10进制表示法通常是在语言定义时确定的,而在运行时如何表示为一个位串序列是由语言实现时确定的。即常数10在语言定义时进行了一个绑定,而在语言实现时,重新进行绑定。 6)操作符“+”的性质:操作符“+”可以是加法操作,也可能是字符串连接操作。这种可能的性质是由语言定义时确定的。即操作符“+”可能的操作性质的绑定时间是语言定义时。 但操作符“+”的具体操作性质

文档评论(0)

1亿VIP精品文档

相关文档