2025/10/1

台綜大B30 計概114 第四題 解答 ※ 販售必究 ※ 台灣綜合大學, 資訊管理系, 轉學考

 Q4 傳遞參數方式主要包含:傳值呼叫 (call-by-value)、傳址呼叫 (call-by-address)、傳參照呼叫 (call-by-reference)、傳名呼叫 (call-by-name)。請解釋這些方式在被呼叫副程式(callee subroutine)與呼叫者(caller)之間的資料傳遞差異,以及副程式結束後實際參數是否會受到影響。


🔹 參數傳遞方式比較

當呼叫者 (caller) 將參數傳入被呼叫副程式 (callee subroutine) 時,不同的傳遞方式會影響 副程式內部對參數的操作方式,以及 呼叫結束後實際參數是否會改變。以下逐一說明:


1️⃣ 傳值呼叫 (Call by Value)

  • 機制:呼叫時,會將 實際參數的值複製一份 傳給副程式。

  • 影響:副程式僅能操作這份「複本」,不會影響原始的實際參數。

  • 結果:副程式結束後,實際參數不變

  • 範例:C 語言傳遞基本型別。


2️⃣ 傳址呼叫 (Call by Address)

  • 機制:呼叫時,會將 實際參數的記憶體位址 (指標) 傳入副程式。

  • 影響:副程式若透過該位址修改內容,會直接作用於呼叫者的實際參數。

  • 結果:副程式結束後,實際參數可能改變

  • 範例:C 語言以指標 (int *p) 參數傳遞。


3️⃣ 傳參照呼叫 (Call by Reference)

  • 機制:呼叫時,傳入的是 實際參數的參照 (reference),就像是替呼叫者的變數取了一個「別名」。

  • 影響:副程式內對參數的修改,會直接反映在呼叫者的實際參數上。

  • 結果:副程式結束後,實際參數可能改變

  • 範例:C++ 的參照 (int &x),或 Java 的物件傳遞(嚴格來說是「值傳遞參照」)。


4️⃣ 傳名呼叫 (Call by Name)

  • 機制:呼叫時,傳入的不是值或位址,而是 一段可以重新計算的表達式。副程式每次使用該參數時,會「回頭」以文字替換或延遲計算的方式來求值。

  • 影響:效果類似巨集展開,每次取用都會重新計算,可能導致副作用。

  • 結果:實際參數是否改變,取決於該表達式的內容與副程式操作方式。

  • 範例:ALGOL 語言、Scala(透過 => call-by-name 參數)。

台綜大B30 計概114 第三題 解答 台灣綜合大學, 資訊管理系, 轉學考

Q3  請說明物件導向程式設計 (OOP) 中的封裝 (encapsulation)、多型 (polymorphism) 以及多載 (overloading) 的特徵。

