Nawigacja

klasa 6 klasa 7 Prezentacje, HTML GIMP pliki do pobrania Logomocja - Imagine podstawowe polecenia Logomocja - Imagine struktura i funkcje Logomocja - typy danych Logomocja - rekurencja i iteracja Teams Pain-net klasa5 klasa 4

Informatyka

Logomocja - rekurencja i iteracja

Co na tym etapie trzeba pamietać o tych dwóch elementach:

  • rekurencja od łac. recursio = powracanie. Funkcja wywołuje samą siebie (ewentualnie inną, która wywoła pierwszą funkcję), a potem wykonywanie programu wraca do pierwszej.
  • iteracja od łac. iteratio = następowanie. Funkcja jest wywoływana dla kolejnych (następnych) elementów (mogą to być także proste instrukcje).

 

A teraz trochę na wesoło o rekurecji i iteracji, może lepiej zapamietacie:

A tu jest wierszyk który obrazuje zasadę rekurencji:

Wpadł pies do kuchni i porwał mięsa ćwierć
A jeden kucharz głupi, zarąbał go na śmierć
A drugi kucharz mądry, co serce i litość miał
Postawił mu nagrobek i taki napis dał:

Wpadł pies do kuchni i porwał mięsa ćwierć
A jeden kucharz głupi, zarąbał go na śmierć
A drugi kucharz mądry, co serce i litość miał
Postawił mu nagrobek i taki napis dał:

Itd.

Ten natomiast jest wierszem iteracyjnym:

Na zielonej łączce 1, 2, 3
Pasły się zajączki 1, 2, 3
A to była pierwsza zwrotka
teraz będzie druga zwrotka.

Na zielonej łączce 1, 2, 3
Pasły się zajączki 1, 2, 3
A to była druga zwrotka
teraz będzie trzecia zwrotka:

Na zielonej łączce 1, 2, 3
Pasły się zajączki 1, 2, 3
A to była trzecia zwrotka
teraz będzie czwarta zwrotka:

Na zielonej ...

Przykłady rekurencji i iteracji w Logo:

1. http://it.pwsz-ns.edu.pl/~jwojcik/prog/Logo2.pdf,

2.  https://logo.oeiizk.waw.pl/index.php?sr=materialy

 

Inne zastosowania w Logo:

Nieskomplikowane działania można opisać w postaci skończonego ciągu prostych poleceń. Na przykład treść procedury rysowania kwadratu może być ciągiem poleceń pierwotnych.

OTO KWADRAT :BOK

NAPRZÓD :BOK PRAWO 90

NAPRZÓD :BOK PRAWO 90

NAPRZÓD :BOK PRAWO 90

NAPRZÓD :BOK PRAWO 90

JUŻ

Możemy to samo (jak rysować kwadrat) zdefiniować krócej, jeśli użyjemy w definicji polecenia pierwotnego Logo POWTÓRZ

OTO KWADRAT :BOK

POWTÓRZ 4 [NP :BOK PW 90]

JUŻ

POWTÓRZ -  jest poleceniem pierwotnym, które musi mieć dwie dane: liczbę powtórzeń i listę poleceń. Jego skutkiem jest wykonanie daną liczbę razy danej listy poleceń – w naszym przykładzie wykonanie 4 razy listy dwóch poleceń [NP :BOK 90].

 

Zauważ, że: NAPRZÓD :BOK PRAWO 90 to dwa polecenia napisane w jed­nym wierszu, jak w pierwszym przykładzie definicji polecenia KWADRAT, natomiast [NP :BOK PW 90] to lista dwóch poleceń.

 

 Druga definicja jest istotnie krótsza, jej treść składa się tylko z jednego wiersza, ale rysowanie kwadratu polega zawsze na wykonaniu w tej samej kolejności 8 elemen­tarnych kroków - ruchów naprzód i obrotów pod kątem prostym w prawo.

  Zupełnie inna jest sytuacja w przypadku rysowania łamanej regularnej dla danych:

  •   liczby boków :N,
  •   kąta między kierunkami kolejnych boków :KĄT oraz
  •   długości boku :BOK.

 Żółw rysuje takie łamane dokładnie tak samo jak kwadrat. Idzie naprzód o daną kroków i obraca się w prawo o ustalony kąt. Ale liczba powtórzeń tych dwóch elementarnych kroków nie jest z góry ustalona. Jest parametrem procedury:

 OTO ŁAMANA.REGULARNA :N :KĄT :BOK

POWTÓRZ :N [NP :BOK PW :KĄT]

JUŻ

 Dzięki zastosowaniu polecenia pierwotnego POWTÓRZ, można pewne definicje istotnie skrócić i co ważniejsze można zdefiniować działania o nieustalonej z góry raz na zawsze liczbie kroków elementarnych.

Działania powtarzalne można też definiować w inny sposób:

 

OTO LICZ :OD :DO

JEŚLI :OD > :DO [STOP]

PISZ :OD

LICZ :OD + 1 :DO

