UCBLogo - UCBLogo
![]() | tento článek je napsán jako manuál nebo průvodce.Srpna 2018) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
![]() UCBLogo umožňuje rekurze, proces, při kterém se procedura sama nazývá. Na obrázku je spirála vytvořena rekurzivním skriptem. | |
Paradigmata | multi-paradigma:funkční vzdělávací, procesní, reflexní |
---|---|
Rodina | Lisp |
Navrhl | Brian Harvey |
Vývojáři | Dan van Blerkom, Michael Katz, Doug Orleans. Významné příspěvky: Freeman Deutsch, Khang Dao, Fred Gilham, Yehuda Katz, George Mills, Sanford Owings, Randy Sargent[1] |
Poprvé se objevil | 1992 |
Stabilní uvolnění | 6.1 / 27. prosince 2019 |
Psací disciplína | dynamický |
Rozsah | Dynamický |
Jazyk implementace | C |
Plošina | IA-32, x86-64 |
OS | Okna, Operační Systém Mac, Linux |
Licence | GPL |
webová stránka | lidé |
Ovlivněno | |
Lisp | |
Ovlivněno | |
Pokec, Etoys, Poškrábat, NetLogo, K Želva, Rebol |
UCBLogo, také nazývané Logo Berkeley, je programovací jazyk, dialekt Logo, který pochází z Lisp. Je to dialekt Logo, který je nejblíže tomu, aby byl de facto Standard. Má nejlepší vybavení pro manipulaci seznamy, soubory, vstup výstup (I / O) a rekurze.[2] Lze jej použít k výuce většiny konceptů počítačové vědy, např University of California, Berkeley přednášející Brian Harvey[3] udělal ve svém Styl loga informatiky trilogie.[4][5][6] to je bezplatný open source software propuštěn pod a GNU General Public License (GPL).[7]
Grafické uživatelské prostředí
UCBLogo má primitivní grafické uživatelské prostředí (GUI), takže existuje několik projektů, které poskytují lepší rozhraní. Logo MSW a jeho nástupce Logo FMS, pro Microsoft Windows, se běžně používají ve školách v EU Spojené království a Austrálie.
Design
Logo bylo navrženo v duchu nízkého prahu a bez stropu, což umožňuje snadný vstup nováčkům a přesto splňuje potřeby vysoce výkonných uživatelů. Animace vyžadují jak schopnost kreslit, tak mazat tvary. Proces je stejný, až na to, že v prvním případě je na zobrazovacím zařízení uložena čára a v druhém je čára odstraněna. Při použití analogie želvy musí pero želvy malovat a pero želvy musí mazat. Želvu lze nastavit tak, aby vymazala cokoli pod ní, pomocí příkazu PENERASE (PE), zatímco pero lze nastavit tak, aby znovu začalo kreslit pomocí příkazu PENPAINT (PPT) v UCBLogo.
Pero

