SW wykład 6 - Slajd11: 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 3: Linia 3:


Zmieniamy też w dość oczywisty sposób funkcję semantyczną dla
Zmieniamy też w dość oczywisty sposób funkcję semantyczną dla
instrukcji: w danym środowisku zmiennych i procedur, wyznacza ona
instrukcji: w danym środowisku zmiennych i procedur wyznacza ona
przekształcenie stanów w stany (dopuszczając możliwości sygnalizacji
przekształcenie stanów w stany (dopuszczając możliwości sygnalizacji
błędu). Znów jednak, większość klauzul dla konstrukcji budujących
błędu). Znów jednak większość klauzul dla konstrukcji budujących
instrukcje zachowuje dotyczczasową postać, operując na stanach
instrukcje zachowuje dotyczczasową postać, operując na stanach
dokładnie tak, jak dotychczas na składach. Warto może przejrzeć kilka
dokładnie tak, jak dotychczas na składach. Warto może przejrzeć kilka
Linia 16: Linia 16:
przede wszystkim klauzuli dla instrukcji przypisania. Modyfikacje te
przede wszystkim klauzuli dla instrukcji przypisania. Modyfikacje te
jednak są proste: operacje na składach w poprzednich klauzulach trzeba
jednak są proste: operacje na składach w poprzednich klauzulach trzeba
tu po prostu powtórzyć wydobywając skład ze struktury stanu i
tu po prostu powtórzyć, wydobywając skład ze struktury stanu i
odpowiednio umieszczając go znów w tej strukturze. Pozostałe składowe
odpowiednio umieszczając go znów w tej strukturze. Pozostałe składowe
stanu nie ulegają tu zmianie.
stanu nie ulegają tu zmianie.
Linia 24: Linia 24:


Semantyka instrukcji wejścia jest oczywista. W danym środowisku i
Semantyka instrukcji wejścia jest oczywista. W danym środowisku i
stanie, najpierw wydobywamy ze środowiska lokację zmiennej, na która
stanie najpierw wydobywamy ze środowiska lokację zmiennej, na którą
chcemy wczytać wartość liczbową z wejścia. Następnie wyodrębniamy z
chcemy wczytać wartość liczbową z wejścia. Następnie wyodrębniamy z
potoku wejściowego pierwszy element i resztę tego potoku. Wynikiem
potoku wejściowego pierwszy element i resztę tego potoku. Wynikiem

Aktualna wersja na dzień 15:36, 29 wrz 2006

<<powrót do strony wykładu

Parametry Semantyka procedur Semantyka procedur, c.d. Semantyka procedur bezparametrowych Przekazywanie przez zmienną Przekazywanie przez wartość Przekazywanie przez nazwę Wejście/wyjście Semantyka wejścia/wyjścia Semantyka wejścia/wyjścia, c.d. Semantyka wejścia/wyjścia, c.d. Programy Problem Nowe podejście Kontynuacje

Zmieniamy też w dość oczywisty sposób funkcję semantyczną dla instrukcji: w danym środowisku zmiennych i procedur wyznacza ona przekształcenie stanów w stany (dopuszczając możliwości sygnalizacji błędu). Znów jednak większość klauzul dla konstrukcji budujących instrukcje zachowuje dotyczczasową postać, operując na stanach dokładnie tak, jak dotychczas na składach. Warto może przejrzeć kilka tych klauzul, by przekonać się, że rzeczywiście nie wymagają one zmiany.

Wyjątkiem są tu oczywiście klauzule, które bezpośrednio modyfikują składy lub wykorzystują je istotnie jako funkcje. Dotyczy to deklaracji zmiennych, deklaracji i wywołań procedur z parametrami, a przede wszystkim klauzuli dla instrukcji przypisania. Modyfikacje te jednak są proste: operacje na składach w poprzednich klauzulach trzeba tu po prostu powtórzyć, wydobywając skład ze struktury stanu i odpowiednio umieszczając go znów w tej strukturze. Pozostałe składowe stanu nie ulegają tu zmianie.

Oczywiście, dodajemy też klauzule dla instrukcji wejścia i wyjścia, które właśnie służą modyfikacji tych dwóch składowych stanów.

Semantyka instrukcji wejścia jest oczywista. W danym środowisku i stanie najpierw wydobywamy ze środowiska lokację zmiennej, na którą chcemy wczytać wartość liczbową z wejścia. Następnie wyodrębniamy z potoku wejściowego pierwszy element i resztę tego potoku. Wynikiem jest stan, w którym modyfikujemy skład przez przypisanie wydobytej lokacji pierwszego elementu wejścia, potok wejściowy zastępujemy jego resztą, a potok wyjściowy pozostaje bez zmiany. Oczywiście, jeśli zmienna w danym środowisku nie oznacza lokacji, albo z potoku wejściowego nie da się wydobyć pierwszego elementu, to generowany jest sygnał błędu.

Jeszcze prostsza jest semantyka instrukcji wyjścia: w danym środowisku i stanie wyliczamy wartość wyrażenia i tę wartość dopisujemy do potoku wyjściowego w wynikowym stanie, jego skład i potok wejściowy pozostawiając niezmienione.