Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Programming Languages Implementation of Control Structures Cao Hoaøng Truï Khoa Coâng Ngheä Thoâng Tin Ñaïi Hoïc Baùch Khoa TP. HCM.

Similar presentations


Presentation on theme: "1 Programming Languages Implementation of Control Structures Cao Hoaøng Truï Khoa Coâng Ngheä Thoâng Tin Ñaïi Hoïc Baùch Khoa TP. HCM."— Presentation transcript:

1 1 Programming Languages Implementation of Control Structures Cao Hoaøng Truï Khoa Coâng Ngheä Thoâng Tin Ñaïi Hoïc Baùch Khoa TP. HCM

2 2 Contents Sequence control Data control

3 3 Sequence Control Expressions Statements Subprograms

4 4 Expressions Control mechanism Syntax Execution-time representation Evaluation

5 5 Control Mechanism Functional composition: (A + B)  (C - A)  (+ (A, B), - (C, A))

6 6 Syntax Infix: A  B + C  binary operations only  computation order ambiguity

7 7 Syntax Prefix:  ordinary  (+ (A, B), - (C, A))  Cambridge Polish (  (+ A B) (- C A))  Polish  + A B - C A

8 8 Syntax Prefix:  different numbers of operands  ordinary/ Cambridge Polish: cumbersome with parentheses  Polish: number of operands known in advance

9 9 Syntax Postfix:  ordinary  ((A, B) +, (C, A) -)   Polish A B + C A -   suitable execution-time representation

10 10 Execution-Time Representation Interpretation:  tree structures  + - ABCA  prefix or postfix

11 11 Execution-Time Representation Compilation: machine code sequences PUSH A PUSH B ADD PUSH C PUSH A SUB MUL AA B A + B C C A C - A (A+B)  (C-A)

12 12 Execution-Time Representation Compilation: machine code sequences PUSH A PUSH B ADD PUSH C PUSH A SUB MUL AA B A + B C C A C - A (A+B)  (C-A) A B + C A - 

13 13 Evaluation No simple uniform evaluation rule is satisfactory:  + - ABCA

14 14 Evaluation Side effects: A  FOO(X) + A +  AFOO(X) A

15 15 Evaluation Side effects: A  B  C = 10 20  10 -20  10 -20 (A  B)  C = 1  10 -20 = 10 -20 A  (B  C) = 10 20  0 = 0

16 16 Evaluation Short-circuit Boolean expressions: if (A = 0) or (B/A > C) then …

17 17 Evaluation Short-circuit Boolean expressions: if (A = 0) or else (B/A > C) then …

18 18 Sequence Control Expressions Statements Subprograms

19 19 Statements GOTO Sequencing Selection Iteration

20 20 GOTO GOTO L JMP L L

21 21 Sequencing begin S 1 ; S 2 ; … S n ; end S 1 codes S 2 codes S n codes

22 22 Selection if A = 0 then S 1 else S 2 ; S 3 ; JEQ0 A L 1 S 2 codes JMP L 2 S 1 codes L1L1 S 3 codes L2L2 if:

23 23 Selection var E: 0..2; case E of 1: S 1 ; 2: S 2 ; else: S 0 end; S 3 ; JMP  +v E  v JMP L 0 JMP L 1 JMP L 2  S 1 codes L1L1 case:  +1 JMP L 3  +2 S 2 codes JMP L 3 S 0 codes S 3 codes L2L2 L0L0 JUMP table L3L3

24 24 Iteration for I := E 1 to E 2 do S; I := E 1 ; L 0 : if I > E 2 then GOTO L 1 ; S; I := I + 1; GOTO L 0 ; L 1 : … for:

25 25 Iteration while C do S; L 0 : if not(C) then GOTO L 1 ; S; GOTO L 0 ; L 1 : … while:

26 26 Iteration repeat S until C; L 0 : S; if not(C) then GOTO L 0 ; repeat:

27 27 Sequence Control Expressions Statements Subprograms

28 28 Subprograms Simple call-return Recursive calls

29 29 Simple Call-Return No recursive calls Explicit calls Complete execution Immediate control transfer Single execution sequence

30 30 Simple Call-Return call A I0I0 I1I1 call B I2I2 I3I3 end return I4I4 MAINAB

31 31 Simple Call-Return call A I0I0 I1I1 end MAIN local data MAIN I0I0 CIP (current instruction pointer)

32 32 Simple Call-Return call A I0I0 I1I1 call B I2I2 I3I3 end return MAINA local data MAIN local data A I1I1 I2I2 CIP

33 33 Simple Call-Return call A I0I0 I1I1 call B I2I2 I3I3 end return I4I4 MAINAB local data MAIN local data A local data B I1I1 I3I3 I4I4 CIP

34 34 Recursive Calls call A I0I0 I1I1 call B I2I2 I3I3 endreturn I4I4 MAINAB call A I5I5 local data MAIN -- R0R0 I0I0 CIP R0R0 CEP (current environment pointer)

35 35 Recursive Calls call A I0I0 I1I1 call B I2I2 I3I3 endreturn I4I4 MAINAB call A I5I5 local data MAIN -- local data A R0R0 I1I1 R0R0 R1R1 I2I2 CIP R1R1 CEP

36 36 Recursive Calls call A I0I0 I1I1 call B I2I2 I3I3 endreturn I4I4 MAINAB call A I5I5 local data MAIN -- local data A R0R0 I1I1 local data B R1R1 I3I3 R0R0 R1R1 R2R2 I4I4 CIP R2R2 CEP

37 37 Recursive Calls call A I0I0 I1I1 call B I2I2 I3I3 endreturn I4I4 MAINAB call A I5I5 local data MAIN -- local data A R0R0 I1I1 local data B R1R1 I3I3 local data A R2R2 I5I5 R0R0 R1R1 R2R2 R3R3 I2I2 CIP R3R3 CEP

38 38 Recursive Calls call A I0I0 I1I1 call B I2I2 I3I3 endreturn I4I4 MAINAB call A I5I5 local data MAIN -- local data A R0R0 I1I1 local data B R1R1 I3I3 local data A R2R2 I5I5 R0R0 R1R1 R2R2 R3R3 I2I2 CIP R3R3 CEP Dynamic chain

39 39 Central Stack local data -- R0R0 I0I0 CIP R0R0 CEP call A I0I0 I1I1 end MAIN

40 40 Central Stack local data -- R0R0 I2I2 CIP R1R1 CEP call B I2I2 I3I3 return A MAIN local data R0R0 I1I1 R1R1 A call A I0I0 I1I1 end MAIN

41 41 Central Stack local data -- R0R0 I4I4 CIP R2R2 CEP call A I4I4 I5I5 return B MAIN local data R0R0 I1I1 R1R1 A R1R1 I3I3 R2R2 B call B I2I2 I3I3 return A

42 42 Central Stack local data -- R0R0 I2I2 CIP R3R3 CEP call A I4I4 I5I5 return B MAIN local data R0R0 I1I1 R1R1 A R1R1 I3I3 R2R2 B call B I2I2 I3I3 return A local data R2R2 I5I5 R2R2 A

43 43 Exercises Illustrate the storage representation of A: array [0..1, 1..2, 1..3] of integer using the column-major order. Give the accessing formula for computing the location of A[I, J, K], supposing that the size of an integer is 2 bytes.

44 44 Exercises Given the following program: program MAIN; function FAC(N: integer): integer; begin if N <= 1 then FAC := 1 else FAC := N  FAC(N - 1) end; begin write(FAC(3)) end. Illustrate the code segment and activation records of MAIN and FAC in the central stack during execution of the program.

45 45 Contents Sequence control Data control

46 46 Data Control Basic concepts Local data and environments Shared data: dynamic scope Shared data: block structure Shared data: parameter transmission

47 47 Basic Concepts Names Referencing environments Scope Block structure

48 48 Names Variable names Formal parameter names Subprogram names Names for defined types Names for defined constants

49 49 Referencing Environments Association: Name --------> Data Object Referencing environment = set of associations

50 50 Referencing Environments program MAIN; var X: integer; … X := 0; object Association

51 51 Referencing Environments Local Non-Local Global Predefined

52 52 Local Environments program MAIN; var X: integer; … procedure SUB1; var X: real; … X := 1; object 2 object 1

53 53 Non-Local Environments program MAIN; var X: integer; … procedure SUB1; var X: real; … procedure SUB2; … X := 2; object 2 object 1

54 54 Global Environments program MAIN; var X: integer; … procedure SUB1; var X: real; … procedure SUB3; … X := 3; object 2 object 1

55 55 Predefined Environments program MAIN; var X: integer; … X := MAXINT - 1; … write(X) 65535 codes for “write”

56 56 Referencing Environments Visibility of an association Referencing operations Local, non-local, global references

