程式語言簡介.

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

課程名稱:計算機概論 授課老師:李春雄 博士
軟體工程 -物件導向程式設計與UML系統分析實作
第八章 组织文化的整合 ——并购中的文化整合(二) 小组成员:浦若蓉、朱谷一、贾彦彦.
第一章 認識程式語言.
第6章 软件编码 6.1 程序设计语言 6.2 编码风格及软件效率 6.3 程序复杂度的概念及度量方法 6.4 小结.
陳維魁 博士 儒林圖書公司 第九章 資料抽象化 陳維魁 博士 儒林圖書公司.
新世代計算機概論 第14章 程式語言.
TQC+ JAVA全國教師研習會 PLWeb 程式設計練習平台 簡介.
第9章 运行时的存储组织 重点:符号表的内容、组织,过程调用实现, 难点:参数传递,过程说明语句代码结构,
Chapter 5 遞迴 資料結構導論 - C語言實作.
程式語言的基礎 Input Output Program 世代 程式語言 第一世代 Machine language 第二世代
程式設計概論 1.1 程式設計概論 程式語言的演進 物件導向程式 程式開發流程 1.2 C++開發工具
第一章 C语言概述.
第十一章 結構.
Java簡介.
物件導向程式設計 CH1, CH2.
Chapter 1 Introduction.
陳維魁 博士 儒林圖書公司 第七章 參數的傳遞 陳維魁 博士 儒林圖書公司.
第1章 認識Arduino.
列舉(enum).
Introduction to the C Programming Language
101北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
第一章 C語言概論 本章投影片僅供本書上課教師使用,非經同意請勿拷貝或轉載.
Introduction to the C Programming Language
類別(class) 類別class與物件object.
SQL Stored Procedure SQL 預存程序.
ASP.NET基本設計與操作 建國科技大學 資管系 饒瑞佶 2007年.
安裝JDK 安裝Eclipse Eclipse 中文化
Methods 靜宜大學資工系 蔡奇偉副教授 ©2011.
Chapter 2 Basic Elements of Fortran
Concepts in General / Web Programming
程式語言Visual Basic 傳址與傳值
重點 資料結構之選定會影響演算法 選擇對的資料結構讓您上天堂 程式.
Java 程式設計 講師:FrankLin.
Chap3 Linked List 鏈結串列.
Introduction to the C Programming Language
第 1 章 Java 簡介.
第一單元 建立java 程式.
OOP6 結構Struct 黃兆武.
第十章 指標.
緩衝區溢位攻擊 學生:A 羅以豪 教授:梁明章
程式語言 程式語言發展史 資料型態 程式指令 程序定義和使用.
第3 语言翻译问题 [学习目标]:学习和掌握语言的语法的基本概念和基本要素,理解翻译的步骤;学习和掌握BNF文法。
計算機概論 跨越講義 第4章 基本視窗程式應用 4-1 程式語言簡介 4-2 結構化VS物件導向程式設計
第九章 运行时存储空间组织 网上教学系统: : 编译原理
陣列與結構.
第四章 函数 丘志杰 电子科技大学 计算机学院 软件学院.
北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
编译原理实践 1.课程说明及引论.
資料表示方法 資料儲存單位.
第十二章 位运算.
编译原理 第一章 引 论 南京大学计算机科学与技术系 戴新宇.
查表法&電腦IO Port二進制轉七段顯示器
第四章 陣列、指標與參考 4-1 物件陣列 4-2 使用物件指標 4-3 this指標 4-4 new 與 delete
程式語言簡介 2019/7/17 明乘中學編製.
Introduction to the C Programming Language
Programming & Language Telling the computer what to do
第 4 章、組譯器 作者:陳鍾誠 旗標出版社.
開發Java程式語言的工具 JDK.
第三章 Arduino互動程式設計入門 Arduino程式基礎 認識變數 認識數字系統 認識常數.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
資料!你家住哪裏? --談指標 綠園.
國中資訊教育(I) 第二章 認識電腦 2-4 程式語言.
C語言程式設計 老師:謝孟諺 助教:楊斯竣.
Introduction to the C Programming Language
Unix指令4-文字編輯與程式撰寫.
编译原理 中南大学软件学院 陈志刚.
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
InputStreamReader Console Scanner
Presentation transcript:

