OK論壇

 找回密碼
 註冊
查看: 1079|回復: 3

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

[複製鏈接]
  • TA的每日心情

    2013-11-14 10:06 PM
  • 簽到天數: 11 天

    連續簽到: 1 天

    [LV.3]偶爾看看II

    發表於 2013-4-2 18:43:22 | 顯示全部樓層 |閱讀模式
    接續上次之第一張簡單基礎教學後,決定發表第二張,使用之教材仍與第一章相同。


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


    當我們在設計一個程式時,幾乎常常會用到這個 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++)

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

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





    評分

    參與人數 1積分 +77 現金 +77 積極性 +77 收起 理由
    goddameit + 77 + 77 + 77 原創內容

    查看全部評分

    回復

    使用道具 舉報

  • TA的每日心情

    2021-10-30 11:39 AM
  • 簽到天數: 63 天

    連續簽到: 1 天

    [LV.6]常住居民II

    發表於 2013-5-21 15:36:47 | 顯示全部樓層
    感謝大大教學,目前剛接觸C++,希望能增加寫程式技術
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    郁悶
    2013-7-8 03:22 AM
  • 簽到天數: 40 天

    連續簽到: 1 天

    [LV.5]常住居民I

    發表於 2013-7-8 16:13:49 | 顯示全部樓層
    其實還有一個用法是三元運算判斷
    也就是
    (判斷式輸入在這)?為真的內容:為否的內容

    來個範例
    int money = 500;
    cout << "錢比600" << (money > 600)?"小":大   ;
    回復 支持 反對

    使用道具 舉報

  • TA的每日心情
    開心
    2015-3-16 06:27 AM
  • 簽到天數: 421 天

    連續簽到: 1 天

    [LV.9]以壇為家II

    發表於 2013-7-8 16:51:15 | 顯示全部樓層
    〃深秋戀歌〃 發表於 2013-7-8 04:13 PM
    其實還有一個用法是三元運算判斷
    也就是
    (判斷式輸入在這)?為真的內容:為否的內容

    你寫錯了
    應該是這樣
    1. cout << "錢比600" << ((money > 600) ? "大" : "小");
    複製代碼
    回復 支持 反對

    使用道具 舉報

    您需要登錄後才可以回帖 登錄 | 註冊

    本版積分規則

    Archiver|手機版|小黑屋|OK討論區

    GMT+8, 2024-4-20 12:02 PM , Processed in 0.050693 second(s), 23 queries , Gzip On.

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回復 返回頂部 返回列表