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ų.