IKIU-CE, The computer-engineering students web log - Qazvin, وب‌نوشت دانشجویان گروه مهندسی کامپیوتر - قزوین
یادداشت‌ها: فارسی ، Posts: English

۱۳۸۸ بهمن ۵, دوشنبه

طراحی و پیاده سازی زبان های برنامه سازی

پاسخ سه سوال از امتحان میان ترم دو گروه درس طراحی و پیاده سازی زبان های برنامه سازی

1. برنامه زیر در زبان C++ است. Scope, lifetime هر یک از متغیر ها را تعیین کنید.


1. #include <stdio.h>
2. int x=0;
3. void P(int, float):
4. void q(int, int);
5. void main(){
6. int x=1;
7. q(x,x);
8. }
10. void P(int y, float z){
11. x=x+1;
12. y=y+1;
13. z=z+1;
14. }
15. void q(int I, int j){
16. static float f;
17. f=i*2.5;
18. j=1;

19. while (j<=10){ 20. float f; 21. f=j*2.5; 22. x=f%2; 23. } 24. }


مشاهده پاسخ
2. تعریف زیر روالهای زیر در زبانی که اجازه ی nested subprogramming را میدهد صورت گرفته است. Referring environment زیر روال q و خروجی برنامه را در دو حالت (زبانی با static scope) و (زبانی با Dynamic scope) بنویسید
Procedure p;
x : integer;
Procedure q;
y : integer;
begin
x:= x+1;
y:=y+1;
end;
Procedure r;
x: integer;
begin
x:=1;
write("x before calling q: ",x);
q;
write("x after calling q:",x);
end;
begin (P)
x:=2;
r;
write("x in P ",x);
end;

مشاهده پاسخ

3. تعریف زیر روالهای زیر در زبانی که اجازه ی nested subprogramming را میدهد صورت گرفته است. Referring environment هر زیرروال و scope / Lifetime هر متغییر و خروجی برنامه را در دو حالت (زبانی با static scoping) و (زبانی باingDynamic scope) بنویسید
Program main is
x : integer;
Procedure B;
Static z : real;
Begin (B)
z:= 1;
x:=x+1;
Write("in B:", x, z);
end; (B)
Procedure A;
z : integer;
x: integer;
Procedure C;
Begin (c)
x := x+2;
z := x+2;
Write (“x, z in C”, x, z);
End; (c)
Begin (A)
x:= 1;
z:= 2;
Write("in A before calling B:", x, z);
B;
Write("in A after calling B:", x, z);
end; (A)
begin (main)
x:=4;
Write("in main before calling A:", x);
A;
Write("in main after calling A:", x);
end; (main)


مشاهده پاسخ