Sisukord | 1.2 Probleemi lahendamine algoritmiga>> |
Tunni läbimisel:
- Tean, mis on algoritm ja milleks seda kasutatakse
- Tean, mis on algoritmi omadused
- Tean, kuidas saab algoritme kirja panna
- Oskan koostada lihtsamaid plokkskeeme
- Oskan oma loodud plokkskeemidele funktsionaalsust lisada
1.1 Mis on algoritm?
Algoritmi definitsioon: Algoritm on sammsammuline tegevusjuhis, juhend või eeskiri mingi tegevuse sooritamiseks.
Milleks algoritme vaja on? Nagu näha on algoritmi definitsioon üsna lai ning selle põhjal on algoritmiks ka näiteks retsept kokaraamatus. Algoritmi, mis on aga programmikoodina kirja pandud, nimetatakse arvutiprogrammiks. Seega võib algoritm olla täitmiseks nii inimestele kui ka arvutile.
Algoritmi omadused
- Algoritmi iga samm peab olema täpne, st olema ühetähenduslik.
- Algoritm peab olema lõplik. Kui algoritm jääks lõpmatult tööle, siis ei saa me probleemile lahendust.
- Algoritm peab olema efektiivne, st ta peab andma probleemile korrektse vastuse.
- Algoritm peab olema üldine, st ta peab lahendama ülesande iga sisendi korral. Näiteks ringi pindala leidmise algoritm peab töötama kõigi võimalike algandmetega.
Kas informaatika õppekava vastuvõtutingimused vastavad kõigile algoritmi omadustele? https://www.ut.ee/et/sisseastumine/bakalaureus/oppekavad/informaatika
Algoritmide esitamine
Algoritmide esitamiseks on mitmeid võimalusi, näiteks:
- nummerdatud loeteluna,
- programmi koodina,
- joonisena või
- plokkskeemina.
Üheks levinud graafiline algoritmide kujutamise viis on plokkskeem, milles kasutatakse järgmiseid elemente:
Plokkskeem on hea viis kujutada algoritme ka arvutivälistes valdkondades. Näiteks kasutatakse neid sageli toetuste määramise protsessi kirjeldamiseks, et kõigil oleksid võrdsed võimalused toetuse saamiseks. Järgnevalt on toodud lihtne näide kuidas kirjeldada kartulisalati valmistamist plokkskeemina.
Kui tahame seda protsessi täpsemalt kirjeldada, võime lisada kartuleid ühekaupa ja hapukoort lusikatäie kaupa, samal ajal kontrollides, kas on juba vajalik kogus lisatud:
Ülesanne 1
Koosta plokkskeem algoritmile, mis kirjeldab hoiupõrsas oleva raha loendamist. Ülesande lahendamiseks on sul kasutada järgmised plokid:
Et loendada erineva väärtusega münte, võid neid plokke mitu korda kasutada ning muuta nende sisu.
- Kõige olulisem osa raha loendamise rutiinis on tsükkel, mis vaatab, kas rahakassas on veel münte ja kui on, siis võtab sealt ühe mündi, kui pole, siis lõpetab loendamise. Kui sa ei tea kust alustada, siis alusta selle tsükli kirja panemisest, ilma müntide vaatamata ning lisa müntide väärtustega arvestamine hiljem juurde.
Ülesanne 2
Täienda eelmises ülesandese loodud plokkskeemi selliselt, et lisaks rahasumma loendamisele ütleks see lõpuks ka seda, kui palju erinevat liiki münte kokku oli. Näiteks 5 sendised oli 6 tükki, 10 sendiseid 8 jne.
- Lisaks lõppsumma meeles hoidmisele tuleb nüüd meeles hoida ka müntide arvu igas kategoorias eraldi. Ülesande lahendamist võibki alustada nende lisamuutujate defineerimisest.
- Igakord, kui suurendad lõppsummat, suurenda ka vastavas mündikategoorias olevate müntide arvu.
- Tegelikult võib lõppsumma meeles hoidmise nüüd üldse ära jätta, sest teades, kui palju erinevaid münte kassas on, saab seda hiljem valemiga arvutada.
Lisaülesanded
Analoogselt eelnevatele ülesannetele töötavad ka rahaloendusmasinad. Füüsilistel masinatel on aga mitmeid lisatingimusi, millega tuleb arvestada:
- lisa algoritmile funktsionaalsus valeraha tuvastamiseks. Kui masina funkstioon "kasMüntOnVõltsing()" annab tõese väärtuse, tuleb see kõrvale panna ning valeraha arv ja summa hiljem kasutajale väljastada.
- lisa algoritmile funktsionaalsus masina tühjendamiseks, juhuks kui mõni mündimahuti saab vahepeal täis, selle kontrollimiseks kasuta funktsiooni "kasKassaOnTäis()?". Kui kassa on täis saanud, kutsu välja funktsiooni "tühjendaKassa()". Peale kassa tühjendamist jätka müntide lugemist.
- Lisasa algoritmile funktsionaalus, mis annab peale müntide loendamist kasutajale teada, millised mündid kõige rohkem väärt olid. Olid nendeks siis 5 sendised, 10 sendised või midagi muud.
Järgmises peatükis vaatleme juba keerulisemat probleemi ning lahendame seda Pythonis.
Mõisted:
- algoritm - Algoritm on sammsammuline tegevusjuhis, juhend või eeskiri mingi tegevuse sooritamiseks.
- arvutiprogramm - Programmikoodina kirja pandud algoritm.
- plokkskeem - Levinud graafiline notatsioon algoritmide esitlemiseks, mis koosneb kindlatest elementidest.
Viited:
Sisukord | 1.2 Probleemi lahendamine algoritmiga> |