SW wykład 5 - Slajd14: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Tarlecki (dyskusja | edycje)
Nie podano opisu zmian
Dorota (dyskusja | edycje)
Nie podano opisu zmian
 
Linia 8: Linia 8:
Większość klauzul dla instrukcji zmienia się tylko bardzo formalnie:
Większość klauzul dla instrukcji zmienia się tylko bardzo formalnie:
przekazują one dodane do semantyki środowisko procedur do swoich
przekazują one dodane do semantyki środowisko procedur do swoich
instrukcji składowych, poza tym działając tak, jak poprzednio.
instrukcji składowych, poza tym działając tak jak poprzednio.
Wyjątkiem są tu oczywiście klauzule dla bloków i dla nowej postaci
Wyjątkiem są tu oczywiście klauzule dla bloków i dla nowej postaci
instrukcji, wywołania procedury. Nowe są też klauzule dla (dodanej)
instrukcji, wywołania procedury. Nowe są też klauzule dla (dodanej)
Linia 24: Linia 24:
Semantyka bloków z deklaracjami procedur też jest dość
Semantyka bloków z deklaracjami procedur też jest dość
oczywista. Rożni się ona od semantyki bloków w dotychczasowej postaci
oczywista. Rożni się ona od semantyki bloków w dotychczasowej postaci
(bez deklaracji procedur) tylko przez wprowadzenie dodatkowego
(bez deklaracji procedur) tylko wprowadzeniem dodatkowego
środowiska procedur, jego modyfikacji przez deklaracje procedur i
środowiska procedur, jego modyfikacji przez deklaracje procedur i
przekazanie zmodyfikowanego środowiska do ciała bloku.
przekazanie zmodyfikowanego środowiska do ciała bloku.

Aktualna wersja na dzień 14:27, 29 wrz 2006

<<powrót do strony wykładu

Bloki i deklaracje Lokacje Funkcje semantyczne Konwencje notacyjne Instrukcje Klauzule semantyczne Klauzule semantyczne, c.d. Deklaracje Deklaracje, c.d. Semantyka bloków Procedury Wiązania zmiennych Semantyka Tiny++ Semantyka Tiny++ Rekurencja Semantyka procedur rek. Semantyka procedur rek.

Podajemy nowe klauzule semantyczne dla instrukcji i deklaracji procedur (klauzule dla pozostałych kategorii języka nie ulegają zmianie).

Większość klauzul dla instrukcji zmienia się tylko bardzo formalnie: przekazują one dodane do semantyki środowisko procedur do swoich instrukcji składowych, poza tym działając tak jak poprzednio. Wyjątkiem są tu oczywiście klauzule dla bloków i dla nowej postaci instrukcji, wywołania procedury. Nowe są też klauzule dla (dodanej) semantyki deklaracji procedur.

Zacznijmy od tych ostatnich, wyjątkowo tu prostych: klauzula dla pustego ciągu deklaracji procedur nie wymaga komentarza. Klauzula dla deklaracji procedury określa po prostu znaczenie jej ciała jako instrukcji (które to znaczenie, przypomnijmy, jest funkcją pobierającą kolejno środowisko zmiennych, środowisko procedur, itd.), modyfikuje środowisko procedur przez przypisanie tego znaczenia identyfikatorowi właśnie deklarowanej procedury, a w końcu przekazuje tak zmodyfikowane środowisko procedur do dalszego ciągu deklaracji procedur.

Semantyka bloków z deklaracjami procedur też jest dość oczywista. Rożni się ona od semantyki bloków w dotychczasowej postaci (bez deklaracji procedur) tylko wprowadzeniem dodatkowego środowiska procedur, jego modyfikacji przez deklaracje procedur i przekazanie zmodyfikowanego środowiska do ciała bloku.

W końcu, semantyka wywołania procedury w danym środowisku zmiennych i środowisku procedur, jest funkcją przekształcająca składy dokładnie tak, jak funkcja wyznaczona przez zawarte w tym drugim środowisku znaczenie wywoływanej procedury dla tego samego samych środowiska zmiennych i tego samego środowiska procedur.

Klauzule te są jednak proste tylko z pozoru. Występują w nich ukryte współzależności, które sprawiają, że w istocie mamy tu do czynienia z dość skomplikowanym układem równań stałopunktowych. Deklaracje procedur przypisują ich identyfikatorom semantykę instrukcji, która z kolei wykorzystuje semantykę instrukcji wywołania procedury, która z kolei wykorzystuje znaczenia instrukcji przypisane deklarowanym procedurom przez ich deklaracje. Mamy nadzieję, że "operacyjne" czytanie tych klauzul jest intuicyjnie jasne; bez wnikania w systematyczne rozwiązywanie takich układów równań, wskażmy tylko, że nie różni się to bardzo istotnie od przypadku instrukcji pętli. Co najważniejsze, zachowana jest zgodność pomiędzy najmniejszymi rozwiązaniami pojawiających się tu układów równań a intuicyjnie jasną semantyką operacyjną.