Németh László Számítógép-programozáS miNdeNkiNek

LIBREteknőcgrafika • algoritmusokLOGO • adatszerkezetek

FSF.hu alapítvány, 2012 ismét 4 [ tollatfel ismét 3 [ ismét 3 [ előre 80 előre 100 előre 100 előre 100 tollatle jobbra 95 jobbra 90 jobbra 90 előre 10 előre 100 ] ] jobbra 90 tölt előre 10 ]

ismét 4 [ ismét 4 [ tollatfel tollatfel ismét 2 [ előre 80 előre 80 ismét 2 [ tollatle tollatle előre 90 jobbra 90 kép [ előre 10 előre 10 előre 140 jobbra 90 előre 20 kép jobbra 90 jobbra 90 ] balra 5 előre 20 előre 10 előre 10 ] tölt jobbra 120 ] tölt ] zár előre 20 tölt ]

tollszín „piros” „világosszürke” „fekete” „szürke” „fehér” „sötétbarna” töltőszín „sárga” „ezüst” betűszín „kék” „piros” „bíbor” tollszín [0, 0, 255] „lila” „zöld” „világoszöld” „vörös” „ciklámen” tollszín 0xff00ff töltőszín tetszőleges „olajzöld” „sárga” „sötétkék” „kék” „kékeszöld” töltőszín [255, 0, 0, 128] „ciánkék” „narancssárga” „aranysárga” „rózsaszín” „világospiros” „cián” „narancs” „arany” töltőszín 0x80ffff00

„ibolyakék” „égszínkék” „ibolya” „világosbarna” „barna” „láthatatlan” „világoskék” négyzet 50 kör 50 „viola”

tollvastagság 0 téglalap [140, 30] téglalap [30, 140, 10] tollvastagság 1 tollvastagság 1mm ellipszis [140, 60] tollvastagság 0,1in ellipszis [140, 60, 2ó, 11ó] tollstílus „folyamatos” tollstílus „pontozott” tollstílus „szaggatott” ellipszis [140, 60, 2ó, 11ó, 2] ellipszis [140, 60, 2ó, 11ó, 3] tollstílus [3, 1mm, 2, 4mm, 2mm]

tollstílus [3, 1mm, 2, 4mm, 2mm, 2] pont töltőstílus 2 L i b r e L o g o betűcsalád „ Libertine G” töltőstílus [2, „zöld”, 3pt, 15°] betűvastagság „félkövér” 3 ismét 5 [ betűstílus „kurzív” tollsarok „kerek” tollsarok „tompa” előre 50 fut i „LibreLogo”-ban [

2 4 címke hányadik töltőszín [255, véletlen 200, 0] LOGO jobbra 360/5 kör 14 szöveg i

] zár jobbra 90 előre 12 balra 90 ] tollsarok „hegyes” tollsarok „nincs” 5 betűméret 16 betűvastagság „normál” 1 szöveg „LOGO” betűstílus „álló” LibreLogo Előszó 3 „Az iskolák sokkal inkább nevelő környezetet biztosí- Előszó tanak majd, arra bátorítva a tanulókat, hoy tanul- mányozzák és fejlesszék a [GNU 1] rendszer A LibreLogo programozási környezet és ez a könyv kódját.” 11 – , a szabad szoftver azzal a céllal készült, hogy elősegítse a szabad szoft- mozgalom alapítója verek megjelenését, használatát a közoktatásban. Bízom abban, hogy a szabad szoftverek ugyanakko- ra hatást gyakorolhatnak majd az iskolásokra, mint Tartalomjegyzék amelyet az iskolai számítógépek megjelenése oko- Előszó...... 3 zott valamikor. Bevezetés...... 4 Hatodikos voltam 1986-ban, amikor vakaácioá eloőtt paár nappal az osz- taályfoőnoökoöm egy, akkor meág ritkasaágnak szaámítoá á szemeályi szaámítoá á- Telepítés...... 5 geápet műtatott be az osztaálynak az űtolsoá matematikaoáraán. Az elsoő Logo eszköztár...... 6 talaálkozaás hataásaára a nyaári szűönetben – űgyan meág szaámítoá ágeáp neál- kűöl, egy gyerekeknek szoáloá tankoönyv segítseá ágeável – keászítettemá el Parancssor az eszköztáron...... 6 elsoő Basic nyelvűő programjaimat. Ez az eálmeány ismeátloődoött meg joá- Programfuttatás...... 6 val keásoőbb a szabad szoftverekkel kapcsolatban. ŐŐszinte lelkesedeás- sel csodaálkoztam raá arra a mindenki eloőtt nyitva aálloá meárhetet- Logo és LibreLogo összevetés...... 6 len111 tűdaásra, amit egy GNU/Linűx rendszer eás a vele jaároá, toöbb A LibreLogo programozási nyelv...... 7 mint 40 evesá Unix kűltűára4 hordoz. Csatlakoztam a szabad szoftve- res koözoösseághez, eás fejleszteáseim ma reászei az olyan vilaágszerte is- „Helló, Világ!” ...... 7 mert programoknak, mint a Mozilla Firefox, Google Chrome eás Do- Utasítássorozat...... 7 kűmentűmok, Apple Mac ŐS X, Adobe InDesign, ŐpenŐice.org Megjegyzések...... 7 vagy LibreŐice. Mi is a LibreLogo? Egy olyan, a jelenlegi iskolai Sortörésjel...... 8 Logo rendszerekkel rokon programozási környezet Teknőcgrafika...... 8 és nyelv, amely a honosított utasítások mellé a mo- Kép utasítás...... 9 dern Python programozási nyelvből vesz át eleme- Színek...... 9 ket, illetve lehetővé teszi a Python kifejező adat- Négyzet, téglalap, kör, ellipszis...... 9 szerkezeteinek használatát is. A LibreLogo ötvözi a Szöveg megjelenítése...... 9 Logo teknőcgrafikáját a LibreOffice (vagy az Egyéb teknőcgrafikai utasítások...... 10 OpenOffice.org) nyomdai minőséget biztosító vek- Ismétlődő utasítások (ciklusok)...... 10 torgrafikus képességeivel, amint ezt a könyv Libre- Feltételvizsgálat...... 11 Logóval készült ábraanyaga is bizonyítja. Saját utasítások (eljárások)...... 11 A LibreLogo a LibreŐice Wri- tűmba vagy beműtatoába maásol- Saját függvények...... 12 terben rajzol, ígyá a keápek a szoö- hatoák, a LibreŐice Draw rajzo- Változók...... 13 vegszerkeszteáshez eás kiad- loáprogramjaával egyeáb moádon vaányszerkeszteáshez egy- moádosíthatoá ák (pl. koörre fe- Értékadás...... 13 boől rendelkezeáse aállnak, szíthetoá ők, torzíthatoá ák, Globális változók...... 13 egeárrel moádosíthatoá ák, soőt teárbeliveá alakíthaá - mozgathatoák, aátmeáre- toák, l. melleákelt kep),á Számok...... 13 tezhetoők, feliratozha- raszteres (JPEG, PNG), Karakterláncok...... 13 toák, egyboől kinyom- eás vektoros keápformaátű- tathatoák, ISŐ Őpen- mokban; a DTP standard Szabályos kifejezések...... 14 Docűment (ŐDF) dokű- EPS-ben (Encapsűlated Listák...... 15 mentűmformaátűmban menthe- PostScript), vagy a Wiki- toők, nyomdai szabvaány PDF peádia aáltal is hasznaált webes Halmazok...... 16 formaátűmba exportaálhatoák, vaá- standard SVG-ben (Scalable Fix listák...... 17 goálapon keresztűöl űáj dokűmen- Vector Graphics) elmenthetoők. Szótárak...... 17 A LibreLogo izgalmas pedagógiai kísérlet a külön- Kérdések és válaszok...... 17 böző alap- és emelt szintű informatikai ismeretek Példák...... 19 egységes keretben történő tárgyalására, és egyben Elforgatott négyzetek...... 19 reményeim szerint a LibreOffice- jól kiegészítő, Teknőcök...... 19 könnyen elsajátítható eszköz a számítógépes grafi- Színes ábrák...... 19 kához és kiadványszerkesztéshez. Betűgrafika...... 19 Németh László á á á á á á A LibreLogoá fejleszteset az FSF.hűá Alapítvany tamogatasa tette le- 11 á á á á hetoőve. A LibreŐice Writerrel keszűölt koönyv szabadon terjeszthetoő A szabadá szoftverekboőál allo Unix-szerűá á ő operacios rendszer,á amely- a Creative Commons licenc felteáteleinek megfeleloően. nek szamos kűlcselemet el is keszítette a fejlesztest meghirdetoő Betűőtípűs:á Linűx Libertine G. Kiadaás eáve: 2012 Free Software Foűndation (FSF). A mai, GNUá GPL szabad szoftverá licenc alatt kiadott Linűx rendszerek FSFá altal ájavasolt elnevezese 1111 á á á á á GNU/Linűx, tekintettel GNU-s rendszer- es segedprogramjaikra. Becslesek vannaká á a szabad szoftvereká á á á erteá kereá vonatkozoá an. 111 Ideázet a GNU kiaáltvaányboál (1984), l. http://www.gnű.hű. Az aállí-á Csak aá Linűx operacios rendszer erteket masfel milliard ádollarra be- taást joál peáldaázza a magyar felsoőoktataás. A szabad szoftverekkel csűölteák 2008-ban.á á Egy á toöbb ezerá programot tartalmazo Linűx ter- megismerkedoő hallgatoák koözűöl sokan ma maár nemzetkoözileg ismert jesztes erteke 10 milliard dollar is lehet, a magyar GDP koözel tizede, informatikai szakemberek, mint Molnaár Ingo (l. Wikipeádia), a Linűx l. http://www.linűxfoűndation.org/sites/main/iles/pűblications/esti- operaácioás rendszer egyik vezetoő fejlesztoője, vagy Scheidler Balaázs, a matinglinűx.html vilaágszerte mintegy 850 ezer ceágneál űözembe helyezett syslog-ng 14 Az eredeti szerzoők, Ken Thompson eás Dennis Ritchie 1998-ban az naploázoá szoftver szerzoője, eás a haáloázatibiztonsaág-technoloágiai koö- USA legmagasabb szintűő technoloágiai-innovaácioás díjaá át is megkap- zeápvaállalat, a BalaBit Kft. alapítoá ája eás vezetoője. taák a Unix esá a C programozaási nyelv kidolgozaásaáeárt. 4 Bevezetés LibreLogo Bevezetés Oktatóprogram. A Nemzeti alaptantervben sze- replő informatikai tananyag (teknőcgrafika és algo- A LibreLogo a magyar közoktatásban, sok helyen a ritmusok) oktatására alkalmas programozási kör- felsőoktatásban is használt zárt, licencdíjas, win- nyezet. dowsos informatikai oktatóprogramok (Comenius á á á á á á á Teknoőcmozgato űtasítasok, ciklűsok, feltetelvizsgaálat,á eljarasok, fej- Logo és Imagine Logo) szabad, és szabad operációs lett adatszerkezetek,á mindez magyará nyelvűá á ő űtasítasokkal. A Libreá- rendszereken is futó alternatívája. Mivel egyesíti a Logo egyeb kiemelhetoő, a koözoktataá s szamara is eloá őnyoös átűlajdonsaá - gai:á dokűmentűmszerkesztoá á ő es vektorgraikűsá kepkezelesenek oktaá - Logo és a Python programozási nyelv előnyeit, egy- tasa, műőveszeti oktatas, a moderná á es elterjedtá Python programozaá á á si szerűbben oldhatunk meg vele informatikai ver- nyelv adatszerkezeteinek es egyeb tűlajdonsagainak elsajatítasa. seny- és emelt szintű érettségi feladatokat is, mint a Csereszabatos honosítás. A LibreLogo támogatja zárt Logo rendszerekkel. a magyar oktatásban elterjedt Comenius Logo és Imagine Logo alapvető utasításait, jelöléseit. 2012-toől a Python vaálaszthatoá programozaási nyelv az emelt szintűő informatika eárettseágin. Pythonban a programozaási feladatok toöre- Peáldaáűl a LibreLogo elfogadja a Comeniűs Logo „tanűld”, eás az Ima- deák idoő alatt megoldhatoák a Pascal, C, C++, Java eás Logo nyelvekhez gine Logo „eljaáraás” (roöv. „elj”) űtasítaá ásait is (az Imagine Logo maár keápest. A LibreLogo egyik ceálja, hogy megkoönnyítseá a Python nyelv nem taámogatja a „tanűld” űtasítaá ást, tehaát az alapvetoő programszer- elsajaátítaá ásaát.1 vezoő űtasítaá ások tekinteteáben sem csereszabatos eloődjevel,á a Come- niűs Logoával). Egyeáb gyakran hasznaált koözoös parancsok: „eloőre” A LibreLogo lehetőségei azonban nem merülnek ki („e”), „haátra” („h”), „balra” („b”), „jobbra” („j”), „tollatfel” („tf”), „tol- az oktatásban: interaktív (kézzel is átszerkeszthető) latle” („tl”), „ismeátleás” („ism”), „tollszín”á („tsz”), „tollvastagsaág” („tv”), „toöltoőszín”á („tlsz”), „toöroölkeápernyoő” („toöroölkeáp”), „haza”, „el- vektorgrafikus ábrákat készíthetünk vele nyomdai rejt”, „laáthatoá”, „eredmeány” stb. minőségben, kiadványszerkesztési céllal. A LibreLogo Javított honosítás. A LibreLogo helyenként új al- jellemzői részletesebben: ternatívák bevezetésével javítja az említett Logo ho- Szabad szoftver. Szabadon felhasználható és ter- nosítást: jeszthető, forráskódja tanulmányozható és módosít- A „tanűld”/„eljaáraás”, vagyis az eredeti ez teknőc á á á á á � ható. Logo „to” űtasíátas alternatív honosíá ta- címke „ ” A szabad, maás neáven nyíltá forraáskoádűá szoftverek meghataározoá sze- sa á a LibreLogoban az „ez” (l. mellekelt vége repet toöltenek be napjainkban, eleág, ha csak az olyan ismert, nyíltá pelda). forraáskoádra eápítoá ő szervezetekre gondolűnk, mint az Apple, Face- Vektoros rajzolóprogram555: a képernyőfüggetlen book, Google, Twitter vagy a Wikipeádia.11 A LibreŐice-on, illetve vektorgrafika (vektoros alakzatok és TrueType, va- ŐpenŐice.org-on kívűá öl olyan neápszerűő eás ismert szoftverek tartoz- nak ide, mint a Mozilla Firefox vagy a Google Chrome boöngeászoők eás lamint Graphite betűtechnológia), nyomdai mérték- a Linűx operaácioás rendszer. Ez űtoábbi nemcsak a mai szűperszaámíá- egységeket ismerő utasítások segítségével nyomdai toágeápek vagy a vaállalati kiszolgaáloák űralkodoá operaácioás rendszere, 444 hanem űögyfeáloldalon is az eálre toört: az okostelefonok piacvezetoő minőségű grafikákat készíthetünk , szemben az is- platformja, a nyíltá forraáskoádűá Android valoájaában egy Linűx rend- kolai oktatásban jelenleg használt rossz felbontású szer, de a rivaális iPhone, iPad iŐS rendszereánek (soőt a Mac ŐS X- nek) alapja is szabad szoftver, a Darwin neávre hallgatoá operaácioás raszteres Logo rendszerekkel. rendszer. A Magyarorszaág.hű kormaányzati portaált toöbb mint 95%- á á á ban szabad szoftverek műőkoödtetik, ahogy a hazai oönkormaányzatok A nyomdaiá á minoősegűő, a kiadvaá ányszerkeszteá sben egyszerűá őená fel- eás bíroá ásaágok műőkoödeáse is elkeápzelhetetlen szabad szoftverek neál- hasznalhato graika toöbbeká szamara nyűjtjaá az alkotas á oöroá ömeá t, mintá á kűöl.111 A Gartner 2011-ben pűblikaált felmeáreáseáben koözel 600 vaálla- a nagyobb programozaá si ismereteket igenyloő műltimedias es jateá k- lat szerepelt, melyek toöbbseágeáben meghataározoá szereppel bírnaká a programozas, amire a jelenlegi iskolai Logo rendszerek a hangsűlyt szabad szoftverek. Szabad irodai programcsomagokat, mint az fektetik. ŐpenŐice.org eás a LibreŐice, a vizsgaált vaállalatok mintegy negye- LibreOffice/OpenOffice.org kiegészítő555: az elter- deáneál alkalmaztak. A kűtataás egyik legfontosabb megaállapítaá ása a jedt LibreOffice (vagy annak eredeti kódbázisa, az szabad szoftverek reászesedeáseánek nagymeárteákűő noövekedeáse: a 2006- ban meárt kevesebb mint 10%-roál a 2012-re joásolt toöbb mint 30%-ra.4 OpenOffice.org) irodai programcsomag Writer do- A GNU GPL/LGPL/MPL haármas szabad licence szavatolja a LibreLo- kumentumszerkesztőjében készíthetjük és futtat- go szabad felhasznaálhatoásaágaát, forraáskoádjaának hozzaáfeárhetoőseágeát esá moádosíthatoá ásaágaát minden felhasznaáloá szaámaára.44 A program letoölt- hatjuk LibreLogo programjainkat, kihasználva a hetoő a koövetkezoő címroá ől: http://www.nűmbertext.org/logo. program magas szintű grafikai képességeit. Platformfüggetlenség555: a program mindenhol fut, 11 Vannak tanaárok, akik szerint komolytalannaá vaálhat az informati- ahol a LibreOffice, tehát szabad (FreeBSD, Linux) és ka erettseá ági, annyira leegyszerűősoödik a programozaási feladatok megoldaása a Python karakterlaáncokkal, listaákkal eás szoátaár adatszer- zárt (Mac OS X, Windows) operációs rendszereken kezettel. Pedig innentoől vaálhat komollyaá, hiszen olyan szintűő fel- is. adatok oldhatoák meg kezdoő Python programozoái tűdaással, amelyek a á á á á á á professzionaális C, illetve Pascal tűdaással rendelkezoőknek is feladjaák Idaig koözpontiá szoftverlicenc-vasarlas biztosította a Comeniűsá eás a leckeát. A koözeápiskolai informatikaoktataás ceálja, hogy mineál toöb- Imagineá Logot, a Microsoft Őice irodaiá á programcsomagotá es egyeb ben legyenek keápesek megoldani emelt szintűő eárettseági feladatokat. zart programokatá a magyar iskolak szamara. A koözeljoövoőben ez a Az pedig kifejezetten eloőny, hogy koözben egy elterjedt, komoly koözpontiá beszerzes ámegszűá őnik, hogy a nemzetkoözi trendeket koá övet- programozaási nyelvvel ismerkednek meg, amelynek – fűöggetlenűöl ve a nyílt alternatíá vak fokozottan megjelenhesseneká az oktatasban attoál, hogy informatikai szakemberek lesznek-e, vagy sem – keásoőbb is (l. pl. az idezett Gartner jelentest a szabad szoftverek, benne a is joá hasznaát vehetik. szabad irodai programcsomagok jelentoős vaállalati reászesedeáseároől, esá 111 á á ezek folyamatos noövekedeáseároől). A LibreLogo olyan nyíltá alternatíá- L. peldaűl http://developers.facebook.com/opensoűrce/á , va, amely megkoönnyítiá a nyíltá irodai programcsomagra eás a nyíltá http://www.apple.com/opensoűrce/ es http://opensoűrce.apple.com/, operaácioás rendszerre valoá aátaállaást az oktataásban is. http://code.google.com, https://dev.twitter.com/opensoűrce Szabványosság555: az ábrák, Unicode karakterkódolá- 1111 Laky Norbert (Foővaárosi Bíroá ásaág) felmeáreáse szerint a hazai bíroá á- saágok toöbbseáge szabad irodai programcsomagot hasznaál. Az eávi sú feliratok és a Logo programot tartalmazó szöve- maásfeál millioá bíroá ásaági űögyet tekintve ez millioás nagysaágrendűő dokű- mentűm kezeleáseát jelenti szabad szoftverekkel Magyarorszaágon. ges dokumentum .odt kiterjesztésű állományba, 14 http://www.gartner.com/it/page.jsp?id=155415414 144 http://hű.wikipedia.org/wiki/Szabad_szoftver 1444 L. címlap,á vagy http://www.nűmbertext.org/logo/lok_hű.pdf. tással bírnak: A felkiáltójel, kérdőjel, kettőspont és kettőspont kérdőjel, felkiáltójel, A bírnak: tással támoga tipográfiai magyar kiemelt köszönhetően fejlesztésnek magyar részben a betűkészletek a Sőt, va nyí megigyelheto kű Ilyen LibreLogóbanni a is. kiskapitálisok (például betűhatásokat és különleges betűváltozatokat tudunk függetlenül rendszertől rációs ope betűkészleteivel G Biolium Linux és G bertine Li Linux LibreOffice a szerepel, Linux a nevükben betűkészletek és Graphitebetűtechnológia formja implementa ma egy (annak Pythonnal a is Microsoft a de kliens, rent verzio Bazaar keretrendszer, levelezo Mailman kiadva rajzolo GIMP Scribűs Pythonban: e LibreŐice-on ho e Blender; szabad a vagy 4D nema vezeto a ce legkomolyabb ko fejlo san oktata fejleszte sabb se szintű emelt az nemcsak programnyelve,illetve ha elo az programot reLogo e LibreLogo A készlete rugalmassága Python a mögött áll. parancs tömör LibreLogo A elérhetjük. is itt tárait könyv adatszerkezeteit, melynek épül, nyelvre zási Python (dokumentumonkénti)többzés, rajzlap egyszerre. helyesírás-ellenőr ugrás, sorra hibás ellenőrzés, kai szintakti programszerkesztő: Writer közben). futás program görgetése automatikus (képernyő követés teknőc-nyom nagyítás, 3 m × 3 m), (max. lapméret fejlesztőkörnyezet Logo Fejlett je bee LibreŐice lí nalvastagsa kijelo alakzatot Az szabadonelrendezhetjük,kat átszerkeszthetjük. alakzato nagyítható szabadon élsimított, rajzolt val Interaktívgrafika e kattinta megjeleno hű re tekno a kat, Ba ságottoll a felemelését.és tollvastag töltőszínt, tollszínt, aktuális az kijelzi la egérrelsa teknőcAés körvona színei is beállítható. teknőc Interaktív webes a esetében) képek szabvány SVG-be. vektoros (a és PDF-be szabvány ISO és nyomdai a exportálhatók valamint menthető, formátumban OpenDocument ISO azaz LibreLogo á s forgata s thatűnk. Az alakzatra dűpla alakzatra Az thatűnk. á á koztata á gi legko gi á á ő ö je tte nyszerkeszto rű á r a LibreLogo Logo eszko Logo LibreLogo a r tett) apro tett) á á nek, az App Engine-nek. Tova Engine-nek. App az nek, ő ne á rben. A Python nemcsak a LibreŐice bee LibreŐice a nemcsak Python A rben. á zhato á si e si á t. á á pszerű s űta s ö lo ő 3D anima 3D ő do á st. á á s prototí s si szo ö ö nleges betű nleges nnyebben elsaja nnyebben ő Rajzobjektűm tűlajdonsa Rajzobjektűm 555: a LibreLogo a modern Python programo Python modern a LibreLogo a 555: á , illetve forgata illetve , ő á nyelv e nyelv á e got cio ő c ko c á n) is mo is n) á á program, vagy eleve Pythonban ke Pythonban vagy program, eleve betű á st leheto st ő á rtelmezo valo ő se á ja á pí ő programok alapva ö gben haladtovagben ö zvetlenű s ŐpenŐice.org-on kí ŐpenŐice.org-on s á á gre tett szert azzal, hogy egyszerű hogy azzal, á szert tett gre lokra haszna lokra á á s a -szí a s val, azIronPythonnal)val, ne tett sű tett á ő je, amellyel a LibreŐice a professziona a LibreŐice a amellyel je, ő lista-kezelo pűske á á di tervezett (nem pedig olvashatatlanűl lekicsi olvashatatlanűl pedig (nem tervezett di á cio ö lve mo lve á s C referenciamegvalo C s , ugráló számok: számok: ugráló , á dosí ő va á s szoftvereknek, mint az Aűtodesk Maya, Ci Maya, Aűtodesk az mint szoftvereknek, s ő ve ő je gyakorlatilagegyelo je Python á go nt. A kito A nt. á á ltozat a Linűx Libertine G betű G Libertine Linűx a ltozat á szí ő fordí ö á mozgathato is l tevo thato á 555: a teknőc pozíciója és elforgatá és pozíciója teknőc a 555: 555: A LibreOffice-ban a LibreLogóLibreOffice-ban 555:A á ja magyar nyelven ad a leheto a nyelvenmagyarad ja á dosí á tí te á á si szo si thato á ö á zta si ce si á nyszerkeszto ő , Plone tartalomkezelo Plone , ta á á á n kattintva szo kattintva n lhato á kezelo ő ) programoza ) thatjűk az alakzat elforgata alakzat az thatjűk á . A tekno A . á á á s űta s bb. á ra tartalmaz tekno tartalmaz ra á ö lte á e llal fejlesztett, azo fejlesztett, llal á ö ge (a kijelo (a ge ltozatait tű is ltozatait á . Pe . á s a Google va Google a s á s itt a leghate a itt s ő á á sne n egy n sza Python rendszer e rendszer á gai eszko gai á bbi szabad szoftveres pe szoftveres szabad bbi á lda vű á á l aka l ő c az í az c á az ege az á ö bee űl l, amelyek programozhatoamelyek l, ő otog betű Fontforge , á pszerű á á si nyelve. A kifejezetten A nyelve. si sí 1 234 567 890 á r szí r ö gybea veget adhatűnk meg. A meg. adhatűnk veget ta á á ö zta ö le á rrel: tetszo rrel: á sa, a CPython sze CPython a sa, á pí á lsza á s az eredeti BitTor eredeti az s 5: változtatható 555: á szű á sne á pí ő informatikai e informatikai á ő Forgata r na sí á á llalati adatba llalati tett programnyelve tett á á konyabb (leggyor konyabb tett, magas szintű magas tett, á ti saja ti á á ö rnyalja. á ltek, mint a GNU a mint ltek, rnyalatot is bearnyalatotis á llí ő cmozgato á l aűtomatikűsan l á ta is folyamato is ta ő , Django webes Django , ő se á l hajtja ve hajtja l tott pozí tott á ő fordí á ge ellene ge ő ke ő se á t plat .NET ő leges hely leges á á á szlet itt is itt szlet sik szabad sik ikonja s á á gekro sa to valódi á á lis kiad lis ) elér ) ő tervezo á á á t, a vo a t, . A Lib A . ikono cio á á lda 555: Bár 555: á zisfel á gre a gre á rett á Bevezetés re a re ő l ta l á ban á k a k á les á ra á l á k ------á ------ő , ő

Speciális kiadványszer Speciális mellékelta összehasonlítást). (l. LibreLogóé a mint pontokból, pedig nem állnak, Libre a vonalstílus: négyzetekből kis valójában vonalai pontozott Office pontozott a és alakzat pont a Ilyen hiányzott. korábban LibreOffice-ból a ami lehetőség, grafikai olyan akad is felül ezen de ségeit, képes grafikai LibreOffice a bővíti tékben mér jelentős nyújt, LibreLogo a amit let, képességeinek bővítése grafikai LibreOffice A „ifjú”, „blöffje” is: tozatban ( „ffj” és „fj” szereplő nem általában betűkészletekben a de ismertebb, az „ágfa” a (l. a „gy” ilyen kurzív ki: egészíti jelváltozatokkal magyar vábbi to jelek) nyomdai (betűhelyettesítő ligatúrákat zett alapértelme egyedülálló is amúgy körében kesztők dokumentumszer A támogatja!) sem többsége mok progra kiadványszerkesztő a még szö vegszerkesztők, a nemcsak sajnos (Ezt kerül. térköz nagyobb megfelelő tipográfiának magyar a elé pontosvessző A LibreLogo kiegészítő jelenleg külön telepítendő a telepítendő külön jelenleg kiegészítő LibreLogo A Telepítés 3Dáttetszőség), stb.és grafika) (szín átmenetek szöveg, áttetsző Bézier-görbék, (pl. kihasználása képességek grafikai LibreOffice hető elér nem még nyelvéből programozási LibreLogo a segítségével; közösség fordítói LibreOffice a szítése elké honosítások további mellett magyar és angol irány fejlesztési Várható egyszerű illetve szó, programüzenetlefordítását igényli). 130 (összesen honosítható könnyen Python/PyUNO-ban), sor 1300 (mindössze tulajdonságok Egyéb betű moza ba a kelt, helyezhetjű sakkba Jo szerkesztésiiselláthat. feladatokat kiadvány speciális interaktivitásával és zottságával ágya dokumentumszerkesztőbe valamint utasítás; csoportosító hierarchikus a vagy megadás, ség mértékegy közvetlen a mint elemeivel, nyelvi ges különle PDF; a mint val, támogatásá nyomdai olyan szabványok az val; vektorgrafiká nyomdai minőségű nyőfüggetlen, képer a lajdonságaival; tu felsorolt előbbiekben kesztő á pe ő graikai ke graikai á sa á lda erre a LibreLogo sakkta LibreLogo a erre lda á bokat ke bokat á t Logo űtasí Logo t ), „gj” ( „gj” ), á 5: a Lbeoo az LibreLogo a 555: bokat TrűeType betű TrűeType bokat ö k a ta a k 555: Az egyszerű programozási felü programozási egyszerű Az 555: á pesse zzel vagy a lejegyze vagya zzel á á bla „vágja” ta á á (pe vagya ra, á gek. á sokkal kirajzolo sokkal „mayar” pont , „ , „ifjú”, „blöffje” „ifjú”, ő megjön” ke 555: a program tömör felépítésű tömör program a 555: tstsa megrajzolható utasítással á szletbo ------á lda á blarajzolo )

szóban), „gf” („ „gf” szóban), á s megada s . 8 1 3 4 5 6 7 2

á 555: a jelenleg támogatott jelenleg a 555: cí a űl

á sakkta      ő l, a sakkta a l, a , „ ,      moldalon, illetve a melle a illetve moldalon, b á legjobb” á pe á sa á        bla á c , illetve álló vál álló illetve , val is egyszerű is val á ldaprogramja, ahol a ahol ldaprogramja, á n is megigyelheto is n     á bla kerete bla d     e ), valamint ), - - -     

