Wykład 5 Kurs LOGO

Download Report

Transcript Wykład 5 Kurs LOGO

Metodyka nauczania
Wykład 5 Informatyki
Kurs LOGO
1
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 (?)
2
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
3
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.
4
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
5
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!
6
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.
7
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
8
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ą)
9
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)
10
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
11
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)
12
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)
13
Operatory
• Dwuargumentowe (muszą być oddzielone
odstępem od operandów, notacja infiksowa)
– Arytmetyczne
• + (dodawanie), – (odejmowanie)
• * (mnożenie), / (dzielenie)
– Porównania
• =, <, >
• =<, >
14
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
15
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)
16
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)
17
Procedury wbudowane
Polska
Skrót
Angielska
Skrót Param. Opis
naprzód
np
forward
fd
x
Do przodu o x kroków
wstecz
ws
back
bk
x
Do tyłu o x kroków
ustalpoz napoz setpos
---
[xy]
Przesuń się do punktu (x,y)
lewo
lw
left
lt
x
Przekręć się w lewo o x stopni
prawo
pw
right
rt
x
Przekręć się w prawo o x
stopni
skieruj
skier
setheading ---
x
Przekręć się o x stopni od
kierunku północ
18
Procedury wbudowane
Polska
Skrót Angielska
Skrót
Opis
wróć
---
home
---
Żółw wraca na swoje miejsce
początkowe (0,0) skierowanie w górę
zmaż
---
clear
---
Usuwa wszystko z rysunku, żółw bez
zmian
czyść
cs
clearscreen
cs
Wróć+Zmaż (Home+Clear)
podnieś
pod
penup
pu
Żółw przestaje zostawiać ślad
opuść
opu
pendown
pd
Żółw znowu zostawia ślad
ścieranie ścier penerase
pe
Pisak staje się gumką
ppt
Pisak znowu jest pisakiem
penpaint
19
Procedury wbudowane
Polska
Skrót Angielska
Skrót Opis
schowajmnie
sż
hideturtle
ht
pokażmnie
pż
showturtle st
Uwidocznia żółwia
oknożółwia
---
window
---
Płaszczyzna nieskończona
ustawstylzakresu
”płot
---
fence
---
Płaszczyzna ograniczona
sklej
---
wrap
---
Powierzchnia torusa
widoczny?
---
szownp
---
Funkcja podająca prawda
gdy żółw jest widoczny i
fałsz gdy go nie widać
Chowa żółwia
20
Procedury wbudowane
Polska
Angielska
Skrót Param. Opis
kierunek ---
heading
---
azymut
towards
---
[xy]
Funkcja: kąt o jaki trzeba
obrócić żółwia w prawo aby
był skierowany na punkt (x,y)
distance
---
[xy]
Funkcja: liczba kroków żółwia
aby osiągnąć punkt (x,y)
pos
---
poz
Skrót
Funkcja: liczba stopni o jaką
jest przekręcony żółw w prawo
od osi OY (od kierunku
północ)
Funkcja: lista zawierająca
współrzędne aktualnego
położenia żółwia
21
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
22
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ą true lub false
(prawda fałsz)
23
Procedury i funkcje
• Definiowanie procedury lub funkcji:
– to nazwa parametry formalne 
treść procedury/funkcji
end
– oto nazwa parametry formalne 
treść procedury/funkcji
już
24
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
25
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
• lokalne ”nazwa
( local ”nazwa1 ”nazwa2 ...)
( lokalne ”nazwa1 ”nazwa2... )
26
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
27
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 ...
28
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)
29
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
– readchar
rc
(czytajznak
cz)
• Czyta jeden znak z klawiatury nie czeka na Enter
30
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
31
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
32
Obsługa list
Polska
Skrót
Angielska
Skrót Param. Opis
pierw
---
first
---
lista
Funkcja: pierwszy element z
listy
ost
---
last
---
lista
Funkcja: ostatni element z listy
bezpierw bp
butfirst
bf
lista
Funkcja: lista jak w parametrze
ale bez pierwszego elementu
bezost
bo
butlast
bl
lista
Funkcja: lista jak w parametrze
ale bez ostatniego elementu
nap
---
firstput
fp
X lista
Funkcja: lista jak w parametrze
ale z elementem x na początku
nak
---
lastput
lp
X lista
Funkcja: lista jak w parametrze
ale z elementem x na końcu
puste?
---
emptyp
---
lista
Predykat: prawda jeżeli lista
jest pusta
33