Jezyki i metody programowania

Podobne dokumenty
Logo Komeniusz. Gimnazjum w Tęgoborzy. Mgr Zofia Czech

Warsztaty komputerowe

Programowanie w LOGO KOMENIUSZ grafika żółwia

ALGORYTMY. Polecenia Skrót Znaczenie Działanie Przykład pż

FRAKTALE. nie tworzą się z przypadku. Są tworzone naturalnie przez otaczającą nas przyrodę, bądź za pomocą

Projekt współfinansowany przez Unię Europejską ze środków Europejskiego Funduszu Społecznego

Modele i symulacje - Scratch i Excel

Programowanie w języku LOGO KOMENIUSZ

FRAKTALE I SAMOPODOBIEŃSTWO

Zbiór Cantora. Diabelskie schody.

Algorytmika i programowanie

Fraktale. i Rachunek Prawdopodobieństwa

Podstawowe komendy. Ćwiczenie 1

LOGO KOMENIUSZ PODSTAWOWE KOMENDY W LOGO KOMENIUSZ:

samopodobnym nieskończenie subtelny

Algorytmy i Struktury Danych.

Fraktale deterministyczne i stochastyczne. Katarzyna Weron Katedra Fizyki Teoretycznej

Simba 3D LOGO. Cele zajęć: - Poznanie zasad i sposobów tworzenia procedur z parametrami. - Poznanie zasad wywoływania procedur z parametrami.

Zadania domowe. Ćwiczenie 2. Rysowanie obiektów 2-D przy pomocy tworów pierwotnych biblioteki graficznej OpenGL

2.1. Duszek w labiryncie

1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji.

Sierpiński Carpet Project. W ZSTiL Zespół Szkół Technicznych i Licealnych

GRAFIKA ŻÓŁWIA. PDF stworzony przez wersję demonstracyjną pdffactory Pro CZĘŚĆ 1 OPRACOWAŁ: Wojciech Rogowicz

Programowanie od pierwszoklasisty do maturzysty. Grażyna Koba

Przedmiotowy Konkurs Informatyczny LOGIA powołany przez Mazowieckiego Kuratora Oświaty

Definiowanie procedur z parametrami w Logo Komeniuszu.

Obrazy rekurencyjne. Zastosowanie rekurencji w algorytmice. AUTOR: Martin Śniegoń

Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

przedmiot kilka razy, wystarczy kliknąć przycisk Wyczaruj ostatni,

narzędzie Linia. 2. W polu koloru kliknij kolor, którego chcesz użyć. 3. Aby coś narysować, przeciągnij wskaźnikiem w obszarze rysowania.

1 TEMAT LEKCJI: 2 CELE LEKCJI: 3 METODY NAUCZANIA 4 ŚRODKI DYDAKTYCZNE 5 UWARUNKOWANIA TECHNICZNE. Scenariusz lekcji.

Definicje. Algorytm to:

Scenariusz lekcji. scharakteryzować budowę procedury w języku Logo; rozróżnić etapy tworzenia i wykonania procedury;

Fraktale wokół nas. Leszek Rudak Uniwersytet Warszawski. informatyka +

Informatyka wprowadzenie do algorytmów (II) dr hab. inż. Mikołaj Morzy

Fraktale w matematyce

Wstęp do Informatyki

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał

Scenariusz lekcji. Scenariusz lekcji. zdefiniować pojecie wielokąt foremny;

Cykl lekcji informatyki w klasie IV szkoły podstawowej. Wstęp

Opis implementacji: Poznanie zasad tworzenia programów komputerowych za pomocą instrukcji języka programowania.

Wymagania edukacyjne na ocenę z informatyki klasa 3

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Podręcznik. Przykład 1: Wyborcy

Wstęp. Opis programu :

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno

Temat 5. Programowanie w języku Logo

ALGORYTMY I STRUKTURY DANYCH

Systemy Lindenmayera (L-systemy)

2.8. Algorytmy, schematy, programy

Programowanie w języku Python. Grażyna Koba

Wprowadzenie do algorytmiki

1 TEMAT LEKCJI: 2 CELE LEKCJI: 3 METODY NAUCZANIA 4 ŚRODKI DYDAKTYCZNE 5 UWARUNKOWANIA TECHNICZNE. Scenariusz lekcji.

Metody numeryczne w przykładach

Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji.

INTERAKTYWNA KOMUNIKACJA WIZUALNA. Systemy Lindenmayera (L-systemy)

Co to jest algorytm? przepis prowadzący do rozwiązania zadania, problemu,

EGZAMIN MATURALNY Z INFORMATYKI

RYSUNEK TECHNICZNY I GEOMETRIA WYKREŚLNA INSTRUKCJA DOM Z DRABINĄ I KOMINEM W 2D

Uczeń/Uczennica po zestawieniu połączeń zgłasza nauczycielowi gotowość do sprawdzenia układu i wszystkich połączeń.

Krzywa uniwersalna Sierpińskiego

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW

1 TEMAT LEKCJI: 2 CELE LEKCJI: 3 METODY NAUCZANIA 4 ŚRODKI DYDAKTYCZNE 5 UWARUNKOWANIA TECHNICZNE. Scenariusz lekcji.