57 57 Visibility program MAIN; var X: integer; … procedure SUB1; var X: real; … X := 1; object 2 object 1 Hidden Visible

58 58 Referencing Operations Name  Environment  Data Object

59 59 Referencing Operations program MAIN; var X: integer; … procedure SUB1; var X: real; … X := 1; object 2 object 1 X  (X  object 2 )  object 2

60 60 Referencing Environments Visibility of an association Referencing operations Local, non-local, global references

61 61 Local References program MAIN; var X: integer; … procedure SUB1; var X: real; … X := 1; object 2 object 1 X  (X  object 2 )  object 2

62 62 Non-Local References program MAIN; var X: integer; … procedure SUB1; var X: real; … procedure SUB3; … X := 2; object 2 object 1 X  (X  object 2 )  object 2

63 63 Global References program MAIN; var X: integer; … procedure SUB1; var X: real; … procedure SUB2; … X := 2; object 2 object 1 X  (X  object 1 )  object 1

64 64 Basic Concepts Names Referencing environments Scope Block structure

65 65 Scope The program part (text or execution) within which the binding is effective.

66 66 Dynamic Scope The subprogram activations within which the association is effective.

67 67 Dynamic Scope program MAIN; var X: integer; … procedure SUB1; var X: real; … X := 1; procedure SUB2; … X := 2; object 1 MAIN SUB1 SUB2

68 68 Static Scope The program text within which the declaration is effective.

69 69 program MAIN; var X: integer; X  integer … procedure SUB1; var X: real; … X := 1; procedure SUB2; … X := 2; Static Scope

70 70 program MAIN; var X: integer; X  integer … procedure SUB1; var X: real; … X := 1; procedure SUB2; … X := 2; Static Scope Static scopes define dynamic scopes

71 71 Static Referencing Environments Local, non-local, global environments Local, non-local, global references

72 72 Basic Concepts Names Referencing environments Scope Block structure

73 73 Block Structure program MAIN; … procedure SUB1; … procedure SUB3; … procedure SUB4; … procedure SUB2; … MAIN SUB1 SUB3 SUB2 SUB4

74 74 Static Scope Rules 1.The declarations at the head of each block defines the local referencing environment for that block MAIN SUB1 SUB3 SUB2 SUB4 X: real

75 75 Static Scope Rules 2.If no local declarations exists, then refer to the nearest enclosing block having the declaration in need MAIN SUB1 SUB3 SUB2 SUB4 X: real X: integer X := 1

76 76 Static Scope Rules 3.Any local declaration of a block is hidden from its outer blocks MAIN SUB1 SUB3 SUB2 SUB4 X: real

77 77 Static Scope Rules 4.The block name is part of the local referencing environment of the containing block MAIN SUB1 SUB3 SUB2 SUB4

78 78 Data Control Basic concepts Local data and environments Shared data: dynamic scope Shared data: block structure Shared data: parameter transmission

79 79 Local Data and Environments procedure SUB(X: integer); var Y: real; Z: array [1..3] of real; procedure SUB1; … begin … end; begin … end; object 2 SUB object 2 X Y Z SUB1 code segment

80 80 Data Control Basic concepts Local data and environments Shared data: dynamic scope Shared data: block structure Shared data: parameter transmission

81 81 Shared Data: Dynamic Scope program MAIN; procedure SUB1; var X, Y: real; … procedure SUB2; var B, A, U, X: integer; … procedure SUB3; var Z, Y, A, W, V: char; … MAIN SUB1 SUB2 SUB3

82 82 Shared Data: Dynamic Scope program MAIN; procedure SUB1; var X, Y: real; … procedure SUB2; var B, A, U, X: integer; … procedure SUB3; var Z, Y, A, W, V: char; … MAIN X Y SUB1 Return point

83 83 Shared Data: Dynamic Scope program MAIN; procedure SUB1; var X, Y: real; … procedure SUB2; var B, A, U, X: integer; … procedure SUB3; var Z, Y, A, W, V: char; … MAIN X Y B A U X SUB1 SUB2 Return point Dynamic chain

84 84 Shared Data: Dynamic Scope program MAIN; procedure SUB1; var X, Y: real; … procedure SUB2; var B, A, U, X: integer; … procedure SUB3; var Z, Y, A, W, V: char; … MAIN X Y B A U Z Y A W V X SUB1 SUB2 SUB3 Return point Dynamic chain

