Úvodní stránka | Tato stránka v originále

Logo programovací jazyk

Logo je počítač programovací jazyk nejprve se vyvíjel v pozdní šedesátá léta, týmem u BBN vedl o Seymour Papert, Wallace Feurzeig, a Daniel Bobrow. Logo bylo původně o obsluhujících slovech a větách, proto jeho jméno, odvozený z Řeka formulovat “loga” znamenat “slovo”. Papert, profesor na MIT a autor Mindstorms: Děti, počítače, a silné nápady, později sčítal grafika želvy pro které logo je nyní nejslavnější.

Papert používal LISP ale měnil syntax tak to je hodně snadnější ke čtení. Jeden mohl říkat, že logo je Lisp bez parentheses. Dnes, to je známé hlavně pro jeho “grafiku želvy”, ale to má významný seznam zabývat se zařízeními, zacházení souboru a já/O zařízení a moci být používán učit většinu pojetí vědy o počítačích, jak Brian Harvey oddělá jeho “informatika styl loga” trilogie. Stejně to může být používáno připravit microworlds pro studenty vyšetřovat,

Tabulka s obsahem
1 realizace loga
2 programování loga
3 jazyk
4 srovnání loga a Pascal
5 bibliografie
6 externích spojení

Realizace loga

Tam být u konce 130 realizací loga, každý který má jeho vlastní síly. Populární linuxová implementace je UCBLogo. MSWLogo, jeho freewarový Windows derivát, je obyčejně použit ve školách v Spojeném království. Comenius logo je dostupné v holandský, německé, české etc. a je hodnota rozvažování.

Moderní derivát loga je variace, která dovolí tisíce “želv”, každé pohybování nezávisle. Tam jsou dvě populární implementace: MIT StarLogo a NetLogo. Tyto deriváty počítají se zkoumáním naléhavých jevů a jdou s mnoha experimenty v sociálních studiích, biologie, fyzika, a mnoho jiných věd. Ačkoli fokus je na vzájemných ovlivňováních velkého množství nezávislých agentů, tyto variace ještě zachytí originální chuť loga.

Programování loga

Nápad je že želva s perem připoutaným k tomu může být instruována dělat jednoduché věci jako pohyb předat 100 prostorů nebo se obrátit. Od těchto stavebních kamenů vy můžete postavit více komplexních tvarů jako čtverce, trojúhelníky, krouží -- používat tyto k domům remízy nebo plachetnicím.

Želva se pohybuje se příkazy, které jsou příbuzné s jeho vlastní pozicí, “odešel 90” mínil točit odešel 90 mír. Student mohl rozumět (a předpovídat a uvažovat o) pohyb želvy tím, že si představí co ona by dělala jestliže ona byla želva. Papert volal tento “syntonic těla” úvaha.

Myšlenka na grafiku želvy je také užitečná pro příklad v Lindenmayer systému pro fraktály buzení.

Programování želvy

Pokračování jsou příklady kódu želvy. Zatímco zdánlivě velmi jednoduchý, tituly mohou být náchylné ke skupinám instrukcí, nezbytně vytvářet knihovny více komplexních příkazů. V praxi krátké formy jsou používány “odešel 90” je psán “LT 90”
Klíčová slova jsou obvyklé zapsané velké písmo pro začátečníky, ale více pokročilé texty používají malá písmena.

Příklad 1: čtverec

Přední 100 opustil 90 útočníka 100 opustil 90 útočníka 100 opustil 90 útočníka 100

Toto by porovnalo čtverec se stranami 100 jednotek dlouho (ale želva ještě musí otočit LT 90 být ve výchozím postavení).

Příklad 2: trojúhelník

Příkazy mohou být psány na jednom příjmu, nebo více
Přední 100 spravit 120 útočníka 100 spravit 120 útočníka 100


By nakreslil trojúhelník.

Příklad 3: tečkovaná linka

Pero želvy mohlo být zvedl a ztišil; kreslení tečkovaná linka byla základní. V tomto příkladě my budeme používat krátkou formu pro Vpřed, který je FD. Když učí toto říkat “FD prostor 10” je uloží alot frustrace. Něco psaný po; (středník) je ignorován tak moci být používán jako poznámka.

