程式編寫:讓你的想法成真!

各位同學!歡迎來到刺激有趣的程式編寫世界。你曾否好奇過你最愛的手機遊戲、應用程式或網站是如何製作的?一切都從這裡開始!在本章中,我們將學習程式設計師用來編寫電腦指令的基本構成要素。你可以把它想像成學習一門新語言的語法——電腦的語言。

就算你從未接觸過程式編寫,也別擔心。我們會將所有內容分解成簡單易懂的步驟。到本章結束時,你將會明白如何像個程式設計師一樣思考,並透過編寫自己的簡單程式來解決問題。我們開始吧!


1. 構成要素:儲存資訊

在程式能夠做任何酷炫的事情之前,它需要一種方法來記住東西。就像你用大腦記住朋友的生日或購物清單一樣,程式使用特殊的容器來儲存資訊。

變數:貼標籤的盒子

變數就像一個貼有標籤的盒子,你可以在裡面儲存一項資訊。你可以隨時更改盒子裡的東西。標籤(變數的名稱)能幫助你稍後找到正確的盒子。

範例:我們可以建立一個名為 score 的變數,並將數字 100 存入其中。
score = 100
稍後,玩家可能會失去分數,所以我們可以更改數值:
score = 90

常數:不可更改的盒子

常數就像一個變數,但一旦你將東西存入其中,就無法更改了。它就像一個被密封起來的盒子!這對於程式中不應更改的數值非常有用。

範例:圓周率(Pi)的值總是相同的。我們可以將它儲存在一個常數中。
PI = 3.14159
使用像 PI 這樣的常數,能讓你的程式碼更易讀,並防止你意外更改重要數值。

列表(一維陣列):有序的集合

如果你需要儲存一整串項目,例如班上所有學生的分數,該怎麼辦?每個項目都用一個變數會很麻煩!取而代之的是,我們使用一個列表(也稱為一維陣列)。

你可以把列表想像成一個雞蛋盒或藥物整理盒——一個單一的容器,裡面有許多有編號的隔間。每個隔間可以存放一個項目,你可以使用其位置編號(稱為索引)來存取它。

範例:一個高分列表。
highScores = [550, 521, 498, 450]
要取得第一個分數,我們使用它的索引。(注意:在許多程式語言中,第一個索引是 0!)
OUTPUT highScores[0] (這會顯示 550)

重點總結

變數儲存可以更改的資訊。
常數儲存永不更改的資訊。
列表(陣列)以有序序列儲存相關項目的集合。


2. 讓事情發生:陳述式和運算子

既然我們知道如何儲存資訊,接下來讓我們學習如何處理它。我們透過使用陳述式和運算子來完成這件事。

賦值陳述式:給變數賦予數值

這個我們已經見過了!賦值陳述式使用等號(=)將數值存入變數。

age = 17
最重要的一點是,這裡的 = 意思是「將右邊的數值賦予給左邊的變數」。這並不代表它們在數學上相等。

常見錯誤警示!不要混淆賦值運算子(=)與判斷「是否等於?」的關係運算子(通常是 ==)。它們的功能非常不同!

輸入和輸出陳述式

程式需要與使用者溝通。

  • 輸入:一個輸入陳述式從使用者獲取資料並儲存到變數中。這就像程式正在提問。

    範例:INPUT userName(程式會等待使用者輸入其姓名)。
  • 輸出:一個輸出陳述式在螢幕上顯示資訊。這就像程式正在說話。

    範例:OUTPUT "Hello, " + userName(如果使用者輸入了「Mary」,這將顯示「Hello, Mary」)。
運算子:執行工作的工具

運算子是執行計算或比較的特殊符號。

1. 算術運算子:這些是用於數學運算的!

  • + (加法)

  • - (減法)

  • * (乘法)

  • / (除法)

  • MOD (模數運算):這個很特別!它會給你除法的餘數。例如,10 MOD 3 是 1(因為 10 除以 3 等於 3 餘 1)。想像一下 12 小時制時鐘:14 點就是 2 點(14 MOD 12 = 2)。

2. 關係運算子:這些比較兩個數值並給出真/假答案。

  • == (是否等於?)

  • != (是否不等於?)

  • > (是否大於?)

  • < (是否小於?)

  • >= (是否大於或等於?)

  • <= (是否小於或等於?)

範例:如果變數 age 的值是 18,則 age > 17 會是;如果是 16,則為

3. 布林(邏輯)運算子:這些組合真/假數值。

  • AND:只有當兩邊都為真時才為真。(你必須有票並且準時才能入場。)

  • OR:只要至少一邊為真就為真。(付款時,你可以使用信用卡或者現金。)

  • NOT:翻轉數值。NOT True 會變成 False。(門沒有上鎖。)

