陳維魁 博士 wkchen@pchome.com.tw 儒林圖書公司 第六章 領域與範圍 陳維魁 博士 wkchen@pchome.com.tw 儒林圖書公司.

Slides:



Advertisements
Similar presentations
完美殺人筆記簿 【爸!我受夠了!】 第七組組員: 林正敏 陳筱涵 李蓓宇 許純宜 羅玉芬 謝文軒.
Advertisements

元大京華證券 組員名單 : A 楊之奇 A 廖本揚 A 宋俊承 A 陳冠廷 A 郭峻瑋 A 指導教授 : 許素華 副教授.
揭日本人让人理解不了的20件事 今天先来看看日本人的自我剖析︰日本人的20个“为什么”?这“20个为什么”的内容来源于日本影视名人北野武所主持的一个节目。虽然不是网友来信中提出过的问题,但看看日本人自己对自己的分析,是挺有意思的。而且,仔细看看下面这“日本人的20个为什么”,会发现其实有些东西对于中国人来说并不陌生。毕竟汉字圈里的文化,是有共融之处的。
新編多元性向測驗 測驗說明 輔導室
在《命运交响曲》 音乐声中 安静我们的心 迎接挑战.
姓名:劉芷瑄 班級:J201 座號:39號 ISBN:957-33-1963-2
101年國中畢業生多元進路宣導 國中部註冊組 100年10月29日.
程式語言(I)- Visual Basic 6.0 第 9 章 結構化程式設計
高中職優質化專題 教育研究博士班二年級 游宗輝.
海星國中部直升方案說明 報告人:教務處 陳博文主任
101年度十二年國民基本教育 國民中學校長專業研習 校長落實補救教學、適性輔導 中輟生的預防與復學輔導之實務作為
第一章 C语言概述 计算机公共教学部.
個人投資理財分析 財務狀況匯總表 銀行存款 共同基金 外幣基金 股票投資 保險價值 黃金投資 支出預算 房貸計算 不動產價值 資源變化資料庫
歡迎各位老師 蒞校參訪 召集人、各位委員、同仁大家好,我是林淑玟,負責教務行政進行簡報 報告人:林淑玟 中華民國九十九年三月二十三日.
大學甄選入學 選填志願輔導說明會 曾文農工輔導室.
一所具有悠久歷史與優良傳統的 優質學校 強調生活教育與精緻教學 是您有心向學的最佳選擇.
國立嘉義高級工業職業學校 101年度綜合高中宣導研習 國立嘉義高工 教務主任 林章明
海軍軍官學校 士官二專班 招生簡報 、 第1頁,共30頁.
海軍軍官學校 士官二專班 103學年度 招生簡報.
电话联系.
迎宾员礼仪 包头机电工业职业学校管理系 白琳 1.
1、命题:可以判断真假的语句,可写成:若p则q。 2、四种命题及相互关系:
我的心得報告 經過篩選,挑中我們 十多位學生由學校推薦進入公司,開始他們的學習之旅 學習的過程中有想像不到的意外驚喜
财 务 会 计 第四篇:供应链会计实务 制作人:谌君、熊瑜.
中学生心理健康讲座 打开心灵之门 开启阳光之路 主讲人:范荃.
新世代計算機概論 第14章 程式語言.
第 二 课 程序组成、基本数据类型、表达式 我们以上一章练习题为例说明Pascal程序的结构形式:
第9章 运行时的存储组织 重点:符号表的内容、组织,过程调用实现, 难点:参数传递,过程说明语句代码结构,
陳維魁 博士 儒林圖書公司 第六章 領域與範圍 陳維魁 博士 儒林圖書公司.
教育部宣導專員 國立臺中家商 許敏政主任 101年2月23日製作 #201~203
第八章 符号表 符号表的作用: 一致性检查和作用域分析; 辅助代码生成..
7 Intermediate Representation
Introduction to the C Programming Language
陳維魁 博士 儒林圖書公司 第七章 參數的傳遞 陳維魁 博士 儒林圖書公司.
Ch10 函式 網頁程式設計.
编译原理与技术 类型检查 2018/11/21 《编译原理与技术》-类型检查.
第四章 程序设计初步 顺序结构:赋值语句、输出语句
第六章 运行时存储空间的组织和管理 术语 本章内容 讨论一个活动记录中的数据布局 程序执行过程中,所有活动记录的组织方式 过程的活动
编译原理课程设计.
Chapter 2 Basic Elements of Fortran
编译原理实践 5.给定语法的语法分析程序构造.
產品語意 班級:夜四技產設三甲 學生:鄭舜鴻 學號:9A01C023 指導教師:唐蔚.
李伟庭老师 (彩虹村天主教英文中学老师) 相似三角形.
編譯程式設計 期末專題說明 V1.1 May 2004.
语义分析概述 符号表 第六章 语义分析.
十二年國民基本教育 103學年度高中高職及五專 入學方式與就學區規劃 (草案諮詢稿)
第六章 语法制导的翻译 本章内容 介绍一种语义描述方法:语法制导的翻译,介绍语法制导的翻译的实现方法。
第十二章 文件管理 (Chapter 5 File Management)
陳維魁 博士 儒林圖書公司 第三章 變數與繫結 陳維魁 博士 儒林圖書公司.
高中職多元進路 家長說明會 主講人: 東莞台商子弟學校 麥馨月 日 期:
第3 语言翻译问题 [学习目标]:学习和掌握语言的语法的基本概念和基本要素,理解翻译的步骤;学习和掌握BNF文法。
參數 實際參數(Actual parameter)與形式參數(Formal parameter)
第二次课后作业 计算对象的实现—存储 请给出R语言和Python语言中哪些值是可存储值,哪些值是不可存储值?
第九章 运行时存储空间组织 网上教学系统: : 编译原理
現代專案管理教材 第一章 專案與專案管理 博碩文化出版發行.
中五級電腦科 PASCAL檔案處理.
编译原理课程设计 2017年4月.
國立嘉義高級工業職業學校 101年度雲嘉區綜合高中宣導研習 國立嘉義高工 綜高高中學務組長 呂明欣
四 选择结构程序设计 厦大附中信息技术.
三 顺序结构程序设计 厦大附中信息技术.
99年基測暨直升、原藝班、 申請、甄選入學報名作業說明
计算机问题求解 – 论题 基本的数据结构 2018年05月09日.
臺中市龍山國小 校園常見瓢蟲辨識   瓢蟲屬於鞘翅目瓢蟲科。目前世界上約有5000多種瓢蟲,台灣地區約有80種以上,其中能捕食有害生物的瓢蟲約七十種之多。瓢蟲因為捕食有害生物為主食,所以又稱為『活農藥』。
05 方法. 05 方法 5.1 方法 在一個較大型的程式中,通常會將具有特定功能或經常重複使用的程式,撰寫成獨立的小單元,稱為「方法」(Method),並賦予方法一個名稱,當程式需要時就可以呼叫此方法來執行該段特定程式。(此種重複使用的程式小單元在其他語言中可能稱為程序、副程式或函式, Visual.
PASCAL语言 吉林大学计算机科学与技术学院.
编译原理 中南大学软件学院 陈志刚.
臺灣北區102學年度高級中等學校 舞蹈班暨聯合甄選入學術科測驗 暨甄選入學說明會
台中市黎明國中105學年度 學生報考 一般智能暨學術性向資賦優異學生鑑定 報名流程說明
Presentation transcript:

陳維魁 博士 wkchen@pchome.com.tw 儒林圖書公司 第六章 領域與範圍 陳維魁 博士 wkchen@pchome.com.tw 儒林圖書公司

大綱 基本概念 可見性 靜態領域法與動態領域法 領域的間隙 區域性資料及其處理方法 活動記錄 顯示堆疊 動態領域法的實作 精選習題

基本概念 資料控制的意義 參用環境(referencing environment) 程式執行到一個區塊時,對當時資料存取的管制及資料流向的控制即稱為資料控制 參用環境(referencing environment) 當呼叫程式呼叫副程式時會產生一個參用環境

基本概念 參用環境建立的過程 將實際參數(actual parameter)的資訊傳給型式參數(formal parameter) 副程式建立區域變數 當程式流程轉移給副程式時,首先會先參用自己的區域環境,若區域環境處找不到變數的定義,再到呼叫程式處引用非區域變數 假如副程式又呼叫了另一個副程式,此時將產生另一個參用環境 由副程式返回呼叫程式時,參用環境將回復成原來狀況 呼叫程式執行時無法引用副程式內的區域變數

可見性 (visibility) 某段程式可參用的變數對該程式而言即為可見(visible),反之即為不可見 program visibility; var x : integer; procedure A (p : integer); begin ... end; procedure B (q : integer); begin ... end; procedure C (r : integer); begin ... end; begin ... end. 根據左側程式可得以下的區塊圖: 對主程式而言x是可見;p,q,r非可見 對副程式A而言x,p為可見,而q,r非可見 對副程式B而言x,q為可見,而p,r非可見 對副程式C而言x,r為可見,而p,q非可見

領域與範圍 領域(scope) (空間) 範圍(extend) (生命週期) 對程式設計師來說,“領域”其實就是指一段空間 代表一段程式本文 範圍(extend) (生命週期) 代表在某段時間內,變數會與儲存其值的儲存體做繫結的動作 對程式設計師來說,“領域”其實就是指一段空間 一個變數的“領域”其實是指這個變數在這段程式內是可被引用的(reference)

靜態領域法與動態領域法 靜態領域法 在區塊中未定義的變數,根據程式的結構,在程式中包含其區塊的上一層區塊處尋找此變數是否在此區塊內定義 若找到變數的宣告則變數即是在此區塊內定義 若未找到則繼續往外層尋找直到變數第一次宣告處為止 若搜尋完整個程式仍未找到變數之宣告,則該變數即為未定義之變數

靜態領域法與動態領域法 動態領域法 又稱為流動繫結法(fluid binding) 變數的型態會在目前的區塊中尋找;尋找的順序為“副程式被呼叫的反順序”

實際範例一 就右側採用靜態領域法的程式中,指出每個區塊中所有界定的變數及其性質

實際範例二 請列出列號6,9,13,16,程式執行時,所能使用的變數名稱及其資料型態, 以「變數名稱:資料型態」表示 1.PROCEDURE A; 2.VAR X, Y, Z : INTEGER; 3. 4. PROCEDURE B; 5. VAR W, X, Y : REAL; 6. 7. PROCEDURE C; 8. VAR V, W : INTEGER; 9. 10. END {C} 11. 12. END {B} 13. 14. PROCEDURE D; 15. VAR X, Z : CHAR; 16. 17. END {D} 18. 19.END {A}

實際範例三 右側的程式 (1) 採取靜態領域,副程式A所列印的x之值為何? (2) 採取動態領域,副程式A所列印的x之值為何? program MAIN; var x:integer; procedure A; begin writeln('x=',x) end; {of procedure A} procedure B; Var x: integer; begin x:=10; A end; {of procedure B} begin {of main} x:=5; B end.

領域的間隙 定義 採用靜態領域法的情況下,不正常的否定先前變數的宣告即稱為領域的間隙(hole in scope)

領域的間隙範例 program hole_in_scope; var x:real; procedure A; begin x:=x × x ; write(x) end; procedure B; var x:integer; begin A end; begin B end. 在副程式B中,變數x宣告為整數,而在B中呼叫了副程式A,但在主程式中變數x宣告為實數,由靜態領域法可知此時x須使用的型態為實數。此種不正常的否定先前變數宣告的現象即稱之為領域的間隙

區域性資料 某個區域內所能引用的資料即稱為區域性資料 區域性資料僅適用某個區域內

區域性資料處理方法 保留法(retention) 當副程式結束其執行動作時,會將副程式內區域變數的值保留;當副程式再次被呼叫時會沿用該保留的值做為程式執行之依據 如,Fortran、C、C++、Java及Cobol 採用靜態儲存區配置法(static storage allocation),也就是在編譯時將記憶體的空間配置給區域變數使用

區域性資料處理方法 清除法(deletion) 當副程式結束其執行動作時,會將副程式內區域變數的值清除,因此每次呼叫該副程式時其區域變數的初值是固定的 如,Pascal、Ada、Lisp、APL、C、C++、Java與SNOBOL 採用動態儲存區配法(dynamic storage allocation),也就是在執行時將記憶體的空間配置給區域變數使用

範例 試就右側之程式段分別以清除法及保留法各別說明執行結果為何? procedure B; var P:integer=5; begin write(P); P:=P+5; write(P); end;{B} procedure A; begin …. B; …. B; end;{A}

活動記錄 活動記錄(activation record)主要是用在副程式呼叫時 每次作副程式呼叫時就會產生一個相對應的活動記錄,其內記錄了副程式在執行的過程中所有可能參用的資訊 活動記錄的內容 靜態鏈、動態鏈、返回位址、型式參數、區域變數、算術運算暫存值、參數傳遞暫存值、函數傳回值及符號資料 符號的資料主要是記錄此區段所宣告的副程式的名稱及標記(label) 靜態鏈(static link)是指活動記錄的一個欄位,副程式的靜態鏈會指向包含其區塊的活動記錄 動態鏈(dynamic link)也是活動記錄的一個欄位,副程式的動態鏈會指向呼叫它的副程式的活動記錄

活動記錄範例 執行時程式段被呼叫的先後順序為: DemoR  S  P  Q program Demo ; procedure P; begin ... procedure Q; begin ... end;{of Q} ... Q; end;{of P} procedure R; begin ... procedure S; begin ... P; end;{of S} ... S; end;{of R} begin R; end.{of demo} 執行時程式段被呼叫的先後順序為: DemoR  S  P  Q

顯示堆疊 顯示(display)堆疊是在採用靜態領域法時,尋找變數在何處定義的方法 顯示的內容是由許多指標組成,這些指標指向目前區塊的活動記錄及包含目前區段之所有區段的活動記錄

顯示堆疊範例 procedure main; procedure A; procedure B; …. end B; end A; procedure C; procedure D; … end D; procedure E; … end E; end C; end main; Main C  D  E

動態領域法的實作 動態領域法的實作方式有二種 深存取(deep access) 淺存取(shallow access)

精選習題 假設區塊結構中的靜態巢狀樹如下所示:則 (a)在B的程式段中 (b)在F的程式段中 可以呼叫那些程式單元?

精選習題 一個變數(variable),觀念上可分為以下六個成份:變數名稱(name),所佔空間地址,此空間可儲存資料的型態(type)此空間所儲存的值(value),其領域(scope),及其生命期間(life time)。 (1)試解釋在C的程序執行時,在什麼狀況下同一個次程序的同一個變數名稱會代表不同的空間地址;而在什麼狀況下,不同的變數名稱會代表同空間地址。 (2)試簡述以下語言變數的生命週期(其佔有的空間,何時開始存在,何時停止存在)。Pascal local variables,C的static variables,Pascal的pointer variable所指的空間。

精選習題 Pascal語言與C語言對於變數宣告的領域法(scope)各有那幾種可能?