85 85 Shared Data: Dynamic Scope program MAIN; procedure SUB1; var X, Y: real; … procedure SUB2; var B, A, U, X: integer; … procedure SUB3; var Z, Y, A, W, V: char; … MAIN X Y B A U Z Y A W V X SUB1 SUB2 SUB3 Return point Dynamic chain

86 86 Shared Data: Dynamic Scope program MAIN; procedure SUB1; var X, Y: real; … procedure SUB2; var B, A, U, X: integer; … procedure SUB3; var Z, Y, A, W, V: char; … MAIN X Y SUB1 Return point A B U V W X Y Z Central table 0 0 0 0 0 1 1 0

87 87 Shared Data: Dynamic Scope program MAIN; procedure SUB1; var X, Y: real; … procedure SUB2; var B, A, U, X: integer; … procedure SUB3; var Z, Y, A, W, V: char; … MAIN X Y B A U X SUB1 SUB2 Return point A B U V W X Y Z Central table 1 1 1 0 0 1 1 0

88 88 Shared Data: Dynamic Scope program MAIN; procedure SUB1; var X, Y: real; … procedure SUB2; var B, A, U, X: integer; … procedure SUB3; var Z, Y, A, W, V: char; … MAIN X Y B A U Z Y A W V X SUB1 SUB2 SUB3 Return point Central table 1 1 1 1 1 1 1 1 A B U V W X Y Z

89 89 Shared Data: Dynamic Scope MAIN X Y SUB1 Return point Central table 0 0 0 0 0 1 1 0 Hidden stack A B U V W X Y Z

90 90 Shared Data: Dynamic Scope MAIN X Y B A U X SUB1 SUB2 Return point Central table 1 1 1 0 0 0 0 0 Hidden stack X 1 1 1 1 0 0 0 A B U V W X Y Z

91 91 Shared Data: Dynamic Scope MAIN X Y B A U X SUB1 SUB2 Return point Central table 1 1 1 0 0 0 0 0 Hidden stack X 1 1 1 1 0 0 0 A B U V W X Y Z Z Y A W V SUB3 Return point Y 1 A

92 92 Data Control Basic concepts Local data and environments Shared data: dynamic scope Shared data: block structure Shared data: parameter transmission

93 93 Shared Data: Block Structure program MAIN; var X, Y, Z: char; … procedure SUB2; var X, Y: integer; … procedure SUB3; var X: real; … procedure SUB4; … procedure SUB1; var Y, Z: integer; … MAIN X, Y, Z: char SUB2 X, Y: integer SUB3 X: real SUB1 Y, Z: integer SUB4

94 94 Block Structure: Compile Time program MAIN; var X, Y, Z: char; … procedure SUB2; var X, Y: integer; … procedure SUB3; var X: real; … procedure SUB4; … procedure SUB1; var Y, Z: integer; … Symbol table X 1 1 1 1 0 0 0 Y 1 Z Scope stack 1 1 1 0 0 0  MAIN

95 95 Block Structure: Compile Time program MAIN; var X, Y, Z: char; … procedure SUB2; var X, Y: integer; … procedure SUB3; var X: real; … procedure SUB4; … procedure SUB1; var Y, Z: integer; … Symbol table X 1 1 1 1 0 0 Y 1 Z Scope stack 1 1 1 0 0 0  SUB2 X 1 Y

96 96 Block Structure: Compile Time program MAIN; var X, Y, Z: char; … procedure SUB2; var X, Y: integer; … procedure SUB3; var X: real; … procedure SUB4; … procedure SUB1; var Y, Z: integer; … Symbol table X 1 1 1 1 0 0 Y 1 Z Scope stack 1 1 1 0 0 0  SUB3 X 1 Y 1X

97 97 Block Structure: Compile Time program MAIN; var X, Y, Z: char; … procedure SUB2; var X, Y: integer; … procedure SUB3; var X: real; … procedure SUB4; … procedure SUB1; var Y, Z: integer; … Symbol table X 1 1 1 1 0 0 Y 1 Z Scope stack 1 1 1 0 0 0  SUB4 X 1 Y 1X

98 98 Block Structure: Compile Time program MAIN; var X, Y, Z: char; … procedure SUB2; var X, Y: integer; … procedure SUB3; var X: real; … procedure SUB4; … procedure SUB1; var Y, Z: integer; … Symbol table X 1 1 1 1 0 0 Y 1 Z Scope stack 1 1 1 0 0 0 SUB4  X 1 Y 1X

