第九次:結構化程式設計(1)


程式設計基本觀念1-資料型態(Data Type)及變數(Variable)

“真正重要的不是學習哪種程式語言,而是建立程式設計基本觀念”

資料的儲存與處理

在處理資料之前,要先把資料儲存起來,在處理之後,也要有地方放置,那麼資料的儲存有哪些知識是需要知道的呢? 假設我們要處理的是生活中的資料,那該如何對待這些資料呢?

生活週遭的資料形形色色,簡單的包括如溫度、濕度、身高、體重、考試的各科成績等等,我們經常會有興趣想要拿來做些計算,然後找出其中重要的資訊。

舉個例子說,如果有一個裝置可以幫我們記錄一天之中每小時的溫度及濕度,在記錄了一天之後,就可以拿來計算一天中的平均溫濕度是多少,也可以計算溫濕度的中位數以及一天中的最溫度和濕度為何。如果在記錄的時候,除了溫濕度之外也同時記錄當時的時間,那麼就可以順便得知,一天中什麼時候最高溫,什麼時候溫度最低。

如果只是統計一天的溫濕度還算是容易,用人眼來看也可以,但是隨著時間的累積,記錄下來的資料愈來愈多,這時透過電腦的輔助,才能夠可快地,且自動地協助我們整理這些資訊,甚至幫我們畫出統計圖表。

資料來源:https://nkust.gitbook.io/csx/liao-de-cun

資料型態(Data Type)

教學影片1

程式在執行的過程中,需要運算許多的資料,也需要儲存許多的資料資料是儲存在記憶體空間中,由於資料的型態各不相同,在儲存時所需要的容量不一,不同的資料必須要配給不同的空間大小來儲存,因而有了資料型態(Data type)的規範

如上面所說明的,不同的資料有不同的型式,例如溫度和濕度,一定是數值,而且通常都帶有小數點,身高及體重也是。但如果是座號的話,大部份都是數字,鐵定不能有小數點,沒有人會這麼麻煩自己。如果是學號的話,有些是有英文字母,有些學校的學號則沒有。以下是生活中常見的例子:

溫度->帶有小數的數值,有正有負

身高->帶有小數的數值,一定是正值

各科成續->帶有小數的數值,一定是正值

座號->正整數

學號->字元的組合(我們通常把它叫做字串)

姓名->字串

文章內容->字串

日期->特定格式的字串

故資料型態主要區分為

說明:字串,將一個個字元串起來,變為一串文字的意思

字串與雞肉串關係圖

(4)布林類型:通常用來判斷條件是否成立,只有真(true)和假(false)兩個值。因所要判斷的條件,要麼條件成立真(true),要麼條件不成立(false),沒有第三種結果。

就是真假值,True 與 False,或是 1 與 0,1 代表 True,0 代表 False。布林﹝Boole﹞是一位英國數學家,他想要發明一種代數系統,可以用來演算傳統的二值邏輯,就是只有 True 或 False 兩種可能性的邏輯,最後他發明了一種只有 1 與 0 兩種值的代數系統,稱為布林代數,所以 True 與 False 就被稱為布林值

小結:

在面對複雜且大量的資料時,資料型態的選擇是非常重要的,好在我們並不會面對此種情形,因此,在接下來的程式中,基本上會面對的資料,只要簡單地把它區分為「數值型式」和「字串型式」就可以了。

scratch資料型態(類型)

範例說明

Scratch中常見的"資料類型" 有整數、浮點數、字符串、布林類型這幾種,我們依次來認識一下。

(1)整數:一個不包含小數點的數值,可以是正數(10)也可以是負數(-10)

(2)浮點數:也叫做小數,包含小數點(10.23)

(3)字串(字符串):就是"一串字符",可以是數字、字母、中文、符號、空格等。比如“Hello World!”是一個字串,“你好” 也是一個字串。

Scratch資料類型自動轉換


變數(Variable)

A.【變數】的涵義

教學影片2

(1)像是2020選舉總統中的X先生跟Y小姐。X先生跟Y小姐到底是誰?隨便你設定代入!X=?Y=?

(2)數學中,也有假設變數這方法,如假設X=7,Y=3,Z=X+Y,那Z是多少?另外,【常數】是指一個數值不變的常量,像圓周率。


(3)遊戲中,常要紀錄【分數或得分】、還剩多少【時間】【生命值】?這些數都是會變動的,所以【得分】、【時間】、【生命值】都是變數。



(4)程式語言中,它們允許你宣告(設定)變數。變數就是為了方便在程式中調用記憶體中的值而改的名字

解釋

什麼是宣告?什麼是記憶體中的值? 當我們說要宣告一個變數時,其實就是告知電腦說,我現在要創造一個東西,這個東西是用來儲存某些資料類型的資料。

範例1

你現在到超市買一個「食物盒」,並為盒子貼上一個標籤--「食物盒」標籤,那盒子裡裝的就是食物。

變數-食物盒

變數名稱-食物盒標籤

變數內容(值)-食物盒的內容

B.為何要使用變數儲存資料?

老師解說:

