第10章-程式語言與程式發展 - OSSF Web Hosting

Download Report

Transcript 第10章-程式語言與程式發展 - OSSF Web Hosting

計算機概論
第10章
程式語言與程式發展
10-1程式語言概念

由於電腦的架構過於複雜,因此當初創造電腦
的人只好利用最簡單的方式(也就是0與1)來與
電腦溝通。不過由於0與1所組成的語言實在與
人類的日常生活距離太遠。必須採用接近人類
語言的程式語言。
10-2程式語言演進





第一代語言
第二代語言
第三代語言
第四代語言
第五代語言
10-2-1第一代語言

就是指機器語言(machine language),是由
0與1等二進碼所構成,最早發展出來的電腦語
言。
10-2-2第二代語言

就是組合語言(assembly language),也是
一種與機器相關的程式語言。
10-2-3第三代語言

就是指一般的高階程式語言(higher level
language),也可稱為編譯語言(compile
languages) 或程序導向語言(Procedure
Oriented Language,簡稱為POL)。
10-2-4第四代語言

就是極高階語言(very high level language),
屬於問題導向語言(problem oriented
language)或非程序性語言(nonprocedure
language)的一種。其特色是祇需寫出「做什
麼」(what)即可,而不必像前三代程式語言必
須寫出「如何做」(how),讓程式撰寫人員的
效率大幅提昇。
10-2-5第五代語言

就是自然語言(nature language)又被稱為知
識庫語言(knowledge-based language),這
是最接近日常生活所用語言的程式語言,譬如
中文、英文、...等均可視為自然語言。
10-3程式語言的等級
人
自然語言
高階語言
組合語言
電腦
機器語言
CPU
微程式
低階語言
10-3-1自然語言

就是我們日常所用的語言,如英文(english )、
中文(chinese)等,這是最接近人類但與電腦距
離最遠的語言。
10-3-2高階語言

這是一種類似自然語言,
但是較為結構性,可以
方便使用者撰寫程式,
不過也很容易經過轉譯
(translation)後翻譯成機
器碼交給電腦執行。
10-3-3組合語言

這是一種介於高階語言
與機器語言間的語言,
簡單的說,組合語言的
語法接近機器語言,但
是所用指令則利用人較
容易記憶的方式,因此
也需要經由組譯器
(assembler)翻譯成機器
碼,才能由電腦執行。
1FED:0100 B90001
MOV
CX,0100
1FED:0103 B200
MOV
DL,00
1FED:0105 B402
MOV
AH,02
1FED:0107 CD21
INT
21
1FED:0109 FEC2
INC
DL
1FED:010B E2F8
LOOP
0105
1FED:010D CD20
INT
20
10-3-4機器語言

這是一種較接近電腦的
語言,就是電腦可以直
接執行的機器碼,是一
種以0與1所構成二進位
形式的碼,不適合人類
閱讀,也不適合用來進
行程式設計。不過每一
種語言一定要翻譯成機
器語言才能執行。
010000011110101111110011
010011010111111001000111
011110110011001010011011
010011110101010010110111
10-3-5微程式

這種程式比機器語言更低階,一般用在設計電
腦的指令集,也就是用來描述機器語言在CPU
中的處理動作的程式,是根據處理機中的微運
算(micro-operations)定義出來的,可以用來進
行微程式設計(micro-programming),並將微
程式儲存於CPU中的控制儲存體(control
storage)中。
10-4高階語言與低階語言的比較




高階語言的優點
高階程式語言的缺點
低階語言的優點低
低階語言的缺點
10-4-1高階語言的優點

與硬體無關,可攜性高


高階語言除了輸出入部分需要考慮硬體的配置外,
其餘有關流程敘述、變數宣告等均與硬體無關,因
此在撰寫時較為方便,只要在撰寫時注意有關輸出
入部分,即可將程式攜至另一硬體上重新編譯後執
行。
易讀、易寫、易學

高階語言通常較為接近人類的語法,因此易讀、易
寫、易學。
10-4-2高階程式語言的缺點

執行速度慢


高階語言通常在編譯成機器碼時,因為編譯程式要
處理各種可能,因而使編譯後的機器碼效率較差。
程式較佔空間

高階語言通常需要編譯成機器碼才能執行,不過由
於編譯過程需要聯結許多不一定會用到的函式使得
整個程式變大,而較佔空間。
10-4-3低階語言的優點

執行速度快


低階語言因為直接用簡單的組譯器就可編譯,各種
情況都要由程式設計師自行處理,因此只要程式寫
的好,執行速度會遠快於用高階語言寫出來的程式。
程式較不佔空間

低階語言的程式因為一切都由程式設計師處理,比
較不會額外聯結一些函式,因此程式較不佔空間。
10-4-4低階語言的缺點

與硬體相關性很高,通常不具可攜性


不同的硬體有不同的低階語言,而且通常互不相容,
因此用低階語言寫出來的程式只能在相關的硬體上
跑,而不能攜至其他機器執行。
難讀、難寫、難學

