Yliopiston etusivulle Suomeksi
Helsingin yliopisto

Yhteystiedot:

Osoite:
Yleisen kielitieteen laitos
PL 9
Siltavuorenpenger 20A
00014 Helsingin yliopisto

Puhelin: +358 (09) 1911 (vaihde)
Faksi: +358 (09) 191 29307

Harjoitusten deadline on seuraavaa luentokertaa edeltävä keskiyö eli 27.1.2005 klo 00:00. Harjoituksista annetaan palautetta palautusta seuraavassa opintopiiritapaamisessa eli 1.2.2005 klo 12:15–13:45.

  1. Mitä ohjelmointi on? (n. 3–7 sanaa)
  2. Miksi ohjelmointia harjoitellaan? (n. 10–20 sanaa)
  3. Selitä suomeksi, mitä mahtaisi tehdä Python-kielessä komento a = a + 1. (Oletetaan vaikkapa, että a:ssa on ennalta arvo 8.)

Loput harjoitukset ovat toto-kielen harjoituksia. Toto-kieli on yksinkertainen robotinohjauskieli. Tehdäksesi toto-harjoitukset:

  1. ota ssh-yhteys laitoksen koneelle (tai mene laitokselle ja käynnistä komentotulkki).
  2. kirjoita komento cd ~pkalliok/proj/ohjelmointikurssi
  3. tee tehtävä n komennolla ./toto n (jossa n on numero yhdestä kuuteen, esim ./toto 1)

Kuvaus toto-kielestä: samaan tapaan kuin Python-ohjelma koostuu kasasta Python-komentoja, jotka ovat peräkkäin, toto-ohjelma koostuu kasasta toto-komentoja, jotka ovat peräkkäin. Jokainen toto-komento on yhden merkin mittainen. Esimerkiksi komento f vie robottia yhden askelen eteenpäin. Siinä missä kukin Python-komento on omalla rivillään, toto-komennot pannaan kaikki samalle riville peräkkäin. Esimerkiksi ohjelma fff vie robotin kolme askelta eteenpäin, koska se vie robottia ensin yhden askelen eteenpäin (ensimmäinen f), sitten toisen askeleen eteenpäin (toinen f) ja lopuksi kolmannen askelen eteenpäin (kolmas f).

Tehtävissä on tarkoitus viedä robotti (jota kuvaa robotin etenemissuuntaan osoittava väkä) maaliin (jota kuvaa @-merkki). Jos ohjelman loppuessa robotti on maalin kohdalla, tehtävä on onnistunut (kerro tällöin toto-ohjelma, jolla ratkaisit tehtävän); jos robotti on jossain muualla, tehtävä ei ole onnistunut, ja sinun pitää yrittää uudestaan. Kun annat komennon ./toto n, sinulle näytetään ensiksi maailma, jossa robotti pitäisi ohjata maaliin, ja kysytään ohjelmaa. Kun olet kirjoittanut ohjelman ja painanut Enter, sinulle näytetään vaihe vaiheelta ohjelman suoritus. Suorittaaksesi ohjelmaa eteenpäin painele Enteriä. Joka askelella sinulle näytetään, missä kohtaa robotti on, mihin suuntaan se on menossa, ja missä kohtaa ohjelman suoritus on. Ohjelmaa ei voi suorittamisen aikana muuttaa (kuten ei oikeitakaan ohjelmia).

Toto-kielen komennot:

f
Robotti ottaa askelen eteenpäin.
r
Robotti kääntyy 90 astetta oikealle.
l
Robotti kääntyy 90 astetta vasemmalle. (Harjoitus 4: miksi tämä komento on oikeastaan tarpeeton?)
sulkeet
Sulkeisiin voi panna komentoja, jotka pitää suorittaa vain, jos robotin edessä on este. Esimerkiksi ohjelmanpätkä (rr) kääntää robotin 180 astetta, jos sen edessä oli este.

Tehtävää vaikeuttamassa maastossa on (1) esteitä (#), joiden läpi ei pääse — niihin törmääminen tosin ei ole vaarallista, robotti vain ei etene yrittäessään mennä päin estettä; (2) mahdollisia esteitä (?), joista ei tiedä etukäteen, onko niissä este vai ei; (3) vaihtoehtoisia aloituspaikkoja, eli robotilla on useampia mahdollisia aloituskohtia ja -suuntia, joista ei tiedä etukäteen, mistä robotti lähtee.

Harjoituksissa, joissa on epävarmuustekijöitä (mahdollisia esteitä ja/tai vaihtoehtoisia aloituspaikkoja), yritä keksiä ohjelma, joka vie robotin maaliin aina, jos se vain on mahdollista eli jos vain reitti maaliin on olemassa. Testaa ohjelmaasi useampia kertoja ja katso, miten se selviää eri tilanteista.

Toto-tehtäviä on kuusi. Numeroi ne tehtäväpalautuksessa T1, T2 … T6.

Hae laitoksen sivuilta:

Yleisen kielitieteen laitos | Humanistinen tiedekunta | Helsingin yliopisto
Copyright © 2003-2004 Helsingin yliopisto. Kaikki oikeudet pidätetään.