SW wykład 5 - Slajd10: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
(Nie pokazano 1 wersji utworzonej przez jednego użytkownika) | |||
Linia 1: | Linia 1: | ||
{{Semantyka i weryfikacja programów/Wykład 5}} | {{Semantyka i weryfikacja programów/Wykład 5}} | ||
[[Grafika:sw0509.png|center|frame]] | [[Grafika:sw0509.png|center|frame]] | ||
Pozostaje tylko klauzula określająca semantykę bloków, łącząca | |||
semantykę deklaracji i instrukcji. Znaczeniem bloku jest funkcja, | |||
która dla danego środowiska i danego składu początkowego najpierw | |||
wykorzystuje semantykę zawartych w tym bloku deklaracji, określając | |||
wynik elaboracji tych deklaracji w początkowym środowisku i składzie, | |||
a następnie wykorzystuje semantykę ciała bloku, która dla otrzymanych | |||
z deklaracji środowiska i składu określa skład końcowy, będący także | |||
składem wynikowym dla całego bloku. | |||
Najistotniejszy w tej klauzuli jest sposób modyfikacji i przekazywania | |||
środowiska. Deklaracje w danym bloku rozszerzają środowisko przekazane | |||
z zewnątrz, wprowadzając do niego deklarowane zmienne. Ciało bloku | |||
jest wykonywane w tak rozszerzonym środowisku. Na zewnątrz bloku, w | |||
szczególności dla instrukcji, które mogą następować "po" tym bloku, | |||
środowisko nie ulega zmianie. Jeśli któraś z deklarowanych zmiennych | |||
była już dostępna w początkowym (czyli "zewnętrznym" dla danego bloku) | |||
środowisku, to przypisana jej tam lokacja nie będzie widoczna wewnątrz | |||
bloku. Lokalnie zastąpi ją nowa lokacja, przypisana w modyfikowanym | |||
środowisku tej zmiennej przez jej deklarację w danym bloku. | |||
W pełni ściśle klauzula ta zatem oddaje pojęcie zakresu deklaracji: | |||
bloku, w którym dana deklaracja się znajduje, ale z wyłączeniem tych | |||
jego bloków wewnętrznych, w których deklarowana jest zmienna o tym | |||
samym identyfikatory. Mamy nadzieję, że podany przykład dobrze to | |||
pokazuje. |
Aktualna wersja na dzień 14:13, 29 wrz 2006
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.

Pozostaje tylko klauzula określająca semantykę bloków, łącząca semantykę deklaracji i instrukcji. Znaczeniem bloku jest funkcja, która dla danego środowiska i danego składu początkowego najpierw wykorzystuje semantykę zawartych w tym bloku deklaracji, określając wynik elaboracji tych deklaracji w początkowym środowisku i składzie, a następnie wykorzystuje semantykę ciała bloku, która dla otrzymanych z deklaracji środowiska i składu określa skład końcowy, będący także składem wynikowym dla całego bloku.
Najistotniejszy w tej klauzuli jest sposób modyfikacji i przekazywania środowiska. Deklaracje w danym bloku rozszerzają środowisko przekazane z zewnątrz, wprowadzając do niego deklarowane zmienne. Ciało bloku jest wykonywane w tak rozszerzonym środowisku. Na zewnątrz bloku, w szczególności dla instrukcji, które mogą następować "po" tym bloku, środowisko nie ulega zmianie. Jeśli któraś z deklarowanych zmiennych była już dostępna w początkowym (czyli "zewnętrznym" dla danego bloku) środowisku, to przypisana jej tam lokacja nie będzie widoczna wewnątrz bloku. Lokalnie zastąpi ją nowa lokacja, przypisana w modyfikowanym środowisku tej zmiennej przez jej deklarację w danym bloku.
W pełni ściśle klauzula ta zatem oddaje pojęcie zakresu deklaracji: bloku, w którym dana deklaracja się znajduje, ale z wyłączeniem tych jego bloków wewnętrznych, w których deklarowana jest zmienna o tym samym identyfikatory. Mamy nadzieję, że podany przykład dobrze to pokazuje.