- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
可以当参数传给副程式
輸入/輸出結構 在虛擬碼演算法中,我們使用 Read 及 Write 的表示式來表示使用者與程式間的互動 Pep-7 機器語言基本指令為 字元輸入 (CHARI) 及字元輸出 (CHARO),其組合語言增加了 10 進位數輸入 及 10 進位數輸出 高階語言將輸入資料視為一個分成許多列的字元串流,這些字元如何解釋,要看這些字元的位置的資料型態,輸入敘述包括 3 部份 宣告輸入資料將被放置(即儲存)的變數、輸入敘述、資料串流本身 例:Read name, age, hourlyWage,而輸入資料串流為 Maggie 10 12.50 輸入/輸出結構(續) 處理的關鍵是資料的型態,它決定了字元要如何被轉換為位元型態(輸入)及位元型態要如何被轉換成字元(輸出) 我們不舉例子來說明輸入/輸出敘述,是因為它的語法通常是相當複雜,而且在各種高階語言間的差異非常大 控制結構 控制結構(control structure):一個能決定在程式中其他指令執行順序的指令 組合語言中如 Pep-7 的 BR, BRLT, BREQ 等 高階語言的結構化程式設計(structured programming) 程式中的每一個邏輯單元應該只能有一個入口及一個出口 這些結構包括:循序、選擇敘述、迴圈敘述、副程式敘述及視窗程式的非同步處理 所有的敘述是依序執行,直到有一個控制結構指令改變這個執行順序 選擇敘述 使用 if 敘述可以讓程式以布林表示式來測試程式變數的狀態 選擇敘述(續) 選擇敘述(續) 選擇敘述(續) case 敘述 為了方便起見,許多高階語言另外提供一個 case(有的叫 switch)敘述,讓我們在寫多重選擇判斷時更容易,當中的每一個選擇項目都是獨立的 迴圈敘述 第 6 章演算法範例 While (there are more names) while 敘述是用來重複一系列的動作 以下讓我們看看兩種不同型態的重複敘述 迴圈敘述(續) 計數控制型迴圈(Count-controlled loops ) 重複執行一特定數值的次數 使用一個稱為迴圈控制變數(loop control variable)的特別的變數,下例的 count 即為迴圈控制變數 迴圈敘述(續) 事件控制型迴圈 重複執行的次數是由發生在迴圈主體內的事件來控制 迴圈敘述(續) 加總 10 個正數範例 迴圈敘述(續) While 迴圈為先測型迴圈 後測型迴圈則是在迴圈內容執行後才進行測試,通常被稱為 repeat 迴圈 針對計數控制型迴圈的變型叫做 for 迴圈,將起始化、測試、及增量都包含在迴圈結構中 例如: for (count=1; count = 10; count++) { read value set sum to sum +value } 副程式敘述 我們可以將一段的程式碼命名,成為副程式,然後程式的另一個部分使用這個名稱於敘述上,這在第 6 章的演算法上、下層級間常會用到 當程式執行中遇到了這個名稱敘述時,在程式另一個部分的處理程序將暫停,讓這個名稱程式碼執行,等到這個名稱程式碼執行完畢後,緊跟著這個名稱之後的敘述再繼續執行下去 名稱程式碼出現的地方叫做 呼叫單元 (calling unit),又稱 呼叫程式或 主程式 副程式敘述(續) 有 2 種副程式模式,在不同程式語言有不同名稱 單純執行一項特定工作,在呼叫單元被當作一個敘述 執行一項特定工作後,傳回一個值給呼叫單元,在呼叫單元被當作一個函數表示式 副程式敘述(續) 有的時候呼叫單元必須送出一些資訊給副程式來使用於它的處理程序中,這種溝通方式稱為參數串列(parameter list ),它是一個可以讓副程式動作的識別子串列,每一個識別子通常伴隨著其資料型態,位於副程式名稱旁邊的括弧內 參數(parameter):列在副程式名稱旁邊括弧內的識別子 例如 int add(int x, int y) { return x+y; } 中的 x 與 y 引數(Arguments):在呼叫副程式時列於括弧內的識別子,代表在呼叫單元中實際的變數 例如:z = x+add(a,2) 中的 a 與 2 副程式敘述(續) 2 種參數傳遞方法: 傳值參數(Value parameter):呼叫單元會將引數複製一份給副程式,副程式僅能修改複製過去的參數,副程式不能改變原來引數的值 參考參數(Reference parameter):呼叫單元會將引數位址傳給副程式,(因此又叫傳址呼叫),因為副程式
文档评论(0)