KarK 發表於 2013-4-2 18:43:22

C++ 簡單教學 第二章 判斷式與IO結合

接續上次之第一張簡單基礎教學後,決定發表第二張,使用之教材仍與第一章相同。


觀念:判斷式,即是我們一般生活中所說的”如果 ..... 就”,”否則 ....... 就”,”或是 ...... 就”。


當我們在設計一個程式時,幾乎常常會用到這個 if - else 判斷式,而判斷式總是要搭配一個”條件式”。


何謂條件式?


例如,我今天欠王同學 10 元,而今天王同學問我是不是欠他 20 元,結果當然是不是,我就要說”NO”


但是假設今天是的話呢,我就要說”YES”,那我該如何將這整段事情寫成程式呢?


這就是我們今天要學的,簡單判斷式以及IO應用。


其程式碼格式一般為:


if ( 條件式 ) {      /* 程式碼*/          }


若包含”其他邏輯(全)”


則在尾端加入:


else {          /* 程式碼*/            }


但若其他邏輯包含了”或”,則:


else if ( 條件式 2 ) {            /* 程式碼*/             }


有包含條件式的判斷句必須當條件成立時,才會執行括號中的程式碼,若您的程式碼內包含多重判斷 ( else - if ) 則會一一執行比對。


程式實作:


/* 引入表頭檔以及命名空間操作部分省略 */


int money = 50 , feel = 0; // 宣告 money 為阿王所欠的錢feel 為你個人覺得他欠多少

cout << "你覺得阿王欠你多少?" ;// 此區為IO基本部分,若有不懂,請參考第一篇。
cin >> feel;

if ( feel >money ) {    // 判斷式開始如果 feel 大於 阿王欠的

cout << "不對,在少一點" ;


} else if (feel < money ) {    // 多重判斷式如果 feel 小於 阿王欠的


cout << "不對,在多一點" ;


} else if (feel == money ) {   // 多重判斷式如果 feel 等於 阿王欠的 ((判斷元 ==與=不同意思,日後將再提及))


cout << "沒錯" ;


} else {   cout << "你輸入的值可能有問題" ;          }// 結束判斷式如果 feel 不等於小於或大於 阿王欠的 ( 通常是出錯 )





上面的程式碼呈現了我一開始提及的欠錢問題,也許你會覺得這個很簡單,那我們更進階一些:


string account,password;

cout << "請輸入帳號及密碼: ";
cin >> account >> password;

if ( account == "123456"){
         if ( password == "654321"){
         cout << "恭喜!成功登入!";
         } else {
   cout << "密碼錯誤 ";
         }

} else {
   cout << "帳號錯誤 ";
}

上述之例子就是所謂”巢狀”判斷式,其原理與欠錢的程式碼原理相同,我想不必再多做解釋。






switch 選擇式:

有的時候我們可能只需要判斷使用者輸入的”數字”或是”列舉內容”,我們可以用到更簡單的選擇式

switch ( 目標變數 ){
   case 內容:{ break; }
   case 內容2: { break; }
   default ://預設
}


程式實作:

int p = 0;

cout << "請輸入 p 的值: ";
cin >> p;

switch ( p ){

case 5 : cout << "您輸入的是 : " << p ; //5

break;

case 10 : cout << "您輸入的是 : " << p ; // 10

break;

default :

cout << "您輸入的值不再選擇內";

}
若今天我輸入了 5

輸出結果:您輸入的是 :5

* default * 當不符合任何條,執行此處之程式碼。

* 注意,選擇區間的 break 非常重要,可以需求選擇是否使用。

當希望 條件 A 和 條件 B 同一件事情的時候,只需:

case A :
case B :
break;

意思即是 條件 A 和 條件 B 都做一樣的事情。

若希望條件 A 和 條件 B 做一樣的事,但條件 C 做別的事情,則:

case A :
case B :
break;

case C :
break;
[*]總教學整合範例:
[*]
[*]注意 : 本程式碼需引入標頭檔 string → #include "string"
[*]
[*]int type;
[*]string acc , pass , do_; //此處請勿使用 do 因為 do 為 C++ 原生關鍵詞
[*]
[*]cout << "請輸入你要做什麼: ( 登入請輸入 1 ,查看說明出入 2) ";
[*]cin >> type;
[*]
[*]switch ( type ) {
[*]
[*]case 1 : do_ = "login";
[*]
[*]break;
[*]
[*]case 2 : do_ = "info";
[*]
[*]break;
[*]
[*]default : do_ = "not_thing";
[*]
[*]break;
[*]
[*]}
[*]
[*]if ( do_ == "login"){
[*]
[*]/* 可搭配上段之簡單登入。 */
[*]
[*]} else if ( do_ = "info" ){
[*]
[*]/* 查看說明,程式碼請自行發揮想像力。 */
[*]
[*]} else if ( do_ = "not_thing" ) {
[*]
[*]/* 沒有事情可做。 */
[*]
[*]} else {
[*]
[*]/* 錯誤!。 */
[*]
[*]}
[*]
[*]} // 對應於 main

複製代碼
本文章之程式碼皆已使用 C++ 編譯器編譯成功 ( VS 2010 、 VS 2008 、 DEV - C++)

本篇原本為”迴圈之應用”後因考量後決定先以”判斷式”為優先教學。

下章節預計將會以”迴圈應用”以及”簡單函式”為教學主體。





ll078901905 發表於 2013-5-21 15:36:47

感謝大大教學,目前剛接觸C++,希望能增加寫程式技術

〃深秋戀歌〃 發表於 2013-7-8 16:13:49

其實還有一個用法是三元運算判斷
也就是
(判斷式輸入在這)?為真的內容:為否的內容

來個範例
int money = 500;
cout << "錢比600" << (money > 600)?"小":大   ;

f003002 發表於 2013-7-8 16:51:15

〃深秋戀歌〃 發表於 2013-7-8 04:13 PM static/image/common/back.gif
其實還有一個用法是三元運算判斷
也就是
(判斷式輸入在這)?為真的內容:為否的內容


你寫錯了
應該是這樣cout << "錢比600" << ((money > 600) ? "大" : "小");
頁: [1]
查看完整版本: C++ 簡單教學 第二章 判斷式與IO結合