FD 10; (kreslit linku a pohybování) PENUP; (teď my jsme zvedli pero tak to nebude kreslit něco dokonce jestliže my přece se pohybujeme) FD 10; (ne kreslit ale pohybovat se) PENDOWN; (teď my jsme snížili pero tak to udělá čáru kdekoli želva se pohybuje) FD 10; (kreslit linku a pohybování) PENUP FD 10; (etc...) PENDOWN FD 10

Příklad 4: smyčky

Vy jste mohli také používat smyčku (opakované) příkazy. Toto by kreslilo přesnou stejnou krabici v prvním příkladě:

Opakovat 4 [FD 100 pravý 90]

Který by vykonal příkaz”FD 100 pravý 90#rquote čtyřikrát. Kruh simplistic sestává z 360 rotací jednotlivce s krokem vpřed, tak”Opakovat 360 [FD 1 pravý 1]#rquote by měl očekávaný výsledek.

Příklad 5: nová slova

Vy můžete učit želví nová slova, tj. skupiny poučení nebo procedur. Tito mohou být dělán od výzvy loga nebo editora, to je použil EDALL v mnoha dialektech loga.
' K židli ' muset být na odděleném příjmu. ' konec ' muset být na odděleném příjmu. Něco psaný po '; ' je ignorován - tak moci být používán jako poznámka.

EDALL 

K židli opakovat 4 [FD 100 RT 90] FD 200 konce

Jestliže vy používáte editora vy musíte odejít z toho a nové slovo je uloženo do availabe slovník ale vůle jsou ztraceni, když logo je vystoupil. Nyní nějaký čas Židle je zadán,”Opakovat 4 [FD 100 odešel 90] FD 30#rquote bude být vykonán. Vy jste mohli zvýšit tyto Opakovat 4 [židle] jestliže vy jste chtěli.

Příklad 6: vymazání (v UCBLogo dialektu)

Želva může vymazat řádek. PENERASE PE. Vy musíte pak nahradit ' pero ' s příkazem PENPAINT PPT.

EDALL ; (zadat režim editora pak aktuální proceduru)

K ERASECHAIR PE opakuje 4 [FD 100 RT 90] FD 200 PPT konce

CS předsedá vyčkávání 200 ERASECHAIR

Byly tam dva nové instrukce - který být snadnější k použití než vysvětlit to. Thats duch loga.

Příklad 7: parametry: daní slova proměnlivé informace

Logo může projít kolem zvláštní informace k jeho slovům a informací návratu. My musíme říci slovu očekávat něco a dát tomu jméno. Si všimněte použití dvojtečky. My projdeme ' hodnotou ' a dvojtečka je vyslovována jak ' hodnota '. Když procedura je provozována s příkazem jako Židle 200, velikost vezme hodnotu 200 tak my jdeme ' FD hodnota 200 '.

EDALL (zadat režim editora pak aktuální proceduru) k židli: thesize opakují 4 [FD: thesize RT 90] FD: thesize FD: konec thesize
Zkouška
 CS opakuje 9 [židle 50 RT 20 předsedat 100 vyčkávání 50 RT 20]


Jestliže vy přece potřebujete pomoc. Typ Nápověda, nebo Pomáhat “domov (si všimnout jediné citační značky.)

Jazyk

Logo je interpretovaný jazyk. To není závislá osoba případu, ale udrží případ užitý na formátování. Je to zapsané linky. Je to kompromis mezi následným programovacím jazykem se strukturami bloku a funkční programovací jazyk. Tam je ne ' standard ' logo, ale UCBLogo je velmi pokládaný. To je vyučovací jazyk ale jeho seznam zařízení zacházení dělají to pozoruhodně užitečný pro výrobní užitečné skripty.

Funkce a procedury

Každá linka je tvořena ' funkce volá . Jsou tam dva píše

Příkaz je podobný Pascal proceduře a operace je podobná funkci Pascala.

Zvláštní podmnožina operací volala predikáty, ten správný výstup slovo “pravdivý nebo “falešný, tito jsou konvenčně psáni s finálem “p” - jako emptyp, wordp, listp.

Matematika v logu používá zápis předpony, jako: součet: x: y, produkt: x: y, rozdíl: x: y, kvocient: x: y. Infix je také dostupný.

pomáhat “klíčové slovo; (vychová plný popis výrazu).

Příkaz může volat sebe, toto je nazýváno rekurzí

