###### tags: `sprout`
# do-while
slide : https://hackmd.io/@i2y3z9dITSa_Q_7V7h-AoA/r1U_pZ1QO
2021
--廖凰汝--
---
while 複習與練習
----
印出 n 顆星星
> n = 5
> 
----
```cpp=
int n;
std::cin >> n;
int i = 0;
while (i < n) {
std::cout << "*";
i++;
}
```
----
印出一個 n * m 的長方形星星
> n = 3
> m = 6
> 
----
```cpp=
// n * m 的星星
int n, m;
std::cin >> n >> m;
int i = 0;
int j = 0;
while (i < n) { // 有 n 列星星
// 初始化j
j = 0;
while (j < m) { // 印出m個星星
std::cout << "*";
j++;
}
std::cout << '\n'; // 印完一列星星,換行
i++;
}
```
----
Visualize
http://pythontutor.com/visualize.html#mode=display
---
do-while 跟 while 有什麼差別?
----
while
```c=
while (條件) {
做事
}
```
```
1. 檢查條件是否符合
2. 若符合,就做事
不斷重複1, 2步驟,直到條件不符合
```
----
while

----
do-while
```c=
do {
做事
} while( 條件 );
```
```
* 記得後面的分號!
1. 做事
2. 檢查條件是否符合
不斷重複1, 2步驟,直到條件不符合
```
----
do-while

----
while vs. do-while
```c=
while (老師心情好) {
開老師玩笑
}
```
```
會看眼色,老師心情好才敢開他玩笑
```
```c=
do {
開老師玩笑
} while(老師心情好);
```
```
白目,不管老師,直接先開一波玩笑
```
----
while 裡的敘述不一定會被執行,但 do-while 的敘述至少會被執行一次
---
while
```c=
int i = 1;
while (i <= 5) {
cout << i << " ";
i++;
}
```
do-while
```c=
int i = 1;
do {
cout << i << " ";
i++;
} while (i <= 5);
```
```
以上兩種的執行結果一樣嗎?
```
----
Visualize
http://pythontutor.com/visualize.html#mode=display
----
while
```c=
int i = 1;
while (i > 1) {
cout << i << " ";
i--;
}
```
do-while
```c=
int i = 1;
do {
cout << i << " ";
i--;
}
while (i > 1);
```
```
以上兩種的執行結果一樣嗎?
```
---
為什麼要用 do-while ?
> 至少要執行一次
----
請使用者輸入一個偶數
(若不是偶數,則繼續輸入直到是偶數)
----
用 while 跟 do-while 試寫寫看
分享你的code !!
----
while 寫法
```cpp=
int number;
std::cout << "Please enter an even number: " << std::endl;
std::cin >> number;
while (number % 2 != 0) {
std::cout << "Please enter an even number: " << std::endl;
std::cin >> number;
}
std::cout << "Your even number is " << number << std::endl;
```
do-while 寫法
```cpp=
int number;
do {
std::cout << "Please enter an even number: " << std::endl;
std::cin >> number;
} while (number % 2 != 0);
std::cout << "Your even number is " << number << std::endl;
```
----
有什麼差別?
---
OJ練習時間
https://neoj.sprout.tw/problem/893/
----
給點提示
```cpp=
while () { // 跑 n 次 因為有n層
while() {// 印空白 } // 跑 n - 層數 次
while() {// 印數字 } // 跑 層數 次
// 印一個空白
while() {// 印數字 } // 跑 層數 次
}
```
空白數跟數字數都跟第幾層有關係喔
----
http://codepad.org/7yaGmXZw
---
{"metaMigratedAt":"2023-06-15T20:40:39.246Z","metaMigratedFrom":"Content","title":"do-while","breaks":true,"contributors":"[{\"id\":\"8b6cb7cf-d748-4d26-bf43-fed5ee1f80a0\",\"add\":2851,\"del\":230}]"}