„miniLOGIA grafika w Logo” to konkurs informatyczny dla uczniów szkół podstawowych województwa mazowieckiego organizowany przez Ośrodek Edukacji Informatycznej i Zastosowań Komputerów (OEIiZK) na zlecenie Mazowieckiego Kuratora Oświaty. Konkurs składa się z trzech etapów, podczas których uczniowie samodzielnie rozwiązują zadania graficzne w językach Logo lub Python (z zainstalowanym modułem turtle).
W serii artykułów przedstawię rozwiązania zadań w języku Logo, opracowane przeze mnie podczas przygotowywania się do konkursu. Jako środowisko, w którym opracowywałem rozwiązania zadań wykorzystałem zalecane przez organizatora oprogramowanie Logomocja-Imagine.
Zadanie 3
Napisz procedurę DRZEWO :ile :dl, po wywołaniu której będzie rysowane drzewo takie, jak na rysunkach. Każde drzewo składa się z pnia, jednego liścia na czubku oraz podanej wysokości. Parametr :ile oznacza wysokość drzewa, może on zmieniać się w zakresie od 8 do 15. Gałęzie na pierwszym poziomie od dołu są rysowane według następujących zasad: z prawej strony pnia jest gałąź o długości 1, z lewej strony gałąź ma losową długość. Najkrótsza taka gałąź składa się z dwóch liści, najdłuższa z :dl liści. Parametr :dl może zmieniać się w zakresie od 2 do 8. Kolejne gałęzie układają się przeciwnie do poprzednich, na przykład na drugim poziomie gałąź losowa jest z prawej strony, ta o długości 1 z lewej strony. I tak kolejno. Drzewo powinno być narysowane na środku ekranu, jego wysokość wynosi, co najmniej 400.
Rozwiązanie:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
oto drzewo :ile :dl cale :ile :dl już =================================================== oto cale :ile :dl niech "wys 450 niech "bok :wys/(:ile+2) cs pod ws :wys/2 pien :bok korona :ile :dl :wys wróć już =================================================== oto kawl :bok pod lw 90 np :bok pw 90 niech "bok :bok/4 niech "ile 4 ukp "czarny kwl :bok*:ile niech "ile :ile-1 ukp "zielony kwl :bok*:ile niech "ile :ile-1 ukp "czerwony kwl :bok*:ile niech "ile :ile-1 ukp "żółty kwl :bok*:ile niech "ile :ile-1 już =================================================== oto kawp :bok pod pw 90 np :bok lw 90 niech "bok :bok/4 niech "ile 4 ukp "czarny kwp :bok*:ile niech "ile :ile-1 ukp "zielony kwp :bok*:ile niech "ile :ile-1 ukp "czerwony kwp :bok*:ile niech "ile :ile-1 ukp "żółty kwp :bok*:ile niech "ile :ile-1 już =================================================== oto korona :ile :dl :wys niech "bok :wys/(:ile+2) niech "dl :dl-2 jeżeli reszta(:ile) 2=0 [ powtórz :ile/2 [warp (losowa :dl)+2 :bok warl (losowa :dl)+2 :bok] kawp :bok ] [ powtórz :ile/2-0.5 [warp (losowa :dl)+2 :bok warl (losowa :dl)+2 :bok] warp (losowa :dl)+2 :bok kawp :bok] już =================================================== oto kwl :bok wielokąt [powtórz 4 [np :bok pw 90]] już =================================================== oto kwp :bok wielokąt [powtórz 4 [np :bok lw 90]] już =================================================== oto pien :bok ukp "czarny lw 90 niech "bok :bok/4 np :bok pw 90 wielokąt [powtórz 2 [np (:bok*4) pw 90 np (:bok*2) pw 90]] np :bok*4 lw 90 np :bok*3 pw 90 wielokąt [powtórz 2 [np :bok pw 90 np (:bok*8) pw 90]] pw 90 np :bok*4 lw 90 np :bok już =================================================== oto rzadl :ile :bok powtórz :ile [kawl :bok] pw 90 np :bok*:ile lw 90 już =================================================== oto rzadp :ile :bok powtórz :ile [kawp :bok] lw 90 np :bok*:ile pw 90 już =================================================== oto warl :ile :bok rzadl 1 :bok rzadp :ile :bok np :bok już =================================================== oto warp :ile :bok rzadp 1 :bok rzadl :ile :bok np :bok już |
Wynik działania programu:
DRZEWO 8 7