Spoznali bomo definicijo algoritma. Spoznali bomo, kako lahko algoritem grafično zapišemo. Spoznali bomo tudi prehod od grafičnega zapisa algoritva v zapis programa v ustreznem programskem jeziku (kodiranje programa).
Algoritem je
navodilo, kako rešimo nek določen problem. Običajno je zapisan kot seznam
korakov, ki nas pripeljejo do rešitve problema. V tem pogledu lahko najdemo
analogijo z iskanjem poti iz labirinta (kar je seveda spet problem).
Nekdo, ki se pred takimi problemi prvič znajde, bo imel več težav, kot nekdo z izkušnjami. Zato naj bi veljalo, da se lotimo najprej bolj preprostih problemov (oziroma programov) in se šele kasneje lotimo bolj zamotanih. Kasneje se bomo navadili tudi, da lahko v naše programe vključujemo delčke kode starejših, že uporabljenih programov.
Pomislimo nato, kako bi nalogo razdelili v manjše naloge oziroma faze ali korake. Pomislimo na kuharske recepte, kjer potekajo stvari prav tako korak za korakom.
Poglejmo si (poenostavljen) recept za pripravo potice:
|
|
Očitno moramo prej pripraviti testo, šele nato ga lahko namažemo z nadevom. In potice ne moremo dati peči, dokler nismo pečice ogreli.
Podobno je z numeričnimi problemi. Računanja se ne moremo lootiti, če nismo prej prebrali podatkov. In rezultatov ne moremo izpisati, če prej ni bilo opravljeno računanje.
Zaporedje korakov je torej pomembno.
Algoritem lahko zapišemo na več načinov:
Oglejmo si diagram poteka za prej opisani postopek za pripravo potice:
|
Seveda algoritem ni popoln. Potica bi se nam sežgala, saj nismo predvideli, da jo moramo po 1 uri vzeti ven iz pečice. Namig: dodati bi morali še eno spraševanje, če je ena ura že minila. Poleg tega bi lahko postopek oziroma naš algoritem razdelali še bolj podrobno. In kako moramo algoritem zakomplicirati, če mora naš kuhar speči 10 potic? Namig: Potice bomo morali šteti. Postopek pečenja ponovimo tolikokrat, dokler ne bomo pripravili še desete potice. |
Zapis algoritma v izbranem programskem jeziku je prevzaprav takoimenovano »kodiranje« programa. Seveda moramo primeren programski jezik prej spoznati. Izkušeni programerji pogosto pišejo programe neposredno v danem programskem jeziku brez predhodnega risanja diagrama poteka.
Programska rešitev
Razvoj algoritmov dobi svoj
smisel, če želimo sestaviti pravi računalniški program. Skoraj vsak program in
torej skoraj vsak algoritem potrebuje na začetku neke podatke. Nato mora
računalnik izvesti nalogo (ali zaporedje nalog). Običajno pride na koncu tudi
do prikaza rezultata.
Če pomislimo na naš primer s potico, bi lahko naredili program, ki izračuna,
koliko bo taka potica stala.
Za kaj takega potrebujemo cene in potrebno količino surovin (moke, jajc, mleka,
orehov ipd). Potrebujemo še čas izdelave in ceno kuharjevega dela. Potrebujemo
tudi ceno elektrike in čas uporabe pečice. Poglejmo si ustrezen diagram
poteka, pa tudi program v jeziku Python (seveda bi lahko uporabili tudi kakšen
drug programski jezik:
|
|
Ta diagram poteka in ustrezna koda v programskem jeziku predstavljata že pravi
program. Seveda je algoritem v tem primeru zelo preprost, vendar ga lahko
zakompliciramo. Tako lahko dodamo možnost, da je potica iz različnih sestavin
in je torej njena cena različna. Lahko bi naredili program, kateremu podamo,
koliko potic naredimo v posameznem dnevu tedna in koliko za to zapravimo
povprečno na dan.