程式語言介紹

Download Report

Transcript 程式語言介紹

第一章 認識程式語言
1-1.認識程式語言
人與人之間的溝通必須要使用共通的語言(例如:國語、閩南
語、英語…等),而人想要與電腦溝通,則一樣必須要用電腦看得懂
的語言,即所謂的電腦程式語言(例如:Assemble、Basic、C、
C++、JAVA、Pascal、Delphi、Visual Basic、ASP語言及
ASP.NET2.0、VB2008、VC#2008等新一代的程式語言)。而這些程
式語言都只是「軟體」的一個子集合。
1.2 何謂軟體(1/3)
軟體(software)就是程式,它是由一連串的指令所組成,其主要功能就
是達成某一特定的目的。在電腦系統中軟體是用來控制硬體,如果只
有硬體而沒有軟體,則電腦被視為一堆廢鐵。因此,軟體與硬體缺一
不可。就像人一樣,身軀(硬體)與精神(軟體)也是缺一不可的。如圖11所示:
1.2 何謂軟體(2/3)
一般而言,軟體可分為兩大類分別為:「系統軟體」和「應用軟體」。
「系統軟體」用於控制電腦系統,例如作業系統軟體(MS-DOS、
Windows、UNIX及Vista),程式語言軟體(Visual C#、Visual C, C語言
及JAVA等)、以及工具程式(FTP,MSN,WINZIP等等)。「應用軟體」非
常廣泛,幾乎各行各業都可以用得上,如學校中的選課系統、成績處
理系統、人事薪資系統及企業中的生產管理、庫存管理、航空定位系
統等自行開發軟體。另有工具性應用軟體如WORD,EXCEL等等套裝軟
體,不勝枚舉。如圖1-2所示。
1.2何謂軟體(3/3)
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 程式語言的分類(12/16)
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 程式語言的分類(14/16)
1.3 程式語言的分類(15/16)
5. 第五代語言---自然語言(Natural languages)
就是我們日常所用的語言,如英文(English )、中文(Chinese)等,這是最接近
人類所使用的語言。由於此種語言文法和語意上較為複雜,因此在電腦處理上
較不容易,所以並不合適給予電腦處理,目前只用在人工智慧研究之一。如圖
1-10所示:
1.3 程式語言的分類(16/16)
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) (4/5)
1.5 演算法(Algorithm)(5/5)
(三)虛擬碼
虛擬碼兼具文字描述及流程圖的優點,其方式是用文字摻雜程式語言,來
描述解題步驟與方法。例如:1+2+3+…+10虛擬碼可以描述如下:
(1)設Count=1,Total=0;
(2)TotalTotal+Count;
(3)CountCount+1;
(4)若Count > 10 則至步驟(5),否則回步驟(2)
(5)印出Total
1.6 撰寫程式的步驟(1/3)
一般在撰寫程式時,程式設計師都會遵照下列步驟執行:
1.6 撰寫程式的步驟(2/3)
1.6 撰寫程式的步驟(3/3)
1.7我們為什麼要寫程式呢?
我們為什麼要花那麼多時間來撰寫程式呢?其主要的目的:它可以快速解決
「複雜的問題」。為什麼呢?我們可以從下面的概念圖來說明,如圖1-13所示:
甲同學:請電腦幫我計算1加到10的總合。
或許你會認為這簡單的問題,你我都會算,何必寫程式呢?
但是,當甲同學:如果又說請電腦幫我計算1加到50000時,我想我們就無法
馬上計算出結果。由上面的例子,我們可以非常清楚的得知,程式語言幫忙人
類解決複雜的問題。
1-8 VB2010開發環境
 在「範本(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) ] 指令,開啟
「開啟專案」對話方塊:
1.8.7 開啟設計工具窗格
開啟「設計工具」窗格的方法有兩個方式:
方式1
方式2
1.9 工具與控制項
整合開發環境 簡稱 IDE。
IDE 是將程式的編輯、編譯、執行、偵錯
四階段整合在一個環境操作,方便來開發
程式。
1.9.1 工具箱的設定
工具箱位於整合開發環境的最左邊。
提供許多工具,在「表單」物件上建立輸出
入介面。
由工具箱拖曳一個工具到表單上,就成為一
個「控制項」(Control)或稱 物件(Object)。
工具箱可設定為彈跳式與固定式兩種:
1. 彈跳式工具箱
2. 固定式工具箱
1.9.2 控制項的建立
在表單內建立控制項的方法有兩種:
方式1:在表單內建立一個 標籤控制項
方式2 在表單內製作一個 按鈕控制項
1.9.3 控制項的調整和刪除
 表單上的控制項位置或尺寸不合需求可做調整。
 表單上的控制項不需要時可做刪除。
 調整和刪除動作前,要先選取該控制項,變成作用控制項。
step1 選取控制項
step2 移動控制項
step3 調整控制項的大小
step4 刪除控制項
step5 復原
step6 取消復原
step7 選取多個控制項
1.10 控制項與屬性
 類別在物件導向程式設計中是非常重要的觀念。
 假設人類是一個類別,那麼張三、李四便是屬於該類別的
「物件」。
 透過每個人的身高、體重、出生日期、個性、特徵等相關
資料便可區分出張三和李四出來。
 將身高、體重、出生日期等特徵稱為「屬性」。
 工具箱的工具都是屬於類別,將工具拖曳到表單就變成