megfog” f      á t e t g ő en fel en á s sza s      kép h 5 ------á á ő - ) - - ,

Matt 3 lépésben (Sütő, 1889) 6 Telepítés LibreLogo LibreOffice-ban az Eszközök » Kiterjesztéskezelő… Programfuttatás » Hozzáadás… gomb és a LibreLogo-0.1.oxt állo- A többsoros LibreLogo programok szerkesztője a mány kiválasztásával. Telepítés után indítsuk újra a LibreOffice Writer dokumentumszerkesztő. Például LibreOffice-t. LibreOffice: http://hu.libreoffice.org, nyissunk meg egy új Writer dokumentumot, és szö- LibreLogo: http://www.numbertext.org/logo/ vegként írjuk be a következőket (a pontosvesszővel kezdődő sorvégek, vagyis a megjegyzések elhagy- Logo eszköztár hatók): Nyissunk meg egy új, üres szöveges dokumentumot tf ; tollat fel ism 36 [ ; 36-szor ismétel a Writerben. Első telepítés után megjelenik a Logo tlsz tetsz ; tetszőleges töltőszín eszköztár (kikapcsolás: Nézet » Eszköztárak » kör vszám 8 ; véletlen átmérőjű kör Logo). Az eszköztár több ikont és egy beviteli mezőt e 8 b 10 ; előre 8 pont, balra 10° ] (Logo parancssor) tartalmaz. Az ikonok leírása: 1 A program indításához kat- Előre: teknőc 10 pontnyit előre, beállítástól tintsunk a Logo eszköztár függően vonalat húzva. Indítás ikonjára. A mellékelt Hátra: teknőc hátra halad 10 ponttal, beállítás- képet a program futtatásával tól függően vonalat húzva. kaptuk. Balra: teknőc elfordítása 15°-kal balra. Program leállítása: Hason- Jobbra: teknőc elfordítása 15°-kal jobbra. lóan a parancssori indítás- Indítás: LibreLogo program (Writer dokumen- hoz, a Logo eszköztár Leállí- tumban lévő szöveg) futtatása. tás ikonjával szakíthatjuk meg a Logo program fu- Leállítás: futó program leállítása. tását. Haza: teknőc kezdőpozíció és kezdőértékek beállítása. Képernyőtörlés: a dokumentum alakzatainak Logo és LibreLogo összevetés törlése. A teknőc pozíciója és beállításai nem A LibreLogo fejlesztés kiindulásként az általános is- változnak. kolai tananyagot vette célba, így az abban szereplő Parancssor az eszköztáron Logo teknőcmozgató és egyéb utasítások meg- egyeznek, illetve alternatívaként használhatók. A parancssor kisebb Lo- A tananyag miatt kerűölt bele olyan űtasítaá ás is a LibreLogoába, mint a go programok beírására, program lassítaá ásaára alkalmas „vaárj”, amire – szemben a gyors rasz- és ismételt végrehajtásá- teres megjeleníteá ást alkalmazoá Logo programokkal – a LibreLogoával valoá ismerkedeáshez nincs szűökseág, mivel az eálsimítottá vektorgrai- ra ad lehetőséget. kűs alakzatok rajzolaása (űáj eálekkel boővíteá áse) szemmel koövethetoő se- Program futtatása: ír- besseággel megy veágbe. junk be egy parancsot a A fontosabb eltérések, használatbeli különbségek: parancssorba, például á á á á A LibreLogo abrak vektoros áalakzatokboá l all-

kör 100, és nyomjuk le 2 3 nak. A bal oldaliá tangram reszeit űtolag ren- deztűök teknoőc es piton alakba (l. 18. oldal).2 az új sor billentyűt (En- 1 4 ter) a parancs végrehaj- 5

4

tásához. A beírt parancs nem tűnik el a parancssor- 1 2 5 7 1 4

5 6 7 7 6 ból, így az új sor billentyű folyamatos nyomva tar- tásával ismételten végrehajtható, amivel egyszerű Alakzatrajzolás. A LibreLogo teknőcmozgató uta- ciklusok kiváltására is alkalmas. A mellékelt (nem sításai vektorgrafikus alakzatokat rajzolnak. Ezek méretarányos) ábra is így, az e 100 b 89 (vagyis akár rajzolás közben is kijelölhetők, módosíthatók. előre 100pt balra 89°) parancs beírásával, és az új A toll felemelése sem jelenti, hoy befejeztük az alak- sor billentyű folyamatos nyomva tartásával készült. zat rajzolását, mert ey vektorgrafikus alakzat több, Program leállítása: a parancssorból indított, még nem összefüggő részből is futó programok az eszköztár Leállítás ikonjával ál- állhat. Más tollvastagság- líthatók le. gal, színnel való rajzolás Parancssor törlése: hosszabb parancs törléséhez új alakzat rajzolását nyomjuk le a Ctrl-A billentyűkombinációt (vagyis a eredményezi, egyéb eset- parancssor helyi menüjében lévő Mindent kijelöl ben a kép utasítással tu- parancs gyorsbillentyűjét) a parancssorban, és dunk új alakzat rajzolá- kezdjük el gépelni az új parancsot. sába fogni. Kitöltés. A tölt utasítás 11 Mai nyomdai (DTP vagy PostScript) pont = 2,54 cm / 72, vagyis lezárja az eddig rajzolt kb. 0,35 mm. LibreLogo Logo és LibreLogo összevetés 7 alakzatot, és kitölti az aktuális töltőszínnel. Nem zőjelezést javasolja: „példa” (de elfogadja a Logo szükséges az alakzat belsejébe pozicionálni, mert az "szó, és a Python 'karakterlánc' szintaxisát is. alakzat vektorgrafikus leírása alapján történik a ki- Alternatív utasítás- és adatszerkezetek. A Libre- töltés. Az összetett alakzatok egymást metsző, illet- Logo a nehézkes, az Imagine Logo esetében ráadá- ve fedő részei összetett minta kialakítását eredmé- sul túlságosan is változatos Logo programszerkeze- nyezik, mint ahogy a mellékelt kép (a korábbi ábra tek, utasítások helyett kevés számú, de áttekinthető kitöltött változata) is mutatja. Python programszerkezeteket kínál. Ilyenek az egy- Blokk és lista. A LibreLogo megkülönbözteti a szerűen használható listák és szótárak, vagy a lista- ciklustörzset és más utasítássorozatot határoló kap- elemeken, illetve karakterláncon végigfutó fut csos zárójelezést a listákétól: előbbi esetben szóköz- -ban/-ben (a Python for+in honosítása) ciklus. Pél- zel, vagy új sorral kell határolni az utasításoktól a da az utóbbira: zárójeleket, listáknál pedig szorosan kell záródnia ez felsorol vmi ; felsoroljuk a bemenet elemeit (ez a megoldás visszafelé kompatibilis a Logóval, fut i vmi-ben [ ki i ] vége azaz az egyszerű LibreLogo ciklusok a Logóban is futnak): felsorol [„alma”, „körte”] ; elemenkénti és felsorol „karakterlánc” ; betűnkénti kiíratás ism 18 [ b 10 téglalap [10, 200] ] vagy Innováció. A LibreLogo újdonságainak egy része a Python nyelv lehetőségeiből fakad, de didaktikai és ism 18 [ ; ciklustörzs kezdete b 10 gyakorlati célból saját megoldásokkal is megköny- téglalap [10, 200] ; méret listával nyíti a vektoros alakzatokkal való munkát. Ilyen ] ; ciklustörzs vége például az órapozíciók használata, amely az alsóbb de nem évfolyamok számára lehetővé teszi a nevezetes szö- ism 18 [b 10 téglalap [ 10, 200 ]] gek megadását a szögekről tanultak előtt is, illetve a Elhagyható és elhagyandó sortörésjel. A Libre- már említett kép utasítás, amellyel a különálló alak- Logóban a sortörést jelölő hullámvonalat csak egy zatokat csoportosíthatjuk a szerkesztés és felhasz- utasítás és bemenő értékei külön sorba kerülése nálás megkönnyítésére (az SVG, EPS formátumú esetén kötelező kitenni. vektorgrafikák is ilyen, egységesen kezelhető alak- előre ~ zatcsoportként tölthetők be a LibreOffice-ba). 100 ; itt kellett sortörésjel előre 100 előre 100 ; itt nem A LibreLogo programozási nyelv Egyszerűbb változóhasználat. A Logo változók érték szerinti hivatkozásában szereplő kezdő kettős- „Helló, Világ!” pont – hasonlóan egy-két Logo megvalósításhoz – A következő program a teknőc aktuális helyén kiír- elhagyható (csak az egybetűs magyar Logo utasítá- ja a Helló, Világ! üzenetet: sokra ügyeljünk, mert azok nem lehetnek változó- címke „Helló, Világ!” nevek). A magyar idézőjelek helyett „írógépes” aposztrófok ez régi :i :j :k ; régi, de használható közé is zárhatjuk a szöveget: :l = :i + :j + :k vége címke 'Helló, Világ!' á á á ez új x y z ; új, de b, e, h, j nem használható A Logo eszkoöztaroná á leávoő parancssorbaná a Writer nem csereli ki aű- zs = x + y + z tomatikűsan az „írogepes” dűpla idezoőjeleket a magyar megfeleloőire (a dokűmentűmban igen). Linűxon az AltGr-Ő eás -P szabvaányos bil- vége lentyűőkombinaácioával megkaphatjűk a magyar ideázoőjeleket. Maás, a Vesszővel elválasztott listaelemek. A listaeleme- magyar nyelvet keveásbeá taámogatoá operaácioás rendszeren az Unicode eás egyeáb karakterkoád ismereteát igeányloő beviteli moádszerek helyett ket vesszővel kell elválasztani a LibreLogóban: keányelmesebb lehet az alternatívá egyszeres íroá ágeápes ideázoőjelek téglalap [100, 200] ; 100×200 pontos téglalap hasznaálata a parancssorban. Kevesebb utasítás. A LibreLogo bár elfogadja a Utasítássorozat Comenius Logo és Imagine Logo felkiáltójeles ér- Az utasításokat egy sorba is írhatjuk: Helló tékadó parancsait, nem tesz különbséget ezek és az címke „Helló” tf h 12 címke „Világ!” Világ!!! értéket kiolvasó utasítások között. á á á á tv! 10 ; régi szintaxis A programban áa „Helloá ” kiíá rasa űtan áfelemeljűök a tollat,á majdá egyá tv 10 ; javasolt szintaxis sorral lejjebb lepűönk, es kiírjűk a „Vilag!”-ot, ahogy a kepen lathato. ki tv ; megjelenítjük a tollvastagság értékét Megjeyzések a = tv ; tollvastagság értéke az „a” változóba A pontosvessző és az azt követő szöveg a sor végéig Alternatív szövegmegadás. A LibreLogo magyar megjegyzésnek számít. honosítása a karakterláncok tárolására a magyar helyesírásnak megfelelő, a Writer szövegszerkesztő előre 10 ; megjegyzés automatikus idézőjelei miatt pedig kézenfekvő idé- 8 Sortörésjel LibreLogo Sortörésjel Pont. Az utasítás a tollnak megfelelő színű és szé- lességű pontot helyez el a teknőc pozíciójában (füg- A sor végi hullámvonal (~) jelöli, hogy a következő getlenül a toll felemelt állapotától). sor (pontosabban bekezdés a Writerben) még az Tollstílus. A teknőc által húzott vonal stílusát ál- előző folytatása. A LibreLogóban csak egy-egy na- lítja be a megadott stílusnév alapján. Az alapértel- gyon hosszú utasítás több sorban (bekezdésben) va- mezett „folyamatos” vonal lecserélhető „ponto- ló elhelyezésére szolgál, hogy ilyenkor is olvasható zott” és „szaggatott” stílusra, illetve listával maradjon a forráskód. egyedi pont-vonás kombinációkat tartalmazó min- hosszú_nevű_utasítás_aminek_bemenő_adatai ~ „ez” „és” „ez” ; három karakterlánc tákat is megadhatunk. L. 2. oldal. á A pont-vonaás kombinaácioákat leíroá á lista elemei: 1. egymaás melletti Ahol ánem koötelezoő a pontosvesszoő, ott áerdemesá elhagyni, hogy hiba pontok szaáma, 2. pontok hossza, 3. egymaás melletti vonaások szaáma, eseten a megfeleloá őá sorraá (vagyisá á űtasítasra) á űgorjoná a Writerá szoö- 4. vonaások hossza, 5. pontok esá vonaások koözoötti taávolsaág, 6. nem koö- vegkűrzor. Az ertekado űtasítasokat sortoöresjel nelkűöl írjűk kűöloön telezoően megadandoá araányossaági teányezoő: ha eárteáke 2, akkor nem a sorba egymaás űtaán, l. eárteákadaás. megadott meáretek, hanem az aktűaális vonalvastagsaág alapjaán alakűl ki a pont-vonaások meárete eás taávolsaága. Teknőcgrafika Tollsarok. A vonalak találkozási pontjában, vagyis Teknőc. A LibreLogo teknőce az eszköztár a csúcsokban alapértelmezés szerint lekerekítést teknőcmozgató ikonjai, vagy a programindí- láthatunk, különösen nagyobb vonalvastagságnál. tás hatására jelenik meg a dokumentum első A beállítás módosítható, l. 2. oldal. oldalának közepén. A teknőc pozícióját és forgatási Zár és tölt. A LibreLogo teknőc nyitott töröttvona- szögét a teknőc alakzatának pozíciója és forgatási lat rajzol útja során. A zár és a tölt utasítás kiadá- szöge adja meg, így ezek kézi módosítása a teknőc- sával az utoljára rajzolt nyitott töröttvonalat (vagy mozgató utasítások kiadásának felel meg. töröttvonalakat, l. következő pont) zárja a program, á á á A á teknoőcá színe,á vonalvastagsaá á á ga viszont á csak jelzi a teknoőc allapo- azaz első és utolsó pontjait összeköti, és az így ka- tat, a kezi modosítas tenylegesen nem valtoztatja meg a teknoőc toll- pott zárt töröttvonalat a tölt esetében az aktuális eás toöltoőszíneá át, vonalvastagsaágaát. Jobbra és balra (röviden j és b). A két töltőszínnel ki is színezi. á á á á á utasítás jobbra, illetve balra forgatja a A ázar űtasítasnak abban az esetben is van ertelme, haá a rajzolas so- teknőcöt. Az eljárások bementő értéke a ran visszakerűá á á öl a áteknoá őc aá toöroá öttvonal kezdoőpontjaba:á a vonalvas- � tagsaágtol es a beallított stílűstol fűöggoő sarkaká csaká zart toöroöttvonal forgatási szög, pl. 60° vagy egyszerűen eseteben jelennek meg helyesen a kiindűlasi csűcsban: 60), a relatív órapozíció (2ó vagy 2h), tollsarok „hegyes” tv 3 e 20 j 120 e 20 j 120 e 20 zár vagy a speciális tetszőleges érték. tf j 120+90 e 25 b 90 ; következő: jobbra 90° tl e 20 j 120 e 20 j 120 e 20 jobbra 90 ; a fokjel elhagyható á á á á j 3ó ; mint az előzők Az ilyen nem zart alakzatoká á a PDF exportaá las soran „megjavűlnak”,á b -1h * 3 ; szintén azaz azonos kezdoő- es vegpont eseten aűtomatikűsan zartak lesz- nek. (Emiatt a melleákelt aábra űágy keászűölt, hogy az űtolsoá megrajzolt b tetszőleges ; véletlen irányba fordul oldal valoájaában keát kűöloön szakaszboál aáll, hogy a PDF-kimenetben is Előre és hátra (röviden e és h). A teknőc előre és megmaradjon a hiaányzoá sarok.) hátrafelé mozgatása. Az eljárások bemenő értéké- Töltőstílus. A paranccsal vonalkázást állíthatunk nek alapértelmezett mértékegysége a modern szá- be a töltőszínen kívül, l. 2. oldal. mítógépes tipográfiai pont (2,54 cm, azaz a nemzet- Az űtasítaá ás bemenoő eárteáke vagy egy 1 eás 10 koözeá esoő szaám, ami a LibreŐice alapeártelmezett vonalkaázaási stílűsaitá jeloöli, vagy egy közi hüvelyk 72-ed része), pl. az 1 az 1pt rövidítése, neágy elemet tartalmazoá lista, ahol az elsoő elem a vonalkaázaás típűsaá de megadható centiméter (cm), milliméter (mm), (1 = saáv, 2 = neágyzetraács, 3 = neágyzetraács eás saáv), a maásodik elem a vonalkaázaás színe,á a harmadik eás negyedik a vonalak taávolsaága eás hüvelyk (" vagy in) is. szoöge. A „toöltoőstílűsá 0” űtasítaá ás kapcsolja ki a vonalkaázaást. előre 10pt Összetett alakzatok kitöltése. Ha rajzolás közben előre 10 ; a pont mértékegysége elhagyható megváltoztatjuk a tollvastagságot vagy a tollszínt, e 2,54cm/7,2 ; mint az előzők b 1"/7,2 ; szintén akkor a LibreLogo nemcsak új töröttvonal, hanem Tollvastagság (röviden tv). Beállítja a toll vonal- új vektorgrafikus alakzat rajzolásába is kezd. A toll vastagságát. Használhatók az előző mértékegységek ideiglenes felemelése viszont nem eredményez új és a tetszőleges érték is. vektorgrafikus alakzatot, mivel az több nem össze- tollvastagság 10 ; 10 pontos vonalvastagság függő töröttvonalat is tartalmazhat. A zár és a tölt tv tetszőleges ; véletlen vastagság (<10pt) utasítások az utoljára rajzolt vektorgrafikus alakzat Tollatfel és tollatle (röviden tf és tl). A minden töröttvonalára egyszerre hajtják végre a zá- toll felemelése után a teknőc nem húz csíkot rást, illetve a kitöltést, ahogy erre a jegyzet 2. oldala mozgás közben. A felemelt tollat a teknőc több példát is hoz. Az előző példa kis módosítása szaggatott körvonala jelzi. Felemelt toll mellett az ugyanezt példázza: alakzat rajzolása nem fejeződik be, mivel a komplex tv 1 e 20 j 120 e 20 j 120 e 20 tf j 120+90 e 10 b 90 ; következő: vektorgrafikus alakzatok nem összefüggő vonalak- tl e 20 j 120 e 20 j 120 e 20 tölt ból, sőt zárt alakzatokból is állhatnak. LibreLogo Teknőcgrafika 9 á á á á á á á á á A peldabaná a „toölt”á űtasítaá s lezarja mindkeá t haromszoöget. Lathatoá, tollszín [0, 0, 0] ; fekete hogy az atfedoő reszek,á akar egyá oönmagat metszoő toöroöttvonalá esete- tollszín [255, 0, 0] ; vörös ben is, olyan ákitoá öltestá eredmenyezhetnek, hogy a kitakartá reszeká kiá- tollszín [0, 255, 0] ; zöld toöltetlenek (atlatszoak)á maradnak. Ha ezt nem szeretneá á nk a pelda- tollszín [0, 0, 255] ; kék ban,á akkorá azá elsoá ő haromszoöget kűöloön toölt űtasítassal toöltsűök ki (l. tollszín [255, 255, 255] ; fehér meg kep űtasítas). tollszín [255, 128, 0] ; narancssárga Kép utasítás Egy-egy színoá összetevoő 8 biten kerűöl taárolaásra, amit itt 0 eás 255 koö- Alakzatcsoportok. A kép utasítást elsősorban vek- zoötti szaámmal adűnk meg. torgrafikus alakzatcsoportok létrehozására használ- Színek számértékkel. Egy számmal is megadhat- juk. A következő példában egy vonalat és egy kör- juk a három színösszetevő értékét. A számokat cél- vonal nélküli, kitöltött kört helyezünk alakzatcso- szerű hexadecimális formában leírni, mert így a portba: hatjegyű szám jegypárainak 0-ff közé eső értéke fe- lel meg a vörös, zöld, kék tartományoknak: kép [ tv 1 e 10 tf kör 10 ] tollszín 0x000000 ; fekete Csoport szétbontása. Az alakzatcsoportot a Libre- tollszín 0xff0000 ; vörös Office egy alakzatként kezeli, amíg nem kérjük a tollszín 0x00ff00 ; zöld tollszín 0x0000ff ; kék felosztását a Rajzobjektumok tulajdonságai eszköz- tollszín 0xffffff ; fehér tár Csoport szétbontása ikonjával. tollszín 0xff8000 ; narancssárga Új alakzat kezdése. Ha lezárás és kitöltés nélkül Áttetszőség. Az áttetszőség negyedik (közkeletű akarunk ugyanolyan vonalvastagsággal és színnek nevén alfa) tartományként megadható a színbeállí- rendelkező új vektorgrafikus alakzatot kezdeni, egy tás során. Lista esetén negyedik elemként, szám egyszerű kép utasítással tehetjük meg: esetén a legmagasabb helyi érték felel az áttetsző- e 10 kép e 10 j 120 e 10 tölt ségnek: A zaászloá rűádjaát bontja keát reászre a keáp űtasítaá ás a peáldaában. tollszín [255, 255, 255, 128]; 50%-ban áttetsző Kép utasítás egymásba ágyazása. Összetett áb- tollszín 0x80ffffff ; fehér (mindkettő) ráknál is lehetőség van az ábra egyes részeinek cso- Néyzet, téglalap, kör, ellipszis portosítására, ha kép utasításokat ágyazunk egy- másba: Külön utasításokkal téglalapot és ellipszis vektor- grafikus alakzatokat, illetve ezek speciális eseteként kép [ kör 15 kép [ kör 5 kör 10 ] ] négyzetet és kört is rajzolhatunk. Alapesetben az Ha felbontjűk a peáldaában szereploő (az alapeártelmezett feálig aátlaátszoá aktuális tollszínnel és kitöltőszínnel, a toll felemelé- zoöld színneká kitoöltoött) ceáltaáblaát a Csoport szeátbontaása ikon segítseá á- geável, egy nagy koört, eás egy keát koört tartalmazoá alakzatcsoportot se esetén pedig körvonal nélkül rajzolja a LibreLogo kapűnk (amely űtoábbi tovaább bonthatoá). az alakzatot a teknőcpozícióval a középpontjában. Összetett ábráinkat célszerű csoportba helyezni az Négyzet. Megadott oldalhosszúságú négyzet rajzo- egyszerű felhasználás érdekében: lása. kép [ főprogram ] négyzet 10 Színek Téglalap. Adott szélesség és magasságú, igény sze- A színek megadása szöveges, szám és lista paramé- rint lekerekített sarkú téglalap rajzolása. téglalap [20, 10] terrel, illetve a tetszőleges értékkel történhet. téglalap [20, 10, 5] Tollszín (röv. tsz). Beállítja a toll színét. Például: á á á á á á á á tsz „zöld” A szeá lesseget, magassagot, es ha szeretnenk, a lekerekítes sűgarat tv 2 kör 10 listaval adjűk meg. Kör. Megadott átmérőjű kör rajzolása. A koör koörvonalaának színeá át aállítottűká soöteátebb zoöldre, a kitoöltoőszíntá kör 10 – az alapeártelmezett feálig aáttetszoő zoöldet – nem moádosítottűk.á Töltőszín (röv. tlsz). Beállítja a kitöltés színét. Ellipszis. Adott szélesség és magasságú ellipszis tlsz „piros” kör 30 rajzolása. Két szög megadásával cikkelyt rajzolha- tlsz „fehér” kör 20 tunk, illetve egy újabb számérték megadásával sze- tlsz „zöld” kör 10 letet (2) vagy ívet (3). Színnevek. 24+1 szín érhető a neve alapján, ilyen ellipszis [40, 30] pl. a „fekete”, „ezüst”, „szürke” stb. színek (teljes lis- ellipszis [40, 30, 0, 90] ellipszis [40, 30, 0, 90, 2] ta a 2. oldalon). A 25. szín a „láthatatlan” szín. ellipszis [40, 30, 0, 90, 3] Ezek a színeká szaámeárteák alapjaán is eleárhetoők, ha a színá szaámaát (0- toál 24-ig szaámozva) egy egyeleműő listaával adjűk meg: Szöveg megjelenítése tsz [0] tlsz [24] kör 10 ; csak fekete körvonal Címke. Az utasítással a teknőc helyén írathatunk ki Vörös, zöld, kék színkódok. Ezzel a három szín- szöveget (l. korábbi „Helló, Világ!” példa), akár összetevővel leírhatók a számítógép megjelenítette ugyanarra a helyre többször is: színek. Listával adjuk meg a szín vörös, zöld és kék betűméret 80 betűszín „piros” színösszetevőjét: címke „❤ ” 10 Szöveg megjelenítése LibreLogo betűméret 60 betűszín „fehér” Vagyis vonalhűázaás az oldal bal felsoő sarkaába, majd az oldal egy tet- címke „❤ ” szoőleges pontjaába. A fenti parancsot toöbbszoör megismeátelve kaptűk betűméret 10 betűszín „fekete” Évi a melleákelt (itt kicsinyített)á aábraát. címke „Évi” Pozíció lekérdezése. A hely visszaadja az x és y Szöveg. Az utasítás az előzőleg rajzolt vektorgrafi❤ - koordinátát tartalmazó listát is: kus alakzat (töröttvonal, téglalap, ellipszis)❤ középre ki hely ; aktuális pozíció ki hely[0] ; x koordináta igazított feliratát állítja be, vagy módosítja. ki hely[1] ; y koordináta j 30 e 30 j 120 e 30 hely [hely[0] + 10, hely[1] + 10] ; irány DK-re á s szöveg „írás” á a ír Oldalméret. Az oldal méretét tartalmazó lista. Lezaárt vagy kitoöltoött alakzatoknaál az ígyá beleírtá szoöveg vízszintesá ki oldalméret ; A4-nél [612pt, 792pt] lesz. A felirat egyűött mozog az alakzattal, kettoős kattintaás űtaán moá- dosíthatoá á. IgyÍ űtoálag is megadhatűnk feliratot az alakzatoknak. A lista segítseá ágeável vonalat hűázhatűnk az oldal toöbbi sarkaába is: Betűszín. Beállítja a címke és szöveg utasításhoz a hely oldalméret ; jobb alsó sarok kiírt szöveg színét. hely [oldalméret[0], 0] ; jobb fölső sarok á á á á á á á á hely [0, oldalméret[1]] ; bal alsó sarok Megjegyzeá s: Az űtasítasban beallított attetszoőseget a LibreLogo meg nem tamogatja. Ismétlődő utasítások (ciklusok) Betűméret, betűcsalád, betűvastagság, betűstí- lus. Betűtulajdonságok megadása a címke és szö- Gyakori programozási feladat valamely tevékeny- veg utasításokhoz. A betűméretet pontban adjuk ség, utasítás vagy utasítássorozat ismételt végrehaj- meg. A betűvastagságot vagy olyan arányszámmal, tása, amelyet ciklusokkal valósítunk meg. ahol a 100 jelöli a normál betűvastagságot, vagy a Ismétlés (röv. ism, vagy a LibreLogóban ismét). Ez „kövér” és „normál” szöveges értékekkel. A betű- a ciklus megadott számban ismétli a kapcsos záróje- család bemenő értéke a betűkészlet neve. A betűstí- lek között megadott utasításokat (programblokkot). lus pedig lehet az alapértelmezett „álló” vagy ism 3 [ e 10 j 120 ] ; szabályos háromszög „kurzív” („dőlt”-ként is). UÜgyeljűönk a szoákoözoökre, vagy sortoöreásre a kapcsos zaároájelek, eás a Graphite betűtechnológia. A betűcsalád utasí- koözbezaárt űtasítaá ások koözoött, amit a LibreLogo, szemben a Logoával, tásban Graphite betűtulajdonságokat is beállítha- megkoövetel! Végtelenszer (röv. vszer). A ciklusnak nincs meg- tunk, például kiskapitálist, valódi méretezett betű- állási feltétele, így addig fut, amíg nem kerül végre- ket, vagy egyszerűen vihetünk be matematikai jele- hajtásra egy kilép, stop vagy eredmény utasítás, ket a Linux Libertine G TeX-módjában: vagy le nem állítjuk a program futását. betűcsalád „Linux Biolinum G:smcp=1” ; kiskap. betűcsalád „Linux Biolinum G:sups=1” ; apró betű végtelenszer [ tf hely tetsz kör 10 ] betűcsalád „Linux Libertine G:texm=1” á á á á á címke „\\sum_k^n_=_1\\alpha_i” \sum_k^n=_1\alpha_i A LibreLogoban a „vegtelenszer” az „ismetles” alternatív neve. Hányadik. A ciklus sorszámát tartal- 112 1 á á á 1 2 Boővebb leíras a lehetoősegekroől: http://www.nűmbertext.org/linűx, mazó változó: 0 1 magyar nyelvűő jegyzet: http://www.nűmbertext.org/libreoice. 3

