C與Java在流程控制上的異同 (轉)

worldblog發表於2007-12-07
C與Java在流程控制上的異同 (轉)[@more@]

C與在流程控制上的異同

山東煤炭教育學院 胡振山 郭施毅

  過 程 式 編 程( 代 表 語 言C) 首 先 必 須 定 義 所 要 實 現 的 功 能, 然 後 設 計 為 實 現 這 些 功 能 所 必 須 的 步 驟。 此 步 驟 也 就 是 過 程。 編 寫 代 碼 實 際 上 等 同 於 分 解 這 些 步 驟, 使 每 一 步 直 接 對 應 一 行 代 碼。 為 實 現 有 限 度 的 重 用, 代 碼 被 組 織 到 過 程 或 函 數 中。 每 當 發 現 一 段 反 復 使 用 的 代 碼 時, 你 都 可 以 把 他 組 織 到 一 個 過 程 或 函 數。 這 種 方 式 對 於 有 些 問 題 是 合 適 的, 問 題 是 如 果 程 序 達 到 一 定 程 度, 程 序 的 調 試 和 維 護 就 會 變 得 很 困 難, 這 時 過 程 式 編 程( 語 言) 就 不 合 適 了。 於 是 面 向 對 象 的 編 程 方 法 及 面 向 對 象 語 言( 代 表Java) 已 成 為 編 程 的 主 流。 過 程 式 編 程 存 在 的 局 限 性, 其 根 本 原 因 就 是 在 於 他 與 現 實 世 界 模 型 之 間 的 不 一 致。 現 實 世 界 的 模 型 中, 實 體 是 基 本 的 組 成 單 元, 實 體 具 有 屬 性 和 行 為, 這 兩 者 是 渾 然 一 體 的。 與 過 程 式 編 程 語 言 相 反, 面 向 對 象 的 語 言 則 考 慮 了 這 兩 者 的 之 間 的 一 致。 面 向 對 象 編 程 首 先 考 慮 是 需 要 那 些 實 體, 這 些 實 體 具 有 何 種 行 為。 實 體 就 是 對 象, 行 為 是 基 於 某 些 消 息 所 做 出 的 反 映。

  流 程 控 制 對 於 任 何 一 門 編 程 語 言 來 說 都 是 至 關 重 要 的, 他 提 供 了 控 制 程 序 步 驟 的 基 本 手 段, 是 程 序 的 核 心 部 分, 可 以 說, 缺 少 了 控 制 流, 就 不 會 有 程 序 設 計 語 言, 因 為 現 在 沒 有 哪 一 種 程 序 只 是 線 性 地 執 行 語 句 序 列。 程 序 中 需 要 與 用 戶 相 互 交 流, 需 要 根 據 用 戶 的 輸 入 決 定 執 行 序 列, 需 要 有 循 環 執 行 等 等, 這 些 都 少 不 了 流 程 控 制。

  Java 的 流 程 控 制 有: 條 件 語 句IF; 循 環 語 句while,do while ,for; 開 關 語 句switch,case,break; 轉 移 語 句break,continue,label; 返 回 語 句return 以 及 復 合 語 句。 也 許 你 會 認 為 這 些 語 句 與C 一 樣, 沒 有 什 麼 區 別。 是 的, 語 句 一 樣 但 還 是 存 在 區 別 的, 接 下 來 我 們 看 區 別 何 在。

條 件 語 句if - else

  條 件 語 句 是 程 序 設 計 語 言 中 最 基 本 的 流 程 控 制 語 句, 幾 乎 任 何 一 門 程 序 設 計 語 言 的 條 件 語 句 都 用 到 了IF 關 鍵 字, 因 而 條 件 語 句 也 被 稱 為IF 語 句。 條 件 語 句 分 簡 單 語 句 和 復 合 語 句, 如 果 條 件 語 句 得 分 支 中 又 包 括 了 條 件 語 句, 即 稱 為 復 合 條 件 語 句, 或 嵌 套 條 件 語 句; 否 則 稱 為 簡 單 語 句。

  用 法:if (boolean) statement1 else statement2

  不 同:Java 分 支 語 句 中 條 件 表 達 式 必 須 是 布 爾 型, 不 能 是 數 值 型。 這 裡 不 能 像C 那 樣 直 接 放 上 數 值 數 據, 而 應 該 用 關 系 表 達 式 代 替。

Class sample1

