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