###### 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

---
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

----
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}]"}