本系的學生在一年級的計概課程已經學習了許多不同類型的基本程式語言,諸如Maple, Html, Tex, 及 C 程式語言等。程式語言應用內容延續計概二的 C 程式語言設計課程,學生在修習本課程之前,建議有一些(但不須太多的) 基本 C 程式設計能力,以免造成學習上困難。
近幾年來,我們選擇了 C++ 物件導向程式語言 (Object-oriented programming language) 為本課程主要教授的高階程式語言。80年代以前,程式設計的方式是利用以程序(procedure) 為設計主軸的程序導向程式語言 (Procedure-oriented programming language),例如Fortran, Pascal, C 等等。當程式設計員使用這類型的程式語言來設計程式時,其主要撰寫方式是將實際的問題分解成一連串的程序前後連接起來而成。當程式設計員使用程序導向程式語言設計軟體程式時,常常在不久後就會遇到一個非常棘手的問題,那既是,每當程式碼越趨於龐大,程式的更改與維修也越加困難,程式設計員常為了增加軟體中的一個小小功能而必須絞盡腦汁更改許多程式碼才能達成目的,因此
成程式後續的維護費用遠遠超過其初始設計費用。
80年代中期起,物件導向程式語言的興起,適時地提供了許多非常有效的程式設計方式來解決前述的軟體設計危機問題,這一類型的程式語言主要包含smalltalk, C++, Java等,其中以 C++ 程式語言最為人廣泛使用。物件導向程式語言在程式設計上以類別(class)的設計為主,所謂的物件只不過是類別的一個實體(instance)而矣。其關係如同以下普通的C 程式碼一般:
int foo ;
這裡的整數 int 可以視為一 C++ 類別,而變數 foo 則可視為一物件。有別於程序導向程式語言將個別的程序與程序所處理的資料分開設計,物件導向程式語言認為資料與處理資料的程序是一體的,且應合併一起設計,資料的更動皆可透過程序完成。以C++ 程式語言為例,C++ 的類別由資料成員 (data member) 與成員函式 (member function) 所組成,資料成員代表著類別的最基本資料,其透過不同的成員函式顯現作用。資料成員在設計上常被加以不同層級的保護,使用者僅能透過成員函式才能更改或使用其值。使用物件導向程式語言,程式設計員在設計程式時首先須分析如何將實際問題分解成不同類別,如何清楚的界定在各個類別內的基本資料成員及其處理資料成員的成員函式介面。在這一切類別都設計完備後,主程式部份僅是由各類別所產生的物件的交互作用。至於其他物件導向程式語言的主要功能及優點將在課堂上詳細說明。
學習程式語言首重練習,學生必要在電腦前花時間實際的撰寫程式,獲得錯誤經驗才能有所進步。本課程在教學上特別強調實際的程式撰寫能力,除了正常每兩至三週的定期程式作業外,也將包含每週一次的上機演習,期中考試與期末考試也可能會安排線上考試,修課學生務必自己撰寫程式作業,熟練程式基本語法與設計技巧,否則將無法學好程式設計。
|