JUŻ

 LICZ - jest procedurą liczenia w ustalonym zakresie :OD :DO, tzn. wymieniania w naturalnym (rosnącym) porządku kolejnych liczb naturalnych nie mniejszych niż :OD i nie większych niż :DO.

Wywołaj LICZ z danymi dwoma liczbami naturalnymi np. LICZ 3 7

Logo powinno wypisać w kolejnych wierszach na ekranie tekstowym liczby:

3

4

5

6

7

Liczenie od 7 do 3 nie daje widocznego skutku, kończy się niczym bo nie można liczyć w natutalnym porządku od 7 do 3 (tylko odwrotnie).

Jak widać w definicjach w języku programowania musimy przywiązywać większe znaczenie do ścisłego znaczenia poleceń niż w języku potocznym, kiedy możemy liczyć w większym stopniu na domyślność rozmówcy.

W definicji procedury LICZ jest kilka nowych elementów. Omówimy je po kolei.

JEŚLI :OD > :DO [STOP] jest przykładem zastosowania pierwotnego polecenia warunkowego JEŚLI. W najprostszych przypadkach ma ono następującą postać:

JEŚLI wyrażenie_logiczne lista_poleceń

Jego wykonanie polega na sprawdzeniu, czy dane wyrażenie_logiczne jest spełnione (PRAWDA) i jeśli tak, wykonaniu danej listy_poleceń, a jeśli nie - zignorowaniu jej. 

W naszym przypadku, jeśli dolne ograniczenie zakresu liczenia :OD ma wartość większą niż :DO, to wykonuje się polecenie STOP - koniec obliczeń. A jeśli :OD ma wartość nie większą niż :DO, to ignorujemy STOP, wyliczamy (piszemy) wartość :OD i liczymy dalej od wartości :OD + 1 do wartości :DO.


 STOP - jest poleceniem sterującym - zakończ wykonywanie procedury. Najczęściej występuje w poleceniach warunkowych, jak w powyższym przykładzie, gdy chcemy zakończyć obliczanie w określonych przypadkach.

W treści procedury LICZ (w drugim wierszu) występuje jej wywołanie. Takie procedury, w których treści występuje ich wywołanie, nazywamy procedurami rekurencyjnymi. Ogólniej, rekurencyjnymi nazywamy takie procesy i struktury, które są podobne do swych części. Liczenie polega na wypisaniu pierwszej liczby i liczeniu dalej. Częścią procesu liczenia od 1 do 100 jest liczenie od 2 do 100.

 

 Liczenie od 1 do N (a także w dowolnym zakresie :OD :DO) można również zdefiniować za pomocą polecenia POWTÓRZ.

 

OTO LICZ.DO :N

POWTÓRZ :N [PISZ NPW]

JUŻ

 W tej definicji wywołujemy funkcję pierwotną NPW (pełna nazwa - NUMPOW). Jest to funkcja bez parametrów, która może wystąpić na liście poleceń instrukcji POWTÓRZ. Jej wynikiem jest numer kolejnego powtórzenia danej listy instrukcji.

Tak więc wykonanie POWTÓRZ 7 [PISZ NPW] polega na pięciokrotnym wykonaniu polecenia PISZ NPW. Za każdym razem NPW ma inną wartość: 1, 2, 3, 4, 5, 6, 7.


 

Na koniec omówimy jeszcze jeden prosty przykład zastosowania instrukcji warunkowej JEŚLI.

 OTO MAKS :A :B

JEŚLI :A > :B [WY :A] [WY :B]

JUŻ

 Jest to definicja MAKS, której wynikiem jest większa z dwóch danych wartości. W tym przykładzie użyliśmy polecenia JEŚLI w pełnej postaci:

JEŚLI wyrażenie_logiczne lista_poleceń_1 lista_poleceń_2

W takim przypadku wykonanie polecenia polega na sprawdzeniu, jaką wartość ma wyrażenie_logiczne i jeśli to PRAWDA, wykonaniu listy_poleceń_1, a w przeciwnym przypadku listy_poleceń_2.

WY - (WYNIK) to również polecenie sterujące języka Logo, które podobnie jak  STOP, powoduje zakończenie obliczeń, ale dodatkowo wskazuje ich wynik.

 Jeśli chcesz aby Logo zapisał większą z liczb w obszarze tekstowym zmień polecenie na:

 OTO MAKS :A :B

JEŚLI :A > :B [PISZ :A] [PISZ :B]

JUŻ

 

Polecenia sterujące i warunkowe umożliwiają sterowanie przebiegiem obliczeń zależnie od określonych warunków. Dzięki temu, obliczanie według tej samej procedury może być raz krótsze, a raz dłuższe, zależnie od danych.

 

Aktualności

Kontakt

  • Szkoła Podstawowa nr 4 im. Władysława Broniewskiego
    ul. Słowackiego 2
    34-100 Wadowice
  • tel/fax. sekretariat 33 82 331 62
    tel. kadry/księgowa 33 82 334 65

Galeria zdjęć