tf ism 12 [ 9

4

j 1ó e 30 8

Egyéb teknőcgrafikai utasítások 5 7 címke hányadik h 30 6 Törölképernyő (röv. törölkép). Az utasítás törli a ] dokumentum alakzatait (megfelel a Logo eszköztár á á á á á á á Képernyőtörlés ikonjának). A teknoá őc áazá oraá szamlapjaá á nak koözeperoá ől indűl.á Mindigá 1 orat az ora- műtatoá jarasanaká iranyabaá fordűlvaá es aá koözepponttol 30 pontnyiraá Haza. A teknőc kezdőpozícióba (a dokumentum első eltavolodva kiírjűk a „hanyadik” valtozoval a ciklűs 1-toől 12-ig fűto ciklűsvaáltozoájaát. oldalának középpontjába) állítása (megfelel a Logo Ciklusok ciklusokon belül. Az előző példaprog- eszköztár Haza ikonjának). ram javításában a fő (külső) ciklus kirakja a számje- Elrejt és látható. A teknőc elrejtése és láthatóvá gyeket, egy cikluson belüli (vagyis belső) ciklus pe- tétele. dig az ötödórás (12 perces) beosztásokat: Rejtett teknoőc mellett a rajzolaási műőveletek gyorsabbak. betűcsalád „Linux Biolinum G:pnum=1” Irány. A teknőc az adott irányba fordul. Az irányt tf j 1ó szöggel, órapozícióval és képernyő-koordinátával is ism 12 [ e 20 b 1ó * hányadik megadhatjuk: címke hányadik 1112 1 irány 0 ; teknőc északnak fordul j 1ó * hányadik 10 2 irány 3ó ; teknőc keletnek fordul h 20 tv 2 9 3 irány [0, 0] ; az oldal bal felső sarka fele ism 5 [ 8 4 e 20 + 6 tl e 3 7 6 5 Hely. A teknőc az adott képernyő-ko- tf h 20 + 6 + 3 ordináta irányába fordul és odalép, a j 1ó/5 tv 0,5 ] toll állapotától függően vonalat húzva. ] Tetszőleges bemenő érték esetén tet- A program elsoő soraában bekapcsoljűk a Graphite betűőkeászlet araá- szőleges helyre lép: nyos szaámelhelyezeseá át is, hogy a keskeny szaámjegyek, mint a 11- hely [0, 0] hely tetsz ben, koözelebb kerűöljenek egymaáshoz (alapesetben a gyakori toöbbso- LibreLogo Ismétlődő utasítások (ciklusok) 11 á á á á ros tablazatos á elhelyezes ámiattá a szamjegyek űgyanakkora helyet jük az aktuális ciklus sorszámát (a feltételben is). foglalnak el, lasdá azá elsoá ő áoraszaá mlapon,á de ez sima szoá övegbená kerűö- Újra és kilép. A két utasítással a ciklusok végre- lendoő). Az egesz oraknal lathato vastagabb beosztaá á stá űgy kapjűk, hogy a belsoő ciklűs eloá őtt nagyobbá vonalvastagsaá á got allítűnk be, amit hajtása szakítható meg. Az újra hatására a ciklus csak az elsoő beosztas megrajzolasa űtan írűnk felűöl. elejére ugrik a programvégrehajtás, így a soron kö- Hányadik az egymásba vetkező ciklussal folytatódhat a program. A kilép ágyazott ciklusoknál. esetén viszont egyből a ciklus után, azt elhagyva fut A szorzótábla a legis- tovább. mertebb példa az olyan egymásba ágyazott cik- Feltételvizsgálat lusokra, ahol a külső Ha. Az utasítást követő feltétel (logikai kifejezés) (szorzandó) és a belső teljesülése esetén a program végrehajtja a kifejezést (szorzó) ciklusváltozót is követő programblokkot. felhasználjuk. Mivel a ism 36 [ belső ciklusok felülírják a külső ciklus következő e 4 b 10 indulásáig a hányadik változó értékét, egymásba ha hányadik = 12 vagy ~ hányadik = 24 [ kör 10 ] ágyazott ciklusoknál mentsük el az értékét egy új ] kör 10 változóba: A program 36-szoöget rajzol, mikoözben a 12. eás a 24., majd az űtolsoá ism 10 [ ; „kirajzoljuk” a szorzótáblát (l. kép) csűácsnaál (itt maár a ciklűson kívűá öl) koört is rajzol. szorzandó = hányadik A blokk után még egy blokk is szerepelhet, amely a ism 10 [ tv szorzandó * hányadik b 3,6 e 5 ] ; a hányadik értéke itt mindig 10 feltétel nem teljesülése esetén hajtódik végre. ] ism 36 [ á á á á á á e 5 b 10 A (felere kicsinyített) abran 10á átoölcserszerűő alakzatotá á á lathatűnk, ha hányadik % 12 = 0 [ kör 10 ] ~ amelyeká az 1-es,á 2-esá stb. szorzotabla szorzatait abrazoljak a megfe- [ kör 4 ] leloő szelessegűő csíkokkal. ] Ciklusmese. Az ismétlés (ism) ciklus feltételében szereplő hányadik a külső ciklusra vonatkozik, ezt Az eloőzoő programot egyszerűősítveá a felteátel azt vizsgaálja, hogy a ciklűsvaáltozoá maradeák neálkűöl oszthatoá-e 12-vel. Ha igen, 10 pont aát- mutatja be a következő mese: meároőjűő koört rajzol, ha pedig nem, akkor 4 pont aátmeároőjűőt. á á Logikai kifejezések. A logikai kifejezések értéke Hol volt, hol nemá volt, voltá egyszer egy Sűsga nevűő kislany. A tana- ra – áazt remelve, hogyá jo darabig lekoá öti a gyerekeket –, feladta az igaz, vagy hamis lehet. Az egyenlőség műveleti jele osztalynak, hogy adjak oössze a szamokat 1-tol 100-ig. De Sűsga ha- 1 á á ő á a sima = vagy a dupla ==. A nem egyenlőséget a <> marosan jelentkezett,á hogy kesz van.á A tanaá r meglepoődveá kerdezte, hogyan joött ra ilyen gyorsan a jo eredmenyre? Sűsga elarűlta, hogy vagy a != jelekkel. A kisebb vagy egyenlő, és a na- rajzolgatni kezdett űnalmaában, mert kedve nem volt a sok oössze- adaáshoz. Lerajzolt egy poöttyoöt, majd melleá, a koövetkezoő oszlopban gyobb vagy egyenlő műveleti jelek a <= és a >=. A kettoőt, majd meág egy űáj oszlopban haármat, egeászen tízig.á A LibreLo- goával ígyá kaphatjűk meg Sűsga rajzaát: vagy és az és műveletek mellett a nem művelet is tf tv 3 ism 10 [ használható: ism hányadik [ pont e 5 ] ha nem (a > 0 és a <= 10) [ ki „kívül van” ] h hányadik * 5 j 90 e 5 b 90 A peáldaában ha „a” eárteáke kisebb, vagy egyenloő, mint 0, vagy na- ] gyobb mint 10, kiíraá ásra kerűöl a „kívűá öl van” űözenet. Az alapértelmezett igaz, vagy hamis logikai értéket Vagyis 10-szer ismeáteljűök a belsoő ciklűst, ami az eáppen veágrehajtott kűölsoő ciklűs sorszaámaának megfeleloő szaáműá poöttyoöt rajzolja ki egy- kifejezésekben is használhatjuk: maás foöleá (majd visszaleápteti a teknoőcoöt alűlra, eás a koövetkezoő osz- a = igaz lopba aállítja).á Sűsga raájoött, hogy ez az aábra majdnem pontosan ha a [ ki „nagyon igaz” ] [ ki „nem igaz” ] olyan, mint egy feál negyzet.á Egy csűpa poöttyboől aálloá neágyzet aátloájaá- nak keát oldalaán űgyanannyi poötty van, az aátloában pedig a neágyzet A logikai kifejezeást vaároá űtasítaá ások a 0 (eás űöres karakterlaánc, lista, oldalhosszaának megfeleloő poötty talaálhatoá. Ez alapjaán, ha vesszűök a halmaz vagy szoátaár) eárteáket hamisnak, a nem 0 eárteáket pedig igaz- neágyzetben leávoő poöttyoök szaámaának feleát (n*n/2), akkor, mivel ez az nak veszik. A logikai kifejezeásek kiírataá ásaánaál vagy karakterlaánccaá aátloá feleát maár tartalmazza, maár csak az aátloában szereploő poöttyoök á á á á á maásik feleát, n/2-t kell hozzaáadni, hogy megkapjűk a szaámok oössze- alakítasanal az „igaz” vagy „hamis” szot kapjűk: geát 1-toől 10-ig. Ez 10*10/2 + 10/2 = 100/2 + 5 = 55. Szaáz poötty oldal- ki 5 == 5 ; „igaz” jelenik meg hosszűásaágűá neágyzetneál űgyanűágy kell eljaárni: 100*100/2 + 100/2 = b = lánc 2 * 2 == 5 ; b = „hamis” 105000/2 + 50 = 5050. Mígá tanaára beírtaá az oötoöst, Sűsga fejben kiszaá- molta meág az elsoő ezer szaám oösszegeát is. Saját utasítások (eljárások) Amíg. A megadott logikai kifejezés teljesüléséig hajtja végre a ciklustörzsben szereplő utasításokat. A LibreLogo utasításkészletét magunk is bővíthet- jük, például az alapértelmezett négyzet és kör uta- amíg igaz [ e 1 b 1 ] ; végtelen ciklus amíg hányadik <= 5 [ ] ; mint ism 5 [ ] sítás mellé készíthetünk egy saját, háromszög névre á á á keresztelt utasítást is a háromszögek rajzolására. Az A ciklűs felteteleben szereploő „hanyadik” itt a ciklűsra vonatkozik. ilyen új utasításokat eljárásoknak nevezzük, és az Fut -ban/-ben. A ciklusváltozó végiglépked a meg- adott lista vagy karakterlánc elemein: ez (vagy tanuld, eljárás, röv. elj) paranccsal fut i [1, 2, „három”]-ban [ ki i ] 11 á á á fut i „szöveg”-ben [ ki i ] ; ki karakterenként Pythonban csak a dűpla egyenloősegjel hasznalhato műőveleti jel- keánt. A LibreLogo viszont a „ha”, „amíg”,á „eredmeány” űtasítaá ásokban A hányadik változó segítségével itt is lekérdezhet- szereploő logikai kifejezeásekben megengedi a sima egyenloőseágjel hasznaálataát is. 12 Saját utasítások (eljárások) LibreLogo kezdve és (külön sorban) a vége paranccsal befejez- annyit, azaz 360/csűácsszaám foknyit fordűlűnk. Az eljaáraásűnk beme- noő parameátereáboől, a csűácsok szaámaát tartalmazoá „szoög”-boől ígyá hataá- ve hozzuk létre: roztűk meg a fordűlaás szoögeát. Megjegyzeás: az aábraán egy picit elfor- ez eljárásnév gattűk a síkidomokat,á hogy jobban elfeárjenek: a 360/szoögnyi elfor- utasítások dűlaást keát reászletben, az eál rajzolaása eloőtt, eás űtaán hajtottűk veágre: vége ism szög [ b 180/szög e él b 180/szög ] Az eljárásban szereplő utasítások csak akkor kerül- Újrahívás. Az eljárás meghívhatja saját magát is, nek végrehajtásra, amikor az eljárást meghívjuk, amivel ciklusokat, bonyolultabb műveleteket való- azaz nevével hivatkozunk rá, mint a következő pél- síthatunk meg. A következő példa a háromszögraj- da utolsó sorában kétszer is: zoló eljárás újrahívással megvalósított változata: ez háromszög ez háromszög ism 3 [ e 50 j 360/3 ] e 50 j 360/3 vége háromszög vége háromszög j 30 háromszög háromszög Az eljaáraás veágrehajtaása űtaán a hívaá ási pont űtaán folytatoádik a prog- ram, ígyá a peáldaában kirajzoltűnk egy szabaályos haáromszoöget, majd A program nem aáll le a haárom oldal megrajzolaásaánaál, hanem veágte- 30 fokkal jobbra elfordűlva ismeáteltűök meg a haáromszoögrajzolaást. lenseágig ismeátli azt. A gyakorlatban a LibreLogo/Python alapbeaállí-á Bemenő értékek. Az eljárásnév után felsorolt vál- taás csak ezer űájrahívaá ást engedeályez. A meályseági, vagy a gyakran eloőbb jelentkezoő memoáriakorlaátot eleárve a program befejezi műőkoö- tozók tartalmazzák az eljárás bemenő értékeit. Az deáseát. (Az űájrahívaá ást tartalmazoá eljaáraások aáltalaában tartalmaznak eljárás hívásánál, az eljárásnév után adjuk meg az valamilyen eroősebb korlaátot, ígyá az ilyen leaállaásra ritkaán kerűöl sor.) aktuális bemenő értékeket. Stop. Az utasítással kiléphetünk az eljárásból, vagy- ez háromszög méret is a program az eljáráshívás után folytatódik. tollvastagság méret ez fa n ism 3 [ e 50 j 360/3 ] zár ha n < 2 [ stop ] vége e n b 50 fa n/2 j 100 fa n/2 háromszög 1 j 30 háromszög 3 b 50 h n vége A peáldaában a „meáret” bemeneti vaáltozoá segítseá ágeável aállítjűká be a haá- romszoög vonalvastagsaágaát. A haáromszoöget a zaár űtasítaá ással le is fa 40 zaárjűk, hogy minden sarka lekerekítveá legyen. Több bemenő érték. Több bemenő érték esetén az A farajzoloá eljaáraás n hosszűásaágűá aágat rajzol, majd elaágazaást rak az aág veágeáre a koövetkezoő moádon: keátszer hívjaá meg sajaát magaát, hogy eljárás hívásánál egyszerűen felsoroljuk (vessző bal esá jobb oldali, feleakkora aágat rajzoljon. Ezt minden aág rajzolaá- nélkül) a bemenő értékeket (vagy az azokat vissza- saánaál ismeátli, amígá a rajzolandoá aág kisebb nem lesz, mint 2 pont. Ekkor maár nem rajzol elaágazaást a program, hanem visszateár az eloő- adó kifejezéseket). zoő hívaá ás helyeáre. Az elaágazaás megrajzolaása űtaán az eljaáraás vissza- ez háromszög méret stílus leápteti a teknoőcoöt az aág elejeáre, hogy folytatni tűdja az aágak rajzo- tollvastagság méret laásaát a megfeleloő helyroől. A teknoőc mozgaása szemmel koövethetoő moá- tollstílus stílus don műtatja a program műőkoödeáseát. ism 3 [ e 50 j 360/3 ] zár További példa. Az előző eljárás kis bővítésével ja- vége víthatunk a fa megjelenítésén: háromszög 1 „szaggatott” j 30 ez fa n háromszög 3 „pontozott” tv n/5 ha n < 2 [ A peáldaában a haáromszoög vonalstílűsaá át is beaállítjaá az eljaáraás egy maá- tlsz [0, 127 + ~ sodik bemenoő erteá ák alapjaán. vszám 128, 0, 200] További példa. A következő példában a „három- kör vszám 50 stop ] szög” eljárás általánosítása, a „sokszög” szerepel. tl e n tf b 50 fa n/2 Segítségével kirajzoljuk a háromszögtől a tízszögig j 100 fa n/2 a szabályos síkidomokat. b 50 h n vége ez sokszög szög él 5 ism szög [ e él b 360/szög ] 6 kép [ tsz „barna” fa 50 ] tölt szöveg szög 4 vége 7 A barna színűá ő aágak vastagsaága az aág hosszaának oötoöde, eás a legki- sebb aágak vegeá áre a v(eáletlen)szaám fűöggveánnyel veáletlen aátmeároőjűő, ism 8 [ 3 aáttetszoő veáletlen zoöld koöroöket teszűönk. A foőprogramot a keáp elembe sokszög 2 + hányadik ~ 8 zaártűk, hogy a koöroök eás vonalak egy alakzatcsoportba kerűöljenek. 60 / (2 + hányadik) 10 9 tf e 18 j 360/8 tl Saját függvények ] A függvények kimeneti értéket visszadó eljárások. á á á á á á á A peldaban a sokszoög eljaras ket bemenoő erteket kap: a „szoög” nevűő Az eloőzoő peálda v(eáletlen)szaám fűöggveánye a bemeneti eárteákeáneál ki- bemeneti vaáltozoá a szoögek (csűácsok) szaámaát, az „eál” pedig egy eál sebb veáletlen toörtszaámmal teár vissza. Ezeárt a „koör vszaám 50” lehet hosszaát fogja tartalmazni. Az eljaáraás űtaán leávoő foőprogram egy olyan „koör 0” eás „koör 49,999” is. Sajaát fűöggvenyeketá az „eredmeány űtasíá- ciklűs, amely 3 eás 60/3, majd 4 eás 60/4 stb. egeászen 10 eás 60/10 beme- taással” hozhatűnk leátre. noő eárteákekkel hívjaá meg a sokszoög eljaáraást (mivel azt szeretneánk, hogy a síkidomoká koözel azonos meáretűőek legyenek, ezeárt nem az eál- Eredmény. Kilépés az eljárásból az eredmény utasítás hosszűk, hanem a kerűöletűök lesz egyseágnyi, jelen esetben 60 pont). után megadott kifejezés értékével, vagyis a saját Az egyszerűő sokszoögeket koörbejaárva teljes fordűlatot, vagyis 360 fo- kot teszűönk meg. Szabaályos sokszoögekneál minden csűácsnaál űgyan- függvény visszatérési értékével: LibreLogo Saját függvények 13 ez neme név ha a = 1 [ a = 0 tölt ] ha név = „Juliska” [ eredmény „nő” ] ha név = „János” [ eredmény „férfi” ] Globális változók eredmény „nem tudom” vége Alapesetben a változók csak az adott eljáráson vagy ki neme „Juliska” a főprogramon belül érvényesek. Ha azt szeretnénk, ki neme be „Kérem a keresztnevét:” hogy minden eljáráson belül elérhetők legyenek, adjuk ki a globálisváltozó (röviden globvál vagy A „neme” fűöggveány „Jűliska” bemeneti eárteák eseteán „no”-vel, „Jaá- á á á ő a LibreLogóban globális) parancsot: nos” eseteán á„feri”-valá ter vissza, kűá öloönben ápedigá á „nem átűdom”-mal. Az elsoő hívas eredmenye „noő”, a masodik hívasnal a gyari „be” fűögg- globális k, l, m veány paárbeszeádablakaába beírtá neáv lesz a „neme” bemenete. Zárójelezés. Több bemenő értéket váró, esetleg Értékadás eljáráson belül. Ha a globális változók- összetett kifejezésekben szereplő függvényhívások- nak értéket is szeretnénk adni az eljáráson belül, nál a bemenő értékeket zárójelbe zárjuk, vesszővel nemcsak kiolvasni azt, akkor az eljárásban is meg elválasztva: kell adnunk a globális parancsot a változó nevé- ez átlag x y vel. eredmény (x + y) / 2 vége Számok

; k = (átlag 5 10) ; nem jó A tetszőleges méretű egész számok mellett törtszá- k = átlag(5, 10) ; jó mokkal (lebegőpontos számokkal) végezhetünk mű- k = átlag (5, 10) ; jó veleteket. A négy alapművelet, az összeadás, kivo- á á á á á á á Egy ábemenoő ertekneá l a zarojelezes egyszerűő kifejezeá á sekben elhagy- nás, osztás, szorzás mellett gyakrabban használjuk a hato, de hiba eseten itt is ki kell tennűönk a zarojeleket. dupla perjellel, illetve százalékjellel megadott mara- Változók dékos osztást, és a hatványozást: Elhagyható kettőspont, Unicode betűk és alá- ki 5 // 2 ; 5/2 maradékos osztással, vagyis 2 ki 5 % 2 ; az eredmény 5/2 maradéka, vagyis 1 húzásjel. A változónevek az Unicode karakterkész- ki 5**3 ; 5 * 5 * 5 = 125 let betűiből, aláhúzásjelből („_”), számokból (kivéve Megjegyzeás. A LibreLogoában az osztaás toört szaámot eredmeányez, mígá a név első karaktereként) és egy elhagyható kezdő Pythonban ez csak a 3-as vaáltozattoál vaált alapeártelmezetteá: kettőspontból állhatnak. x = 5/2 ; 2,5 (Python 2-ben viszont 2) A neávkezdoő kettoőspont (eredetileg az eárteák szerinti hivatkozaást jele Egész. A függvény egész számmá alakítja a bemenő a Logoában) hasznaálataának eloőnye a magyarban, hogy a „j” eás „b” pa- rancsroövidíteá ás nem űötkoözik a „:j” eás a „:b” vaáltozoákkal, de eárdemes tört számot (annak egész részét véve) vagy karak- inkaább a szabad k, l, m ... z betűőket vaálasztani roövid vaáltozoánevkeá ánt. terláncot: Kisbetű nem egyenlő nagybetűvel. A változóne- ki egész 4,9999 ; eredmény: 4 vek (szemben a parancsokkal, vagy az alapértelme- k = egész „5000” zett változókkal) már akkor is különböznek, ha csak ki k + 1 ; eredmény: 5001 ki 1 + egész be „Szám?” ; ki a bemenet + 1 a betűk méretében van különbség. Tört. A függvény tört számmá alakítja a bemenő K = 1 k = 2 egész számot vagy karakterláncot: ki K + k ; az eredmény 3 ki 1 + tört be „Szám?” ; ki a bemenet + 1,0 Π. A π (alternatív neve pi) speciális változó, előre Véletlenszám (röv. vszám vagy véletlen). A függ- meghatározott értéke 3,14 159 265 358 979. Példa a vény a megadott számnál kisebb, de nullánál na- kiíratására: gyobb, vagy egyenlő véletlen törtszámot ad vissza. ki π ; írhatunk „ki pi”-t is. ki vszám 100 ; 0–99,9˙ közötti tört ki 1 + egész vszám 100 ; 1–100 közötti egész Értékadás A fűöggveány (alternatívá neáven „kivaálaszt”) lista megadaása eseteán veá- A LibreLogóban nemcsak eljáráshívással, hanem letlen listaelemet ad vissza. egyenlőségjellel is értéket adhatunk a változóknak: Egyéb műveletek. A gyök, kerekítés (röv. kerek), k = 1 ; egész szám abszolútérték (röviden absz vagy abs), sin és cos l = 1,0 ; tizedestört a nevének megfelelő műveletet végzi el. m = „szöveges változó” ; karakterlánc, itt n = be „adatbevitel:” ; párbeszédablakkal Bitműveletek. Az &, |, ^ műveleti jelek a bitenkén- o = [1, 2, „három”] ; lista ti és, vay, kizáró vay műveletnek felelnek meg. p = {0: „nulla”, 1: „egy”} ; szótár Min és max. A függvények a megadott lista mini- tíz = 0b1010 ; bináris szám ezer = 0x3e8 ; hexadecimális sz. mum, illetve maximum értékét adják vissza. kilenc = 0o11 ; oktális szám ki min (1, 2, 0) ; ki: 0 Az értékadó utasításokat külön sorba helyezzük el. ki max [5, 7, 8, 9] ; ki: 9 Blokk elején hagyhatunk egy értékadást ugyanazon Karakterláncok sorban, illetve nem értékadó utasítás követheti az A karakterlánc tetszőleges hosszúságú szöveg táro- értékadást: 14 Karakterláncok LibreLogo lására alkalmas változótípus. A LibreLogóban több Egyéb Python függvények. A Python egyéb nem lehetőség van a karakterláncok megadására. A java- honosított függvényei is elérhetők a LibreLogóban, solt forma a magyar helyesírást követi: például: k = „” ; üres karakterlánc A = „szöVege ” l = „példa” ; lánc öt karakterből A.upper() ; nagybetűsítés: „SZÖVEGE ” A.lower() ; kisbetűsítés: „szövege ” A beíraá ást a Writer aűtomatikűs ideázoőjelcsereáje egyszerűőveá teszi A.capitalize() ; nagy kezdőbetűsítés: „SzöVege” minden operaácioás rendszeren. A.find(„e”) ; balról első előfordulás: 4 Ezenkívül alkalmazhatjuk a Python egyszeres „író- A.rfind(„e”) ; jobbról első előfordulás: 6 gépes” idézőjeles megadását is: A.replace(„sz”, „f”) ; csere: „föVeg” A.split(„V”) ; darabolás: [„szö”, „eg”] k = '' ; üres karakterlánc A.strip() ; szóközök levágása: „szöVeg” l = 'példa' ; lánc öt karakterből Javasolt megismerkedni a szabaályos kifejezeásekkel is (l. kesoá őbb), Csak betűők (nem íraá ásjelek stb.) eseteán a klasszikűs Logo megadaásra amelyek nagy meártekbená leegyszerűősítiká eás felgyorsítjaá ák a szoöveg- is lehetoőseág van, opcionaálisan annak lezaáraásaával: kezeleást. k = " ; üres karakterlánc, vagy "" Sortörés karakter. A \n a sortörés karaktert jelöli l = "példa ; lehet "példa" is. a karakterláncokban. Ennek megfelelően több sor- Összefűzés. Az összeadásjellel fűzhetünk össze ka- ban jelenik meg a kiírt szöveg a LibreLogóban is. rakterláncokat: címke „Libre-\nLogo” ; Libre- és Logo k = „macska” + „jancsi” ; k = „macskajancsi” Formázott karakterláncok. A %d helyére számot, Többszörözés. A karakterláncok többszörözése, a %s karaktersorozat helyére szöveges változó érté- vagyis ismétlődő összefűzése látványos példája a két illeszthetjük be, ha a karakterlánc után száza- Python különleges lehetőségeinek: lékjellel elválasztva megadjuk a változót is: ki „példa” * 100 ; példapéldapélda... (100-szor) ki „Száma: %d.” % 5 ; „Száma: 5.” ki „Neve: %s.” % „Pista” ; „Neve: Pista.” Karakterek. N karakterből álló karakterlánc karak- ki „Száma: %s.” % lánc 5,5 ; „Száma: 5,5.” terei 0-tól n-1-ig számozva érhetők el a következő A d, illetve s előtt számot is megadhatunk, ami azt módon: jelöli, hogy hány karakterpozíciót foglaljon el az ér- szöveg = „példa” ki szöveg[0] ; első karakter ték, függetlenül a hosszától: ki szöveg[4] ; itt utolsó karakter ki „Száma: %5d.” % 5 ; „Száma: 5.” Láncvégi karakterek. Mínusz számozással a ka- Ha egyszerre több beillesztendő értékünk van, ak- rakterlánc végéről érhetünk el karaktereket: kor zárójelben, vesszővel elválasztva soroljuk fel a szöveg = „példa” változókat (l. fix listák): ki szöveg[-1] ; utolsó karakter ki „%d: %s.” % (5, „Pista”) ; „5: Pista.” ki szöveg[-5] ; itt első karakter Részláncok. Kettőspont segítségével a karakter- Kulcs-érték párokat tartalmazó szótárakból is kiol- lánc részletét kaphatjuk vissza: vashatjuk az adatokat (l. szótárak), ha a %(kulcs)s s = „példa” formában hivatkozunk az értékre a karakterlánc- ki s[:3] ; a[3] előtti: „pél” ban: ki s[3:] ; a[3]-tól: „da” Adat = {„neve”: „Pista”} ki s[1:4] ; a[1]-től a[4] előttig: „éld” ki „Neve: %(neve)s.” % Adat ; „Neve: Pista.” ki s[:-1] ; a[-1] előttig: „péld” Darab (röv. db). A lánc hosszát megadó függvény. Szabályos kifejezések ki db „példa” ; Kimenet: 5 (db karakter) A modern programozási nyelvek szinte kivétel nél- Módosítás. Karakterláncok helyben nem módosít- kül támogatják ezt a mintaillesztési módszert, hatók, szemben a listákkal, de a változó felülírásá- amellyel a karakterláncokon végzett műveletek je- val hasonló hatást érhetünk el: lentősen egyszerűsíthetők. A = „VAKÁCIÓ” ŐÍ A LibreŐice Kereseás eás csere fűnkcioájaában is megtalaálni regűlaáris amíg A [ IŐÍ kifejezeásek neáven, l. LibreŐice sűágoá. (A szabaályos kifejezeásek ha- címke A CIŐÍ á á á AÍCIŐÍ sonlo helyen jelentek meg eredetileg azá informatikaá ban: elsoőkent A = A[1:] ; levágjuk az első betűt KAÍCIŐÍ Ken Thompson QED szoövegszerkesztoá á őjeben,á kesoőbb a standardá űniá - tf e 12 ; egy sorral feljebb AKAÍCIŐÍ xos „ed” szoövegszerkesztoő es egyeb segedprogramok nepszerűősítet- ] VAKAÍCIŐÍ teák.) .* (pont csillag). Az egyik leggyakrabban alkalma- Eleme-e. A ciklusoknál megismert -ban/-ben se- gítségével megvizsgálhatjuk, hogy egy adott karak- zott minta a szabályos kifejezésekben a tetszőleges ter vagy karakterlánc része-e a másiknak: karaktersorozatot jelölő .* (pont csillag). á á á á ha „x” „mátrix”-ban [ ki „van benne x betű” ] Masholá is talalkozhatűnká ilyen mintailleszteá ssel. A Google kereseá - seknel (itt igazá csaká szokoözoökkelá hatarolva, szavakra műőkoödik)á es a Lánc. A lánc függvénnyel karakterlánccá alakítható parancssori allomanynevekneá á l a sima csillag, az SQL adatbazis-ke- a más típusú változók értéke: zeloő nyelv LIKE parancsanaá l a % jel jeloöliá a átetszoá őleges karaktersoá - rozatot.á A legtoöbb lehetoőseget áazonban keá tsegkíá vűöl a szabaá lyosá kife- a = lánc 5,5 ; szöveg: „5,5” jezesek, annak is kűöloönboözoőkeppen boővített valtozatai nyűjtjak. A szabályos kifejezéseket három honosított függ- LibreLogo Szabályos kifejezések 15 vény támogatja a LibreLogóban: Listák Talál. A függvény egy szabályos kifejezést (a kere- A LibreLogóban Python listákat használhatunk. sési mintát) és egy karakterláncot vár. Eredménye Azzal a formai megkoöteássel, hogy a listaákat hataároloá kapcsos zaároáje- pedig egy olyan lista, ami a karakterlánc keresési lek tapadnak (vagyis nem lehet szoákoöz a belsoő oldalűkon). mintára illeszkedő részleteit tartalmazza. Ha nincs L = [] ; üres lista ilyen, akkor az eredmény egy üres lista. M = [6] ; egyelemű lista M = [6,6] ; egyelemű lista (6,6-tal) szavak = talál(„\w+”, „A kutya ugat, nem?”) A listák létrehozásánál az elemeket vesszővel vá- A fenti fűöggvenyhíá vaá ás eredmeánye az „A”, „kűtya”, „űgat” eás „nem” karakterlaáncokat, vagyis a megadott szoöveg szavait tartalmazoá lis- lasztjuk el egymástól. ta, mivel a keresesiá mintakeánt megadott szabaályos kifejezeás jelen- N = [6, 6] ; kételemű lista teáse „egy, vagy toöbb betűőt tartalmazoá karaktersorozat”. Keres. A függvény a talál függvényhez hasonló Elemek elérése. n-elemű lista elemeit 0-tól n-1-ig bemeneti értékeket vár. Az eredmény az első illesz- számozva érhetjük el a lista[elem száma] alakban: kedő szövegrészlet adatait tartalmazza, vagy ha ki N[0] ; első elem kiíratása nincs találat, akkor az ennek hiányát jelölő „semmi” N[1] = „lánc” ; N = [6, „lánc”] á á á á á á érték. A találati érték igaz értéknek, a „semmi” ha- Ahogy áa fentiá peldan lathato, a listaelemek tetszoőleges adattípűsű- mis értéknek számít a logikai kifejezésekben, így a ak, akar listak is lehetnek. Mínusz indexekkel a lista végéről érhetjük el az ele- feltételvizsgálatokban is: meket: szó = be „Kérek egy tetszőleges szót” ki N[-1] ; az utolsó elem („lánc”) ha keres(„sz”, szó) [ ] ; = ha „sz” szó-ban [ ] Véletlen elemet ad vissza a kiválaszt függvény: ha keres(„^p.p$”, szó) [ ki „találat” ] [ ki ~ ki kiválaszt [„alma”, „körte”, „barack”] „nincs találat” ] Összefűzés. Listákat az összeadásjellel fűzhetünk A szabaályos kifejezeás jelenteáse az űtolsoá sorban: Ha a megadott szoá össze: p-vel kezdoődik, a maásodik karaktere tetszoőleges, a harmadik, egyben a karakterlaánc veágeán talaálhatoá karaktere pedig szinteán a „p” betűő Z = N + N ; Z = [6, „lánc”, 6, „lánc”] (peáldaáűl „pap”, „peáp”, „pűáp”), kiírjaá hogy „talaálat”, kűöloönben pedig Darab (röv. db). A függvény visszaadja a lista elem- hogy „nincs talaálat”. Cserél. A függvény három bemenő értéke a mit számát: (szabályos kifejezés), mire (hivatkozhatunk benne ki db Z ; A kimenet 4 az illeszkedő karakterláncra, sőt annak részeire is) Rendez. A függvény új, rendezett listával tér vissza és miben. a megadott lista alapján. írás = cserél(„[A-Z][^.?!]*!”, „”, írás) Z = rendez Z ; Z = [6, 6, „lánc”, „lánc”] A peálda kitoörli a felszoálítoá á mondatokat a karakterlaáncboál, vagyis Sor. A függvény egy bemenő érték esetén olyan lis- minden nagybetűővel kezdoődoő, pontot, keárdoőjelet, felkiaáltoájelet nem tát ad vissza, amely 0-tól a bemenő érték mínusz 1- tartalmazoá, de felkiaáltoájelre veágzoődoő tetszoőleges hosszűá karakterlaán- cot. ig tartalmaz elemeket: A szabályos kifejezés jelölései. A LibreLogo a t = sor 5 ; t = [0, 1, 2, 3, 4] Python szabályos kifejezéseket ismeri fel. A követ- á á á á á á á Az „ismetles” ciklűs alternatívajakent a „sor” fűöggvenyt kombinaá ál- kező lista a legalapvetőbb jelöléseket sorolja fel: hatjűk a á„fűt -ban/-ben” ciklűssal.á Kűölsoő ciklűsok ciklűsvaltozoit . ; tetszőleges karakter ezen a modon koönnyebben elerhetjűök. * ; előző karakter 0, vagy többször fut k sor 10-ben [ ki k ] .* ; tetszőleges karakter 0, vagy többször Két bemenő értékkel a kezdőérték is megadható: a* ; „a” karakter 0, vagy többször a+ ; „a” karakter 1, vagy többször t = sor 1 5 ; t = [1, 2, 3, 4] [a-d] ; karaktertartomány („a”, „b”, „c”, „d”) Hárommal pedig a lépésköz: [A-Z] ; tetszőleges nagybetű (nem ékezetes) [A-ZÁÉ] ; latin nagybetűk, plusz „Á” és „É” t = sor 1 10 2; t = [1, 3, 5, 7, 9] [-b] ; „-” karakter vagy „b” Eleme-e. A „-ban”/„-ben” segítségével itt is meg- \. ; pont karakter [.] ; pont karakter vizsgálhatjuk, hogy egy adott érték eleme-e a listá- [.*+] ; pont, csillag vagy plusz karakter nak: [^.*+] ; tetszőleges, kivéve „.”, „*”, „+” jel \w ; tetszőleges betű, szám vagy aláhúzásjel Z = [1, 2, 5] (Ft|\$) ; „Ft” vagy „$” ha 5 Z-ben [ ki „benne” ] ^vmi ; „vmi” a karakterlánc elején Üres-e. Üres listával, a darab függvénnyel, vagy vmi$ ; „vmi” a karakterlánc végén \bez\b ; „ez”, mindkét oldalán szóhatárral közvetlenül a változóval is megvizsgálhatjuk, hogy üres-e egy lista: A cserél függvény második bemenő értékében a ha L = [] [ ki „üres” ] szabályos kifejezés zárójeles csoportjaira hivatkoz- ha db L = 0 [ ki „üres így is” ] hatunk a \\1, \\2 stb. számozással: ha nem L [ ki „és üres így is” ] írás = cserél(„(\w+) (\w+)”, „\\2 \\1”, írás) Részlisták. A LibreLogo (Python) listakezelésének A peáldaában felcsereáljűök a szomszeádos szavakat. egyik kényelmes lehetősége, hogy a kettőspont se- 16 Listák LibreLogo gítségével részlistákra hivatkozhatunk (részletesen A szótáraknál egy másik megoldást is megvizsgá- l. a karakterláncoknál). lunk az n-dimenziós tömbök létrehozására. ki Z[2:5] ; részlista 2–4. indexű elemekkel Z = Z[:-1] ; utolsó elem törlése Halmazok Több elem cseréje. Az értékadás bal oldalán is sze- A halmazokban – szemben a listákkal – az elemek repelhet részlista, amivel egy lépésben módosíthat- nem ismétlődhetnek, illetve nem számít az elemek juk a lista több elemét is: sorrendje. Halmazokat listákból hozhatunk létre a Z = [1, 3, 3] halmaz utasítással. Z[1:2] = [2] ; eredmény: Z = [1, 2, 3] A = halmaz [2, 3, 2, 1] ; halmaz: {1, 2, 3} Z[1:2] = [5, 5] ; eredmény: Z = [1, 5, 5, 4] Amint a példa jelzi, a halmazzá alakítással eltűnnek Beszúrás. Ha üres részlistára hivatkozunk, akkor az ismétlődő elemek. az adott hely elé szúrhatunk be elemeket: Megjegyzeás: A Python 2.7-toől maár a halmazok szokaásos matematikai Z = [2, 2] jeloöleásmoádjaával, a kapcsos zaároájelek koözoötti felsorolaással is leátrehoz- Z[1:1] = [10] ; eredmény: Z = [2, 10, 2] hatűnk halmazokat. Amint a LibreŐice beeápítettá Python 2.6-ja fris- sűöl egy űájabb vaáltozatra, a LibreLogoában az eloőzoő peáldaát ígyá is írhatá - Lista megfordítása. A következő eljárás visszaad jűk majd: egy a bemeneti lista elemeit fordítva tartozó listát. A = {1, 2, 3} eljárás fordít k Műveletek. A halmazokon alkalmazhatjuk a lista- ha db k = 1 [ eredmény k ] eredmény fordít(k[1:]) + k[0:1] műveletek egy részét, ilyen az elemszám (db) és az vége eleme-e (-ban/-ben) művelet. Az üres-e műveletnél ki fordít [1, 2, 3, 4] ; ki: [4, 3, 2, 1] az elemszám mellett az üres halmazzal tesztelhe- á á á á tünk: Azá eljaá raá s oönhivatkozassalá oldja meg aá feladatot:á á minden fűöggveá ny- ha A = halmaz [] [ ki „üres halmaz” ] hívasnal a listaá elsoő á elemeá t az eredmenyá vegereá átesszűáök, elejere peá á- ha db A = 0 [ ki „üres halmaz így is” ] digá a maradek fordítottjat, amit a „fordít” eljaá raás ismeátelt meghíva- ha nem A [ ki „és üres halmaz így is” ] saval kapűnká meg. Az elsoá ő elemet tartalmazo reszlistaá tá a 0:1á index- szel valasszűk ki, a masodik stb.á elemet tartalmazo reszlistat pedig Halmazműveletek. A &, az 1: indexszel. Amint a „fordít” bemenete egy elemet tartalmaz, azt a & C a | C adjűk vissza. Ez az oönhivatkozoá eljaáraás meálysegiá korlaátja. |, −, ^ műveleti jelek a Az eljárás a bemeneti karakterláncot is megfordítja, metszet, unió, különbség, ami jelzi, hogy a karakterláncok speciális listaként szimmetrikus különbség a − C a ^ C kezelhetők: halmazműveletek elvégzé- ki fordít „kultúra” ; ki: „arútluk” sét teszi lehetővé. Megjegyzeás: a Python gazdag fűggveányvaálaszteákot biztosítá a legtobb A = A – halmaz [3] ; kivesszük a 3-at A-ból á á ö á á á áö A = A | halmaz [5] ; betesszük az 5-öt A-ba feladathoz, így a á listak megfordítasahoz is. A „reverse” fűöggveny helyben megfordítja a lista elemeit: Felsorolás. A halmazok elemeit nem érhetjük el in- L = sor 5 ; L = [0, 1, 2, 3, 4] L.reverse() ; L = [4, 3, 2, 1, 0] dex megadásával, de a listákhoz hasonlóan a fut Többszörözés. A lista elemeit ismételve nagyobb -ban/-ben ciklussal végiglépkedhetünk rajtuk. listákat hozhatunk létre: Rendezés. A halmazok elemeit sorba rendezhetjük a korábban látott rendez függvénnyel, amely a hal- listanullaegyekkel = [0, 1] * 2 ; [0, 1, 0, 1] listaszáznullaelemmel = [0] * 100 ; [0, 0, …, 0] maz elemeit tartalmazó rendezett listával tér vissza. N-dimenziós tömbök. A lista egydimenziós tömb Lista. Listára alakításra használhatjuk a lista pa- adatszerkezetnek felel meg. Mivel azonban elemei rancsot is: listák is lehetnek, n-dimenziós tömböket is megva- betűlista = lista halmaz „valamilyen szöveg” á á á á á á lósíthatunk velük: A peálda a halmaz fűöggveá ny masik keá pesseget is beműtatja: karaká - ez tömb n m terlanc bemenet eseten a karakterlanc karaktereinek halmazat adja T = [] ; ide kerül n darab m elemű lista vissza. ism n [ T = T + [[0] * m] ] Példa. A következő példaprogram Eratoszthenész eredmény T prímszám-szitáját valósítja meg halmazok segítsé- vége gével: T = tömb(3, 4) ez szita n számok = halmaz sor(1, n + 1) ki T[0] ; az első listaelem: [0, 0, 0, 0] ism gyök n [ szám = hányadik + 1 T[0][0] = 1 ; [[1, 0, 0, 0], ism n / szám [ T[2][3] = 2 ; [0, 0, 0, 0], számok = számok – ~ ki T ; [0, 0, 0, 2]] halmaz([szám * (hányadik + 1)]) ] ] A peálda keátdimenzioás, vagyis sorokba eás oszlopokba rendezett szaá- eredmény számok mokat tartalmazoá toömb (maátrix) kezeleáseát műtatja be. A toömb eljaá- vége raás olyan n elemet tartalmazoá listaát ad vissza, ahol minden lista- elem egy m darab nűllaát tartalmazoá lista. Keát index megadaásaával ki szita 10 ; eredmény: [1, 2, 3, 5, 7] eleárhetoők eás moádosíthatoá ák a listaában leávoő listaák elemei. A prímszaá ám-szita algoritműsa (menete) a koövetkezoő: vegyűök a ter- LibreLogo Halmazok 17 meászetes szaámok halmazaát 1-toől n-ig. Vegyűök ki 2, 3, ... n toöbbszoöroö- ember = {} ; törlés üres szótárral seit, ígyá a veágeán csak a prímeká maradnak a halmazban. A szaámokat felesleges n gyoökeáneál tovaább vizsgaálni, mert az űtaána koövetkezoő Listához hasonló műveleteket használhatunk. A kö- szaámok n-neál kisebb toöbbszoöroöseit gyoök n-neál kisebb szorzoával kap- vetkező példában megfordítjuk az előző szótárt, hatjűk meg, vagyis ezeket a szaámokat maár egy koraábbi leápeásben ki- vettűök. azaz az életkorhoz rendeljük az adott életkorú sze- A következő változat mintegy 50-szeres sebességgel mélyek listáját: hajtódik végre az előzőhöz képest: kor = {} ez szita n fut k ember-ben [ számok = halmaz sor(1, n + 1) l = ember[k] ism gyök n [ ha l kor-ban [ kor[l] = kor[l] + [k] ] [ számok = számok – halmaz sor ~ kor[l] = [k] (2 * (hányadik + 1), n + 1, hányadik + 1) ] ] ] eredmény számok ki kor ; {25: [„Kati”, „Zoé”], 33: [„Feri”]} vége á á á A ciklűsbaná szereploá ő feltetelbená ámegvizsgaljűk, hogy leátezik-e az A programban a „sor” űtasítaá ással egy leápeásben aállítjűká eloő a 2, 3 stb. adott eletkorhoz maá r lista a szotarban. Ha nem, akkorá letrehozzűk,á szaámszorosait tartalmazoá halmazokat, eás vonjűk ki ezt a teljes hal- ha igen,á akkor boővíá tjűá ök. áA programban szereploá á ő feltetelvizsgalat he- mazboál, ami nagysaágrendileg gyorsabb műővelet, pl. feál perc alatt lyettesíthetoá ő a szoá tar típűsá „get” fűöggveá nyeá vel,á amely a megadott megkaphatjűk vele az egymillioánaál kisebb prímeketá egy aátlagos geá- kűlcs hiaá nyaá eseten a masodik bemenoő erteket adja vissza, a koövet- pen. kezoő peldaban az űöres halmazt: kor = {} Fix listák fut k ember-ben [ 1 l = ember[k] Nem módosítható lista adatszerkezet a fix lista. kor[l] = kor.get(l, []) + [k] Előnye, hogy gyorsabb a sima listánál, és hogy ] kulcsként szerepelhet szótárakban. Kapcsos zárójel N-dimenziós tömbök szótárral. Vesszővel elvá- nélkül, egyszerűen vesszővel választjuk el elemeit: lasztott indexekkel n-dimenziós tömbként használ- k = 1, 2, 3 ; kiíratásnál (1, 2, 3)-ként hatjuk a szótár adatszerkezetet: l = 0, ; kiíratásnál (0,)-ként a = {} Ahol szükséges, mint az üres fix listánál vagy a ko- fut x sor 10-ben [ ; x 0-tól 9-ig megy fut y sor 10-ben [ ; y is a belső ciklusban rábban látott formázott karakterláncoknál, zárójelet a[x, y] = 0 ; a[0, 0]-tól a[9, 9]-ig használunk: ] üresfixlista = () ] Fix. A listákat fix listává alakító függvény: a[0, 0] = 5 ; bal felső sarokba 5 ki a[0, 0] ; bal felső sarok kiírása F = fix [1, 2, 3] ; (1, 2, 3) L = lista F ; vissza listává: [1, 2, 3] A peáldaában 10*10-es keátdimenzioás toömboöt toöltoöttűönk fel nűllaákkal, T = fix tömb(3, 4) ; gyorsabb tömb (l. listák) majd moádosítottűká eás kiolvastűk az egyik elemet. Értékadás fix listákkal. Egyszerre több változó- A „vesszővel elválasztott indexek” valójában egy fix nak is értéket adhatunk, ha az értékadás jobb olda- listának felelnek meg. Így nem is szükséges a tömb lán fix lista szerepel: minden elemét megadni, hogy kezelni tudjuk (ami- x, y = 5, 6 ; mint külön sorban x = 5, y = 6 vel tárhelyet és időt spórolhatunk meg, különösen óriási méretű tömböknél): Ez a megoldaás az aátmeneti vaáltozoák hasznaálataát (peáldaáűl vaáltozoák eárteákeánek felcsereáleáseáneál) feleslegesseá teszi. A koövetkezoő fűöggveány a={} ezzel egyszerűősítiá a Fibonacci-sorozat elemeinek kiszaámítaá ásaát: a[0, 0] = 1 ; megfelel a { (0, 0): 1 }-nek ez Fibonacci n a[2, 3] = 2 f0, f = 0, 1 ki a[2, 3] ; csak létező elemnél ism n [ f, f0 = f + f0, f ] eredmény f0 ha (5, 5) a-ban [ ki a[5, 5] ] ; ellenőrzéssel vége ki a.get((5, 5), 0) ; ha nincs ilyen elem, 0 á á á á á ki Fibonacci 10000 ; „336” és még 2087 számjegy A Pythoná tovabbi gazdag adattípűsvaá á lasztekotá biztosít az adatfel- dolgozashoz. Aá koövetkezoő (librelogoá á sított) pelda betoöltá egy á szoövegetá á A Fibonacci-sorozat elsoő eleme a 0, maásodik az 1, a koövetkezoő ele- a megadottá á űtvonalon talalhatoá egyszerűő szoövegesá á áallomanyboá l, eás mek pedig az eloőzoő keát elem oösszegekeánt aállnak eloő: 0, 1, 1, 2, 3, 5, 8, kiíá rjaá a tíz leggyakoribb szavat a Coűnter („szamlalo”) osztaly segít- 13, 21, 34, 55 stb. A ciklűs eloőtt f0=0, f=1, a ciklűsban pedig az űáj f a segevel: reági f eás az f0 (a keát eloőzoő tag) oösszege lesz, mígá f0 űáj eárteáke f reági from collections import Counter eárteáke lesz. könyv = open(„konyv.txt”).read() szavak = talál(„\w+”, könyv) Szótárak ki Counter(szavak).most_common(10) A szótárakkal kulcs-érték párok formájában tárol- hatjuk adatainkat, itt például a személynév a kulcs, Kérdések és válaszok és az életkor az érték: ember = {„Kati”: 25, „Feri”: 33} Hogyan illesszük be a LibreLogóval rajzolt ké- ki ember[„Feri”] ; 33 kiírása peinket Writer dokumentumainkba? ember[„Zoé”] = 25 ; új kulcs-érték pár Ha több alakzatból állnak, foglaljuk a képet cso- portba (az alakzatok kézi kijelölése és a Rajzobjek- 11 Python „tűple” adatszerkezet. tumok eszköztár Csoportosítás ikonja helyett cél- 18 Kérdések és válaszok LibreLogo szerű a kép utasítást használni), majd vágólappal il- lesszük a dokumentumba. A horgonyt állítsuk az ol- 2 3