99 99 Block Structure: Compile Time program MAIN; var X, Y, Z: char; … procedure SUB2; var X, Y: integer; … procedure SUB3; var X: real; … procedure SUB4; … procedure SUB1; var Y, Z: integer; … Symbol table X 1 1 1 1 0 0 Y 1 Z Scope stack 1 1 1 0 0 0 SUB3  X 1 Y 1X

100 100 Block Structure: Compile Time program MAIN; var X, Y, Z: char; … procedure SUB2; var X, Y: integer; … procedure SUB3; var X: real; … procedure SUB4; … procedure SUB1; var Y, Z: integer; … Symbol table X 1 1 1 0 0 Y 1 Z Scope stack 1 1 1 0 0 0 SUB2  X 1X

101 101 Block Structure: Compile Time program MAIN; var X, Y, Z: char; … procedure SUB2; var X, Y: integer; … procedure SUB3; var X: real; … procedure SUB4; … procedure SUB1; var Y, Z: integer; … Symbol table X 1 1 1 0 0 Y 1 Z Scope stack 1 1 1 0 0 0  SUB1 X 1X Y Z

102 102 Block Structure: Compile Time program MAIN; var X, Y, Z: char; … procedure SUB2; var X, Y: integer; … procedure SUB3; var X: real; … procedure SUB4; … procedure SUB1; var Y, Z: integer; … Symbol table X 1 1 0 0 Y 1 Z Scope stack 1 1 1 0 0 0 SUB1  1X

103 103 Block Structure: Run Time program MAIN; var X, Y, Z: char; … procedure SUB2; var X, Y: integer; … procedure SUB3; var X: real; … procedure SUB4; … procedure SUB1; var Y, Z: integer; … MAIN SUB1 SUB2 SUB3

104 104 Block Structure: Run Time program MAIN; var X, Y, Z: char; … procedure SUB2; var X, Y: integer; … procedure SUB3; var X: real; … procedure SUB4; … procedure SUB1; var Y, Z: integer; … Y Z MAIN X --

105 105 Block Structure: Run Time program MAIN; var X, Y, Z: char; … procedure SUB2; var X, Y: integer; … procedure SUB3; var X: real; … procedure SUB4; … procedure SUB1; var Y, Z: integer; … Y Z SUB1 SCP Static chains Y Z MAIN X -- RP

106 106 Block Structure: Run Time program MAIN; var X, Y, Z: char; … procedure SUB2; var X, Y: integer; … procedure SUB3; var X: real; … procedure SUB4; … procedure SUB1; var Y, Z: integer; … Y Z X Y SUB1 SUB2 SCP Static chains Y Z MAIN X -- RP SCP RP

107 107 Block Structure: Run Time program MAIN; var X, Y, Z: char; … procedure SUB2; var X, Y: integer; … procedure SUB3; var X: real; … procedure SUB4; … procedure SUB1; var Y, Z: integer; … Y Z X Y X SUB1 SUB2 SUB3 SCP Static chains Y Z MAIN X -- RP SCP RP SCP RP

108 108 Block Structure: Run Time A B MAIN A B C A B C A B C A B C A B

109 109 Block Structure: Run Time Y Z X Y X SUB1 SUB2 SUB3 SCP Active static chain Y Z MAIN X -- RP SCP RP SCP RP Display 1 1 1 0 0 1 2 loc Y = Display[1] + offset

110 110 Data Control Basic concepts Local data and environments Shared data: dynamic scope Shared data: block structure Shared data: parameter transmission

111 111 Parameter Transmission Parameters:  formal parameters  actual parameters Transmission:  by reference  by value

112 112 Parameter Transmission procedure SUB2(K: integer; var L: integer); begin K := K + 10; L := L + 10; write(K, L) end; procedure SUB1; begin I := 1; J := 2; SUB2(I, J); write(I, J) end; I J K L SUB1 SUB2 SCP RP SCP RP 1 2 1

113 113 Parameter Transmission procedure SUB2(K: integer; var L: integer); begin K := K + 10; L := L + 10; write(K, L) end; procedure SUB1; begin I := 1; J := 2; SUB2(I, J); write(I, J) end; I J K L SUB1 SUB2 SCP RP SCP RP 1 2 11

114 114 Parameter Transmission procedure SUB2(K: integer; var L: integer); begin K := K + 10; L := L + 10; write(K, L) end; procedure SUB1; begin I := 1; J := 2; SUB2(I, J); write(I, J) end; I J K L SUB1 SUB2 SCP RP SCP RP 1 12 11

115 115 Parameter Transmission procedure SUB2(K:integer; var L:integer); begin K := K + 10; L := L + 10; SUB3(K, L) write(K, L) end; procedure SUB1; begin I := 1; J := 2; SUB2(I, J); write(I, J) end; procedure SUB3(var M, N: integer); begin M := M + 10; N := N + 10; write(M, N) end; Actual parameters are formal parameters of the calling program

116 116 Parameter Transmission type VECT = array [1...3] of integer; procedurre SUB2 (C:VECT; var D:VECT); var I : integer; begin C [2] : = C [2] + 10; D [2] = D [2] + 10; for I : = 1 to 3 do write (C [I]); for I : = 1 to 3 do write (D [I]) end; procedurre SUB1; var A, B : VECT; J : integer; begin A [1] : = 7; A [2] = 8; A [3] : = 9; B [1] : = 7; B [2] = 8; B [3] : = 9; SUB2 (A, B); for J : = 1 to 3 do write (A [J]); for J : = 1 to 3 do write (B [J]); end; Actual parameters are structured data objects

117 117 Parameter Transmission type VECT = array [1...3] of integer procedurre SUB2 (I: integer; var J: integer); begin I : = I + 10; J : = J + 10; write (I, J); end; procedurre SUB1; var A : VECT; K : integer; begin A [1] := 7; A [2] := 8; A [3] := 9; SUB2 (A[1], A[2]); for K := 1 to 3 do write (A[K]) end; Actual parameters are components of structured data objects

118 118 Parameter Transmission type VECT = array [1...3] of integer procedurre SUB2 (var I, J: integer); begin I : = I + 1; J : = J + 1; write (I, J); end; procedurre SUB1; var A : VECT; K : integer; begin A [1] := 7; A [2] := 8; A [3] := 9; K := 2; SUB2 (K, A[K]); for K := 1 to 3 do write (A[K]) end; Actual parameters are array components with computed subscripts

119 119 Parameter Transmission type VECT = array [1...3] of integer; VECTPTR = ^ VECT; procedurre SUB2 (R:VECTPTR; var S:VECTPTR); begin R^[1] := R^[1] + 10; S^[1] := S^[1] + 10; if... then R := S else S := R end; procedurre SUB1; var A, B: VECT; P, Q: VECTPTR; begin A [1] = 7; A [2] := 8; A [3] := 9; B [1] := 7; B [2] := 8; B [3] := 9; P := @A; Q := @B; SUB2 (P, Q); end; Actual parameters are pointers

120 120 Parameter Transmission program MAIN; var X: real; procedurre SUB2 (X, Y: real; function F(U:real): real); var Z: real; begin Z := abs (Y - X); Z := (F(X) + F(Y)) * Z/2; write (Z) end; begin X := 3; SUB1 end. procedurre SUB1; var Y: real; function FUNC(V:real): real; begin FUNC := X*V + Y end; begin Y := 1; SUB2 (0, 1, FUNC). end; Actual parameters are subprograms

121 121 Parameter Transmission type VECT = array [1...3] of integer procedurre SUB2 (name I, J: integer); begin I : = I + 1; J : = J + 1; write (I, J); end; procedurre SUB1; var A : VECT; K : integer; begin A [1] := 7; A [2] := 8; A [3] := 9; K := 2; SUB2 (K, A[K]); for K := 1 to 3 do write (A[K]) end; Transmissiom by names

122 122 Formal Parameters and Aliases A data object may have more than one name, called aliases. Side effects: I := 1; J := 1; I := J + 10; J := J*10;

123 123 Formal Parameters and Aliases An actual parameter is a non-local variable and is trasmitted by reference. Actual parameters are of the same data object and transmitted by reference.

124 124 Exercises Given the following program: program MAIN; var F: real; procedure PROC(N: integer; var F: real); var F1, F2: real; begin if (N = 0) or (N = 1) then F := 1 else begin PROC(N-1, F1); PROC(N-2, F2); F := F1 + F2 end begin PROC(2, F); write(F) end.

125 125 Exercises Illustrate the code segment and activation records of MAIN and PROC. Illustrate the central stack during execution of this program.


Download ppt "1 Programming Languages Implementation of Control Structures Cao Hoaøng Truï Khoa Coâng Ngheä Thoâng Tin Ñaïi Hoïc Baùch Khoa TP. HCM."

Similar presentations


Ads by Google