Metody realizacji języków programowania/MRJP Ćwiczenia 5: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Nie podano opisu zmian |
|||
| Linia 1: | Linia 1: | ||
== Zadanie - tłumaczenie funkcji == | == Zadanie - tłumaczenie funkcji == | ||
Przy założeniu, że mamy do czynienia z językiem bez struktury blokowej (w rekordzie aktywacji nie ma SL), przetłumacz na kod '''NMW''' treść funkcji g z poniższego przykładu: | Przy założeniu, że mamy do czynienia z językiem bez struktury blokowej (w rekordzie aktywacji nie ma '''SL'''), przetłumacz na kod '''NMW''' treść funkcji ''g'' z poniższego przykładu: | ||
'''function''' f(w:integer; '''var''' x:integer):integer; | '''function''' f(w:integer; '''var''' x:integer):integer; | ||
| Linia 18: | Linia 18: | ||
== Zadanie - struktura blokowa == | == Zadanie - struktura blokowa == | ||
Zakładając, że poniższy fragment programu jest napisany w języku ze strukturą blokową, przetłumacz treść procedury r: | Zakładając, że poniższy fragment programu jest napisany w języku ze strukturą blokową, przetłumacz | ||
treść procedury ''r'': | |||
'''procedure''' p(a:integer); | '''procedure''' p(a:integer); | ||
| Linia 44: | Linia 45: | ||
== Zadanie - realizacja mechanizmu "super" == | == Zadanie - realizacja mechanizmu "super" == | ||
Wiele obiektowych języków programowania posiada mechanizm umożliwiający wywołanie metody, którą aktualna metoda przedefiniowuje. Np. : | Wiele obiektowych języków programowania posiada mechanizm umożliwiający wywołanie metody, | ||
którą aktualna metoda przedefiniowuje. Np. : | |||
'''class''' A; | '''class''' A; | ||
| Linia 61: | Linia 63: | ||
'''end'''; | '''end'''; | ||
Umieszczenie, jako odbiorcy komunikatu, słowa "super" oznacza tu, że chcemy wywołać metodę z nadklasy. | Umieszczenie, jako odbiorcy komunikatu, słowa "'''super'''" oznacza tu, że chcemy wywołać metodę z nadklasy. | ||
Zaproponuj sposób realizacji tego machanizmu i podaj tłumaczenie "super.pisz" z powyższego przykładu. | Zaproponuj sposób realizacji tego machanizmu i podaj tłumaczenie "'''super.pisz'''" z powyższego przykładu. | ||
== Zadanie - tłumaczenie metod == | == Zadanie - tłumaczenie metod == | ||
Przetłumacz treść metody r z klasy C w poniższym fragmencie programu: | Przetłumacz treść metody ''r'' z klasy ''C'' w poniższym fragmencie programu: | ||
'''class''' A; | '''class''' A; | ||
Wersja z 14:07, 1 paź 2006
Zadanie - tłumaczenie funkcji
Przy założeniu, że mamy do czynienia z językiem bez struktury blokowej (w rekordzie aktywacji nie ma SL), przetłumacz na kod NMW treść funkcji g z poniższego przykładu:
function f(w:integer; var x:integer):integer; begin ... end; function g(y:integer; var z:integer):integer; var a:integer; begin g:=y; a:=z; z:=f(a,a) end;
Zadanie - struktura blokowa
Zakładając, że poniższy fragment programu jest napisany w języku ze strukturą blokową, przetłumacz treść procedury r:
procedure p(a:integer);
procedure q(var b:integer);
var c:integer;
procedure s(d:integer);
begin
...
end;
procedure r;
var e:integer;
begin
e:=a+b;
b:=c;
s(b);
q(e)
end;
begin
...
end;
begin
...
end;
Zadanie - realizacja mechanizmu "super"
Wiele obiektowych języków programowania posiada mechanizm umożliwiający wywołanie metody, którą aktualna metoda przedefiniowuje. Np. :
class A;
procedure pisz;
begin
write('A')
end;
end;
class B extends A;
procedure pisz;
begin
write('B oraz');
super.pisz
end;
end;
Umieszczenie, jako odbiorcy komunikatu, słowa "super" oznacza tu, że chcemy wywołać metodę z nadklasy.
Zaproponuj sposób realizacji tego machanizmu i podaj tłumaczenie "super.pisz" z powyższego przykładu.
Zadanie - tłumaczenie metod
Przetłumacz treść metody r z klasy C w poniższym fragmencie programu:
class A;
var w:A;
x:integer;
procedure p;
begin
...
end;
end;
class B extends A;
var y:integer;
procedure p;
begin
...
end;
procedure q;
begin
...
end;
end;
class C extends B;
var z:integer;
procedure r;
begin
z:=y;
y:=x;
self.q;
w.p
end;
end;