SW wykład 6 - Slajd5: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Arturas (dyskusja | edycje)
Nie podano opisu zmian
Tarlecki (dyskusja | edycje)
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

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

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.