„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ę RABATA :ilek :ilep, po wywołaniu której na ekranie powstanie rysunek rabaty kwiatowej utworzonej z fioletowych kwiatków na zielonych łodyżkach. Długość krótszej łodygi wynosi 115, a dłuższej 230. Parametr :ilek oznacza liczbę długich łodyżek i może przyjmować wartości od 1 do 5. Parametr :ilep oznacza liczbę płatków kwiatka oraz liczbę ząbków w płatku i może przyjmować wartości od 2 do 9. Odległość między skrajnymi łodygami wynosi 460. Zależności między długościami odcinków odczytaj z rysunku pomocniczego.
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 |
oto RABATA :ilek :ilep cs pod niech "bok (((460/(:ilek*2))/8)*3)/:ilep niech "a 460/(:ilek*2) ws (230+:bok*:ilep)/2 lw 90 np 460/2 pw 90 opu powtórz :ilek [oba :bok :a :ilep] kwiat 0 :bok :ilep już =================================================== oto dl :a :ile :ilep kwiat 1 :a :ilep pw 90 np :ile lw 90 już =================================================== oto kr :a :ile :ilep kwiat 0 :a :ilep pw 90 np :ile lw 90 już ==================================================== oto kwiat :a :bok :ile ukp "zielony jeśli :a=0[np 115] jeśli :a=1[np 230] pak :bok :ile ukp "zielony jeśli :a=0[ws 115] jeśli :a=1[ws 230] już ==================================================== oto oba :a :ile :ilep kr :a :ile :ilep dl :a :ile :ilep już ==================================================== oto pak :a :ile ukp "fioletowy ukm "fioletowy jeśli reszta :ile 2=0[lw 360/:ile/2] powtórz :ile [ np :a pw 90 powtórz :ile [ pojel :a] pw 90 np :a*(:ile+1) lw 180 pw 360/:ile ] jeśli reszta :ile 2=0[pw 360/:ile/2] już ==================================================== oto pojel :a ws :a/2 wielokąt [np :a lw 30 np :a lw 120 np :a lw 30 np :a lw 30 np :a lw 120 np :a lw 30] lw 90 np :a pw 90 np :a/2 już |
Wynik działania programu: