330 likes | 540 Views
Metodyka nauczania Informatyki. Wykład 5 Kurs LOGO. Co to jest LOGO?. Środowisko do nauki programowania Środowisko do nauki za pomocą komputera Środowisko do poznania komputera Środowisko do eksperymentowania za pomocą komputera Środowisko edukacyjnej zabawy z komputerem.
E N D
Metodyka nauczania Informatyki Wykład 5 Kurs LOGO
Co to jest LOGO? • Środowisko do nauki programowania • Środowisko do nauki za pomocą komputera • Środowisko do poznania komputera • Środowisko do eksperymentowania za pomocą komputera • Środowisko edukacyjnej zabawy z komputerem To wszystko dla dzieci (?)
Historia LOGO • Powstał w MIT 1967 (pierwsza wersja) • Za twórcę uznaje się Seymoura Paperta • Miał być narzędziem do uczenia dzieci matematyki za pomocą komputera Seymour Papert
Seymour Papert • Podstawowe idee Paperta: • Relacja pomiędzy dzieckiem i komputerem powinna być taka, aby dziecku ułatwić programowanie komputera, nie zaś by komputer programował zachowanie i postępowanie dziecka. • Wszystkie dzieci w odpowiednich warunkach i w odpowiednim środowisku mogą nauczyć się programować. • Dzieci ucząc się stosowania komputerów mogą zmienić swój sposób uczenia się wszystkiego innego.
Zasada „kół zębatych” • "Wszystko jest łatwe, jeżeli potrafisz to sprowadzić do swego zbioru modeli. Jeżeli nie możesz tego zrobić, wszystko może okazać się boleśnie trudne". • Proces uczenia się jest zależny od środowiska w którym dziecko się znajduje • Np. dzieci mieszkające we Francji bardzo łatwo uczą się języka francuskiego w przeciwieństwie do dzieci w innych krajach. Seymour Papert, Burze mózgów. Dzieci i komputery Wydanie I (w języku angielskim) 1980, Wydanie I (w języku polskim) 1996
LOGO • Proceduralny/funkcyjny język programowania (nie ma programu jako osobnego bytu) • Interakcyjny, domyślny interfejs graficzny • Własne procedury i funkcje zachowują się tak jak procedury i funkcje wbudowane • Oparty na potocznym języku narodowym!
LOGO - implementacje • LOGOMOCJA • Polska wersja LOGOMOCJA (rozszerzenie słowackiej wersji Logo Komeniusz o „obiekty”): • obiekty (żółw jest obiektem) • wiele żółwi • edytor postaci • http://logo.oeiizk.waw.pl • Licencja płatna ale niedroga.
LOGO - implementacje • MSW Logo • Wersja angielska (duńska, niemiecka, …) • geometria 3D • nie ma wersji polskiej • bogata literatura • http://www.softronix.com • Program (i duża część literatury) bezpłatny
LOGO podstawy • Logo – to po grecku „słowo” • Podstawową strukturą LOGO są słowa (napisy) oddzielane odstępami • Słowa mogą być: • Liczbami (gdy są napisem interpretowalnym jako liczba) • Procedurami lub funkcjami (wbudowanymi lub definiowanymi przez użytkownika) • Zmiennymi (mogą mieć wartość) • Napisami (mogą być wartością)
Słowa - przykłady • Liczba • 475 5574.544 –12345.854E10 • Procedura/funkcja • naprzód 50 (forward 50) • Zmienna • :bok (kontekst: naprzód :dalej) • Słowo • ”napis (kontekst: pokaż ”napis)
Procedury • Każde słowo, które nie jest liczbą i nie jest poprzedzone operatorem jednoargumentowym słowa (”) lub wartości (:) jest procedurą • Procedura może otrzymać parametry (kojarzone według ONP – wywołania bez nawiasów) • Procedura może zwracać wartość (jak funkcja) • Gdy argumentem jest procedura to zostaje ona wykonana w czasie kojarzenia parametrów
Kojarzenie parametrów AA procedura z 3 parametrami CC i DD procedury z 2 parametrami AA BB CC DD EE FF GG HH Jest interpretowane tak: AA(BB,CC(DD(EE,FF),GG),HH)
Struktury danych • Liczby (słowa mające postać liczb) • Napisy (słowa poprzedzone znakiem ”) • Listy – ciąg słów lub list oddzielonych odstępami i ograniczonych nawiasami kwadratowymi • [ AA BB CC ] • [ naprzód 50 procedura aa bb [ cc dd ] ] • [ ] (lista pusta)
Operatory • Dwuargumentowe (muszą być oddzielone odstępem od operandów, notacja infiksowa) • Arytmetyczne • + (dodawanie), – (odejmowanie) • * (mnożenie), / (dzielenie) • Porównania • =, <, > • =<, >
Nawiasy • Kwadratowe – listy • Klamrowe – komentarz • Okrągłe – grupowanie argumentów dla procedur mogących przyjmować różną liczbę argumentów • suma 10 20 30 – daje 30 30 (tylko dwa argumenty) • ( suma 10 20 30 ) – daje 60 (wszystkie trzy liczby są argumentami procedury suma) • Nawiasy muszą być oddzielone od innych elementów odstępami
Grafika żółwia • Płaszczyzna kartezjańska z ukrytym układem współrzędnych – punkt (0,0) na środku ekranu • „Żółw” – to pisak, którym można sterować i który zostawia ślad na płaszczyźnie (albo nie – zależnie od ustawienia) • Płaszczyzna może być • Nieograniczona (na ekranie tylko fragment – żółw wychodzi za ekran i znika z pola widzenia ale robi co mu się każe) • Ograniczona (brzegi ekranu są nieprzekraczalne dla żółwia – żółw nie wykonuje poleceń wyjścia poza płaszczyznę ekranu) • Powierzchnią torusa (żółw wychodzi z jednej strony i pojawia się z drugiej strony)
Sterowanie żółwiem • Względne • Przesuń się do przodu lub do tyłu o pewną liczbę jednostek od pozycji na której jesteś • Przekręć się w lewo lub prawo o podany kąt od kierunku w który jesteś zwrócony • Bezwzględne • Przejdź do punktu o podanych współrzędnych • Skieruj się o dany kąt od kierunku północ (do góry ekranu)
Sterowanie - pętle • Pętla „FOR” • repeat :ile [ co ] powtórz :ile [ co ] • Powtarza polecenia zawarte w liście :ile razy • :ile może być funkcją podającą liczbę całkowitą • W liście [ co ] można wykorzystywać funkcję repcount (numpow) podającą numer kolejny danego powtórzenia
Sterowanie - warunki • Instrukcja warunkowa • if warunek [ co gdy tak ] • ifelse warunek [ co gdy tak ] [ co gdy nie ] • jeśli warunek [ co gdy tak ] • jeżeli warunek [ co gdy tak ] [ co gdy nie ] • Warunek musi dawać wartość logicznątruelubfalse (prawda fałsz)
Procedury i funkcje • Definiowanie procedury lub funkcji: • to nazwa parametry formalne treść procedury/funkcji end • oto nazwa parametry formalne treść procedury/funkcji już
Procedury i funkcje (cd) • Parametry procedury/funkcji są zawsze przekazywane przez wartość • Funkcja musi zawierać w treści procedurę • output wynik której parametrem jest to co ma zwrócić funkcja Procedura ta kończy działanie funkcji • Procedura może zawierać procedurę • stop stop która zatrzymuje bieżącą procedurę i wraca do miejsca jej wywołania
Zmienne lokalne procedury • Wszystkie zmienne z zasady są globalne, ale można wewnątrz procedury zadeklarować zmienne lokalne, które znikną po zakończeniu procedury • local ”nazwa ( local ”nazwa1 ”nazwa2 ...) • lokalne ”nazwa ( lokalne ”nazwa1 ”nazwa2... )
Zmienne • Nadawanie wartości zmiennym • make ”nazwa wartość • przypisz ”nazwa wartość • Gdy zmienna nie istnieje to jest tworzona. • Tak utworzone zmienne są globalne bez względu na miejsce utworzenia • Gdy zmienna jest to jej wartość zostaje zmieniona • Zmienna nie ma ustalonego typu – przyjmuje każdy rodzaj danych aktualnie podstawiany
Rekurencja • Wszchobecna! • Zamiast pętli „WHILE” – rekurencja • Zamiast zmiennych pomocniczych – rekurencja • Zamiast powtarzania - rekurencja • Gdy nie bardzo wiadomo jak rozwiązać problem – rekurencja • Zawsze najpierw rekurencja ...
Dynamiczne procedury • Procedury mogą same definiować procedury/funkcje • define ”nazwa [ [ parametry ] [ treść ] ] • określ ”nazwa [ [ parametry ] [ treść ] ] • Jeżeli już taka procedura lub zmienna istnieje to wystąpi błąd (są predykaty do sprawdzenia, można redefiniować procedury, nawet wbudowane, można odczytać treść procedury)
Komunikacja z użytkownikiem • Pobieranie danych • readlist rl (czytajlistę cl) • Czyta cały wiersz z klawiatury i przekazuje go jako listę (w nawiasach kwadratowych). Czeka na Enter • readcharrc (czytajznakcz) • Czyta jeden znak z klawiatury nie czeka na Enter
Komunikacja z użytkownikiem • Wypisywanie na ekranie tekstowym: • print (pisz) • Wypisuje dane jako linię tekstu pomijając nawiasy oznaczające listy • show (pokaż) • Pokazuje parametry takie jakie są – wraz z nawiasami oznaczającymi listy
Organizowanie danych • word (słowo) • Wszystkie dane łączy tworząc z nich jedno słowo • sentence (zdanie) • Tworzy listę zawierającą wszystkie dane ale pomija nawiasy oznaczające listy • list (lista) • Tworzy listę zawierającą wszystkie dane, elementami tej listy mogą być listy będące danymi