Často se používá analogie želvy s perem připojeným k ocasu. Pero želvy lze zvedat a spouštět, čímž se vytvoří základní tečkovaná čára.
Příklad kódu:
FD 20 ; nakreslete čáru a pohybujte se PENUP ; zvedněte pero, aby nic nečerpalo FD 20 ; hýbat se a nekreslit ČEKEJTE ; sklopte pero, aby se znovu kreslilo FD 20 ; nakreslete čáru a pohybujte se PENUP ; zvedněte pero, aby nic nečerpalo FD 40 ; hýbat se a nekreslit PENDOWN ; sklopte pero, aby se znovu kreslilo RT 20 ; otočit doprava (ve směru hodinových ručiček) o 20 stupňů
Data
V UCBLogo existují tři datové typy:
- slovo
- seznam
- pole
Číslo je zvláštní případ slova.
Neexistuje statické psaní. Tlumočník detekuje datový typ podle kontextu.
Dva důležité symboly jsou:
- Dvojtečka (
:
) znamená obsah. Toto je nesmírně užitečný symbol, který studentům stále připomíná, že a proměnná je opravdu místo v paměti. - Dvojitá nabídka (
"
) znamená slovo je vyhodnoceno jako samonebo jeho hodnota po vyhodnocení je stejná jako předtím. Toto je důležité. Pro uživatele z jiných programovacích jazyků: dvojitá nabídka není spárována jako úvodní a závěrečná nabídka.
Číslo je zvláštním případem sebehodnocení; dalo by se to napsat s citací. 2 je opravdu "2
Variabilní úkol (např. x: = y + 3
) je zpracován v logu s udělat
příkaz, jak dokládají tyto dva ekvivalentní příkazy:
make "x sum: y 3make" x sum: y "3
udělat
trvá 2 parametry, z nichž druhý je zde součet: y "3
. součet
trvá dva „parametry“ a je „operací“, takže výpočet je možný."3
hodnotí na 3
, a : y
vezme obsah volané věci y
, jsou sečteny a dávají číslo.
Účinek udělat
je umístit výsledek do prvního parametru. Z programového hlediska první argument k udělat
je předán odkazem, zatímco druhý je předán hodnotou.
Scoping
Proměnné nemusí být deklarovány před použitím; jejich rozsah je pak globální.
Může být deklarována proměnná místní
, pak je její působnost omezena na tento postup a všechny postupy, které volá, které se nazývají dynamický rozsah. Voláním procedury se vstupy (název obvykle používaný pro argumenty v literatuře Logo) se také vytvoří místní proměnné, které obsahují hodnoty argumentů.
Seznamy
Logo zdědí seznamy z Lisp a jsou jeho hlavní metodou pro ukládání vektorů. K dispozici jsou také pole.
- Existuje operátor, který převádí slova na seznamy a seznamy na pole a zpět.
- Tento datový typ má oproti polím tu výhodu, že je nekonečně rozšiřitelný. Data jsou extrahována pomocí operací
za prvé
,ale nejdřív
,poslední
,butlast
,člen
,člen
, apoložka
. Datové prvky se přidávají pomocívěta
,fput
, alput
. - Seznam lze považovat za frontu s frontou a dequeue operátorů nebo za zásobník s operacemi push a pop.
- Přirozenou metodou zpracování seznamů je spíše rekurze než iterace.
Příkazy řídicí struktury
Logo poskytuje několik společných kontrolní struktury.Jeden je podmíněná struktura.
- ifelse test [do_if_true list] [do_if_false list]
Tam jsou tři iterační příkazy:
- podmínka while [seznam instrukcí]
- do stavu [seznam instrukcí]
- číslo opakování [seznam pokynů]
Rekurze je preferovaným paradigmatem zpracování Logo.
Šablona iterace
Logo také poskytuje kontrolní struktury založené na seznamu. Základní myšlenkou jsou dva seznamy:
PROVOZ [seznam příkazů] [mnoho datových položek]
každý z příkazů se použije postupně na každou z datových položek. Existuje několik těchto příkazů šablony s názvy jako MAP, APPLY, FILTER, FOREACH, REDUCE a CASCADE. Představují čtyři příchutě iterace šablony, známé jako explicitní slot, pojmenovaný postup, pojmenovaný slot (nebo Lambda) a postupový text.
Seznamy nemovitostí
Seznam vlastností je speciální seznam, kde položky s lichým číslem jsou názvy vlastností a sudé jsou hodnoty vlastností. Seznam vlastností lze zpracovat třemi příkazy.
pprop :název seznamu :název :hodnota ; přidání nového páru do seznamu remprop :název seznamu :název :hodnota ; odebrání dvojice ze seznamu ukázat gprop :název seznamu :název ; pro získání odpovídající hodnoty ze seznamu
Vstup výstup
Pro vstup výstup (I / O), lze text psát do příkazového okna (výstupní proud) pomocí tisk
a do grafického okna pomocí označení
Standardní příkazy jsou readlist readword readchar
přičemž běžným vstupním proudem je klávesnice. V unixové tradici lze vstupní proud změnit, takže vstup může pocházet ze souboru na disku. Podobně lze přesměrovat výstup.
Syntax
Příkazy mohou být psány na jednom nebo více řádcích. Mnoho příkazů má mnemotechnické zkratky; například VPŘED
a ŽE JO
jsou kódovány FD
a RT
resp. Díky tomu je vstup méně obtížný. Cokoli napsané po; (středník) je ignorován, což kodéru umožňuje vkládat komentáře.
; nakreslí čtverec se stranami o délce 100 jednotek VPŘED 100 VLEVO, ODJET 90 VPŘED 100 VLEVO, ODJET 90 VPŘED 100 VLEVO, ODJET 90 VPŘED 100 VLEVO, ODJET 90
FD 100 RT 120 FD 100 RT 120; nakreslí trojúhelník FD 100 RT 120
The Ahoj světe program v Logo vypadá takto:
tisk [Hello World]
Smyčky
Existují tři smyčkové (opakované) příkazy; OPAKOVAT je jedna. Tím se nakreslí čtverec.
OPAKOVAT 4 [FD 100 VLEVO 90]
Příkaz FD 100 VLEVO 90
je provedeno čtyřikrát. Aproximaci kruhu lze snadno sestrojit pomocí 360 malých rotací a kroku vpřed: OPAKUJTE 360 [FD 1 VPRAVO 1]
. Smyčky mohou být vnořené, což přináší výsledky s malým úsilím.
REPEAT 36 [RT 10 REPEAT 360 [FD 1 RT 1]] FD 25RT 90
Další příklad pro vnořené smyčky
OPAKOVAT 36 [OPAKOVAT 4 [FD 100 RT 90] RT 10]
Funkce a postupy
Každá linka se skládá z volání funkcí, přičemž existují dva typy:
- příkazy (které obvykle něco dělají - efekty - ale nevracejí hodnotu) jako
tisk
. - operace (které pouze vracejí hodnotu, její výstup) jako
součet
,za prvé
neboseznam pro čtení
.
Příkaz je podobný a Pascal postup a operace je podobná funkci Pascal. (Viz také: oddělení příkaz-dotaz, kde dotaz je operace v Logo). Speciální podmnožina operací, tzv predikáty, který právě vypíše slovo skutečný
nebo Nepravdivé
, jsou běžně psány s koncovkou str
. Mezi příklady patří prázdný
, Wordp
, a listp
.
- Výrazy mohou být primitivní nebo mohou být definovány uživatelem.
- Výrazy mohou mít nulu, jeden nebo více parametrů.

