程式設計與程式語言 告訴電腦做些什麼 第十六章
學習目的 瞭解程式能做什麼和不能做什麼 學習程式設計師使用電腦解決問題的技巧:如何定義問題、找出解決方法、撰寫程式、測試與產生說明文件 說明程式語言的分類—機器語言、組合語言、高階語言、非常高階語言、自然語言 熟悉目前一些主流的程式語言 瞭解物件導向程式設計的概念
內容 程式 程式設計師 程式設計的過程 選擇程式語言 傳統的程式設計 物件導向程式設計 學習撰寫程式
程式 它是一組由程式語言撰寫而成的指令,用來指揮電腦工作來完成想要的結果
程式設計師 把解決問題的方法轉換成電腦的指令 檢查指令的執行結果是否正確 修正錯誤 撰寫程式的說明文件 與許多人溝通以解決問題 使用者 管理階層 系統分析師 與其他程式設計師協調,以確保系統整合時能正確執行
程式設計的過程 定義問題 規劃問題解決方法 動手撰寫程式 測試程式 撰寫說明文件
程式設計的過程 定義問題 輸入資料是什麼 所需要的輸出結果 從輸入轉換成輸出所需要的處理
程式設計的過程 規劃問題的解決方法 演算法 – 針對問題的詳細解法 設計工具 流程圖 虛擬碼 草稿檢查 結構化驗算
程式設計的過程 規劃問題的解決方法 接受一連串的數字並算出平均值
程式設計的過程 規劃問題的解決方法 接受一連串的數字並算出平均值
程式設計的過程 動手寫程式 將演算法轉換成正式的程式語言 語法 如何將程式輸入電腦中? 文字編輯器 程式設計環境 – 交談式程式開發環境(Interactive Development Environment,IDE)
程式設計的過程 測試程式 翻譯 – 編譯器 連結 – 連結編輯器 (連結器) 除錯 將原始模組翻譯成目的模組 偵測語法錯誤 將目的模組與系統程式庫組合在一起,建立出載入模組 找出未定義的外部參考 除錯 使用資料來測試所有的敘述 邏輯錯誤
程式設計的過程 測試程式
程式設計的過程 撰寫說明文件 在整個開發過程都應該要進行 包括在每一步驟所產生出來的報告 問題定義 程式規劃 原始程式碼裡的註解 測試程序 口語化說明 輸入與輸出資料的詳細結構 程式列表
選擇程式語言 常常別人已經替你作了選擇 你最擅長的是哪種程式語言? 哪一種是最能符合問題需求的程式語言? 有哪些程式語言可以使用? 是否需要與其它現成的應用程式做介面溝通 你最擅長的是哪種程式語言? 哪一種是最能符合問題需求的程式語言?
程式語言的年代 低階語言比較接近二進位 高階語言比較接近人類的語言 五個年代: 程序化語言 非程序化語言 機器語言 組合語言 高階語言 – 3GL 非程序化語言 非常高階語言 – 4GL 自然語言 – 5GL
機器語言 由一串 0 與 1 所撰寫而成 電腦只了解這種語言 其它的程式語言都必須翻譯成機器語言 與電腦的種類相關,不同的電腦所使用的機器語言也不同
組合語言 輔助記憶碼 使用名稱來表示記憶體的位置 與電腦的種類相關 用組譯程式將組合語言轉換成機器語言
高階語言 (3GL) 1960 年代開始廣泛的使用 為特定類型的問題而設計出來的程式語言,所使用的是解這類問題的人們最熟悉的語法 FORTRAN:數學問題 COBOL:商業方面的問題 用編譯器將高階語言轉換成機器語言
非常高階語言 (4GL) 程式設計師只設定他想要的結果,而語言就會自己完成解法 使用 4GL 比使用程序化語言至少可以提高十倍的生產力 查詢語言 專門用來從資料庫中擷取資料 容易學習與使用
自然語言 (5GL) 與自然的口語或書寫英文類似 將人類的指示翻譯成電腦可以執行的代碼 通常是由非程式設計師用來存取資料庫中的資料
第三代程式語言 傳統的程式設計 描述資料 描述針對此資料所做的程序或運算 資料和程序是相互分開的
第三代程式語言 FORTRAN COBOL 1954 擅長於表達複雜的數學公式 C/C++ 已經取代 FORTRAN 1959 商用 大量而複雜的資料檔案 擅長於產生格式精美的商業報表
第三代程式語言 FORTRAN
第三代程式語言 COBOL
第三代程式語言 BASIC RPG 1965 隨著 PC 開始流行而越來越受歡迎 (1970s) 容易學習 使用的記憶體很少 報表產生器 –快速地建立出複雜的報表
第三代程式語言 BASIC
第三代程式語言 Visual Basic C C++ 1987 容易建立複雜的使用者介面 使用標準的 Windows 功能 事件驅動 –使用者控制程式的執行 C 1972 有效率的程式碼 可攜性佳 C++ C 的加強版
第三代程式語言 C++
第三代程式語言 Java 跨平台 Java Virtual Machine (JVM) Applet 位於電腦的一般平台之上
物件導向程式設計 OOP 物件 物件是個自我包含的單位,它同時包含有資料與指令 範例 物件: 貓 包括 資料: 腳、毛、鼻子、尾巴 相關的事實 (資料) 相關的功能 (在此資料上作用的指令) 範例 物件: 貓 資料: 腳、毛、鼻子、尾巴 功能: 吃東西、低鳴、抓、走路 樣例: Kitty 、Susan
物件導向程式設計 OOP 封裝 – 描述物件的自我包含性 屬性 – 描述物件的事實 方法 / 運算 – 指揮物件做事的指令 樣例 – 物件的某個具體呈現實體 訊息 – 啟動某個方法 例如:walk 訊息會使得 Kitty 這隻貓移動
物件導向程式設計 OOP 類別 – 定義該類別中所有物件獨特的特性 繼承 – 在子類別中的物件會自動擁有子類別與上層類別中所有的特性 子類別 – 繼承來自上層類別的特性,並且另外定義它自己獨特的特性
物件導向程式設計 OOP 範例 類別:動物 子類別: 貓 類別:波斯貓 樣例:Kitty 物件可以被重複使用
物件導向程式設計 OOP 程式語言 C++ 可以用來撰寫結構化與物件導向程式碼兩者 Visual Basic 含有物件導向程式語言的某些基本功能
物件導向程式設計 OOP 在商業上使用物件 類別: 客戶 子類別: 零售店或量販店 樣例: 李英德 類別: 客戶 子類別: 零售店或量販店 樣例: 李英德 零售店和量販店的客戶會自動繼承客戶住址這個特性,因為它是客戶類別的一部分
想學寫程式嗎? 報名上課 研讀 從基本課程開始動手練習 研究範例程式碼 自己撰寫程式 (先從小程式開始) 善用輔助說明功能