如果說今天我們需要計算 x + 2 = 10裡面x 的答案,你會怎麼計算呢,你應該會想,不如就把10-2不就是x的答案嗎?你想的很美,但其實任何一個程式語言都沒有自動計算x值的方法,需要我們把這個方法寫出來,
那麼方法有兩個,第一個就是你們所想的,hard code出來,例如說我們想加減所有數,可以這樣
auto varX = 0;
auto var2 = 2;
auto var3 = 10
varX = var3 - var2;
//這個答案就是10-2的答案了
但這樣其實跟你用普通Casio計算機差不多。為什麼不讓電腦自動判斷呢?
以電腦自己判斷的Logic,他們判斷問題答案的方法有兩個。第一個便是驗算。也就是說
auto x = 0;
if(x + 2 == 10){
cout << "The Answer is Correct";
} else {
cout << "X is incorrect"
}
這裡做了一個快速的運算,如果 x + 2 == 10的話。(⚠️注意,在if當中是 ==),那麼電腦便會輸出正確,反之便會告訴你,你做錯了。
If else block看起來並沒有比第一個辦法更好,特別他僅僅包括驗算。但是我們還有迴圈。迴圈的用處在這裏便是列舉所有可能是答案的數值讓上面的if...else...block去驗算。
以For為例子
for(auto x = 0;x <= 10;i++){
if(x + 2 == 10){
cout << "The Answer of x is " << x << endl;
break;
} else continue;
}
break
則是在尋找到 X之後讓for 停止給數值 if去驗算。也就是說,x=9和x=10這兩個假設並不會運算continue
則相反,他是為了讓程序直接執行下一個loop你們也可以試一下其他數式,但當你嘗試到數值超過10的時候,例如
for(auto x = 0;x <= 10;i++){
if(x * 2 == 50){
cout << "The Answer of x is " << x << endl;
break;
} else continue;
}
這便會沒有答案了。你當然可以更改x的最大測試值到100這樣,但這樣程式就等於是寫死了一樣,但是我們有while!!!!!
auto x = 0;
while(1){
if(x * 2 == 50){
cout << "The Answer of x is " << x << endl;
break;
} else continue;
x++;
}
do while的用法便是確保起碼運行loop裡面的內容一次
在獲取/Filter用戶用戶的情況有用
auto x = 0;
do{
cout << "請輸入數值" << endl;
cin >> x;
if(x < 0) cout << "你的數值小於0,請重新輸入" << endl;
}while(x < 0);
Switch 是當你知道你可能遇到的狀況只有幾個的時候使用,例如
switch(operator){
case '+': cout << "It is plus sign" << endl; break;
case '-': cout << "It is minus sign" << endl; break;
通常他的動作都只有一個,或者用函數包裝,這樣看上去更像函數試編程的choose
,select
等。如果有多個動作要做建議用if...else...。
所以你見到我並沒有跟著C的標準switch寫法來做。而是跟函數式編程的寫法來寫(Python甚至沒有Switch)
switch(operator){
case '+': add(x,y) break;
case '-': minus(x,y) break;
case '*': multiply(x,y) break;
case '/': divide(x,y) break;
}
明天更新函數式編程