{Loop}
Philae
Table
| Loop ~ |
|---|
| While Loop |
| Do-While Loop |
| For Loop |
| Compare |
| Nested Loop |
# CHAPTER 2
Loop ~
重複執行
例如:
費氏數列
1 1 2 3 5 8 13 21 24 45 69 114
當老師問你第100項為何時
不想算讓電腦來幫我算!
# CHAPTER 2
Loop ~
重複執行
例如:
費氏數列
1 1 2 3 5 8 13 21 24 45 69 114
當老師問你第100項為何時
不想算讓電腦來幫我算!
重複執行:
當老師問第n項時
重複前兩項+前一項
總共計算n次
while (條件式){
達成條件時執行
}# PRESENTING CODE
While Loop
條件成立
while (條件式){
達成條件時執行
}# PRESENTING CODE
While Loop
條件成立
執行
是
while (條件式){
達成條件時執行
}# PRESENTING CODE
While Loop
條件成立
執行
是
while (條件式){
達成條件時執行
}# PRESENTING CODE
While Loop
條件成立
執行
結束迴圈
是
否
int testScore;
cin>>testScore;
while(testScore>60){
cout<<"哇!你及格了"<<endl;
}# PRESENTING CODE
While Loop
int testScore;
cin>>testScore;
while(testScore>60){
cout<<"哇!你及格了"<<endl;
}# PRESENTING CODE
While Loop
哇!你及格了
int testScore;
cin>>testScore;
while(testScore>60){
cout<<"哇!你及格了"<<endl;
}# PRESENTING CODE
While Loop
哇!你及格了
哇!你及格了
int testScore;
cin>>testScore;
while(testScore>60){
cout<<"哇!你及格了"<<endl;
}# PRESENTING CODE
While Loop
哇!你及格了
哇!你及格了
哇!你及格了
int testScore;
cin>>testScore;
while(testScore>60){
cout<<"哇!你及格了"<<endl;
}# PRESENTING CODE
While Loop
哇!你及格了
哇!你及格了
哇!你及格了
.
.
.
int testScore;
cin>>testScore;
while(testScore>60){
cout<<"哇!你及格了"<<endl;
}# PRESENTING CODE
While Loop
哇!你及格了
哇!你及格了
哇!你及格了
.
.
.
無窮迴圈
int testScore;
cin>>testScore;
while(testScore>60){
cout<<"哇!你及格了"<<endl;
cin>>testScore;//解決無窮迴圈
}# PRESENTING CODE
While Loop
# CHAPTER 2
Quiz
成功電研36屆某教學學長
在校長室前睡覺
被通知罰寫100次「我不該在校長辦公室前睡覺」
# CHAPTER 2
Quiz
成功電研36屆某教學學長
在校長室前睡覺
被通知罰寫100次「我不該在校長辦公室前睡覺」
請用While Loop輸出20次「我不該在校長辦公室前睡覺」
#include <bits/stdc++.h>
using namespace std;
int main(){
int a = 20;
while(a > 0) {
cout<<"我不該在校長辦公室前睡覺"<<endl;
a--;
}
}# PRESENTING CODE
Code
Cout
| Times(a) | While | Cout |
|---|---|---|
| 20 | 20>0 | 我不該在校長辦公室前睡覺 |
Cout
| Times(a) | While | Cout |
|---|---|---|
| 20 | 20>0 | 我不該在校長辦公室前睡覺 |
| 19 | 19>0 | 我不該在校長辦公室前睡覺 |
Cout
| Times(a) | While | Cout |
|---|---|---|
| 20 | 20>0 | 我不該在校長辦公室前睡覺 |
| 19 | 19>0 | 我不該在校長辦公室前睡覺 |
| … | … | 我不該在校長辦公室前睡覺 |
Cout
| Times(a) | While | Cout |
|---|---|---|
| 20 | 20>0 | 我不該在校長辦公室前睡覺 |
| 19 | 19>0 | 我不該在校長辦公室前睡覺 |
| … | … | 我不該在校長辦公室前睡覺 |
| 1 | 1>0 | 我不該在校長辦公室前睡覺 |
Cout
| Times(a) | While | Cout |
|---|---|---|
| 20 | 20>0 | 我不該在校長辦公室前睡覺 |
| 19 | 19>0 | 我不該在校長辦公室前睡覺 |
| … | … | 我不該在校長辦公室前睡覺 |
| 1 | 1>0 | 我不該在校長辦公室前睡覺 |
| 0 | 0>0 |
停止迴圈
a005.
a005.
Hint:if-else
#include <bits/stdc++.h>
using namespace std;
int main() {
int t, a0, a1, a2, a3, a4;
cin >> t;
while (t--){
cin >> a0 >> a1 >> a2 >> a3;
if (a3 - a2 == a2 - a1){
a4 = a3 + a3 - a2;
} else {
a4 = a3 * (a3 / a2);
}
cout << a0 << " " << a1 << " " << a2 << " " << a3 << " " << a4 << "\n";
}
return 0;
}# PRESENTING CODE
Answer
While & Do While
1.While
2.Do-While
# CHAPTER 2
int a;
cin>>a;
while(a>0){
cout<<"Ouch!"
a--;
cin>>a;
}int a;
do{
cout<<"Ouch!"
a--;
cin>>a;
}while(a>0);While & Do While
1.While
2.Do-While
# CHAPTER 2
int a;
cin>>a;
while(a>0){
cout<<"Ouch!"
a--;
cin>>a;
}int a;
do{
cout<<"Ouch!"
a--;
cin>>a;
}while(a>0);先默認條件符合並執行 再檢查
1.While
2.Do-While
# CHAPTER 2
int a;
cin>>a;
while(a>0){
cout<<"Ouch!"
a--;
cin>>a;
}int a;
do{
cout<<"Ouch!"
a--;
cin>>a;
}while(a>0);如果輸入a=2
如果輸入a=2
1.While
2.Do-While
# CHAPTER 2
int a;
cin>>a;
while(a>0){
cout<<"Ouch!"
a--;
cin>>a;
}int a;
do{
cout<<"Ouch!"
a--;
cin>>a;
}while(a>0);如果輸入a=2
如果輸入a=2
Ouch!
Ouch!
1.While
2.Do-While
# CHAPTER 2
int a;
cin>>a;
while(a>0){
cout<<"Ouch!"
a--;
cin>>a;
}int a;
do{
cout<<"Ouch!"
a--;
cin>>a;
}while(a>0);如果輸入a=2
如果輸入a=2
Ouch!
Ouch!
Ouch!
Ouch!
1.While
2.Do-While
# CHAPTER 2
int a;
cin>>a;
while(a>0){
cout<<"Ouch!"
a--;
cin>>a;
}int a;
do{
cout<<"Ouch!"
a--;
cin>>a;
}while(a>0);如果輸入a=2
如果輸入a=2
Ouch!
Ouch!
Ouch!
Ouch!
Ouch!
for (初始值;條件式;更新值){
達成條件時執行
}# PRESENTING CODE
For Loop
條件成立
設定初始值
for (初始值;條件式;更新值){
達成條件時執行
}# PRESENTING CODE
For Loop
條件成立
設定初始值
更新值
是
for (初始值;條件式;更新值){
達成條件時執行
}# PRESENTING CODE
For Loop
條件成立
設定初始值
更新值
是
執行
for (初始值;條件式;更新值){
達成條件時執行
}# PRESENTING CODE
For Loop
條件成立
設定初始值
更新值
是
執行
for (初始值;條件式;更新值){
達成條件時執行
}# PRESENTING CODE
For Loop
條件成立
設定初始值
更新值
是
否
結束迴圈
執行
for(int i=1;i<=5;i++){
cout<<i<<"_";
}# PRESENTING CODE
For Loop
| i | i <= 5 ? | i++ | cout |
|---|---|---|---|
| 1 | True | 2 | 1_ |
for(int i=1;i<=5;i++){
cout<<i<<"_";
}# PRESENTING CODE
For Loop
| i | i <= 5 ? | i++ | cout |
|---|---|---|---|
| 1 | True | 2 | 1_ |
| 2 | True | 3 | 1_2_ |
for(int i=1;i<=5;i++){
cout<<i<<"_";
}# PRESENTING CODE
For Loop
| i | i <= 5 ? | i++ | cout |
|---|---|---|---|
| 1 | True | 2 | 1_ |
| 2 | True | 3 | 1_2_ |
| 3 | True | 4 | 1_2_3_ |
for(int i=1;i<=5;i++){
cout<<i<<"_";
}# PRESENTING CODE
For Loop
| i | i <= 5 ? | i++ | cout |
|---|---|---|---|
| 1 | True | 2 | 1_ |
| 2 | True | 3 | 1_2_ |
| 3 | True | 4 | 1_2_3_ |
| 4 | True | 5 | 1_2_3_4_ |
for(int i=1;i<=5;i++){
cout<<i<<"_";
}# PRESENTING CODE
For Loop
| i | i <= 5 ? | i++ | cout |
|---|---|---|---|
| 1 | True | 2 | 1_ |
| 2 | True | 3 | 1_2_ |
| 3 | True | 4 | 1_2_3_ |
| 4 | True | 5 | 1_2_3_4_ |
| 5 | True | 6 | 1_2_3_4_5_ |
for(int i=1;i<=5;i++){
cout<<i<<"_";
}# PRESENTING CODE
For Loop
| i | i <= 5 ? | i++ | cout |
|---|---|---|---|
| 1 | True | 2 | 1_ |
| 2 | True | 3 | 1_2_ |
| 3 | True | 4 | 1_2_3_ |
| 4 | True | 5 | 1_2_3_4_ |
| 5 | True | 6 | 1_2_3_4_5_ |
| 6 | False |
for(int i=1;i<=5;i++){
cout<<i<<"_";
}# PRESENTING CODE
For Loop
設定變數 i = 1
檢查是否符合條件 i <= 5
a. 符合條件時:
更新值 i = i + 1
執行迴圈主體 cout << i << "_"
b. 條件不符合時
跳出迴圈
for(int i=1;i<=5;i++){
cout<<i<<"_";
}# PRESENTING CODE
Compare
int i=1;
while(i<=5){ //或用i<6
cout<<i<<"_";
i+=1;
}for迴圈強制規定要宣告變數來記錄次數
而while迴圈僅需某項特定條件為True即可
適合用在不知道需要執行多少次時使用
while迴圈較有彈性
# PRESENTING CODE
Nested Loop
迴圈中的迴圈
例如 : 每次扭扭蛋時要祈禱 j 次,而今天我要扭 i 顆扭蛋時
for(int i=0; i<m; i++){ //扭 i 顆扭蛋
for(int j=0; j<n; j++){ //祈禱 j 次
這邊會得到所有的 i,j 組合
}
}# PRESENTING CODE
Nested Loop
迴圈中的迴圈
例如 : 每次扭扭蛋時要祈禱 j 次,而今天我要扭 i 顆扭蛋時
for(int i=0; i<m; i++){ //扭 i 顆扭蛋
for(int j=0; j<n; j++){ //祈禱 j 次
這邊會得到所有的 i,j 組合
}
}# PRESENTING CODE
Nested Loop
今天我想畫一個三角形
輸入 : 一個n
輸出 : 一個n層的三角形,第 i 層就要有 i 個 *
# PRESENTING CODE
Nested Loop
今天我想畫一個三角形
要求如下 : 一個n層的三角形,第 i 層就要有 i 個 *
int n;
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
cout<<"*";
}
cout<<endl;
}# PRESENTING CODE
Nested Loop
今天我想畫一個三角形
要求如下 : 一個n層的三角形,第 i 層就要有 i 個 *
int n;
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
cout<<"*";
}
cout<<endl;
}| i | cout | ||||
|---|---|---|---|---|---|
| 1 | * | ||||
# PRESENTING CODE
Nested Loop
今天我想畫一個三角形
要求如下 : 一個n層的三角形,第 i 層就要有 i 個 *
int n;
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
cout<<"*";
}
cout<<endl;
}| i | cout | ||||
|---|---|---|---|---|---|
| 1 | * | ||||
| 2 | * | * | |||
# PRESENTING CODE
Nested Loop
今天我想畫一個三角形
要求如下 : 一個n層的三角形,第 i 層就要有 i 個 *
int n;
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
cout<<"*";
}
cout<<endl;
}| i | cout | ||||
|---|---|---|---|---|---|
| 1 | * | ||||
| 2 | * | * | |||
| 3 | * | * | * | ||
# PRESENTING CODE
Nested Loop
今天我想畫一個三角形
要求如下 : 一個n層的三角形,第 i 層就要有 i 個 *
int n;
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
cout<<"*";
}
cout<<endl;
}| i | cout | ||||
|---|---|---|---|---|---|
| 1 | * | ||||
| 2 | * | * | |||
| 3 | * | * | * | ||
| 4 | * | * | * | * |
# PRESENTING CODE
Nested Loop
今天我想畫一個三角形
要求如下 : 一個n層的三角形,第 i 層就要有 i 個 *
int n;
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
cout<<"*";
}
cout<<endl;
}| i | cout | ||||
|---|---|---|---|---|---|
| 1 | * | ||||
| 2 | * | * | |||
| 3 | * | * | * | ||
| 4 | * | * | * | * |
.
.
.
Break & Continue
While & For Loop
搭配判斷式
強制跳出該迴圈
1.Break
1.Break
2.Continue
While & For Loop
搭配判斷式
強制結束此次迴圈
# CHAPTER 2
Break & Continue
1.Break
2.Continue
# CHAPTER 2
for(int i=0;i<5;i++){
if(i==2)
break;
cout<<i<<"_";
}for(int i=0;i<5;i++){
if(i==2)
continue;
cout<<i<<"_";
}Break & Continue
1.Break
2.Continue
# CHAPTER 2
for(int i=0;i<5;i++){
if(i==2)
break;
cout<<i<<"_";
}for(int i=0;i<5;i++){
if(i==2)
continue;
cout<<i<<"_";
}0_
0_
Break & Continue
1.Break
2.Continue
# CHAPTER 2
for(int i=0;i<5;i++){
if(i==2)
break;
cout<<i<<"_";
}for(int i=0;i<5;i++){
if(i==2)
continue;
cout<<i<<"_";
}0_
0_
1_
1_
Break & Continue
1.Break
2.Continue
# CHAPTER 2
for(int i=0;i<5;i++){
if(i==2)
break;
cout<<i<<"_";
}for(int i=0;i<5;i++){
if(i==2)
continue;
cout<<i<<"_";
}0_
0_
1_
1_
break
continue
Break & Continue
1.Break
2.Continue
# CHAPTER 2
for(int i=0;i<5;i++){
if(i==2)
break;
cout<<i<<"_";
}for(int i=0;i<5;i++){
if(i==2)
continue;
cout<<i<<"_";
}0_
0_
1_
1_
break
3_
Break & Continue
1.Break
2.Continue
# CHAPTER 2
for(int i=0;i<5;i++){
if(i==2)
break;
cout<<i<<"_";
}for(int i=0;i<5;i++){
if(i==2)
continue;
cout<<i<<"_";
}0_
0_
1_
1_
break
3_
4_
# PRESENTING CODE
Quiz
#include <bits/stdc++.h>
using namespace std;
int main()
{
int m;
cin >> m;
int k = 0, j = 1, n;
for(int i = 3;i <= m;i++){
n = k + j;
k = j;
j = n;
}
cout<<n<<endl;
return 0;
}# PRESENTING CODE
Answer
{code}
Acme Engineering is a full service software agency.
Loop
By Philae Wu
Loop
- 84