JOENSUUN YLIOPISTO
Tietojenkäsittelytieteen laitos

Ohjelmointia opettajille

Harjoitus 4
Syksy 1999

  1. Muuta alla oleva mysteeri-käskyn määrittely selkeämmäksi. Mihin KAREL joutuu, kun

    a) lähtöpiste on (5,5) itä (kenttä h4t1a.kar) ?

    b) lähtöpiste on (5,5) länsi (kenttä h4t1b.kar) ?

    (käsky turnaround kääntää KARELia 180 astetta)

    DEFINE-NEW-INSTRUCTION mysteeri AS
    BEGIN
    	IF facing-west THEN
    	BEGIN
    		move;
    		turnright;
    		IF facing-north THEN
    			move;
    		turnaround
    	END
    	ELSE
    	BEGIN
    		move;
    		turnleft;
    		move;
    		turnaround
    	END
    END;
    

    Ratkaisu


  2. Tutki seuraavia ohjelmanpätkiä

    a)

    WHILE not-next-to-a-beeper DO
    	move;
    IF next-to-a-beeper THEN
    	pickbeeper
    ELSE
    	move;
    

    b)

    WHILE not-next-to-a-beeper DO
    	IF next-to-a-beeper THEN
    		pickbeeper
    	ELSE
    		move;
    

    Mitä nämä käskyt tekevät ? Voitko kirjoittaa ne toisin ? Jos voit, niin miten ?

    Ratkaisu

  3. Kirjoita uusi käsky mene-origoon, joka siirtää KARELin mistä tahansa pisteestä KAREL-maailmassa pisteeseen (1,1) ja jättää suunnaksi idän. Oletetaan KAREL-maailma tällä kertaa esteettömäksi. Kokeile ohjelmaasi kentällä h4t3.kar.

    Ratkaisu

  4. Kirjoita ohjelma, joka kuljettaa KARELia suljetun huoneen sisällä seinän viertä pitkin. Umpikujan varalta kirjoita ohjelmaan uusi käsky umpikujassa, joka kääntää KARELin ensimmäiseen vapaaseen suuntaan, johon kulkua voi jatkaa. Jos ainoa vapaa suunta on se, mistä KAREL on tullut, päätetään toiminta turnoff-käskyllä. Kokeile ohjelmaa ensin kentällä h4t4a.kar ja sitten kentällä h4t4b.kar.

    Ratkaisu