3. nädala YL

Informaatika õppelehekülg

Kontrollülesanne 3.1 – Mantra

Mantra on silp, sõna, lause või heli, mida kasutatakse paljudes idamaistes religioonides mediteerimisel. Mantrat korratakse nii kaua kui vajalikuks peetakse.

Koostada programm, mis

  1. küsib kasutajalt lause, mida ta soovib mantrana kasutada,
  2. küsib kasutajalt, mitu korda ta soovib mantrat korrata,
  3. väljastab sama arv kordi ekraanile kasutaja sisestatud mantra.

NB! Kasutaja käest peab kindlasti küsima kaks korda.

Näited programmi tööst:

Kui olete juba hulk aega proovinud ülesannet iseseisvalt lahendada ja see ikka ei õnnestu, siis võib-olla saate abi murelahendajalt. Püütud on tüüpilisemaid probleemseid kohti selgitada ja anda vihjeid. 

Kontrollülesanne 3.2 – Lillede arv

On traditsioon, et rõõmsatel puhkudel kingitakse paaritu arv lilli. Lillepoel on sünnipäev ja pood otsustas klientidele kinkida lilli nii, et päeva esimene ostja saab ühe lille, teine ei saa ühtegi, kolmas ostja saab kolm lille, neljas ei saa midagi, viies ostja saab viis lille jne.

Koostada programm, mis

  • küsib kasutajalt klientide arvu (mittenegatiivne täisarv);
  • arvutab while-tsükli abil lillede koguarvu, mida pood kingib;
  • väljastab saadud lillede arvu ekraanile.

Vihje: lillede koguarvust võib mõelda kui summast, milles liidetavad on paaritud arvud alates 1 kuni esimese paaritu arvuni, mis pole suurem kui klientide arv. 

Näiteks, kui kasutaja sisestas 7, siis paaritute arvude summa on 16, sest 1 + 3 + 5 + 7 = 16. Kui kasutaja sisestas 8, siis on summaks samuti 16, sest 1 + 3 + 5 + 7 = 16.

Näited programmi tööst:

Kui olete juba hulk aega proovinud ülesannet iseseisvalt lahendada ja see ikka ei õnnestu, siis võib-olla saate abi murelahendajalt. Püütud on tüüpilisemaid probleemseid kohti selgitada ja anda vihjeid. 

Kontrollülesanne 3.3 – Täringumäng

Erinevate täringumängude jaoks on vajalik erinev arv täringuid. Näiteks Yahtzee (Yatzy) jaoks on vaja 5 täringut, Crapsi jaoks aga 2 täringut.

Koostada programm, mis

  • küsib kasutajalt vajalike täringute arvu;
  • viskab vastava arvu täringuid (genereerib vastava arvu suvalisi arve, mis jäävad 1 ja 6 vahele);
  • väljastab iga arvu eraldi reale.

Vihje: kui kasutada tsüklit, mis teeb kasutaja sisestatud arvu samme, siis igal sammul tuleb genereerida üks juhuslik arv ja see väljastada.

Näited programmi tööst:

Kui olete juba hulk aega proovinud ülesannet iseseisvalt lahendada ja see ikka ei õnnestu, siis võib-olla saate abi murelahendajalt. Püütud on tüüpilisemaid probleemseid kohti selgitada ja anda vihjeid. 

Kontrollülesanne 3.4a – Lillede arv v2

Kolmest ülesandest (3.4a, 3.4b, 3.4c) tuleb lahendada vähemalt üks.

On traditsioon, et rõõmsatel puhkudel kingitakse paaritu arv lilli. Üks teine lillepood on otsustanud, et nende sünnipäeval saab iga klient kingituseks lilli nii, et esimene ostja saab ühe lille, teine ostja saab kolm lille, kolmas ostja saab viis lille, neljas ostja seitse lille jne.

Koostada programm, mis

  • küsib kasutajalt klientide arvu (mittenegatiivne täisarv);
  • arvutab while-tsükli abil lillede koguarvu, mida pood klientidele kingib;
  • väljastab kingitavate lillede koguarvu.

Näiteks, kui kasutaja sisestas 4, siis paaritute arvude summa on 16, sest 1 + 3 + 5 + 7 = 16. Kui kasutaja sisestas 7, siis on summaks 49, sest 1 + 3 + 5 + 7 + 9 + 11 + 13 = 49.

Näited programmi tööst:

Kui olete juba hulk aega proovinud ülesannet iseseisvalt lahendada ja see ikka ei õnnestu, siis võib-olla saate abi murelahendajalt. Püütud on tüüpilisemaid probleemseid kohti selgitada ja anda vihjeid. 

Kontrollülesanne 3.4b – Vabavisked

Kolmest ülesandest (3.4a, 3.4b, 3.4c) tuleb lahendada vähemalt üks.

Korvpalluri vabavisete senist visketabavust saab (teatud mööndustega) kasutada tuleviku visete tõenäosusena.

Koostada programm, mis

  • küsib kasutajalt visketabavuse (tabavustõenäosuse) protsentides (täisarv 0 kuni 100);
  • simuleerib while-tsükli abil 1000 viset ja igal viskel (arvestades tõenäosust) väljastab, kas see tabas;
    • iga viske kohta peab väljastama ühe rea ja see rida peab sisaldama sõna tabas või mööda
  • arvutab kokku tabanud visete arvu ja see väljastab selle kõige viimasena.

Näide programmi tööst:

Kui olete juba hulk aega proovinud ülesannet iseseisvalt lahendada ja see ikka ei õnnestu, siis võib-olla saate abi murelahendajalt. Püütud on tüüpilisemaid probleemseid kohti selgitada ja anda vihjeid. 

Kontrollülesanne 3.4c – Male

Kolmest ülesandest (3.4a, 3.4b, 3.4c) tuleb lahendada vähemalt üks.

Legend räägib, et malemängu leiutajale olla tollane valitseja pakkunud tasu. (Sellest legendist räägib ka Tõnu Tõnso paarikümne aasta taguses leheloos.)

Leiutaja oli “tagasihoidlik” ja palus tasuks

  • esimese ruudu eest 1 nisutera,
  • teise ruudu eest 2 korda rohkem ehk 2,
  • kolmanda ruudu eest veel 2 korda rohkem ehk 4,
  • neljanda ruudu eest siis 8,
  • viienda ruudu eest 16 jne

Malelaual on 64 ruutu.

Koostada programm, mis

  • küsib kasutajalt ühe täisarvu;
  • arvutab while-tsükli abil, mitu nisutera sellise järjekorranumbriga ruudu eest leiutaja küsis;
  • tulemus väljastatakse ekraanile pärast tsüklit. 

Näited programmi tööst:

Kui olete juba hulk aega proovinud ülesannet iseseisvalt lahendada ja see ikka ei õnnestu, siis võib-olla saate abi murelahendajalt. Püütud on tüüpilisemaid probleemseid kohti selgitada ja anda vihjeid. 

LISAÜLESANNE

Paberi voltimine (ei ole kohustuslik)

Kui võtta tavaline A4 paber ja hakata seda pooleks voltima, siis iga korraga paberi paksus kahekordistub. Kui võtta väga suur paber ning mõelda, et seda saab igavesti pooleks voltida, siis paberi paksus kasvab väga kiiresti. 

Koostada programm, mis

  • küsib kasutajalt arvu (mittenegatiivne täisarv), mitu korda paberit voltida;
  • arvutab while-tsükli abil paberi paksuse pärast kõiki voltimisi;
  • ümardab vastuse kahe komakohani;
  • väljastab paberi paksuse ekraanile meetrites, kui paber on paksem, kui 100 cm;
  • vastasel juhul väljastab paberi paksuse ekraanile sentimeetrites.

Paber olgu 0,01 cm paks.

Vihje: Soovitud komakohani ümardamiseks saab kasutada funktsiooni round(), öeldes talle ka komakohtade arv. Nt round(3.1415, 2) = 3.14, kus enne koma on number, mida ümardada ja pärast koma number 2, ehk kaks komakohta.

Näiteks, kui kasutaja sisestab 1, siis paberi paksus on 0,02 cm, sest see on juba üks kord pooleks murtud. Kui kasutaja sisestab 2, siis on paberi paksus 0,04 cm, arvu 3 puhul 0,08 cm jne.

Kuigi põhimõtteliselt saab tulemuse arvutada astmefunktsiooni abil, tuleb siin seda siiski while-tsükli abil teha.

Näited programmi tööst: