CS 320 Fall 2020 Name _________________________________ Last 4 digit of RedID ______
Homework 2
1. Ada Scope Rules (2 pts)
procedure Main is
X: Integer
procedure S1 is
begin -- of S1
Put(X);
end; -- of S1
procedure S2 is
X: Integer
begin -- of S2
X := 10;
S1
end; -- of S2
begin -- of Main
x := 5;
S2
end; -- of Main
2. Variables (2 pts)
Suppose a memory address myaddr contains the bit pattern: 00000000000000000000000000010110
Describe the value retrieved from myaddr when it is accessed by float *fptr, and when it is accessed by
int *iptr.
3. C struct (3 pts)
Given the following declarations:
struct Example {
int data;
char *tag;
};
struct Example *example;
Assume this Ada program was compiled and executed using
static-scoping rules. What value of X is printed in procedure S1?
Under dynamic-scoping rules, what value of X is printed in
procedure S1?
Static Scoping Dynamic Scoping
Output: ______________ _______________
Write the code segment needed to set the data variable to 25, and
the tag string to "Hello World". First, malloc the storage for
an Example struct. The output from this code segment should be:
data = 25, tag = Hello World
4. Given the following program segment:
void foo(int **, int *, int *);
int main(void) {
int x=2, y=4;
int *A=&x, *B=&y, C=2;
foo(&A, B, &C);
return(EXIT_SUCCESS);
}
void foo(int **a, int *b, int *c) { ... }
The system stack begins at address 0x0248ffe0
The addresses of the variables declared in main are:
x: 0x00009012
y: 0x0000900E
A: 0x0000900A
B: 0x00009006
C: 0x00009002
Within the body of the function foo, give the values for the following expressions: (5 pts)
Expression Write address in the form 0xfeedbeef
5. Python (3 pts)
What does the following function output?
def myfunc(y):
x = y
def myinnerfunc():
print(x*x)
myinnerfunc()
myfunc(3) Output _____________
How do you know if this dynamic-scoping rules or static-scoping rules?