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

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Tarlecki (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:sw0600.png|center|frame]]
[[Grafika:sw0600.png|center|frame]]
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 <b>vr</b>; tu parametrami aktualnymi mogą być tylko
zmienne), przez wartość (znacznik <b>vl</b>; tu parametrami aktualnymi
mogą być wyrażenia arytmetyczne) i przez nazwę (znacznik <b>nm</b>; 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).

Wersja z 11:57, 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

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