資料在程式中一定要有位置可以放,之後運算的時候才有可以提取使用的對象。資料被放在程式中是以「變數」的方式來放置。每一個變數都要有一個名字,給定了名字之後,才好進行操作。例如,用來儲存國文成績的變數可以把它命令為「chiscore」或直接叫做「chi」。依此類推,假設我們要計算某一同學段考國英數三科成績的總分和平均,該同學的國文`、英文、數學三科成績分別是80, 60, 40,如果用按計算機的方式的話會如下:

80 + 60 + 40 => 180
180 / 3 => 60

如果要再計算下一個同學的話,那麼就要把所有的數字再按一遍。如果不幸的是,要計算的平均數是有加權的情形,那就更麻煩了,如下:

80 * 8 + 60 * 2 + 40 * 10 => 1160
1160 / 20 => 58

萬一你的計算機不支援先乘除後加減的運算,就還要個別先算出每一科的加權,再加總得到結果,最後再拿來除以20。但是,如果你是用變數來接收這些數字的話,就只要輸入數字,其它的部份由程式幫你算,並直接在你輸入完所有的數字之後隨即顯示出結果。

使用Scratch編寫如下所示的積木來計算:

 

資料來源:https://nkust.gitbook.io/csx/liao-de-cun

C.變數的作用

教學影片3

【盒子能拿來作麼用~製作蛋糕用】

【記憶體能拿來做什麼用~把數字放進去執行運算】

在剛才的範例,我們使用了攪拌器、紙盒,把草莓跟巧克力製作成草莓巧克力蛋糕;現在,我們要用一樣的方式來理解1+2=3在電腦中的運算流程

1.在記憶體1放進一個數字1。

2.在記憶體2放進一個數字2。

3.把記憶體1的數字放進CPU裡。

4.把記憶體2的數字放進CPU裡。

5.在CPU裡把1跟2相加。

6.相加後的結果放進記憶體3。

變數、數值、記憶體與CPU之間的關係

理解它們之間的關係後.你才知道寫這行程式的意義及電腦是如何運算的

D.變數如何儲存資料-賦值運算符

教學影片4

基本的賦值運算符是「=」。一開始可能會以為它是「等於」,其實不是的。它實際上意味著把右邊表達式的值賦給左邊的運算數。

範例

變數像是個有名字的盒子.並能裝下值

spam=15

 

spam=15

spam=3

spam變數中的值15被3複寫過去(會變的數)

思考問題

i=5

i=i+1

i=?

 

E.變數(Variable)的錯誤

設定一個變數名稱,但沒有賦予其任何的值呢?

>>> c
Traceback (most recent call last):
File “<pyshell#13>”, line 1, in <module>
c
NameError: name ‘c’ is not defined


Python就會彈出來告訴你錯了錯了,變數名稱 “c” 未被定義。因為這個名稱沒有被賦予值,所以是無法被調用的。就像是你要去買東西卻發現…

F.如何命名變數(Variable)

變數名稱只能包括以下字元:

1.小寫字母(a~z)

2.大寫字母(A~Z)

3.數字(0∼9)

4.底線(_)

另外,變數名稱是不能以數字為開首,如「1002s」。
以下是一些合法的命名:

1.x

2.x_b

3.a33

4._flower

資料參考:https://medium.com/@ChunYeung/%E7%B5%A6%E8%87%AA%E5%AD%B8%E8%80%85%E7%9A%84python%E6%95%99%E5%AD%B8-4-%E8%AE%8A%E6%95%B8%E7%AF%87ep1-9ac8164aac75

建議:養成程式設計的好習慣-有意義的變數名稱

盒子(變數)取一個合適的名字,中文名或英文名都可以,建議變數名稱不要亂取,就取這個變數所代表的涵義,如上面所說的【得分】、【時間】或【生命值】,而不要取123、aaa、abc…這無意義的名稱。

G.變數的作用及重要性

為什麼變數如此地重要?因為奠定現代電腦的基石馮紐曼(Von Neumann)架構就是以載入-->儲存-->計算-->輸出作為程式執行的基本原則,而儲存的地方就是記憶體,要存取記憶體的特定位置,在高階程式語言中就是以變數來指定。


實作1:Scratch變數練習-貓咪數數字

那麼,在Scratch中的變數呢?有一個變數類別的積木群可以使用:

建立一個變數等於是讓系統幫你到電腦的記憶體中預定出一塊空間給你,你可以給這個空間一個名字,方便用來說明在這裡面要放什麼東西。在預設的情況下,Scratch已經幫我們建立了一個叫做「my variable」的變數可以直接拿來使用。

現在,假設我們想要讓貓咪可以數個數字,例如從1數到10,那麼我們先建立一個變數叫做counter,如下所示:


建立完成之後,會在變數積木區看到如下所示的改變:


其實也會在舞台上看到這個變數的內容:


範例:

作業:小貓念詩

題目:利用Scratch讓小貓依序讀出李白玉階怨的詩

李白
玉階怨
玉階生白露
夜久侵羅襪
卻下水晶簾
玲瓏望秋月

提示:建立4個變數放4句詩.然後讓腳色依序說出變數的內容


作業上傳到雲端

1.點自己班的連結.輸入各班密碼

0714

0715

0716

0717

0718

2.點自己的座號資料夾

3.點上傳

4.選桌面你的作業107****-1.sb2

5.檢查是否上傳成功