BCB BASIC Fortran COBOL PASCAL C C Interpreter
語言轉譯程式 非 常 高 階 語 言 BCB 高階語言 BASIC Fortran COBOL PASCAL C C++ Interpreter 直譯程式 Compiler 編譯程式 ASSEMBLY 組合語言 機器語言 Assembler 組譯程式 Machine Code 機器程式碼
程式語言的應用 p 科學計算 n p 商業應用 n p COBOL (Common Business Language) 人 智慧 n p FORTRAN (Mathematical FORmula TRANslating System) LISP, Prolog 系統程式語言 n C, C++
資料型態 p 整數型態 n n p int: 2 bytes, -32768(-216)~+32767(+216 -1) long: 4 bytes, -2147483648(-232)~+2147483647(+232 -1) 浮點數型態 n IEEE-754 p p 字符型態 n p 單精準度:Sign(1 bit) + Exponent(8 bits) + Mantissa(23 bits) char: 1 byte, ASCII 陣列型態 n A[1] A[2] A[99] ……… n 一群具有相同資料型態的變數所組成,如 int A[100] 資料型態可為:整數,浮點數,字符…等。 A[0]
副程式參數傳遞法 2. Call by Address (傳址) n n n 又稱“Call by Reference” 將只程式實際參數的位址,傳 給副程式的形式參數,主程式 實際參數的值可能改變,有 side effect (副作用) 。 C++採用Call by Address x 1000 1500 5/ 10 a 1500 1000 / y b / 5 10 / 1500 1000 t 1000 位址 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); }
副程式參數傳遞法 4. Call by Value/Result p 取代Call by Address, 因為在分散式環境裡, 主副程式的address 配 置不同,所以不能用 Call by Address,有 side effect (副作用)。 a x 5 10 / y 5 10 / b /5 10 t 5 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); }
副程式參數傳遞法 p Homework_8 program main(input,output); procedure p(x,y,z); 請分別以下列參數傳遞法 1. call by value 2. call by address 3. call by name 4. call by value/result 寫出右列程式之最後輸出 結果。 begin y:=y+1; z:=z+x; end; begin a:=2; b:=3; p(a+b,a,a); print "a=",a; end
副程式參數傳遞法 main( ) 請分別以下列參數傳遞法 { 1. call by value int a[5]={2, 4, 6, 8, 10}; 2. call by address int x=1; 3. call by name f(x, a[x]); 4. call by value/result print “x=“, x; 寫出右列程式之最後輸出結果。 print a[0], a[1], a[2], a[3], a[4]; } void f(int i, int j ) { i=3; j=100; }
- Slides: 18