SW wykład 6 - Slajd6: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 3: | Linia 3: | ||
Klauzula dla wywołania procedur jednoparametrowych z parametrem | Klauzula dla wywołania procedur jednoparametrowych z parametrem | ||
przekazywanym przez wartość jest także dość prosta. | przekazywanym przez wartość jest także dość prosta. Przy wywołaniu | ||
takiej procedury dla danych środowisk zmiennych i procedur i w danym | takiej procedury dla danych środowisk zmiennych i procedur i w danym | ||
składzie | składzie najpierw sprawdzamy, czy jej identyfikatorowi w danym | ||
środowisku procedur jest przypisane znaczenie procedury | środowisku procedur jest przypisane znaczenie procedury | ||
jednoparametrowej z parametrem przekazywanym przez wartość. | jednoparametrowej z parametrem przekazywanym przez wartość. Następnie | ||
wyznaczamy wartość w danym środowisku zmiennych i w danym składzie | wyznaczamy wartość w danym środowisku zmiennych i w danym składzie | ||
wyrażenia będącego parametrem aktualnym. Tak wyznaczoną liczbę | wyrażenia będącego parametrem aktualnym. Tak wyznaczoną liczbę | ||
przekazujemy jako argument dla znaczenia tej procedury | przekazujemy jako argument dla znaczenia tej procedury i | ||
przekształcamy stan w sposób przez nie zadany. Oczywiście, w każdym z | 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 | tych kroków może pojawić się błąd, który powoduje, że wynikiem jest | ||
Linia 18: | Linia 18: | ||
skomplikowana. W środowisku procedur przypisujemy identyfikatorowi | skomplikowana. W środowisku procedur przypisujemy identyfikatorowi | ||
deklarowanej procedury znaczenie, które dla danej wartości (liczbowej) | deklarowanej procedury znaczenie, które dla danej wartości (liczbowej) | ||
parametru aktualnego i w danym składzie początkowym | parametru aktualnego i w danym składzie początkowym najpierw wyznacza | ||
niewykorzystywaną lokację i przypisuje ją w środowisku zmiennych | niewykorzystywaną lokację i przypisuje ją w środowisku zmiennych | ||
parametrowi formalnemu (jednocześnie odpowiednio modyfikując skład, | parametrowi formalnemu (jednocześnie odpowiednio modyfikując skład, |
Wersja z 15:30, 29 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

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