# 高中部多元選修:程式設計 ## 課程基本資訊 - **課程名稱**:(多元選修)程式設計 - **課程時長**:每週 **1 小時** - **總週數**:**21 週** ## 課程進度安排 | 週次 | 課程內容 | 重要事件 | |-------|---------------------|---------------------| | 第1週 | 程式設計概論 | | | 第2週 | 基本語法介紹 | | | 第3週 | 控制結構 | | | 第4週 | 函數與模組 | | | 第5週 | 資料結構簡介 | | | 第6週 | 實作練習 | | | 第7週 | **第一次報告** | 報告主題:前六週內容 | | 第8週 | 物件導向程式設計 | | | 第9週 | 例外處理與調試 | | | 第10週| 資料庫基礎 | | | 第11週| 網頁程式設計基礎 | | | 第12週| 實作練習 | | | 第13週| 專題討論 | | | 第14週| **第二次報告** | 報告主題:第8-13週內容 | | 第15週| 資料分析簡介 | | | 第16週| 前端與後端技術 | | | 第17週| 專題實作 | | | 第18週| 課程回顧 | | | 第19週| 期末考試準備 | | | 第20週| 期末考試 | | | 第21週| **期末報告** | 報告主題:整體課程總結 | ## 重要報告 - **第一次報告**:第 **7 週** - **第二次報告**:第 **14 週** - **期末報告**:第 **21 週** --- # 第1週:程式設計概論 ## 課程目標 - 了解程式設計的基本概念 - 探索程式設計的歷史與應用 - 確立學習程式設計的動機與目標 ## 課程大綱 ### 1. 程式設計的定義 - **程式設計**:使用特定語言撰寫指令,讓電腦執行特定任務。 - 一種將人類邏輯轉換為電腦可理解指令的過程。 - 重要性:提升解決問題的能力,優化工作流程。 - 解決問題:透過程式設計,可以有效地解決各種問題。 - 優化流程:自動化重複性工作,提升工作效率。 ### 2. 程式設計的歷史 - 早期的程式設計語言(如 Fortran, COBOL) - Fortran:1950年代初期,主要用於科學計算。 - COBOL:同樣在1950年代,主要用於商業應用。 - 現代程式設計語言(如 Python, Java, C++) - Python:易學易用,適合初學者和數據分析。 - Java:廣泛應用於企業級應用和Android開發。 - C++:常用於系統程式設計和高效能應用。 - 程式設計的演進與技術發展 ### 3. 程式設計的應用領域 - **網頁開發**:HTML, CSS, JavaScript - **軟體開發**:桌面應用程式與行動應用程式 - **數據分析**:數據處理與可視化 - **遊戲開發**:互動娛樂使用 Unity、Unreal Engine 等平台開發互動娛樂。 ### 4. 課程架構與學習目標 - 課程內容概覽(後續週次安排) - 每週主題簡介,涵蓋基礎語法、控制結構、數據結構等。 - 學習成果(能力評估標準) - 能夠獨立撰寫簡單的程式,解決實際問題。 - 期望學生參與度與作業要求 ### 5. 第一堂課活動 - 自我介紹與學習動機分享 - 小組討論:為什麼學習程式設計? ### 6. 課後作業 - 撰寫一篇短文,描述你對程式設計的看法及期望學習的內容。 --- # 第2週上課內容:基本語法介紹 ## 課程目標 - 理解程式語言的基本語法 - 學習如何撰寫簡單的程式碼 - 培養編寫可讀性高的程式碼的能力 ## 課程大綱 ### 1. 程式語言概述 - 程式語言的定義: 程式語言是用來撰寫指令以控制電腦行為的工具。 - 常見程式語言: - Python:適合初學者,功能強大。 - Java:跨平台,廣泛應用於企業和Android開發。 - JavaScript:主要用於網頁開發,增加互動性。 ### 2. 基本語法概念 - 在不同的程式語言中,變數的表示方式和定義語法可能會有所不同。以下是一些常見程式語言中變數的表示方式: |程式語言| 變數定義方式示例| 說明| |---|---|---| |Python| x = 10| 直接使用 = 進行賦值,支持多種類型。| |Java |int x = 10;| 需要指定變數類型,結尾有分號。| |JavaScript| let x = 10;| 使用 let、const 或 var 來定義變數。| |C++ |int x = 10;| 需要指定變數類型,結尾有分號。| |C# |int x = 10; |類似於 Java 和 C++,需要指定類型。| |Ruby| x = 10 |類似於 Python,無需指定類型。| |PHP| $x = 10;| 變數以 $ 開頭,無需指定類型。| |Swift| var x = 10| 使用 var 定義可變變數,無需指定類型。| - 變數類型示例 - python ```Python! name = "Alice" # 字串 age = 30 # 整數 height = 5.7 # 浮點數 ``` - Java ```java! String name = "Alice"; // 字串 int age = 30; // 整數 double height = 5.7; // 浮點數 ``` - JavaScript ```javascript! let name = "Alice"; // 字串 let age = 30; // 整數 let height = 5.7; // 浮點數 ``` - C++ ```C++ #include <iostream> using namespace std; int main() { string name = "Alice"; // 字串 int age = 30; // 整數 double height = 5.7; // 浮點數 return 0; } ``` - C# ```C# string name = "Alice"; // 字串 int age = 30; // 整數 double height = 5.7; // 浮點數 ``` - Ruby ```ruby! name = "Alice" # 字串 age = 30 # 整數 height = 5.7 # 浮點數 ``` - PHP ```php! $name = "Alice"; // 字串 $age = 30; // 整數 $height = 5.7; // 浮點數 ``` - Swift ```swift! var name = "Alice" // 字串 var age = 30 // 整數 var height = 5.7 // 浮點數 ``` - **變數**:存儲資料的命名位置 - 宣告變數的方式 - Python範例: ```python x = 10 # 整數 name = "John" # 字串 ``` - 變數命名規則:只能包含字母、數字和下劃線,不能以數字開頭。 - **資料型別**:數據的類型(整數、浮點數、字串、布林值) - 整數:例如 10 - 浮點數:例如 3.14 - 字串:例如 "Hello" - 布林值:例如 True 或 False - **運算符**:數學運算符、比較運算符、邏輯運算符 - 數學運算符:+、-、*、/ - 比較運算符:==、!=、>、< - 邏輯運算符:and、or、not ### 3.不同語法對運算式的表示方式 不同程式語言在運算式表示方面存在一些差異,主要體現在運算符的符號、優先級和結合性等方面。以下是一些常見程式語言中運算式的表示方式示例: #### 基本運算符 |運算符|描述|Python|Java|JavaScript|C++|C#|Ruby|PHP|Swift| |---|---|----|---|---|---|---|---|---|---| |+ |加法| +| +| +| +| +| +| +| +| |- |減法| -| -| -| -| -| -| -| -| |* |乘法| *| *| *| *| *| *| *| *| |/ |除法| /| /| /| /| /| /| /| /| |% |取餘數(模運算)| %| %| %| %| %| %| %| %| |** |指數運算| ** |**| **| **| **| **| **| **| #### 邏輯運算符 |運算符|描述|Python|Java|JavaScript|C++|C#|Ruby|PHP|Swift| |---|---|----|---|---|---|---|---|---|---| |== |等於| ==| ==| ==| ==| ==| ==| ==| ==| |!= |不等於| !=| !=| !=| !=| !=| !=| !=| !=| |> |大於| >| >| >| >| >| >| >| >| |< |小於| <| <| <| <| <| <| <| <| |>= |大於等於| >=| >=| >=| >=| >=| >=| >=| >=| |<= |小於等於| <=| <=| <=| <=| <=| <=| <=| <=| |and| 邏輯與 |and| &&| &&| &&| &&| &&| &&| &&| |or |邏輯或| or| |not| 邏輯非| not |! |! |! |! |! |! |!| #### 賦值運算符 |運算符|描述|Python|Java|JavaScript|C++|C#|Ruby|PHP|Swift| |---|---|----|---|---|---|---|---|---|---| |= |賦值 |= |= |= |= |= |= |= |=| |+= |加法賦值| +=| +=| +=| +=| +=| +=| +=| +=| |-= |減法賦值| -=| -=| -=| -=| -=| -=| -=| -=| |*= |乘法賦值| *=| *=| *=| *=| *=| *=| *=| *=| |/= |除法賦值| /=| /=| /=| /=| /=| /=| /=| /=| |%= |取餘數賦值| %= |%= |%= |%= |%= |%= |%= |%=| |**=| 指數賦值| **=| **=| **=| **=| **=| **=| **=| **=| #### 其他運算符 |運算符|描述|Python|Java|JavaScript|C++|C#|Ruby|PHP|Swift| |---|---|----|---|---|---|---|---|---|---| |**. ** |成員訪問| .| .| .| .| .| .| ->| .| |**[] **| 索引訪問| []| []| []| []| []| []| []| []| |**() **| 函數調用| ()| ()| ()| ()| ()| ()| ()| ()| #### 優先級和結合性 不同語言的運算符優先級和結合性可能略有不同,建議查閱相關語言的文檔以獲取詳細信息。 示例 ```Python! # python result = (10 + 5) * 2 # 計算結果為 30 ``` ```Java! # java int result = (10 + 5) * 2; // 計算結果為 30 ``` ```JavaScript! # JavaScript let result = (10 + 5) * 2; // 計算結果為 30 ``` ```C++ # C++ int result = (10 + 5) * 2; // 計算結果為 30 ``` ```C# # C# int result = (10 + 5) * 2; // 計算結果為 30 ``` ```Ruby! # Ruby result = (10 + 5) * 2 # 計算結果為 30 ``` ```PHP! # PHP $result = (10 + 5) * 2; // 計算結果為 30 ``` ```Swift! # Swift let result = (10 + 5) * 2 // 計算結果為 30 ``` #### 小結 不同程式語言的運算式表示方式各有特點,了解這些差異可以幫助你更有效地理解和編寫程式碼。建議在學習程式設計時,仔細閱讀相關語言的文檔,以掌握其運算符的用法和優先級。 # 第3週上課內容:控制結構 ### 1. 不同語法對控制結構 if、else、elif 的表示方式 在不同的程式語言中,控制結構 if、else 和 elif 的表示方式可能略有不同,但其基本邏輯和功能是相同的。以下是一些常見程式語言中控制結構的表示方式示例: #### if 語句 |程式語言| if 語句示例| 說明| |---|---|---| |Python |if condition: |使用 : 結尾,縮進表示程式區塊。| |Java |if (condition) { ... }| 使用 {} 包裹程式區塊。| |JavaScript| if (condition) { ... }| 使用 {} 包裹程式區塊。| |C++ |if (condition) { ... } |使用 {} 包裹程式區塊。| |C# |if (condition) { ... } |使用 {} 包裹程式區塊。| |Ruby |if condition then ... end| 使用 then 和 end 標記程式區塊。| |PHP |if (condition) { ... } |使用 {} 包裹程式區塊。| |Swift |if condition { ... } |使用 {} 包裹程式區塊。| #### else 語句 |程式語言 |else 語句示例 |說明| |---|---|---| |Python |else: |使用 : 結尾,縮進表示程式區塊。| |Java |else { ... } |使用 {} 包裹程式區塊。| |JavaScript |else { ... } |使用 {} 包裹程式區塊。| |C++ |else { ... } |使用 {} 包裹程式區塊。| |C# |else { ... } |使用 {} 包裹程式區塊。| |Ruby |else ... end |使用 else 和 end 標記程式區塊。| |PHP |else { ... } |使用 {} 包裹程式區塊。| |Swift |else { ... } |使用 {} 包裹程式區塊。| #### elif 語句 |程式語言 |elif 語句示例 |說明| |---|---|---| |Python |elif condition: |使用 : 結尾,縮進表示程式區塊。| |Java |else if (condition) { ... } |使用 else if 進行多重條件判斷。| |JavaScript |else if (condition) { ... } |使用 else if 進行多重條件判斷。| |C++ |else if (condition) { ... } |使用 else if 進行多重條件判斷。| |C# |else if (condition) { ... } |使用 else if 進行多重條件判斷。| |Ruby |elsif condition then ... end |使用 elsif 和 end 標記程式區塊。| |PHP |elseif (condition) { ... } |使用 elseif 進行多重條件判斷。| |Swift |else if condition { ... } |使用 else if 進行多重條件判斷。| ### 第一次段考作業 ```python! radius = float(input("請輸入圓形的半徑: ")) area = 3.14159 * radius * radius print("圓形的面積是:", area) ``` :::spoiler - 輸入半徑:5 - 程式輸出:圓形的面積是: 78.53975 ::: --- ```python! score1 = int(input("請輸入第一個分數: ")) score2 = int(input("請輸入第二個分數: ")) score3 = int(input("請輸入第三個分數: ")) average_score = (score1 + score2 + score3) / 3 print("平均分數是:", average_score) ``` :::spoiler - 輸入分數:80, 90, 75 - 程式輸出:平均分數是: 81.66666666666667 ::: --- ```python! original_price = float(input("請輸入商品原價: ")) discount_rate = float(input("請輸入折扣率 (例如 0.2 代表 20%): ")) discount_price = original_price * (1 - discount_rate) print("折扣價是:", discount_price) ``` :::spoiler - 輸入原價:100 - 輸入折扣率:0.15 - 程式輸出:折扣價是: 85.0 ::: #### 示例 - Python ```python! age = 25 if age < 18: print("未成年") elif age >= 18 and age < 65: print("成年") else: print("老年") ``` - Java ```java! int age = 25; if (age < 18) { System.out.println("未成年"); } else if (age >= 18 && age < 65) { System.out.println("成年"); } else { System.out.println("老年"); } ``` - JavaScript ```javascript! let age = 25; if (age < 18) { console.log("未成年"); } else if (age >= 18 && age < 65) { console.log("成年"); } else { console.log("老年"); } ``` - C++ ```C++ #include <iostream> using namespace std; int main() { int age = 25; if (age < 18) { cout << "未成年" << endl; } else if (age >= 18 && age < 65) { cout << "成年" << endl; } else { cout << "老年" << endl; } return 0; } ``` - C# ``` using System; class Program { static void Main(string[] args) { int age = 25; if (age < 18) { Console.WriteLine("未成年"); } else if (age >= 18 && age < 65) { Console.WriteLine("成年"); } else { Console.WriteLine("老年"); } } } ``` - Ruby ```ruby! age = 25 if age < 18 puts "未成年" elsif age >= 18 and age < 65 puts "成年" else puts "老年" end ``` - PHP ```php! <?php $age = 25; if ($age < 18) { echo "未成年"; } elseif ($age >= 18 && $age < 65) { echo "成年"; } else { echo "老年"; } ?> ``` - Swift ```Swift! let age = 25 if age < 18 { print("未成年") } else if age >= 18 && age < 65 { print("成年") } else { print("老年") } ``` #### 小結 不同程式語言的控制結構語法略有差異,但其邏輯和功能是一致的。了解這些差異可以幫助你更有效地理解和編寫程式碼。在學習程式設計時,建議仔細閱讀相關語言的文檔,以掌握其控制結構的用法和語法規則。 --- 第二次段考作業 https://blockly.games/?lang=zh-hant :::spoiler ![image](https://hackmd.io/_uploads/H1tITdDfkg.png) ::: ### 2. 不同語法對控制結構 For While 的表示方式