„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ę RAMKA :n, po wywołaniu której na środku ekranu powstanie ramka taka, jak na rysunkach poniżej. Ramka składa się z elementów takich, jak na rysunku pomocniczym. Parametr :n określa liczbę obwódek dookoła ramki i może przyjmować wartości od 1 do 10. Długość boku zielonego kwadratu wynosi 480.
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 |
oto pomocniczy :bok :ktory niech "pier pkw(:bok*:bok*2) wielokąt [powtórz 2 [np :bok pw 45 np ((pkw(:bok*:bok*2))*4) pw 90 np ((pkw (:bok*:bok*2))*3) lw 90 np :pier lw 90 np :pier pw 45 np :bok pw 90 np :bok pw 45 np :pier lw 90 np :pier pw 45 np :bok pw 90 ]] np :bok pw 45 np ((pkw(:bok*:bok*2))*4) pw 90 np ((pkw (:bok*:bok*2))*3) lw 90 np :pier lw 90 np :pier pw 45 np :bok pw 90 np :bok pw 45 np :pier lw 90 np :pier pw 45 np :bok pw 180 jeśli :ktory=1[pw 90 ws :bok pw 45 ws :pier*4 pw 45 pod np :bok lw 90 opu ] już =================================================== oto ramka :n cs pod ukm "zielony ws 480/2 lw 90 np 480/2 pw 90 opu niech "wys 480 niech "bok :wys/(:n*8+5+3) wielokąt [powtórz 4 [np 480 pw 90]] pw 90 np :bok*5 lw 90 ukm "pomarańczowy powtórz :n [warstwa :wys :n niech "wys :wys-2*:bok*5 niech "bok :wys/(:n*8+5+3)] wróć już =================================================== oto rzad :wys :ile niech "bok :wys/(:ile*8+5+3) powtórz :ile-1[pomocniczy :bok 1] pomocniczy :bok 0 już =================================================== oto warstwa :wys :ile niech "bok :wys/(:ile*8+5+3) niech "pier pkw(:bok*:bok*2) niech "bok2 (:wys-2*:bok*5)/(:ile*8+5+3) powtórz 4 [rzad :wys :ile] np :bok pw 45 np :pier*4 lw 135 pod np :bok*4 ws :bok2*5 pw 90 opu już |
Wynik działania programu:
RAMKA 10