SW wykład 6 - Slajd1: Różnice pomiędzy wersjami
Nie podano opisu zmian |
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
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).