Hobbyspace.pl – blog dla hobbystów

Porady, projekty, recenzje dla fanów elektroniki i programowania

  • O blogu
  • Strona główna

Social

Szukaj

Kategorie

  • Arduino
  • Bez kategorii
  • FPGA
  • Logomocja
  • Raspberry Pi
  • Robotyka
  • STM32
  • WiFi

Ostatnie wpisy

  • Instalacja Raspberry Pi Camera v2
  • Raspberry Pi – włączenie SSH
  • Podłączenie Raspberry Pi do Internetu
  • Zmiana układu klawiatury Raspberry Pi
  • Raspbian – logowanie się do systemu, zmiana hasła, dodawanie i usuwanie użytkowników, zmiana uprawnień

Najnowsze komentarze

  • Darek - RNS-510 – aktualizacja mapy z karty SD
  • Tomasz - Jak przywrócić pełną pojemność karty SD?
  • Mirek - RNS-510 – aktualizacja mapy z karty SD
  • Skodnik4x4 - RNS-510 – aktualizacja mapy z karty SD
  • seniak2 - RNS-510 – aktualizacja mapy z karty SD

Archiwa

  • wrzesień 2017
  • lipiec 2017
  • czerwiec 2017
  • kwiecień 2017
  • marzec 2017
  • listopad 2016
  • sierpień 2016
  • lipiec 2016
  • czerwiec 2016
  • maj 2016
  • marzec 2016
  • luty 2016
  • styczeń 2016
  • grudzień 2015
  • listopad 2015
  • październik 2015
  • wrzesień 2015
  • lipiec 2015

Rozwiązanie zadania 3 z konkursu miniLOGIA 4 (2005/06) etap 2

21 czerwca 2016 przez ZKeram·Możliwość komentowania Rozwiązanie zadania 3 z konkursu miniLOGIA 4 (2005/06) etap 2 została wyłączona
Fb-Button

„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:

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

 

Plik Logomocji z rozwiązaniem zadania do pobrania.

Imagine Logo Logomocja miniLOGIA

Nawigacja wpisu

Poprzedni Poprzedni wpis Rozwiązanie zadania 2 z konkursu miniLOGIA 4 (2005/06) etap 2
Next Poprzedni wpis Rozwiązanie zadania 1 z konkursu miniLOGIA 5 (2006/07) etap 2
Proudly powered by WordPress. Theme: Flat 1.5.7 by YoArts.