Arvutiteaduse instituut
  1. Kursused
  2. 2022/23 kevad
  3. Programmeerimise alused (MTAT.03.236)
EN
Logi sisse

Programmeerimise alused 2022/23 kevad

  • Pealeht
  • 1. Sissejuhatus
  • 2. Tingimuslause
  • 3. Tsükkel
  • 4. Järjend
  • 5. Funktsioon
  • 6. Andmevahetus. Lihtne kasutajaliides
  • Loengud
  • Moodle
  • Lahendus
  • Thonny paigaldamine
  • Thonny logide esitamine
  • Silumine
  • Kiireksamist
  • Viited

Lisamaterjal. Pykkar

Silmaringi materjalis “Labürint?” tutvustati erinevaid labürindi lahendamise algoritme ja labürinte. Selles lisamaterjalis õpitakse looma keerdkäigustikku, millesse on eksinud tegelane nimega Pykkar. Pykkar on virtuaalne robot, kes tegutseb virtuaalses maailmas. Robot suudab liikuda otse, pöörata paremale, värvida põrandat, asju kanda ja tal on sensorid, mis suudavad ümbrust tajuda. Näiteks oskab ta öelda, kas tema ees on kast või mitte. Selleks, et Pykkarit kasutada ja talle maailm luua, tuleb esmalt laadida arvutisse moodul nimega pykkar.

Õpetus, kuidas Pykkar arvutisse saada:

  • Tee paremklikk pykkar.py failil ning salvestada fail kausta, kuhu hakatakse looma pykkari faile. Jälgi, et failisalvestustüüp oleks Kõik failid või Python File ning faililaiendiks märkida .py.

PYKKARILE MAAILMA LOOMINE

Maailma saab luua Pykkarile käsuga create_world, mille argumendiks on mitmerealine sõne, kus iga sümbol tähistab ühte ruutu kaardil. Mitmerealise sõne kirjutamiseks kasutatakse kolmekordseid jutumärke nii sõne alguses kui ka lõpus. Järgnevalt toome ühe Pykkari maailma näide.

Näiteprogramm 1

from pykkar import * # imporditakse moodul pykkar

# create_world võtab argumendiks mitmerealise sõne, mis esitab roboti maailma.
# Trellid tähistavad seinu, nooleke tähistab robotit, tühik tähistab heledat põrandat.
# Noole suund (>, <, v või ^) tähistab roboti suunda.

create_world("""
########
#  >   #
#      #
#      #
#      #
#      #
########
""")

Maailm näeb välja selline. Attach:pykkar1.png Δ

Järgnevas tabelis on Pykkari maailma ruudud, mida on võimalik kasutada.

Attach:pykkarmaailm.png Δ

Allikas: https://programmeerimine.cs.ut.ee/03_liitlaused.html#pykkar

NB! Maailmas saab olla vaid üks Pykkar.

PYKKARI LIIGUTAMINE

Robotit saab tema maailmas otse liikuma panna, pöörata paremale, lükata torbikut või kasti jpm. Siin on näide, kuidas liigutada robotit näiteprogrammis loodud maailmas.

from pykkar import *
create_world("""
########
#  >   #
#      #
#      #
#      #
#      #
########
""")

step()
step()
step()
right()

Võrreldes kaardiga, kus Pykkarit veel ei pandud liikuma, on robot astunud kolm sammu edasi ning seejärel pööranud paremale.

Attach:pykkar1.png ΔAttach:pykkar2.png Δ

Järgmisena toome käsud, mida Pykkar mõistab.

Attach:pykkarkasud.png Δ

Allikas: https://programmeerimine.cs.ut.ee/03_liitlaused.html#pykkar

NB! Pykkar ei saa vasakule keerata, kuidas seda lahendada?

Vastus: 3x right() või kasutada ise muudetud pykkar.py faili, kus on defineeritud ka vasakule pööramine.

Proovime teha programmi, mis liigutaks Pykkarit nii kaua otse kuni tuleb vastu sein ning seejärel pöörab paremale. Kuidas seda teha? Varasemalt olete õppinud kasutama while-tsüklit. Siingi saab selle abil Pykkari liikuma panna.

from pykkar import *
create_world("""
########
#  >   #
#      #
#      #
#      #
#      #
########
""")

while not is_wall():        # is_wall() annab True, kui Pykkar on ninaga vastu seina
    step()
right()

Allikas: https://programmeerimine.cs.ut.ee/03_liitlaused.html#pykkar

Ülesanne

Proovi luua järgmine labürint (näiteprogramm 2) Pykkarile ning aita robot õnnelikult labürindist välja. Selleks kasuta käske step(), right() ja teisi vajalikke meetodeid. Vihje, kuidas väljapääseda, on programmi koodis.

Näiteprogramm 2

from pykkar import *

create_world("""
###############################
#>              #             #
############# ###  ###  ### ###
#       #          # #  ##  ###
#       # ########## #  #   ###
#       ###          #  #  B###
#                       #######
## #####################     ##
## #               #       ####
## ###########  #  ##    ###  #
##              #             .
###############################
""")

step()
step()
step()
step()
step()
step()
step()
step()
step()
step()
step()
step()
right()
...
  • 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