SW wykład 6 - Slajd11
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.