Semantyka i weryfikacja programów/Ćwiczenia 10: Różnice pomiędzy wersjami
Nie podano opisu zmian |
|||
Linia 44: | Linia 44: | ||
Deklaracja <math>\mathbf{fun}\, F (x); i\, \mathbf{endfun} | Deklaracja <math>\mathbf{fun}\, F (x); i\, \mathbf{endfun} | ||
</math> wprowadza funkcję o nazwie | </math> wprowadza funkcję o nazwie <math>F</math> z jednym parametrem <math>x</math> przekazywanym | ||
przez zmienną. Wykonanie funkcji polega na wykonaniu instrukcji | przez zmienną. Wykonanie funkcji polega na wykonaniu instrukcji <math>i</math>, która | ||
powinna zawierać przypisanie na identyfikator | powinna zawierać przypisanie na identyfikator <math>F</math>. Takie przypisanie ustala | ||
wartość funkcji ale '''nie''' kończy wykonania instrukcji i. | wartość funkcji ale '''nie''' kończy wykonania instrukcji i. | ||
== Kontynuacje instrukcji == | == Kontynuacje instrukcji == | ||
=== Zadanie 2 === | === Zadanie 2 === | ||
Powróćmy do języka | Powróćmy do języka TINY. Dodajmy do niego następujące instrukcje: | ||
<math> | <math> | ||
Linia 133: | Linia 133: | ||
'''end''' | '''end''' | ||
'''end''' | '''end''' | ||
zakończy się ze zmienną x równą 2. | zakończy się ze zmienną <math>x</math> równą 2. | ||
Choć środowiska wydają się tu niepotrzebne spróbuj wykorzystać je do | Choć środowiska wydają się tu niepotrzebne, spróbuj wykorzystać je do | ||
przechowywania pewnych potrzebnych informacji. | przechowywania pewnych potrzebnych informacji. |
Wersja z 15:01, 29 wrz 2006
Funkcje
Zadanie 1
Zdefiniuj semantykę denotacyjną następującego języka:
Deklaracja wprowadza funkcję o nazwie z jednym parametrem przekazywanym przez zmienną. Wykonanie funkcji polega na wykonaniu instrukcji , która powinna zawierać przypisanie na identyfikator . Takie przypisanie ustala wartość funkcji ale nie kończy wykonania instrukcji i.
Kontynuacje instrukcji
Zadanie 2
Powróćmy do języka TINY. Dodajmy do niego następujące instrukcje:
Zdefiniuj semantykę kontynuacyjną powyższych instrukcji. Możesz przy tym korzystać z gotowych już funkcji semantycznych dla pozostałych kategorii (w semantyce bezpośredniej) syntaktycznych.
Zadanie 3
Rozszerz język z poprzedniego zadania o konstrukcje
Zadanie 4
Uzupełnij definicję języka o bloki, deklaracje zmiennych i procedur oraz wywołanie procedury.
Zadanie 5
Zdefiniuj semantykę denotacyjną następującego języka:
Program i instukcje postaci są blokami. Instrukcja break powoduje natychmiastowe wyjście z bloku i wznowienie wykonania od następnej instrukcji po bloku. Instrukcja again to skok do pierwszej instrukcji w najbardziej zagnieżdżonym bloku, w którym wystąpiła. Instrukcja rollback działa podobnie jak break, ale anuluje wszystkie zmiany dokonane od ostatniego wejścia do bloku, w którym wystąpiła.
Wykonanie programu:
begin x := 2; begin x := x + 1; if x = 5 then rollback else again end end
zakończy się ze zmienną równą 2. Choć środowiska wydają się tu niepotrzebne, spróbuj wykorzystać je do przechowywania pewnych potrzebnych informacji.