SW wykład 6 - Slajd1

Z Studia Informatyczne
Wersja z dnia 15:24, 29 wrz 2006 autorstwa Dorota (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

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

W poprzednim module rozszerzyliśmy język TINY o bloki z lokalnymi deklaracjami zmiennych i procedur. Wprowadzenie zmiennych lokalnych posłużyło nam za motywację dla wprowadzenie pojęcia środowiska, przechowującego informacje o zadeklarowanych obiektach, niejako uzupełnianego składem przechowującym informacje o bieżącej zawartości "pamięci". Procedury wprowadziliśmy w najprostszej wersji, bez parametrów. Dokładniej za to analizowaliśmy dwie strategie wiązania zmiennych i identyfikatorów procedur w ciele procedur: wiązanie dynamiczne i statyczne, oraz ich konsekwencje dla opisu rekurencyjnych wywołań procedury.

Zajmijmy się teraz dalszym rozszerzeniem języka TINY i deklarowanych w jego programach procedur o możliwości przekazywania parametrów. Dla uproszczenia, zajmować się będziemy tylko jedną strategią wiązania zmiennych i identyfikatorów procedur w ciałach procedur: wiązaniem statycznym. Pozostawiamy Państwu jako interesujące ćwiczenie powtórzenie wprowadzanych tu pojęć i definicji w wersji dla wiązania dynamicznego.

Omówimy trzy istotnie różne mechanizmy przekazywania parametrów: przekazywanie przez zmienną, przekazywanie przez wartość i przekazywanie przez nazwę. Dla uproszczenia i jasności prezentacji, przyjmiemy, że mamy zawsze do czynienia z procedurami jednoparametrowymi, z dokładnie wskazanym (przez syntaksę języka) sposobem przekazywania parametru. Znów, jako ciekawe praktyczne rozszerzenie języka, pozostawiamy Państwu próbę opisu realistycznej sytuacji, gdy mamy do czynienia z procedurami wieloparametrowymi, gdzie każdy z parametrów może być przekazywany w inny (ale jednoznacznie wskazany syntaksą deklaracji procedury) sposób.

Podajemy powyżej odpowiednie rozszerzenie składni języka TINY. Do konstrukcji językowych budujących instrukcje dodajemy trzy nowe postacie wywołania procedur z jednym parametrem, przekazywanym przez zmienną (znacznik vr; tu parametrami aktualnymi mogą być tylko zmienne), przez wartość (znacznik vl; tu parametrami aktualnymi mogą być wyrażenia arytmetyczne) i przez nazwę (znacznik nm; tu też parametrami aktualnymi mogą być wyrażenia arytmetyczne). Składnię deklaracji procedur rozszerzamy zaś dodając trzy nowe postacie deklaracji procedur jednoparametrowych, znów z parametrem przekazywanym przez zmienną, przez wartość i przez nazwę, odpowiednio (co wskazują odpowiednie znaczniki w deklaracji).