Algoritem



Kaj se bomo v tem poglavju naučili?
Naučili se bomo, katere so osnovne zahteve algoritma, kaj algoritem predstavlja in kateri so osnovni gradniki algoritma.

Kaj je algoritem?

Algoritem je seznam pravil, ki jih je treba upoštevati pri reševanju problema.

Algoritem je podrobna vrsta navodil za izvajanje nekega dela ali reševanje problema. Netehnično gledano uporabljamo algoritme v vsakodnevnih nalogah, kot je recept za peko kolačkov ali priročnik v smislu "naredi sam".


ocvrtoJajce

Primer problema: Želiš ocvreti jajce

Postopek (algoritem):

 
1. Vzemi ponev ponev.
2. Priskrbi si olje.
a. Imaš olje?
    1) Če je odgovor pritrdilen, ga daj v  ponev.
    2) Če ne, ali ga želiš kupiti?
        a) Če je odgovor da, potem pojdi in ga kupi.
        b) Če ne, lahko postopek prekineš (in ostani lačen).
3. Vklopi kuhalnik.
4. itd...

Ali si pri postopku cvrtja jajca pozabil, da moraš ponev segreti? Ali najprej vanjo dati malo olja? Ali moraš olje dodati, preden segrevaš ponev, ali pa najprej segreješ ponev in šele nato dodaš olje? Na taka vprašanja naletiš pri pripravi postopka (algoritma) za to nalogo.

Ko se navadimo pisanja preprostih algoritmov, jih lahko poskusimo zapisati s psevdokodo. Psevdokoda je zapis algoritma na način, ki spominja na računalniško kodo. To ni nek poseben programski jezik. Algoritme zapišemo tako, ker bolje vidimo, kako bo na koncu izgledal računalniški program, pa tudi zato, ker lahko tako lažje opazimo kakšne logične probleme v algoritmu.

Za primer našega algoritma za cvretje jajca bi taka psevdokoda lahko izgledala tako:

Pridobi (ponev)
    če imaš (olje)
        Vzemi (olje)
    sicer
        Če želiš(olje)
            Potem kupi (olje)
    sicer
         končaj   //in ostani lačen
Vklopi (kuhalnik)
 .......


Diagram poteka


Algoritem pa lahko predstavimo tudi v grafični obliki s takoimenovanim diagramom poteka. Pri tem si pomagamo s simboli, kot jih prikazuje leva slika.


Diagram poteka postopka za cvrtje jajca:


Tako bi izgledal diagram poteka, ki ponazoruje algoritem za cvretje jajca.

Vidimo še, kako lahko v tak diagram dodajamo komentarje.

In opazimo, da postane  tak grafični način za bolj kompleksne postopke kar nepregleden.


Psevdokoda je bolj kompaktna in zato tudi bolj pregledna.


Algoritmi morajo imeti svoje korake v pravem zaporedju. Pomisli na algoritem za jutranje oblačenje. Kaj, če si oblekel plašč pred svojim puloverjem? Tvoj plašč bi bil pod puloverjem in to bi bilo neumno! Ko pišemo algoritem, je vrstni red navodil zelo pomemben.

Računalniki uporabljajo algoritme za seznam podrobnih navodil za izvedbo operacije. Če na primer računamo  plačo delavca, računalnik uporablja algoritem. Za izpolnitev te naloge je treba v sistem vnesti ustrezne podatke. Z vidika učinkovitosti lahko različni algoritmi enostavno in hitro izvedejo operacije ali rešijo probleme.


S pomočjo računalnika lahko hitro in enostavno rešujemo raznotere probleme. Pri tem pa se moramo zavedati, da računalnik sam po sebi ne zna narediti ničesar. Vedno naredi samo in natančno to, kar mu ukažemo. Skupek navodil oz. zaporedje nalog, ki jih mora računalnik izvesti, da rešimo nek problem, je algoritem.

Za uspešno rešitev problema pa moramo problem najprej dobro poznati. Ko se seznanimo s problemom, ga moramo "razstaviti" na več manjših problemov in le-te na še manjše probleme. Tako daleč, da imamo na koncu skupek majhnih problemov, od katerih vsakega lahko rešimo z enostavno operacijo. Vsakemu od teh delčkov nato določimo aktivnost za rešitev in jo povežemo v algoritem.

Algoritem predstavlja torej množico ukazov, ki so drug za drugim izvajajo in privedejo do končne rešitve problema. Skupin različnih  ukazov niti ni hudo dosti. Pomembno je, da se vsak algoritem začne in konča.

Naslednji primer: Problem iskanja prostega parkirnega mesta na parkirišču (včasih za voznika kar nerešljiv problem )

parkirisce.png

Poiskati moram prosto parkirno mesto!

In to čimprej. Preden me ne prehiti kdo drug.

Če ga bom sploh našel.

Parkirati moram tako, da me ne bodo zaparkirali!

Kakšno strategijo iskanja naj uberem?


Parkirno mesto lahko iščemo na različne načine. Tako imamo lahko različne algoritme. Razmišljati moram algoritmično.

 

Algoritem je navodilo, s katerim rešujemo določen problem.


Običajno je zapisan kot seznam korakov, ki nas pripeljejo do rešitve problema. Kako podrobno razdelamo korake, je odvisno od tega, kdo izvaja algoritem (človek, računalnik). Če algoritem izvaja računalnik, potem govorimo o računalniškem programu. Primer algoritma iz vsakdanjega življenja je tudi kuharski recept.


Kaj je algoritmično razmišljanje?


Algoritmično razmišljanje, posebej z uporabo konstrukta if-then (če, tedaj..), lahko pomaga rezumeti problem in poiskati čim boljšo rešitev. Šele, ko se poglobimo v koncept, razumemo njegov pomen. Algoritem je preprosto niz pravil, ki jih je treba upoštevati.

Osnovna struktura izvedbenih namer je naslednja:

IF = stanje
THEN = vedenje
IF-THEN razmišljanje


Koristi algoritmičnega razmišljanja

Algoritmično razmišljanje ali sposobnost definiranja jasnih korakov pri reševanju problema je ključnega pomena pri predmetih, kot so matematika in znanost. Algoritme pogosto uporabljamo, ne da bi se tega zavedali, zlasti v matematiki. Pri deljenju z večmestnimi števili uporabljamo algoritem, pri katerem iteriramo skozi številke deljenega števila. Za vsako številko deljenega števila moramo deliti, množiti in odštevati. Algoritmično razmišljanje omogoča da razčlenimo probleme in konceptualiziramo rešitve v smislu diskretnih korakov v postopku.

Otroci lahko okrepijo svoje sposobnosti algoritmičnega razmišljanja tako, da planirane dejavnosti (korake) zapišejo (zakodirajo). Za dokončanje ugank otroci oblikujejo preproste algoritme, ki temeljijo na zaporedju, ponavljanju in pogojni logiki za reševanje zabavnih problemov. Kot pri vseh spretnostih lahko otroci izboljšajo svoje algoritmično razmišljanje z vsakodnevno prakso in z dokončanjem kreativnih projektov za uporabo svojih veščin.