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)TotalTotal+Count;
(3)CountCount+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] ,觀看執行結果: