奧林匹亞資訊班

11/9

講師:吳崇維(wayne)

今日目標~

 

  • 複習迴圈
  • 階段測驗
  • 測驗檢討
  • 陣列初步

迴圈指令

更彈性的控制

 

設計師有時候不會想要乖乖的照著迴圈的規則走。

有彈性的控制,可以達到隨時跳出迴圈,或隨時重啟迴圈

break;

 

break指令,可以讓任何迴圈遇到他時,強制結束迴圈

 

要注意的是我們現在只知道在迴圈裡使用,迴圈的使用

是不允許的。

程式下一步到第幾行~?

while (1) {
    while (1) {
        break;
    }
    break;
}

按:break到最近迴圈的底部

巢狀迴圈

continue;

 

將迴圈移駕到剛開始的位置

int x = 0;
int y = 0;
while (x <= 10) {
    x++;
    continue;
    y++;
}

for

for

 

更為精準,高級的迴圈!

語法 :

 

 

 

initialization: 初始化                     (第一次進入會跑)

condition : 條件( 類似while )       (每次都會檢查)

adjustment : 每次迴圈的調整      (第二次之後會跑)

基本的 () {} 架構不變。

for ( initialization ; condition ; adjustment) {
    statement;
} 

計算1~100總和 (while版)

計算1~100總和 (for版)

更常這樣寫! (for版)

Questions?

階段測驗(不用有壓力~)

  • Step 1: 註冊 Green Judge
  • Step 2: 寫a001 (確保你知道怎麼上傳)
  • Step 3: 開始測驗~

1. a009 團購力量大

 

2. a017 成績等第

 

3. a029 連續整數相加(一)

 

陣列(array)

什麼是陣列

 

你可以把陣列想像成一排房子(記憶體)

裡面住著不同的人 (各自不同的值)

 

一個陣列有以下的屬性

  1. 類別  ( int , char , ...)
  2. 名字
  3. 長度
  4. 各自的值

宣告一個陣列

 

如同宣告一個整數,我們可以宣告一個陣列,不同的是我們需要指定陣列的大小。

 int a;
 int b[10];

使用中括號 []

宣告b[10] 代表這個陣列名字為b

並且長度為10。

取用陣列元素

 

如果我們宣告:

 

 

則我們可以取用 a[0] , a[1] ... a[9] 這些變數

我們並不能取用a[10]!會導致程式錯誤

 

註:在工程師眼裡,數字是從0開始的!

int a[10];

讀入10個數字,接著輸出他們

不會陣列之前...

int a;
int b;
int c;
...
int i;
int j;
cin >> a;
cin >> b;
...
cin >> j;
cout << a; ... (趴)

讀入10個數字,接著輸出他們

會陣列之後!

int a[10];
for (int i = 0; i < 10; i++) {
    cin >> a[i];
}
for (int i = 0; i < 10; i++) {
    cout << a[i] << '\n';
}

細看上面的code

int a[10];
for (int i = 0; i < 10; i++) {
    cin >> a[i];
}
for (int i = 0; i < 10; i++) {
    cout << a[i] << '\n';
}

其中 i 被稱為註標 (index) , 使用迴圈可以

明瞭的表示陣列『從頭到尾』的值!

陣列小技巧

 

如同宣告變數,若是沒有初始陣列,則他的值會亂飄!

 

以下是變數 / 陣列的初始技巧

int a = 0;
int a[10] = {0};

注意我們只能初始0,不能初始其他的數

可以初始為任意數

如果還有時間...

補充教學><

What happened?

int a[10];
a[0] = 1234;
a[1] = 5678;
cout << "a[0] = " << a[0] << '\n';
cout << "a = " << a << '\n';
cout << "a+1 = " << a+1 << '\n';
cout << "*(a+1) = " << *(a+1) << '\n';

另一種輸出 : printf

 

在C語言裡面使用 (C++也可以)

比cout 更為嚴謹,因此可以處理更多狀況

printf("Hello, World!");

如果我們想輸出一個整數變數,則必須指定一個%d參數!

int x = 10;
printf("x = %d", x);

慢慢理解printf

int x = 10;
int y = 5;
printf("%d+%d=%d", x, y, x+y);

雙引號 "" 裡面放著我們想要輸出的東西

 

如果要輸出的東西我們預先不知道--就要指定參數給他,參數依照變數的類別而變!

整數參數:%d

字元參數:%c

字串參數:%s

開心的作業時間~

上方是超連結)

 

提點:注意我們最多需要多少陣列的大小!

上方也是超連結)

 

提點:我們需要額外使用變數來存答案,其中答案包括最大值以及他的位置!

(位置從1開始算)

FeedBack!

一起努力快樂寫程式吧!

class 11/9 階段測驗

By Wayne Wu

class 11/9 階段測驗

  • 61