Semantyka i weryfikacja programów/Ćwiczenia 3
Zawarto¶æ
Koñczymy semantykê ma³ych kroków i rozpoczynamy semantykê naturaln± (du¿e kroki). Uzupe³nimy semantykê naturaln± jêzyka Tiny o semantykê naturaln± wyra¿eñ boolowskich i arytmetycznych oraz semantykê b³êdów wykonania. Wreszcie dodamy now± instrukcjê pêtli pozwalaj±c± na niestrukturalne przerwanie lub wznowienie iteracji (instrukcje i ).
Rozszerzenia semantyki jêzyka Tiny
Ćwiczenie 1
Zdefiniuj znaczenie wyra¿eñ boolowskich i arytmetycznych w jêzyku Tiny, w stylu du¿ych kroków (semantyka naturalna).
Rozwiązanie
Ćwiczenie 2
Rozwa¿ dodatkowo operacjê dzielenia:
i rozszerz semantykê z poprzedniego zadania. Dzielenie przez zero jest b³±dem i koñczy natychmiast wykonanie programu. Oprócz stanu wynikiem programu powinna byc informacja o b³êdzie, je¶li b³±d wyst±pi³.
Rozwiązanie
Ćwiczenie 3
Rozszerzmy jêzyk Tiny o nastêpuj±c± instrukcjê pêtli:
to instrukcja pêtli, stanowi instrukcjê wewnêtrzn±. Instrukcja wychodzi z nabli¿szej otaczaj±cej pêtli i kontynuuje wykonanie programu od pierwszej instrukcji za t± pêtl±. Instrukcja powraca na pocz±tek instrukcji wewnêtrznej najbli¿szej otaczaj±cej pêtli .
Pozwa¿ zarówno semantykê naturaln± jak i semantykê ma³ych kroków.
Rozwiązanie (semantyka naturalna)
Rozwiązanie (ma³e kroki)
Zadania domowe
Ćwiczenie 1
Zaproponuj semantykê ma³o-krokow± dla rozszerzeñ jêzyka Tiny, które studiowali¶my powy¿ej.
Ćwiczenie 2
Napisz semantyjê naturaln± dla nieznacznie rozszerzonej wersji instrukcji :
Identyfikator pe³ni tutaj rolê etykiety zwi±zanej z instrukcj± , jest te¿ parametrem dwóch pozosta³ych instrukcji. koñczy teraz najbli¿sz± otaczaj±c± pêtlê o etykiecie . Podobnie wznawia najbli¿sz± otaczaj±c± pêtlê o etykiecie .
Przykład
koñczy dzia³anie z warto¶ci± zmiennej . Za pomoc± wciêæ okre¶lili¶my, do wnêtrza której pêtli nale¿y ka¿da z trzech ostatnich instrukcji przypisania. Niejednoznaczno¶æ bierze siê oczywi¶cie st±d, ¿e pracujemy ze sk³adni± abstrakcyjn±. Sk³adnia konkretna zawiera³aby prawdopodobnie jak±¶ konstukcjê zamykaj±c± pêtlê , np. .
Ćwiczenie 3
Napisz semantykê naturaln± i ma³o-krokow± dla rozszerzenia jêzyka Tiny o wyra¿enia z efektami ubocznymi:
Obliczenie wyra¿enia polega na wykonaniu a potem na obliczeniu . Warto¶æ wyra¿enia jest taka jak warto¶æ wyra¿enia a efektem ubocznym jest podstawienie tej warto¶ci na zmienn± .