Presentation is loading. Please wait.

Presentation is loading. Please wait.

6-1 程式語言發展史 6-2 資料型態 6-3 程式指令 6-4 程序定義和使用

Similar presentations


Presentation on theme: "6-1 程式語言發展史 6-2 資料型態 6-3 程式指令 6-4 程序定義和使用"— Presentation transcript:

1 6-1 程式語言發展史 6-2 資料型態 6-3 程式指令 6-4 程序定義和使用
第6章 程式語言 6-1 程式語言發展史 6-2 資料型態 6-3 程式指令 6-4 程序定義和使用

2 6-1 程式語言發展史 機器語言 組合語言 電腦所能接受 由0與1組成 將0、1字串以符號表示 優點: 缺點: 指令比機器語言更易於學習
必須符合特定機器,不具可攜性 不具結構性,程式仍然不易理解

3 高階語言 範例:C語言 特性 編譯:高階語言的程式碼需編譯成目的碼之後才能執行,流程如下圖: 可讀性高,容易理解 比較容易維護和修改
具有可攜性 編譯:高階語言的程式碼需編譯成目的碼之後才能執行,流程如下圖:

4 程式語言發展年表

5 FORTRAN 第一個高階語言,為IBM於1957年左右推出 針對複雜的科學計算所設計 範例:

6 LISP MIT教授John McCarthy於1958年所推出 適合作符號運算 在人工智慧的應用特別重要 範例:

7 COBOL 專為商業資料處理而設計的語言 提供便利的檔案描述與處理 特別重視資料的定義 範例:

8 BASIC 隨著個人電腦推出 簡單易學,但不是很嚴謹 微軟的VISUAL BASIC(簡稱VB),為BASIC語言提供了視覺化的簡易開發環境
範例:

9 PASCAL 發源於歐洲 具有完備的資料型態,和結構化的控制結構 程式可讀性高,常為教科書所用 範例:

10 C 為了UNIX作業系統所設計 具有高階的結構化敘述,也具備了類似低階語言控制硬體的能力 為目前最常被使用的高階語言之一 範例:

11 PROLOG 1972年於法國所推出 邏輯化程式設計的代表 在人工智慧領域有重要應用 範例

12 ADA 由美國國防部主導 名稱是紀念世界上第一位程式設計員Ada Byron 希望結合所有語言的特性 語言過於複雜,目前所知的應用不多

13 C++ 基於C所擴充的物件導向程式語言 在類別中,可定義資料(Data member)和行為(Function member)
可以指定使用範圍為公開的(Public),或是私自的(Private) 範例:

14 JAVA 美國Sun公司於1995年發表 具備有物件導向的特性 提供了跨平台的功能 範例:

15 ASP.NET 為了即時地從資料庫中抓取資料來動態地形成網頁,微軟提供了ASP語言(Active Server Page)。
微軟進一步提出一系列以「.NET」為名稱的解決方案,以便更方便地發展以Web為基礎的應用程式,其中也包含了ASP.NET。 ASP.NET大幅度地改善了ASP的缺點,除了將程式分成HTML和Script不同的區塊,便於撰寫和除錯,也具有物件導向語言的特性。 針對Script的部份,ASP.NET還支援多種不同的程式語言,特別包括微軟於1998年新設計的C#語言。

16 程式語言依照特性分類

17 6-2 資料型態 用以表示一個應用系統中要處理的對象 常見的資料型態 資料型態決定:
數字:整數(int)、長整數(long int)、浮點數(float)、雙精準數(double) 文字:字元(char)、字串(string) 資料型態決定: 所需空間 可表示的數值或資料範圍(參見下頁) 有意義的運算

18 C的資料型態

19 陣列 表示一系列相同型態的資料 範例:一個包含50個整數的陣列 int score[50]; C語言預設以註標0來表示陣列的第一個元素

20 結構 將一些相關資料,聚集成一個單元一起表示 範例: struct student { char(6) name;
char(10) major; int year; }; 結構的名稱為「student」 欄位「name」的資料型態為6個字元(char),欄位「major」的資料型態為10個字元,欄位「year」的資料型態為整數

21 結構(續) 定義完結構之後可用以宣告為變數的型態 範例:宣告變數「x」的資料型態為「student」結構 struct student x;
可以利用小數點加上欄位名稱,來指出結構變數中的某一個成分 範例: x.name、x.major、x.year

22 指標 記錄某個資料在記憶體的位置 提供了非直接存取(Indirect Accessing)的功能 使用指標的理由 效率性的考量
指標所需的空間是固定的,可作為複雜結構的代理人 不能確定資料的大小 若使用陣列,預先宣告的空間可能浪費或不夠

23 鏈結串列 表示大小會變化的資料 將資料用節點表示,利用指標將節點串連起來 範例: struct node 鏈結串列的示意圖 {
int data; struct node *next; }; 符號「*」表示指標變數 處理的資料為整數型態 鏈結串列的示意圖

24 6-3 程式指令 程式語言提供的指令,以組合出正確的程式 以下使用C和PASCAL語言作為範例
同時使用流程圖(Flow chart)來輔助說明指令代表的邏輯結構,和步驟間的關聯,其符號如下圖:

25 比較:If 提供邏輯判斷式 如果 “If” 後面接的運算式被判斷為真,則程式會繼續執行 “Then” 後面的運算式
如果 “If” 後面接的運算式被判斷為不真,則程式會繼續執行 “Else” 後面的運算式 注意: C裡面省略了 “Then”關鍵字 “Else” 後面的運算式可以不提供,如此程式不會有任何動作 範例:在變數 “i” 的值大於0時,變數 “x” 的值設定為 “10”,否則變數 “y” 的值設定為 “5”

26 If範例和流程圖

27 巢狀If 在 “Then” 或 “Else” 的部分,再放入另一個 “If” 敘述
範例:當變數 “i” 的值被判斷為正之後,我們需要再確定變數 “a” 的值大於變數 “b” 的值,才會指定變數 “x” 為10

28 固定次數的迴圈:For 事先指定好迴圈的執行次數 C沒有此種指令
範例:透過變數 “i” 的值將迴圈的執行次數控制為5次,同時變數 “x”的值在迴圈結束後,會等於整數1加到整數5的和

29 不固定次數的迴圈:while 迴圈的執行次數並沒有直接在程式裡指定好 利用邏輯判斷式決定迴圈要執行幾次

30 while (續) 對應的流程圖如右 注意:必須適當的改變變數值,使得邏輯判斷式的真假值改變,否則會造成無窮迴圈的情況

31 先執行再判斷的寫法 先執行命令,再進行邏輯式的判斷 當判斷式為真 範例: C提供的 “do-while” 指令會留在迴圈裡
PASCAL提供的 “Repeat-until” 指令會離開迴圈 範例: d w

32 不固定次數的迴圈:for C語言裡面的for指令分成以下三部分: 在執行迴圈之前,所需要先給定的初始值設定
進入或留在迴圈的條件,有如While指令後面接著的判斷式 在每當要執行下一次迴圈之前,所需要執行的式子 w f

33 6-4 程序定義和使用 定義程序時,所必須提供的資訊 範例:有回傳值的程序,又稱做函數 程序名稱 程序本體,含變數宣告和命令敘述
正式參數(Formal parameter)宣告 程序回傳的資料型態 範例:有回傳值的程序,又稱做函數

34 鏈結串列的程序範例 程序名稱:changehead;
正式參數:兩個資料型態為指到結構 “node”的指標參數,分別叫做 “p” 和 “q”; 局部變數:一個資料型態為指到結構 “node”的指標變數,叫做 “temp”; 程序本體:將 “p” 串列的第一個節點移除,然後加入到 “q” 串列的第一個節點前,其4個步驟如下頁所示; 回傳值:並無回傳值,在C語言裡是以 “void” 表示之。

35 執行步驟示意圖

36 程序呼叫 在運算式中呼叫函數 x = square(5) * 10; 一般沒有回傳值的程序,會如同一般命令的被呼叫 範例:
p->data = 3; q->data = 5; changehead(p, q );

37 全域變數VS. 局部變數 全域變數(Global variable) 局部變數(Local variable) 範例:(見下頁)
能被全部的程式碼使用到 通常定義在整個程式碼的最前端 局部變數(Local variable) 只能被一部份程式碼使用到 通常定義在程序中 範例:(見下頁) 全域變數:變數 “a” Main的局部變數:變數 “c”

38 程序範例

39 參數傳遞 正式參數 真實參數 以值傳遞(passed by value) 在定義程序時同時定義,必須宣告其資料型態
在呼叫程序時所提供,必須符合正式參數的資料型態 以值傳遞(passed by value) 把真實參數的「值」算出來,然後再傳給正式參數 範例: z = square(5+3) * 10; 先算出 “5+3” 的值之後,再將其傳給正式參數 “x”

40 參數傳遞(續) 以值傳遞 以位址傳遞(passed by reference) 最常見的方式 沒有辦法改變真實參數的值
把真實參數在記憶體的位址傳給正式參數 程序裡的運算會直接作用在真實參數上 真實參數的值因而可以改變

41 以位址傳遞的程序定義和呼叫


Download ppt "6-1 程式語言發展史 6-2 資料型態 6-3 程式指令 6-4 程序定義和使用"

Similar presentations


Ads by Google