Autorské riešenie
[stiahni]

Pri tejto úlohe budeme pracovať so štyrmi textovými poliami a dvoma tlačidlami. Pole text1 obsahuje slovo, ktoré chceme zašifrovať (napr. "junior"), pole text2 zašifrovanú podobu tohto slova (napr. "genius"). Pole text4 obsahuje pôvodnú abecedu (t.j. abcdefghijklmnopqrstuvwxyz) a pole text5 poprehadzovanú abecedu (t. j. fkbdhjcligmopnutrsqveaxyzw), pomocou ktorej budeme šifrovať slovo text1 a dešifrovať slovo text2.

Na šifrovanie a dešifrovanie nám postačí vytvoriť jednu procedúru alebo operáciu. V prvom prípade šifrujeme slovo text1 pomocou vstupnej abecedy text4 a výstupnej abecedy text5 a výsledok tejto operácie uložíme do text2. V druhom prípade šifrujeme slovo text2 pomocou vstupnej abecedy text5 a výstupnej abecedy text4 a výsledok tejto operácie uložíme do text1.

Tzn., že do tlačidla ŠIFRUJ zapíšeme príkaz:
text2'nechHodnota sifruj text1'hodnota text4'hodnota text5'hodnota
a do tlačidla DEŠIFRUJ zapíšeme príkaz:
text1'nechHodnota sifruj text2'hodnota text5'hodnota text4'hodnota

Teraz vytvoríme operáciu sifruj s troma parametrami :vstup :abeceda1 :abeceda2, ktorá prejde písmenko po písmenku celým slovom :vstup. Každému písmenku slova :vstup nájdeme v :abeceda1 odpovedajúce písmenko v :abeceda2 a výsledok budeme zapisovať do premennej :vystup, ktorá predstavuje výstup tejto operácie.

Výsledná operácia sifruj vyzerá nasledovne:

viem sifruj :vstup :abeceda1 :abeceda2
  urobTu "vystup "
  opakuj pocet :vstup
    [urobTu "z prvok pocitadlo :vstup
     urobTu "i 0
     opakuj pocet :abeceda1
       [ak :z = prvok pocitadlo :abeceda1 [urobTu "i pocitadlo]]
     urobTu "vystup slovo :vystup prvok :i :abeceda2] 
  vysledok :vystup
koniec

Pri tejto úlohe sme chceli, aby ste sa zamysleli nad šifrovaním a dešifrovaním slov a naprogramovali jednoduchý šifrátor a dešifrátor, precvičili si prácu so záznamami, vytvorili operáciu s viacerými parametrami a používali hlavne lokálne premenné.

Vaše zaujímavé riešenia a najčastejšie chyby

Túto úlohu riešili len štyria účastnícke tímy. Najčastejšie nedostatky, ktorých ste sa dopustili vo svojich riešeniach:

  • použili ste dve takmer identické operácie na šifrovanie a dešifrovanie namiesto jednej šifrovacej operácie,
  • v riešeniach operácií ste nepoúživali parametre, skôr ste využívali globálne premenné,
  • odporúčame písať programy tak, aby nebolo v jednom riadku veľa príkazov, čo zlepší čitateľnosť programu a vyhľadávanie prípadných chýb.