Consider the following pseudocode: 1. procedure main() 2. a : integer := 1 3. b : integer

Question:

Consider the following pseudocode:

1. procedure main()

2. a : integer := 1

3. b : integer := 2

4. procedure middle()

5. b : integer := a

6. procedure inner()

7. print a, b

8. a : integer := 3

9. –– body of middle

10. inner()

11. print a, b

12. –– body of main

13. middle()

14. print a, b

Suppose this was code for a language with the declaration-order rules of C (but with nested subroutines)—that is, names must be declared before use, and the scope of a name extends from its declaration through the end of the block. At each print statement, indicate which declarations of a and b are in the referencing environment. What does the program print (or will the compiler identify static semantic errors)? Repeat the exercise for the declaration-order rules of C# (names must be declared before use, but the scope of a name is the entire block in which it is declared) and ofModula-3 (names can be declared in any order, and their scope is the entire block in which they are declared).

Fantastic news! We've Found the answer you've been seeking!

Step by Step Answer:

Related Book For  book-img-for-question
Question Posted: