KarK 發表於 2013-4-2 18:44:13

C++ 簡單教學 第三章 簡單函式以及重複序(迴圈)

今天第三章要教大家的是C++ 的重要基礎:迴圈(Loop)以及函式(Function)

迴圈顧名思義就是重複執行直到條件到達要求,以下為執行過程簡圖:

第一種(到真結束):

(反邏輯)

             ↓ ← ← ←  ↑
程式載入點→進入迴圈→條件   :       ↑

真(YES):跳出迴圈,執行外圍程式碼。  ↑(重複執行直到真)

假(NO):執行內部程式碼 → → → → ↑


第二種(到假結束):

(常用)

範例 :<關鍵字> for (宣告; 條件; 計數程式碼 (可省略,或寫在內部程式碼) ) { 內部程式碼 }

範例:<關鍵字>while (當...時) { 程式碼 }

             ↓ ← ← ←  ↑
程式載入點→進入迴圈→條件   :       ↑

假(NO):跳出迴圈,執行外圍程式碼。     ↑(重複執行直到真)

真(YES):執行內部程式碼 → → → →↑


其餘較不常用之(DO...LOOP等等)將會留至日後之”進階迴圈”在介紹。


基本邏輯運算元介紹:

!  not 邏輯,即”不”邏輯。
=   is 邏輯,即”是或等於”邏輯。
||      or 邏輯,即”或”邏輯。
&&      and 邏輯,即”和”邏輯。

注意:= 與 == 意義不同,雖然都是”等於”邏輯,但是 = 是用於賦值,== 是用於判斷,如:
[*]int a = 10, b = 20;
[*]
[*]if (a = b) // 結果為真,因為賦值是允許的。
[*]if (a == b) // 結果為假。
[*]
[*]a = b;
[*]
[*]cout << a; // 結果為 20

複製代碼
邏輯組合:

(在此只介紹幾種常用組合,日後將會更清楚介紹)
[*]!=                      不等邏輯。
[*]!(a || b )         當 a 或 b 成立則回傳否。
[*]!(a && b )         當 a 成立且 b 也成立則回傳否。
[*]

複製代碼
因為此為較之前抽象之程式語言,因此我們直接以範例來解說:

程式範例 (for):
[*]int sum = 0 , ct;//宣告變數
[*]
[*]cout << "請輸入 ct 的值 : ";
[*]cin >> ct;// 定義變數
[*]
[*]for (int i = 0 ; i < ct ; i ++){   sum = sum + i; /* 等於sum += i日後將會使用 += 、 *=、 ... 形式*/      }
[*]
[*]/* 宣告 變數 i = 0   當 i 小於 使用者輸入的變數執行內程式碼後在將 i 累加 1(注意 i ++ 等於i += 1等於 i = i+1)*/
[*]
[*]cout << sum;

複製代碼
若您輸入的 ct 值為 : 5
則結果將會是:0+1+2+3+4 = 10


程式範例(while):
[*]int sum = 0,ct,i = 0;//宣告變數
[*]
[*]cout << "請輸入 ct 的值 : ";
[*]cin >> ct; // 定義變數
[*]
[*]while (i != ct){
[*]
[*]sum += i;
[*]i++;
[*]
[*]}
[*]
[*]/* 當 i 不等於 ct 時   sum 進行累加 i   i 也同時累加 1直到i 等於 ct 時停止迴圈 */
[*]
[*]cout << sum;

複製代碼
若您輸入的 ct 值為 : 10
則結果將會是:0+1+2+3+4+5+6+7+8+9 = 45







函式簡介:

函式是當我們需要於多個不同程式碼程式碼內執行同一段功能(可能這個功能的程式碼很長),我們可以將它”提”出來

例如數學中:

sin2theta + cos2theta - tan^2theta 為一個未知方程式

題目要求算 :( 1 + sin2theta + cos2theta - tan^2theta ) * ( sin2theta + cos2theta - tan^2theta + cos theta ) - ( 8 *( sin2theta + cos2theta - tan^2theta ))(例題)

我們可以另 sin2theta + cos2theta - tan^2theta 為 X

就可以簡化成:

( 1 + x ) * ( x + cos theta ) - 8x


而我們於不同段執行的程式碼(功能相同)我們也可以將它提出:
[*]int main () {
[*]
[*]int a = 1,b = 2,c = 3;
[*]
[*]a = (a + 2) * ( a +3) * ( a+4);
[*]b = (b + 2) * ( b +3) * ( b+4);
[*]c = (c + 2) * ( c +3) * ( c+4);
[*]
[*]}

複製代碼
我們可以將程式碼寫成:
[*]
[*]int Test(int);
[*]
[*]intTest (int x){
[*]
[*]return (x + 2) * ( x + 3) * ( x + 4);
[*]
[*]}
[*]
[*]int main (){
[*]
[*]int a = 1,b = 2,c = 3;
[*]
[*]a = Test(a);
[*]b = Test(b);
[*]c = Test(c);
[*]
[*]}
[*]

複製代碼
程式解說:

我們可以定義一個新的主體類型為 整數(int)名稱(自行決定,在此取:)TEST

且使用()並明確要求一個整數引數 int a

{}內寫的是執行碼 (就如同程式主體main {} 內一樣,只是main()中的引數在此我們將它省略)


然後因為我們定義的是變數程式主體(整數int),所以C++編譯器會要求我們必須使用關鍵字return來返回一個整數結果

(除非使用void主體,否則返回同類結果幾乎可以說是一個定理,不可改變的事實)

而最上面的 int Test(int); 是要宣告給程式知道我們有一個函式 類型為 int 且要求一個int引數,否則程式將找不到 Test 函式

(相關函式進階使用,將會於日後進階函式更加介紹,在此僅為基本介紹!)



今日教學之重點為基本邏輯運算元以及迴圈和基礎函式,若學習者能夠好好應用,你就可以透過這些基礎來做出簡單的小程式(或遊戲)

下次我們課程將會介紹到基礎一維陣列以及字串的應用還有迴圈深入講解。

〃深秋戀歌〃 發表於 2013-7-8 18:58:09

補充i++和++i的不同

i++是給別人i的值 自己本身再加1
++i是自己本身加1 別人看到的也是加1後的i

而效能++i會比較好 會比i++少吃一個記憶體

舉例一下好了

int i = 5;

int a = i++;//這裡a會等於5

int b = ++i;//這裡b會等於5+1+1=7
頁: [1]
查看完整版本: C++ 簡單教學 第三章 簡單函式以及重複序(迴圈)