Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Suppose you are given the following code written in a hybrid language whose squa

ID: 3694438 • Letter: S

Question

Suppose you are given the following code written in a hybrid language whose squareroots are traced to Algol-family of languages, such as Pascal, C, and Ada83. integer function caller() {integer i = 2; procedure someProc(integer x; integer y) {y++; x = x * i; } integer a[1..3]; for(integer j in 1..3) a[j] = j; someProc(a[i],i); print(i, a[1], a[2], a[3]); } Using static scoping rules, indicate the four values printed in each case when the parameters are passed as follows: (a) x by reference, y by value (b) x by reference, y by reference (c) x by value-result, y by value-result

Explanation / Answer

(A) x by reference, y by value

integer function caller()

{

integer i=2;

procedure someProc(integer *x; integer y)

{

y++;

*x=*x*i;

}

integer a[1..3];

for(integer j in 1..3) a[j]=j;

someProc(&a[i],i);

print(i,a[1],a[2],a[3]);

}

(B) x by reference, y by reference

integer function caller()

{

integer i=2;

procedure someProc(integer *x; integer *y)

{

*y++;

*x=*x*i;

}

integer a[1..3];

for(integer j in 1..3) a[j]=j;

someProc(&a[i],&i);

print(i,a[1],a[2],a[3]);

}

(C) x by value result, y by value-result

integer function caller()

{

integer i=2;

procedure someProc(valres x,y: integer ) //by value result

{

y++;

x=x*i;

}

integer a[1..3];

for(integer j in 1..3) a[j]=j;

someProc(a[i],i);

print(i,a[1],a[2],a[3]);

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote