• 沒有找到結果。

陣列 3

N/A
N/A
Protected

Academic year: 2022

Share "陣列 3"

Copied!
22
0
0

加載中.... (立即查看全文)

全文

(1)

本章概念

陣列

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

(2)

理,可以快速找到需要的物品。

  在電腦中也存在著這樣的空間,方便我們存放、提取資料,稱之為

「陣列」。

45

p44-65_ch3.indd 45

p44-65_ch3.indd 45 2020/6/3 上午 11:33:242020/6/3 上午 11:33:24

(3)

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

(4)

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

(5)

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

(6)

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

(7)

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

(8)

將資料放入清單中

利用 可將一筆資料添加到清單最後。

範例程式

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

(9)

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

(10)

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

(11)

陣列程式 —成績計算

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

(12)

在這一節中,我們將學習如何利用 變數類 的「清 單」來存放資料(表 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-2

3-2 陣列程式──成績計算

55

p44-65_ch3.indd 55

p44-65_ch3.indd 55 2020/6/3 上午 11:33:292020/6/3 上午 11:33:29

(13)

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

(14)

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-2

3-2 陣列程式──成績計算

57

p44-65_ch3.indd 57

p44-65_ch3.indd 57 2020/6/3 上午 11:33:302020/6/3 上午 11:33:30

(15)

(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

(16)

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-2

3-2 陣列程式──成績計算

59

p44-65_ch3.indd 59

p44-65_ch3.indd 59 2020/6/3 上午 11:33:312020/6/3 上午 11:33:31

(17)

若變數 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

(18)

  為促進買氣,商店祭出優惠活動,本月奇數 日消費可獲得現金回饋 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-2

3-2 陣列程式──成績計算

61

p44-65_ch3.indd 61

p44-65_ch3.indd 61 2020/6/3 上午 11:33:322020/6/3 上午 11:33:32

(19)

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

(20)

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

(21)

科技廣角

生活中的陣列

自動販賣機

早期的自動販賣機發展相當緩慢,

世界上最早的自動販賣機由希臘的數學 家希羅製造,放置於希臘神廟中販售聖 水;西元 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

(22)

鮮花販賣機

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

參考文獻

相關文件

對於給定的一個 x 值,經過某一對應方式後得到「唯一」的 y 值,這種對應方式我們稱 為函數,其中 x 是自變數,y 是應變數。. 而在表

審查整理呈現資料:蒐集到的資料應先審核 是否完整、正確、合理與一致,然後利用敘

利用一些基本的 linear transfor- mations 的變化情形, 我們學習了如何將一個較複雜的 linear transformation 拆解成一些較 容易掌握的 linear

sort 函式可將一組資料排序成遞增 (ascending order) 或 遞減順序 (descending order)。. 如果這組資料是一個行或列向量,整組資料會進行排序。

觀念學習一 速率公式的變化 對應能力指標. 6-n-08

整數數量乘以分數, 理解為將整數(例如: 9個) 數量按分母(例如: 3)均分, 並按分子(例如: 1) 取多少份,

▸ 學校在收集學生的個人資料前,必須徵得學生的同意,並向所

進行 18 以內的加法和減法口算 學生須透過口算解主要以圖像闡述的應用 題,並以橫式作記錄。.. 加法和減法的直式在學習單位 1N4