Příklad 8: Spirálovitá natažená používající rekurze

ke spirále: velikost jestliže: velikost > 30 [se zastavit]; zastávka podmínky fd: rt velikosti 15; mnoho řad akce se točí: velikost * 1.02; tailend rekurzivní hovorový konec

spirála 10


Data

Tam jsou tři datatypes v UCBLogo,

Číslo je zvláštní případ slova.

Není tam žádné silné psaní. Interpret objeví datatype kontextem.

Jsou tam dva důležité symboly

Toto je extrémně užitečný symbol, který stále připomíná studenty že proměnná je opravdu někteří ' místo ' v paměti.

Číslo je zvláštní případ self ohodnocení - to opravdu mohlo být psáno s citací 2 je opravdu “2

Domácí cvičení v Pascalu x:= y +3 se stojí v logu

   dělat “x součet: y 3 
nebo
   dělat “x součet: y “3
dělat vezme 2 parametry, druhý který tady je součet: y “3. Nyní součet bere dva ' parametry je a je ' operace ', tak výpočet je možný. "3 ocení k 3, a :y bere obsah věci volal y, tito jsou sečteni dávat číslo. Účinek dělat je umístit výsledek do prvního parametru.
    

Alternativní způsob, jak se dívat na toto, možná, je že druhý parametr je ' projížděl kolem hodnoty ' zatímco první je ' projížděl kolem adresy. '

Dereference (uvnitř procedury) je možná se formou dělat: x: x + 1.

Scoping

Proměnné nemusí být deklarován před použitím. Jejich rozsah je pak globální. Proměnná může být deklarována místní, thenits rozsah je omezený na tu proceduru a jeho subprocedures. Toto je dynamický scoping. Volat ' procedura ' s ' vstupy , vytvoří ' lokální proměnné je které držení obsah parametrů.

Seznamy

Diskutovat o seznamech přijde jako překvapení pro programátora Pascala, kdo zvládal to docela dobře bez nich, nicméně toto otevře mnoho nových možností. Sady jsou také poskytovány pro plachý.

Příklad 9: používat primitives seznamu vyjmout prvních pět členů seznamu

: Jedna cesta byla by k iteraci použití.
firstfive: alist ifelse lessp počet: alist 5 [operace: alist] [dělat “olist [] opakovat 5 [dělat “olist lput nejprve: alist: olist dělají “alist bf: alist] výstup: olist] konec

firstfive přehlídky [1 2 3 4 5 6 7 8 9] [1 2 3 4 5] firstfive foreach [1 2 3 4 5 6 7 8 9] přehlídka 10 -? [9 8 7 6 5]

b: Jiný, elegantnější cesta byla by

firstn: num: seznam jestliže: num = 0 [výstup []] fput výstupu (nejprve: seznam) (firstn: num-1 butfirst: seznam) konec

firstfive: vypsat firstn výstupu 5: konec seznamu

Tato metoda používá rekurzi, a je příklad ' funkční ' poněkud než ' následný ' plánovací přístup.

Kontrolní strukturové příkazy

Standardní Pascal ovládací prvky jsou dostupné, tam je výběr

   * ifelse test [dělat _ jestliže _ opravdový seznam] [dělat _ jestliže _ falešný seznam]

Tam být iterace rozkazuje

   * zatímco pečovat o [seznam instrukcí] * až do podmínky [seznam instrukcí] * opakované číslo [seznam instrukcí]

Rekurze je logo preferovalo vzor zpracování.

Iterace šablony

Pascal programátor bude překvapený sérií seznamu založil struktury kontroly. Základní myšlenka je že vy máte dva seznamy

Operace [seznam příkazů] [mnoho datových položek]
každý příkazů je aplikován v obratu do každého datových položek. Tam být několik těchto příkazů šablony se jmény jako mapa, platit, filtr, FOREACH, se snížit a se valit. Oni repesent čtyři chuti iterace šablony, známý jak explicitní-štěrbina, pojmenovaný-procedura, pojmenovaný-štěrbina (nebo Lambda) a procedura-text.

mapa přehlídky [? *?] [5 6 7] [25 36 49] filtr přehlídky [(počet?) > 4] [rychle hnědé liščí skoky přes lenivého psa] [rychle hnědé skoky] se ukážou foreach [1 2 3 4 5] [? * 10] [10 20 30 40 50]

