Semantyka i weryfikacja programów/Ćwiczenia 2
Zawarto¶æ
Æwiczymy dalej semantykê ma³ych kroków. Uzupe³nimy semantykê jêzyka Tiny o semantykê operacyjn± wyra¿eñ boolowskich i arytmetycznych. Nastêpnie rozszerzymy nasz jêzyk o róznorodne konstrukcje iteracji. Na koniec zdefiniujemy operacje arytmetyczne liczb binarnych.
Rozszerzenia semantyki jêzyka Tiny
Ćwiczenie 1
Semantyka jêzyka Tiny z wyk³adu u¿ywa³a funkcji semantycznych dla okre¶lenia znaczenia wyra¿eñ boolowskich i arytmetycznych. Zdefiniuj znaczenie wyra¿eñ za pomoc± semantyki operacyjnej, w stylu ma³ych kroków.
Rozwiązanie
Ćwiczenie 2
Rozszerzmy jêzyk Tiny o nastêpuj±ce dobrze znane konstrukcje iteracji:
Napisz semantykê ma³ych kroków dla powy¿szych konstrukcji.
Rozwiązanie
Kalkulator binarny
Ćwiczenie 3
Rozwa¿my nastêpuj±cy jêzyk wyra¿eñ (liczby binarne z dodawaniem):
oznacza s³owo puste, czyli np. oznacza binarn± liczbê 1011. Napisz semantykê operacyjn± obliczaj±c± warto¶æ wyra¿eñ.
Rozwiązanie
Ćwiczenie 4
Rozszerzmy sk³adniê o jeden symbol oznaczaj±cy przepe³nienie:
Na przyk³ad oznacza tê sam± liczbê co , ale z dodatkow± informacj±, ¿e podczas jej obliczania nast±pi³o przepe³nienie. Rozumiemy przez to sytuacjê, gdy wynik ma wiêcej cyfr ni¿ ka¿dy z argumentów. Cyfry zero z lewej strony (najbardziej znacz±ce) równie¿ uwa¿amy za pe³noprawne cyfry, nie nale¿y ich usuwaæ ani dodawaæ nowych.
Napisz semantykê operacyjn± obliczaj±c± warto¶æ wyra¿enia wraz z informacja o ewentualnym przepe³nieniu. Wynik powinien byc poprawny przynajmniej dla wyra¿eñ w sk³adni ograniczonej:
Rozwiązanie
Zadania domowe
Ćwiczenie 1
Podaj przyk³ad wyra¿enia boolowskiego, które nie policzy siê ani przy u¿yciu strategii lewo- ani prawostronnej, a policzy siê przy strategii równoleg³ej.
Ćwiczenie 2
Zmodyfikuj semantykê wyra¿eñ nastêpuj±co: dla ka¿dego podwyra¿enia niedeterministycznie wybierana jest albo strategia lewo- albo prawostronna, ale niedozwolony jest ,,przeplot".
Ćwiczenie 3
Rozwa¿ inn± semantykê pêtli , w której wyra¿enie jest obliczane na nowo przed ka¿d± iteracj± pêtli. Napisz regu³y semantyczne dla tej instrukcji, nie odwo³uj±c siê do innych istrukcji pêtli.
Ćwiczenie 4
Dodaj do wyra¿eñ binarnych operacjê odejmowania.
Ćwiczenie 5
Zaproponuj semantykê przypisania równoleg³ego w jêzyku Tiny:
polegaj±cego na obliczeniu najpierw warto¶ci wyra¿eñ a nastêpnie na podstawieniu tych warto¶ci na zmienne .