SW wykład 6 - Slajd5: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 1: | Linia 1: | ||
{{Semantyka i weryfikacja programów/Wykład 6}} | {{Semantyka i weryfikacja programów/Wykład 6}} | ||
[[Grafika:sw0604.png|center|frame]] | [[Grafika:sw0604.png|center|frame]] | ||
Przekazywanie parametru przez zmienną jest bodaj najprostsze | |||
semantycznie. Przy wywołaniu takiej procedury dla danych środowisk | |||
zmiennych i procedur, najpierw sprawdzamy, czy jej identyfikatorowi w | |||
danym środowisku procedur jest przypisane znaczenie procedury | |||
jednoparametrowej z parametrem przekazywanym przez zmienną. Następnie | |||
wyznaczamy lokację zmiennej, będącej parametrem aktualnym w danym | |||
wywołaniu. Odpowiednie przekształcenie składu to znaczenie wywoływanej | |||
procedury dla lokacji parametru aktualnego. Oczywiście, gdy | |||
identyfikatorowi wywoływanej procedury w środowisku procedur nie jest | |||
przypisane znaczenie procedury jednoparametrowej z parametrem | |||
przekazywanym przez zmienna, lub gdy parametrowi aktualnemu w | |||
środowisku zmiennych nie jest przypisana lokacja --- wynikiem jest | |||
sygnał błędu. | |||
Klauzula dla deklaracji takich procedur jest tylko nieco bardziej | |||
skomplikowana przez fakt, że posługujemy sie nazwą parametru | |||
formalnego jako zmienną, której przypisujemy lokację przekazaną jako | |||
znaczenie parametru aktualnego. Zapisujemy to odpowiednio w środowisku | |||
zmiennych dla ciała procedury i łączymy z omawianą dla procedur | |||
bezparametrowych stałopunktową definicją umożliwiającą wywołania | |||
rekurencyjne procedury w jej ciele. | |||
Oczywiście, definicje te dają dokładnie zamierzony efekt: wszelkie | |||
odwołania w ciele procedury do parametru formalnego działają tak, jak | |||
odwołania do zmiennej będącej parametrem aktualnym w danym wywołaniu. | |||
W szczególności, zmiany jej wartości w ciele procedury (dokładniej: | |||
zmiany wartości przypisanej jej lokacji w składzie) pozostają | |||
widoczne po zakończeniu realizacji tego wywołania. |
Wersja z 11:59, 28 wrz 2006
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

Przekazywanie parametru przez zmienną jest bodaj najprostsze semantycznie. Przy wywołaniu takiej procedury dla danych środowisk zmiennych i procedur, najpierw sprawdzamy, czy jej identyfikatorowi w danym środowisku procedur jest przypisane znaczenie procedury jednoparametrowej z parametrem przekazywanym przez zmienną. Następnie wyznaczamy lokację zmiennej, będącej parametrem aktualnym w danym wywołaniu. Odpowiednie przekształcenie składu to znaczenie wywoływanej procedury dla lokacji parametru aktualnego. Oczywiście, gdy identyfikatorowi wywoływanej procedury w środowisku procedur nie jest przypisane znaczenie procedury jednoparametrowej z parametrem przekazywanym przez zmienna, lub gdy parametrowi aktualnemu w środowisku zmiennych nie jest przypisana lokacja --- wynikiem jest sygnał błędu.
Klauzula dla deklaracji takich procedur jest tylko nieco bardziej skomplikowana przez fakt, że posługujemy sie nazwą parametru formalnego jako zmienną, której przypisujemy lokację przekazaną jako znaczenie parametru aktualnego. Zapisujemy to odpowiednio w środowisku zmiennych dla ciała procedury i łączymy z omawianą dla procedur bezparametrowych stałopunktową definicją umożliwiającą wywołania rekurencyjne procedury w jej ciele.
Oczywiście, definicje te dają dokładnie zamierzony efekt: wszelkie odwołania w ciele procedury do parametru formalnego działają tak, jak odwołania do zmiennej będącej parametrem aktualnym w danym wywołaniu. W szczególności, zmiany jej wartości w ciele procedury (dokładniej: zmiany wartości przypisanej jej lokacji w składzie) pozostają widoczne po zakończeniu realizacji tego wywołania.