低階語言撰寫時,必須用電腦的思維方式來寫,因
此難讀、難寫、難學。
10-5常見的高階程式語言









BASIC
PASCAL
C
FORTRAN
COBOL
ADA
LISP
PROLOG
ALGOL








PL/1
RPG
SNOBOL
FORTH
SMALLTALK
Visual Basic & Visual
C++
Delphi
JAVA
10-5-1BASIC




簡單易學
有交談式特性
通常為直譯式語言
結構化鬆散
10 REM Hello world
20 FOR I = 1 TO 10
30 PRINT “Hi!”
40 NEXT I
10-5-2PASCAL




程式語法定義嚴謹
同時具有多種資料型態
具有整數變數與局部變
數觀念
輸出入能力差
program Hello(input, output)
integer i
begin
for i:=1 to 10
i:=i+1;
end;
end.
10-5-3C





具有相當強的可攜性
程式精簡,具有多種運
算子
提供多種資料型態
程式設計具有高階語言
的結構化與模組化的特
性
功能強大
10-5-4FORTRAN



世界上第一個開發成功
的高階語言
檔案的控制能力較差
程式中的變數可以用內
隱(Implicit)方式表示
INTEGER I
S=0
DO 20 I=1 , 10
S=S+I
20
CONTINUE
10-5-5COBOL



商業資料處理最普遍常
用的程式語言
程式寫法類似於一般的
英文
具有強大的可攜性
DATA DIVISION.
FILE SECTION.
FD READ-CARD
LABEL RECORDS ARE STANDARD
RECORD CONTAINS 80 CHARACTERS.
01 READ-REC.
02
READ-FIELD1
PIC X(20).
10-5常見的高階程式語言









ADA
LISP
PROLOG
ALGOL
PL/1
RPG
SNOBOL
FORTH
SMALLTALK



Visual Basic & Visual
C++
Delphi
JAVA
10-6程式語言的分類



以用途來區分
以是否描述程式執行程序來區分
其他特殊類型的程式語言
10-6-1以用途來區分

商用語言


科學語言



COBOL
FORTRAN
ALGOL60
教學語言


PASCAL
BASIC
10-6-2以是否描述程式執行程序來區分

程序式語言






PASCAL
C
Ada
FORTRAN
BASIC
COBOL

非程序式語言



LISP
RPG
SQ
10-6-3其他特殊類型的程式語言





函數式語言
交談式語言
結構化語言
命令語言
資料流語言

物件導向語言




資料抽象性
多型性
繼承性
超載
10-7程式的轉譯與執行



概念
編譯程式
直譯程式
10-7-1概念

高階語言

編譯(compiler)方式


直譯(interpreter)方式


原始程式直譯程式執行
組合語言


原始程式編譯程式目的程式執行
原始程式組合程式目的程式執行
機器語言

機器語言執行
10-7-2編譯程式

編譯程式的特性




編譯程式屬於系統程式
編譯程式會轉換整個程式
只編譯不執行
編譯程式的優點



最佳化處理程式碼
執行效率高
節省程式翻譯次數

編譯程式的缺點


執行時需較大的記憶體空
間
增加程式開發的時間
10-7-3直譯程式

直譯程式的特性




直譯程式(interpreter)
屬於系統程式
直譯程式一次翻譯一道敘
述
直譯程式邊翻譯邊執行
直譯程式的優點


執行時記憶體空間需求較
小
減少程式開發的時間

直譯程式的缺點


執行效率低
增加程式翻譯次數
10-8程式設計概念與結構化程式設計




步驟
流程圖
結構化程式設計
減少使用goto
10-8-1步驟





分析問題
繪製流程圖
編寫程式
電腦處理
檔案管理及維護
10-8-2流程圖


意義
流程圖分類


程式流程圖
系統流程圖
10-8-2-3常用符號








開始/終止
處理
決策
輸出入
報表輸出
人工輸入
迴圈
流程流向
10-8-2-4流程圖舉例S=1+2+3+..+N
開始
S=0
i=1
F
i<=n
T
S=S+i
i=i+1
S
結束
10-8-3結構化程式設計


意義
構成


順序結構
選擇結構




If-then
If-then-else
case
重複結構



While
Repeat
for
10-8-3-2-1順序結構
敘述 A
敘述 B
10-8-3-2-2選擇結構

If-then選擇結構
布林運算式
False
True
敘述 A
10-8-3-2-2選擇結構

if-then-else選擇結構
布林運算式
False
敘述 B
True
敘述 A
10-8-3-2-2選擇結構

case選擇結構
運算式
A 選項
敘述 A
B 選項
敘述 A
C 選項
敘述 C
..........
...............
10-8-3-2-3重複結構

While重複結構
條件運算式
False
True
敘述本體
10-8-3-2-3重複結構

repeat重複結構
敘述本體
False
True
條件運算式
10-8-3-2-3重複結構

for重複結構
初始敘述
條件運算式
False
True
敘述本體
增值敘述
10-8-4減少使用goto

結構化程式應盡量減少使用goto命令,以維持
結構化之特性。