###### tags: `sprout` # continue, break slide : https://hackmd.io/@i2y3z9dITSa_Q_7V7h-AoA/HyHcP_JQd 2021 --廖凰汝-- --- continue ```cpp= while (條件1) { 事件1 if (條件2) continue; 事件2 } ``` ``` 1. 檢查條件1是否符合 2. 做事件1 3. 檢查條件2是否符合,符合 => 回到步驟1,不符合 => 步驟4 4. 做事件2 重複以上步驟 ``` ---- continue > 直接進入下一次迴圈 ---- continue ![](https://i.imgur.com/vC75nJk.png) --- why continue? ``` 演員徵選時會進行條件篩選,若有一個不符合,就直接淘汰 continue => 導演:「夠了,下一位~」 (繼續下一輪徵選) ``` ```cpp= while (還沒徵選到演員) { 候選演員進場 if (顏值太低) continue; // 下一位~ if (演技太差) continue; // 下一位~ if (態度不好) continue; // 下一位~ 找到演員了! } ``` ---- 印出1~100 同時是2, 3, 5的倍數 ---- ```cpp= int number = 0; while (number + 1 <= 100) { number = number + 1; if (number % 2 == 0) { if (number % 3 == 0) { if (number % 5 == 0) { std::cout << number << " "; } } } } ``` ---- > 換一種思考 > 不是2(3,5)的倍數就不要印出? ```cpp= int number = 0; while (number + 1 <= 100) { number = number + 1; if (number % 2 != 0) continue; if (number % 3 != 0) continue; if (number % 5 != 0) continue; std::cout << number << " "; } ``` ---- Visualize http://pythontutor.com/visualize.html#mode=display --- break ```cpp= while (條件1) { 事件1 if (條件2) break; 事件2 } ``` ``` 1. 檢查條件1是否符合 2. 做事件1 3. 檢查條件2是否符合,符合 => 跳出迴圈,不符合 => 步驟4 4. 做事件2 重複以上 ``` ---- break > 跳出迴圈 ---- break ![](https://i.imgur.com/krmfGcJ.png) ---- why break? ``` 又是演員徵選,但這次導演特別想找一個有鳳眼的人 ``` ```cpp= while (還沒徵選到演員) { 候選演員進場 if (有鳳眼) break; // 找到了! //下一位 } 找到演員了! ``` ---- Example ```cpp= // 10 ~ 100 間最小的3的倍數 int n = 10; while (n < 100) { if (n % 3 == 0) break; n++; } std::cout << n; ``` ---- 輸入一個數字n, 判斷他是否為質數 > 質數:除了1和該數自身外,無法被其他自然數整除的數 ---- 提示 ```cpp= while () { // 試試看從2~number-1 的數能不能整除 // 若可以,一定不是質數,跳出迴圈 // 若不行,試下一個 } // 跳出迴圈的狀況判斷是不是質數 ``` 自己試試看能不能寫出來 寫出來之後,視覺化你的程式碼 http://pythontutor.com/visualize.html#mode=display ---- ```cpp= int number; std::cin >> number; bool isPrime = true; int i = 2; while (i < number) { if (number % i == 0) { isPrime = false; break; } i++; } if (isPrime) cout << "Is a prime number"; else cout << "Not a prime number"; ``` ---- How to improve ? > 迴圈次數跑少一點? ---- 終極密碼 > 輸入一個數字讓別人猜, > 接下來連續輸入數字,直到猜到這個數字為止 ---- ```cpp= int number; cin >> number; int guess; while (cin >> guess) { if (guess == number) { cout << "You get the correct answer! \n"; break; } else { cout << "Oh oh. Continue to guess. \n"; } } ``` ---- 給使用者多點提示? 不然就像大海撈針 --- 大家來找碴 ---- ```cpp= int i = 1; while (i <= 100) { if (i % 2 == 0) continue; cout << i << " "; i++; } ``` 會發生什麼事? ----
{"metaMigratedAt":"2023-06-15T20:42:04.053Z","metaMigratedFrom":"Content","title":"continue, break","breaks":true,"contributors":"[{\"id\":\"8b6cb7cf-d748-4d26-bf43-fed5ee1f80a0\",\"add\":3065,\"del\":343}]"}
    562 views