程式語言簡介

程式語言的演進 一、機器語言(machine language) 二、組合語言(assembly language) 由一堆的「0」或「1」所組成。 對於不同型態的電腦,因為其結構不同就有不同的機器語言。 不容易撰寫外,對於程式的維護也相對的困難。 二、組合語言(assembly language) 使用輔助記憶碼以方便記憶。 不同型態的電腦,其組合語言也是不相同的。 須經由assembler(組譯程式)組譯成機器碼後,才可執行。

程式語言的演進 三、高階語言(high-level language) 四、非常高階語言(very high-level language) 使用人們所熟悉的語法來描述。 大大減低了程式設計的難度,這使得它廣為程式設計師所採用。 須經由compiler(編譯程式)或interpreter(直譯程式)翻譯成機器碼後,才可執行。 四、非常高階語言(very high-level language) 第四代程式語言 (fourth –Generation Language;4GL) 程式設計師只要設定它所要的格式及其結果,這種語言會自動推展出所期望的程式碼。

語言轉譯程式 非常高階語言 高階語言 Interpreter 直譯程式 Compiler 編譯程式 Machine Code 機器程式碼 BASIC 非常高階語言 高階語言 Interpreter 直譯程式 Fortran COBOL PASCAL C C++ BCB Compiler 編譯程式 Machine Code 機器程式碼 ASSEMBLY 組合語言 Assembler 組譯程式 機器語言

語言轉譯程式 對於高階(High Level)語言,您仍得將其翻譯成機械碼才得以執行。 翻譯的方式有兩種: 直譯法(為直譯程式的翻譯方式) 亦即當演講者講了一句後,翻譯員立即將此句翻譯給聽眾,聽眾馬上了解演講者所講的這句話;如此一直到演講者講完為止。 全譯法(為編譯程式的翻譯方式) 亦即讓演講者將整篇講稿講完後,翻譯員才將整篇講稿翻譯出來,而後聽眾才了解整個演講的內容。

語言轉譯程式 直譯器 (Interpreter) 直譯法的優點是: 1.在直譯法下,使用者欲執行程式時,一般是執行一條命令即可。 2.直譯程式該翻譯程式在被使用者使用過程中,一般都儲存在主記憶體,所以當使用者每次執行程式時,不必浪費取出直譯程式的 I/O 時間。 3.由於在直譯法下,使用者不需要執行連結的工作,所以可以省去不少有關連結工作的 I/O 時間。 4.直譯程式在執行時,是採用交談式(Interactive)的方式。亦即使用者可以很容易的與電腦作溝通之工作。

語言轉譯程式 編譯器 (Compiler) 1.產生目的程式 2.產生可執行之機器語言程式 3.執行程式 欲利用編譯器來完成高階語言之翻譯然後執行時,一般需要逐次完成下列三個步驟後,才能完成使用者程式之執行工作。 1.產生目的程式 利用編譯程式將原始程式全部翻譯成機器語言程式,亦即翻譯成目的程式。 2.產生可執行之機器語言程式 利用廠商所提供的連結程式(Linker)執行連結的工作。此時才產生一個可執行的機器語言程式。該可執行的機器語言程式,在IBM PC 下稱之為可執行程式(Executable Program) ,其延伸檔名(Filename Extension)一般為 EXE 或 COM。 3.執行程式 執行使用者程式,亦即執行機器語言程式。

程式語言的應用 科學計算 商業應用 人工智慧 系統程式語言 FORTRAN (Mathematical FORmula TRANslating System) 商業應用 COBOL (Common Business Language) 人工智慧 LISP, Prolog 系統程式語言 C, C++