控制項或稱物件。
 控制項在建立時,系統會用預設的樣式來顯現。
 已建立的控制項可透過使用者的設定,來改變其屬性而
呈現不同的面貌
1.10.1 認識屬性視窗
性質分類
字母順序
1.10.2 設定控制項的屬性值
 表單或控制項都有為數不少的屬性,如要改變屬性的設定
值有「選取型」、「輸入型」、「交談型」三種方式。
方式1 使用「選取型」,將表單的背景色改成『黃色』
1.10.2 設定控制項的屬性值
 在表單沒有放置控制項的地方按一
下(即選取表單),此時屬性視窗
會呈現表單的屬性名稱及屬性值。
 移動滑鼠到屬性視窗的工具列,點
按字母順序圖示鈕,使得屬性名稱
按英文字母A~Z排序。
 拖曳垂直捲軸,直到屬性名稱清單
中出現BackColor背景色屬性名稱,
並點選該屬性名稱。
 在該屬性設定區右側的下拉鈕按一
下滑鼠左鍵,出現「系統」標籤頁
的顏色清單。
方式2
使用「輸入型」,將Label1標籤控制項上面的
顯示文字改成『屋寬不如心寬』。
方式3
使用「交談型」,設定標籤控制項的文字格式
 有些控制項,直接點選控制項右上角的智慧標籤
來設定該控制項專屬且特有的常用屬性。
 可設定的屬性項目,在屬性視窗都有,在此設定
較快速,可省掉由屬性視窗找尋的時間。
step1 在表單內製作一個「圖片」控制項
1.11 控制項的智慧標籤
 表單上有些控制項,可直接點選控制項右上角所出現
智慧標籤(Smart Tag)單來設定該控制項專屬且特有的
常用屬性。
 在智慧標籤內可設定的屬性項目,在屬性視窗都有,
在此設定較快速,可省掉由屬性視窗找尋的時間。
1.12 新手上路
以一個簡單視窗應用程式,學習如何用VB 來設
計
程式。
開發一個 VB 程式必須經過下列四個階段:
1. 新增專案:設定新專案的存放路徑和名稱。
2. 表單設計階段:在表單上建立輸入和輸出介
面
和屬性設定。
3. 程式碼設計階段:設計相關的程式碼。
4. 專案偵錯階段:驗證程式執行是否正確。
1.12.1 新增專案
Step1 開啟「新增專案」對話方塊
Step2 新增專案
1.12.2 表單設計階段
表單設計階段是用來
- 設計程式的輸出入介面
- 調整各控制項的相關位置以及屬性的相關
初值設定。
本例在表單建立一個標籤控制項和兩個按
鈕控制項
步驟:
step1
Step3 調整大小
Step2 選取Label1控制項
Step4 設定背景色
Step5 設定字型
Step6 清除Label1控制項上面的文字
Step7 將 Form1表單的標題欄文字更改為『電子鐘製作』
 『Button1』→『顯示日期時間』
Step8
更改 Button1 和 Button2 控制項的Text屬性值
 『Button2』→『顯示文字』
 調整按鈕控制項的大小與位置,使得控制項上面
的文字能完全顯現。
1.12.3 程式碼設計階段
 程式碼編寫是在「程式碼設計模式」下
 表單輸出入介面設計是在「表單設計模式」下
 兩者間切換方式:
方式1
方式2
在表單內的控制項上快按兩下進入該控控制項
的預設事件:
方式3
直接在「程式碼設計模式」下,由出現的清
單中選取, 以撰寫 Button2_Click() 事件程序為例
Button2_Click 事件程序程式碼
方式4 由屬性視窗來設定事件程序
1.12.4 專案執行與偵錯
 表單設計與程式碼設計初步完成,可進行程式執行和
偵錯測試,觀看執行的結果是否符合輸出要求?
 如發生錯誤,先停止程式執行,返回整合開發環境,
再切換到程式碼設計模式或表單設計模式繼續修改。
 在進行程式執行和偵錯前,最好將修改過的程式先透過
功能表【檔案(F)/全部儲存(L)】指令,將相關檔案全部
儲存,但不必關閉專案,再進行程式除錯 (Debug)。
Step1 進行程式偵錯
在程式碼或表單設計模式下偵錯程式有三種方式:
 按標準工具列的開始偵錯圖示鈕。
 執行功能表【偵錯(D)/開始偵錯(S)】指令。
 按鍵盤的 [F5] 快捷鍵。
Step2 程式執行時
 按 [顯示日期時間] 鈕
 按 [顯示文字] 鈕
1.12.5 關閉專案
 結束程式偵錯,返回 整合開發環境,方式有三種:
 按程式執行視窗右上角的
關閉鈕。
 按整合開發環境標準工具列的
停止偵錯圖示鈕。
 執行整合開發環境功能表【偵錯(D)/停止偵錯(E)】
指令。
調整 Label1 控制項文字
所顯示的字體大小為
12 和文字置中對齊:
 在表單上選取Label1控制項。
 在屬性視窗選取Font字型屬性,
將字體大小設成『12』。
 在屬性視窗點選TextAlign文字
對齊屬性名稱。
 如右圖點選中央置中對齊方式
 按[F5] ,觀看執行結果: