Semantyka i weryfikacja programów/Ćwiczenia 7: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 102: | Linia 102: | ||
}} | }} | ||
{{cwiczenie|4|cw4| | {{cwiczenie|4|cw4| O pętli for można jednak myśleć jeszcze inaczej. Można wymagać, aby wszelkie zmiany wartości zmiennej sterującej <math>x</math> wewnątrz wykonania pętli nie miały wpływu na liczbę iteracji tej pętli. Przykładowo przy semantyce z poprzedniego zadania pętla: | ||
O pętli for można jednak myśleć jeszcze inaczej. Można wymagać, aby wszelkie zmiany wartości zmiennej sterującej <math>x</math> wewnątrz wykonania pętli nie miały wpływu na liczbę iteracji tej pętli. Przykładowo przy semantyce z poprzedniego zadania pętla: | |||
'''for''' x := 1 '''to''' 10 '''do''' | '''for''' x := 1 '''to''' 10 '''do''' | ||
x := x + 1; | x := x + 1; |
Wersja z 14:04, 5 sie 2006
Semantyka bezpośrednia instrukcji. Konstrukcje iteracyjne.
Pętle while i repeat
Ćwiczenie 1
Zdefiniuj semantykę denotacyjną następującego języka:
Pętla polega na wykonaniu instrukcji i, a następnie wyliczeniu warunku logicznego b. Jeśli warunek jest prawdziwy wykonanie pętli kończy się, w przeciwnym razie powracamy do wykonania instrukcji i.
Rozwiązanie
Pętla for
Ćwiczenie 2
Rozszerzmy język z poprzedniego zadania o instrukcję:
Wykonanie takiej pętli polega na:
- Wyliczeniu wartości wyrażenia .
- Przypisaniu wartości na zmienną .
- Wyliczeniu wartości wyrażenia .
- Jeśli , to pętla kończy się.
- W przeciwnym razie:
- Wykonujemy instrukcję .
- Zwiększamy zmienną o 1.
- Powracamy do punktu 3.
Zauważmy, że wyrażenie jest tu wyliczane tylko raz, ale oblicza się przy każdym obrocie pętli.
Rozwiązanie
Ćwiczenie 3
Zmieńmy semantykę instrukcji for z poprzedniego zadania tak, aby oba wyrażenia obliczały się tylko raz. Tym razem wyliczenie pętli polega na:
- Wyliczeniu wartości wyrażenia .
- Przypisaniu wartości na zmienną .
- Wyliczeniu wartości wyrażenia .
- Jeśli , to pętla kończy się.
- W przeciwnym razie:
- Wykonujemy instrukcję .
- Zwiększamy zmienną o 1.
- Powracamy do punktu 4.
Rozwiązanie
Ćwiczenie 4
Rozwiązanie
Ćwiczenie 5
W języku C pętla for ma następującą postać:
Jej wykonanie polega na:
- Wykonaniu instrukcji .
- Wyliczeniu wartości wyrażenia .
- Jeśli wyrażenie wylicza się do fałszu, to pętla kończy się.
- W przeciwnym razie:
- Wykonujemy instrukcję .
- Wykonujemy instrukcję .
- Powracamy do punktu 2.
Rozwiązanie