Semantyka i weryfikacja programów/Ćwiczenia 9

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

Procedury i funkcje. Przekazywanie parametrów.

Zadanie 1

Zdefiniuj semantykę denotacyjną następującego języka:

Deklaracja wprowadza zmienną i nadaje jej wartość obliczonego wyrażenia . Deklaracja wprowadza procedurę o nazwie z jednym parametrem przekazywanym przez zmienną. Treścią procedury jest instrukcja .

Instrukcja bloku polega na wykonaniu instrukcji po uprzednim wzbogaceniu środowiska deklaracją . Wszystkie zmienne i procedury wprowadzone przez są lokalne w bloku. Instrukcja to wywołanie procedury .

Zadanie 2

Jaką wartość ma zmienna z przy semantyce z poprzedniego zadania po wykonaniu następującej instrukcji:

begin
  var
    y := 1;
    proc P (x); x := y endproc;
    begin
      var y := 2;
      var z := 0;
      call P(z);
    end
 end
    

Zadanie 3

Wyjaśnij różnicę między wiązaniami statycznymi a dynamicznymi. Zmień semantykę języka z zadania 1 tak, aby uzyskać dynamiczne wiązania identyfikatorów.

Zadanie 4

Czy semantyka z zadania 1 umożliwia pisanie procedur rekurencyjnych? A semantyka z zadania 3? Jak należy zmienić semantykę, aby procedury rekurencyjne były możliwe?

Zadanie 5

Przypuśćmy, że składnia wywołania procedury z zadania 1 przyjmuje teraz postać:

Pozostałe elementy nie zmieniają się. Przekazywanie parametrów odbywa się teraz jednak przez wartość. Opisz semantykę takiego języka. Zadbaj o możliwość definiowania procedur rekurencyjnych i statyczne wiązania zmiennych globalnych.