Jeśli uważasz, że jakiś program komputerowy jest
bezbłędny, to się mylisz
- po prostu nie zauważyłeś
jeszcze skutków błędu, który jest w nim zawarty.
M.Rawski
Wstęp do Informatyki
Jakie błędy można popełnić?
Błędy językowe
np.
zamiast
for
i
:
= 1
to
N
do
X[i]
:
= i ;
napisano
for
i
:
= 1
do
N
do
X[i]
:
= i ;
Powstają w wyniku naruszenia składni
języka (programowania),
którego używamy do zapisania algorytmu.
Możliwe skutki i znaczenie:
zatrzymanie kompilacji lub interpretacji z komunikatem lub bez,
przerwanie realizacji programu nawet jeśli kompilator błędu nie
wykrył,
błędy nieprzyjemne, ale zwykle niezbyt poważne - są względnie
łatwe do poprawienia.
M.Rawski
Wstęp do Informatyki
Jakie błędy można popełnić?
Błędy semantyczne
np. sądziliśmy, że po zakończeniu iteracji
for
i
:
= 1
to
N
do
X[i]
:
= i
zmienna i ma wartość N, a nie N + 1
Wynikają z niezrozumienia semantyki używanego języka
programowania.
Możliwe skutki i znaczenie:
program nie realizuje poprawnie algorytmu,
błędy trudne do przewidzenia i potencjalnie groźne, ale są do
uniknięcia przy większej wiedzy i starannym sprawdzaniu
znaczenia używanych instrukcji.
M.Rawski
Wstęp do Informatyki
Jakie błędy można popełnić?
Błędy logiczne
np. w algorytmie zliczania zdań, w których występuje słowo
“algorytm” nie zauważyliśmy, że sekwencja znaków “. ” może
występować także wewnątrz zdania (“Na rys. 2 pokazano
schemat...”), a używaliśmy jej do wyszukiwania jego końca.
Możliwe skutki i znaczenie:
algorytm przestaje być poprawnym rozwiązaniem zadania
algorytmicznego,
dla pewnych zestawów danych wejściowych algorytm podaje wyniki
niezgodne z oczekiwanymi,
procesor może nie być w stanie wykonać pewnych instrukcji (np. żądamy
dzielenia przez 0),
błędy bardzo groźne - mogą być trudne do znalezienia i pozostawać
długo w ukryciu nawet w trakcie używania programu w postaci kodu.
M.Rawski
Wstęp do Informatyki
Jakie błędy można popełnić?
Błędy algorytmiczne
wynikają z wadliwie skonstruowanych struktur sterujących np.
niewłaściwych zakresów iteracji, niewłaściwych warunków użytych do
zatrzymywania iteracji warunkowych lub przeniesienia sterowania w
niewłaściwe miejsce procesu w wyniku zastosowania wyboru
warunkowego (lub instrukcji skoku).
Możliwe skutki i znaczenie:
algorytm dla pewnych dopuszczalnych danych wejściowych daje
niepoprawny wynik,
wykonanie programu realizującego algorytm jest przerywane w
trybie awaryjnym,
program realizujący algorytm nie kończy w normalnym trybie
swego działania.
M.Rawski
Wstęp do Informatyki