Úloha je veľmi jednoduchá. Najprv nastavíme korytnačke nejaký font, aby sme potom mohli ladiť konkrétne veľkosti posunov.
Napr.
? zmen.pismo [Arial] [14
700 0 0 0]
Pomocou základného príkazu citaj.slovo načítame číslo dňa v týždni, ktorým tento mesiac začína. Podobne načítame počet dní mesiaca. Obe čísla uložíme do príslušných premenných. Ďalej navrhneme dva príkazy: vypis.1.tyzden, ktorý vypíše dni v prvom týždni, ktorý je špeciálny v tom, že nezačína od pondelka. Príkaz vypis.obycajny.tyzden bude vypisovať vždy 7 dní. V premennej "c.dna si budeme evidovať číslo aktuálneho dňa, t.j. toho, ktorý práve vypisujeme.
Keďže je zadanie veľmi jednoduché,
budeme riešiť úlohy a), b) aj c) naraz. Načítanie mena mesiaca urobíme
teda hneď v úvodnom príkaze a hneď ho aj vypíšeme a nastavíme korytnačku
na pozíciu, kde bude môcť vypisovať dni. Na zarovnanie dní menších ako
10 použijeme príkaz zarovnaj,
na zobrazovanie červených nedieľ použijeme príkaz na zmenu farby pera pri
výpise siedmeho dňa v týždni. Do riešenia sme na vysvetlenie doplnili komentáre.
viem start
zmaz urob "1.den citaj.slovo urob "p.dni citaj.slovo urob "meno.mes citaj.slovo urob "c.dna 1 do 50 vp 90 do 30 vl 90 text :meno.mes domov vypis.1.tyzden opakuj 5 [vypis.obyc.tyzden] ; budeme sa snaižiť vypísať 5 týždňov, ak mesiac už toľko dní nemá zistí sa to v príkaze vypis.obyc.tyzden koniec |
viem vypis.1.tyzden
opakuj :1.den - 1 [vz 50] ; posúvanie korytnačky bez výpisu čísel opakuj 7 - :1.den [zarovnaj vz 50 urob "c.dna :c.dna+1] zmen.fp 12 zarovnaj vz 50 urob "c.dna :c.dna+1 zmen.fp 0 do 7 * 50 vp 90 do 50 vl 90 ; posunutie na výpis druhého týždňa koniec |
viem vypis.obyc.tyzden
opakuj 7 ~ [ak :c.dna <= :p.dni ~ [ak poc = 7 [zmen.fp 12][zmen.fp 0] ~ ak :c.dna < 10 [zarovnaj][text :c.dna] urob "c.dna :c.dna+1][] vz 50] do 7 * 50 vp 90 do 50 vl 90 ; posun na výpis nového stĺpca mesiaca koniec |
viem zarovnaj
vp 90 do 10 vl 90 text :c.dna vl 90 do 10 vp 90 ; všetky konkrétne veľkosti sú samozrejme iba pre zvolenú veľkosť fontu koniec |