SW wykład 5 - Slajd10

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

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