{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