FINCH PONG. Realizator: Partner: Patronat:

Rozkład materiału nauczania informatyki w klasie 5a, 5b, 5c i 5d.

Programowanie i techniki algorytmiczne

Paradygmaty programowania

Scenariusz lekcji. nazwać elementy składowe procedury; wymienić polecenia służące do malowania wnętrza figur;

Zajęcia nr 3_cz2 Praca z tekstem: WORD Wzory matematyczne. Tabele

Przykład animacji w Logo Komeniusz

START. Wprowadź (v, t) S:=v*t. Wyprowadź (S) KONIEC

Technologia informacyjna Algorytm Janusz Uriasz

Algorytmika i pseudoprogramowanie

Zapisywanie algorytmów w języku programowania

Wykorzystanie programu C.a.R na lekcjach matematyki

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

Procedura rekurencyjna to taka procedura, która wywołuje samą siebie.

1 Wprowadzenie do algorytmiki

GIMNAZJALISTO, ZRÓB TO SAM PROGRAMOWANIE W SCRATCHU

Grażyna Koba. Grafika komputerowa. materiały dodatkowe do podręcznika. Informatyka dla gimnazjum

Dziedziczenie. Zadanie 1

Teraz bajty. Informatyka dla szkoły podstawowej. Klasa VI

Scenariusz lekcji opartej na programie Program nauczania informatyki w gimnazjum DKW /99

1 Podstawy c++ w pigułce.

Programowanie strukturalne i obiektowe. Funkcje

Rekurencja (rekursja)

Grafika Komputerowa Materiały Laboratoryjne

WASM AppInventor Lab 3. Rysowanie i animacja po kanwie PODSTAWY PRACY Z KANWAMI

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

WHILE (wyrażenie) instrukcja;

3.27pt. Algorytmy i programowanie ze Scratchem

Scenariusz lekcji Ozobot w klasie: Ciąg Fibonacciego

Wymagania na poszczególne oceny szkolne dla klasy VI. (na podstawie Grażyny Koba, Teraz bajty. Informatyka dla szkoły podstawowej.

Wymagania edukacyjne na ocenę z informatyki KLASA III

Ćwiczenie 6 Animacja trójwymiarowa

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

Ekran tytułowy (menu główne)

Schematy blokowe. Algorytmy Marek Pudełko

Podstawy Programowania 2

Transkrypt:

Jezyki i metody programowania WYKŁAD 3 i 4 Logo Dr Bożena Woźna-Szcześniak bwozna@gmail.com Instytut Matematyki i Informatyki Akademia im. Jana Długosza

LOGO KOMENIUSZ LOGO KOMENIUSZ jest rozprowadzany przez Ośrodek Edukacji Informatycznej i Zastosowań Komputerów w Warszawie. Wykonuje on polecenia języka Logo podawane zarówno w polskej, jak i angielskiej wersji językowej. Nazwa programu wywodzi się od zlatynizowaniej postaci (Comenius) nazwiska Jana Amosa Komensky ego - czeskiego uczonego i pedagoga żyjącego w latach 1592-1670. Jest on uznawany za wybitnego reformatora szkolnictwa i twórcę nowoczesnej pedagogiki. W latach 1628-1655 przebywał na emigracji w Lesznie, a resztę życia spędził w Amsterdamie. Z powodu długotrwałego mieszkania i pracy w Polsce spotyka się również polską wersję od jego nazwiska - Komeński. 2010-03-19 dr B. Woźna-Szcześniak 2

LOGO KOMENIUSZ Po grecku logos znaczy słowo. Logo składa się z gotowych elementarnych procedur, które służą do definiowania procedur użytkownika. Możliwe jest definiowanie zmiennych globalnych i lokalnych, istnieje iteracja i rekurencja. Początkowo język Logo służył do sterowania robotem, zwanym żółwiem. Żółw wyposażony był w specjalne pióro, za pomocą którego mógł znaczyć trasę swojej wędrówki. Wraz z upływem czasu, gdy powstały graficzne terminale komputerów, żółw Logo przeniósł się z podłogi na ekran monitora. 2010-03-19 dr B. Woźna-Szcześniak 3

Logo w Encyklopedi Logo (LOGO), edukacyjny język programowania biorący początek z badań nad psychologią uczenia się i jego wpływem na kształtowanie osobowości (J. Piaget). Opracowany przez Seymoura Paperta i spopularyzowany przez niego w książce, pt. Burze mózgów - dzieci i komputery (Wydawnictwo Naukowe PWN, 1996). Logo jest stosowane w początkowym nauczaniu matematyki oraz jako język komunikacji dziecka z komputerem; odznacza się interakcyjnością, znakomicie przemyślanym, prostym zestawem operacji graficznych i ogólnością składni wzorowanej na języku Lisp. W Polsce język Logo jest powszechny od połowy lat osiemdziesiątych XX w. Ze względu na swoje szczególne zastosowanie słownik języka Logo ma liczne realizacje narodowe, w szczególności z użyciem wyrazów polskich, np. AC Logo, Logo Komeniusz (pracujące w systemie Windows), lub Logomocja. 2010-03-19 dr B. Woźna-Szcześniak 4

Główne okno programu LOGO Tutaj wykonywane są polecenia Tutaj wpisujemy polecenia 2010-03-19 dr B. Woźna-Szcześniak 5

Najważniejsze ikonki: Pomoc do programu Zapisanie projektu Wczytanie projektu Pamięć programu Tylko ekran graficzny Ekran graficzny i tekstowy Tylko ekran tekstowy 2010-03-19 dr B. Woźna-Szcześniak 6

Tutaj znajdują się przykładowe programiki napisane przy pomocy języka LOGO. Sprawdź ich działanie. 2010-03-19 dr B. Woźna-Szcześniak 7

Edytor obrazów Wraz z głównym programem dostępny jest także Edytor obrazów, za pomocą którego w prosty graficzny sposób zaprojektować możemy postać żółwia statycznego lub animowanego. 2010-03-19 dr B. Woźna-Szcześniak 8

GRAFICZNE PROCEDURY PIERWOTNE POLECENIE SKRÓT ZNACZENIE pż sż Pokaż żółwia. Schowaj żółwia. naprzód np Idź do przodu. wstecz ws Idź do tyłu. prawo pw Obróć się w prawo. lewo lw Obróć się w lewo. podnieś pod Podnieś pisak. opuść opu Opuść pisak. dość dość Zakończenie pracy i wyjście z programu wróć Wróć do pozycji wyjściowej, rysując linię prostą i nie zmieniając kierunku żółwia, ani właściwości pisaka. 2010-03-19 dr B. Woźna-Szcześniak 9

Lista wszystkich poleceń dla żółwia i środowiska znajduje się w menu programu: Pomoc->Lista procedur POLECENIE SKRÓT ZNACZENIE zmaż Zmaż ekran, bez ruszania żółwia. czyść cs Wyczyść ekran i ustaw żółwia w pozycji wyjściowej [0 ; 0] ścieranie ścier Zetrzyj linię, po której idziesz. Procedura odwołująca ścieranie: OPUŚĆ napoz [ ] skieruj zamaluj Kolor pisaka ukp ustala kolor pisaka Procedura przenosząca żółwia do punktu o współrzędnych [x y], będących parametrami. Ustawienie żółwia nie zmienia się. Żółw przemieszczając się, rysuje linię. Procedura ustawiająca żółwia pod podanym kątem. Kąt w stopniach, mierzony od pionu zgodnie z ruchem wskazówek zegara. Zamalowanie obszaru zamkniętego, w którym znajduje się żółw. Grubość pisaka ugp Ustala grubość pisaka 2010-03-19 dr B. Woźna-Szcześniak 10

Linijka kroków żółwia 2010-03-19 dr B. Woźna-Szcześniak 11

Okno zwrot (obrót żółwia): 2010-03-19 dr B. Woźna-Szcześniak 12

Kod kolorów i okno wyboru kolorów 2010-03-19 dr B. Woźna-Szcześniak 13

Okno grubości linii pisaka 2010-03-19 dr B. Woźna-Szcześniak 14

Zadanie1 Narysuj prostokąt, kwadrat, trójkąt. PRZYKŁAD: np 100 pw 90 np 100 pw 90 np 100 pw 90 np 100 sż np 100 pw 90 np 200 pw 90 np 100 pw 90 np 200 sż pw 45 np 100 pw 90 np 100 pw 135 np 140 sż 2010-03-19 dr B. Woźna-Szcześniak 15

POLECENIE SKRÓT ZNACZENIE ustalkolorpisak n ukp n Zmienia kolor pisaka żółwia. n należy do przedziału od 0 do 15. Kolor czarny to numer 0, a biały to 15. ustalkoltła n lub ustaltło n Zmienia kolor tła strony, którym cały obraz jest czyszczony. n należy do przedziału od 0 do 15. ustalgrubośćpisaka n ugp n Narzuca grubość pisaka. ustalwzórzam n lub ustalwzórmal n uwm n Określa wzór malowania, który będzie użyty w poleceniu zamaluj. n należy do przedziału od 0 do 6. Malowanie na gładko ma numer 0. 2010-03-19 dr B. Woźna-Szcześniak 16

Zadanie2 Narysuj prostokąt, kwadrat, trójkąt. Każda z figur ma mieć obwódkę innego koloru i inny kolor wypełnienia. PRZYKŁAD: 2010-03-19 dr B. Woźna-Szcześniak 17

Zadanie3 Narysuj prostokąt, kwadrat, trójkąt. Każda z figur ma być wypełniona innym wzorem malowania. PRZYKŁAD: 2010-03-19 dr B. Woźna-Szcześniak 18

Procedury wtórne Polecenia możemy wydawać w trybie bezpośrednim lub poprzez redagowanie procedur wtórnych. Procedurą wtórną nazywamy procedurę złożoną z procedur pierwotnych. 2010-03-19 dr B. Woźna-Szcześniak 19

Spis wszystkich procedur wtórnych, które definiujemy znajduje się tutaj. Kliknięcie na ten przycisk powoduje wyświetlenie okna z procedurami. Aby poprawić procedurę wtórną należy kliknąć jej nazwę i przycisnąć przycisk F11 2010-03-19 dr B. Woźna-Szcześniak 20

Budowa procedury wtórnej w języku LOGO KOMENIUSZ: oto nazwa_procedury {parametry} DEKLARACJA PROCEDURY... {instrukcja do wykonania}... {instrukcja do wykonania} TREŚĆ PROCEDURY... {instrukcja do wykonania} już ZAKOŃCZENIE PROCEDURY W treści procedur można umieszczać komentarze. Umieszcza się je w nawiasach { }. Są one pomijane przez komputer. Wywołanie procedury wtórnej następuje poprzez napisanie jej nazwy. 2010-03-19 dr B. Woźna-Szcześniak 21

Przykład procedury bezparametrowej: Aby otrzymać kwadrat za pomocą procedury należy wpisać: oto kwadrat np 100 lw 90 np 100 lw 90 np 100 lw 90 np 100 już 2010-03-19 dr B. Woźna-Szcześniak 22

Przykład procedury z parametrem: oto kwadrat2: a np :a pw 90 np :a pw 90 np :a pw 90 np :a już 2010-03-19 dr B. Woźna-Szcześniak 23

REALIZACJA PĘTLI - ITERACJA Wielokrotne powtórzenie wykonania listy procedur ujętych w nawiasy: POWTÓRZ ile [ lista procedur] 2010-03-19 dr B. Woźna-Szcześniak 24

Przykład procedury: Aby otrzymać kwadrat za pomocą procedury należy wpisać: oto kwadrat np 100 lw 90 np 100 lw 90 np 100 lw 90 np 100 już krócej: oto kwadrat powtórz 4 [np 200 pw 90] już 2010-03-19 dr B. Woźna-Szcześniak 25

Zadanie: Narysuj prostokąt o bokach 50 i 100 kroków Rozwiązanie: oto prostokąt np 50 pw 90 np 100 pw 90 np 50 pw 90 np 100 pw 90 już Lub oto prostokąt powtórz 2 [np 50 pw 90 np 100 pw 90] już 2010-03-19 dr B. Woźna-Szcześniak 26

Zadanie: Narysuj trójkąt równoboczny o boku 100. I sposób Oto trójkąt np 200 pw 120 np 200 pw 120 np 200 już II sposób Oto trójkąt powtórz 3 [np 200 pw 120] już 2010-03-19 dr B. Woźna-Szcześniak 27

Okienko oto kwadrat :dlugość_boku już powtórz 4 [naprzód :dlugość_boku prawo 90] oto okienko :długość_okienka powtórz 4 [kwadrat ( :długość_okienka / 4 ) prawo 90] już 2010-03-19 dr B. Woźna-Szcześniak 28

Wielobok oto wielobok :a :n już powtórz :n [np :a pw 360 / :n] 2010-03-19 dr B. Woźna-Szcześniak 29

Koło Oto koło powtórz 360 [np 2 lw 1] już 360, gdyż koło ma 360 stopni i tak co 2 kroki żółw obróci się o 1 stopień tworząc okrąg 2010-03-19 dr B. Woźna-Szcześniak 30

Krzyżyk oto Litera_L :bok naprzód (3*:bok) lewo 90 naprzód :bok lewo 90 naprzód (2*:bok) prawo 90 już oto Krzyżyk :bok powtórz 4 [Litera_L :bok] już 2010-03-19 dr B. Woźna-Szcześniak 31

Gdy tworzymy procedury wtórne wygodnie jest stworzyć przyciski je wywołujące. Służy do tego narzędzie Kliknięcie na to narzędzie powoduje wyświetlenie listy z przyciskami tworzonymi przez użytkownika. Aby stworzyć przycisk klikamy prawym przyciskiem myszy na wolny przycisk. Następnie nadajemy mu nazwę i podajemy polecenie wywołujące narysowanie żądanego obiektu. 2010-03-19 dr B. Woźna-Szcześniak 32

2010-03-19 dr B. Woźna-Szcześniak 33

Rekurencja Rekurencyjny - mat. dający się wyrazić za pomocą wielkości uprzednio znanych; wzór rekurencyjny - wzór pozwalający obliczyć wyrazy ciągu na podstawie jednego lub kilku wyrazów poprzedzających. <ang. recurrent, fr. recurrent, z łac. recurrens 'powracający'> [Słownik Wyrazów Obcych, PWN, 1996] Algorytm rekurencyjny w czasie wykonywania odwołuje się do samego siebie. Aby algorytm rekurencyjny mógł się zatrzymać, jego kolejne odwołania do siebie samego muszą zależeć od pewnego warunku, który zmienia się z każdym kolejnym odwołaniem. Niepożądana cecha definicji rekurencyjnych: aby wyznaczyć n-tą wartość trzeba najpierw wyznaczyć wszystkie wcześniejsze wartości 2010-03-19 dr B. Woźna-Szcześniak 34

Algorytmy rekurencyjne a algorytmy iteracyjne Algorytm rekurencyjny: START Algorytm iteracyjny: START Krok_1 Krok_2 Krok_3 Krok_4 Krok_5 Krok_1 Krok_2 Krok_3 Krok_4 Krok_5 STOP STOP 2010-03-19 dr B. Woźna-Szcześniak 35

Typowy przykład - obliczania n! (silnia) Algorytm rekurencyjny: Algorytm sekwencyjny: n!=n*(n-1)! n!=1*2* *n START = 5 * 4! = 4 * 3! 3! = 3 3 * * 2! 2! = 2 * 1! 1! = 1 1 STOP START = 1 = 1* 2 = 2 * 3 = 6 * 4 = 24 * 5 STOP 2010-03-19 dr B. Woźna-Szcześniak 36

Rekurencja - definicja Definicja rekurencyjna składa się z dwóch części. W pierwszej, zwanej podstawową lub warunkiem początkowym są wyliczone elementy podstawowe, stanowiące części składowe wszystkich pozostałych elementów zbioru. W drugiej części, zwanej krokiem indukcyjnym, są podane reguły umożliwiające konstruowanie nowych obiektów z elementów podstawowych lub obiektów zbudowanych wcześniej. Reguły te można stosować wielokrotnie, tworząc nowe obiekty. 2010-03-19 dr B. Woźna-Szcześniak 37

Ciąg Fibonacciego def. rekurencyjna Jak obliczać ciąg Fibonacciego?: F(n) = n jeśli n <2 F(n) = F(n-2)+F(n-1) jeśli n >= 2 0, 1, 1, 2, 3, 5, 8, 13, 21,... 2010-03-19 dr B. Woźna-Szcześniak 38

Efektywność rekurencyjnego wykonania ciągu Fibonacciego (cd.) Rekurencyjna implementacja ciągu Fibonacciego jest niezwykle nieefektywna. Stos programu nie jest praktycznie w stanie zrealizować tego algorytmu już dla liczb większych od 9. Oznacza to, że program ma zbyt dużą złożoność pamięciową. Przykład: drzewo wywołań dla F(6): F(6) F(4) F(5) F(2) F(3) F(3) F(4) F(0) F(1) F(1) F(2) F(1) F(2) F(2) F(3) 0 1 1 F(0) F(1) F(0) F(1) F(0) F(1) F(1) F(2) 1 0 1 0 1 0 1 1 F(0) F(1) 2010-03-19 dr B. Woźna-Szcześniak 039 1

Efektywność rekurencyjnego wykonania funkcji Fibonacciego n Liczba dodawań Liczba wywołań 6 12 25 10 88 177 15 986 1 973 20 10 945 21 891 25 121 392 242 785 30 1 346 268 2 692 537 2010-03-19 dr B. Woźna-Szcześniak 40

Iteracyjne wykonanie ciągu Fibonacciego Bardziej efektywna jest iteracyjna implementacja funkcji Fibonacciego. Nie przepełniamy wtedy stosu programu i wykonujemy mniejszą liczbę przypisań wartości niż w implementacji rekurencyjnej. 2010-03-19 dr B. Woźna-Szcześniak 41

Algorytm iteracyjnego wyznaczania liczb Fibonacciego - pseudokod Jesli n = 0 lub 1, przyjmij FIB=1, wydrukuj FIB i zakoncz. Przyjmij pomocnicze zmienne FIB1=1 oraz FIB2=1 Wykonaj n 2 razy nastepujace instrukcje: FIB = FIB1 + FIB2; {FIB jest wartoscia kolejnej liczby Fibonacciego} FIB2 = FIB1; FIB1 = FIB; Wypisz FIB Jak obliczać ciąg Fibonacciego?: F(n) = n jeśli n <2 F(n) = F(n-2)+F(n-1) jeśli n >= 2 2010-03-19 dr B. Woźna-Szcześniak 42

Efektywność iteracyjnego wykonania rekurencyjnej funkcji Fibonacciego n 432010-03-19dr B. Woźna-Szcześniak Liczba przypisań dla algorytmu Iteracyjnego Liczba przypisań (wywołań) dla algorytmu rekurencyjnego 6 15 25 10 27 177 15 42 1 973 20 57 21 891 25 72 242 785 30 87 2 692 537

Przykład rekurencji bez końca StadDoWiecznosci(n) { jeśli (n=1) zwróć 1; w przeciwnym przypadku { jeśli ((n modulo 2)=0) // czy n jest parzyste? zwróć StadDoWiecznosci(n-2)*n; w przeciwnym przypadku zwróć StadDoWiecznosci(n-1)*n; } } 2010-03-19 dr B. Woźna-Szcześniak 44

Przykłady rekurencji - fraktale Fraktalem jest wszystko... Benoit Mandelbrot 2010-03-19 dr B. Woźna-Szcześniak 45

Fraktale - historia Najstarsze fraktale wymyślili matematycy na początku XX-wieku, w wyniku zmagań z definicją wymiaru i krzywej. Najwybitniejszym twórcą fraktali jest amerykański matematyk i informatyk polskiego pochodzenia Benoit Mandelbrot. Właśnie on stwierdził na Międzynarodowym Kongresie Matematyków w Warszawie w roku 1983, że jest jeszcze za wcześnie na formułowanie ścisłej definicji fraktala ponieważ nie znamy dostatecznie głęboko istoty tego pojęcia. Te dziwne i ciekawe zarazem zbiory dały początek nowej geometrii zwanej geometrią fraktalną, która pozwala modelować wiele obiektów i zjawisk występujących w przyrodzie i nie tylko... 46 2010-03-19 dr B. Woźna-Szcześniak

Czym jest fraktal? Fraktal jest figurą geometryczną o złożonej strukturze, nie będąca krzywą, powierzchnią ani bryłą w rozumieniu klasycznej matematyki; charakteryzuje ją ułamkowy wymiar (stąd nazwa fraktal -ang. 'fraction' ułamek, łac. 'fractus' złamany). Fraktale są bardzo skomplikowane, toteż dopiero komputery umożliwiły ich głębsze poznanie. Wielu badaczy twierdzi, że geometria fraktali jest geometrią przyrody. 2010-03-19 dr B. Woźna-Szcześniak 47

Przypadkowe odkrycie Nieświadome odkrycie fraktali wiąże się z badaniem długości brzegu wyspy Wielkiej Brytanii. Długość była tym większa, im bardziej dokładną mapę rozważano. Nie zauważono, aby wzrost miał być ograniczony przez jakąś liczbę. Okazało się, że brzeg wyspy jest nieskończenie bogaty w szczegóły, co sugerowałoby jego nieskończoną długość. 2010-03-19 dr B. Woźna-Szcześniak 48

Długość brzegu Wielkiej Brytani 2010-03-19 dr B. Woźna-Szcześniak 49

Fraktale w przyrodzie Materia zbudowana jest z atomów. Zgodnie z naszą aktualną wiedzą nie można mówić o obiektach zawierających nieskończoną liczbę szczegółów. Dlatego też fraktale występujące w przyrodzie wykazują cechę samopodobieństwa tylko na kilku poziomach. 2010-03-19 dr B. Woźna-Szcześniak 50

Cechy fraktali Fraktale mają cechę samopodobieństwa Nie są określone wzorem matematycznym, tylko zależnością rekurencyjną. Są obiektami, których wymiar nie jest liczbą całkowitą. Każdy fraktal można w nieskończoność przybliżać. 2010-03-19 dr B. Woźna-Szcześniak 51

Kalafior Brokuł 2010-03-19 dr B. Woźna-Szcześniak 52

Fraktale: Drzewo 2010-03-19 dr B. Woźna-Szcześniak 53

2010-03-19 dr B. Woźna-Szcześniak 54

2010-03-19 dr B. Woźna-Szcześniak 55

2010-03-19 dr B. Woźna-Szcześniak 56

2010-03-19 dr B. Woźna-Szcześniak 57

2010-03-19 dr B. Woźna-Szcześniak 58

2010-03-19 dr B. Woźna-Szcześniak 59

2010-03-19 dr B. Woźna-Szcześniak 60

Fraktal: Paproć 2010-03-19 dr B. Woźna-Szcześniak 61

Pierwsze fraktale Pierwsze fraktale powstały na przełomie XIX i XX wieku. Ich twórcami byli matematycy: Georg Cantor, David Hilbert, Helge von Koch oraz Wacław Sierpiński. 2010-03-19 dr B. Woźna-Szcześniak 62

Zbiór Cantora W roku 1883 Georg Cantor zaproponował prostą konstrukcję, w wyniku której otrzymuje się zbiór nazwany jego imieniem. 1 2 3 4 5 6 2010-03-19 dr B. Woźna-Szcześniak 63

Zbiór Cantora Odcinek [0,1] dzielimy na trzy równe części i usuwamy środkową. Z pozostałymi dwoma odcinkami postępujemy analogicznie. W konsekwencji takiego postępowania w granicy nieskończonej ilości kroków powstaje zbiór punktów Cantora. 2010-03-19 dr B. Woźna-Szcześniak 64

Krzywa Kocha W 1904 roku szwedzki matematyk Helge von Koch zaproponował konstrukcję nazywaną potocznie płatkiem śniegu. 2010-03-19 dr B. Woźna-Szcześniak 65

2010-03-19 dr B. Woźna-Szcześniak 66

2010-03-19 dr B. Woźna-Szcześniak 67

2010-03-19 dr B. Woźna-Szcześniak 68

2010-03-19 dr B. Woźna-Szcześniak 69

2010-03-19 dr B. Woźna-Szcześniak 70

2010-03-19 dr B. Woźna-Szcześniak 71

2010-03-19 dr B. Woźna-Szcześniak 72

Wacław Sierpiński W 1916 roku Wacław Sierpiński rozszerzył zbiór Cantora na dwa wymiary. Kwadrat jednostkowy dzielimy na dziewięć i wyrzucamy środkowy. Postępujemy tak z każdym nowo powstałym kwadratem. Powstały fraktal nazywany jest często dywanem Sierpińskiego. Analogicznie można postąpił z trójkątem, którego boki dzielimy na dwie części i powstałe punkty łączymy co doprowadzi do powstania kolejnego trójkąta, który usuwamy. Z pozostałymi trzema postępujemy podobnie, itd. 2010-03-19 dr B. Woźna-Szcześniak 73

Dywan Sierpińskiego 2010-03-19 dr B. Woźna-Szcześniak 74

2010-03-19 dr B. Woźna-Szcześniak 75

2010-03-19 dr B. Woźna-Szcześniak 76

2010-03-19 dr B. Woźna-Szcześniak 77

2010-03-19 dr B. Woźna-Szcześniak 78

2010-03-19 dr B. Woźna-Szcześniak 79

2010-03-19 dr B. Woźna-Szcześniak 80

Trójkąt Sierpińskiego 2010-03-19 dr B. Woźna-Szcześniak 81

2010-03-19 dr B. Woźna-Szcześniak 82

Tworzenie własnych fraktali Narysuj trójkąt równoboczny. Następnie na każdym boku zbuduj trójkąt równoboczny o długości boku dwa razy mniejszej. 2010-03-19 dr B. Woźna-Szcześniak 83

Tworzenie własnych fraktali 2010-03-19 dr B. Woźna-Szcześniak 84

Tworzenie własnych fraktali Narysuj kwadrat. Następnie na każdym boku zbuduj kwadrat o długości boku dwa razy mniejszej. 2010-03-19 dr B. Woźna-Szcześniak 85

Bibliografia: Peitgen, Jurgens, Saute : Granice Chaosu: Fraktale Słownik encyklopedyczny Jacek Kudrewicz: Fraktale i Chaos Michał Tempczyk: Fraktale czyli poszarpana geometria czasopismo Matematyka nr 4/95 i Matematyka nr 6/96 Grafika w internecie 2010-03-19 dr B. Woźna-Szcześniak 86

2010-03-19 dr B. Woźna-Szcześniak 87

Instrukcje warunkowe jeśli (wartość logiczna) [lista poleceń gdy prawda] [lista poleceń gdy fausz] Jeśli dana jest wartość logiczna prawda, wykonywana jest dana lista poleceń. W przeciwnym przypadku, nie robi się nic i koniec polecenie nie ma żadnego skutku. Lista poleceń ma postać: Lista [polecenie1 polecenie2 ]. W szczególności liczba poleceń może być równa 0 (Lista pusta jest też listą poleceń). 2010-03-19 dr B. Woźna-Szcześniak 88

Spirala oto spirala :bok jeśli :bok < 10 [stop] np :bok pw 90 spirala :bok - 2 już spirala 100 2010-03-19 dr B. Woźna-Szcześniak 89

Spirala1 oto spirala1 :dlugość_boku :zwiększenie_boku :maksymalna_dlugość_boku :kąt_zmiany jeśli (:dlugość_boku > :maksymalna_dlugość_boku) [stop] np :dlugość_boku lw :kąt_zmiany spirala1 :dlugość_boku + :zwiększenie_boku zwiększenie_boku :maksymalna_dlugość_boku :kąt_zmiany już spirala 10 10 200 90 2010-03-19 dr B. Woźna-Szcześniak 90

Spirala 2 oto spirala2 :dlugość_boku :zwiększenie_boku :maksymalna_dlugość_boku :kąt_zmiany jeśli (:dlugość_boku > :maksymalna_dlugość_boku) [stop] powtórz 2 [np :dlugość_boku lw :kąt_zmiany] spirala2 :dlugość_boku + :zwiększenie_boku :zwiększenie_boku :maksymalna_dlugość_boku :kąt_zmiany już spirala 10 10 200 90 2010-03-19 dr B. Woźna-Szcześniak 91

Spirala 3 oto spirala3 :bok :kąt jeśli :bok < 10 [stop] np :bok pw :kąt spirala3 :bok - 2 :kąt już spirala3 200 122 spirala3 200 135 2010-03-19 dr B. Woźna-Szcześniak 92

Drzewo oto drzewo :wiek :pien jeśli :wiek = 0 [np :pien pw 180 np :pien stop] np :pien lw 45 drzewo :wiek-1 :pien * 0.6 lw 90 drzewo :wiek-1 :pien * 0.6 lw 45 np :pien już drzewo 6, 90 2010-03-19 dr B. Woźna-Szcześniak 93

Kwadraty Oto kwadraty :a jeśli : a>100 [stop][ ] powtórz 4 [np :a pw 90] kwadraty :a+5 już kwadraty 10 2010-03-19 dr B. Woźna-Szcześniak 94

Fragment płatku Kocha oto koch :stopień :długość jeśli :stopień = 0 [np :długość stop] koch :stopień - 1 :długość / 3 pw 60 koch :stopień - 1 :długość / 3 lw 120 koch :stopień - 1 :długość / 3 pw 60 koch :stopień - 1 :długość / 3 już koch 4 200 2010-03-19 dr B. Woźna-Szcześniak 95

Zadanie do samodzielnego wykonania Narysuj dom podobny do danego: 2010-03-19 dr B. Woźna-Szcześniak 96

Zadanie Napisz procedury wtórne rysujące różnokolorowe figury. Stwórz przyciski wywołujące ich narysowanie. Ponadto stwórz przycisk czyszczący ekran. Pamiętaj, że z nazwy przycisku powinniśmy się domyślać co zostanie narysowane. 2010-03-19 dr B. Woźna-Szcześniak 97

Zadanie Napisz procedury wtórne rysujące elementy widoczku: domek, drzewko, płotek, (Użyj różnych kolorów i wypełnień.) Stwórz przyciski wywołujące narysowanie poszczególnych elementów. Tworząc procedury zwróć uwagę na to, aby każdy element był rysowany w innym miejscu ekranu. 2010-03-19 dr B. Woźna-Szcześniak 98

Zadania Zdefiniuj procedurę rysującą: koło pokolorowane na czerwono (czerwień ma numer 4) kwadrat pokolorowany na zielono (zieleń ma numer 2) kwadrat pokratkowany na czarno (wzór kratki odpowiada numerowi 2 lub 3) trójkąt pokolorowany na niebiesko (niebieski ma numer 1) trójkąt pokratkowany na czerwono sześciokąt pokolorowany na żółto (żółty ma numer 14) sześciokąt pokratkowany na zielono prostokąt pokolorowany na szaro. (szary ma numer 7) Zdefiniuj przyciski wywołujące te procedury. 2010-03-19 dr B. Woźna-Szcześniak 99

Zadanie Napisz procedurę rysującą pawie oko. Pokoloruj kilka oczek 2010-03-19 dr B. Woźna-Szcześniak 100

PROCEDURY WTÓRNE WZAJEMNIE ZALEŻNE. Jeżeli jedna procedura wtórna stanowi część treści innej procedury wtórnej, to mamy do czynienia z procedurami wtórnymi wzajemnie zależnymi. 2010-03-19 dr B. Woźna-Szcześniak 101

Serweta oto kwadrat powtórz 4 [ np 40 pw 90] już oto serweta powtórz 36 [kwadrat pw 10] już 2010-03-19 dr B. Woźna-Szcześniak 102

Coś ładnego oto kolo powtórz 180 [ np 2 pw 2 ] już oto motyw powtórz 36 [kolo pw 10] już 2010-03-19 dr B. Woźna-Szcześniak 103

Płatek Kocha oto gwiazdka :stopień :długość powtórz 3 [koch :stopień :długość lw 120] już gwiazdka 4 200 2010-03-19 dr B. Woźna-Szcześniak 104

Ciastko oto kwadrat :długość_boku powtórz 4 [np :długość_boku pw 90] już oto ciastko :długość_boku :zmniejszenie_boku jeśli ( :długość_boku < :zmniejszenie_boku ) [stop] skok_naprzód_prawo ( - :długość_boku / 2 ) ( - :długość_boku / 2 ) kwadrat :długość_boku skok_naprzód_prawo ( :długość_boku / 2 ) ( :długość_boku / 2 ) ciastko ( :długość_boku - :zmniejszenie_boku ) :zmniejszenie_boku już oto skok :odległość podnieś np :odległość opuść już oto skok_naprzód_prawo :długość_naprzód :długość_prawo skok :długość_naprzód pw 90 skok :długość_prawo pw -90 już 2010-03-19 dr B. Woźna-Szcześniak 105

Coś ładnego oto sześć powtórz 6 [ np 30 lw 60] już oto coś powtórz 6 [sześć lw 60] już 2010-03-19 dr B. Woźna-Szcześniak 106

oto gwiazda powtórz 9 [ np 50 pw 160 ] już oto gwiazdki powtórz 4 [gwiazda pw 90] już 2010-03-19 dr B. Woźna-Szcześniak 107

Trójkąt sierpińskiego sierpinski 4 250 oto troj :a powtórz 3 [np :a pw 120] już oto sierp :n :a jeśli :n = 0 [troj :a stop] troj :a sierp :n - 1 :a / 2 np :a / 2 sierp :n - 1 :a / 2 pw 60 np :a / 2 pw 60 sierp :n - 1 :a / 2 lw 60 ws :a / 2 lw 60 ws :a / 2 już oto sierpinski :n :a cs pw 30 sierp :n :a już 2010-03-19 dr B. Woźna-Szcześniak 108

Zadanie: Wykonaj procedurę wtórną wzajemnie zależną rysującą poniższy płatek: 2010-03-19 dr B. Woźna-Szcześniak 109

Kolejne etapy pracy: 1) Napisz procedurę o nazwie igły 2) Napisz procedurę o nazwie gałązka1 2010-03-19 dr B. Woźna-Szcześniak 110

3) Napisz procedurę o nazwie gwiazda1 4) Napisz procedurę o nazwie gałązka2 2010-03-19 dr B. Woźna-Szcześniak 111

5) Napisz procedurę o nazwie gwiazda2 6) Napisz procedurę o nazwie gwiazda, która będzie składała się z procedur gwiazda1 i gwiazda2 2010-03-19 dr B. Woźna-Szcześniak 112