Metody realizacji języków programowania/MRJP Ćwiczenia 5: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Zaroda (dyskusja | edycje)
Zaroda (dyskusja | edycje)
Linia 20: Linia 20:
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);
   procedure q(var b:integer);
   '''procedure''' q('''var''' b:integer);
     var c:integer;
     '''var''' c:integer;
     procedure s(d:integer);
     '''procedure''' s(d:integer);
     begin
     '''begin'''
     ...
     ...
     end;
     '''end''';
     procedure r;
     '''procedure''' r;
       var e:integer;
       '''var''' e:integer;
     begin
     '''begin'''
       e:=a+b;
       e:=a+b;
       b:=c;
       b:=c;
       s(b);
       s(b);
       q(e)
       q(e)
     end;
     '''end''';
   begin
   '''begin'''
   ...
   ...
   end;
   '''end''';
  begin
  '''begin'''
  ...
  ...
  end;
  '''end''';


== Zadanie ==
== Zadanie ==

Wersja z 18:59, 26 wrz 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