Presentation is loading. Please wait.

Presentation is loading. Please wait.

PUSH “MATT” MATT FRONTBACK PUSH “ANDREW” MATT FRONT ANDREW BACK.

Similar presentations


Presentation on theme: "PUSH “MATT” MATT FRONTBACK PUSH “ANDREW” MATT FRONT ANDREW BACK."— Presentation transcript:

1

2

3

4 PUSH “MATT”

5 MATT FRONTBACK

6 PUSH “ANDREW”

7 MATT FRONT ANDREW BACK

8 PUSH “SAMIRA”

9 SAM IRAMATT FRONT ANDREW BACK

10 POP

11 SAM IRA FRONT ANDREW BACK

12

13

14

15

16

17

18

19 DETERMINE THE OUTPUT FROM THE FOLLOWING: queue my_queue; for (int i = 0; i < 10; i++) my_queue.push (i * i); while (!my_queue.empty()) { cout << my_queue.front() << endl; my_queue.pop(); } // while

20

21

22

23

24

25

26 A SYSTEM IS A COLLECTION OF INTERACTING PARTS.

27 A MODEL IS A SIMPLIFICATION OF A SYSTEM. THE PURPOSE OF BUILDING A MODEL IS TO STUDY THE UNDERLYING SYSTEM.

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70 STACKS

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86 DETERMINE THE OUTPUT FROM THE FOLLOWING: stack my_stack; for (int i = 0; i < 10; i++) my_stack.push (i * i); while (!my_stack.empty()) { cout << my_stack.top() << endl; my_stack.pop(); } // while

87

88

89

90 STACK APPLICATION 1 HOW COMPILERS IMPLEMENT RECURSION

91

92 EACH ACTIVATION RECORD CONTAINS: 1.A VARIABLE THAT CONTAINS THE RETURN ADDRESS IN THE CALLING METHOD; 2.FOR EACH VALUE FORMAL PARAMETER,A VARIABLE THAT CONTAINS A COPY OF THE ARGUMENT; 3. FOR EACH REFERENCE FORMAL PARAMETER, A VARIABLE THAT CONTAINS THE ADDRESS OF THE ARGUMENT; 4.FOR EACH VARIABLE DEFINED IN THE METHOD’S BLOCK, A VARIABLE THAT CONTAINS A COPY OF THAT DEFINED VARIABLE.

93 THERE IS A RUN-TIME STACK TO HANDLE THESE ACTIVATION RECORDS. PUSH: WHEN FUNCTION IS CALLED POP: WHEN EXECUTION OF FUNCTION IS COMPLETED

94 AN ACTIVATION RECORD IS SIMILAR TO AN EXECUTION FRAME, EXCEPT THAT AN ACTIVATION RECORD HAS VARIABLES ONLY, NO CODE. YOU CAN REPLACE RECURSION WITH ITERATION BY CREATING YOUR OWN STACK.

95

96

97

98 STACK APPLICATION 2 CONVERTING FROM INFIX TO POSTFIX

99 IN INFIX NOTATION, AN OPERATOR IS PLACED BETWEEN ITS OPERANDS. a + b c – d + (e * f – g * h) / i

100 OLD COMPILERS: INFIX MACHINE LANGUAGE THIS GETS MESSY BECAUSE OF PARENTHESES. NEWER COMPILERS: INFIX POSTFIX MACHINE LANGUAGE

101 IN POSTFIX NOTATION, AN OPERATOR IS PLACED IMMEDIATELY AFTER ITS OPERANDS. INFIXPOSTFIX a + bab+ a + b * cabc*+ a * b + cab*c+ (a + b) * cab+c*

102 PARENTHESES ARE NOT NEEDED, AND NOT USED, IN POSTFIX.

103 LET’S CONVERT AN INFIX STRING TO A POSTFIX STRING. x – y * z

104 POSTFIX PRESERVES THE ORDER OF OPERANDS, SO AN OPERAND CAN BE APPENDED TO POSTFIX AS SOON AS THAT OPERAND IS ENCOUNTERED IN INFIX.

105 INFIXPOSTFIX x – y * z x

106 INFIXPOSTFIX x – y * z x THE OPERANDS FOR ‘-’ ARE NOT YET IN POSTFIX, SO ‘-’ MUST BE TEMPORARILY SAVED SOMEWHERE.

107 INFIXPOSTFIX x – y * z xy

108 INFIXPOSTFIX x – y * z xy THE OPERANDS FOR ‘*’ ARE NOT YET IN POSTFIX, SO ‘*’ MUST BE TEMPORARILY SAVED SOMEWHERE, AND RESTORED BEFORE ‘-’.

109 INFIXPOSTFIX x – y * z xyz

110 INFIXPOSTFIX x – y * z xyz* –

111 SUPPOSE, INSTEAD, WE STARTED WITH x*y-z. AFTER MOVING ‘x’ TO POSTFIX, ‘*’ IS TEMPORARILY SAVED, AND THEN ‘y’ IS APPENDED TO POSTFIX. WHAT HAPPENS WHEN ‘-’ IS ACCESSED? INFIXPOSTFIX x * y – z xy

112

113 THE TEMPORARY STORAGE FACILITY IS A STACK. HERE IS THE STRATEGY FOR MAINTAINING THE STACK:

114

115 INFIX GREATER, PUSH

116 CONVERT FROM INFIX TO POSTFIX: INFIXPOSTFIX a + b * c / d - e

117 INFIXPOSTFIX a + b * c / d – e abc*d/+e – - / * + OPERATOR STACK

118

119 CONVERT TO POSTFIX: x * (y + z)

120

121

122

123

124

125 TOKENS

126

127

128

129

130

131

132

133

134

135


Download ppt "PUSH “MATT” MATT FRONTBACK PUSH “ANDREW” MATT FRONT ANDREW BACK."

Similar presentations


Ads by Google