Wykład 8 - Politechnika Poznańska

Transkrypt

Wykład 8 - Politechnika Poznańska
Technologia Informacyjna
Wykład 6
Strona 1 z 15
Poprawność algorytmów
Błędy językowe
- Są to błędy wynikające z naruszenie składni języka programowania.
- Dobre kompilatory i interpretery wychwytują
praktycznie wszystkie błędy językowe.
- Próba uruchomienia programu z błędem językowym kończy się przerwaniem wykonywania takiego programu, oraz podaniem odpowiedniego
komunikatu o przyczynie zatrzymania.
Mariusz. B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
1
Technologia Informacyjna
Wykład 6
Strona 2 z 15
Start
Nadaj licznikowi i
wskaźnikowi
wartości początkowe
Sprawdź kilka
następnych symboli
Czy są
„pieniądze” ?
Wewnątrz
tekstu
Nie
Przesuń wskaźnik (łącznie ze
sprawdzeniem końca tekstu)
Wypisz licznik
Tak
Koniec
Sprawdź kilka
następnych symboli
Czy jest „. ” ?
Tak
Koniec
tekstu
Wewnątrz
tekstu
Nie
Przesuń wskaźnik (łącznie ze
sprawdzeniem końca tekstu)
Wypisz licznik
Koniec
tekstu
Zwiększ licznik
Koniec
Zarys schematu blokowego algorytmu wyszukującego słowo "pieniądze"
Mariusz. B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
2
Technologia Informacyjna
Wykład 6
Strona 3 z 15
Algorytm wyszukujący słowo pieniądze
Znajomi mówili mnie, że pieniądze najlepiej
trzymać w banku; np. PKO jest bardzo dobrym miejscem do przechowywania pieniędzy.
Mariusz. B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
3
Technologia Informacyjna
Wykład 6
Strona 4 z 15
Błędy logiczne
Błędne zrozumienie zadania algorytmicznego –
błędy algorytmiczne
Otrzymujemy składniowo poprawny program.
W wyniku błędnego zrozumienia zadania otrzymany
program robi zupełnie co innego, aniżeli założono.
Mariusz. B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
4
Technologia Informacyjna
Wykład 6
Strona 5 z 15
Błędy logiczne
Przyjęcie błędnych założeń
Na przykład:
próba dzielenia X przez Y, jeśli w danym momencie Y równe jest 0,
próba zejścia po drzewie w dół węzła, który jest
liściem.
Mariusz. B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
5
Technologia Informacyjna
Wykład 6
Strona 6 z 15
Błędy logiczne
Niezrozumienie semantyki danego języka programowania – błędy semantyczne
Na przykład, jaką wartość będzie miała zmienna sterująca Y w pętli iteracyjne
dla Y zmieniającego się od 1 do N
po zakończeniu działania pętli.
Mariusz. B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
6
Technologia Informacyjna
Wykład 6
Strona 7 z 15
Błędy logiczne
Nieskończenie pętlący się algorytm
w tym miejscu
X=11.6
czy
X=100?
TAK
NIE
X:=X+1
stop
Zmienna X przyjmuje kolejno wartości:
11.6; 12.6; 13.6; ...; 97.6; 98.6; 99.6; 100.6; 101.6
itd.
Mariusz. B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
7
Technologia Informacyjna
Wykład 6
Strona 8 z 15
Start
Zanotuj „na boku” 0;
wskaż na pierwszego
pracownika za pomocą
Wskaż na pierwszego
pracownika za pomocą Q
T
Czy Q jest
bezpośrednim
kierownikiem P
T
Czy płaca P
jest większa
niż Q ?
N
N
Czy Q jest
bezpośrednim
kierownikiem P
Dodaj płacę P do
liczby na boku
N
Przesuń Q na następnego
pracownika
T
T
Wypisz liczbę na
boku
Stop
Czy P jest na
końcu listy?
N
Przesuń P na następnego
pracownika
Schemat blokowy algorytmu sumowania zarobków
Mariusz. B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
8
Technologia Informacyjna
Wykład 6
Strona 9 z 15
Poprawność częściowa i całkowita algorytmu – interpretacja geometryczna
dowolne poprawne
dane z I
dowolne poprawne
dane z I
algorytm A
algorytm A
jeśli
to miejsce
osiągnięto
faktycznie
to miejsce
osiągnięto
to
tu jest
oczekiwany
wynik
i
tu jest
oczekiwany
wynik
wynik
wynik
Poprawność częściowa
Poprawność całkowita
Mariusz. B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
9
Technologia Informacyjna
Wykład 6
Strona 10 z 15
Poprawność częściowa algorytmu
- zbiór I dopuszczalnych danych wejściowych,
- zależność (relacja) R między danymi ze zbioru I,
a żądanymi wynikami. Relację tę możemy zapisać:
R
Dane I ⎯⎯→ oczekiwanewyniki
np. zbiór danych do algorytmu sortującego:
I = { N , L : N ∈ N , L − Nieposortowana lista slów}
Relacja R stwierdza natomiast, że poszukiwanym wynikiem ma być lista L’ złożona z tychże N
słów wziętych z listy L i ułożonych w rosnącym porządku leksykograficznym.
Mariusz. B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
10
Technologia Informacyjna
Wykład 6
Strona 11 z 15
Poprawność częściowa algorytmu
Definicja
Algorytm A jest częściowo poprawny względem
zbioru dopuszczalnych danych wejściowych I oraz
relacji R określającej związek między tymi danymi,
a pożądanymi wynikami, gdy dla dowolnego zestawu danych X ze zbioru I, zachodzi taka sytuacja, że:
jeżeli algorytm A uruchomiony dla zestawu danych X zatrzyma się, to relacja R między tym zestawem danych X, a otrzymanym zestawem wyników jest spełniona.
Mariusz. B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
11
Technologia Informacyjna
Wykład 6
Strona 12 z 15
Własność zatrzymywania się algorytmu
Definicja
Mówimy, że algorytm A zatrzymuje się dla zbioru I, jeśli zatrzymuje się on po uruchomieniu dla
każdego zestawu danych z tego zbioru.
Mariusz. B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
12
Technologia Informacyjna
Wykład 6
Strona 13 z 15
Poprawność całkowita algorytmu
Definicja
Jeżeli dany algorytm A zatrzymuje się dla zbioru I, czyli zatrzymuje się dla dowolnego zestawu
danych z tego zbioru, i dodatkowo algorytm A jest
częściowo poprawny, to mówimy o nim, że jest to
algorytm całkowicie poprawny.
Mariusz. B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
13
Technologia Informacyjna
Wykład 6
Strona 14 z 15
Metoda niezmienników Floyda
1. Wskazujemy w algorytmie punkty kontrolne.
2. Dla każdego z punktów kontrolnych określamy
pożądany przez nas stan algorytmu. Takie nasze
przekonania, co do stanu algorytmu nazywa się
asercjami indukcyjnymi.
3. Przyjmujemy, że asercja początkowa związana
z pierwszym punktem kontrolnym w algorytmie
zawiera warunki nakładane na dopuszczalne
dane wejściowe ze zbioru I.
4. Przyjmujemy, że asercja końcowa związana z
ostatnim punktem kontrolnym w algorytmie
opisuje zależność R wyników w stosunku do
danych.
5. Pokazujemy, że każdorazowo, gdy przechodzimy przez dowolny punkt kontrolny, to związana
z nim asercja jest prawdziwa. Takie asercje nazywa się niezmiennikami.
Mariusz. B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
14
Technologia Informacyjna
Wykład 6
Strona 15 z 15
Metoda niezmienników Floyda
Interpretacja geometryczna
start
dane należą
do zbioru I
asercja
asercja
asercja
asercja
Algorytm
asercja
asercja
stop
wyniki
spełniają
relację R
Dokonywane w algorytmie adnotacje o niezmiennikach.
Mariusz. B. Bogacki
Zakład Inżynierii Procesowej
Politechnika Poznańska
15