{

public static void main(String args[])

{

char Ch;

System.Out.println("Please enter a number 1-3:");

Ch=(char)System.in.read();

if(Ch==-1)

System.out.println("nNo character entered.");

else if (Ch=='1')

System.out.println("nYou have entered a 1.");

else if(Ch=='2')

System.out.println("nYou have entered a 2.");

else if(Ch=='3')

System.out.println("nYou have entered a 3.");

else System.out.println

("nYou have entered a wrong number.");

}

}

  循 環 語 句 在 執 行 過 程 中 某 一 段 代 碼 重 復 執 行.Java 也 提 供 了 三 種 不 同 的 循 環 語 句.

  循 環 語 句while while 語 句 的 功 能 是 當 條 件 成 立 時, 重 復 執 行 子 語 句, 重 復 執 行 的 次 數 取 決 於 子 語 句 的 執 行 情 況.while 語 句 的 用 法;

while(boolean_expression)

{

statements;

}

循 環 語 句do

  如 果 需 要 循 環 執 行 的 語 句 至 少 要 執 行 一 次, 可 使 用do---while 語 句.do---while 語 句 是while 語 句 的 一 個 變 種. 用 法 是:

  do

  {

  statements;

  }while(boolean_expression);

  Java 與C 循 環 語 句 的 差 別 主 要 體 現 在 條 件 表 達 式,C 語 言 的 條 件 表 達 式 要 比Java 靈 活 的 多, 可 以 為 任 意 整 數 表 達 式.Java 則 必 須 為 布 爾 表 達 式.

循 環 語 句for

  for 語 句 是 最 標 準 的 循 環 語 句, 幾 乎 所 有 的 高 級 編 程 語 言 都 提 供 了 類 似 的 循 環 語 句, 而 且 也 是 功 能 最 強 的 一 種 循 環 結 構.for 語 句 的 功 能 是 循 環 執 行 一 段 語 句, 直 到 某 個 條 件 為 假, 其 結 構 是:

for(expresson1;expression2;expression3)

{

statements;

}

Class sample2

{

public static void main(String args[])

{

char Ch;

int i=0;

boolean test=True;

while(test)

{

i+=1;

System.Out.println("nThe line %d",i");

If (I==10) test=false;

}

for(I=20;I<=30;I++)

System.Out.println("nThe line %d",i");

}

}

開 關 語 句switch

switch是條件語句的一個變種,其結構是:

switch(expression)

{

case 常 量1:

statement 1;

break;

case 常 量2:

statement 1;

break;

..........

default:

statement 1;

break;

}

  執 行switch 語 句 時, 首 先 需 要 計 算 括 號 內 表 達 式 的 值, 然 後 把 這 個 值 與case 後 面 的 常 量 比 較. 執 行 第 一 個 匹 配 的 語 句 分 支; 若 無 匹 配 則 執 行 最 後 一 個default 分 支, 如 果 同 時 缺 省default 項, 則 不 執 行 任 何 語 句. 開 關 語 句 在Java 與C 中 的 使 用 完 全 一 樣. 轉 移 語 句break,continue, 返 回 語 句return 在Java 和C 中 的 使 用 方 法 一 樣, 只 是Java 中 的label 標 號 語 句 類 似C 語 言 中 的goto 語 句.Java 不 支 持goto 語 句.goto 語 句 會 導 致 很 多 麻 煩, 他 也 許 可 暫 時 解 決 一 個 問 題, 但 會 嚴 重 破 壞 程 序 的 可 擴 充 性.

Char ch;

Outlabel:

For(int I=0;I< 10;I++)

{

ch=(char)System.in.read();

switch(ch)

{

case 'a':

break Outlabel;

case 'b':

Sysyem.out.println

("nYou have entered a character b");

Break;

case 'c':

continue;

break;

default:

Sysyem.out.println

("nYou have entered a wrong character ");

Return;

}

  通 過 以 上 簡 單 的 介 紹,Java 語 言 並 不 陌 生, 他 和C 的 流 程 幾 乎 完 全 一 致, 只 不 過 少 了goto 語 句. 但 實 際 上,Java 與C 在 流 程 控 制 上 還 是 有 其 他 一 些 細 微 的 差 別. 隨 著Java 學 習 的 不 斷 深 入, 你 會 有 深 刻 的 認 識 和 豐 富 的 收 獲。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-989326/,如需轉載,請註明出處,否則將追究法律責任。

相關文章