Arvutiteaduse instituut
  1. Esileht
  2. Teeme ise arvutimänge
EN
Logi sisse

Teeme ise arvutimänge

  • Esileht
  • I RAAMAT
  • II RAAMAT
    • Otsustamine
    • Tõeväärtused
    • Tingimuse kontroll
      • Mitme tingimuse kontroll 1
      • Mitme tingimuse kontroll 2
    • Tsükkel
      • FOR tsükkel
      • RANGE()
      • Tsüklimuutujad
      • Tsükkel sõnedega
      • AJAMÕÕTJA!
      • WHILE tsükkel
      • Lõpmatu tsükkel
      • Jäta tsükkel pooleli
    • Kommentaarid
    • Kuidas kavandada mängu?
    • Mida õppisid?
  • III RAAMAT
  • IV RAAMAT
  • V RAAMAT
  • VI RAAMAT

Otsustamine

Praeguseks oleme selgeks saanud elementaarmõisted, oskame arvutit sundida väljastama sõnumeid ja oskame teha nii, et arvuti küsiks ise kasutajalt, failist või lausa veebist andmeid. Oskame panna arvutit arvutama meie eest ja oskame salvestada info arvutimällu.

Ükski tänapäeva programm ilma otsustusvõimeta ei kvalifitseeru programmiks. See on üks olulisemaid tingimusi programmide juures üldse - ta peab olema nö "mõtlemisvõimeline", olema suuteline tegema otsuseid ja vastavalt otsustele ka tegutsema. Eelmise nädala teemad on kõik väga vajalikud teadmised, mida on tarvis programmi kirjutamiseks ja eriti mängu kirjutamiseks. Kuid sellisel sisend-väljund-muutuja tasemel programmi või mängu võib võrrelda pigem kivikirvega kui näiteks AngryBirds'ga. Seega, et jõuda selliste teadmisteni, et teha Angry Birdsi-taoline mäng, peame veel palju teooriat KOOS praktikaga omandama. See, kui hästi mõni mäng töötab, oleneb sellest, kui hea on olnud selle mängu programmeerija. Hea programmeerija aga kujuneb AINULT läbi tohutul hulgal programmeerimise, ükskõik kui väikesed või suured need programmid ka alguses ei oleks. Selle nädala kaks suurt põhiteemat ilma milleta ei valmi ükski normaalne programm ega sirgu ükski programmeerija, on tingimuslause ja tsükkel.

Aeg panna oma programmid tegema otsuseid.

Programm peab oskama vastavalt sisendile käituda erinevalt. Näiteks:

  • Kui Juku valis ekraanilt õige aarde, siis tuleb tema skoorile üks pall juurde lisada.
  • Kui Kati saab vigastada, tuleb tal üks elu maha võtta.
  • Kui Jack sai vastasele pihta, tuleb teha plahvatuse häält.
  • Kui otsitavat faili ei leita, siis tuleb anda veateade.
  • Kui Mikk jookseb vastu kasti, siis kast haihtub vms.

Otsuste tegemiseks on eelnevalt vaja kontrollida tingimust. Ehk kõigepealt kontrollime, kas Jack sai vaenlasele pihta ja alles siis paneme vastava wav-faili mängima :)

Oluline on aru saada, et tingimuse kontrolli tulemus saab olla AINULT õige või vale (i.k true or false). Kas mingi asi on toimunud või ei ole toimunud?

Arvutile aga ei saa lihtsalt öelda, et hei, Jack sai vaenlasele pihta, tee plahvatuse häält! Arvuti on rauast ja oskab aru saada vaid kahendkoodist ehk siis ainult arvudest :(

Toon sulle mõned näited, millistele küsimustele saab arvuti vastata:

  • Kas kaks muutujat on võrdsed?
  • Kas üks muutuja on teisest suurem?
  • Kas üks muutuja on teisest väiksem?
Lisaks, ei ole kahe muutuja omavaheline võrdlemine kah nii sama. Muutujad, mida omavahel võrreldakse, peavad olema ühte tüüpi.

Seega, peab programmeerija kõik vaimustavad vaenlased ja supersõdalaste kõik liigutused ümber kodeerima arvudeks, mida saab omavahel võrrelda ja alles seejärel saab teha otsuseid. Seega võiksime Jacki loo ümber tõlkida umbes nii:

Kui Jack tabas vibunoolega vaenlast, siis muutuja vaenlane väärtus muudetakse nulliks ning tingimuse kontrollija kontrollib samal ajal, et kui vaenlane=0, siis pannakse mängima plahvatuse heli. Kui mitte, siis mingit plahvatust ei tule.

Sellist ühes või teises suunas otsuste tegemist ja liikumist vastavalt tingimuse kontrollile nimetatakse programmeerimises ka hargnemiseks. Programm otsustab, millist haru pidi edasi minnakse, kui tingimus on üks, keerab näiteks vasakule, kui mitte, keerab paremale.

  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Courses’i keskkonna kasutustingimused