資料型態 整數型態 浮點數型態 字符型態 陣列型態 int:2 bytes, -32768(-216)~+32767(+216-1) long:4 bytes, -2147483648(-232)~+2147483647(+232-1) 浮點數型態 IEEE-754 單精準度:Sign(1 bit) + Exponent(8 bits) + Mantissa(23 bits) 字符型態 char:1 byte, ASCII 陣列型態 一群具有相同資料型態的變數所組成,如 int A[100] 資料型態可為:整數,浮點數,字符…等。 A[0] A[1] A[2] ……… ……… A[99]

資料型態 紀錄型態 指標型態 又稱為結構型態,存放的是不同類型的資料型態,由一群欄位(Field)所結合而成。 指標型態所存放的值是位址。 完成資料結構的好幫手。 struct scoretable { int id; char name; int score[5]; } student[100] int a; int *p; a=10; P=&a;

變數的範疇(scope) 靜態範疇 動態範疇 副程式sub1並未定義 x 的值為10。 依程式本身,變數的實際位置來決定。 依程式執行時,副程式的呼叫順序來決定。 副程式sub1並未定義 x 的值為10。 如果採用“靜態範疇”規則,印出的 x = ? 為什麼? 如果採用“動態範疇”規則,印出的 x = ? 為什麼? PROGRAM main INTEGER x; PROCEDURE sub1 BEGIN PRINT x; END PROCEDURE sub2 x=20; CALL sub1; x=10; CALL sub2;

副程式參數傳遞法 形式參數 實際參數 副程式本身所定義的參數名稱及型態 呼叫者(主程式)呼叫副程式時,所附上一些該有的參數。 void swap(int a, int b) { int t; t=a; a=b; b=t; } main ( ) int x=5, y=10; swap (x,y); Printf(“%d,%d”.x,y); 形式參數 實際參數

副程式參數傳遞法 Call by Value (傳值) 僅將主程式實際參數的值,copy給副程式的形式參數,主程式實際參數的值不會改變,沒有side effect (副作用) 。 C語言只有call by value void swap(int a, int b) { int t; t=a; a=b; b=t; } main ( ) int x=5, y=10; swap (x,y); Printf(“%d,%d”.x,y); x a 5 5 / 10 t 5 y b 10 10 / 5

副程式參數傳遞法 Call by Address (傳址) 又稱“Call by Reference” 將只程式實際參數的位址,傳給副程式的形式參數,主程式實際參數的值可能改變,有side effect (副作用) 。 C++採用Call by Address void swap(int a, int b) { int t; t=a; a=b; b=t; } main ( ) int x=5, y=10; swap (x,y); Printf(“%d,%d”.x,y); x a t 1500 / 1000 5 / 10 1000 1000 位址 y b 1500 10 / 5 / 1000 1500

副程式參數傳遞法 Call by Name (傳名) 以實際參數的名稱取代形式參數(早期的做法),有side effect(副作用)。 void swap(int a, int b) { int t; t=a; a=b; b=t; } main ( ) int x=5, y=10; swap (x,y); Printf(“%d,%d”.x,y); x / x a 5 / 10 5 / 10 t 5 y b / y 10 / 5 10 / 5

副程式參數傳遞法 Call by Value/Result 取代Call by Address,因為在分散式環境裡,主副程式的address 配置不同,所以不能用Call by Address,有side effect (副作用)。 void swap(int a, int b) { int t; t=a; a=b; b=t; } main ( ) int x=5, y=10; swap (x,y); Printf(“%d,%d”.x,y); x a 10 / 5 5 / 10 t 5 y b 5 / 10 10 / 5

副程式參數傳遞法 Homework_8 請分別以下列參數傳遞法 call by value call by address call by name call by value/result 寫出右列程式之最後輸出結果。 program main(input,output); procedure p(x,y,z); begin y:=y+1; z:=z+x; end; a:=2; b:=3; p(a+b,a,a); print "a=",a; end

副程式參數傳遞法 請分別以下列參數傳遞法 call by value call by address call by name main( ) { int a[5]={2,4,6,8,10}; int x=1; f(x,a[x]); print “x=“, x; print a[0],a[1],a[2],a[3],a[4]; } void f(int i, int j ) i=3; j=100; 請分別以下列參數傳遞法 call by value call by address call by name call by value/result 寫出右列程式之最後輸出結果。