本章概念
陣列
3
3-1 認識陣列 P.46
什麼是陣列、陣列的表示、
陣列的維度、陣列的操作
3-2 陣列程式—成績計算 P.54
設定清單、
依序讀取清單中的資料
44
p44-65_ch3.indd 44
p44-65_ch3.indd 44 2020/6/3 上午 11:33:242020/6/3 上午 11:33:24
理,可以快速找到需要的物品。
在電腦中也存在著這樣的空間,方便我們存放、提取資料,稱之為
「陣列」。
45
p44-65_ch3.indd 45
p44-65_ch3.indd 45 2020/6/3 上午 11:33:242020/6/3 上午 11:33:24
3-1 認識陣列
3-1
1 什麼是陣列
小潔和爸爸去逛大賣場,爸爸將車停在大賣場的汽車停車格裡。下 車時,爸爸特別提醒小潔記下停車格的編號,避免回家時找不到車。
1 2 3 4 5
QQ-1324 2058-XX HRZ-923 FLY-168 5298-XD
想一想
1. 若爸爸的車停在 5 號汽車停車格,請問爸爸的車號是幾號?
2. 鄰居陳媽媽的車號是 HRZ-923,請問陳媽媽的車停在幾號停車格?
手腦並用
大賣場會規畫「汽車停車格」來停放「汽車」,而電腦在處理 資料時,則會使用「陣列」來存放「資料」(圖 1-3-1)。
陣列
[1] [2] [3] [4] [5]
資料
a
資料b
資料c
資料d
資料e
[1] [2] [3] [4] [5]
汽車 停車格
圖 1-3-1 汽車停車格用來停放汽車,就如同陣列是用來存放資料的空間。
46
資訊科技篇p44-65_ch3.indd 46
p44-65_ch3.indd 46 2020/6/3 上午 11:33:252020/6/3 上午 11:33:25
2 陣列的表示
陣列可以定義為一群具有相同「名稱」和「資料型態」的變數 集合。例如:汽車停車格停放的皆為「汽車」,而大賣場通常還會 有「機車停車格」、「貨車停車格」等不同的「陣列」。
陣列的表示如圖 1-3-2,陣列 汽車格 中有 5 個陣列元素(停車 格),每一個陣列元素可以存放一筆資料(一輛車),停車格的編 號代表陣列索引。
存放的資料
汽車格[2] 汽車格[3] 汽車格[4] 汽車格[5]
陣 列 元 素
陣 列 名 稱 汽車格 汽車格 汽車格 汽車格 汽車格
陣 列 索 引
1 2 3 4 5
汽車格[1]
圖 1-3-2 陣列的表示方式。
依據使用的程式語言不同,陣列索引的起始值也不同,以陣列 A 為 例,若有5 個陣列元素:
陣列索引起始值 1
(如Scratch)
0
(如C、VB)
陣列元素 A[1] ~ A[5] A[0] ~ A[4]
註 本章陣列皆以起始值「1」為例。
延伸學習 「索引」的起始值
以圖1-3-2 為例,回答下列問題:
1. 汽車格 [5] 所停放的汽車是什麼顏色的?
2. 紅色汽車的停放位置該如何表示?
3. 綠色汽車停放位置的索引值是多少?
手腦並用
3 陣
列
第 章
3-1
3-2
3-1 認識陣列
47
p44-65_ch3.indd 47
p44-65_ch3.indd 47 2020/6/3 上午 11:33:262020/6/3 上午 11:33:26
3 陣列的維度
一 維 陣 列
1 2 3 4
5
▲一整排的路邊停車格
●一 維 陣 列 可 視 為 一 條 直 線,資料的存取都在同一條 線上,就像是一整排路邊停 車格。
左圖中, 表示為:
汽車格 [2]
①
使用1 個索引值就能表示陣列元 素。
若 最 後 一 個 停 車 格 標 示 為 汽車格 [5] :
→停車場有5 個停車格。
→陣列中有5 個陣列元素。
利用一維陣列存放一位同學的 考試成績。
國文 英語 數學
85 78 76
二 維 陣 列
1 2 3
1 2 3 4
5
▲平面停車場
●二維陣列可視為多個一維陣 列組合而成。
●左圖就是 3 排一維停車格 組成的平面停車場。
左圖中, 表示為:
列, 行 汽車格 [ 1 , 2 ]
① ②
要用到2 個索引值才能表示某個 陣列元素。
若 最 後 一 個 停 車 格 標 示 為 汽車格 [3, 5] :
→ 停車場有 3 排停車格,
每排各有5 個停車格。
→ 共有 3×5 = 15 個停車格
(陣列元素)。
利用二維陣列存放整個班級的 考試成績。
國文 英語 數學 1號
2號 24號 25號
三 維 陣 列
6 5 4 3 2 1
1 2 3
1 2 3
4 5
▲立體停車場
●三維陣列可視為多個二維陣 列組合而成。
●左圖就是 6 個平面停車場 組成的立體停車場。
左圖中, 表示為:
樓, 列 , 行 汽車格 [ 6 , 1 , 2 ]
① ② ③
要用到3 個索引值才能表示某個 陣列元素。
若 最 後 一 個 停 車 格 標 示 為 汽車格 [6, 3, 5] :
→ 停車場有 6 層樓,
每層樓有3 排停車格,
每排各有5 個停車格。
→ 共有 6×3×5 = 90 個停 車格(陣列元素)。
利用三維陣列存放整個年級的 考試成績。
2年1班 國文 英語 數學 1號
2號
2年2班 國文 英語 數學 1號
2號
2年3班 國文 英語 數學 1號
2號
…
90 63 72
77 87 88
85 78 76
80 65 91
70 63 82
97 68 79
91 78 87
61 70 96
85 78 76
80 65 91
說 明
圖 例 陣列元素的表示
48
資訊科技篇p44-65_ch3.indd 48
p44-65_ch3.indd 48 2020/6/3 上午 11:33:262020/6/3 上午 11:33:26
3 陣列的維度
一 維 陣 列
1 2 3 4
5
▲一整排的路邊停車格
●一 維 陣 列 可 視 為 一 條 直 線,資料的存取都在同一條 線上,就像是一整排路邊停 車格。
左圖中, 表示為:
汽車格 [2]
①
使用1 個索引值就能表示陣列元 素。
若 最 後 一 個 停 車 格 標 示 為 汽車格 [5] :
→停車場有5 個停車格。
→陣列中有5 個陣列元素。
利用一維陣列存放一位同學的 考試成績。
國文 英語 數學
85 78 76
二 維 陣 列
1 2 3
1 2 3 4
5
▲平面停車場
●二維陣列可視為多個一維陣 列組合而成。
●左圖就是 3 排一維停車格 組成的平面停車場。
左圖中, 表示為:
列, 行 汽車格 [ 1 , 2 ]
① ②
要用到2 個索引值才能表示某個 陣列元素。
若 最 後 一 個 停 車 格 標 示 為 汽車格 [3, 5] :
→ 停車場有 3 排停車格,
每排各有5 個停車格。
→ 共有 3×5 = 15 個停車格
(陣列元素)。
利用二維陣列存放整個班級的 考試成績。
國文 英語 數學 1號
2號 24號 25號
三 維 陣 列
6 5 4 3 2 1
1 2 3
1 2 3
4 5
▲立體停車場
●三維陣列可視為多個二維陣 列組合而成。
●左圖就是 6 個平面停車場 組成的立體停車場。
左圖中, 表示為:
樓, 列 , 行 汽車格 [ 6 , 1 , 2 ]
① ② ③
要用到3 個索引值才能表示某個 陣列元素。
若 最 後 一 個 停 車 格 標 示 為 汽車格 [6, 3, 5] :
→ 停車場有 6 層樓,
每層樓有3 排停車格,
每排各有5 個停車格。
→ 共有 6×3×5 = 90 個停 車格(陣列元素)。
利用三維陣列存放整個年級的 考試成績。
2年1班 國文 英語 數學 1號
2號
2年2班 國文 英語 數學 1號
2號
2年3班 國文 英語 數學 1號
2號
…
90 63 72
77 87 88
85 78 76
80 65 91
70 63 82
97 68 79
91 78 87
61 70 96
85 78 76
80 65 91
陣列大小的計算 常見應用
知識快遞陣列的「維度」是以索引 值的個數來區分的:
一維陣列只有1 個索引值。
二維陣列有2 個索引值。
三維陣列有3 個索引值。
當有 2 個以上的索引值,
則統稱為「多維陣列」。
3 陣
列
第 章
3-1
3-2
3-1 認識陣列
49
p44-65_ch3.indd 49
p44-65_ch3.indd 49 2020/6/3 上午 11:33:272020/6/3 上午 11:33:27
Scratch 清單(陣列)的使用
●變數與陣列
在七年級的課程中,我們學過利用
「變數」來存放資料,可是「一個變數」
只能存放「一筆資料」,當需要存放多 筆資料時,逐一設定變數不僅費時,而 且不易管理。這時候,我們可以使用「陣 列」來存放相同類型的資料。例如:要 存放全班25 位同學的國文成績,使用變 數與陣列的差異如右所示。
●建立 Scratch 清單(陣列)
在 Scratch 中,將陣列稱為「清單」。我們可以依程式需求建立多個清單,並為每個清單 命名。
以建立清單 國文成績 為例:
❶ 點擊 變數類 。
❷ 點擊 建立一個清單 。
❸ 輸入名稱:國文成績。
❹ 點擊 確定 。
❺ 自動出現控制清單的相關積木。
❶
❷
❺
❸
❹
註 Scratch 的清單只具有一維陣列的功能。
使用變數 使用陣列
……
1 號的國文成績 2 號的國文成績
25 號的國文成績
國文成績 [1]
[2]
[25]
▲ 共需要 25 個變數,而 且 每 個 變 數 要 有 一 個 獨立的名稱。
▲ 只需要設定 1 個陣列。
50
資訊科技篇p44-65_ch3.indd 50
p44-65_ch3.indd 50 2020/6/3 上午 11:33:272020/6/3 上午 11:33:27
●將資料放入清單中
利用 可將一筆資料添加到清單最後。
範例程式
01 02 03 04
清單變化
01 02 03 04
註 亦可利用 詢問 積木讓使用者輸入資料,再將答案存 入清單中,如右圖。
●清單的呈現
項目
(陣列索引)
資料
清單名稱(陣列名稱)
清單長度(項目數量、陣列大小)
拖曳此處,可調整舞臺上清單的欄位大小
3 陣
列
第 章
3-1
3-2
3-1 認識陣列
51
p44-65_ch3.indd 51
p44-65_ch3.indd 51 2020/6/3 上午 11:33:282020/6/3 上午 11:33:28
4 陣列的操作
1. 寫入 2. 讀取 3. 刪除 4. 插入
功 能 說 明
功能 我們可以將資料放入指定的位置、更 改陣列元素的內容。
影響 原位置的內容會被取代。
功能 我們可以讀取特定位置的資料。
影響 不影響陣列的內容。
功能 我們可以刪除指定位置的陣列元素。
影響 1. 該位置之後的陣列元素都會往前移動一 個位置。
2. 減少一個陣列元素。
功能 我們可以在指定的位置插入一個新的元素。 影響 1. 該位置之後的陣列元素都會往後移動一
個位置。
2. 增加一個陣列元素。
陣 列 操 作
任務 陣列 A 存放了 15、50、34,共 3 筆資 料。我們要將「22」寫入陣列的第 2 個 元素A[2] 中。
A[1] A[2] A[3]
①A 15 50 34
A[1] A[2] A[3]
②A 15 50 34
A[1] A[2] A[3]
③A 15 22 34
任務 讀取陣列 A 的第 2 個元素 A[2] , 存放到變數 X 中。
A[1] A[2] A[3]
①A 15 22 34
X 原始變數
A[1] A[2] A[3]
②A 15 22 34
讀取內容,存放到變數中 22
X
A[1] A[2] A[3]
③A 15 22 34 22
X 最終結果
任務 刪除陣列的第 2 個元素 A[2] 。
A[1] A[2] A[3]
①A 15 22 34
A[1] A[2] A[3]
②A 15 22 34 刪除
A[1] A[2] A[3]
③A 15 34
往前移動一個位置
A[1] A[2]
④A 15 34
任務 將「50」插入陣列 A[2] 的位置。
A[1] A[2]
①A 15 34
A[1] A[2] A[3]
②A 15 34
往後移動一個位置
A[1] A[2] A[3]
③A 15 34
50 插入
A[1] A[2] A[3]
④A 15 50 34
Scratch 操作
將A[2] 的值改為 22: 讀取A[2] 的資料內容,存放到變數 X 中:
註 若只想單純讀取 A[2] 的資料內容:
刪除 A[2] 的資料內容:
註 若想刪除陣列中的所有陣列元素:
將50 插入到 A[2] 中: 原始陣列
最終結果
22 寫入
原始陣列
最終結果
最終結果
原始陣列 原始陣列
最終結果
52
資訊科技篇p44-65_ch3.indd 52
p44-65_ch3.indd 52 2020/6/3 上午 11:33:282020/6/3 上午 11:33:28
4 陣列的操作
1. 寫入 2. 讀取 3. 刪除 4. 插入
功 能 說 明
功能 我們可以將資料放入指定的位置、更 改陣列元素的內容。
影響 原位置的內容會被取代。
功能 我們可以讀取特定位置的資料。
影響 不影響陣列的內容。
功能 我們可以刪除指定位置的陣列元素。
影響 1. 該位置之後的陣列元素都會往前移動一 個位置。
2. 減少一個陣列元素。
功能 我們可以在指定的位置插入一個新的元素。
影響 1. 該位置之後的陣列元素都會往後移動一 個位置。
2. 增加一個陣列元素。
陣 列 操 作
任務 陣列 A 存放了 15、50、34,共 3 筆資 料。我們要將「22」寫入陣列的第 2 個 元素A[2] 中。
A[1] A[2] A[3]
①A 15 50 34
A[1] A[2] A[3]
②A 15 50 34
A[1] A[2] A[3]
③A 15 22 34
任務 讀取陣列 A 的第 2 個元素 A[2] , 存放到變數 X 中。
A[1] A[2] A[3]
①A 15 22 34
X 原始變數
A[1] A[2] A[3]
②A 15 22 34
讀取內容,存放到變數中 22
X
A[1] A[2] A[3]
③A 15 22 34 22
X 最終結果
任務 刪除陣列的第 2 個元素 A[2] 。
A[1] A[2] A[3]
①A 15 22 34
A[1] A[2] A[3]
②A 15 22 34 刪除
A[1] A[2] A[3]
③A 15 34
往前移動一個位置
A[1] A[2]
④A 15 34
任務 將「50」插入陣列 A[2] 的位置。
A[1] A[2]
①A 15 34
A[1] A[2] A[3]
②A 15 34
往後移動一個位置
A[1] A[2] A[3]
③A 15 34
50 插入
A[1] A[2] A[3]
④A 15 50 34
Scratch 操作
將A[2] 的值改為 22: 讀取A[2] 的資料內容,存放到變數 X 中:
註 若只想單純讀取 A[2] 的資料內容:
刪除 A[2] 的資料內容:
註 若想刪除陣列中的所有陣列元素:
將50 插入到 A[2] 中:
原始陣列
最終結果
22 寫入
原始陣列
最終結果
最終結果
原始陣列 原始陣列
最終結果
3 陣
列
第 章
3-1
3-2
3-1 認識陣列
53
p44-65_ch3.indd 53
p44-65_ch3.indd 53 2020/6/3 上午 11:33:282020/6/3 上午 11:33:28
陣列程式 —成績計算
3-2 3-2
學校段考評量結束,老師想要計算各 小組國文成績的平均分數。
請播放範例影片 成績計算.mp4 ,觀 察程式的執行情形,一起用 Scratch 來完 成任務吧!
【程式摘要】
1. 按下綠旗後,老師詢問小組內每個成員 的分數,並等待使用者輸入。
2. 利用「清單」來存放小組成員的成績。
3. 按下空白鍵後,計算清單中的小組平均分數。
4. 最後說出「平均分數 」。
搭配【逐步解析】說明
題目解析流程
任務說明
檔案 3-2 下載方式請見 P.3
1
設定清單
計算清單內
的分數總和 計算平均
將分數 輸入國文分數 存入清單
開始
結束 計算結果
2 輸入成績
輸出結果 3
54
資訊科技篇p44-65_ch3.indd 54
p44-65_ch3.indd 54 2020/6/3 上午 11:33:292020/6/3 上午 11:33:29
在這一節中,我們將學習如何利用 變數類 的「清 單」來存放資料(表 1-3-1),並學習應用變數的特 性來依序讀取清單的資料以進行運算。
學習目標 1. 設定清單。
2. 依序讀取清單中的資料。
表1-3-1 首次使用的積木
積木類型 外觀 功能
變數類
自行定義一個新的清單。
新增一筆資料到清單的最後面。
清空清單內的所有內容。
讀取清單中的特定項目。
插入一筆資料到清單的指定位置。
1
詢問 國文分數
2
將分數 存入清單
3
重複4 次
1
詢問 國文分數
設定詢問:
以 來詢問「國文分數幾分?」
並等待使用者輸入分數。
問題思考
解題分析
撰寫程式以紀錄小組內每個成員的國文分數:
1. 每組有 4 位同學。
2. 老師詢問「國文分數幾分?」讓使用者輸入分數。
3. 使用者輸入分數後,將分數存入清單中。
建立清單、輸入成績 使用檔案3-2-1.sb3
逐步解析 1 1
國文分數幾分?
3 陣
列
第 章
3-1
3-23-2 陣列程式──成績計算
55
p44-65_ch3.indd 55
p44-65_ch3.indd 55 2020/6/3 上午 11:33:292020/6/3 上午 11:33:29
2
將分數 存入清單
(1) 設定清單:
建立1 個清單,以儲存 4 位同學的國文分數。
(建立清單的方法,請見P.50。)
(2) 將每次輸入的國文分數放入清單 國文 :
3
重複4 次
利用 讓程式重複執行。
想一想,當重複執行程式時,下方這兩組程式的執行結果有什麼不同?
*
手腦並用
【參考程式】
01 02 03 04 05
3
2 1 -- 初始設定
撰寫程式時應養成習慣,當我們 使用到以下功能指令,就同時進行相 關初始設定,避免遺漏而造成錯誤:
1. 變數:初始值
2. 清單:清空或初始值
3. 角色:定位、面向、顯示或隱藏 4. 畫筆:清除筆跡、設定顏色、寬度
56
資訊科技篇p44-65_ch3.indd 56
p44-65_ch3.indd 56 2020/6/3 上午 11:33:302020/6/3 上午 11:33:30
1
詢問第[ 幾 ] 位 同學的分數
2
將分數存入清 單[ 項次 ] 中
1
詢問 第[ 幾 ] 位 同學的分數
(1) 概念說明:
目標 老師提問的內容,要依「第 1 位」、「第 2 位」…而改變。
方法 提問中的「數字」可使用「變數」來呈現,與文字組合出不同的問句。
變數
詢問:第 n 位同學的國文分數幾分?
→變數n 的起始值為 0。
→每一輪執行前,變數的值要+1。
第1 輪
第1 位同 學的國文 分數幾 分?
變數 n 1
第2 輪
第2 位同 學的國文 分數幾 分?
變數 n 2
第3 輪
第3 位同 學的國文 分數幾 分?
變數 n 3
第4 輪
第4 位同 學的國文 分數幾 分?
變數 n 4
問題思考
解題分析
Q1、Q2 裡都有一個數字會隨著重複執行的 次數而改變,要怎麼處理?想一想,和七下 遊樂園探險的「倒數計時」程式有什麼類似 的地方?
接續【逐步解析 1】修改程式,老師改為 依序詢問「第 [ 幾 ] 位同學國文分數幾分?」
並將分數存入清單的指定位置中,其程式執 行情形為:
1. 詢問「第 1 位同學國文分數幾分?」
→分數存入 國文 [1]
2. 詢問「第 2 位同學國文分數幾分?」
→分數存入 國文 [2]
3. 依此類推,處理 4 位同學的分數。
利用變數將資料存入清單
逐步解析 2 2
第1 位同學國文分數幾分?
3 陣
列
第 章
3-1
3-23-2 陣列程式──成績計算
57
p44-65_ch3.indd 57
p44-65_ch3.indd 57 2020/6/3 上午 11:33:302020/6/3 上午 11:33:30
(2) 程式說明:
① 設定變數
② 控制數字的變化:
③ 詢問「第 n 位同學國文分數幾分?」
2
將分數存入 清單[項次]
中
(1) 將資料放入清單的指定位置:
使用 變數類 的
(2) 將輸入的成績放入清單 國文 的第 n 項:
接續【逐步解析 2】增加程式功能,當使用者按下空白鍵時,程式要計算 小組的平均分數,並說出計算結果「平均分數 」。
讀取清單、計算平均
逐步解析 3 3
1
按下空白 鍵觸發
2
計算平均
3
說出 平均分數
問題思考
【參考程式】(*代表本次新增或修改的程式)
01 02
*03 04
*05
*06
*07
初始設定
1 2
1
58
資訊科技篇p44-65_ch3.indd 58
p44-65_ch3.indd 58 2020/6/3 上午 11:33:312020/6/3 上午 11:33:31
1
按下空白 鍵觸發
2
計算平均
按下空白鍵開始執行程式:
(1) 平均=總和/人數
(2) 計算總和:清單中的資料加總。
① 概念說明:
問題 一次只能讀取一筆資料,如何加總所有的資料?
方法 利用變數 n 作為項目索引,依序讀取資料,加到變數 總和 中。
總和= 總和 + 清單[n]
第1 輪
清單 [1]
[2]
[3]
[4]
變數 n 1
將清單[1]
加到總和 裡
第2 輪
清單 [1]
[2]
[3]
[4]
變數 n 2
將清單[2]
加到總和 裡
第3 輪
清單 [1]
[2]
[3]
[4]
變數 n 3
將清單[3]
加到總和 裡
第4 輪
清單 [1]
[2]
[3]
[4]
總和 +清單[4]
總和 +清單[3]
總和 +清單[2]
總和 +清單[1]
變數 n 4
將清單[4]
加到總和 裡
=清單[1]+清單[4]
+ 清單[2]
+ 清單[3]
=清單[1]+清單[3]
+ 清單[2]
=清單[1]+清單[2]
= 0 +清單[1]
② 程式說明:變數的使用。
→利用變數 n 讀取清單內的資料:
→將清單內的分數加到變數 總和 中。
解題分析 3 陣
列
第 章
3-1
3-23-2 陣列程式──成績計算
59
p44-65_ch3.indd 59
p44-65_ch3.indd 59 2020/6/3 上午 11:33:312020/6/3 上午 11:33:31
若變數 n 與 總和 的起始值均為 0,請依據下圖程式與清單,填寫數據 變化情形:
第n 次執行時,變數 總和 = 總和 + 國文 [n] =計算結果 第1 次執行時,變數 總和 = 0 + 98 = 98 第2 次執行時,變數 總和 = + =
第3 次執行時,變數 總和 = + = 第4 次執行時,變數 總和 = + = (3) 計算平均:
註 因本題的資料很明確的只有 4 筆,所以可以直接除以 4,在其他情形下可
使用 來讀取清單的長度。
3
說出 平均分數
(1) 說出「平均分數 」。
(2) +
【參考程式】(*代表本次新增或修改的程式)
*01
*02
*03
*04
*05
*06
*07
*08
*09
1
3
2
初始設定
60
資訊科技篇p44-65_ch3.indd 60
p44-65_ch3.indd 60 2020/6/3 上午 11:33:322020/6/3 上午 11:33:32
為促進買氣,商店祭出優惠活動,本月奇數 日消費可獲得現金回饋 1%,偶數日回饋 5%。
例
① 若在本月 5 日消費 100 元
→可獲得 100×0.01 = 1 元的回饋金 ② 若在本月 10 日消費 100 元
→可獲得 100×0.05 = 5 元的回饋金
小橙將這個月在商店中的消費金額依日期記錄在清單中,請以檔案 3-2 小試 身手 . sb 3 來撰寫程式,協助小橙計算共可獲得多少回饋金。
日期 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 金額 0 0 50 80 20 0 50 0 10 30 90 10 0 40 30 日期 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 金額 50 0 40 30 0 70 10 60 0 0 60 50 0 10 30
註
程式中已建立以上資料,你也可以先用試算表軟體算算看,檢驗自己寫的程式 是否正確。
1. 讀取清單中的資料。
2. 計算並說出「共可獲得回饋金 」。
檔案 3-2 小試身手 下載方式請見 P.3
回饋金算算看
小試身手 3 陣
列
第 章
3-1
3-23-2 陣列程式──成績計算
61
p44-65_ch3.indd 61
p44-65_ch3.indd 61 2020/6/3 上午 11:33:322020/6/3 上午 11:33:32
第 3章 學習重點
3-1 認識陣列
1. 陣列是電腦在處理資料時,用來存放資料的空間。
2. 以下圖中的陣列 汽車格 為例,有 5 個陣列元素,可以存放 5 臺汽車,汽車格 [4] 存放 黃色汽車。
存放的資料
汽車格[2] 汽車格[3] 汽車格[4] 汽車格[5]
陣 列 元 素
陣 列 名 稱 汽車格 汽車格 汽車格 汽車格 汽車格
陣 列 索 引
1 2 3 4 5
汽車格[1]
3. 陣列索引的起始值會依選用的程式語言而有所不同,Scratch 中是以「1」為起始值。
4. 陣列的「維度」是以索引值的個數來區分,可分為一維陣列、二維陣列、三維陣列等。
1 2 3 4
5
在一維陣列中:
表示為 汽車格[2] 。
1 2 3
1 2 3 4
5
在二維陣列中:
表示為 汽車格[1, 2] 。
6 5 4 3 2 1
1 2 3
1 2 3 4
5
在三維陣列中:
表示為 汽車格[6, 1, 2] 。 5. Scratch 中以「清單」來表示「一維陣列」。
6. 我們可以對陣列中的資料進行寫入、讀取、刪除、插入:
●寫入:將資料放入指定的位置、更改陣列元素的內容。(原內容會被取代)
●讀取:將資料讀取出來。(不影響陣列的內容)
●刪除:刪除指定的陣列元素。(其後面所有的陣列元素都會往前移動一個位置)
●插入: 在指定的位置插入一個新的元素。(原來的陣列元素後方所有元素都要往後移 動一個位置)
62
資訊科技篇p44-65_ch3.indd 62
p44-65_ch3.indd 62 2020/6/3 上午 11:33:322020/6/3 上午 11:33:32
3-2 陣列程式—成績計算 任務要求
1. 使用檔案 3-2-1.sb3 。
2. 按下綠旗後,老師詢問小組內每個成員的分數,並等 待使用者輸入。
3. 利用「清單」來存放小組成員的成績。
4. 按下空白鍵後,計算清單中的小組平均分數。
5. 最後說出「平均分數 」。
問題思考
Q1. 如何設定詢問,讓使用者輸入小組成員的國文分數?
Q2. 如何設定清單來儲存分數?
Q3. 如何重複讀取清單內的資料並計算平均分數?
解題分析
Q1. 設定詢問: 偵測類 的 。
Q2. 將資料存入清單: 。
Q3. 讀取清單內的資料並計算:
(1) 利用重複結構與變數,來讀取清單的項目內容。
→讓變數 n 依序讀取資料 清單 [n] 。
(2) 清單內的分數總和=上一次的加總+目前讀取位置的項目。
→ 總和 = 總和 + 清單 [n]
(3) 平均=清單內的分數總和/清單長度。
3 陣
列
第 章
第3章 陣列
63
p44-65_ch3.indd 63
p44-65_ch3.indd 63 2020/6/3 上午 11:33:332020/6/3 上午 11:33:33
科技廣角
生活中的陣列
自動販賣機
早期的自動販賣機發展相當緩慢,
世界上最早的自動販賣機由希臘的數學 家希羅製造,放置於希臘神廟中販售聖 水;西元 1700 年,一家英國酒館設立香 菸自動販賣機;直到 20 世紀初,自動販 賣機仍然僅用於香菸與郵票的販賣。
在第二次世界大戰之後,日本的飲 料商為了擴大銷售管道,主動承擔販賣 機的成本、電費、維修費,才促進了販 賣機的發展。現今的自動販賣機商品相 當多元,除了飲料之外,水果、熱食、
鮮花、玩具、書本等各式各樣的產品都 能販售。
自動販賣機是能與使用者交易的全 自動機器,機器中販售的商品畫面是以 二維陣列的樣式呈現,例如下圖中的橘 子汽水,在第 2 列、第 7 行的位置。
雨傘販賣機 1 2 3 4 5 6 7 8
1
2
3
4
5
香蕉販賣機 熱食販賣機
歷史與發展
64
資訊科技篇p44-65_ch3.indd 64
p44-65_ch3.indd 64 2020/6/3 上午 11:33:342020/6/3 上午 11:33:34
鮮花販賣機
500 多萬臺自動販賣機,
平 均 每 23 人 就 有 1 臺, 密 度 是 全 球 之 冠,因此自動販賣機 也成為急救、災害支 援的最佳幫手。
以「災害對應型 自動販賣機」為例,
平時顯示商品廣告或
即時新聞資訊,發生緊急災害時,會顯示相關的災害情報,甚至可以透過遠距操 作,搖身一變成為救援物資補給站。西元 2011 年的東日本大震災,災害對應型 自動販賣機就將超過 8.8 萬樣商品切換為免費模式,提供民眾應急取用。
日本街頭的自動販賣機。
電池販賣機
第3章 科技廣角
65
p44-65_ch3.indd 65
p44-65_ch3.indd 65 2020/6/3 上午 11:33:362020/6/3 上午 11:33:36