4 2 dalról bekezdésre, ha szükséges. Ha a kép köré szö- 1 4 1 2 5

7

veget is futtatunk, szükség esetén helyezzük keretbe

5 7 1 4 5

(a keretben a kép körbefuttatási opciója legyen a 6 7 6 „háttérben”, hogy a keret pontosan körbefogja, a kézikönyvben szereplő ábrák többnyire így kerültek Hogyan készült a tangram teknőc és piton? beillesztésre). Ha a teknőc és piton alakzatcsoport hátterét világo- Hogyan exportáljuk más, pl. DTP programok- sabb színűre állítjuk, láthatóvá válnak az alakzatok ba a LibreLogóval készített képeket? (l. kép). A következő LibreLogo forráskód állította Másoljuk a képet a LibreOffice Draw-ba, ahonnan elő a kiindulási tangramot: EPS (beágyazott PostScript) vagy SVG formátumba ez tölt2 cím is exportálni tudjuk. Ha a kép szöveget is tartalmaz, töltőszín tetszőleges tölt szöveg cím ; számozás (a 7.-nél korrigált) a vektoros betűkészletekkel kapcsolatos problémák vége elkerülhetők, ha a teljes ábrát, benne a szöveggel görbévé alakítjuk exportálás előtt. ez tangram n m = gyök n * n / 2 A LibreLogo programok forráskódja és a raj- e n j 90+45 e m tölt2 1 zolt alakzatok ugyanazon a területen osztoz- h m b 45 e n tölt2 2 j 90 e n/2 j 90+45 e m/2 tölt2 3 nak, hogyan férhetünk el kényelmesebben az h m/2 b 90 e m/2 j 90 e m/2 tölt2 4 oldalon? b 90 e m/2 b 180-45 e n/2 tölt2 5 Kérhetünk fekvő oldalbeállítást és nagyobb oldal- h n/2 j 90+45 e m/2 b 90+45 e n/2 tölt2 6 e n/2 b 90 e n/2 tölt2 „\n 7” méretet is a Formátum » Oldal… párbeszédablak- vége ban, így a kezdőpozícióba helyezett teknőcnek több hely áll a rendelkezésére. tangram 4cm Szúrjunk be a dokumentum első sorába egy oldaltö- Hogyan írhatjuk át LibreLogo programjainkat rést (Beszúrás… » Töréspont), ezzel üresen hagyjuk Pythonra? az első oldalt a rajzolás számára. Ha a programunk nem tartalmaz teknőcgrafikát, A teknőc rajzolás során elérte az oldal bal szé- akkor egyszerűen átírhatjuk Pythonra. A Python 2 lét, és a rajzolt alakzat „szétesett”. Mit lehet része a LibreOffice-nak. Programjainkat parancssor- tenni? ban indíthatjuk el a python értelmezővel, például Helyezzük a programot egy kép utasításba (ilyenkor Linuxon a következő útvonalon: a rajzolt alakzatot őrzi meg a program, nem pedig a /opt//program/python sajat_program.py teknős és az általa rajzolt vonal szinkronját, amire a Ha nem adunk meg futtatandó programot, megjele- LibreOffice Writer képmegjelenítése miatt van nik a Python parancssor jele (>>>), és közvetlenül szükség). A Draw, illetve Impress programban az adhatunk meg Python utasításokat: A Python értel- így kapott alakzatcsoportot az oldal bal oldalán is mező számológépként használható, például a kilógathatjuk. Bonyolultabb esetben oldalanként is 2**132049-1 összefűzhetjük PDF-kiadványainkat, vagy beállítha- kifejezéssel 2132049-1 értékét, egy 39 751 jegyű szá- tunk kifutót/vágást is. mot ír ki a program pár oldalon keresztül. Van valamilyen billentyűkombináció a Logo Az akkori idoők csűácsgeápevel,á a Cray szűperszaámítoá ágeáppel megtalaált programok gyors indítására, vagy a teknőc szaám 1983 eás 1985 koözoött az ismert legnagyobb prímszaá ám volt. A 2 mozgatására? hatvaánya mínűszá 1 prímek,á vagyis Mersenne-prímeká jelenleg ismert legnagyobbikaánaál a hatvaány 4351125609. Ez a koözel 13 millioá jegyűő Nincs, de létrehozhatunk az Eszközök » Testresza- szaám egyben a jelenleg ismert legnagyobb prímszaá ám is. bás párbeszédablak segítségével, ahol lehetőség van A parancssor további segítséget nyújt a Python a Logo eszköztár által indított makrók (eljárások) nyelv elsajátításában, például a help eljárással an- billentyűkombinációhoz való hozzárendelésére (l. gol nyelvű dokumentációt kaphatunk: Billentyűzet lap » LibreOffice-makrók kategória). help(str) ; karakterlánc súgó Miért nem használható a Draw-ban, illetve az help([]) ; lista súgó import re ; regex mintaillesztő Impressben a Logo eszköztár? help(re) ; regex súgó A Draw és az Impress működése némileg eltér a A következő táblázat rövid összefoglalását adja, Writerétől, ezért átmenetileg nem használható a hogy a LibreLogo utasítások mely Python utasítá- Logo eszköztár ezekben a programokban. A Writer- sok felelnek meg, illetve bizonyos szerkezetek ho- ben rajzol ábrák viszont a vágólap segítségével át- gyan feleltethetők meg egymásnak. A Python prog- helyezhetők ezekbe az alkalmazásokba is. ramnyelv sajátos tulajdonsága, hogy a program- blokkokat nem zárójel, hanem behúzás jelöli. Az eymás után azonos, vay nayobb behúzással kezdő- LibreLogo Kérdések és válaszok 19 dő sorok tartoznak ey programblokkba. k = 0 A = sor 5 10 A = range(5, 10) l = 0 ❤ C = rendez A C = sorted(A) fut m cserél(„ ”, „ ”, felirat)-ban [ töltőszín [127 + vszám 128, ~ ; ciklus példa # ékezet csak Python 3-tól 64 + vszám 128, 64 + vszám 128] fut x sor 5-ben [ ] for x in range(5): k = k + 1 pass # üres blokk tollatle ha k = n [ ism 5 [ ki hányadik ] for hanyadik in range(5): b 90-45 kör méret * 1,6 j 90-45 print(hanyadik) betűszín „fehér” szöveg m ez átlag x y def atlag(x, y): ] [ eredmény (x+y)/2 return (x+y)/2.0 b 90 kör méret * 1,6 vége j 90 betűszín „fehér” szöveg m ] ki átlag 5 6 print(atlag(5, 6)) ha k = n [ k = 0 amíg i < 3 [ while i < 3: l = l + 1 ha i = 1 [ if i == 1: j 90 ki „egy” print('egy') ha l = 1 [ n = n-1 ] újra continue ha l = 3 [ n = n-1 ] ] [ ki „nem egy” ] else: ha l > 3 [ l = 0 ] ki i print'nem egy') ] tollatfel e méret*1,6 ] print(i) ] vége kilép break stop return betűcsalád „Linux Biolinum G” és/vagy/nem and/or/not betűvastagság „kövér” j 90 5 A-ban 5 in A k = be „Kérem a szöveget a kiíráshoz:” cos(pi) from math import cos, pi kép [ körbe 40 k ] cos(pi) x = talál(„^a”, sz) import re �� x = re.find('^a', sz) � Példák � Eglforgatott néyzetek � tlsz „láthatatlan” ism 90 [ négyzet hányadik * 2 j 1 ] � Teknőcök ; betűkészlet Unicode 6.0 karakterekkel � tf betűcsalád „Symbola” ism 8 [ betűméret hányadik * 10 címke „� ” h hányadik * 5 � ] Színes ábrák ez mackó kör 100 b 45 e 70 kör 50 h 70 j 90 e 70 kör 50 h 70 j 45 h 20 ism 2 [ tlsz „fehér” kör 25 z tlsz „fekete” kör 10 e 40 B u l i z ] h 60 j 90 e 25 kör 30 h 25 b 180 o ❤ vége i n a p

tf fut k [„arany”, „narancs”, „világospiros”, ~ m

v „ibolya”, „világoskék”]-ben [ ❤ l

tlsz k kép [ mackó ] e 100 b 360/5 ❤ ❤

] ❤

o

e ❤

ü

Betűgrafika ❤

n !

ez körbe méret felirat ❤

l

betűméret méret tollvastagság méret * 0,1 ❤

; négyzet nagysága, amibe a szöveg beleírható: z

e a m ❤ n = egész kerekítés db(felirat)**0,5 + 0,49 ❤ ; a maradék helyre szíveket teszünk: s felirat = felirat + „❤ ” * (n*n – db felirat)