奧林匹亞資訊班
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)
什麼是陣列
你可以把陣列想像成一排房子(記憶體)
裡面住著不同的人 (各自不同的值)
一個陣列有以下的屬性
- 類別 ( int , char , ...)
- 名字
- 長度
- 各自的值

宣告一個陣列
如同宣告一個整數,我們可以宣告一個陣列,不同的是我們需要指定陣列的大小。
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 階段測驗
- 65