2016年5月1日 星期日

給新手的C++教學 (上冊) - 4. 條件判斷 (Decision making)

回到「給新手的C++教學 (上冊)」

上一章

利用前三章提到的知識,我們已經可以寫出自己的計算機了!
但是,其實我們的程式還可以變得更強!
在本章,我們將賦予程式「判斷、決策」的能力,讓程式也可以像人一樣思考!

先來講個簡單的例子:
輸入一個數字,如果這個數字是2的話輸出「Yes」,不是的話輸出「No」

這裡請出我們的新朋友,「if (如果)」
用法如下:

if(條件)
{
    條件成立時要執行的程式碼
}

所以,程式碼可以這樣寫:

#include<cstdio>
int main()
{
    int n;
    scanf("%d",&n);
    if(n==2)
    {
        printf("Yes\n");
    }
    if(n!=2)
    {
        printf("No\n");
    }
}

趕快試試看吧! :)

你可能會發現另外兩個新朋友:「==」和「!=」
其中
「==」的作用是判斷左邊是不是「等於」右邊
「!=」的作用是判斷左邊是不是「不等於」右邊
類似的用法還有:
「<」的作用是判斷左邊是不是「小於」右邊
「>」的作用是判斷左邊是不是「大於」右邊
「<=」的作用是判斷左邊是不是「小於或等於」右邊
「>=」的作用是判斷左邊是不是「大於或等於」右邊

你可能還會發現:『「==」成立』不就是『「!=」不成立』嗎?
只要其中一方成立,另一方就會不成立
反之亦然
只要其中一方不成立,另一方就會成立


因此,「else (否則)」的概念就被引進來了
用法如下:

if(條件)
{
    條件「成立」時要執行的程式碼
}
else
{
    條件「不成立」時要執行的程式碼
}

這樣一來,「判斷n有沒有等於2」的程式碼就可以寫得更簡單了:

#include<cstdio>
int main()
{
    int n;
    scanf("%d",&n);
    if(n==2)
    {
        printf("Yes\n");
    }
    else
    {
        printf("No\n");
    }
}

你現在可能覺得差不了多少,但是以後你應該就會發現
這樣的一點邏輯簡化,對於寫出正確無誤的程式碼非常有幫助

再考考你
給你年分,請你判斷它是不是閏年?

你可能會想:「那我就先看看它是不是4的倍數,如果不是4的倍數的話就不是閏年,如果是4的倍數的話再看看它是不是100的倍數,如果不是100的倍數的話就是閏年,如果是100的倍數的話再看看它是不是400的倍數,如果不是400的倍數的話就不是閏年,否則就是閏年」

我們的程式也可以這樣思考!
對了,前面忘了說
其實除了「加減乘除」之外,C++還提供了另外一個運算子:「%」
就是算出餘數啦
例如以下這段程式碼:

#include<cstdio>
int main()
{
    int a=5,b=3;
    printf("%d\n",a%b);
}

程式會輸出「2」
「5%3」的程式輸出「2」了!

因此,依據上面學到的知識,要判斷閏年,程式碼可以這樣寫:

#include<cstdio>
int main()
{
    int year;
    scanf("%d",&year);
    if(year%4!=0)
    {
        printf("不是閏年\n");
    }
    else
    {
        if(year%100!=0)
        {
            printf("是閏年\n");
        }
        else
        {
            if(year%400!=0)
            {
                printf("不是閏年\n");
            }
            else
            {
                printf("是閏年\n");
            }
        }
    }
}

很有趣吧!
想不想趕快來玩玩看呢?
例如:心理測驗 (XD?!)

下一章

感謝:
(版權所有 All copyright reserved)

沒有留言:

張貼留言

歡迎留言或問問題~
若您的留言中包含程式碼,請參考這篇
如果留言不見了請別慌,那是因為被google誤判成垃圾留言,小莫會盡快將其手動還原