SW wykład 5 - Slajd10: 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 4: Linia 4:
Pozostaje tylko klauzula określająca semantykę bloków, łącząca
Pozostaje tylko klauzula określająca semantykę bloków, łącząca
semantykę deklaracji i instrukcji. Znaczeniem bloku jest funkcja,
semantykę deklaracji i instrukcji. Znaczeniem bloku jest funkcja,
która dla danego środowiska i danego składu początkowego, najpierw
która dla danego środowiska i danego składu początkowego najpierw
wykorzystuje semantykę zawartych w tym bloku deklaracji, określając
wykorzystuje semantykę zawartych w tym bloku deklaracji, określając
wynik elaboracji tych deklaracji w początkowym środowisku i składzie,
wynik elaboracji tych deklaracji w początkowym środowisku i składzie,
Linia 16: Linia 16:
jest wykonywane w tak rozszerzonym środowisku. Na zewnątrz bloku, w
jest wykonywane w tak rozszerzonym środowisku. Na zewnątrz bloku, w
szczególności dla instrukcji, które mogą następować "po" tym bloku,
szczególności dla instrukcji, które mogą następować "po" tym bloku,
środowisko nie ulega zmianie. Jeśli któraś z deklarowanych zmiennych
ś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)
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
środowisku, to przypisana jej tam lokacja nie będzie widoczna wewnątrz

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.