Provozovat [seznam příkazů]; provozovat seznam příkazů (nebo programy) od v programu.

Seznamy rekvizit

Seznam rekvizit je zvláštní seznam kde položky lichého čísla jsou jméno vlastnosti, a dokonce být hodnoty vlastnictví. Tam jsou tři příkazy k procesovému seznamu rekvizit.
pprop: listname: jméno: hodnota; přidat nový pár k remprop seznamu: listname: jméno: hodnota; odstranit pár k seznamu přehlídka gprop: listname: jméno; dostat odpovídající hodnotu ze seznamu

Já/O příkazy

Text může být psán k oknu příkazu (výstupní potoční) používání tisk, přehlídka a ke grafickému okennímu používání popiska

Standardní rozkazy jsou readlist readword readchar s normálním vstupním potokem být klávesnice. V unixové tradici potok vstupu může být měněn, tak vstup může přijít z diskového souboru. Podobně, výstup může být přesměrován. Technika bude známá Pascal programátorům - používat sekvenci

openread [název souboru] setread [název souboru] setreadpos nn readchar setread [] zavřít [název souboru].

Tam jsou rovnocenné příkazy ke změně potok výstupu, openwrite, openappend, setwrite, setwritepos nn.

driblovat s [názvem souboru]
Vytvoří přepis všeho to je psáno v nebo outputted k oknu příkazu.
nodribble
Toto vypne to.

Grafika

Grafika želvy je silná metoda představovat myšlení ale logo také má nemnoho užitečný Karteziánské příkazy

domov; vrátí želvu k (0, 0) setx sety xx yy; pošle želvu, ještě kreslení k (xx, yy) seth nn; nastaví želvu na záhlaví nebo kompasový směrník (nn)

Příklad 10: počítat a kreslit sluneční hodiny pro danou šíři

Toto je typický zahradní číselník. Grafický moci být tištěný a transfered ke dřevu nebo drzosti dělat přesný zahradní chronometr.
k číselníku cs se ukážou [typ ve vaší šíři jak celé číslo] dělají “readword šíře; použití keyboad vstup pro [i 0 6 1] [dělat “ang arctan hřích produktu: rozsahový opalovat produkt: i 15; rt vypočítavosti: ang fd 200 bk 200 lt: ang; kreslit ranní linkové lt: ang fd 200 bk 200 rt: ang; používat symetrii, aby udělal odpolední čáru] pu setx - 300 sety - 300 seth 90 pd; poslat želvu dolní části fd 300 seth 270 rt 90 -: fd šíře 300; kreslit 
styl nebo gnomon pu domov pd; uklidit to konec Talíř slunečních hodin musí být spočítán pro jeho rozsahové použití vzorce
x = arctan (hřešit (rozsahový) * opalovat se (HourDiff * 15))
Gnomon se natočí = 90 - rozsahový.

Tento číselník je přichystaný na 38N, šíře Berkeleya, Kalifornie - domov UCBLogo. Malá oprava by měla být dělána pro délku.

MSWLogo rozšíření

MSWLogo podporuje rozmanité želvy a 3D grafiku. MSWLogo dovolí vstup od COM přístavů a LPT porty a také ' hardware ' porty. MSWLogo také podporuje rozhraní oken tak já/O je dostupný skrze toto Gui - a klávesnice a události myši mohou odjistit přerušení.

Srovnání loga a Pascal

Logo je pomalé, to není vhodné k processsing obrovitému množství dat - to je jazyk učení. Jestliže rychlost není záležitost anymore to je výchovně užitečnější sledovat koleno programu přes problém. Vizuální výstup dovolí toto. To pomáhá při pochopení studentů jak počítač pracuje následně přes instrukce.

Logo skóruje na grafice a MSWLogo poskytne použití dll oken.. Klíčová myšlenka pro učení Pascal je že studenti musí mistrovský ' ukazatele předtím oni mohou dělat nějakou užitečnou datovou strukturu teorie. Toto vyřadí všechny kromě nejzavázanější. V logu, seznamech, hromadách a frontách být triviální. Stromy jsou větší legrace. Všichni jsou rekurzivní v přírodě.

UCBLogo a MSWLogo zahrnuje základní Pascal intrepreter psaný v logu jako jeden z příkladů.

Bibliografie

Externí odkazy