課程:程式設計
課程目標 本課程以C程式語言簡介電腦程式設計。 內容包含電腦之基本運作以及如何撰寫C程式語言。將藉由許多範例來說明C程式設計並且讓學生以實機練習。 相關的程式偵錯方法亦包含在本課程中 。
課程內容 第一章 認識C語言 第二章 C語言基本概述 第三章 基本資料型態 第四章 格式化輸入與輸入 第五章 運算子、運算式 第六章 選擇性敘述 第七章 迴圈 第八章 函數 第九章 陣列與字串
課程內容 第10章 指標 第11章 結構與其他資料型態 第12章 檔案處理
教材 上課書籍 : C語言教學手冊第四版 作者: 洪維恩 出版社 : 旗標 一定要購買書籍 開發工具 Dev-C++4.9.9.2版 http://www.math.ncu.edu.tw/~jovice/c++/boards/devcpp-4.9.9.2_setup.exe 同學下載免費程式,達到練習目的。
成績評量 平時練習 40% 出席狀況:點名 上課練習:程式練習與驗證 平時小考 期中考 30% 期末考 30%
.課程目標 (一) 瞭解C語言的撰寫、編譯與執行IDE環境 (二) 熟悉資料型態與變數的宣告 (三) 瞭解格式化的輸出與輸入 (四) 瞭解運算式與運算子 (五) 熟悉程式控制 (六) 瞭解內定函數與使用者自定函數之用法 (七) 瞭解陣列與指標 (八) 瞭解檔案處理。
程式編譯 直譯器 程式執行時,會檢查所要執行的語法,如果沒有錯誤,便直接執行該程式。 如果碰到錯誤就立刻中斷。 程式直譯器(Interpreter)-機器碼(machine code) 直譯器將程式逐一翻譯,因此佔用的記憶體較少,僅需要存取原始程式。 執行的速度較慢,效率較低。
程式編譯 翻譯器 程式編譯時會先檢查所有程式碼是否符合語法,然而編譯成可執行檔。 當修改原始程式,就必須重新compile,保持執行檔最新狀態。 經compile後的執行檔,在執行時不須在compile,因此有較佳的執行效率。 程式compiler目的檔執行檔
程式 低階語言 電腦可瞭解的語言(如組合語言)。 用於硬體控制(如mouse、KeyB) 語言不易瞭解、閱讀
程式 高階語言 為敘述性語言,接近人類慣用的語法;較容易撰寫、除錯。 對硬體控制相對較差。 C語言具備低階語言的優點,亦兼顧高階語言的特色。 C語言具高效率與靈活性,許多作業系統、驅動程式、compiler多由C所寫成。 物件導向語言 :C++、 java
程式 C語言 都應用於作業系統控制台上的程式,如驅動程式。 可攜性佳 :當應用在不同的系統或作業系統時,僅需要少量修改或不修改,即可在另一個系統執行。
學習程式 瞭解程式的語法 瞭解電腦與程式之間的關係 瞭解如何發展程式 瞭解程式流程控制 如何找到程式問題點 如何追查程式、逐步檢驗資料與變數 瞭解電腦與程式之間的關係 瞭解如何發展程式 瞭解程式流程控制 為什麼程式要包括資料型態、變數、陣列、流程控制、檔案與I/O ? 建立程式邏輯概念
程式控制流程 設定迴圈初值 false 判斷條件 true 其他敘述 迴圈主體 設定增減量
程式控制流程 設定迴圈初值 yes 下 雨 no 帶 傘 戴太陽眼鏡 出 門
程式開發 瞭解程式碼與註解 /* prog1_1, 第一個C程式碼 */ 說 #include <stdio.h> #include <stdlib.h> int main(void) { printf("Hello C!\n"); /* 印出Hello C! 字串 */ 有助於程式瞭解 }
程式開發 程式編譯與連結程式 程式撰寫完成後,編譯器執行程式轉換成電腦語言,若編譯無誤,再透過連結器與其他函數模組連結,最後轉成可執行之程式。
程式執行
程式設定中斷點
程式編譯
程式執行流程 撰寫程式 原始程式 編譯 目的碼 函數庫 連結程式 可執行程式
程式演進 C++物件導向程式 瞭解物件觀念 瞭解物件所引伸的程式語法 本課第16章之邁向C++之路介紹物件導向程式
.NET Framework 架構 Classes Library 與 Common Language Runtime 緊密整合且可重複使用type的集合。 .NET Framework 型別讓您完成許多常見的程式設計工作,包括字串管理、資料收集、資料庫連接和檔案存取等。
Common Language Specification Common Language Runtime .NET Framework 架構 Base Class Library Common Language Specification Common Language Runtime ADO and XML 傳統資料庫與XML文件存取 VB C++ C# Visual Studio.NET JScript … ASP .NET Web Form Services Windows Form
.NET Framework 架構 Classes Library .NET Framework 開發以下類型的應用程式和服務: 主控台應用程式 Windows GUI 應用程式 (Windows Form) ASP.NET 應用程式 XML Web Service Windows 服務 例如,Windows Form 類別是可重複使用的一組型別,大幅簡化 Windows GUI 的開發。如果您撰寫 ASP.NET Web Form 應用程式,您可以使用 Web Form 類別。
.NET Framework 架構 用戶端應用程式 為Windows 程式設計中application的傳統樣式,在桌面顯示window或form的應用程式等類型,讓使用者能夠執行工作。 用戶端應用程式包括像文字處理器和試算表的應用程 式,也包括自訂的商務應用程式,例如資料輸入工具、報告工具等。 用戶端應用程式通常使用視窗、功能表、按鈕和其他 GUI 項目,並可能會存取本機資源 (例如檔案系統),以及週邊設備 (例如印表機)。
.NET Framework 架構 用戶端應用程式 另一種是傳統的 ActiveX 控制項 (現在已由 Managed Windows Form 控制項所取代),部署在網際網路上當做網頁使用。 過去,開發人員在建立這類應用程式時,會使用 C/C++ 加上 Microsoft Foundation Classes (MFC),或是像 Microsoft® Visual Basic® 的快速應用程式開發 (Rapid Application Development,RAD) 環境。 .NET Framework 將這些現有產品的觀點整合到單一且一致的開發環境中,徹底簡化了用戶端應用程式的開發。
.NET Framework 架構 用戶端應用程式 .NET Framework 所包含的 Windows Form 類別,是專為 GUI 開發使用所設計的。您可以輕易地建立命令視窗、按鈕、功能表、工具列和其他螢幕項目,又能夠視商務需要,彈性地加以改變。
.NET Framework 架構 可支援的語言
.NET Framework 架構 程式碼執行程序 Source code intermediate Language compiler Assembly & Loader Just-in time Compiler Native code Native code manager execute
.NET Framework 架構 過去,程式設計師透過COM 元件來達到跨語言的效果,但若要繼承另一種語言所撰寫的類別是非常困難。 在 CLR 中訂定了「通用語言規範 (Common Language Specification, CLS)」 凡是符合CLS的程式碼,會先被編譯成中介語言(Microsoft Intermediate Language, MSIL),這是一個副檔名為 exe 或 dll 的檔案,此檔並不能直接由 CPU 執行。 MSIL 與中央處理器無關,也與原始撰寫程式的語言無關,所以不同的語言可以互相繼承程式碼。
.NET Framework 架構 中介語言編譯器在編譯完 MSIL 後,會將可執行的機器碼置於快取中,因此第二次執行時,不必再由中介語言編譯器重新編譯一次,而直接執行快取中的機器碼, 可以大幅提升執行速度。 在 Java 中,無論該 Java 程式執行過多少次,每次執行時 Java 虛擬機器都會一列一列的解譯程式碼再執行,因此執行速度會慢很多。
.NET Framework 架構 以往撰寫程式時忘了在程式碼中加入釋放不再使用物件機制,因此在程式執行了一段時間後就產生記憶體不足的錯誤訊息,使程式中斷。 Microsoft .NET 提供了「垃圾收集法 (garbage collection)」功能,會自動監看程式碼中的物件及變數,如果發現有不再使用的物件及變數,會主動從記憶體中移除,如此程式設計者可以放心的宣告使用物件及變數,不必擔心記憶體漏失的問題。 各種語言有其特定的錯誤處理方式,在跨語言程式中會造成若干不協調之處,例如:VB 使用「On Error Goto」,C++ 使用「try … catch」。CLR 使用「錯誤管理員 (Exception Manager)」來統一管理所有錯誤處理。
程式開發工具 Visual Studio 2008 網路上有提供免費的 Visual Studio Express 版本(http://www.microsoft.com/express/) 最常使用的三種範本為 Windows Form 應用程式、Win32 主控台應用程式及 CLR主控台應用程式。
程式開發工具 Windows Form 應用程式讓設計者建立一般視窗應用程式,可用拖曳方式建立各種控制項。 Win32 主控台應用程式執行時呈現一個類似 DOS 系統的視窗,可以顯示文字,程式所佔用的資源很少,執行速度較快。 Win32 主控台應用程式是以標準的 C++ 語言撰寫,它是 .NET Framework 架構下唯一未列管 (UnManaged) 的程式碼,可以支援 32 位元的編譯器 (EXE 檔或 DLL 檔),語法較簡易,對初學者較容易上手。
程式開發工具 CLR 主控台應用程式 是使用新的 C++/CLR 語法,,它除了完全支援原來 C++ 的語法,並提供數種 C++ 的擴充功能,也就是說 C++/CLR 是新一代 .NET Framework 架構下列管(Managed) 的程式語法,可以將變數建立在堆積 (Heap),因為建立在堆積中的變數 CLR 機制會自動管理和回收,具有較佳的執行效能。
程式開發環境 環境介紹 檢視 方案總管 類別檢視 物件瀏覽器 工具箱 屬性 工具 程式碼行號 備註符號 // or /* ……*/ 偵錯
程式開發環境 物件(object) 建立專案 專案檔案系統 類別(class) 屬性(property) 方法(method) 事件(event) 繼承(inheritance) 多形(polymorphism)
程式開發環境 物件(object) 事件(event) 方法(method) Void Form1_Load(); private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { } Form1執行時優先載入的程式 方法(method) Void Form1_Load();
程式開發環境 程式碼格式 如何使用程式來控制物件? Using namespace public ref class Form1 : public System::Windows::Forms::Form #pragma region Windows Form Designer generated code void InitializeComponent(void) { this->button1 = (gcnew System::Windows::Forms::Button()); …… } #pragma endregion 如何使用程式來控制物件?
程式開發環境 控制物件 加入button(按鈕)與 label(標籤)物件 button範例
相同的方法名稱,因參數或資料type不同而產生多個方法 Sub Class : Race_car Property : Weight Speed Method: Accelerate break Polymorphism 相同的方法名稱,因參數或資料type不同而產生多個方法 Car *C ; Race_car A ; C = &A ; //C指向A C->acclerate() ; //A加速 執行car的加速方法是Race_car 達成多形是透過binding Super Class : car Property : Weight Speed Method: Accelerate break Sub Class :Police_ car Property : Weight Speed Method: Accelerate break create instance Inheritance
多載(Overloading) 加速(1); 加速(70); 加速(stop); 參數個數與type不同,仍可執行。 Sub Class : Race_car Property : Weight Speed Method: Accelerate break 多載(Overloading) 加速(1); 加速(70); 加速(stop); 參數個數與type不同,仍可執行。 Super Class : car Property : Weight Speed Method: Accelerate break Sub Class :Police_ car Property : Weight Speed Method: Accelerate break create instance Inheritance
程式開發環境 命名空間(name space) 類別成員 「::」表示namespace下有那些成員,例System::Windows::Forms 以物件button為例 Button->Size : property : System::Drawing::Size System::windows::Forms::Control::Size