廣告
| 三大控制結構 |
|
|
|
| 作者是 Victor | |
| 週三, 11 二月 2009 23:54 | |
魔法的三元素
C語言就像是魔法一樣,想像一下程式語言就像是魔法的咒語,魔法有一些最基本的元素,不管是金木水火土、光、闇,只要能夠掌握所有元素,就能夠變幻出任何想要的事物,常見的程式語言也一樣,通常都由三種結構組成,只要能掌握這三之種結構,就能夠寫出任何程式,以下我們介紹結構化程式語言的三大結構 循序一件一件事情接續著做下去,這就是三大結構之一的循序,如下圖所示
C語言程式示範一個循序的範例 #include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Hi");
printf("前面的");
printf("美媚");
printf("給虧嗎");
system("pause")
return 0;
}
它以循序的圖來表示就像這樣 所以以上程式就會印出 Hi前面的美媚給虧嗎 的字樣,在這裡我們要強調的是它是一行接著一行的執行 選擇由一定的條件決定要執行哪部份的程式,這樣的結構就是選擇,如下圖所示
C語言程式示範選擇 #include <stdio.h>
#include <stdlib.h>
int main()
{
if(1 + 1 == 2) {
printf("1 + 1 真的等於 2!!!\n");
} else {
printf("1 + 1 不等於 2!\n");
}
system("pause");
return 0;
}
選擇的圖形表示就像這樣
由於1 + 1永遠等於2,所以只有右手邊的描述會被選擇並且執行,事實上我們可以判斷可以改變的數字,例如讓使用者輸入一組三角形的邊長,然後判斷這組邊長到底是否可以構成三角形 重覆在一定的條件之下重覆某部份程式,就是重覆結構,如下圖所示
C語言程式示範重覆 #include <stdio.h>
#include <stdlib.h>
int main()
{
// 計數器變數
int i = 1;
// 加總變數
int sum = 0;
// 如果 i 小於或等於 10 就執行以下 {} 中程式
// 否則跳到 {} 後繼續執行
while(i <= 10) {
// 總合變數 加上 i
sum += i;
// i的值遞增1
++i;
}
// 印出總合
printf("Sum : %d\n", sum);
system("pause");
return 0;
}
以上程式的目的是計算 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 的結果,就是重覆結構的一個例子,它每次增加 i 的值1,然後又用 i 增加 sum 的值,最重要的是它判斷條件 i 小於或等於 10 是否成立,來決定要不要繼續重覆執行同樣的程式碼片段 魔法元素的結合事實上上面的各種結構都可以放置其它的結構所組成,你可以發現我們在重覆的結構裡,我們把某些結構用循序的結構去組合而成,如你所見,你可以組合任何結構,來放在這三種結構的每個結構的位置上 有了這三種元素,就可以組合出任何想要的程式,但是一般程式語言會提供多於這三種的結構,其目的是為了使用方便,或許會讓人覺得奇怪,不是說只有三種,為何還有其它結構,事實上那些其它結構都是從這三種結構變形或組合出來的,本質上還是一樣 與惡魔諦結契約事實上,C/C++語言有提供一種不在以上三種結構範圍內的結構,叫做 goto label; 它可以跳到整個程式的任意一個點,自從前面三種元素被證明可以寫出任何程式之後,goto就漸漸地與邪惡、惡魔劃上等號,也就是,使用了goto會下地獄! 不是真正的地獄,而是程式設計與維護上的地獄,曾經有人形容用goto寫出來的程式像是一盤義大利麵,程式碼片段間不停的跳躍,每一行程式碼都有可能是進入點和出口,在這樣錯縱複雜的goto使用之下,程式碼變得難以理解和維護,而後來有偉大的人,證明了goto能寫出來的程式,使用以上三種結構都一樣可以寫出來,自此之後人們就和邪惡的goto漸行漸遠,但是C語言在那個時代下還沾染了這樣邪惡的特性,雖然你一樣可以使用它,但是請當做沒有這樣的邪惡語法存在,記住,否則你會下地獄 相較之下相較之下,結構化程式設計只有單一個進入點,單一個出口,就像一個房間一樣,你得從入口進入,從出口離開,哪裡發生命案(錯誤、bug之類的),只要把進出的可能性都考慮過,就很容易可以找到兇手到底是誰,但是惡魔的做法並不是如此,goto就像是可以穿牆的人,他自由進出每個房間,你難以得知到底有哪個goto來過這裡,還有他何去何從,在這樣的程式裡發現了錯誤或bug,你難以得知兇手到底是誰,因為整個世界的人都有嫌疑,他們都可能穿牆進入房間謀殺了某個人然後揚長而去,這就是goto邪惡的原因
|
核心是 Joomla!. Designed by: Free Joomla Theme, whois protect. Valid XHTML and CSS.







