JOENSUUN YLIOPISTO
Tietojenkäsittelytieteen laitos

Ohjelmointia opettajille

Harjoitus 3
Syksy 1999

  1. Lataa KAREL-kenttä tao05.kar. Mitkä ehdot ovat tosia, kun:

    a) KAREL on risteyksessä (3,3) ja kulkusuunta on pohjoiseen ?

    b) KAREL on risteyksessä (4,4) ja kulkusuunta on itään ?

    c) KAREL on risteyksessä (5,5) ja kulkusuunta on etelään ?

    Ratkaisu

  2. Kirjoita uusi käsky, jolla KAREL etenee nykyiseen kulkusuuntaansa jättäen kuhunkin risteykseen yhden piipperin niin kauan kuin niitä riittää piipperilaukussa. KAREL pysähtyy siihen risteykseen, johon viimeinen piipperi on jätetty.

    Ratkaisu (testaa esim. tao04.kar-kentällä)

  3. KAREL on pisteessä, jossa on yksi tai kaksi piipperiä. Kirjoita uusi käsky, joka kääntää KARELin pohjoiseen, jos piippereitä on yksi, ja etelään, jos piippereitä on kaksi. Lisäksi robotin on kerättävä kaikki piipperit tästä pisteestä.

    Ratkaisu 1

    Kenttä, jossa Ratkaisua 2 voi testata

    Ratkaisu 2

  4. Muuta harjoituksessa 2 tehtävänä 1 laadittua ohjelmaa, jossa KAREL kiertää laatikon ympäri jättäen piipperin jokaiseen kulmaan, siten, että laatikko voi olla muodoltaan mikä tahansa "X katua kertaa Y bulevardia"-kokoinen laatikko. Ohjelman pitää siis olla yleinen. Testaa ohjelmaa kentällä tao06.kar.

    Ratkaisu

  5. Alkutilanteessa KAREL on pisteessä (5,1) itä, mukanaan 13 piipperiä. Suunnittele ja toteuta ohjelma, jonka suoritettuaan KAREL on sijoittanut piipperit alla olevan spiraalikuvion osoittamalla tavalla. Käytä ohjelmassasi toistorakennetta. Testaa harjoituksissa ohjelmaa kentällä h3t3.kar.

    Ratkaisu