1.04k likes | 1.36k Views
第一章 認識程式語言. 1-1. 認識程式語言. 人與人之間的溝通必須要使用共通的語言(例如:國語、閩南語、英語 … 等),而人想要與電腦溝通,則一樣必須要用電腦看得懂的語言,即所謂的電腦程式語言(例如: Assemble 、 Basic 、 C 、 C++ 、 JAVA 、 Pascal 、 Delphi 、 Visual Basic 、 ASP 語言及 ASP.NET2.0 、 VB2008 、 VC#2008 等 新一代的程式語言)。而這些程式語言都只是「軟體」的一個子集合。. 1.2 何謂軟體 (1/3).
E N D
1-1.認識程式語言 人與人之間的溝通必須要使用共通的語言(例如:國語、閩南語、英語…等),而人想要與電腦溝通,則一樣必須要用電腦看得懂的語言,即所謂的電腦程式語言(例如:Assemble、Basic、C、C++、JAVA、Pascal、Delphi、Visual Basic、ASP語言及ASP.NET2.0、VB2008、VC#2008等新一代的程式語言)。而這些程式語言都只是「軟體」的一個子集合。
1.2 何謂軟體(1/3) 軟體(software)就是程式,它是由一連串的指令所組成,其主要功能就是達成某一特定的目的。在電腦系統中軟體是用來控制硬體,如果只有硬體而沒有軟體,則電腦被視為一堆廢鐵。因此,軟體與硬體缺一不可。就像人一樣,身軀(硬體)與精神(軟體)也是缺一不可的。如圖1-1所示:
1.2 何謂軟體(2/3) 一般而言,軟體可分為兩大類分別為:「系統軟體」和「應用軟體」。「系統軟體」用於控制電腦系統,例如作業系統軟體(MS-DOS、Windows、UNIX及Vista),程式語言軟體(Visual C#、Visual C, C語言及JAVA等)、以及工具程式(FTP,MSN,WINZIP等等)。「應用軟體」非常廣泛,幾乎各行各業都可以用得上,如學校中的選課系統、成績處理系統、人事薪資系統及企業中的生產管理、庫存管理、航空定位系統等自行開發軟體。另有工具性應用軟體如WORD,EXCEL等等套裝軟體,不勝枚舉。如圖1-2所示。
1.3程式語言的分類(1/16) 一般而言,程式語言可分為兩大類:一為低階語言,另一為高階語言。而低階語言又可分為機械語言與組合語言。高階語言則可分為程序導向語言與非程序導向語言及自然語言。如圖1-3所示:
1.3 程式語言的分類(2/16) 由於電腦只看懂機械語言,因此,我們利用高階語言在撰寫程式之後,電腦並無法直接的執行,必須要透過翻譯程式來翻譯為電腦可以接受的語言。一般而言,從撰寫原始程式到執行時,必須要經過一連串的步驟,例如編譯、連結、產生執行檔及執行結果。如圖1-4所示。
1.3 程式語言的分類(3/16) 執行步驟:原始程式編譯目的程式連結產生執行檔載入到記憶體執行結果其說明如下所示: (1)翻譯程式可分為三種: 直譯程式(Interpreter) 接受高階語言所寫之程式,並且在直譯之後就可以直接被執行。例如:BASIC語言。 編譯程式(Compiler) 接受高階語言所寫之程式,將其轉換成可被機器接受之目的程式(目的 碼)。例如:C語言。 組譯程式(Assembler) 接受組合語言所寫之程式,將其轉換成可被機器接受之目的程式(目的碼)。例如:Assembly語言。
1.3 程式語言的分類(4/16) (2)連結程式(Linker) 使用者撰寫程式碼轉換(編譯或組譯)成目的程式之後,並不能馬上被執行, 因為使用者的程式可能需要連結其他的副程式或函式庫。因此,連結程式就是負責把使用者的主程式或相關的庫存副程式連接起來,成為一個可執行的程式。 (3)載入程式(Loader) 將連結好的可執行程式,載入到主記憶體中,以便執行。
1.3 程式語言的分類(5/16) 在了解程式執行流程之後,接下來,我們再依照程式語言的特性進行分類: 第一代語言---機器語言(Machine languages)這是一種比較接近電腦的語言,亦即電腦可以直接執行的機器碼,由於電腦內部是使用0與1兩種狀態來表示資料及邏輯開關的控制,因此,我們將電腦內部由 0與1所組成的資料稱之為「機器語言(machine languages)」。也因為它是一種以0與1所構成二進位形式的碼,故並不適合人類閱讀與學習,也不適合用來進行程式設計。如圖1-5所示:
1.3 程式語言的分類(6/16) 優點: 它是以邏輯狀態0和1直接命令電腦,不需翻譯就可以直接執行,所以速度最快。 缺點: (1)不同的處理機(CPU),使用不同的機器語言,所以可攜性較差。 (2)只有兩種狀態0與1。因此,不僅難學、難懂、也不容易維護。
1.3 程式語言的分類(7/16) 2. 第二代語言---組合語言(Assembly languages)這是一種介於高階語言與機器語言之間的語言,由於機器語言在使用上不方便,因此,工程師們便從機器語言中找出規則,以英文字、數字符號來重組機器語言,使它們變成較容易記憶的語言,這種語言便稱為「組合語言(Assembly languages)」。
1.3 程式語言的分類(8/16) 它是利用特定功能的符號指令稱為助譯碼(Mnemonics code),例如:ADD代表「相加」、LDA代表「載入」、MOV代表「搬移」;這些指令比起機器語言來說會較有意義、容易學習,而負責翻譯的程式則稱之為組合程式(Assembler)或組譯器。由於每一種計算機(電腦)皆有其獨特的機器語言,因此每一種機器的組合語言各有不同。所以,可攜性(Portability)較差,並且較難撰寫及維護,因此,一般使用者較少使用組合語言來設計程式。如圖1-6所示:
1.3 程式語言的分類(9/16) 3.第三代語言---程序導向語言(Procedure-Oriented Language)這是一種類似自然語言,它較具有結構性,可以方便讓使用者撰寫程式。但是,在撰寫完成之後必須要再經過編譯器(Compiler)或直譯器(Interpreter)轉換成「機器語言」之才交給電腦執行。常見的編譯器有C、直譯器有BASIC均屬此類。如圖1-7所示:
1.3 程式語言的分類(10/16) 4.第四代語言---非程序導向語言(NonProcedure-Oriented Language ) 由於程序導向語言在開發專案時成本較高、維護不易及重覆使用性低的缺點。因此,後來又發展出「非程序導向語言」,其設計上的優點就是,只要告訴電腦”要做什麼(What to do)”,而不必告訴它”如何做(How to do)”。並且部份的程式碼會自動產生(例如:ASP.NET 2.0),因此,可以大大的縮減專案開發的時間,並且程式在維護上也更有效率。常見的非程序導向語言有下面兩種: (1)結構化查詢語言(SQL) (2)物件導向語言(Object-Oriented Programming,OOP)
1.3 程式語言的分類(11/16) (1)結構化查詢語言(SQL) 比程序導向語言更容易使用的語言,使用者只需將步驟寫出來,而不必管電腦要如何去執行,這樣的電腦語言稱為查詢語言(Query Language);這種語言減輕了使用者程式設計的負擔,常見的是資料庫查詢語言如:SQL Server、Oracle、Informix等。如圖1-8所示:
1.3 程式語言的分類(13/16) (2)物件導向語言(Object-Oriented Programming,OOP) 所謂物件導向程式語言(Object-Oriented Programming簡稱OOP),是把程式設計的概念具體化、物件化,並以該物件的角度去分析和解決問題,它不但突破了以往程序導向語言只能循序單向的設計缺失,更因物件的簡便、維護容易及可重覆使用…等特性,而使得程式開發的速度加快,因此成為最新一代程式語言的主流。常見的物件導向式語言有Visual BASIC 2005、Visual C++、VB.NET、ASP.NET、Visual C#...等等。如圖1-9所示:
1.3 程式語言的分類(15/16) 5. 第五代語言---自然語言(Natural languages)就是我們日常所用的語言,如英文(English )、中文(Chinese)等,這是最接近人類所使用的語言。由於此種語言文法和語意上較為複雜,因此在電腦處理上較不容易,所以並不合適給予電腦處理,目前只用在人工智慧研究之一。如圖1-10所示:
1.5 高階語言的種類(1/5) 既然低階語言在學習上較為困難,因此,一般的學習者都是利用高階語言來開發系統,而目前較常用的高階語言有下列數種。依發展的年代說明如下: 1.FORTRAN(FORmula TRANslator) 語言 FORTRAN是人們使用電腦的第一種高階語言,其數值計算特別強,主要用 於科學與工程應用。 2.COBOL 語言 COBOL為COmmon Business Oriented Language的縮寫,意為通用商業語言。 3.ALGOL(ALGOrighm Language) 語言 ALGOL為ALGOrithm Language的縮寫,意為演算法語言。其功能與FORTRAN 類似,較FORTRAN有效率,處理非數字能力較差。
1.4 高階語言的種類(2/5) 4.PL/1 語言 PL/1為Programming Language / 1 的縮寫。包含FORTRAN, ALGOL, COBOL, Assembly的特點,為功能最強的語言。適用於商業及工程科學。 5.BASIC 語言 BASIC是Beginners All purpose Symbolic Instruction Code的縮寫, 意為初學者通用符號指令碼。早期的BASIC缺乏結構化,因此不如其他語言 有威力。今天的BASIC已經改善,並增加模組的功能。目前流行的BASIC有 PC-BASIC,Turbo-BASIC,QBASIC,Quick BASIC,Visual Basic(VB) 等,其中以VB最被看好。 6.PASCAL 語言 PASCAL語言它是一種結構良好的程式語言,具有動態性的資料型態、遞迴 性副程式功能、具有集合型態、及區域性結構等特性。它是最結構化的語言。
1.4 高階語言的種類(3/5) 7.C 語言 C語言於西元1972年美國貝爾實驗室所創,它具有高階語言的優點,並有 低階語言的效率。它具結構化、執行速度快、可攜性高,可在多種不同機 器上執行,適合用來設計作業系統及開發應用軟體。它可執行於MS-DOS、 Windows、UNIX等作業系統,小從個人電腦大至超級電腦,C語言程式均 能執行,最適合用來做為教學用的程式語言。它隨著未來32位元個人電腦 的作業系統,將日漸流行。 8.C++ C語言的物件導向版本,主要用於設計Windows應用軟體。 9.JAVA 程式架構像C++,但是它拿掉了C++最困難的指標部份,它能發揮網路及多 媒體的內建支援,其主要用於設計網際網路上執行的程式語言。
1.4 高階語言的種類(4/5) 10.RPG(Report Program Generator) 表格化的程式語言,主要作報表印出之用。 11.LISP與PROLOG AI人工智慧語言,具有遞迴特性的語言,為一非程序式的語言。 12.ADA 美國國防部發展的語言。 13.LOGO 具有遞迴特性的語言,小孩子用來學習繪圖的語言。例如:CAI電腦輔助軟體。
1.4 高階語言的種類(5/5) 14.APL 為一種有效率的互動式程式語言,應用於解決數學上問題的語言。 15.FORTH 符式語言,後序式語言,執行速度最快。 16.SNOBOL 應用於非數字(字串)資料處理。 17.HTML 為Hyper Text Markup Language超文字標示語言的縮寫,特點是具有超連結 的功能,主要用於設計HomePage。
1.5 演算法(Algorithm) (1/5) 所謂演算法 (Algorithm)就是解決問題的方法,它是利用文字敘述或圖形或虛擬碼的方式,來表示解決問題的步驟。我們在撰寫演算法時,必須要正確並且精簡的描述次序,不可以順序顛倒或加入一些不必要的敘述。因此,我們最好在撰寫時應該以較少的步驟來解決問題,不但可以大大的減少電腦執行所需的時間。
1.5 演算法(Algorithm) (2/5) 一、撰寫演算法應遵守以下五點原則: 1.輸入:不一定要有輸入。 2.輸出:至少一個輸出。 3.確定性:指令必須明確,不可模稜兩可。 4.有限性:演算法不能有無窮迴路,必須能終止執行。 5.有效性:演算法必須簡單到一張紙、一支筆即可追蹤出其執行結果。
1.5演算法(Algorithm) (3/5) 二、描述演算法有下列三種方法: (一)文字敘述 演算法可用文字加以描述,但採用口語化文字加以描述的缺點在於冗長且較不精確,在撰寫、閱讀、會意時可能會有誤差,因此一般較不常用。 (二)流程圖 『流程圖』是將解決問題的步驟用圖形加以描述,可協助程式設計者設計出周詳的程式,可增加程式的可讀性,對於初學者而言可幫助奠定良好的程式設計基礎,例如:1+2+3+…+10的流程圖。如圖1-11所示。此種方法在以往很流行,但其缺點是,只能表達細部邏輯,較難表示整個程式的結構,所以最近也採用『虛擬碼』來輔助。
1.5 演算法(Algorithm)(5/5) (三)虛擬碼 虛擬碼兼具文字描述及流程圖的優點,其方式是用文字摻雜程式語言,來描述解題步驟與方法。例如:1+2+3+…+10虛擬碼可以描述如下: (1)設Count=1,Total=0; (2)TotalTotal+Count; (3)CountCount+1; (4)若Count > 10 則至步驟(5),否則回步驟(2) (5)印出Total
1.6 撰寫程式的步驟(1/3) 一般在撰寫程式時,程式設計師都會遵照下列步驟執行:
1.7我們為什麼要寫程式呢? 我們為什麼要花那麼多時間來撰寫程式呢?其主要的目的:它可以快速解決「複雜的問題」。為什麼呢?我們可以從下面的概念圖來說明,如圖1-13所示: 甲同學:請電腦幫我計算1加到10的總合。 或許你會認為這簡單的問題,你我都會算,何必寫程式呢? 但是,當甲同學:如果又說請電腦幫我計算1加到50000時,我想我們就無法馬上計算出結果。由上面的例子,我們可以非常清楚的得知,程式語言幫忙人類解決複雜的問題。
在「範本(T)」窗格內選取 「Windows Form應用程式」圖示。 在「名稱(N)」欄,使用預設專案名稱「WindowsApplication1」。 按 [確定 ] 鈕,進入「VB 2010 Express的整合開發環境」:
[說明] WindowsApplication1顯示在視窗標題欄最左邊為方案名稱 WindowsApplication1顯示在方案總管視窗內為專案名稱。 編寫一個 VB程式就會產生一個 方案。 一個方案內可放數個專案。一個專案由建立到設計完成需數個檔案一起運作。方案總管 用來管理這些專案及需用到的檔案。 當專案設計完成編譯成可執行的視窗應用程式,執行執行時所出現的視窗就是尚圖「設計工具」視窗內的 Form1表單物件 。 找不到「方案總管」視窗,執行【檢視(V)/方案總管(P)】開啟「方案總管」視窗。 【】
1.8.2 偵錯專案 • 在專案設計階段完成程式的輸出入介面設計和 程式碼編寫,接著必須進行專案的偵錯。 • 檢查所設計出的程式,其語法是否有誤?執行 結果是否符合需求? • 程式執行時VB都會先進行編譯,檢查程式中 所有敘述的語法是否有錯誤?- 若有錯誤,必須返回編輯程式階段進行修改,- 若程式語法正確,馬上進行程式編譯,產生 相關的檔案並產生可執行的視窗應用程式(附檔名為 .exe)。
Step1 開始偵錯 在 VB 2008 整合開發環境中偵錯專案方法有三種: 按工具列的 開始偵錯圖示鈕。 執行功能表的 [ 偵錯(D)/開始偵錯(S) ]指令。 按鍵盤 [F5] 快捷鍵。
Step2 若偵錯沒發生錯誤,會在整合開發環境上開啟下圖 Form1執行視窗,此視窗稱為 Form1 表單控制項或稱表單物件。 Step 3 關閉程式執行視窗在上圖點選工具列的停止偵錯圖示鈕或點按執行視窗右上方的關閉鈕來關閉執行視窗。
1.8.3 儲存專案 執行功能表的【檔案(F)/全部儲存(L)】指令或按工具列的全部儲存圖示鈕,出現「儲存專案」對話方塊: 注意:不勾選 [為方案建立目錄(D)] 表不另建方案資料夾, 即將專案和方案名稱設同名,一起存在專案資料夾內。 即該方案內只能有一個專案。
在「名稱(N)」欄更改鍵入較有意義的專案名稱,如myProj。此時,方案名稱會自動同步跟著改變。 按 [瀏覽(B)] 鈕,選擇專案所存放的資料夾,如『我的文件』。 按 [儲存(S)] 鈕,系統自動在所指定的「我的文件」資料夾內建立專案資料夾「myProj」,只要與專案myProj有關的檔案,會存放到 myProj資料夾內。
1.8.4 關閉整合開發環境 • 執行功能表 [檔案(F)/結束(X)]指令,離開VB 2008整合開發環境。 • 若專案內容有異動或新增未儲存時,會詢問是否要存檔?
1.8.5 瀏覽專案資料夾 延續上節所儲存的專案名稱是「myProj」,該專案資料夾 是建在「我的文件」資料夾內。 Step1 透過「我的電腦」或「檔案總管」開啟下圖「我的文件」 資料夾:
Step 2 在上圖的「myProj」專案資料夾快按兩下如下圖開啟此資料夾
Step3 - 開啟 bin資料夾內的 Debug 資料夾,出現 該資料夾下 所屬相關檔案。 - myProj.exe 是執行檔,為編譯完成的 視窗應用程式。
1.8.6 開啟已建立的專案 建好的專案檔,開啟專案方式有兩種: 方式1 適合用來開啟最近所建好的專案 Step1 執行工作列 [開始/所有程式/Microsoft Visual Basic 2008 Express Edition ]指令 Step2點選 myProj 專案名稱。
方式2適合用來開啟較早已建好的專案 Step1執行桌面工作列 [開始/所有程式/Visual Basic 2008 Express Edition] 指令,進入「起始頁」畫面。 Step2執行功能表 [檔案(F)/開啟專案(P) ] 指令,開啟 「開啟專案」對話方塊: