Question
Consider the following pseudocode: procedure main() a : integer := 1 b : integer := 2 procedure middle() b : integer := a procedure inner()
- Consider the following pseudocode:
- procedure main()
- a : integer := 1
- b : integer := 2
- procedure middle()
- b : integer := a
- procedure inner()
- print a, b
- a : integer := 3
- --body of middle
- inner()
- print a, b
- --body of main
- middle()
- 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 of Modula-3
(names can be declared in any order, and their scope is the entire block in
which they are declared).
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started