Postupy lze definovat na příkazovém řádku pomocí DO KONCE pár:
K ŽIDLE OPAKUJTE 4 [FD 100 RT 90] FD 200 KONEC
V některých časných logech je však postup omezen na délku fyzické linky vstupního zařízení.
Všechna loga mohou vyvolat editora, obvykle pomocí EDALL. V editoru mohou být procedury psány na více řádcích, protože dokud nedojde k dokončení úprav, nic se nevykládá.
EDALL
DO CHAIRREPEAT 4 [FD 100 RT 90] FD 200END
Nové slovo se uloží do dostupné slovní zásoby, ale definice bude ztracena, jakmile relace Logo skončí. Interní postupy jsou slova a v tomto případě kdykoli ŽIDLE
je zadána sekvence OPAKUJTE 4 [FD 100 VLEVO 90] FD 200
bude proveden. Slovo ŽIDLE
lze použít jako příkaz; například, OPAKUJTE 4 [ŽIDLE]
by opakoval ŽIDLE
operace čtyřikrát.
EDALL; (pro vstup do režimu editoru, pak skutečný postup)
TO ERASECHAIRPEBK 200 OPAKOVAT 4 [FD 100 RT 90] PPTEND
CS ŽIDLE ČEKEJTE 200 ERASECHAIR
ČEKEJTE zpoždění mezi kresbou a mazáním může vyvolat iluzi pohybu:
CS REPEAT 20 [ŽIDLE ČEKEJTE 200 ERASECHAIR PENUP FD 20 PENDOWN]
Argumenty, parametry
Logo může předat svým slovům další informace a vrátit informace. Procedura (slovo) je instruována, aby něco očekávala a dala tomu jménu jméno. K tomuto účelu se používá dvojtečka. Předává informace podle hodnoty a tlusté střevo se vyslovuje jako hodnota. Když je procedura spuštěna s příkazem, jako je CHAIR 200, slovo :velikost
má hodnotu 200, takže když FD :velikost
je vykonán, tlumočník rozumí FD, hodnota 200.
EDALL; (pro vstup do režimu editoru, pak skutečný postup) DO ŽIDLE: tato velikostREPEAT 4 [FD: tato velikost RT 90] FD: tato velikostENDCSREPEAT 9 [ŽIDLE 50 RT 20 ŽIDLE 100 ČEKEJTE 50 RT 20]

Další poznámky
Matematika v logu používá předpona nebo Polská notace, jako: součet:X:y,produkt:X:y,rozdíl:X:y,kvocient:X:y
. Infix je také k dispozici.
help "klíčové slovo; (vyvolá úplný popis výrazu).
Logo umožňuje rekurze, proces, při kterém se procedura sama nazývá.
to spiral: size if: size> 30 [stop]; podmínka ukončení fd: velikost rt 15; mnoho řádků akční spirály: velikost * 1,02; koncový rekurzivní callend
spirála 10
Příklady symbolického výpočetního kódu
Filtrujte, mapujte a omezujte příklady
? tiskový filtr [?> 2] [1 2 3 4] 3 4? tisknout mapu [? *?] [1 2 3 4] 1 4 9 16? snížení tisku [max? 1? 2] [1 999 432 654] 999
?
Max lze implementovat jako
na maximum: a: boutput ifelse: a>: b [: a] [: b] konec
Definujte a použijte postup, který vypočítá průměr svých číselných argumentů
? do průměru [: čísla] 2> op (použít "součet: čísla) / (počet: čísla)> konec? průměr tisku 1 53? tisk (průměr 1 2 3 4 5) 3? tisk použít" průměr [1 2 3 4 5] 3?
Definujte a použijte postup pro výpočet množného čísla
? do množného čísla: slovo> pokud rovný poslední: slovo "y [op slovo bl: slovo" ies]> pokud rovný poslední: slovo "s [op slovo: slovo" es]> výstupní slovo: slovo "s> konec? vytisknout množné číslo" těla? tisknout mapu „množné číslo [virus viru těla] knihy viry těla?
Převeďte větu na příklad Pig latin
? do pigl: word> if interpunkce p last: word [op word pigl.real bl: word last: word]> op pigl.real: word> end? do pigl.real: word> pokud nejprve vowelp: word [op slovo: slovo "ay]> op pigl.real word bf: word first: word> end? to vowelp: letter> op memberp: letter [aeiou]> end? k interpunkcip: letter> op memberp: letter [.,?!]> end? print map "pigl [pig latin is fun, and hard to mast at the same time!] igpay atinlay isay unfay, anday ardhay otay astermay atay ethay amesay ještě !?
Viz také
Reference
- ^ Harvey, Brian (1997). Svazek 1: Symbolické výpočty: Poděkování. University of California, Berkeley, elektrotechnika a počítačové vědy. Styl loga informatiky. 1. MIT Stiskněte. ISBN 0-262-58148-5. Citováno 2019-05-06.
- ^ „Programovací jazyk loga“. Logo Foundation. 2012. Archivovány od originál dne 15. 8. 2013. Citováno 2019-05-06.
- ^ Harvey, Brian. „Brian Harvey“. Elektrotechnika a počítačové vědy. University of California, Berkeley. Citováno 2019-05-06.
- ^ Harvey, Brian (1997). Svazek 1: Symbolické výpočty. University of California, Berkeley, elektrotechnika a počítačové vědy. Styl loga informatiky. 1. MIT Stiskněte. ISBN 0-262-58148-5. Citováno 2019-05-06.
- ^ Harvey, Brian (1997). Svazek 2: Pokročilé techniky. University of California, Berkeley, elektrotechnika a počítačové vědy. Styl loga informatiky. 2. MIT Stiskněte. ISBN 0-262-58149-3. Citováno 2019-05-06.
- ^ Harvey, Brian (1997). Svazek 3: Beyond Programming. University of California, Berkeley, elektrotechnika a počítačové vědy. Styl loga informatiky. 3. MIT Stiskněte. ISBN 0-262-58150-7. Citováno 2019-05-06.
- ^ Harvey, Brian (14.09.2008). „Verze 6.0 loga Berkeley je nyní k dispozici anonymním FTP nebo webem“. Elektrotechnika a počítačové vědy. University of California, Berkeley. Citováno 2019-05-09.