物理学情報処理演習 5. C++言語②変数・演算・制御文 - Kobe ...pp物理学情報処理演習 5. C++言語②変数・演算・制御文 5.1 変数 5.2 演算 5.3
第一章 程式語言的演進
-
Upload
frances-bowers -
Category
Documents
-
view
37 -
download
0
description
Transcript of 第一章 程式語言的演進
2
大綱
程式語言的意義 程式語言的設計目標 程式語言的分類 各種語言的特性 高階語言的處理器 命令式語言與應用式語言 習題
3
程式語言的意義
由一組系統化的符號所成之集合,目的是表達某種機器解決特定問題的步驟
向計算機描述計算過程之工具
4
程式語言的設計目標
簡潔 (simplicity)
學習程式語言增進對程式語言的了解、改進程式設計的架構、增進執行效率、選擇適用的語言與設計新的語言
5
程式語言的分類 第一代程式語言
機器語言 第二代程式語言
組合語言 第三代程式語言
高階語言 第四代程式語言
極高階語言 第五代程式語言
自然語言
6
第一代程式語言 機器語言 (machine language) 指令與資料均由二進碼所組成 不需經由語言處理器直接在機器執行
7
第二代程式語言 組合語言 (assembly language) 組合語言的指令稱為助憶碼 (mnemonic
code) 指令種類
機器指令 (machine operation) 虛擬指令 (pseudo operation)
必需經由組譯程式 (assembler) 處理 與機器語言合稱為低階語言
8
第三代程式語言 高階語言 (high level language) 程序導向語言 (procedure oriented
language) 需要經過編譯或直譯程式 範例
Pascal C Basic Fortran Cobol
9
第四代程式語言 極高階語言 問題導向語言 (problem oriented
language) 範例
SQL (Structured Query Language)
10
第五代程式語言 自然語言 (nature language) 知識庫語言 (knowledge based
language) 語法接近人類日常生活的語言
11
各種語言的特性 Fortran Algol 60 Lisp Cobol APL Basic Snobol PL/1
Simula Algol 68 C Prolog Pascal ADA C++ JAVA
12
FORTRAN
FORmula TRANslator language 第一個高階語言 針對科學計算而設計 固定格式 首創輸出入格式化 (I/O format) 提供正、零、負三種 IF 分枝結構 提供 Do 迴圈控制結構 : 早期是後測迴圈 隱含性變數 : 不經宣告內定為整數型態
13
執行下列 Fortran 之部份程式並求出 K 值
K=-1 DO 400 I=1,5 IF(K) 100,200,300 正、零、負 100 K=K+5 GOTO 400 200 K=2*K+1 GOTO 400 300 K=4*K-2 400 CONTINUE
14
Fortran
共用區 (common area) 作用 處理方式
15
Algol 60
ALGOrithmic Language 發展於 1960 年代 無較大之贊助者 採自由格式 (free format) 首創採區塊結構 (block structure) 允許使用遞迴副程式 (recursive subroutine) 首創使用傳名呼叫法 (call by name) 傳遞參數
16
Algol 60
動態界限陣列 採外顯式 (explicit) 宣告 一個敘述中列出變數的名稱,並宣告他們所
屬的型態,稱為外顯式宣告 首創以保留字 (reserved word) 來定義資料型態
首創結構化程式設計的概念 首創以 B.N.F 來描述語法 (Algol 58 提出 )
17
結構化程式設計
structured programming 把一個大的問題 , 依照邏輯上的特性 , 往下細分成幾個小的問題 , 再把這幾個小的問題 , 依照邏輯的特性 , 再往下細分成更小的問題 , 依此類推 , 直到很容易編寫程式的單元時為止
18
結構化程式設計
基本結構 循序結構 選擇結構 反覆結構
避免使用 GOTO ,破壞程式的可讀性及結構性
19
結構化程式設計
優點可以分工可讀性高 容易維護 易除錯
缺點 程式碼會變長 執行時間較長
20
PASCAL
紀念法國數學家 Blaise Pascal 1975 年發展完成,由 IBM 贊助 提供指標、集合資料型態、紀錄資料型態 允許自訂資料型態 傳值和傳址呼叫 採區塊結構 具嚴謹語法結構,適合教學用途
21
LISP LISt Processing language 1950 年代末期由麻省理工學院發展 S運算式 (S expression)
原子 ( atom ) : 包含符號 ( symbol ) 及數值 ( number ) 。 串列 ( list ) : 則是以小括號括起來的一串資料。
利用垃圾收集法 (garbage collection) 來管理記憶體 使用於人工智慧 (Artificial Intelligence) 之應用,稱為人工智慧的低階語言
劍橋波蘭式 (Cambridge polish notation) 所謂「 S- 表達式」或「 sexp 」(其中「 S 」代表「符號的」),是指一種以人
類可讀的文本形式表達半結構化數據的約定
22
Garbage collection
系統會主動的回收 , 程式不再使用的記憶體空間
範例 Small talk JAVA LISP
23
SNOBOL
StriNg Oriented symBOlic Language 貝爾實驗室於 1960 年代中期發展 具字樣配對 (pattern matching) 能力 具字串處理能力 (string manipulating) 型樣資料型態 (pattern data type)
24
PL/1
Programming Language /1 IBM 於 1960 年代中期設計 綜合 Fortran,Cobol 與 Algol 60 之特性 首創
例外處理 (exception handling) 指標 (pointer) 資料型態 以維也納定義語言 (Vienna Definition Language) 來描述
語意 採區塊結構 提供遞迴呼叫 (recursive call) 的功能 多重任務 (multi-tasking
25
Cobol
COmmon Business Oriental Language 發展於 1960 ~ 1970 年代 , 由美國防部贊助 主要用於商業資料處理,能處理大量資料輸出入 缺乏複雜的數學計算能力 具 IF-THEN-ELSE 敘述 語法傾向自然語言 (natural language) 雜訊字 (noise word) 增加可讀性 go to只處理
go 不處理 to 首創與機器無關的資料描述方式 (data division)
26
COBOL
資料描述方式 IDENTIFICATION DIVISION ENVIRONMENT DIVISION DATA DIVISION PROCEDURE DIVISION
27
Algol W
使用數值結果呼叫法 (call by value result) 傳遞參數
首創 case敘述
提供記錄 (record) 與指標 (pointer) 結構
28
Algol 68
參數的傳遞採用數值結果呼叫法 提供記錄與指標資料型態 首先提供使用者自行定義資料型態的功能
29
APL
A Programming Language 擅長數學計算。 採不標準字元集。 允許陣列整體運算。 提供指標 (pointer) 型態。 提供集合 (set) 資料型態。〔首創〕 提供記錄 (record) 資料型態。 提供 case 結構。 允許使用者自定資料型態。 採傳值呼叫法與傳址呼叫法傳遞參數
30
SIMULA
發展於 1960 年代後期 首創資料抽象化 (data abstraction) 類別 (class)
31
C
貝爾實驗室於 1970 年代發展 採區塊結構 可攜性高 適合發展系統程式 具 Self-compiled 特性
編譯程式大部分以 C 寫成 可呼叫組合語言
32
C++
Bjarne Stroustrup 設計,在貝爾實驗室中發展 主要目標
實現物件導向程式設計理想 採用區塊結構 適合發展系統程式 高可攜性 高機器獨立性(machine independent) 區分大小寫 識別字由大小寫英文字母,數字或底線所構成,但第一個字元不得為數字
33
BASIC
Beginner's All-purpose Symbolic Instruction Code
1960 年代中期發展 交談式 (interactive) 語言 適合程式發展初期使用 利用解譯器 (interpreter) 處理程式
34
Prolog
PROgramming LOGic Alan Colmeraure 於 1970 年代初期發展 適用於人工智慧之應用 邏輯式程式語言 人工智慧的高階語言 1982 年日本宣佈以 Prolog 為第五代電腦之發展語言
35
ADA
紀念 Augusta ADA Byron 美國防部發展 主要運用於國防需求 提供
資料抽象化 例外處理平行處理
36
RPG
Report Program Generator 由 IBM 發展 主要用作大量報表之產生
37
GPSS
General Purpose Simulation System
主要用於模擬 (Simulation)
38
PILOT
Programmed Inquiry Learning Or Teaching
主要應用於電腦輔教學 (Computer Aided Instruction)
可幫助教師編寫教材
39
FORTH
設計的目標是為了提供對電腦的記憶體及速度作最佳之運用
40
MODULA-2
由 Wirth 發展出來,適用於系統軟體之開發
41
JAVA
Sun Microsystems 所發展 名稱之命名是源於突發的靈感 物件導向程式語言,以 class 為基本架構 垃圾收集法 (garbage collection) Multithread 例外 (exception) 處理能力 取消
指標 (pointer) 資料型態 多重繼承 (multiple inheritance) 運算子覆載 (operator overloading)
42
JAVA
Byte Code可在不同的機器平台上移植,待要執行時,再
由 JAVA 的直譯器 (interpreter) 處理此 Byte Code即可
允許程式段能夠透過網路系統到另一個機器平台上執行
JAVA 語言比 C 語言具有更高的可攜性 目前在 Windows NT, Windows 95,
Macintosh, SUN, Linux等開發平台上已有的直譯程式可供使用。
43
高階語言的處理器 作用
將利用高階語言寫成的程式段翻譯成機器可接受的碼。
種類 編譯器 (compiler)
對原始程式碼中的每一條敘述,按照先後順序做一次之處理,並產生對應的目的碼
直譯器 (interpreter) 對原始程式碼中的敘述,按照執行的先後順序做處理,並直接產生程式執行結果
44
編譯器及直譯器的比較 輸入 都用高階語言 輸出 直 : 執行結果 編 : 目的碼 時間 直 : 長 編 : 短 空間 直 : 少 編 : 多 除錯特性 都佳 彈性 直 : 較差 編 : 較佳 適合階段 直 : 開發初期 編 : 開發後期 範例 直 :Basic Lisp Prolog APL編 : Pascal C C++ Cobol Fortran Ada
45
命令式語言 imperative
藉著改變變數之內容以做為控制程式執行的方法 範例
Fortran Cobol Basic Algol Pascal PL/1 C C++ ….
46
應用式語言 applicative
語言藉著函數來表達。因此輸入將作為函數的參數而輸出則為函數的值
範例 Lisp APL Snobol
1. 分別寫出最先引進下列各項概念的程式語言: (a) 區段結構 (block structure) 。 (b) 輸出入格式 (input/output format) 。 (c) 雜訊字 (noise words) 。 (d) 程式定義的特殊條件 (program defined exception condition)
。 (e) 抽象資料型態 (abstract data type) 。
(a) Algol 60 。 (b) Fortran 。 (c) Cobol 。 (d) PL/1 。 (e) SIMULA 。
47
下列十四種重要程式語言,均為有重要特色的:ADA, Algol 60, Algol 68, APL, Basic, C, Cobol, Lisp, Fortran, Modula 2, Pascal, PL/1, Prolog, Snobol試據以回答下列各下題:
(1) 最早發展出來而廣泛應用的程式語言為 。 (2) 美國國防部採用來作為融入式 (embedded) 系統之標準程式語言為
。 (3) 最早為人工智慧所設計的程式語言為 。 (4) 對於程式語言所設計觀念上影響最大的早期程式語言是 。 (5) 由 IBM 公司推出之泛用程式語言是 。 (6) 為字串處理而設計的程式語言是 。
(1) Fortran ( 強調科學計算 ) (2) Ada (3) Lisp (4) Algol 60 (Block structure 的觀念 ) (5) PL/1 (6) Snobol
48
何謂外顯式型態法 (explicit typing)?何謂內隱式型態法 (implicit typing)?
外顯式型態法是指符號在使用前必須先定義,內隱式型態法則是指符號在使用前不必先定義。
49
程式語言常見的設計準則為何?
(1) 語法 (syntax) 及語意 (semantics)定義必須明確。
(2) 高可靠性。 (3) 快速翻譯 (4) 具機器獨立性。 (5) 最佳化的目的碼,藉以加快執行速
度。
50
程式設計 (design)與撰寫(coding)有何不同?
程式設計是指根據使用者需求設計出演算法 (algorithm) ,而撰寫則是依照演算法並挑選適當的程式語言,根據該程式語言的語法編寫出程式段。
51
近代程式語言應有那些主要特性?
(1) 程式的結構為塊狀結構 (block structure) 。
(2) 應具有型態及型態檢驗 (type checking)的功能;可利用此項功能來判斷變數的型態是否合法。
(3) 變數的領域範圍,有一定的規則來處理( 如靜態領域規則與動態領域規則 ) 。
(4) 命令式語言。 (5) 程式須經過語言處理器的處理才能執行。
52
程式語言直譯式和編譯式有何差異 輸入 都用高階語言 輸出 直 : 執行結果 編 : 目的碼 時間 直 :長 編 :短 空間 直 :少 編 :多 除錯特性 都佳 彈性 直 : 較差 編 : 較佳 適合階段 直 :開發初期 編 :開發後期 範例 直 :Basic Lisp Prolog APL編 : Pascal C C++ Cobol Fortran Ada
53