🔹 1. 封裝 (Encapsulation)

  • 定義
    將資料 (屬性) 與操作這些資料的方法 (函式) 打包成一個物件,並透過存取修飾子 (如 private, public, protected) 來控制外部存取。

  • 特徵

    • 隱藏內部細節,只暴露必要的介面 (interface)。

    • 提高程式的 安全性(避免外部直接修改內部資料)。

    • 增加 模組化與可維護性

  • 範例 (Java)

    class BankAccount { private double balance; // 封裝在物件內,不可直接存取 public void deposit(double amount) { balance += amount; } public double getBalance() { return balance; } }

🔹 2. 多型 (Polymorphism)

  • 定義
    「相同的方法呼叫,依物件型態不同而有不同行為」。

  • 特徵

    • 方法覆寫 (Overriding):子類別重新定義父類別的方法。

    • 執行時期 (runtime) 會根據物件的實際型態決定呼叫哪個方法。

    • 提升 程式彈性可擴充性

  • 範例 (Java)

    class Animal { void speak() { System.out.println("Some sound"); } } class Dog extends Animal { @Override void speak() { System.out.println("Woof!"); } } class Cat extends Animal { @Override void speak() { System.out.println("Meow!"); } } // 多型展現 Animal a1 = new Dog(); Animal a2 = new Cat(); a1.speak(); // Woof! a2.speak(); // Meow!

🔹 3. 多載 (Overloading)

  • 定義
    在同一個類別中,方法名稱相同,但參數型態或數量不同

  • 特徵

    • 屬於 編譯時期多型 (compile-time polymorphism)

    • 不需要繼承關係。

    • 讓方法更直覺,根據輸入型態自動選擇正確版本。

  • 範例 (Java)

    class MathUtil { int add(int a, int b) { return a + b; } double add(double a, double b) { return a + b; } int add(int a, int b, int c) { return a + b + c; } } MathUtil m = new MathUtil(); System.out.println(m.add(3, 5)); // 呼叫 int 版本 System.out.println(m.add(2.5, 4.3)); // 呼叫 double 版本 System.out.println(m.add(1, 2, 3)); // 呼叫三參數版本

台綜大B30 計概114 第二題 解答 台灣綜合大學, 資訊管理系, 轉學考

Q2. 請詳述下列名詞的主要差異:資料庫 (database)、資料倉儲 (data warehouse)、資料探勘 (data mining)、資料結構 (data structure)、大數據 (big data)。


1️⃣ 資料庫 (Database)

  • 定義
    資料的集中存放與管理系統,用來 儲存、查詢、修改與維護日常營運資料

  • 特點

    • 強調 即時性(例如銀行交易、醫院病歷)。

    • 使用 資料庫管理系統 (DBMS) 如 MySQL、PostgreSQL、Oracle。

    • 資料通常是結構化的(表格形式)。

  • 應用情境:需要儲存大量資料的系統,例如,:差假系統、電子商務、醫院資訊系統。


2️⃣ 資料倉儲 (Data Warehouse)

  • 定義
    專門為 分析與決策 設計的大型資料庫,會將不同來源的資料整合後,進行清理、轉換,再集中儲存。

  • 特點

    • 偏重 歷史資料(不是即時交易)。

    • 經過 ETL 流程(Extract, Transform, Load)整理過。

    • 適合 報表分析、商業智慧 (BI)、趨勢預測

  • 應用情境:銷售趨勢分析、財務報表彙整、企業決策支持系統。


3️⃣ 資料探勘 (Data Mining)

  • 定義
    在大量資料中,透過演算法 發現隱藏的模式與知識 的過程。

  • 特點

    • 結合 統計學、機器學習與人工智慧 技術。

    • 著重在 找出規律、預測未來

    • 屬於資料分析的一部分。

  • 應用情境:信用卡詐欺偵測、客戶行為分析、推薦系統(如 Netflix、蝦皮推薦)。


4️⃣ 資料結構 (Data Structure)

  • 定義
    程式設計中 組織與儲存資料的方法,確保資料存取與運算更有效率。

  • 特點

    • 屬於 電腦科學的基本概念

    • 常見種類:陣列 (Array)、鏈結串列 (Linked List)、堆疊 (Stack)、佇列 (Queue)、樹 (Tree)、圖 (Graph)、雜湊表 (Hash Table)。

  • 應用情境:演算法設計、程式效率優化、搜尋與排序。


5️⃣ 大數據 (Big Data)

  • 定義
    龐大且多樣化的資料集合,傳統資料庫系統無法有效處理,需要特殊技術(如分散式計算)。

  • 特點:常以 5V 描述:

    • Volume(大量)

    • Velocity(高速產生)

    • Variety(多樣型態:文字、影像、影音、感測器資料)

    • Veracity(真實性、可靠性)

    • Value(價值萃取)

  • 應用情境:社群媒體分析、IoT 物聯網資料處理、醫療大數據、智慧城市。

台綜大B30 計概114 第一題 解答 台灣綜合大學, 資訊管理系, 轉學考

Q1: 請解釋組譯器 (assembler)、直譯器 (interpreter) 與編譯器 (compiler) 之間的差異與應用情境。

 🔹 組譯器 (Assembler)

  • 定位:介於「組合語言」與「機器碼」之間的工具。

  • 功能:將 組合語言 (Assembly) 逐條指令轉換成對應的 機器碼

  • 特點

    • 一對一翻譯,組譯後的執行速度最快。

    • 與硬體架構密切相關(同一段組合語言在不同 CPU 架構可能不通用)。

  • 使用情境

    • 嵌入式系統(例如控制器、感測器)。

    • 驅動程式開發(直接控制硬體)。

    • 效能要求極高或需要直接操作硬體暫存器的場合。


🔹 編譯器 (Compiler)

  • 定位:將「高階語言」轉換成「可執行程式」。

  • 功能:將整份 高階語言程式碼(如 C、C++、Rust)一次性翻譯成 機器碼或中間碼 (bytecode)

  • 特點

    • 一次性翻譯,生成執行檔。

    • 執行效率高(因為已經是機器碼)。

    • 缺點是 編譯過程較慢,開發過程需要等待編譯完成。

  • 使用情境

    • 系統軟體(如作業系統核心)。

    • 效能要求高的應用程式(C/C++/Rust)。

    • 跨平台應用(Java 透過編譯成 bytecode,交由 JVM 執行)。


🔹 直譯器 (Interpreter)

  • 定位:直接執行程式碼的「解釋器」。

  • 功能:逐行讀取、翻譯並 立即執行程式碼。

  • 特點

    • 跨平台性強,不需事先編譯。

    • 除錯方便,適合快速開發與測試。

    • 缺點是 執行速度較慢(每次執行都要重新解譯)。

  • 使用情境

    • 腳本語言:Python、JavaScript、Ruby。

    • 互動式開發環境 (REPL)

    • 快速原型設計教育學習場合。

2025/9/25

實際計算雲端發票專屬獎期望值

 112 年 11-12 月 到 114 年 7-8 月 發票張數


104

105

98

103

83

89

81

84

101

77

86

共中專屬獎500兩張 請算出期望值

我的總張數1011 張 中 1000塊 所以是一元

單張期望值多少 中獎率多少
ChatGPT 說:

我們可以來仔細算一下 單張統一發票的期望值(EV)與中獎率,以最新這期號碼為例(假設一張發票 20 元):


1️⃣ 中獎機率

統一發票的中獎規則如下(以最新期號為例):

獎項中獎條件獎金中獎組數
特別獎全8碼相同1,000萬元1組
特獎全8碼相同200萬元1組
頭獎全8碼相同20萬元3組
二獎頭獎末7碼相同4萬元3組
三獎頭獎末6碼相同1萬元3組
四獎頭獎末5碼相同4,000元3組
五獎頭獎末4碼相同1,000元3組
六獎頭獎末3碼相同200元3組
增開六獎指定3碼200元2組

計算中獎機率

發票號碼是 8位數字,每位數字獨立且均勻(0~9)。所以:

  1. 特別獎:1/100,000,000

  2. 特獎:1/100,000,000

  3. 頭獎:3 / 100,000,000 = 3e-8

  4. 二獎:3 / 10,000,000 = 3e-7

  5. 三獎:3 / 1,000,000 = 3e-6

  6. 四獎:3 / 100,000 = 3e-5

  7. 五獎:3 / 10,000 = 3e-4

  8. 六獎:3 / 1,000 = 0.003

  9. 增開六獎:2 / 1,000 = 0.002

總中獎率 ≈ 0.003 + 0.002 + 0.0003 + 0.00003 + 0.000003 + 0.0000003 + 3e-8 + 3e-8 ≈ 0.00533 ≈ 0.533%

也就是約 每200張發票中1張會中獎。


2️⃣ 單張期望值(EV)

期望值公式:

EV=(中獎金額×中獎機率)EV = \sum (\text{中獎金額} \times \text{中獎機率})

代入:

  • 特別獎:10,000,000 × 1/100,000,000 = 0.1

  • 特獎:2,000,000 × 1/100,000,000 = 0.02

  • 頭獎:200,000 × 3/100,000,000 = 0.006

  • 二獎:40,000 × 3/10,000,000 = 0.012

  • 三獎:10,000 × 3/1,000,000 = 0.03

  • 四獎:4,000 × 3/100,000 = 0.12

  • 五獎:1,000 × 3/10,000 = 0.3

  • 六獎:200 × 3/1,000 = 0.6

  • 增開六獎:200 × 2/1,000 = 0.4

總期望值 = 0.1 + 0.02 + 0.006 + 0.012 + 0.03 + 0.12 + 0.3 + 0.6 + 0.4 = 1.588 元

也就是 平均每張發票投入 20 元,期望回收約 1.59 元,約 8% 的回收率,非常低。


所以總和約2.6元