SW wykład 5 - Slajd4: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Arturas (dyskusja | edycje)
Nie podano opisu zmian
Tarlecki (dyskusja | edycje)
Nie podano opisu zmian
Linia 1: Linia 1:
{{Semantyka i weryfikacja programów/Wykład 5}}
{{Semantyka i weryfikacja programów/Wykład 5}}
[[Grafika:sw0503.png|center|frame]]
[[Grafika:sw0503.png|center|frame]]
Nie będziemy tu wykorzystywanych konwencji notacyjnych wprowadzać
bardzo formalnie (choć oczywiście można to zrobić) ---- mamy nadzieję,
że wszystkie one są bardzo oczywiste i w zasadzie czytelne bez
większych wyjaśnień.
Po pierwsze, na ogół rezygnować będziemy z notacji lambda dla
definiowania funkcji "na najwyższym poziomie" klauzul
semantycznych. Zamiast tego, definiować będziemy te funkcje dla danych
(nazwanych) argumentów.
Po drugie, wykorzystywać będziemy notacje wygodne dla oznaczenia
niektórych wartości pośrednich i warunkowych wyborów.
I w końcu, co chyba najważniejsze dla czytelności klauzul,
przyjmiemy, że wszelkie nieuwzględnione wyraźnie "błędy abstrakcyjne"
są zawsze propagowane.
Wykorzystując te konwencje, podane na poprzednim slajdzie klauzule
semantyczne dla zmiennych i dla sumy wyrażeń arytmetycznych możemy już
zapisać w znacznie bardziej zwarty i przejrzysty sposób. Podkreślmy
jednak, że podane tu ich wersje to tylko skrótowy zapis klauzul z
poprzedniego slajdu.
W tej postaci, łatwo już je powiązać z semantyką dla wyrażeń w
poprzednim module, gdzie znaczeniem wyrażeń arytmetycznych były
funkcje ze stanów w wartości liczbowe. Zachęcamy Państwa do ścisłego
określenia tego związku, wykorzystując wprowadzone pojęcie "złożenia"
środowiska i składu dla określenia stanu.
Nie będziemy tu jeszcze raz wprowadzać odpowiednio zmodyfikowanych
klauzul dla pozostałych konstrukcji językowych budujących wyrażenia
arytmetyczne i logiczne --- klauzule dla stałych są oczywiste,
klauzulę dla zmiennych podaliśmy, a pozostałe są podobne do podanej
powyżej klauzuli dla sumy wyrażeń. Warto się jednak upewnić, choćby
przez przejrzenie ich poprzednich wersji, że jasne jest, jak w każdym
wypadku powinna wyglądać nowa klauzula.

Wersja z 20:59, 25 wrz 2006

<<powrót do strony wykładu

Bloki i deklaracje Lokacje Funkcje semantyczne Konwencje notacyjne Instrukcje Klauzule semantyczne Klauzule semantyczne, c.d. Deklaracje Deklaracje, c.d. Semantyka bloków Procedury Wiązania zmiennych Semantyka Tiny++ Semantyka Tiny++ Rekurencja Semantyka procedur rek. Semantyka procedur rek.

Nie będziemy tu wykorzystywanych konwencji notacyjnych wprowadzać bardzo formalnie (choć oczywiście można to zrobić) ---- mamy nadzieję, że wszystkie one są bardzo oczywiste i w zasadzie czytelne bez większych wyjaśnień.

Po pierwsze, na ogół rezygnować będziemy z notacji lambda dla definiowania funkcji "na najwyższym poziomie" klauzul semantycznych. Zamiast tego, definiować będziemy te funkcje dla danych (nazwanych) argumentów. Po drugie, wykorzystywać będziemy notacje wygodne dla oznaczenia niektórych wartości pośrednich i warunkowych wyborów. I w końcu, co chyba najważniejsze dla czytelności klauzul, przyjmiemy, że wszelkie nieuwzględnione wyraźnie "błędy abstrakcyjne" są zawsze propagowane.

Wykorzystując te konwencje, podane na poprzednim slajdzie klauzule semantyczne dla zmiennych i dla sumy wyrażeń arytmetycznych możemy już zapisać w znacznie bardziej zwarty i przejrzysty sposób. Podkreślmy jednak, że podane tu ich wersje to tylko skrótowy zapis klauzul z poprzedniego slajdu.

W tej postaci, łatwo już je powiązać z semantyką dla wyrażeń w poprzednim module, gdzie znaczeniem wyrażeń arytmetycznych były funkcje ze stanów w wartości liczbowe. Zachęcamy Państwa do ścisłego określenia tego związku, wykorzystując wprowadzone pojęcie "złożenia" środowiska i składu dla określenia stanu.

Nie będziemy tu jeszcze raz wprowadzać odpowiednio zmodyfikowanych klauzul dla pozostałych konstrukcji językowych budujących wyrażenia arytmetyczne i logiczne --- klauzule dla stałych są oczywiste, klauzulę dla zmiennych podaliśmy, a pozostałe są podobne do podanej powyżej klauzuli dla sumy wyrażeń. Warto się jednak upewnić, choćby przez przejrzenie ich poprzednich wersji, że jasne jest, jak w każdym wypadku powinna wyglądać nowa klauzula.