Metody Analizy Programów Wykład 02

Slides:



Advertisements
Podobne prezentacje
ALGORYTMY I STRUKTURY DANYCH
Advertisements

Mgr inż.Marcin Borkowski Podstawy Java Część II
Grażyna Mirkowska PJWSTK, 10 stycznia 2001
RACHUNEK ZDAŃ.
METODY ANALIZY PROGRAMÓW
Grażyna Mirkowska PJWSTK 15 listopad 2000
Język ANSI C Funkcje Wykład: Programowanie komputerów
Wykład 10 Metody Analizy Programów Specyfikacja Struktur Danych
Wykład 06 Metody Analizy Programów System Hoare
Algorytmy – zapis struktur programowania
Programowanie I Rekurencja.
typy całkowite (całkowitoliczbowe)
Trian_mon(P) Input: y-monotoniczny wielokąt zapamiętany jako zbiór boków, Output: triangulacja D jako zbiór krawędzi. Wyodrębnij prawy i lewy łańcuch punktów,
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Matematyka Dyskretna, G.Mirkowska, PJWSTK
ALGORYTMY I STRUKTURY DANYCH
ZŁOŻONOŚĆ OBLICZENIOWA
Turbo pascal – instrukcje warunkowe, iteracyjne,…
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Budowa komputera Wstęp do informatyki Wykład 15
ALGORYTMY I STRUKTURY DANYCH
Algorytm Rochio’a.
Wykład 2: Upraszczanie, optymalizacja i implikacja
Materiały pomocnicze do wykładu
INFORMATYKA Wykładowca: mgr Tadeusz Ziębakowski p. 126 I piętro (naprzeciw dziekanatu)
PODSTAWY JĘZYKA PHP 1. czym jest 2. składnia 3. wersje 4. bazy danych
Matematyka Dyskretna, Struktury algebraiczne G.Mirkowska, PJWSTK
Macierz incydencji Macierzą incydencji grafu skierowanego D = (V, A), gdzie V = {1, ..., n} oraz A = {a1, ..., am}, nazywamy macierz I(D) = [aij]i=1,...,n,
Semantyki programów współbieżnych " Determinizm programów sekwencyjnych, " Nie-determinizm programów współbieżnych, " prawdziwa równoległość vs.przeploty.
Skrypty w powłoce Ryszard Haraszczuk. Pierwszy skrypt Stworzenie pliku touch skrypt Wpisanie specjalnej linii dla powłoki #!/bin/bash Napisanie skryptu.
8. LOGIKA TEMPORALNA Składnia zdaniowej logiki temporalnej:
Rzutowanie w rzutach prostokątnych.
Matematyka Dyskretna, G.Mirkowska PJWSTK
Schemat Hornera Mgr inż. Michał Szucki.
Klasa III b.
Podstawy programowania
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
Wyrażenia w Turbo Pascalu.
Algorytmy i struktury danych
Zadanie programowania liniowego PL dla ograniczeń mniejszościowych
2010 © Uniwersytet Rzeszowski | 1 Temat: Autor: Jan Kowalski Ocena zagrożeń ludności cywilnej we współczesnych konfliktach zbrojnych.
Języki i automaty część 3.
Instrukcje iteracyjne
Opracowała: Iwona Kowalik
Instrukcja warunkowa i wyboru
Wnioskowanie w stylu Mamdaniego.
ALGORYTMY I STRUKTURY DANYCH
Informatyka MZT1 Wykład 6 Iteracje while i repeat Tablice Rekordy
Visual Basic for Applications Poziom podstawowy Zajęcia 2
Składnia instrukcji warunkowej if…
Składnia pętli do … while do instrukcja while (wyrażenie); gdzie: instrukcja – instrukcja pojedyncza lub blok instrukcji wyrażenie – wyrażenie przyjmujące.
Ogólna struktura programu w TP
Algorytmika Iteracje autor: Tadeusz Lachawiec.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Iteracje w C# Informatyka Cele lekcji: Wiadomości: Uczeń potrafi:
Temat 8: Pętle.
Wykładowca: mgr Tadeusz Ziębakowski p. 126 I piętro (naprzeciw dziekanatu)
PHP Instrukcja warunkowa if Damian Urbańczyk. Warunek? Instrukcję warunkową wykorzystujemy wtedy, gdy chcemy sprawdzić pewien fakt, który może być prawdziwy.
WYKŁAD 06 Programowanie dynamiczne Grażyna Mirkowska.
Pętle – instrukcje powtórzeń
Instrukcje warunkowe w php. Pętla FOR Czasem zachodzi potrzeba wykonania jakiejś czynności określoną ilość razy. Z pomocą przychodzi jedna z najczęściej.
KNW - wykład 3 LOGIKA MODALNA.
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Instrukcja warunkowa if
ALGORYTMY I STRUKTURY DANYCH
Zapis prezentacji:

Metody Analizy Programów Wykład 02 Grażyna Mirkowska PJWSTK 26 październik 2000 Metody Analizy Programów Wykład 02

Semantyka Programów Deterministycznych Z punktu widzenia maszyny realizującej program Stan pamięci Stan pamięci P Z punktu widzenia użytkownika. Wyniki Dane Ale ... Program = Struktura Danych + Algorytm (N. Wirth) W dowolnej strukturze danych M program wyznacza funkcję częściową : PM : W(M) W(M) gdzie W(M) jest zbiorem wszystkich wartościowań rozważanej struktury. Metody Analizy Programów Wykład 02

Instrukcja Przypisania Składnia x := t zmienna term(wyrażenie algebraiczne x:= t Np.: (x+y) - z f(x,y) x:= f((x+y)-z, y) Semantyka Niech M będzie strukturą danych a v ustalonym wartościowaniem, wtedy v : x y z x := t v ‘ : x y z a t M(v) (x:=t) M (v) = v’ wttw v’(x)= tM(v) v’(z)=v(z) dla z x odwzorowanie częściowe Metody Analizy Programów Wykład 02

Metody Analizy Programów Wykład 02 Przykłady v : x y z x := 7 v ‘ : x y z a b c 7 b c v : x y z x := x+y v ‘ : x y z a b c a+b b c Czy możnaby napisać, że po wyk. podstawienia x = (x+y ) ? v : p q r p := (q and p) or not p v ‘ : p q r 1? (p  q) p := (q and p) or not p p warunek początkowy warunek końcowy Metody Analizy Programów Wykład 02

Metody Analizy Programów Wykład 02 Twierdzenie: Dla dowolnego termu t i dowolnej formuły a : (x := t) a(x)  a( x/ t) Zagadka (która z zależności jest prawdziwa?) a(x) x := t a( x/t) warunek początkowy warunek końcowy a( x/t) x := t a(x) Popatrzmy: Jeżeli na początku spełniony jest warunek y = x+3( to jest nasz warunek początkowy), to po wykonaniu instrukcji x := 5 zmenia się tylko wartość zmiennej x , natomiast nic nie wiem o zależności między x a y po wykonaniu tego przypisania! Metody Analizy Programów Wykład 02

Metody Analizy Programów Wykład 02 Inny przykład: warunek początkowy program warunek końcowy x > 6 x:= x+1 x > 7 Rzeczywiście: skoro x>6, tzn. x+1>7, więc jeśli zastąpię term (x+1) przez x, otrzymam warunek x>7. xs >6 , to po wykonaniu xn := xs +1 otrzymamy xn>7 a(x)  ( x:= x+1) a(x/x-1) a(x/x+1)  (x:= x+1) a(x) Metody Analizy Programów Wykład 02

Metody Analizy Programów Wykład 02 Złożenie programów Schemat blokowy programu (P1; P2) Składnia Jeżeli P1 i P2 są programami, to P= begin P1; P2 end jest też programem. Schemat blokowy P1 Semantyka (przy ustalonej strukturze danych) x y z ... P1; P2 x y z ... a b c a2 b2 c2 wttw istnieją takie a1, b1, c1 ... takie, że x y z ... P1 x y z ... a b c a1 b1 c1 oraz x y z ... P2 x y z ... a1 b1 c1 a2 b2 c2 Schemat blokowy P2 PM(v) = P2M (P1M (v)) Metody Analizy Programów Wykład 02

Metody Analizy Programów Wykład 02 Przykłady Niech P będzie programem, a M ustaloną strukturą danych. P: begin y := 2*x; x:= x* x; x := x+2y +7; y := x/y end Kolejne wartościowania, to v : x y x y x y x y a b a 2a a2 2a a2+4a+7 2a v’ : x y a2+4a+7 (a2+4a+7)/2a P: begin aux := x; x := y; y := aux; end Własności kolejno uzyskiwanych stanów: x=a y=b x=b x=b y=b aux=a aux=a y=a Metody Analizy Programów Wykład 02

Metody Analizy Programów Wykład 02 Twierdzenie Dla dowolnej formuły a, dla dowolnych programów P1, P2 i w dowolnej strukturze danych mamy (P1 ; P2) a  P1 ( P2 a) Wartość formuły a po wykonaniu programu begin P1; P2 end jest taka sama jak wartość formuły (P2 a) po wykonaniu programu P1 w dowolnej strukturze danych i przy dowolnym wartościowaniu początkowym. Metody Analizy Programów Wykład 02

Metody Analizy Programów Wykład 02 Instrukcje warunkowe Schemat blokowy programu if g then P1 else P2 fi. Składnia: if g then P1 else P2 fi Semantyka (przy ustalonej strukturze M): v: x y z if g then P1 else P2 fi x y z a b c a3 b3 c3 wttw x y z P1 x y z o ile v |= g a b c a3 b3 c3 albo x y z P2 x y z o ile v |=g a b c a3 b3 c3 g NIE TAK P1 P2 P1M (v), gdy v|=g PM(v) = P2M (v), gdy v |=g Metody Analizy Programów Wykład 02

Metody Analizy Programów Wykład 02 Przykład Własności kolejno uzyskiwanych stanów obliczenia x=a m= max(x,y) m = max(x,y,z) y=b x=a, y=a,z=c x=a,y=b, z=c z=c P:begin if x>y then m := x else m := y fi; if m <z then m := z fi end Twierdzenie: Dla dowolnego programu postaci P=if g then P1 else P2 fi ,dla dowolnej formuły a mamy P a  g  (P1 a)  g  (P2 a) W każdej strukturze danych, jeśli a. jest spełniona po wykonaniu programu P dla wartościowania początkowego v, albo warunek g jest spełniony w wartościowaniu v i po wykonaniu programu P1 otrzymujemy stan spełniający a., albo warunek g nie jest spełniony ale po wykonaniu P2 spełniony jest warunek a. Metody Analizy Programów Wykład 02

Metody Analizy Programów Wykład 02 Instrukcja pętli TAK NIE Składnia: while g do P od, gdzie g jest warunkiem booleowskim, a P programem P Semantyka : (rozważmy wartościowanie początkowe v w pewnej strukturze M) x y z ... gdy v |= - g a b c x y z ... while g do P od a b c P x y z ... while g do P od a1 b1 c1 itd. ... Metody Analizy Programów Wykład 02

Metody Analizy Programów Wykład 02 Przykład Rozważmy poniższy program P w strukturze liczb naturalnych. Własności kolejno uzyskiwanych stanów w czasie wykonania programu P: i jest liczbą naturalną t jest liczbą nieparzystą s jest sumą kolejnych liczb nieparzystych P: begin t :=1; s := 0; i :=1; while i < n+1 do s := s + t; t := t + 2; i := i + 1 od; end Co robi program P? Zauważmy, że na początku każdej iteracji mamy : t = 2i-1 s= 1+3 + 5 + ...+ (2i-3) = S {(2j-1) : j=1, ..., i-1} Metody Analizy Programów Wykład 02

Metody Analizy Programów Wykład 02 v, gdy v |= -g while g do P od M(v) = Pi(v), gdzie i jest najmniejszą liczbą naturalną taką, że Pi(v) jest określone i Pi(v)|= -g oraz Pj(v) |= g dla j=1, 2,..., (i-1). P: begin s:= 1; k := 1; while k < n do k := k+1; s := s * k od end Jaka jest najmniejsza liczba iteracji potrzebna aby warunek pętli nie był spełniony? Oczywiście potrzeba n-1 iteracji! Po n-1 iteracjach instrukcji (k:=k+1; s := s*k), k osiągnie wartość n a s wartość n! Zatem program P oblicza silnię liczby n dla n>1. Metody Analizy Programów Wykład 02

Metody Analizy Programów Wykład 02 Twierdzenie Dla dowolnego programu P, dowolnych formuł a i g , następująca równoważność jest prawdziwa w każdej strukturze danych: while g do P od a = (-g  a)  (g  P( while g do P od a)) Wynika stąd natychmiast, że następująca implikacja jest prawdziwa: g  (P g ) (P2 g)  (P3 g) ...  (Pi (-g  a))  while g do P od a Tzn. jeśli g jest spełniona przez wartościowanie początkowe oraz po piewszej iteracji g jest spełniona oraz po drugiej iteracji g jest spełniona itd. aż do i-1-szej iteracji ale po i-tej iteracji g nie jest spełniona i zachodzi własność a wtedy własność a jest prawdziwa po wykonaniu pętli. Metody Analizy Programów Wykład 02