下载此文档

研究生院第七章.ppt


文档分类:高等教育 | 页数:约64页 举报非法文档有奖
1/64
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/64 下载此文档
文档列表 文档介绍
第七章 运行环境
源语言问题
存储组织
存储分配策略
访问非局部名字
参数传递
静态和动态
静态和动态的联系
名字和数据对象
数据对象的动态表示
名字的作用域
数据对象的存储分配
过程和活动
参数处理
运行时支撑程序包
源语言问题(1)
过程及其执行
过程定义:是一个声明,最简单形式是把一个标识符和一个语句联系起来
该标识符称为过程名
语句是过程体
函数:返回值的过程
过程调用
过程名出现在可执行语句中时,则称这个过程在这点被调用
调用者、被调用者和调用点
参数
形式参数:与局部变量有不同
实在参数:在调用点,将其传递给被调用的过程
源语言问题(2)
program sort ( input, output );
var a : array [ 0 .. 10 ] of integer;
procedure readarray;
var i : integer;
begin
for i := 1 to 9 read( a[i] )
end;
function partition ( m , n : integer );
var i , j , x , v : integer;
begin
….
end;
procedure quicksort( m , n : integer );
var i : integer;
begin
if ( n > m ) then begin
i := partiton(m , n); quicksort( m , i – 1 ); quicksort( i + 1 , n );
end
end;
begin
a[ 0 ] := -9999; a[ 10 ] := 9999; readarray; quicksort( 1 , 9 )
end.
源语言问题(3)
过程的执行的表示:活动树
控制流的假设
控制流是连续的
过程的每次执行都从过程体的起点开始,最后控制返回到直接跟随本次调用点的位置
过程间的控制流可以用树表示(调用树)
活动:过程体的一次执行
活动的生存期:过程体执行的第一步和最后一步之间的步序列
包括直接或间接被这个过程调用的其它过程的时间
过程的活动的生存期要么是不重叠的,要么是嵌套的
递归:如果一个过程的前一个活动结束前,它的一个新的活动又开始
递归的两种缘起
源语言问题(4)
活动树描述控制进入和离开活动:
每个结点代表过程的一个活动
根结点代表主程序的活动
结点a是结点b的父结点,当且仅当控制流从a的活动进入b
a结点处于b结点的左边,当且仅当a的生存期先于b的生存期
结点和活动是一一对应的
源语言问题(5)
幻灯片4中程序的活动树
源语言问题(6)
控制栈
控制栈用于保存活跃着的过程
栈的内容表示活动树上到根结点的一条路径
源语言问题(7)
名字与数据对象
声明的作用域
区分同名程序声明:最接近的嵌套规则
int a , b;
int *p;
int foo( int a )
{
int b, c;
char *p;
p = malloc( sizeof( char ) );
b = foo( 1 ); …
}
作用域:一个声明起作用的程序部分称为该声明的作用域
局部和非局部:过程中名字的出现,如果是在该过程的一个声明的作用域内,则这个出现称为局部于该过程
源语言问题(8)
名字的结合
程序中声明的名字和动态数据对象的关系
数据对象是保存值的存储单元
一个名字可能代表不同的数据对象
环境:表示将名字映射到存储单元(即名字的左值)的函数
状态:表示将存储单元映射到它所保存的值(即名字的右值)的函数
赋值操作只改变状态,但不改变环境
结合:如果环境把存储单元s联系到名字x,则称x结合到s,这个联系本身称为x的结合
静态概念动态概念
过程的定义过程的活动
名字的声明名字的结合
声明的作用域结合的生存期

研究生院第七章 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息