<< 1.1 Mis on Algoritm? | Sisukord | 1.3 Rekursiivsed probleemid >> |
Tunni läbimisel:
- Oskan ära tunda algoritmiliselt lahedatavat probleemi
- Oskan lihtsat probleemi sammudeks jagada
- Oskan matemaatilist valemit algoritmis kasutada
1.2 Probleemi lahendamine algoritmiga
Me lahendame igapäevaselt erinevaid probleeme, näiteks kuidas jõuda kiiremini kooli, või millised kodutööd peaks kõigepealt ära tegema? Enamasti me ei mõtle, kuidas me neid probleeme lahendame. Keeruliseks muutub olukord siis, kui meil on vaja oma mõttekäik kirja panna, et seda näiteks automatiseerida. Järgneva tunni eesmärgiks on leida lahendused lihtsatele elulistele probleemidele koolis.
Kordamine
Tuleta meelde, mis on algoritmi definitsioon?
Algoritmiliste probleemide ära tundmine
Peale esimest peatükki võis sul tekkida küsimus, et kui algoritme on nii palju, siis milline on üks õige algoritm? Kuigi on olemas väga keerulisi algoritme, siis vahel on lihtsamad algoritmid hoopis paremad, peamine on see, et algoritm täidaks oma ülesannet ja teeks seda õigesti. Proovi leida oma tavalisest koolipäevast üks rutiinne tegevus, mis lahendab mingit probleemi ja mida saaks algoritmiga kirjeldada.
Näidis: söögivahetunni järjekord
- õpilased kogunevad söökla ukse taha;
- õpilased võtavad ritta selliselt, et esimesena kohale jõudnud õpilane on uksele kõige lähemal, järgmine ootab tema selja taga jne;
- kui söökla uksed avatakse, läheb esimene õpilane sisse ning tema selja taga seisnud õpilane saab uueks esimeseks õpilaseks;
- õpilased jätkavad sööklasse sisenemist, kuni viimane õpilane siseneb sööklasse (järjekord on tühi);
- vahepeal lisandunud õpilased lähevad järjekorra lõppu, viimase õpilase selja taha.
Ülesanne 1
Kindlasti on sul vähemalt üks õpetaja, kes paneb veerandi hinde alati kontrolltööde keskmise hinde järgi. Tee tema elu lihsamaks ning kirjuta algoritm, mis saab ette järjendi kontrolltööde hinnetest (täisarvud vahemikus 1-5) ning tagastab veerandi hinde (samuti täisarv vahemikus 1-5). Kui keskmise järgi saadud hinne täpselt ei jagu, ümarda see lähima täisarvuni.
- keskmise arvutamiseks pead kõigepealt leidma hinnete summa ning hinnete arvu;
- keskmise leidmisel pead tegema ujukomaarvulise jagamise. Hoolitse selle eest, et jagatav või jagaja oleks ujukomaarv, Pythonis tuleb arvu ujukomaarvuks muutmiseks kirjutada float(arv)
- arvude ümardamiseks tuleb Pythonis kirjutada round(arv)
Ülesanne 2
Ma usun, et oled enne veerandi viimast kontrolltööd rehkendanud, millise hinde peaksid seal saama. Kirjuta nüüd algoritm, mis teeks seda sinu eest ja leiaks minimaalse hinde, mida sa võid viimases kontrolltöös saada, et veerandi hinne tuleks 5. Algoritm saab ette järjendi veerandi jooksul saadud hinnetest ning tagastab minimaalse hinde, mida sa võid viimases kontrolltöös saada, et keskmise järgi leitud veerandihinne tuleks kokku 5. Kui see pole võimalik, siis tagasta 0.
- seda ülesannet saab lahendada mitut moodi, üheks võimaluseks on proovida järjest viimaseks kontrolltööks panna hindeid ühest kuni viieni ja tagastada esimene arv, mis annab veerandi hindeks viie;
- veidi keerulisem lahendus on tuletada sobiv arv matemaatilise võrrandina, sest enam pole veerandihinne tundmatu, vaid viimane kontrolltöö hinne. Keeruliseks muudab selle lahenduse aga asjaolu, et veerandihinne on ümardatud ning tundmatut ei saa niisama ümardamise alt välja tuua. Ümardamise võib aga sootuks ära jätta, kui mõelda nii, et veerandi hindeks saab viie ainult siis, kui keskmine hinne on suurem või võrdne 4,5st.
Lisaülesanded
Eelnevalt loodud algoritm on küll kasulik, aga töötab ainult väga konkreetses situatsioonis. Täienda seda algoritmi nii, et seda saaks kasutada ka üldisemas olukorras:
- muuda algoritmi selliselt, et see saab sisendiks ka soovitava veerandi hinde. Näiteks kui soovitavaks veerandi hindeks on 4, siis leiab algoritm vähima sobiva hinde, mille sa võid viimases kontrolltöös saada, et kokku tuleks hinne 4;
- lisa algoritmile veel teinegi järjend tunnikontrolli hinnetega, mida arvestatakse keskmise arvutamisel poole väiksema kaaluga;
- mõnel õpetajal on veel teisigi reegleid, mida nad veerandihinde panemisel arvestavad. Lisa oma algoritmi reegel, et kui veerandi jooksul on saadud vähemalt üks hinne kaks, või väiksem, siis üle kolme selle veerandi hindeks ei saa.
Järgmises peatükis vaatleme probleeme, mis ei leia küll nii otsest kasutust, kuid on vajalikud keerukamate ülesannete lahendamiseks!
<< 1.1 Mis on Algoritm? | Sisukord | 1.3 Rekursiivsed probleemid >> |