表達式

表達式是數值、變數和運算子的任何組合,電腦可以評估以產生單一數值。
範例:5 + 10(評估結果為 15)或 price * 1.1score > 50 AND level == 3

重點總結

我們使用賦值陳述式=)來儲存數值。我們使用輸入/輸出來與使用者溝通。我們使用運算子(算術、關係、布林)在表達式中處理和比較資料。


3. 程式編寫的三大超能力:控制結構

一個程式不只是一系列指令。為了解決實際問題,我們需要控制指令執行的順序。有三種主要方式來控制這個流程。

記憶輔助:S.S.I. 記住這三種超能力——順序(Sequence)、選擇(Selection)、迭代(Iteration)!

順序:預設路徑

這是最簡單的控制結構。順序意味著電腦按照你編寫的順序,從上到下,一個接一個地執行你的指令。這就像一步步跟著食譜做菜。

選擇:做出選擇(IF...THEN...ELSE)

選擇允許你的程式做出決策。它檢查某個條件是真還是假,並根據結果執行不同的程式碼區塊。你可以把它想像成一個岔路。

最常見的選擇陳述式是 IF...THEN...ELSE

簡單範例:檢查學生是否及格。
IF score >= 50 THEN
    OUTPUT "恭喜你,你及格了!"
ELSE
    OUTPUT "下次會更好。"
END IF

你也可以將它們串聯起來處理多個條件(這稱為多重選擇)。

迭代:重複執行(迴圈)

迭代意味著重複執行一段程式碼多次。這也稱為迴圈。對於節省時間和避免重複的程式碼非常有用。

重要提示:在你的課程大綱中,你只需要理解基本迴圈。巢狀迴圈(迴圈中的迴圈)則不作要求

迴圈主要有兩種:

  • For 迴圈:當你確切知道你想重複某件事多少次時使用。

    範例:說三次「Hello」。
    FOR count FROM 1 to 3
        OUTPUT "Hello!"
    END FOR
  • While 迴圈:當你想要只要某個條件為真就重複執行時使用。你可能不知道需要重複多少次。

    範例:不斷要求輸入密碼,直到輸入正確的密碼為止。
    INPUT password
    WHILE password != "secret123"
        OUTPUT "密碼錯誤。請再試一次。"
        INPUT password
    END WHILE
    OUTPUT "存取權限已授予!"
快速複習

順序:依序執行。
選擇(IF):做出選擇。
迭代(迴圈):重複執行。


4. 讓我們解決一個問題:尋找平均分數

讓我們將學到的知識融會貫通,來解決課程大綱中的一個實際問題:在列表中找到平均值。

問題來了:我們有一個學生分數列表:[80, 95, 72, 88, 91]。我們需要編寫一個程式來計算並顯示平均分數。

步驟 1:計劃(演算法)

在我們編寫任何程式碼之前,讓我們先用簡單的英文思考一下步驟。你會怎樣計算平均值呢?

  1. 首先,你需要加總所有分數。我們需要一個變數來追蹤總和,從 0 開始。
  2. 然後,你需要逐一檢查分數列表。
  3. 對於每個分數,將其加到你的累計總和中。
  4. 一旦你加總了所有分數,你需要知道總共有多少個分數。
  5. 最後,將總和除以分數的數量。這就是平均值!
  6. 顯示結果。
步驟 2:程式碼(虛擬碼)

現在讓我們將我們的計劃轉換為虛擬碼,這是一種簡化、類似程式碼的語言。

// 1. 設定我們的變數
scores = [80, 95, 72, 88, 91] // 這是我們的列表
total = 0 // 用於儲存總和的變數,從 0 開始
numberOfScores = 5 // 我們有 5 個分數
average = 0 // 用於最終答案的變數

// 2. 使用迴圈(迭代)加總所有分數
FOR EACH score IN scores
    total = total + score // 將當前分數加到我們的總和中
END FOR

// 3. 計算平均值
average = total / numberOfScores

// 4. 顯示結果
OUTPUT "平均分數是: " + average

這個簡單的程式使用了列表、數個變數算術運算子(`+`、`/`)、一個賦值陳述式(`=`)、一個迭代(`FOR` 迴圈)以及一個輸出陳述式。你剛剛親眼看到了程式開發的所有核心概念!

你知道嗎?第一個電腦「錯誤 (bug)」真的是一隻昆蟲!1947 年,工程師們發現一隻飛蛾卡在哈佛 Mark II 電腦的一個繼電器中,導致其故障。他們將這隻飛蛾黏在他們的日誌上,並寫下「發現錯誤 (bug) 的第一個實際案例」。從那時起,這個詞就被用來指代程式錯誤了!