Algoritmavimo uždavinių sprendimo etapai

 

Algoritmavimo uždaviniai labai skirtingi. Kiekvienam konkrečiam uždaviniui pasirenkamas kitoks sprendimo kelias. Tačiau esama ir bendrumų.
Programuoti lengviau, jei laikomasi tam tikrų taisyklių – programavimo metodikos.
Uždavinio programavimą galima suskirstyti į dalis:
1. Uždavinio formulavimas.
2. Sprendimo algoritmo parinkimas ar sudarymas.
3. Programos rašymas.
4. Programos tikrinimas.
5. Programos tobulinimas.
6. Programos derinimas.
1) Uždavinio formulavimas
Formuluojant uždavinį, reikia aiškiai nurodyti, ką turi atlikti programa, kokie turi būti pradiniai duomenys ir rezultatai. Svarbu išsiaiškinti kaip reikės pateikti rezultatus – išdėstyti stulpeliais, pavaizduoti grafiškai, išspausdinti antraštėmis ir t.t., kaip gauti rezultatus t.y. kokius veiksmus reikia atlikti, nustatoma sudarant programą.
2) Sprendimo algoritmo parinkimas ar sudarymas.
Kadangi programa yra tik tikslus uždavinio sprendimo aprašymas, kurį žmogus ir kompiuteris turi suprasti vienodai, tai uždavinio sprendimo algoritmą turi sugalvoti programuotojas. Neretai programuotojas gali pritaikyti jau žinomus metodus, pavyzdžiai lygčių sistemą spręsti sudėties būdu, pirminių skaičių ieškoti, Eratosteno rėčio metodu ir panašiai. Tačiau kartais programuotojui tenka pačiam sukurti uždavinio sprendimo metodą. Programos sudaromos įvairioms žmogaus veiklos sritims. Uždavinių sprendimo metodus nagrinėja, matematika, fizika, informatika, ir kt. Todėl įvairūs realaus gyvenimo uždaviniai keičiami jiems ekvivalenčiais matematiniais, fizikiniais, informaciniais modeliais.
Algoritmas programa – tai uždavinio sprendimo modelio aprašymo būdas.

3) Programos rašymas
Tam pačiam uždaviniui spręsti galima sudaryti keletą skirtingų programų. Iškarto sudaryti sudėtingo uždavinio programą sunku arba net neįmanoma. Tada uždavinys skaidomas į keletą smulkesnių dalių, kurių kiekviena sprendžiama (programuojama) atskirai. Jei toji dalis sudėtinga galima skirstyti dar.
4) Programos tikrinimas
Tikrinant programą reikėtų įsitikinti, ar: a) nėra sintaksės klaidų (netaisyklingai užrašytas sakinys, praleistas skyrybos ženklas ir panašiai); b) aprašyti visų kintamųjų vardai; c) apibrėžtos visų kintamųjų reikšmės; d) programos veiksmai baigtiniai; e) programa duos teisingus rezultatus.
Dalį šių klaidų padeda aptikti kompiuteris. Tačiau tik patys galime nustatyti, ar programa neklaidinga. Paprastai ji tikrinama įvairiais testais, lyginant žinomus rezultatus su gautais kompiuteriu.
5) Programos tobulinimas
Neiškarto pavyksta sudaryti gerą ir ekonomišką programą. Dažnai gimsta naujų idėjų programai patobulinti – padaryti ją trumpesnę, glaustesnę, aiškesnę ar ekonomiškesnę.
Pvz.: Parašykite programą visiems natūraliojo skaičiaus n dalikliams rasti. Pavyzdžiui kai n=30 turime gauti daliklius 1, 2, 3, 5, 6, 10, 15, 30
Paprasčiausias būdas yra tikrinti, ar skaičius n dalijasi paeiliui iš visų skaičių 1, 2, 3, 4, …, n-1, n.
Sudarome programą:
Program dalikliai;
var n, d: integer;
begin
read (n);
for i:= 1 to n do
if n mod d = 0 then write (d);
writeln (n);
end.
Šioje programoje galime sumažinti veiksmų skaičių. Akivaizdu, kad intervale [n div 2+1; n-1] skaičiaus n daliklių nėra. Todėl nereikia jų ten ieškoti.
Tobulesnis programos variantas:
Program Dalikliai;
var n, d: integer;
Begin
Read (n);
for i:= 1 to n div 2 do
if n mod d = 0 then write (d);
write (n);
end.

6) Programos derinimas
Programuotojas sudaręs programą ir pateikęs ją kompiuteriui, paprastai tikisi teisingų rezultatų. Tačiau net ir gerai patikrintoje programoje pasitaiko klaidų. Kompiuteris spausdina pranešimus apie klaidas. Programuotojas turi išnagrinėti kiekvieną klaida ir ištaisytą programą vėl pateikti kompiuteriui. Šis procesas kartojamas tol, kol programoje nelieka klaidų. Šitaip ištaisomos visos sintaksės klaidos. Prasmines klaidas rasti sunkiau. Jų ieškoma pateikiant kompiuteriui duomenis ir lyginant jo spausdinamus rezultatus su iš anksto žinomais rezultatais. Tinka tie patys kontroliniai duomenys, kurie buvo vartojami tikrinant programą be kompiuterio. Tiktai dabar galime imti ir kitus sudėtingus duomenis, nes skaičiuojame ne mes, o kompiuteris.
Ne visas prasmines klaidas pavyksta greitai ir lengvai surasti. Sudėtingose programose pasitaiko sunkiai aptinkamų klaidų. Kaip jų ieškoti – bendrų nuostatų nėra. Dažnai praverčia įžvalgumas, logika, programavimo įgūdžiai. Kai programos vaizdžiai suprantamai parašytos, jas lengviau skaityti, taip pat ir rasti klaidas. Taigi programos paruošimas yra ilgas ir kruopštus darbas. Tačiau kai programa sudaryta ir suderinta, ją galima atlikti daug kartų, įvedant vis kitus pradinius duomenis. Tokai programa gali ir kiti, ne tik jos autorius.