歡迎來到進階編程技巧!
在之前的章節中,你已經學會了基礎知識:如何讓電腦執行指令、使用迴圈,以及進行判斷。現在,我們要升級了!這一章將介紹編程中的「強力工具」。這些技巧將幫助你編寫能夠處理大量數據、利用檔案記憶資訊,並且在程式變得龐大且複雜時,依然能保持井井有條的程式。
如果一開始覺得有些困難,別擔心! 編程是一項需要練習的技能。把這些技巧想像成學開車——剛開始時,有太多的按鈕和倒後鏡要留意,但很快你就會熟能生巧,成為本能。
1. 字串操作 (String Manipulation)
在電腦科學中,字串 (String) 僅僅是一串字符(字母、數字或符號)。字串操作是用來形容「改變或拼接文字片段」的華麗說法。
串接 (Concatenation)
這是指將兩個或多個字串連接在一起,以創建一個新的字串。想像它就像拼裝樂高積木一樣。
例子:「Computer」+「Science」會變成「ComputerScience」。
切片 (Slicing)
切片是指將字串中特定的部分「切割」出來。你需要告訴電腦從哪個位置開始,到哪個位置結束。
例子:如果你從字串「Chocolate」中切出一片,你可能只想得到「Choc」。
快速回顧: 想像字串就像一條珠子項鍊。串接是在末端加上更多的珠子。切片是從中間剪下一段珠子。
重點總結: 字串不僅僅是靜態的文字;我們可以將它們黏合在一起或進行裁剪,以獲得我們確切需要的內容。
2. 檔案處理 (File Handling)
到目前為止,你的程式可能在關閉後就「忘記」了一切。檔案處理允許你的程式將數據儲存到永久檔案(如 .txt 檔案)中,以便稍後可以重新載入。
你必須始終按照以下四個主要步驟進行操作:
- 開啟 (Open): 在對檔案進行任何操作之前,必須先開啟它。
- 讀取 (Read): 將數據從檔案載入到你的程式中。
- 寫入 (Write): 將數據從你的程式發送到檔案中。
- 關閉 (Close): 這是最重要的一步!如果你不關閉檔案,數據可能無法正確儲存,甚至可能導致檔案損壞。
常見錯誤: 忘記關閉檔案!這就像打開冰箱門卻不關上一樣;最終會出問題。務必確保你的程式在完成工作後將檔案關閉。
重點總結: 檔案允許永久儲存。使用開啟、讀取/寫入和關閉來管理它們。
3. 陣列與記錄 (Arrays and Records)
當我們有大量數據時,我們不會想建立 100 個不同的變數。相反地,我們會使用陣列 (Arrays)。
一維 (1D) 陣列
想像 1D 陣列就像一排儲物櫃。每個櫃子都有一個編號(索引/index),你可以在每個櫃子裡儲存一項數據。在大多數編程語言中,我們從 0 開始計算!
二維 (2D) 陣列
2D 陣列就像一個網格或試算表,擁有行和列。要找到特定的數據,你需要兩個坐標:行號和列號。
類比:1D 陣列是一條街道上的房子。2D 陣列則是一棟擁有許多樓層、每層樓有多個房間的巨大公寓大樓。
記錄 (Records)
雖然陣列通常儲存相同類型的數據(例如所有整數的列表),但記錄用於儲存一組相關但類型可能不同的數據。例如,學生記錄可能會儲存:姓名(字串)、年齡(整數)和是否及格(布林值)。
你知道嗎? 2D 陣列常用於表示遊戲棋盤,例如井字遊戲或國際象棋!
重點總結: 陣列用於處理列表和網格數據。記錄則將關於單一事物的不同類型資訊分組在一起。
4. SQL (結構化查詢語言)
有時候數據會儲存在龐大的資料庫中。SQL 是我們用來搜尋這些資料庫以精確找出所需內容的語言。對於 J277 考試,你只需要知道三個主要指令:
- SELECT: 你想查看哪些欄位(列)?(例如:姓名、年齡)
- FROM: 數據位於哪個資料表中?
- WHERE: 搜尋條件是什麼?(例如:WHERE 年齡 > 15)
例子:SELECT Name FROM Students WHERE Grade == 'A'
這會為你列出所有獲得 A 的學生姓名。
重點總結: SQL 就像資料庫的過濾器。它能幫你「在大海撈針」中找到目標。
5. 子程式:程序與函數 (Subprograms: Procedures and Functions)
當程式變得龐大時,會變得雜亂無章。子程式允許我們將大型程式分解成較小、易於管理的程式碼「區塊」。這稱為結構化編程 (Structured Programming)。
程序 (Procedures)
程序是一小塊執行特定任務的程式碼。你「呼叫」它,它完成工作,然後程式繼續往下執行。
函數 (Functions)
函數與程序非常相似,但有一個重大區別:它會回傳一個值給主程式。
記憶小撇步: Function (函數) 會 **F**inds (尋找) 結果並回傳給你。程序則只是執行一個過程。
快速回顧:
- 程序:「去廚房把燈打開。」(任務完成)。
- 函數:「去廚房告訴我碗裡有幾個蘋果。」(數量會回傳給你)。
重點總結: 子程式使程式碼更容易閱讀、測試和重複使用。函數會回傳一個值;程序則不會。
6. 範圍 (Scope):全域變數與區域變數
變數擁有「壽命」或存在的「區域」,這稱為範圍 (Scope)。
- 全域變數 (Global Variables): 在程式的最頂端宣告。程式的每個部分(包括所有子程式)都可以看到並使用它們。
- 區域變數 (Local Variables): 在特定的子程式內部宣告。它們僅在該子程式執行時存在。一旦子程式結束,區域變數就會被刪除。
為什麼要使用區域變數? 它們更安全!它們可以防止子程式意外更改在程式其他地方使用的變數。
類比: 全域變數就像全校廣播,每個人都聽得見。區域變數就像兩個學生在教室裡的私語——學校裡的其他人都不知道它的存在。
重點總結: 區域變數能保持你的程式碼「整潔」並防止程式錯誤。盡可能使用它們!
7. 隨機數生成 (Random Number Generation)
電腦通常非常可預測,但有時我們希望它們具備隨機性——例如在遊戲中擲骰子或隨機播放列表。大多數語言都有內建函式庫來生成隨機數。你只需提供一個範圍,例如 \( (1, 6) \),電腦就會為你挑選一個數字。
重點總結: 隨機數為我們的程式增加了「機遇」因素,使遊戲和模擬成為可能。
最後的鼓勵: 你剛剛完成了編程基礎單元中一些最高階的概念!休息一下,嘗試寫一個使用 1D 陣列或簡單函數的小程式,看看它們是如何結合運作的。你一定能做到的!