###### tags: `sprout` # do-while slide : https://hackmd.io/@i2y3z9dITSa_Q_7V7h-AoA/r1U_pZ1QO 2021 --廖凰汝-- --- while 複習與練習 ---- 印出 n 顆星星 > n = 5 > ![](https://i.imgur.com/5qQilxd.png) ---- ```cpp= int n; std::cin >> n; int i = 0; while (i < n) { std::cout << "*"; i++; } ``` ---- 印出一個 n * m 的長方形星星 > n = 3 > m = 6 > ![](https://i.imgur.com/YeiogU4.png) ---- ```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 ![](https://i.imgur.com/iy3lZo4.png) ---- do-while ```c= do { 做事 } while( 條件 ); ``` ``` * 記得後面的分號! 1. 做事 2. 檢查條件是否符合 不斷重複1, 2步驟,直到條件不符合 ``` ---- do-while ![](https://i.imgur.com/7YRHQ4b.png) ---- 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}]"}
    587 views