Přihlášení

Jméno

Heslo



Nejste členem?
Klikněte sem
a zaregistrujte se.

Zapomněli jste heslo?
Pro zaslání nového
Klikněte sem.

Photo cloud


progeCAD - alternativa AutoCAD ®
Dodavatelem školní verze konstrukčního 2D&3D programu progeCAD Professional je konstrukční a vývojová kancelář SoliCAD, s.r.o.
 Vertikalní menu, vodorovně rozbalovací, třiúrovňové

04. Programovací jazyk LOGO 3

Řešení úkolů z minulé kapitoly-ukázka:

Větvení programu

Větvení programu slouží ke změně činnosti programu na základě vyhodnocení průběhu programu či změně vstupních podmínek.
U jednoduššího větvení (známý příkaz IF z tabulkových procesorů) jde o prosté vyhodnocení, zda je podmínka splněna (THEN - TRUE - vykoná se zadaná činnost) nebo splněna není (ELSE - FALSE - vykoná se jiná činnost).
Pro složitější větvení využíváme přikaz SELECT


Příklad:
Vyhodnoťte, zda jde o číslo kladné či záporné

to kladne.zaporne.nula :a
if ( :a = 0 ) [print "Nula"]
if ( :a < 0 ) [print "Záporné"][print "Kladné"]
end


Poznámka: V některých aplikacích můžeme s výhodou využít generátor pseudonáhodného čísla - například pro naprogramování hrací kostky

to kostka
print ( random 7 )
end


V jazyku LOGO příkaz RANDOM, jehož výsledkem je náhodné nezáporné číslo od nuly do parametru. Příkaz RANDOM 7 tedy vrátí náhodné (pokaždé jiné) číslo od nuly do šesti.

Námět na volné večery - s pomocí výše uvedeného a toho, že uumíme kreslit čtverce a kružnice je možno (příkaz IF) vytvořit naprogramovat hrací kostku.

Rekurze
Rekurze patří mezi základní programátorské prostředky. Fukce volá sama sebe. Výsledkem je jednodušší zápis. Nevýhodou jsou nároky na paměť, problémy s ukončením rekurze i pochopením funkce programu.

Příklad - strom
Naprogramujte proceduru, která nakreslí strom. Parametry budou velikost kmene a počet rozvětvení
Strom má rekurzivní tvar - každou větev můžeme totiž považovat za malé stromy

to strom :kmen :pocet
if :pocet = 0 [stop]
forward :kmen
left 45
strom ( :kmen / 2 ) ( :pocet - 1 )
right 90
strom ( :kmen / 2 ) ( :pocet - 1 )
left 45
back :kmen
end


Vysvětlete jednotlivé kroky programu
Příklad - sněhová vločka

to snehova.vlocka :velikost :pocet
repeat 3 [strana :velikost :pocet right 120]
end


to strana :velikost :pocet
if :pocet = 0 [forward :velikost stop]
strana ( :velikost / 2 ) ( :pocet - 1 )
left 60
strana ( :velikost / 3 ) ( :pocet - 1 )
right 120
strana ( :velikost / 3 ) ( :pocet - 1 )
left 60
strana ( :velikost / 3 ) ( :pocet - 1 )
end



Klasickým příkladem na rekurzi je výpočet faktoriálu
Víme, že např. 5!=5.4.3.2.1
Výpočet faktoriálu bez použití rekurze:

to faktorial :n
local "a
make "a :n
local ":v
make "v 1
repeat :n [make "v ( :v * :a ) make "a ( :a - 1 )]
output :v
end


Je jistě zcela zřejmé, jak probíhá výpočet. Pokud ne, tak si projděte řádky níže uvedené (příklad pro výpočet 4!)
n!=n(n-1)(n-2)... . 1

Kroky programu:
lokální proměnná a=n=4
lokální proměnná v=1

4 krát se opakuje:
v = 1 . 4 a = 4 - 1
4 3
v = 4 . 3 a = 3 - 1
12 2
v = 12 . 2 a = 2 - 1
24 1
v = 24 .1 a =0
Výsledkem je hodnota 24.

Výpočet faktoriálu s použitím rekurze:

to faktorial2 :n
if :n > 1 [output :n * faktorial2 :n - 1][output 1]
end

Je zřejmé, že pomocí rekurze lze zapsat kód výrazně úsporněji.
Úkoly na samostatnou práci
1. Zapište funkci pro výpočet kombinačního čísla.
(Nápověda -

Komentáře

Zatím nikdo nekomentoval. Buďte první kdo vloží svůj komentář.

Přidat komentář

Pro přidání komentáře musíte být přihlášený.

Hodnocení

Hodnotit mohou pouze přihlášení uživatelé.

Prosím přihlaště senebo se registrujte pro možnost hodnocení.

Zatím nikdo nehodnotil.
Vygenerované za: 0.07 sekund
5,116,143 návštěv