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

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Arturas (dyskusja | edycje)
Nie podano opisu zmian
Dorota (dyskusja | edycje)
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

<<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.

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.