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

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Dorota (dyskusja | edycje)
Nie podano opisu zmian
Dorota (dyskusja | edycje)
Nie podano opisu zmian
 
Linia 30: Linia 30:
Zauważmy, że rzeczywiście efekt tych definicji jest zgodny z
Zauważmy, że rzeczywiście efekt tych definicji jest zgodny z
oczekiwaniami wobec tego trybu przekazywania parametrów: w ciele
oczekiwaniami wobec tego trybu przekazywania parametrów: w ciele
procedury parametr formalny jest inicjalizowany otrzymując wartość
procedury parametr formalny jest inicjalizowany, otrzymując wartość
parametru aktualnego. Dalej możemy się nim posługiwać jak każdą
parametru aktualnego. Dalej możemy się nim posługiwać jak każdą
(zadeklarowaną i zainicjalizowaną) zmienną. Jednak możliwe zmiany tej
(zadeklarowaną i zainicjalizowaną) zmienną. Jednak możliwe zmiany tej

Aktualna wersja na dzień 15:31, 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

Klauzula dla wywołania procedur jednoparametrowych z parametrem przekazywanym przez wartość jest także dość prosta. Przy wywołaniu takiej procedury dla danych środowisk zmiennych i procedur i w danym składzie najpierw sprawdzamy, czy jej identyfikatorowi w danym środowisku procedur jest przypisane znaczenie procedury jednoparametrowej z parametrem przekazywanym przez wartość. Następnie wyznaczamy wartość w danym środowisku zmiennych i w danym składzie wyrażenia będącego parametrem aktualnym. Tak wyznaczoną liczbę przekazujemy jako argument dla znaczenia tej procedury i przekształcamy stan w sposób przez nie zadany. Oczywiście, w każdym z tych kroków może pojawić się błąd, który powoduje, że wynikiem jest znów sygnał błędu.

Klauzula dla deklaracji takich procedur jest nieco bardziej skomplikowana. W środowisku procedur przypisujemy identyfikatorowi deklarowanej procedury znaczenie, które dla danej wartości (liczbowej) parametru aktualnego i w danym składzie początkowym najpierw wyznacza niewykorzystywaną lokację i przypisuje ją w środowisku zmiennych parametrowi formalnemu (jednocześnie odpowiednio modyfikując skład, jak przy deklaracji zmiennej --- wykład 5, slajd 8), a następnie wylicza wynik znaczenia ciała procedury w tak zmodyfikowanym środowisku zmiennych, w środowisku procedur zmodyfikowanym przez przypisanie identyfikatorowi deklarowanej procedury właśnie definiowanego znaczenia i w składzie początkowym zmodyfikowanym przez zajęcie nowej lokacji.

Zauważmy, że rzeczywiście efekt tych definicji jest zgodny z oczekiwaniami wobec tego trybu przekazywania parametrów: w ciele procedury parametr formalny jest inicjalizowany, otrzymując wartość parametru aktualnego. Dalej możemy się nim posługiwać jak każdą (zadeklarowaną i zainicjalizowaną) zmienną. Jednak możliwe zmiany tej zmiennej w ciele procedury nie będą widoczne po zakończeniu wywołania: dotyczyć one będą bowiem nowej lokacji, która nie była przypisana żadnej zmiennej zadeklarowanej w środowisku "na zewnątrz" wywołania procedury, a zatem jej zawartość nie może być w takim środowisku "odczytana".