Algoritmų testavimas
Parengė ITMM Artūras Šakalys
Įrašykite teisingą atsakymą.
Nelengva įsitikinti, ar parašytas algoritmas teisingas, t.y. ar jis daro tai, kas buvo
sąlygoje.
Algoritmo teisingumu įsitikinama atlikus jį su tam tikrais
duomenimis.
Tokiu atveju sakoma, kad algoritmas
. Svarbu gerai sudaryti testus, kad jie apimtų kuo
duomenų.
Kurdami bent kiek sudėtingesnį algoritmą, galime lengvai suklysti ir parašyti ne tuos
, kuriuos reikia atlikti.
Dalį klaidų aptinkame
algoritmą kompiuteriu: kai kurias praneša kompiliatorius (jos vadinamos
klaidomis),
pavyzdžiui, kai trūksta kabliataškio, neaprašytas kintamojo vardas, nėra skliausto.
Tačiau būna daug tokių klaidų, kurias galima aptikti tik gerai
į patį algoritmą. Pavyzdžiui, kai pradiniai duomenys gana dideli,
gavus rezultatą - irgi nemažą skaičių, iš pirmo žvilgsnio sunku pasakyti, ar jis
ar ne, - tenka šiek tiek paskaičiuoti.
Ypač lengva suklysti, kai yra ciklų. Todėl labai svarbu išmokti patikrinti algoritmus, rasti ir
klaidas.
Tokiu atveju, kai vartojamas kintamasis, kuris reikšmės neturi, sakoma, kad kintamojo reikšmė
(arba neapibrėžtas kintamasis). Tai viena iš dažniausiai pasitaikančių klaidų.
Kita dažnai pasitaikanti klaida yra niekad
, arba amžinasis, ciklas.
Amžinasis ciklas - dažnai
klaida, ypač sudėtingesniuose cikluose. Todėl užrašius ciklą, būtinai reikia įsitikinti, ar jis nėra amžinasis.
Kad ciklas nebūtų amžinasis, reikia, kad būtų keičiamos bent
kintamojo, įeinančio į ciklo sąlygą, reikšmės.
Nors šį pavyzdį galima išspręsti ir be kompiuterio (patys matome, kokie skaitmenys sudaro skaičių), tačiau algoritme
padaryta klaida būdinga daugeliui sudėtingesnių uždavinių. Be to, šis algoritmas gali būti reikalingas sprendžiant skaitinius
uždavinius, kai skaičių (pradinį duomenį) pateikia ne žmogus, o kompiuteris.
Būna ir kitokių klaidų. Daugelį jų galime rasti patys, tikrindami algoritmą. Tam parenkame paprastesnes
duomenų reikšmes
ir atliekame algoritmo veiksmus taip, kaip juos atliktų kompiuteris. Popieriaus lape surašome programoje vartojamus kintamųjų vardus ir jų pradines reikšmes.
Kintamajam priskyrę naują
, ankstesniąją užbraukiame, ir jos vietoje rašome naują. Jeigu taip apskaičiuoti rezultatai
su tais, kurie turėtų būti
pagal uždavinio sąlygą, darome išvadą, kad algoritme yra klaida.
Tikrinimui parinktos pradinės kintamųjų reikšmės vadinamos
duomenimis. Jie turi būti tinkami, būdingi tam algoritmui.
Pavyzdžiui, kai algoritme yra sąlyginių sakinių, reikia parinkti tokius kontrolinius duomenis, kad bent po kartą tektų atlikti kiekvieną
sakinio šaką.
Tikrinant algoritmus, kuriuose yra ciklų, kontrolinius duomenis pravartu pasirinkti tokius, kad būtų galima ciklo
nė karto, atlikti jį vieną kartą, atlikti keletą kartų.
Paspausk
Gerai