SOGO論壇
  登入   註冊   找回密碼
查看: 474|回覆: 0
列印 上一主題 下一主題

[技術文章] 語意理論:結構化程式語言 [複製連結]

Rank: 11Rank: 11Rank: 11Rank: 11

熱心參予論壇活動及用心回覆主題勳章 數位硬體勳章

狀態︰ 離線
跳轉到指定樓層
1
發表於 2012-7-12 09:10:51 |只看該作者 |倒序瀏覽


在結構化的程式語言 (例如 C , C# 等) 中,『指定、運算、循序、分支、迴圈、函數』等是主要的結構,表格 7.2顯示了結構化程式的構造方式,讓我們來看看這些結構所隱含的語意。

表格 7.2結構化程式的構造方式
結構類型         語法         範例
指定結構         <ASSIGN> ::= <VAR> = <EXP>         x = 3*y+5
運算結構         <EXP> ::= <T> { ["+"|"-"] <T> }         3*y+5
循序結構         <BASE_LIST > ::= { <BASE> }         t=a; a=b; b=t;
分支結構         <IF> ::= if (<COND>) <BASE> { else if (<COND>) <BASE> } [else <BASE> ]         if (a>b) c=a; else c=b;
迴圈結構         <WHILE> ::= while (<COND>) <BASE>         while (i<=10) { sum = sum+i; i++;}
函數結構         <FUNC_DEF> ::= <FUNC>({<ARGS>}) <BLOCK> <FUNC_CALL>::= <FUNC>({<PARAMS>});         定義:max(a,b) {if (a>b) return a; else return b;} 呼叫:c = max(3,5);

指定結構的語法是 <VAR> = <EXP>,其意義乃是將 <EXP> 的運算結果傳送給變數 <VAR>,於是,<VAR> 變數將會設定為 <EXP> 的數值。舉例而言,指定敘述 x = 3*y+5 會將 3*y+5 的結果傳送給 x,假如 y 的值為 4,則執行完後 x 的值將變成 17。

運算結構的語法是從數學中借用過來的,基本上圖 7.10的四個規則就是運算結構的語法??但表7.2中只有加、減??。其語意正是數學中的加減乘除之語意,舉例而言,規則 <EXP> ::= <T> { ["+"|"-"] <T> } 定義了加減的語法,而其語意則是將 <T>+<T> 或 <T>-<T> 的結果傳回。

循序結構的語法是{ <BASE> },代表 <BASE> 可以連續出現很多次,其意義是順序執行每個 <BASE> 敘述,例如像 t=a; a=b; b=t; 這樣的語句,其意義是當 t=a 執行完後,接著執行 a=b,然後再執行 b=t。

分支結構可以用 if (<COND>) <BASE> { else if (<COND>) <BASE> } [else <BASE> ] 這樣的語法表示,其意義是當條件 <COND> 成立時,就執行值型對應的 <BASE> ,如果都不成立,則執行最後的 else 語句,例如像 if (a>b) c=a; else c=b; 這樣的語句,其意義是當 a>b 條件成立時,就執行c=a,否則,就執行 else 中的敘述 c=b。

迴圈結構通常有 for 迴圈與 while 迴圈,其中,while 迴圈的語法為 while (<COND>) <BASE>,其意義是當是當 <COND> 條件成立時,就繼續執行 <BASE> 區塊??<BASE>是一個區塊嗎??,直到 <COND> 條件不成立才離開 while 迴圈。例如,while (i<=10) { sum = sum+i; i++;} 這樣的語句,在 i<=10 時,會執行 { sum = sum +I; i++; } 區塊,直到 i大於10為止。

函數結構的語法可用 <FUNC> ({<ARGS>}) <BLOCK> 的方式定義,例如,max(a,b) {if (a>b) return a; else return b;} 這樣的函數 max,可用來取得 a, b 中的較大值直傳回。接著,我們可用 max(3,5) 這樣的語句呼叫,將 3 傳給a, 5傳給b,其語法為<FUNC>({<PARAMS>}); 的方式呼叫,呼叫時會將 <PARAMS> 中的引數,傳遞給 <ARGS> 參數,然後開始才開始執行 <BLOCK> 區塊的程式。
喜歡嗎?分享這篇文章給親朋好友︰
               感謝作者     

請注意︰利用多帳號發表自問自答的業配文置入性行銷廣告者,將直接禁訪或刪除帳號及全部文章!
您需要登錄後才可以回覆 登入 | 註冊


本論壇為非營利自由討論平台,所有個人言論不代表本站立場。文章內容如有涉及侵權,請通知管理人員,將立即刪除相關文章資料。侵權申訴或移除要求:abuse@oursogo.com

GMT+8, 2024-5-6 06:39

© 2004-2024 SOGO論壇 OURSOGO.COM
回頂部