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

Teeme ise arvutimänge

  • Esileht
  • I RAAMAT
  • II RAAMAT
  • III RAAMAT
  • IV RAAMAT
  • V RAAMAT
  • VI RAAMAT

Tsükkel

Topelt tsükkel

Kordame kõigepealt veelkord üle, mis asi oli tsükli keha või if-lause keha ehk käskude plokk. Heaks näiteks on järgnev joonis, kus on mitmed plokid üksteise sees.

Täpselt sama moodi nagu on üleval näites tsükli sisse pandud teisi if-konstruktsioonide osi võib ühe tsükli sisse panna ka teisi tsükleid. Miks see hea peaks olema? Toon sulle ühe näite sissejuhatuseks ja siis proovime leida analoogiaid mängude maailmast.

Tsüklite õppimisel tõin sulle korrutustabeli tegemise näite.

See koodijupp kirjutas välja aga vaid seitsmega korrutised ja sedagi kuni 5-ni. Mis korrutustabel see selline on? Korrutustabelis on ju toodud arvu korrutised palju rohkemate arvudega?

Asja parandamiseks tulebki võtta kasutusele teine tsükkel esimese tsükli ümber. Teine tsükkel hakkab ühte ja seda sama korrutiste seerjat välja kirjutama, kuid iga kord uue arvuga.

Proovime! Ava oma Idle tekstiredaktor ja kirjuta, mõtle kaasa ning pane käima:

Kuidas topelttsükkel töötab?

  • Kõigepealt läheb käima välimine tsükkel, mille esimene väärtus on 2.
  • Selle ühe väärtusega (2) täidetakse kogu ülejäänud tsükli sisu ehk sisemine tsükkel + tühi rida.
  • Enne tühja reani ei jõuta, kui ka sisemine tsükkel on kõik oma tiirud ära teinud. Sisemine tsükkel teeb 10 tiiru (NB! range(1-11) teeb 10 tiiru!). Igal tiirul kirjutab ta välja ühe korrutustabeli rea kahega korrutamiseks. tegur = 2 ja i saab igal sisemise tsükli tiirul järjest väärtused 1-st 10-ni.
  • Kui sisemine tsükkel on lõpetanud, jõuab järg kätte tühja print() käsuni - lisatakse tabelite vahele 1 tühi rida.
  • Kuna välimine for-tsükkel ei ole kõiki oma väärtuseid range() listist läbi käinud, siis minnakse nüüd uuele (järgmisele) välimise tsükli tiirule, kus muutuja tegur saab uue väärtuse 3, tegur=3.
  • Nüüd korratakse uuesti sisemist tsüklit, kuid teguri väärtusega 3. Täpselt sama moodi jälle 10 sisemist tiiru. Kui sisemine tsükkel läbitud, lisatakse uus tühi rida.
  • Viimane väärtus välimises tsüklis on 4. Ka neljaga tehakse läbi samad protseduurid.
  • Nüüd enam välimises tsüklis elemente ei ole ja programm lõpetab töö.

Näited

Samasuguse ülesehitusega nagu oli korrutustabeli koostamine, võime kinnistavaks näiteks tuua ka tärnide trükkimise:

Kindlasti katseta ülal toodud näidet igat pidi. Vaata mis juhtub kui muuta printide asukohti (nende taandeid) ja proovi leida vastus küsimusele miks. Muuda ka ridade arvu ja tärnide arvu. Uuri, mis siis saab, kui ma teise for ette taanet ei paneks jms.

Milleks on topelttsüklid mängude tegemisel head?

Paljude mängude, eriti nn lauamängudes kasutatake topelttsükleid päris palju. Mõned näited:

  • Lauaplaat - nt malelaud, koosneb regulaarselt üksteise otsa ja kõrvale joonistatud ruutudest. Selliste jooniste tegemisel kirjutatakse vaid üks kord ruudu joonistamise käskude rida ja ülejäänud 64 korda ruudu joonistamist korraldatakse topelttsükliga. Täpselt sama moodi nagu tärnide joonistamiselgi, vaid ühele reale kirjutasime, et trüki tärn, kuid ekraanile tuli tärne ju palju, palju rohkem.
  • Teine valdkond, kus topelttsükleid või isegi mitmekordseid tsükleid kasutatakse, on erinevate juhtumite läbivaatamine ehk kombinatsioonide ja permutatsioonide leidmine. Jällegi võib siinkohal tuua male näite, arvuti vaatab teatud sügavusele käikude võimalikud kombinatsioonid ette ja valib sealt kõige otstarbekama. Kombinatsioonidest ja permutatsioonidest räägime täpsemalt mõnes järgmises peatükis.
  • 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