Autorské riešenie
[stiahni]

Vašou úlohou bolo správne spočítať, akú vzdialenosť by sme prešli, keby sme v skutočnosti navštívili mestá, na ktoré sme klepli myškou. Pomôcť vám mala tabuľka, v ktorej boli uvedené vzdialenosti jednotlivých miest. Opäť nám pomohli zoznamy.

Procedúra zacni

viem zacni
  urob "vzdialenosti [[0 1090 1490 1170 560 2530]
                      [1090 0 1400 450 1620 1250]
                      [1490 1400 0 1810 1830 2040]
                      [1170 450 1810 0 1730 1670]
                      [560 1620 1830 1730 0 2930]
                      [2530 1250 2040 1670 2930 0]]
  urob "posledne_mesto 0
  text1'nechhodnota 0
  koniec'NechHodnota :i
koniec

Táto procedúra sa vykoná vždy pred začiatkom cesty (po stlačení tlačidla Štart). Do premennej "vzdialenosti sme si uložili tabuľku vzdialeností jednotlivých miest. Prvý riadok sú vzdialenosti mesta Berlín od miest Berlín, Paríž, Rím, Londýn, Varšava a Madrid. Druhý riadok je pre mesto Paríž atď. V premennej "posledne_mesto si pamätáme posledne navštívené mesto (keďže začíname, na začiatku je to 0). Každému mestu sme priradili číslo: Berlín - 1, Paríž - 2, Rím - 3, Londýn - 4, Varšava - 5 a Madrid - 6. Všimnite si, že číslo mesta je také isté ako číslo jeho riadku v tabuľke vzdialeností.

Každému tlačidlu mesta sme priradili udalosť priZapnutí. Pre Berlín "pripocitaj 1", pre Paríž "pripocitaj 2" atď. Procedúra pripocitaj dostane ako parameter číslo mesta, na ktoré sme práve klepli myškou.

Procedura pripocitaj
viem pripocitaj :x
  ak :posledne_mesto <> 0
     [text1'nechhodnota text1 + prvok :x prvok :posledne_mesto :vzdialenosti]
  urob "posledne_mesto :x 
koniec 

Ak posledne navštívené mesto nie je 0 (už cestujeme) tak do textového políčka "text1 vypíšeme súčet jeho pôvodnej hodnoty a príslušného prvku z tabuľky vzdialeností. Napr. ak posledné navštívené mesto bolo Paríž (má číslo 2) a my sme myškou klepli na Rím (premenná "x bude mať hodnotu 3) príkaz sa vyhodnotí takto:

      

text1'nechhodnota  text1 + prvok :x prvok :posledne_mesto :vzdialenosti
text1'nechhodnota   text1 + prvok 3 prvok 2 :vzdialenosti
text1'nechhodnota   text1 + prvok 3 [1090 0 1400 450 1620 1250]
text1'nechhodnota   text1 + 1400
text1'nechhodnota  text1 + 1400

Hodnota v textovom políčku sa teda zvýši o 1400. Zároveň si pamätáme, že posledne navštívené mesto má číslo 3, teda Rím.

Ak posledne navštívené mesto bola 0 (klepli sme teda na prvé mesto na našej ceste), zapamätáme si číslo tohto mesta.

Najčastejšie chyby

Príliš komplikovane ste zisťovali, akú vzdialenosť je otrebné k hodnote textového políčka pripočítať. Prípadné ste zabudli alebo nesprávne nastavili počiatočné hodnoty premenných.