Semantyka i weryfikacja programów/Ćwiczenia 8: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Dorota (dyskusja | edycje)
Nie podano opisu zmian
Linia 13: Linia 13:
}}
}}


{{rozwiazanie||roz1|
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
 
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie</span>
<div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible-content" style="display:none">
Jeszcze nie ma  
Jeszcze nie ma  
</div>
</div>
</div>
</div>
}}


=== Stosowanie konstrukcji stałopunktowych ===
=== Stosowanie konstrukcji stałopunktowych ===

Wersja z 13:25, 1 cze 2020

Obliczanie funkcji semantycznych. Punkty stałe.

Obliczanie prostych funkcji semantycznych

Rozpatrzmy język z pierwszego zadania poprzednich ćwiczeń. Przypuśćmy, że w stanie początkowym wszystkie zmienne mają wartość zero. Dla programu:

 x := 5;
 if x + 1 + 8 then
   x := x + 4
 else
   x := x + 10

Ćwiczenie 1

Pokaż jak wygląda obliczenie semantyki programu:

Rozwiązanie

Stosowanie konstrukcji stałopunktowych

Ćwiczenie 2

Równania semantyczne dla konstrukcji iteracyjnych, które zapisaliśmy w poprzednich ćwiczeniach, nie są do końca poprawne. Występuje w nich rekurencja, która nie musi się kończyć, więc w pewnych sytuacjach (programów zapętlających się) równania te nie definiują poprawnie żadnej wartości. Zmienimy to teraz posługując się konstrukcją punktu stałego.

Rozwiązanie

{{{3}}}

Tutaj definicje stałopunktowe dla kolejnych konstrukcji stałopunktowych po uprzednim przykładzie dla while

Obliczanie punktów stałych

Dany jest program

while 0 = 0 do skip

Ćwiczenie 3

Korzystając z konstrukcji punktu stałego z dowodu twierdzenia o punkcie stałym, oblicz semantykę programu:

Rozwiązanie

{{{3}}}

Dany jest program

x := 1;
while not x = 3 do y := y + x;

Ćwiczenie 4

Korzystając z konstrukcji punktu stałego z dowodu twierdzenia o punkcie stałym, oblicz semantykę programu:

Rozwiązanie

{{{3}}}