Logo coding language

Page 1

@andonisanz


LEGE OHARRA CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE.

License THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. 1. Definitions a.

"Adapta on" means a work based upon the Work, or upon the Work and other pre-exis3ng works, such as a transla3on, adapta3on, deriva3ve work, arrangement of music or other altera3ons of a literary or ar3s3c work, or phonogram or performance and includes cinematographic adapta3ons or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that cons3tutes a Collec3on will not be considered an Adapta3on for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchroniza3on of the Work in 3med-rela3on with a moving image ("synching") will be considered an Adapta3on for the purpose of this License.

b.

"Collec on" means a collec3on of literary or ar3s3c works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject ma<er other than works listed in Sec3on 1(g) below, which, by reason of the selec3on and arrangement of their contents, cons3tute intellectual crea3ons, in which the Work is included in its en3rety in unmodified form along with one or more other contribu3ons, each cons3tu3ng separate and independent works in themselves, which together are assembled into a collec3ve whole. A work that cons3tutes a Collec3on will not be considered an Adapta3on (as defined above) for the purposes of this License.

c.

"Distribute" means to make available to the public the original and copies of the Work or Adapta3on, as appropriate, through sale or other transfer of ownership.

d.

"License Elements" means the following high-level license a<ributes as selected by Licensor and indicated in the 3tle of this License: A<ribu3on, Noncommercial, ShareAlike.

e.

"Licensor" means the individual, individuals, en3ty or en33es that offer(s) the Work under the terms of this License.

f.

"Original Author" means, in the case of a literary or ar3s3c work, the individual, individuals, en3ty or en33es who created the Work or if no individual or en3ty can be iden3fied, the publisher; and in addi3on (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or ar3s3c works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal en3ty who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organiza3on that transmits the broadcast.

g.

"Work" means the literary and/or ar3s3c work offered under the terms of this License including without limita3on any produc3on in the literary, scien3fic and ar3s3c domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other wri3ng; a lecture, address, sermon or other work of the same nature; a drama3c or drama3co-musical work; a choreographic work or

2


entertainment in dumb show; a musical composi3on with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, pain3ng, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustra3on, map, plan, sketch or three-dimensional work rela3ve to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compila3on of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or ar3s3c work. h.

"You" means an individual or en3ty exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous viola3on.

i.

"Publicly Perform" means to perform public recita3ons of the Work and to communicate to the public those public recita3ons, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communica3on to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images.

j.

"Reproduce" means to make copies of the Work by any means including without limita3on by sound or visual recordings and the right of fixa3on and reproducing fixa3ons of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium.

2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws. 3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: a.

to Reproduce the Work, to incorporate the Work into one or more Collec3ons, and to Reproduce the Work as incorporated in the Collec3ons;

b.

to create and Reproduce Adapta3ons provided that any such Adapta3on, including any transla3on in any medium, takes reasonable steps to clearly label, demarcate or otherwise iden3fy that changes were made to the original Work. For example, a transla3on could be marked "The original work was translated from English to Spanish," or a modifica3on could indicate "The original work has been modified.";

c.

to Distribute and Publicly Perform the Work including as incorporated in Collec3ons; and,

d.

to Distribute and Publicly Perform Adapta3ons.

The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. Subject to Section 8(f), all rights not expressly granted by Licensor are hereby reserved, including but not limited to the rights described in Section 4(e). 4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: a.

You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Iden3fier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all no3ces that refer to this License and to the disclaimer of warran3es with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effec3ve

3


technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Sec3on 4(a) applies to the Work as incorporated in a Collec3on, but this does not require the Collec3on apart from the Work itself to be made subject to the terms of this License. If You create a Collec3on, upon no3ce from any Licensor You must, to the extent prac3cable, remove from the Collec3on any credit as required by Sec3on 4(d), as requested. If You create an Adapta3on, upon no3ce from any Licensor You must, to the extent prac3cable, remove from the Adapta3on any credit as required by Sec3on 4(d), as requested. b.

You may Distribute or Publicly Perform an Adapta3on only under: (i) the terms of this License; (ii) a later version of this License with the same License Elements as this License; (iii) a Crea3ve Commons jurisdic3on license (either this or a later license version) that contains the same License Elements as this License (e.g., A<ribu3on-NonCommercial-ShareAlike 3.0 US) ("Applicable License"). You must include a copy of, or the URI, for Applicable License with every copy of each Adapta3on You Distribute or Publicly Perform. You may not offer or impose any terms on the Adapta3on that restrict the terms of the Applicable License or the ability of the recipient of the Adapta3on to exercise the rights granted to that recipient under the terms of the Applicable License. You must keep intact all no3ces that refer to the Applicable License and to the disclaimer of warran3es with every copy of the Work as included in the Adapta3on You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Adapta3on, You may not impose any effec3ve technological measures on the Adapta3on that restrict the ability of a recipient of the Adapta3on from You to exercise the rights granted to that recipient under the terms of the Applicable License. This Sec3on 4(b) applies to the Adapta3on as incorporated in a Collec3on, but this does not require the Collec3on apart from the Adapta3on itself to be made subject to the terms of the Applicable License.

c.

You may not exercise any of the rights granted to You in Sec3on 3 above in any manner that is primarily intended for or directed toward commercial advantage or private monetary compensa3on. The exchange of the Work for other copyrighted works by means of digital file-sharing or otherwise shall not be considered to be intended for or directed toward commercial advantage or private monetary compensa3on, provided there is no payment of any monetary compensa3on in con-nec3on with the exchange of copyrighted works.

d.

If You Distribute, or Publicly Perform the Work or any Adapta3ons or Collec3ons, You must, unless a request has been made pursuant to Sec3on 4(a), keep intact all copyright no3ces for the Work and provide, reasonable to the medium or means You are u3lizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or par3es (e.g., a sponsor ins3tute, publishing en3ty, journal) for a<ribu3on ("A<ribu3on Par3es") in Licensor's copyright no3ce, terms of service or by other reasonable means, the name of such party or par3es; (ii) the 3tle of the Work if supplied; (iii) to the extent reasonably prac3cable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright no3ce or licensing informa3on for the Work; and, (iv) consistent with Sec3on 3(b), in the case of an Adapta3on, a credit iden3fying the use of the Work in the Adapta3on (e.g., "French transla3on of the Work by Original Author," or "Screenplay based on original Work by Original Author"). The credit required by this Sec3on 4(d) may be implemented in any reasonable manner; provided, however, that in the case of a Adapta3on or Collec3on, at a minimum such credit will appear, if a credit for all contribu3ng authors of the Adapta3on or Collec3on appears, then as part of these credits and in a manner at least as prominent as the credits for the other contribu3ng authors. For the avoidance of doubt, You may only use the credit required by this Sec3on for the purpose of a<ribu3on in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connec3on with, sponsorship or endorsement by the Original Author, Licensor and/or A<ribu3on Par3es, as appropriate, of You or Your use of the Work, without the separate, express prior wri<en permission of the Original Author, Licensor and/or A<ribu3on Par3es.

e.

For the avoidance of doubt: i. Non-waivable Compulsory License Schemes. In those jurisdic3ons in which the right to collect royal3es through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royal3es for any exercise by You of the rights granted under this License; ii.

Waivable Compulsory License Schemes. In those jurisdic3ons in which the right to collect royal3es through any statutory or compulsory licensing scheme can be waived, the Licensor

4


reserves the exclusive right to collect such royal3es for any exercise by You of the rights granted under this License if Your exercise of such rights is for a purpose or use which is otherwise than noncommercial as permi<ed under Sec3on 4(c) and otherwise waives the right to collect royal3es through any statutory or compulsory licensing scheme; and, iii.

f.

Voluntary License Schemes. The Licensor reserves the right to collect royal3es, whether individually or, in the event that the Licensor is a member of a collec3ng society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License that is for a purpose or use which is otherwise than noncommercial as permi<ed under Sec3on 4(c).

Except as otherwise agreed in wri3ng by the Licensor or as may be otherwise permi<ed by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Adapta3ons or Collec3ons, You must not distort, mu3late, modify or take other derogatory ac3on in rela3on to the Work which would be prejudicial to the Original Author's honor or reputa3on. Licensor agrees that in those jurisdic3ons (e.g. Japan), in which any exercise of the right granted in Sec3on 3(b) of this License (the right to make Adapta3ons) would be deemed to be a distor3on, mu3la3on, modifica3on or other derogatory ac3on prejudicial to the Original Author's honor and reputa3on, the Licensor will waive or not assert, as appropriate, this Sec3on, to the fullest extent permi<ed by the applicable na3onal law, to enable You to reasonably exercise Your right under Sec3on 3(b) of this License (right to make Adapta3ons) but not otherwise.

5. Representations, Warranties and Disclaimer UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING AND TO THE FULLEST EXTENT PERMITTED BY APPLICABLE LAW, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO THIS EXCLUSION MAY NOT APPLY TO YOU. 6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 7. Termination a.

This License and the rights granted hereunder will terminate automa3cally upon any breach by You of the terms of this License. Individuals or en33es who have received Adapta3ons or Collec3ons from You under this License, however, will not have their licenses terminated provided such individuals or en33es remain in full compliance with those licenses. Sec3ons 1, 2, 5, 6, 7, and 8 will survive any termina3on of this License.

b.

Subject to the above terms and condi3ons, the license granted here is perpetual (for the dura3on of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distribu3ng the Work at any 3me; provided, however that any such elec3on will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will con3nue in full force and effect unless terminated as stated above.

8. Miscellaneous a.

Each 3me You Distribute or Publicly Perform the Work or a Collec3on, the Licensor offers to the recipient a license to the Work on the same terms and condi3ons as the license granted to You under this License.

b.

Each 3me You Distribute or Publicly Perform an Adapta3on, Licensor offers to the recipient a license to the original Work on the same terms and condi3ons as the license granted to You under this License.

5


c.

If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further ac3on by the par3es to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.

d.

No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in wri3ng and signed by the party to be charged with such waiver or consent.

e.

This License cons3tutes the en3re agreement between the par3es with respect to the Work licensed here. There are no understandings, agreements or representa3ons with respect to the Work not specified here. Licensor shall not be bound by any addi3onal provisions that may appear in any communica3on from You. This License may not be modified without the mutual wri<en agreement of the Licensor and You.

f.

The rights granted under, and the subject ma<er referenced, in this License were draMed u3lizing the terminology of the Berne Conven3on for the Protec3on of Literary and Ar3s3c Works (as amended on September 28, 1979), the Rome Conven3on of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Conven3on (as revised on July 24, 1971). These rights and subject ma<er take effect in the relevant jurisdic3on in which the License terms are sought to be enforced according to the corresponding provisions of the implementa3on of those treaty provisions in the applicable na3onal law. If the standard suite of rights granted under applicable copyright law includes addi3onal rights not granted under this License, such addi3onal rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law.

Crea ve Commons No ce Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor. Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, Creative Commons does not authorize the use by either party of the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time. For the avoidance of doubt, this trademark restriction does not form part of this License. Creative Commons may be contacted at http://creativecommons.org/.

6


EDUKIAK

ZER DA LOGO? ................................................................................................................ 12 ZEINTZUK GAITASUN IKASTEN DIRA? ............................................................................. 12 ETA ADIMENAK? ............................................................................................................. 13 NOLA DAGO ANTOLATUTA? ............................................................................................ 16 ZER DA PROGRAMAZIO EGITURATUA? ........................................................................... 18 LOGO TXARTO ERABILTZEN BADA................................................................................... 19 NOLA DAGO ANTOLATUTA LIBURU HAU?....................................................................... 19 JARRAITU AURRETIK: NOLA ADIERAZI FITXATEGI BATEN KOKAPENA ............................. 20 LEHEN BLOKEA: DORTOKAREN KONTROLA .................................................................... 21 OINARRIZKO MUGIMENDUAK ........................................................................................ 22 DORTOKAREN ARKATZA KONTROLATZEKO ..................................................................... 23 PERSPEKTIBAN LAN EGITEKO (3D) .................................................................................. 25 PERSPECTIVE ............................................................................................................... 25 PANTAILA KONTROLATZEKO ............................................................................................ 27 MULTIMEDIA ................................................................................................................... 28 SOINUAK...................................................................................................................... 28 CD BATETIK MUSIKA JOTZEKO ..................................................................................... 29 BIDEO BAT IKUSARAZTEKO .......................................................................................... 30 LEHEN BLOKEKO ARIKETAK ............................................................................................. 31 BIGARREN BLOKEA: DATU-EGITURAK ............................................................................. 33 ALDAGAIAK SORTZEKO ................................................................................................... 33 OROKORRAK ................................................................................................................ 33 FUNTZIO BARRUKOAK (LOKALAK) (ikusi funtzioak) .................................................... 35 BESTELAKOAK .............................................................................................................. 36 LIST / ITEM / COUNT / FPUT / LPUT / REMOVE / MEMBER (F) .............................. 36 ARRAY / ITEM (F) / SETITEM (P)............................................................................... 39 PILAK: PUSH (P) / POP (F) ........................................................................................ 41 ILARAK: QUEUE / DEQUEUE (F) ............................................................................... 42 7


BIGARREN BLOKEKO ARIKETAK ....................................................................................... 43 HIRUGARREN BLOKEA: FUNTZIOAK/PROZEDURAK ........................................................ 44 FUNTZIOAK/PROZEDURAK SORTZEKO ............................................................................ 44 DEFINITZEKO (EDITOREAN) ......................................................................................... 46 ERABILTZEKO ............................................................................................................... 46 ERREKURTSIBITATEA ....................................................................................................... 47 HIRUGARREN BLOKEKO ARIKETAK .................................................................................. 49 LAUGARREN BLOKEA: FLUXUAK FLUXU KONTROLA ....................................................... 50 BALDINTZAK ................................................................................................................ 50 IF condi on [instruc ons if true] .............................................................................. 50 IFELSE condi on [instruc ons if true]....................................................................... 51 NOT .......................................................................................................................... 51 OR (edo) eta AND (eta)............................................................................................ 51 TEST condi3on ......................................................................................................... 52 NUMBER? (zenbaki bat da?) ................................................................................... 52 EMPTY? (hutsik dago?) ............................................................................................ 52 MEMBERP element set (elementua multzoaren barruan dago?) ........................... 53 EQUALP elem/list elem/list (biak berdinak dira?) ................................................... 53 WORDP (hitza/zenb?) / LISTP (zerrenda?) / ARRAYP (array-a?) .............................. 54 BEGIZTAK ..................................................................................................................... 54 REPEAT count [instruc onlist] (1..n) ........................................................................ 54 FOR [controllist] [instruc onlist] (0..n) .................................................................... 55 DO.WHILE [instruc onlist] [condi onlist] (1..n) ....................................................... 57 WHILE [condi onlist] [instruc onlist] (0..n) ............................................................. 57 DO.UNTIL [instruc onlist] [condi onlist] (1..n) ....................................................... 57 UNTIL [condi onlist] [instruc onlist] (0..n) ............................................................. 58 FOREACH # ? ?REST (iterazio elementua gainontzekoa) ......................................... 58 FOREVER .................................................................................................................. 59 STOP ........................................................................................................................ 59 BEGIZTEN ARTEKO BALIOKIDETASUNAK ..................................................................... 59 1..10 (1..n) ............................................................................................................... 59 0..10 (0..n) ............................................................................................................... 60 PAUSAK EZARTZEKO ETA ETETEKO .................................................................................. 60 8


PAUSE / CONTINUE ..................................................................................................... 60 LAUGARREN BLOKEKO ARIKETAK.................................................................................... 61 BOSTGARREN BLOKEA: ELKARRAKZIOA .......................................................................... 63 KONTSOLATIK BALIO BAT JASOTZEKO ETA INPRIMATZEKO ............................................. 63 READWORD (f) ............................................................................................................ 63 READLIST (f)................................................................................................................. 63 READCHAR (f) .............................................................................................................. 64 YESNOBOX window3tle tex<oshow (f) ....................................................................... 64 PRINT / PR / SHOW (p) ................................................................................................ 64 SENTENCE (letrak eta aldagaiak konbinatzeko) (f) ...................................................... 65 FITXATEGIEKIN LAN EGITEKO .......................................................................................... 65 FITXATEGI BATEAN IDAZTEKO ..................................................................................... 66 OPENWRITE / OPENUPDATE / SETWRITE / CLOSE .................................................. 66 FITXATEGI BATETIK IRAKURTZEKO ............................................................................... 66 OPENREAD / SETREAD / READLIST / EOFP / CLOSE ................................................. 66 KONTSOLAN IDATZITAKOA FITXATEGI BATERA PASATZEKO ......................................... 67 DRIBBLE / NODRIBBLE ............................................................................................. 67 PANTAILAKO GUNEEKIN LAN EGITEKO............................................................................ 67 BITLOAD / BITSAVE name (p) ...................................................................................... 67 BITCOPY / BITCUT width height / BITPASTE (p)........................................................... 67 SETBITINDEX number (p) ............................................................................................ 68 SETBITMODE number (p) ............................................................................................ 68 TESTU-KATEEKIN LAN EGITEKO ....................................................................................... 71 ASCII character / CHAR number (f) ............................................................................. 71 FIRST / LAST / BUTFIRST / BUTLAST string (f) ............................................................. 71 LOWERCASE / UPPERCASE word (f) ............................................................................ 71 MEMBER string1 string2/list (f) .................................................................................. 72 LANA GORDETZEKO ETA KARGATZEKO ........................................................................... 73 SAVE name .................................................................................................................. 73 LOAD name ................................................................................................................. 73 MAKE "STARTUP [func onname] ................................................................................ 73 SAGUA KONTROLATZEKO ................................................................................................ 74 MOUSEON leMbu<ondown leMbu<onup rightbu<ondown rightbu<onup move ..... 74 9


MOUSEON [SETPOS MOUSEPOS PENDOWN] [PENUP] [] [] [SETPOS MOUSEPOS] .... 74 MOUSEOFF .................................................................................................................. 74 MOUSEPOS.................................................................................................................. 74 SAREA KONTROLATZEKO ................................................................................................. 74 OINARRIZKO INSTRUKZIOAK BIRDEFINITZEKO ............................................................... 74 COPYDEF / ERASE (P)................................................................................................... 74 PAUSA BAT EZARTZEKO: WAIT dura on (p) .................................................................... 75 BOSTGARREN BLOKEKO ARIKETAK.................................................................................. 76 SEIGARREN BLOKEA: MATEMATIKA ................................................................................ 77 ARITMETIKA .................................................................................................................... 77 Dezimalak eta notazio zien3ямБkoa: .............................................................................. 77 Bestelako eragiketa matema3koak: ............................................................................ 77 SUM / DIFFERENCE / PRODUCT / QUOTIENT / MODULO (hondarra) ..................... 77 MINUS / INT / ROUND / SQRT / POWER ................................................................. 78 EXP (e zenbakia) / LN (LOGARITMO NEPERIANOA) / LOG10 (10EKO LOGARITMOA) ................................................................................................................................. 78 SIN (SINUA GRADUTAN) / RADSIN (SINUA RADIANETAN) / COS (KOSENOA GRADUTAN) / RADCOS (KOSENOA RADIANETAN) / TAN (TANGENTEA) / ARCTAN (ARKOTANGENTEA GRADUTAN) .............................................................................. 79 OINARRIZKO GEOMETRIA ............................................................................................... 79 CIRCLE radius............................................................................................................... 79 ARC angle radius ......................................................................................................... 79 ELLIPSE crosswise.semiaxis inline.semiaxis ................................................................ 79 ELLIPSEARC angle crosswise.semiaxis inline.semiaxis startangle ............................... 79 AUSAZKO BALIOAK .......................................................................................................... 79 RANDOM value (f) ....................................................................................................... 79 RERANDOM (p) ........................................................................................................... 80 PICK (f)......................................................................................................................... 80 KONSTANTEAK ................................................................................................................ 81 GOLDENRATIO ............................................................................................................. 81 PI ................................................................................................................................. 81 SEIGARREN BLOKEKO ARIKETAK ..................................................................................... 82 PROGRAMATZEKO ESTRATEGIAK .................................................................................... 83 EIK PARADIGMA .............................................................................................................. 87 10


ADIBIDE BATZUK ............................................................................................................. 88 PROPOSATURIKO PROIEKTUAK ....................................................................................... 92

11


ZER DA LOGO? LOGO ordenagailuan programatzeko mintzaira egituratua dugu. Egituratua da egitura zehatzak erabiltzen dituelako (sekuentzia, baldintza eta errepikapenak), eta mintzaira da ordenagailuak uler dezakeen grama3ka zehatza erabiltzen duelako. Garai batean benetako dortoka-robota asmatu zuten. Urruneko kontrol baten bitartez marrazkiak egiteko gai zen. Modu berean jolastuko gara LOGOrekin. Ezaugarri hauek ditu: 1. Oso erraz ikasten da, eta emaitzak oso azkar ikusten dira. 2. Gauza sinple zein korapilotsuak egin daitezke. 3. Marrazki- eta testu-kontsolak ditu. 4. Hainbeste adimen garatzen dira (ikusi hurrengoko puntuak). 5. Ikasleak: a. Arazoak argitzeko ahalmena indartzen du. b. Bere burua hobeto kudeatzen du (autonomia). c. Planifikatzeko gaitasuna garatzen du.

ZEINTZUK GAITASUN IKASTEN DIRA? LOGOrekin hainbeste gai jorratzen dira, be3ere modu jostagarri batean: 1. Matema kan: es3mazioa, poligonoak, perimetro eta azalerak, simetria, koordenatuak, probabilitateak, funtzioak, algebra, trigonometria, fraktalak (grafiko errekurtsiboak), mosaikoak eta abar. 2. Informa kan: programazio teknikak, kode-diseinua, datu-fluxuak, aldagaiak eta errekurtsioa. 3. Lengoaian: esaldien egiturak, ordenagailu-mintzaira, testuen prozesatzea, programazio-lengoaiaren birdefinitzea (euskaraz jarri ahal da), atzerriko hizkuntza (ingelesez). 4. Gizarte-zientzian: kokapen geografikoak, kartografia. 5. Zientzian: robo3ka, sentsoreak, simulazio teknologikoak, sistema biologikoen simulazioak, sistema adimentsuak. 6. Artean: dortokarekin eginiko grafikoak, musika, dantza, mul3media.

12


ETA ADIMENAK? 1. Logiko matema koa: logikaren garapena hainbat mailatan gertatzen da. Alde bate3k, arazo ba3 konponbidea emateko behar den logikaren parte3k; beste alde bate3k, kode-uxuen kontrolerako behar den logika3k.

2. Espaziala: dortokarekin eginiko marrazkiak plano kartesiar batean egiten dira, bi edo hiru dimentsiotan. Gainera, espazio horretan eginiko lana erla3boa zein absolutua izan daiteke.

3. Linguis koa: dortoka kontrolatzeko zein LOGOrekin programatzeko bere lengoaiaren grama3ka ondo jakin behar da erabiltzen.

13


4. Musikala: musika garatzeko aukerak izateaz gain aukera anitz daude dortokaren ekintzak eta musika elkarrekin koordinatzeko.

5. Gorputz-kinestesikoa: marrazki-kontsolan eginiko akzioak dortokaren mugimenduen bitartez gertatzen da. Horiek azkartu edo moteldu ahal dira eta dortokarekin dantzak prestatu. Gainera animazio tekniken bitartez mugimenduak simulatu ahal ditugu.

6. Naturalista: marrazkien bitartez naturako hainbat izaki bizidunen talde-joeren simulazioak egin daitezke (bakterioen ugalketa zikloak), naturako zenbait egitura geometrikoen sorburu matema3koa imita daiteke (oskolak, hostoak‌), beste egitura batzuen natura fraktala (zuhaitzak‌).

7. Intrapertsonala: hausnarketa, planiďŹ kazioa, logika pertsonala, norberaren burua gainditzea, hainbat estrategien garapena, esperimentazioa, barnebisualizazioa, eta abar garatzen dira.

14


8. Interpertsonala: talde-lana, talde-proiektuak, lankideen arteko koordinazioa, besteenganako ardura, besteekiko komunikazioa, lan-banaketa, akordioak‌

15


NOLA DAGO ANTOLATUTA? LOGOn bi lan-gune dituzu: graďŹ koa eta testukoa.

1) GRAFIKOA: Berton DORTOKA bat topa dezakezu (triangelu itxurakoa, zeina alda daitekeen beste edozein irudiaga3k), eta bere mugimenduak aginduen bitartez kontrolatu ahal dira. Dortokak, gainera, marraztu eta beste hainbat eragiketa egin ditzake. Pentsatu dortoka zuk kontrolatuko duzun robota dela.

2) TESTUZKOA: Testu-kontsola deritzon lan-gunea da, eta berton aginduak idazten dira, LOGOk itzulitako mezuak irakurri eta abar. Kontsolan lerroak BANAN-BANAN idazten dira, eta hainbat agindu idatzi daitezke bata bestearen atze3k. Halere, eta kodearen irakurgarritasunaren onuran, hobe da aginduak hainbat lerrotan antolatzea, funtzioak idazteko, esaterako. Editore hori EDALL botoiaren bitartez irekitzen da, edo kontsolaren barruan EDALL idatzita. Beraren barne aurreko saialdietan idatzitakoa mantenduko da, eta diskoan gorde zein berta3k berreskura daiteke.

3) BOTOIAK: a. HALT: unean exekutatzen ari den programa geldiarazten du. Hau oso baliagarria da begizta luzeetan (iterazio lar daudenean, ordenagailua moteltzen baita), edota amaigabeko egituretan (akatsez begizta inďŹ nitu baten barruan sartzen garenean). b. TRACE: kodearen arazketa egiteko bere biziko garrantzizko tekla dugu hau. Programaren barruan zein puntutan gauden kokatuta agerrarazten 16


c.

d. e. f. g. h.

du kontsola3k, horrela jakin dezakegu zer ari den gertatzen kodearen barruan, akatsak edo funtzionamendu okerrak zuzendu ahal izateko. PAUSE: halt-en antzekoa, baina geldiunea ezartzen du. Klikatzerakoan leiho bat agertuko zaigu. Exekuzioarekin jarraitzeko leiho horretan teklatu behar da CONTINUE. STATUS: leiho bat irekitzen da unean dagoen konďŹ gurazioaren balioekin (dortokaren kokapena, orientazioa, koloreak, eta abar). STEP: exekuzioan dagoen kodea LERROZ LERRO exekutatzen du eta lerro bakoitzaren informazioa ematen digu kontsola3k. RESET: berrabiarazten du marrazki-gunea. EXECUTE: kontsolako lerroan idatzitakoa exekutatzen du (efektu bera lortuko duzu ENTER/RETURN teklari sakatuz gero). EDALL: editorea irekitzen da.

17





LEHEN BLOKEA: DORTOKAREN KONTROLA Dortoka kartesiar espazio baten mugitzen den triangelu txikia da, bere atze3k arrasto bat utzita. Arrasto horren itxura (gogortasuna, kolorea, efektua eta abar) eralda daiteke, baita dortokaren forma zein espazio3k mugitzeko modua ere.

21


OINARRIZKO MUGIMENDUAK FORWARD distance / FD distance (P) FD 100 ;aurrera egiten du 100 unitate FD -100 ;atzera egingo du zenbaki negatiboa delako BACK distance / BK distance (P) BK 50 ;atzera egingo du 50 unitate LEFT angle / LT angle (P) LEFT 45 ;ezkerrera jiratzen da 45 gradu RIGHT angle / RT angle (P) RT 360 ;eskumara jiratzen da 360 gradu, buelta osoa HOME (P) HOME

;hasierako puntura mugitzen da

SHOWTURTLE / ST / HIDETURTLE / HT (P) ST ;dortoka agerrarazten du HT ;dortoka ezkutatzen du SLOWDRAW slowness (P) SLOWDRAW 1

;dortoka motelago mugitzen da

SETXY x y / SETPOS [x y] (P) SETXY 100 150 ;dortokaren hasierako posiziotik (0,0) X,Y ardatzeko posizio berrira mugitzen du SETPOS [-25 0] XCOR / YCOR (F) PRINT XCOR du SETTURTLE number (P) SETTURTLE 0 SETTURTLE 1 SETTURTLE 2 ;LOGOK 1024

;dortokaren X edo Y posizioa itzultzen

LT RANDOM 360 FD 100 LT RANDOM 360 FD 100 LT RANDOM 360 FD 100 dortoka dauzka erabiltzeko, 0tik 1023ra.

CS REPEAT 100 [SETTURTLE REPCOUNT SETPC RANDOM 16 LT RANDOM 360 SETPENSIZE RANDOM 5 FD RANDOM 200] 22


DORTOKAREN ARKATZA KONTROLATZEKO PENDOWN / PD (P) PD FD 100 ;dortokak marrazten du PENUP / PU (P) PU FD 500 ;dortokak arkatza altxatu eta mugitzen da marraztu barik PENPAINT / PPT (P) PPT FD 10 ;dortokak margotze moduan funtzionatzen du PENERASE / PE (P) PE FD 10

;dortokak ezabatze moduan funtzionatzen du

PENREVERSE / PX (P) PX ;dortoka PPT-tik PE-ra pasatzen da, edota alderantziz SETPENCOLOR color / SETPC color (P) Oinarrizko koloreak hauek dira: Index 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Color Vector [0 0 0] [0 0 255] [0 255 0] [0 255 255] [255 0 0] [255 0 255] [255 255 0] [255 255 255] [155 96 59] [197 136 18] [100 162 64] [120 187 187] [255 149 119] [144 113 208] [255 163 0] [183 183 183]

23

Color Black Blue Lime Cyan (Aqua) Red Magenta (Fuchsia) Yellow White Brown Tan Olive Sky Blue Salmon Medium Purple Orange Dark Gray


SETPC RANDOM 16 FD 100 du

;arkatzaren kolorea aldatzen

Eta hauek dira beste kolore batzuk, definitu barik daudenak baina edozein momentutan definitu eta erabili ahal direnak: Color Name AliceBlue AntiqueWhite Aqua Aquamarine Azure Beige Bisque Black BlanchedAlmond Blue BlueViolet Brown BurlyWood CadetBlue Chartreuse Chocolate Coral CornflowerBlue Cornsilk Crimson Cyan DarkBlue DarkCyan DarkGoldenRod DarkGray DarkGreen DarkGrey DarkKhaki DarkMagenta DarkOliveGreen DarkOrange DarkOrchid DarkRed DarkSalmon DarkSeaGreen DarkSlateBlue DarkSlateGray DarkSlateGrey DarkTurquoise DarkViolet DeepPink DeepSkyBlue DimGray DimGrey DodgerBlue FireBrick FloralWhite ForestGreen Fuchsia Gainsboro GhostWhite Gold GoldenRod Gray Green GreenYellow Grey HoneyDew HotPink

Color vector [240 248 255] [250 235 215] [0 255 255] [127 255 212] [240 255 255] [245 245 220] [255 228 196] [0 0 0] [255 235 205] [0 0 255] [138 43 226] [165 42 42] [222 184 135] [95 158 160] [127 255 0] [210 105 30] [255 127 80] [100 149 237] [255 248 220] [220 20 60] [0 255 255] [0 0 139] [0 139 139] [184 134 11] [169 169 169] [0 100 0] [169 169 169] [189 183 107] [139 0 139] [85 107 47] [255 140 0] [153 50 204] [139 0 0] [233 150 122] [143 188 143] [72 61 139] [47 79 79] [47 79 79] [0 206 209] [148 0 211] [255 20 147] [0 191 255] [105 105 105] [105 105 105] [30 144 255] [178 34 34] [255 250 240] [34 139 34] [255 0 255] [220 220 220] [248 248 255] [255 215 0] [218 165 32] [128 128 128] [0 128 0] [173 255 47] [128 128 128] [240 255 240] [255 105 180]

IndianRed Indigo Ivory Khaki Lavender LavenderBlush LawnGreen LemonChiffon LightBlue LightCoral LightCyan LightGoldenRodYellow LightGray LightGreen LightGrey LightPink LightSalmon LightSeaGreen LightSkyBlue LightSlateGray LightSlateGrey LightSteelBlue LightYellow Lime LimeGreen Linen Magenta Maroon MediumAquaMarine MediumBlue MediumOrchid MediumPurple MediumSeaGreen MediumSlateBlue MediumSpringGreen MediumTurquoise MediumVioletRed MidnightBlue MintCream MistyRose Moccasin NavajoWhite Navy OldLace Olive OliveDrab Orange OrangeRed Orchid PaleGoldenRod PaleGreen PaleTurquoise PaleVioletRed PapayaWhip PeachPuff Peru Pink Plum PowderBlue Purple

24

[205 92 92] [75 0 130] [255 255 240] [240 230 140] [230 230 250] [255 240 245] [124 252 0] [255 250 205] [173 216 230] [240 128 128] [224 255 255] [250 250 210] [211 211 211] [144 238 144] [211 211 211] [255 182 193] [255 160 122] [32 178 170] [135 206 250] [119 136 153] [119 136 153] [176 196 222] [255 255 224] [0 255 0] [50 205 50] [250 240 230] [255 0 255] [128 0 0] [102 205 170] [0 0 205] [186 85 211] [147 112 216] [60 179 113] [123 104 238] [0 250 154] [72 209 204] [199 21 133] [25 25 112] [245 255 250] [255 228 225] [255 228 181] [255 222 173] [0 0 128] [253 245 230] [128 128 0] [107 142 35] [255 165 0] [255 69 0] [218 112 214] [238 232 170] [152 251 152] [175 238 238] [216 112 147] [255 239 213] [255 218 185] [205 133 63] [255 192 203] [221 160 221] [176 224 230] [128 0 128]


Red RosyBrown RoyalBlue SaddleBrown Salmon SandyBrown SeaGreen SeaShell Sienna Silver SkyBlue SlateBlue SlateGray SlateGrey

Snow SpringGreen SteelBlue Tan Teal Thistle Tomato Turquoise Violet Wheat White WhiteSmoke Yellow YellowGreen

[255 0 0] [188 143 143] [65 105 225] [139 69 19] [250 128 114] [244 164 96] [46 139 87] [255 245 238] [160 82 45] [192 192 192] [135 206 235] [106 90 205] [112 128 144] [112 128 144]

SETPENSIZE size (P) REPEAT 5 [SETPENSIZE REPCOUNT FD 20] puntaren tamaina aldatzen du

[255 250 250] [0 255 127] [70 130 180] [210 180 140] [0 128 128] [216 191 216] [255 99 71] [64 224 208] [238 130 238] [245 222 179] [255 255 255] [245 245 245] [255 255 0] [154 205 50]

;arkatzaren

FILL / SETFLOODCOLOR color (P) SETFLOODCOLOR 14 ;margozteko kolorea HORIAN ezartzen da FILL ;dortoka inguruko gunea aurreko kolorearekin betetzen da

PERSPEKTIBAN LAN EGITEKO (3D) PERSPECTIVE Logo 2Dn lan egiteko konďŹ guratuta dago. 3Dn jarri nahi izanez gero PERSPECTIVE komandoa erabili, eta koordinatu bat gehiago gehituko zaio marrazketa guneari (Z). Aurrerago adierazten da nola aldatzen diren oinarrizko instrukzio batzuk 3Dn, eta zeintzuk diren berriak.

2D Command SETXY SETX (does not change ycoordinate) SETY (does not change xcoordinate)

XCOR YCOR POS

3D Command SETXY (does not change z-coordinate) SETX (does not change y-coordinate or zcoordinate) SETY (does not change x-coordinate or zcoordinate) SETZ (does not change x-coordinate or ycoordinate) XCOR YCOR ZCOR POS (z-coordinate is ignored) 25


SETPOS TOWARDS DISTANCE HEADING

SETHEADING

RIGHT

LEFT

WINDOW WRAP FENCE SETTURTLE 0-1023

ELLIPSEARC

POSXYZ SETPOS (does not change z-coordinate) TOWARDS TOWARDSXYZ DISTANCE DISTANCEXYZ HEADING ROLL PITCH ORIENTATION SETHEADING SETROLL SETPITCH SETORIENTATION RIGHT (on current plane) RIGHTROLL UPPITCH LEFT (on current plane) LEFTROLL DOWNPITCH PERSPECTIVE

SETTURTLE 0-1023 SETTURTLE -1 (the eye position) SETTURTLE -2 (where the eye is looking) ELLIPSEARC (great for spheres)

26


PANTAILA KONTROLATZEKO CLEARSCREEN / CS (P) CS ;dortokaren marrazte-pantaila garbitzen du, dortoka mugitu barik SETSCREENCOLOR color / SETSC color (P) SETSC 1 ; dortokaren marrazte-pantaila koloretan jartzen du, kasu honetan urdinez WRAP (P) WRAP ;pantaila konfiguratzen du dortokak ihes eginez gero kontrako mugatik agertzeko WINDOW (P) WINDOW du

;aurrekoaren kontrakoa, dortokak ihes egingo

FENCE (P) FENCE harago

;dortokak ezin izango du ihes egin mugetatik

FULLSCREEN / FS (P) FS ;marrazte-gunea pantaila guztira zabaltzen da, eta kontsola leiho flotagarri batean geratzen da ZOOM scale (P) ZOOM 1 ;berezko eskalan ixten du ZOOM 2 ;gertuago ikusten da REPEAT 10 [ZOOM REPCOUNT WAIT 5] ZOOM 1 CLEARTEXT / CS (P) CS ;kontsolako testu guztia garbitzen du SETLABELFONT / LABEL (P) SETLABELFONT [[HELV] 24 16] LABEL [E! Txo!] ;dortokaren alboan idazten du

CS RT 75 REPEAT 12 [ RT 360/12 FD 75 LABEL REPCOUNT] ;erlojua

27


MULTIMEDIA SOINUAK SOUND frecuency duration (P)

WAIT duration (P) TO SAINTS ;oh when the saints go marching in SOUND [262 600] SOUND [330 600] SOUND [349 600] SOUND [392 1800] WAIT 50 SOUND [262 600] SOUND [330 600] SOUND [349 600] SOUND [392 1800] WAIT 50 SOUND [262 600] SOUND [330 600] SOUND [349 600] SOUND [392 1800] SOUND [330 1800] SOUND [262 1800] SOUND [330 1800] SOUND [294 1800] END

PLAYWAVE wavefile flags (P) PLAYWAVE "c:\\windows\\tada.wav 1+8 ;c:\windows\tada.wav fitxategia ireki eta barruan 28


dauzkan soinuak jotzen ditu beheko FLAG bi erabilita (1 eta 8). Gehiago erabili nahi izanez gero batuketa moduan jartzen dira. Adib: 0+2+16, edo 2+4+8

Flag Behavior Band Jokabidea 0 Synchronous does not stop until completed. Dena gelditzen da soinua jotzen duen bitartean. 1 Asynchronous returns immediately while sound is still playing. Dena jarraitzen du, eta aldi berean soinua jotzen da. 2 Don't use the default sound if the specified one cannot be found. Ez erabili berezko soinua baldin eta fitxategia ez bada topatzen 4 In memory sound (not supported). Hau ezin da erabili 8 Continue to loop the sound until another PLAYWAVE instruction is run. Eten barik jo soinua, playwave-eri berriz deitu arte. 16 Don't stop an already playing sound. Jotzen egongo den soinua ezin da gelditu.

CD BATETIK MUSIKA JOTZEKO Ikusi adibideak: ;oinarrizko aginduak hasteko IGNORE MCI [open cdaudio] MCI [set cdaudio time format tmsf] ;jotzeko modu ASINKRONOAN (jotzen den bitartean LOGOk jarraitzen du bestelako edozein gauzak egiten) MCI [play cdaudio from 1 to 2] ;edo, CD guztia jotzeko MCI [play cdaudio from 1] ;edo zati bat bakarrik MCI [play cdaudio from 1 to 1:00:15] ;jotzeko modu SINKRONOAN (jo bitartean gainontzeko guztia blokeatuta geratzen da) WAIT gehitzen da. MCI [play cdaudio from 1 to 2 wait]

29


;oinarrizko aginduak jotzea amaitzeko MCI [stop cdaudio] MCI [close cdaudio]

BIDEO BAT IKUSARAZTEKO Ikusi adibidea: ;bideo irekitzeko IGNORE MCI [open c:\\windows\\clock.avi alias myvid] ;martxan jartzeko MCI [play myvid] ;hurrengoko WAIT-ak adibidezkoak baino ez dira, eta pausa esanguratsuak ezartzeko baino ez dira erabiltzen WAIT 120 ;pausa batean gelditzeko MCI [pause myvid] WAIT 120 ;berrabiarazteko MCI [resume myvid] WAIT 720 ;bideo ixteko MCI [close myvid]

30


LEHEN BLOKEKO ARIKETAK OHARRA: hauek egiteko REPEAT egitura ezagutu behar da, hortaz joan FLUXUEN blokera ikusteko. 1. Hurrengo ďŹ gurak egiteko kodea idatzi (ez erabili SETXY edo SETPOS):

31


2. Aurreko lehen 7 figurak SETXY eta SETPOS aginduekin marrazteko kodea idatzi. 3. Aukeratu aurreko edozein 5 figura eta txertatu soinua dortokaren mugimenduan. Adibidez, zirkunferentzia baten marrazketan graduaren balioa soinu moduan erabil daiteke. 4. Honako abes3 hau jo: DO DO DO SI DO RE RE RE SI DO RE SI DO SOL 5. Aurreko abes3a jo ahala edozelako figura marraztu. Nahi izanez gero ausazkoa egin (RANDOM erabili beharko duzu), alegia, notaren balioak markatu ahal du dortokaren biraketa edo aurrera egiteko distantzia. Esperimentatu proposamen ezberdinekin. 6. Marrazketa gune3k irtengo den espiral bat marraztu (13. edo 14. espiralak erabili ahal dira) LEIHO modu guz3etan: window, fence… Ikusi ezberdintasuna. Modu batzuetan espiralaren kurbak nahastu beharko dira. 7. Topatu WAV fitxategi bat, edo zuk grabatutako bat erabili (Audacity erabili, esaterako), eta modu honetan ireki: eten barik egongo da jotzen, eta bien bitartean bestelako gauzak egiterik izango da. Ondoren txertatu kodea aurreko figuraren bat marrazteko beste kodean eta moteldu dortokaren marrazteko abiadura. Ikusi beharko da dortoka lasai marrazten musikak jotzen duen bitartean.

32


BIGARREN BLOKEA: DATU-EGITURAK ALDAGAIAK SORTZEKO OROKORRAK MAKE varname value (P) Gakoen erabilera nahasia eman dezake hasieran, hortaz kontuan izan aholku hauek: 1. 2. 3. 4.

Aldagai bat IZENDATZERAKOAN be3 eramango ditu kakotxak aurre3k. Aldagai hori ERABILTZERAKOAN be3 eramango ditu bi puntuak aurre3k. Testuek kakotxak eramango dituzte aurre3k. Zenbakiak kakotx edo kakotx barik jarri ahal izango dira. ;aldagaiak izendatzean aurreko gakoekin adierazi ;erabiltzeko bere aurretik bi puntu jarri MAKE "nireadina 39 ;zenbakiak gako barik MAKE "zureadina "11 ;edo gakoekin PRINT :nireadina + :zureadina >50 PRINT (SENTENCE "Gure "adinak :nireadina "eta :zureadina "dira) >Gure adinak 39 eta 11 dira MAKE "izena "Eguzki ;testuak gakoekin PRINT :izena >Eguzki PRINT "izena ;kontuz! >izena PRINT izena ;kontuz! funtzio bati deitzen gaude, eta ez bada existitzen hurrengoko akatsa agertuko da >I don’t know how to izena MAKE "izena ""Eguzki PRINT :izena >"Eguzki

;kakotxak agerrarazteko

MAKE "izena ""Eguzki" PRINT :izena >"Eguzki"

;amaieran gako bakarra!

MAKE "izenabizenak [Eguzki Perry] ;esaldiak taketekin PRINT :izenabizenak >Eguzki Perry 33


MAKE "izenabizenak ["Eguzki "Perry"] ;gako eta taket PRINT :izenabizenak >"Eguzki "Perry" MAKE "izenabizenak "Eguzki "Perry >I don’t know what to do with Perry

;kontuz!

NOLA HANDITU ALDAGAI BATEN BALIOA? MAKE "zbk 0 ;hasierako balioa MAKE "zbk :zbk+1 PRINT :zbk >1

;aurrekoa plus 1

MAKE "zbk :zbk*5 PRINT :zbk >5

;aurrekoa bider 5

MAKE "zbk "zbk*10 PRINT :zbk >zbk*10

;kontuz! Testua adierazten gaude

NOLA PASATU ALDAGAI BATEN BALIO BESTE ALDAGAI EZBERDIN BATERA? MAKE "iturria 0 MAKE "helmuga [hamen gauz] PRINT SENTENCE :iturria :helmuga >0 hamen gauz MAKE "helmuga :iturria ;helmugaren hasierako balioa suntsitzen da PRINT :helmuga >0 MAKE "helmuga "iturria ;kontuz! Gakoek testua adierazten dute, eta ez aldagaiaren izena! PRINT :helmuga >iturria MAKE "helmuga iturria ;akatsa! Pentsatzen du iturria funtzio bat dela, baina ez da existitzen >I don’t know how to iturria MAKE "helmuga [:iturria] ;kontuz! taketen barruan testu moduan hartzen da dena 34


PRINT :helmuga >:iturria Zerrendan kanpoko aldagai baten balioa sartzeko modua: MAKE "helmuga (LIST :iturria) PRINT :helmuga >0

ERASE / ER func on name (P) ERASE "nirefuntzioa ;ezabatzen du funtzioa nirefuntzioa >I don’t know how to nirefuntzioa

FUNTZIO BARRUKOAK (LOKALAK) (ikusi funtzioak) LOCAL name 1)ALDAGAI LOKALA Funtzioen barruan izendatu eta erabiltzen dira SOILIK, eta funtzio3k irten ostean aldagaia suntsitzen da eta ezin da gehiago erabili. TO FUNTZIOLOKALA LOCAL "katea MAKE "katea "danadalakue ;edo LOCALMAKE "Katea "danadalakue PRINT :katea END FUNTZIOLOKALA ;katea aldagaia funtzio barruan izendatzen da, balioa eman eta erabili >danadalakue PRINT :katea ;baina funtzioa exekutatu ostean desagertzen da. >katea has no value

2)ALDAGAI OROKORRA Edozein tokitan izendatu zein erabil daitezke, eta be3 gordeko dute ezarritako azken balioa, edonon aldatu bazaion ere. 35


MAKE "katea "hasierakue TO FUNTZIOLOKALA MAKE "katea "danadalakue PRINT :katea END PRINT :katea ;aldagai orokorra da, eta hasierako balioa hurrengokoa da >hasierakue FUNTZIOLOKALA ;funtzioari deitzerakoan hasierako balioa aldatzen zaio >danadalakue PRINT :katea geratu da >danadalakue

;berriz deituz gero azken balioarekin

BESTELAKOAK LIST / ITEM / COUNT / FPUT / LPUT / REMOVE / MEMBER (F) Zerrendak elementuen bildumak dira, testuak zein zenbakiak izan. Sortu ostean elementu berriak txertatu ahal dira, elementuen hasierako kokapena aldatuta. SORTZEKO MAKE "listname (LIST el1 el2 eln) Kontuan izan elementuak edozelakoak izan daitezkeela: zenbakiak, testuak, beste zerrenda batzuk edota array-ak. MAKE "fib (LIST 1 1 2 3 5 8 "Fibonacci "da "hau ".) PRINT :fib >[1 1 2 3 5 8 Fibonacci da hau] ;zerrenda hori dimentsio bakarrekoa da []

PRINT LIST ["Haudahau "zerrenda] [24 10 95] ;inprimatu baino beste eragiketarik ezin da egin, ez baita gorde aldagai baten barruan ;zerrendaren dimentsioa 2koa da [][] >["Haudahau "zerrenda] [24 10 95]

36


MAKE "hellish (list [[x y] b c][d e][g [h [i j]]]) ;zerrendak bata besteen barruan sar daitezke ;ikusi nola antolatzen diren itemak print count :hellish ;zenbatzeko kanpoen dauden taketak hartzen ditu kontuan >3 print count item 3 :hellish ;azken taketen elementuak 2 dira: g eta [h [i j]] >2 print item 1 :hellish >[x y] b c print item 2 item 3 :hellish >h [i j] print item 2 item 2 item 2 item 3 :hellish >j

ERABILTZEKO ITEM n :list PRINT ITEM 8 :fib >da

;8. elementua itzultzen du

MAKE "bestebat LIST ["Haudahau "zerrenda] [24 4] PRINT :bestebat >["Haudahau "zerrenda] [24 4] PRINT ITEM 3 ITEM 2 :bestebat ;irakurri eskoitik ezkerrera. Lehendabizi zerrendako 2. elementua hartzen du [24 4], eta horretatik 3. Elementua hartzen du, 95. >95 PRINT ITEM 1 ITEM 3 ITEM 2 :bestebat >9 COUNT :list PRINT COUNT :fib >9

;elementuen kopurua itzultzen du

37


PRINT COUNT ITEM 2 :bestebat ;zerrendako bigarren elementuaren elementuen kopurua >2 PRINT ITEM 2 ITEM (COUNT ITEM 2 :bestebat) :bestebat ;ez beldurtu, filosofia berdina aplikatu dugu, hots, irakurri eskoitik ezkerrera eta gakorik sakonenetik kanpora Gakoa ezkutatuta, ITEM 2 ITEM X :bestebat Kalkulatu behar da lehendabizi zer den X hori, eta adierazpen honek emango digu azalpena: COUNT ITEM 2 :bestebat, alegia zerrendaren bigarren elementuaren, [24, 4] elementu kopurua (count), 2. Atzera joanez gero, eta aurreko balioa ordezkatuta, hau daukagu: ITEM 2 ITEM 2 :bestebat, hortaz zerrendaren bigarren elementuaren bigarren elementua: [24, 4] >4 FPUT / LPUT thing list MAKE "fib FPUT 0 :fib ;eskoitik txertatzen du PRINT :fib >0 1 1 2 3 5 8 Fibonacci da hau . MAKE "fib LPUT "! :fib ;ezkerretik txertatzen du PRINT :fib >0 1 1 2 3 5 8 Fibonacci da hau . ! REMOVE thing list MAKE "fib REMOVE 1 :fib ;elementua ezabatzen du PRINT :fib >0 2 3 5 8 Fibonacci da hau . MAKE "fib REMOVE hau :fib >I don’t know how to fib MAKE "fib REMOVE "hau :fib PRINT :fib >0 2 3 5 8 Fibonacci da .

38

;kontuz! testuak "-ekin


MEMBER thing list PRINT MEMBER "b [a b c d] >b c d PRINT MEMBER "d [a b c d] >d PRINT MEMBER "x [a b c d] >

ARRAY / ITEM (F) / SETITEM (P) Zerrenden antzekoak dira, baina elementuak posizio finkoetan kokatzen dira, eta ezin dira mugitu, ezta array-a birdimentsionatu ere, hau da, 5 elementutakoa izango bada 6 ezin izango zaizkio sartu. SORTZEKO MAKE arrayname (ARRAY top startpoint) MAKE "myarray (ARRAY 3) ;izendatzen da, baina balio barik PRINT :myarray >{[] [] []} MAKE "myarray (ARRAY 3 2) ;aurkibidea 2tik hasten da, orduan elementuen ordena izango da 2, 3 eta 4 SETITEM 1 :myarray "zerbait >setitem doesn’t like 1 as input MAKE "bestebat {a b c}@0 ;izendatu eta balioak sartzen zaizkio, azken zenbakiak adierazten du zein den lehen aurkibidea PRINT :bestebat >{a b c} PRINT ITEM 0 :bestebat >a PRINT ITEM 3 :bestebat >item doesn’t like 3 as input

ERABILTZEKO SETITEM position arrayname value MAKE "myarray (ARRAY 3) SETITEM 1 :myarray 24

;edozein ordenetan 39


SETITEM 3 :myarray "Perry SETITEM 2 :myarray "" PRINT :myarray >{24 " Perry} ;gerora ordenatuta agertuko da aurkibidearen arabera PRINT ITEM 2 :myarray ;Kontuz! 0tik Nra zenbatzen du, beraz 0->24, 1->", 2>Perry >Perry PRINT ITEM 4 :myarray ;tartetik irten gara! >item doesn’t like 4 as input SETITEM 4 :myarray "ezinezkue ;topea gaindituta >SETITEM doesn't like ezinezkue as input LISTTOARRAY arrayname Zerrenda bat array bihurtzen du, hortaz bakarrik zerrendari aplikatu dakizkiokeen funtzioak ez dira erabilgarri egongo array-arentzat. MAKE "aditzak [sum es est] PRINT :aditzak >sum es est

;zerrenda bat sortzen da

MAKE "aditzak LPUT "sumus PRINT :aditzak >sum es est sumus

;amaieran txertatu

MAKE "aditzak LISTTOARRAY :aditzak ;zerrenda array bilakatzen da MAKE "aditzak FPUT "latin ;array-ak ez du ulertzen zerrenden FPUT funtzioa >fput doesn’t like {sum es est sumus} as input ;nola sartu elementu hori eskoitik? Ezin da, arrayaren neurria finkoa delako. KONPONBIDEA: 1)Beste array bat sortu, aurrekoak duen baino elementu bat gehiagorekin. 2)Kopiatu array zaharra array berrira. 3)Txertatu elementu berria array-aren amaieran.

40


MAKE "aditzak [sum es est] MAKE "aditzak LISTTOARRAY :aditzak MAKE "aditzakberria (ARRAY (count :aditzak)+1) ;sortzen dugu array berria, zaharrak baino posizio bat gehiagorekin MAKE "aditzakberria :aditzak ;kopiatzen da batetik bestera SETITEM (COUNT :aditzakberria) :aditzakberria "sumus ;array-aren amaieran sartzen du elementua PRINT ITEM (COUNT :aditzakberria) :aditzakberria >sumus PRINT :aditzakberria >{sum es est sumus}

PILAK: PUSH (P) / POP (F) Pilak pilatuta dauden objektuen egitura da. Pentsatu mahai gainean jartzen den liburu multzoa, bata bestearen gainean. Jarritako azkena goian geratzen da, hortaz pilo3k elementu bat hartzekotan goikoa izango da, hots, piloan sartzen azkena lehen irteten da. SORTZEKO MAKE name [val] MAKE "pilie [] PRINT :pilie > MAKE "liburuek [teknologia literature ingelesa] PRINT :liburuek >teknologia literature ingelesa

ERABILTZEKO PUSH name value MAKE "dump [5 3 9 0] PUSH "dump -7 PRINT :dump >-7 5 3 9 0 41


PUSH "dump "hitza PRINT :dump >hitza -7 5 3 9 0 POP name PRINT POP :dump >hitza PRINT POP :dump >hitza

ILARAK: QUEUE / DEQUEUE (F) Aurreko egituraren antzekoa da, baina kasu honetan benetako ilara baten moduan funtzionatzen du: lehena sartzen, lehena irteten. SORTZEKO MAKE name [vals] MAKE "erreskada [] MAKE "erreskada [hura zu ni haiek]

ERABILTZEKO QUEUE name val MAKE "erreskada [] QUEUE "erreskada "Three QUEUE "erreskada "Two QUEUE "erreskada "One PRINT :erreskada >Three Two One PRINT DEQUEUE "erreskada >Three PRINT DEQUEUE "erreskada >Two PRINT DEQUEUE "erreskada >One PRINT DEQUEUE "erreskada >first doesn't like [] as input in DEQUEUE

42


BIGARREN BLOKEKO ARIKETAK 1. Sortu hurrengo aldagaiak: testuzko bat, zenbakizko beste bat, eta array bat. Horren ostean sartu denak zerrenda baten barruan eta inprimatu. 2. Sortu zenbakizko bi aldagai. Ondoren bien arteko balioak trukatu (a=3 b=5, orduan a=5 b=3). 3. Honen antzeko zerrendak (matrizeak) sortu, hainbeste elementu sartu eta azpitaldeak banaka-banaka inprimatu, baita euren elementuen kopurua ere (COUNT): [][], adibidea hau izan daiteke [1 2 3][4 5] COUNT ITEM = 2 COUNT ITEM 1 = 3 COUNT ITEM 2 = 2 Gauza bera egin hurrengo zerrendekin: [[][]] [[][[][]]] [[][[]]] [[[[[][]][]]]] 4. Honako zerrenda hau ikusita [a -5 ur 3.14] elementuei buelta emateko kodea sortu [3.14 ur -5 a] moduan geratzeko (LPUT eta antzekoak erabili). 5. Aurreko gauza bera egin baina ARRAY bat erabilita. 6. Hurrengo zerrenda [me you them] ARRAY batera pasa, eta ondoren beste zerrenda batera. 7. Zerrenda honi buelta eman [2 4 6 8 10] PILA bat erabilita. 8. Bi zerrenda hauek sortu [1 4 6 8] eta [-3 -6 4 1e10] eta ILARAK erabilita elementuak binan binaka batu (1+-3, 4+-6 6+4 8+1e10). 9. Zerrenda hau kontuan edukita [a b c d], ARRAY batera pasa eta piramide moduan inprimatu: abcd abc ab a 10. Lauki bat marraztuko dugu, baina bere koordenatuak zerrenda baten barruan egongo dira, honelako formatuan: [[0 0][100 0][100 100][0 100]]. Sortu zerrenda hori eta SETXY/SETPOS erabilita egin laukia. 11. Gorde zerrenda baten aurreko blokeko melodia (DO DO DO SI DO RE RE RE SI DO RE SI DO SOL) eta jo elementuak zerrenda3k aterata. Ondoren PILA batean sartu eta jo berriz ere atzekoz aurrera.

43


HIRUGARREN BLOKEA: FUNTZIOAK/PROZEDURAK FUNTZIOAK/PROZEDURAK SORTZEKO FUNTZIOA: balio bat itzultzen du OUTPUT erabilita. Balio horrekin zerbait egin behar da, bestela akats bat jasoko dugu. MAKE "nirekatea "1234567890 ITEM 3 :nirekatea ;3. posizioa itzultzen du >You don’t say what to do with 3 PRINT ITEM 3 :nirekatea ;orain balioa atzeko prozedurari pasatzen dio, berak hartu eta inprimatzeko >3 Matema3kako funtzioen modura funtzionatzen dute: y = x + 1, non eskumako x-ari balioak eman eta ezkerreko y-3k sortzen diren. Modu berean hainbat funtzio kateatu ahal dira bata bestearen atze3k. PRINT ITEM 5 FPUT 0 [1 2 3 4] >4 ;konturatu adierazpen honek 2 funtzio dituela (eta inprimatzeko prozedura bat). Hasieran zerrendak 4 elementu baino ez ditu, beraz 5. ezin du inprimatu. Orduan, irakurri eskoitik ezkerrera: lehendabizi zerrenda bat sortzen dugu (4 elementukoa), gero bostgarren elementua sartzen diogu ezkerretik (5era ailegatuta), eta horren ostean 5. elementua hartzen da, eta PRINT-eri pasatzen zaio inprimatzeko.

MAKE "pilie [5 6 3] PRINT SUM ITEM 3 "3487 POP "pilie >11 PRINT SUM ITEM 3 "3487 POP "pilie >14 MAKE "pilie [5 6 3] ;pila bat sortzen dugu (elementuak pilatuta agertzen diren egitura da), non sartzen dugun azken elementua beti den lehena irteten, kasu honetan 3 zenbakia.

44


PRINT SUM ITEM 3 "3487 POP "PILIE ;konturatu lerro bakar batean 3 funtzio eta prozedura 1 daudela. Azter dezagun jokaldia: 1.)

SUM da funtzio nagusia, eta berak bi parametro behar ditu, batugaiak: SUM a b, euren arteko batuketaren emaitza itzultzeko.

2.)

SUM-ek lehen parametro hartzen du: "3487, baina horri funtzio bat aplikatzen zaio ITEM. Beraz lehen parametroa honela geratuko da "3487-ren 3. elementua: 8

3.)

SUM-en bigarren parametroa pilatik ateratako elementua izango da. Hori egiteko POP funtzioari deitzen zaio, "PILIE-tik 3 balioa atera eta SUMeri pasako diona.

4.)

Puntu honetan SUM-ek bi parametroak ditu (orain arte ezin izan du ezer egin, eta zain egon da beste bi funtzioek bukatu arte): 8 + 3. Emaitza kalkulatu eta PRINT-eri pasako dio, zeinek 11 emaitza kontsolan inprimatuko duen.

>11 Bigarren aldian egiterakoan pilatik hurrengoko balioa hartuko du (erdian ikusten dena, eta orain pilaren goikaldean dagoena). >14

PROZEDURA: ez du baliorik itzultzen, beraz prozedurari zuzenean deitu eta besterik ez dugu egin behar. Prozedura ba3 ezin zaio kateatu beste prozedura bat, baliorik itzultzen ez duenez atzeko prozedurak ez baitu jakingo zer egin. FD 50 ;dortoka aurrera mugitzen du 50 puntu, baina ez du baliorik itzultzen, hortaz PRINT FD 50 >FD DIDN’T OUTPUT TO PRINT PRINT "mugitu! FD 50 ;orain print-ek behar duen parametro hartzen du, eta horren ostean dortoka aurrera doa 50 puntu. Konturatu BI ADIERAZPEN direla, bat marrazketa-arean islatu eta bestea kontsolan ikusiko dena. >mugitu!

45


DEFINITZEKO (EDITOREAN) EDALL (P) Editorea zuzenean irekitzeko (botoari sakatu barik). EDALL

TO name :param1 :param2 :paramN OUTPUT val END

Prozedimendua: TO ESANIZENA :izena :zenbat REPEAT :zenbat [PRINT :izena] END

Funtzioa: TO BATUKETA :lehenzenbakia :bigarrenzenbakia OUTPUT :lehenzenbakia + :bigarrenzenbakia END

ERABILTZEKO ESANIZENA "Andoni 3 >Andoni >Andoni >Andoni PRINT ESANIZENA "Andoni 3 ;gogoratu prozedura dela >REPEAT didn't output to print BATUKETA 3 5 ;gogoratu funtzioa dela >I don’t know what to do with 8 PRINT BATUKETA 3 5 >8

46


ERREKURTSIBITATEA Gaitasun honen bitartez funtzio batek bere buruari deituko dio. Adibidez, zenbaki zehatz bate3k 10 arte zenbatuko duen prozedura hau da: TO zenbatu :zbk PRINT (SENTENCE "Hau "da "zenbakia :zbk) IF :zbk<10 [zenbatu :zbk+1] END

Barruko IF hori ez balego‌ prozedurak inďŹ nitura arte zenbatuko luke: TO zenbatu :zbk PRINT (SENTENCE "Hau "da "zenbakia :zbk) zenbatu :zbk+1 END

Zenbakia parametro moduan pasatzen ez bada: TO zenbatu MAKE "zbk 1 PRINT (SENTENCE "Hau "da "zenbakia :zbk) MAKE "zbk :zbk+1 IF :zbk<10 [zenbatu] END ;prozedura hasieran aldagaia 1 balioan ezartzen da beti, beraz 1 inprimatzen du. Gero 2 balion jarri eta IFa konprobatzen da, beti izango dena 10 baino txikiagoa. ;hurrengo deialdian 1 balioan jarriko da, eta zikloa errepikatuko da eten barik horrela. Hortaz prozedura errekurtsibo baten eskema be3 izango da honen antzekoa: TO prozedura :param ;param horrekin zerbait egin: PROZESU NAGUSIA ;baldintzan konprobatu prozedurari deituko bazaion IF param BALDINTZA [prozedura :param] ;bestela amaitu eta prozedura gelditzen da END ;ESKEMA MODUAN PROZESUA :param

47


BALDINTZA :param DEITU PROZESUA AMAITU

48


HIRUGARREN BLOKEKO ARIKETAK 1. Edozein poligono marrazteko prozedura bat prestatu, zeinak alde kopurua, eta aldearen neurria jasoko dituena. Poligono ezberdinak marraztu. Moldatu aurreko prozedura marraren loditasuna eta koloreen parametroak pasatu ahal izateko. 2. Bost elementuko sekuentziak sortzen dituen funtzioa prestatu. Hasierako zenbakia eta jauzia (elementu bate3k beste batera pasatzeko gehiketa) jasoko ditu. Inprimatu kontsola3k. Adibidez: 5 eta 3 jasoz, itzuliko du 5 8 11 14 17. Edota -4 eta 0.5 jasoz: -4 -3.5 -3 -2.5 -2 3. Bi zenbaki-zerrenda jasoko dituen funtzioa sortu, bi zerrenden arteko zenbakien arteko baturen zerrenda itzuliko dituena (batuketak binan-binan egingo dira): Adib: [1 2 4] eta [3 2 1] = [4 4 5] 4. Edozein zerrenda jasoko duen prozedura prestatu, eta kontsola3k inprimatuko du zerrendaren informazioa: elementuak eta kopurua. Adibidez: [5 a p 3 -1], 5, a, p, 3, -1 eta kopurua 5 da. 5. Funtzio eta prozedura bat prestatu. Lehenak 1e3k 5erako zenbaki zerrenda itzuliko du (erabili OUTPUT), eta bigarrenak kontsola3k inprimatuko du lehenaren erantzuna. 6. Kontsola3k edozein esaldi inprimatuko duen prozedura prestatu, zeinak bere buruari deituko dion. Adibidez: to proba print "edozer proba end Zer gertatu da? Nola eraldatuko zenuke? 7. Kokapen kartesiar bat, erradioa, lapitzaren tamaina eta kolorea jasoko duen prozedura prestatu, eta datu horiekin zirkunferentzia bat marraztu. 8. Aurreko ariketako datuak zerrenda batean jasoko dituen prozedura prestatu, eta horrek aurreko puntukoari deituko dio horiek datuak erabilita zirkunferentzia ezberdinak marrazteko. Adib: marraztu [0 100 50 1 5][50 75 20 2 3] (MARRAZTUk 7.ariketako prozedurari deituko dio zerrendako datuak pasatuz parametro moduan). 9. Errekurtsibitatea erabilita 10e3k 1era zenbatuko duen prozedura prestatu. 10. Errekurtsibitatea erabilita letra guz3ak inprimatuko dituen prozedura prestatu, A3k Zra.

49


LAUGARREN BLOKEA: FLUXUAK FLUXU KONTROLA BALDINTZAK IF condi on [instruc ons if true] Baldintzak aztertzeko balio du. Bakarra edo bikoa bada kakotxak ez dira nahitaezkoak, aldiz, hiru edo gehiago edukiz gero kakotxak jarri behar dira. Edozein kasutan KAKOTXAK BETI JARRI ahal dira (beharbada errazago suertatuko zaizu horrela). IF 2>1 [PRINT "Handiagoa!] >Handiagoa! IF (2>1) [PRINT "Handiagoa!] >Handiagoa! IF AND 2>1 4<5 [PRINT "Egixe!] >Egixe! ;AND aurrerago ikusiko da, baina esan nahi du ETA, hau da, baldintza biak bete behar direla. IF AND 2>1 4<5 2*5=10 [PRINT "Egixe!] >I don’t know how to true ;hiru baldintza daude gako barik, horregatik akatsa. IF (AND 2>1 4<5 2*5=10) [PRINT "Egixe!] >Egixe! ;baina IF (AND 1>2 4<5) [PRINT "Egixe!] > ;baldintzen barruan funtzioak sartu ahal dira MAKE "katea "Edozelakue IF COUNT :katea = 10 [PRINT [10 neurtzen du]] >If doesn’t like 10 as input ;gauza lar daude IFaren ostean, hortaz gakoekin sinplifikatuko dugu adierazpena IF (COUNT :katea) = 10 [PRINT [10 neurtzen du]] >10 neurtzen du 50


IFELSE condi on [instruc ons if true] Aurrekoaren berdin-berdina, baina gezurra deneko zerbait egiteko aukera ematen du. IFELSE 1>1 [PRINT "Handiagoa!][PRINT "Auskalo!] >Auskalo! MAKE "bat "testu1 MAKE "bi "testu1 IFELSE :bat=:bi [PRINT "Berdinak][PRINT "Ezberdinak] >Berdinak MAKE "bi "testu2 IFELSE :bat=:bi [PRINT "Berdinak][PRINT "Ezberdinak] >Ezberdinak ;ez nahastu IF eta IFELSE IFELSE 1>1 [PRINT "Handiagoa!] >not enough inputs to ifelse IF 1>1 [PRINT "Handiagoa!][PRINT "Auskalo!] >Assuming you mean IFELSE and not IF >Auskalo!

NOT Baldintzaren kontrakoa kalkulatzen du. Bata bestearen barruan egon daitezke. IFELSE NOT 2>1 [PRINT "Handiagoa!][PRINT "Txikiagoa!] >Txikiagoa IFELSE NOT AND 2>1 NOT 3<5 [PRINT "Handiagoa!][PRINT "Txikiagoa!] >Handiagoa!

OR (edo) eta AND (eta) IFELSE OR 1>5 5=5 [PRINT [Bietako bat egia da]][PRINT [Biak gezur dira]] >Bietako bat egia da IFELSE AND 1>5 5=5 [PRINT [Biak egi dira]][PRINT [Bietako bat edo biak gezur dira]] >Bietako bat edo biak gezur dira

51


TEST condi on Aurreko IF/IFELSE-etan egiten denaren berdina egiteko aukera ematen du, baina bi lerrotan. Eragina berdina da. TEST condition IFTRUE [instructionlist] IFFALSE [instructionlist] make "putzue [5 a -0.5] test numberp pop "putzue

;ateratakoa zenbakia da?

iftrue [print [Zenbakixe da!]] ;baden iffalse [print [Ez da zenbakixe!]] ;ez baden >Zenbakixe da! test numberp pop "putzue

;berdin egingo da

iftrue [print [Zenbakixe da!]] ;baden iffalse [print [Ez da zenbakixe!]] ;ez baden >Ez da zenbakixe!

NUMBER? (zenbaki bat da?) PRINT NUMBER? -5.34 >true PRINT NUMBER? [40 urte dakotez] >false PRINT NUMBER? [40] ;zerrenda bat da, ez zenbakia >false PRINT NUMBER? ITEM 1 [40 urte dakotez] ;40 hartuko du >true IF NUMBER? READWORD [PRINT [Zenbakixe idatzizu]] >(idazten duzunaren arabera)

EMPTY? (hutsik dago?) PRINT EMPTY? 50 false PRINT EMPTY? " true PRINT EMPTY? [] true 52


MAKE "seguruhutsik [] MAKE "iaba " PRINT SENTENCE EMPTY? :seguruhutsik EMPTY? :iaba >true true

MEMBERP element set (elementua multzoaren barruan dago?) PRINT MEMBERP 5 [1 3 5] >true PRINT MEMBERP "p "Perry ;letra-larriak gora-behera >true PRINT MEMBERP "cat [dog cat bird] >true

EQUALP elem/list elem/list (biak berdinak dira?) PRINT EQUALP 5 3 >false PRINT EQUALP "perry "PERRY >true MAKE "obj1 [] ;zerrenda hutsik MAKE "obj2 " ;esaldia hutsik PRINT EQUALP :obj1 :obj2 >false MAKE "obj1 LPUT "iahonela :obj1 MAKE "obj2 "iahonela PRINT EQUALP :obj1 :obj2 >false PRINT SENTENCE :obj1 :obj2 ;begiz jota berdinak dira, baina lehenengokoak jarraitzen du ZERRENDA izaten, eta bigarrena ESALDIA >iahonela iahonela MAKE "obj1 [cat dog mouse] MAKE "obj2 [dog mouse cat] PRINT EQUALP :obj1 :obj2 ;berdinak izateko elementuak berdinak izan eta orden berdinean egon behar dira >false

53


MAKE "obj2 [cat dog mouse] PRINT EQUALP :obj1 :obj2 >true MAKE "obj1 [ace heart diamond] MAKE "obj2 :obj1 ;berdintzen dira PRINT EQUALP :obj1 :obj2 >true MAKE "obj1 [a b c][d e f] MAKE "obj2 [a b c d e f] PRINT EQUALP :obj1 :obj2 ;eta zerrendek egitura berdina eduki behar dute >false

WORDP (hitza/zenb?) / LISTP (zerrenda?) / ARRAYP (array-a?) Egitura hauek (WORD/LIST/ARRAY) ordenagailuko memoriaren barruan informazioa nola organizatzen den adierazten dute. Hortaz testu eta zenbakiak WORD izango dira, zerrendak LIST (bilduma dinamikoak) eta array-ak ARRAY (bilduma esta3koak). MAKE "obj1 [hitza1 hitza2] MAKE "obj2 "hitza3 MAKE "obj3 12.5 PRINT sentence WORDP :obj1 WORDP :obj2 ;lehena zerrenda da, eta bigarrena hitza >false true PRINT WORDP ITEM 1 :obj1 WORDP :obj3 ;lehena zerrendako hitz bat da, eta bigarrena zenbakia >true true

BEGIZTAK Egitura hauek ERREPIKAPENA egiteko balio dute (0tik Nra arte, edota 1etik Nra arte). Normalean bi bloke dauzkate: 1. Begiztaren barruan jarraitzeko edo irteteko ezartzen dituzten baldintzena. 2. Baldintzak bete bitartean zeintzuk agindu beteko diren.

REPEAT count [instruc onlist] (1..n) REPEAT 3 [PRINT [Iep txo!]] >Iep txo! >Iep txo! >Iep txo!

54


PRINT [Zenbatuku 1etik 10era] REPEAT 10 [PRINT repcount] ;REPCOUNT aldagaiak uneko iterazioaren balioa gordetzen du PRINT [Eta orain 0tik 10era] REPEAT 11 [PRINT repcount-1] repeat 10 [if (modulo repcount 2)=0 [print repcount]] ;1etik 10era zenbaki bikoitiak inprimatzeko >2 >4 >6 >8 >10 ;honela ere antolatu ahal da goikoa repeat 10 [ if (modulo repcount 2)=0 [print repcount] ] ;edo honela, bloke bakoitza identazio batekin repeat 10 [ if (modulo repcount 2)=0 [ print repcount ] ]

FOR [controllist] [instruc onlist] (0..n) CONTROL LIST: [1 2 3 4] 1) Zenbatgarren bueltan gauden jakiteko erabiliko den aldagaia. Bertotik hartuko da balioa lan egiteko. 2) Iterazio tartearen HASIERAKO zenbakia. 3) Iterazio tartearen AMAIERAKO zenbakia. 4) Zenbakirik zenbaki emango den jauzia. Jartzen ez bada, 1ekoa izango da. ;0tik 100era arteko zenbaki primoak kalkulatzeko PRINT [1 2 3] ;Aurrekoak fijo idazten ditugu, 2 eta 3 erabiliko baitira primoak kalkulatzeko FOR [zenb 4 100 1] [ ;4tik 100era 1eko jauzietan ZENB aldagaian utziko dira 55


if NOT OR (modulo :zenb 2)=0 (modulo :zenb 3)=0 [ ;ez bada /2 edo /3 orduan inprimatu PRINT :zenb ] ] ;Fibonacci handiaren sekuentzia, eta urrezko zenbakia MAKE "aurrekoa 1 MAKE "aurrekoarenaurrekoa 0 ; 0 eta 1 zenbakiak dira hasierakoak FOR [zenb 1 10 1] [ ;lehenengo 10ak kalkulatuko dira MAKE "unekoa :aurrekoa + :aurrekoarenaurrekoa ;edozein zenbaki aurreko bien batuera da PRINT :unekoa MAKE "aurrekoarenaurrekoa :aurrekoa MAKE "aurrekoa :unekoa ;gaurkotzen ditugu aldagaiak, ikusi zergatik ;lehenengo bueltan: ;0 1 1 ;aa au un ;bigarrenean ;0 1 1 2 ;x aa au un (ORAIN aa=aurreko au, eta au=un) ;hirugarrenean ;0 1 1 2 3 ;x x aa au un ] ;Urrezko zenbakia (1.61803398874989‌) Fibonacciren urrenez urreneko bi zenbakien arteko zatiketatik sortzen da sekuentziak infinitura jotzen duenean. Logok bere mugak ditu, hortaz aurreko zenbaki murriztua ikusita zenbatgarren iterazioan topatzen da? MAKE "aurrekoa 1 MAKE "aurrekoarenaurrekoa 0 FOR [zenb 1 READWORD 1] [ MAKE "unekoa :aurrekoa + :aurrekoarenaurrekoa MAKE "urrezkozenbakia :unekoa / :aurrekoa PRINT (sentence :zenb "Iterazioa " urrezkozenbakia) MAKE "aurrekoarenaurrekoa :aurrekoa MAKE "aurrekoa :unekoa ]

56


;Eta atzera kontatzeko? FOR [zenb 10 1 -0.5] [PRINT :zenb]

DO.WHILE [ins instruc onlist condi onlist] instruc onlist] truc onlist] [condi onlist condi onlist] (1..n) Honek esan nahi du: EGIN BALDINTZA BETETZEN DEN BITARTEAN. Hortaz, gutxienez aldi baten exekutatuko da, horregatik esaten da 1etik Nra doala. ;hainbat alditan aterako ditugu ausaz elementuak zerrenda batetik MAKE "zenb 1 MAKE "letrak [alfa beta delta zeta iota pi] MAKE "guztira READWORD DO.WHILE [ PRINT ITEM (RANDOM (COUNT :letrak))+1 :letrak MAKE "zenb :zenb + 1 ][:zenb < :guztira +1]

WHILE [condi onlist condi onlist] instruc onlist] condi onlist] [instruc onlist instruc onlist] (0..n) Aurrekoaren berdina, baina baldintza betetzen ez bada hasiera batean begiztan ez da sartzen ezta behin ere. ;abecedarioa inprimatuko dugu ;horretarako ASCII eta CHAR funtzioak erabiliko dira ;letra bakoitzak zenbaki-kode bat dauka: a-k 97, eta z-k 122, hortaz zenbatuko dugu 97, 98, 99... 121, 122 MAKE "letra ascii("a) ;gordetako balioa 97 ;aukeran hau ere egin ahal da: ;MAKE "letra 97 MAKE "tope ascii("z) ;hemen 122 WHILE [:letra<=:tope][ PRINT char(:letra) ;inprimatu kodearekiko letra MAKE "letra :letra + 1 ]

DO.UNTIL [instruc onlist] [condi onlist] (1..n) Kasu honetan begiztaren barruan jardungo da BALDINTZA BETE ARTE (ez aurreko kasuetan bezala, non BETETZEN ZEN bitartean egoten zen begiztan). ;tilin tolon tilin tolon egingo dugu. MAKE "kanpaia "tilin DO.UNTIL [ PRINT :kanpaia IFELSE :kanpaia="tilin [MAKE "kanpaia 57


"tolon][MAKE "kanpaia "tilin] ;kanpaiaren hotsaren balioa aldatzen dugu: tilin bazen tolon jarriko dugu, eta alderantziz MAKE "erantzuna yesnobox "Galdera [Jarraitu nahi duzu kanpaia mugitzen ?] ;yesnobox funtzioak erantzun-leiho bat irekitzen du. BAI botoiari sakatuz gero TRUE itzuliko du, bestela FALSE. ][NOT :erantzuna] ;galdera izan da "Jarraitu nahi duzu" beraz jarraitzeko TRUE denez DO UNTIL honetan FALSE behar dugu (jarraitu bete arte), horregatik NOT bat jarri diogu baldintzari. ;Kontrako galdera izango bazen "Gelditu nahi duzu ", NOT-ik ez lukeen hartuko, berez FALSE izango litzatekeelako, hots, baldintza beteko lukeena. ;Ikusi nola geratuko litzatekeen: MAKE "kanpaia "tilin DO.UNTIL [ PRINT :kanpaia IFELSE :kanpaia="tilin [MAKE "kanpaia "tolon][MAKE "kanpaia "tilin] MAKE "erantzuna yesnobox "Galdera [Gelditu nahi duzu kanpaia mugitzen?]] [:erantzuna]

UNTIL [condi onlist] [instruc onlist] (0..n) Aurrekoaren berdina, baina baldintza hasiera3k betetzen bada begiztan ez da sartuko. MAKE "kurtsorea 1 MAKE "esaldia [Izarrontzia 10 segundutan suntsituko da! 10 9 8 7 6 5 4 3 2 1. Agur! BOOOOOOOOOM!] MAKE "aurreesaldia [] UNTIL [:kurtsorea> COUNT :esaldia][ CT MAKE "aurreesaldia LPUT (ITEM :kurtsorea :esaldia) :aurreesaldia PRINT :aurreesaldia MAKE "kurtsorea :kurtsorea +1 WAIT 30 ]

FOREACH # ? ?REST (iterazio elementua gainontzekoa) Instrukzio hau zerrendekin erabiltzen da normalean, eta aurrekoen antzekoa da, baina zuzenean erabili daitezke zerrendaren elementuak hurrengoko sinboloen bitartez: 58


1) # errepikapen zenbakia da, REPEAT-aren REPCOUNT-a bezalakoa. 2) ? zerrendaren unean uneko elementua da. 3) ?REST zerrenda3k ateratzeko falta diren gainontzeko elementuak dira. FOREACH [a b c d] [PRINT (SENTENCE # "/ ? "/ ?REST)] >1 / a / b c d >2 / b / c d >3 / c / d >4 / d /

FOREVER Etengabeko begizta batean sartzen da. Barru3k irteteko modu bakarra STOP baten bitartez izango litzateke, bestela inďŹ nitorarte jarraituko luke. PRINT [Sotina dakozu?] FOREVER [PRINT "Jik!] ;txanpona botako dugu infinitura arte, baina gurutzea irteten denean jolasa amaituko da ;txanponaren botaldia kalkulatzeko ausazko zenbaki bat kalkulatuko dugu 0tik 9ra. 0tik 4ra aurpegia izango da, eta 6tik 9ra gurutzea. FOREVER [ IFELSE (RANDOM 10)<5 [MAKE "txanpona "aurpegia][MAKE "txanpona "gurutzea] PRINT :txanpona IF :txanpona="gurutzea [STOP] ]

STOP Begizta bate3k irteten da baldintzak edozelakoak izan arren. ;Hurrengo begiztak 1etik 100era zenbatu beharko luke, baina bostera helduta amaitu egiten da. FOR [zbk 1 100 1][IF :zbk=5 [STOP]]

BEGIZTEN ARTEKO BALIOKIDETASUNAK Ikusi hurrengo adibideetan zer nola harremana dagoen begizta-egituren artean, eta nola lortu gauza bera aukera guz3ekin.

1..10 (1..n) Datozen adibideak sinpliďŹ katu dira argi ikus dadin sintaxia. 1e3k 10erako zenbakiak inprimatuko dute, eta aldagaia be3 izango da n. 59


REPEAT 10 [PRINT REPCOUNT] FOR[n 1 10 1][PRINT n] MAKE "n 1 WHILE[:n<=10][PRINT :n MAKE "n :n+1] MAKE "n 1 DO.WHILE[PRINT :n MAKE "n :n+1][:n<=10] MAKE "n 1 UNTIL[:n>10][PRINT :n MAKE "n :n+1] MAKE "n 1 DO.UNTIL[PRINT :n MAKE "n :n+1][:n>10] FOREACH [1 2 3 4 5 6 7 8 9 10] [PRINT ?] MAKE "n 1 FOREVER[PRINT :n MAKE "n :n+1 IF(n>10)[STOP]]

0..10 (0..n) REPEAT 11 [PRINT REPCOUNT-1] FOR[n 0 10 1][PRINT n] MAKE "n 0 WHILE[:n<=10][PRINT :n MAKE "n :n+1] MAKE "n 0 DO.WHILE[PRINT :n MAKE "n :n+1][:n<=10] MAKE "n 0 UNTIL[:n>10][PRINT :n MAKE "n :n+1] MAKE "n 0 DO.UNTIL[PRINT :n MAKE "n :n+1][:n>10] FOREACH [0 1 2 3 4 5 6 7 8 9 10] [PRINT ?] MAKE "n 0 FOREVER[PRINT :n MAKE "n :n+1 IF(n>10)[STOP]]

PAUSAK EZARTZEKO ETA ETETEKO PAUSE / CONTINUE PAUSE erabiltzen denean leiho bat agertuko da jakiteko zer egin behar den pausa horren bitartean. Jarraitzeko tekleatu beharko da CONTINUE. FOR[i 1 100 1][ IF i=5 [PAUSE] ]

60


LAUGARREN BLOKEKO ARIKETAK 1. Ikusi hurrengoko progresioa: 1, 2, 4, 8, 16, 32… Horren lehen 50 elementuak kalkulatuko dituen begizta prestatu funtzio baten barruan modu hauetan: FOR batekin, WHILE batekin eta REPEAT batekin. Ondoren kontsola3k agerrarazi. 2. Aurreko ariketari sartu gehikuntza bat: zenbakiaz gain hau testua agerrarazi "8ren mul3ploa da", baldintza hori betetzen bada (16, 32, 64… zenbakiekin gertatuko da). Erabili IF edo TEST egitura. Adibidez: 1, 2, 4, 8, 16 8ren mul3ploa da, 32 8ren mul3ploa da… 3. Prozedura baten barruan: kontsola3k jaso balio bat, ikusi zer motakoa den eta kontsola3k agertu informazio hori. Adibidez: 4, zenbakia; sdfsdgwe, testua; , hutsik. 4. Fibonacciren sekuentzia kalkulatzeko adibidea daukazu FOR erabilita. Hori birmoldatu gainontzeko begizta-egituren arabera funtzio baten barruan: WHILE, DO WHILE, REPEAT, UNTIL, FOREVER. Ondoren kontsola3k agertu. 5. Prozedura bat sortu, elkarrizketa hau edukiko duena (erantzuna ondo eman arte LOGOk galdera berdina galdetzen jarraituko du): KAIXO, NOLA DAUKAZU IZENA? (kontsola k jaso izena, eta konprobatu testua dela). (ondo)>POZTEN NAIZ ZU EZAGUTZEAZ :IZENA (txarto)>BENETAKO IZENA ESAN BEHAR DIDAZU. :IZENA EZ DA ZUZENA. ZENBAT URTE DITUZU? (konprobatu zenbakia dela). (ondo)>HORTAZ :urte URTE DITUZU, E? (txarto)>URTEAK TXARTO ESAN DIZKIDAZU NON BIZI ZARA? (konprobatu testua dela, eta BERMEO esanez gero…) (ondo, Bermeon)>HARA! NEU ERE BERMEON BIZI NAIZ (ondo, beste baten)>ORDUAN :HERRIA-n BIZI ZARA, NI, ALDIZ, BERMEON BIZI NAIZ (txarto)>:HERRIA HERRI BAT AL DA? EZ DUT USTE. Adibidez: >KAIXO, NOLA DAUKAZU IZENA? >EGUZKI >POZTEN NAIZ ZU EZAGUTZEAZ EGUZKI >ZENBAT URTE DITUZU? >HAMAR >URTEAK TXARTO ESAN DIZKIDAZU >ZENBAT URTE DITUZU> >10 61


>HORTAZ 10 URTE DITUZU, E? >NON BIZI ZARA? >5 >5 HERRI BAT AL DA? EZ DUT USTE. >NON BIZI ZARA? >BERMEO >HARA! NEU ERE BERMEON BIZI NAIZ 6. Labirintoak marrazteko prozedura idatzi. Ez dute sarrera edo irteera zehatzik eduki behar, ez eta berta3k igarotzeko bidea izan. Ausaz marraztu. Ikusi adibidea:

62


BOSTGARREN BLOKEA: ELKARRAKZIOA KONTSOLATIK BALIO BAT JASOTZEKO ETA INPRIMATZEKO Aukera hauei ezker ordenagailua eta erabiltzailearen arteko elkarrekintza bermatzen dugu pantaila3k balioak eskatzeko. Era horretan programak behar dituen balioak kodean sartu beharrean kontsola3k jaso daitezke.

READWORD (f) Esaldi bat irakurtzen du. PRINT [Kaixo, txo, zelan zauz?] MAKE "erantzuna READWORD IF :erantzuna="ondo [PRINT [Pozten nai!]] IF :erantzuna="txarto [PRINT [Sentitzen dot!]]

READLIST (f) Zerrenda bat irakurtzen du. Aurrekoaren antzekoa da, baina esaldi moduan gorde beharrean zerrenda formatuan egiten du, hortaz zerrendei dagozkien funtzioak aplika dakizkioke. ;zerrenda elementu batzuk irakurri eta kontrako ordenan inprimatuko dira MAKE "erantzuna READLIST MAKE "zenbat COUNT :erantzuna MAKE "buelta [] FOR [pos 1 :zenbat 1][ ;elementuz elementu irakurri eta beste zerrendako hasieratik txertatzen dira. MAKE "buelta FPUT (ITEM :pos :erantzuna) :buelta ] PRINT :buelta ;ikusi estrategia, baldin eta sarrera hau bada: ;1 2 3 4 5 ;1.zikloan ;1 ;2.zikloan (hasieratik txertatzen da, bestea bultzatuz) 63


;2 1 ;3.zikloan ;3 2 1 ;eta abar.

READCHAR (f) Aurrekoa bezalakoa, baina bakarrik itzuliko du sartutako lehen karakterea. PRINT [Jolastu ostabere? (Y/N)] MAKE "ANS READCHAR IF :ANS = "Y [JOLASA] IF :ANS = "N [PRINT [Agur, ordun!]]

YESNOBOX window tle texPoshow (f) ;kontsolatik adina galdetuko da, eta horren ostean baieztapena. Bera positiboa izan arte begiztaren barruan jardungo gara. ;ikusi yesnobox galdera do.until baldintza barruan egiten dela, eta false den bitartean begiztara itzuliko dela. DO.UNTIL [ PRINT [Zein da zure adina?] MAKE "adina READWORD PRINT (SENTENCE [Zure adina] :adina "da.) ][YESNOBOX[Galdera][Zuzena da?]] PRINT (SENTENCE [Baieztatutako adina] :adina [da.])

PRINT / PR / SHOW (p) Kontsola3k inprimatzeko balio dute. PRINT "Hitza >Hitza MAKE "balioa 32442 PRINT :balioa >32442 PRINT 5+4 >9 MAKE "zerrenda [1 2 3 4] PRINT :zerrenda >1 2 3 4 PRINT "Esaldixe "da "hau >Esaldixe da hau PRINT [Esaldixe da hau] 64


>Esaldixe da hau PRINT "|Esaldixe da hau| ;barra bertikala 1 zenbakiaren teklan agertzen da, eta Alt Grd + 1 sakatu behar da >Esaldixe da hau

SENTENCE (letrak eta aldagaiak konbinatzeko) (f) MAKE "izena READWORD PRINT "Kaixo! :izena >I don’t know what to do with izena PRINT (SENTENCE "Kaixo! :izena) >Kaixo! Hodei PRINT (SENTENCE :izena ":izena "|:izena| [:izena]) >Hodei :izena :izena :izena

FITXATEGIEKIN LAN EGITEKO Fitxategi fitxa hitze3k dator, eta fitxen bildumaren esanahia du. Bi motakoak izan daitezke: 1) Textu-fitxategiak: lerroz lerro irakurriko direnak, liburu baten moduan. 2) Fitxategi binarioak: ordenagailu-erregistrotan gordeko direnak fitxa moduan. Bata izan ala bestea izan prozedura be3 da berdina: 1) IRAKURTZEKO: a. Fitxategia ireki. b. Lerro/erregistroa irakurri. c. Zerbait egin informazio horrekin. d. Hurrengo lerro/erregistrora pasa. e. Fitxategia itxi. 2) IDAZTEKO: a. Fitxategia ireki/sortu. b. Informazioa ARRAY edo ZERRENDA bate3k irakurri. c. Fitxategian idatzi. d. Hurrengo lerro/erregistrora pasa. e. Fitxategia itxi. Ikusten denez guk liburu batekin egiten dugunaren antzekoa da.

65


FITXATEGI BATEAN IDAZTEKO OPENWRITE / OPENUPDATE / SETWRITE / CLOSE Adibidean azaltzen dira komandoak. ;fitxategia idazteko ireki ;gaurkotzeko izango balitz: OPENUPDATE erabili OPENWRITE "nireinformazinue.txt ;LOGOri esaten zaio PRINTetik botatzen den guztia fitxategira transferitzeko, ez kontsolara SETWRITE "nireinformazinue.txt PRINT "Hona PRINT [Informazio aunitz] PRINT 128 ;Berriz ere PRINT-aren funtzionamiendua lehenengoratzen dugu SETWRITE [] ;eta fitxategia itxi, oso garrantzitsua dena CLOSE "nireinformazinue.txt ;orain joan fitxategi-arakatzailera, bilatu sortutakoa eta ireki Windows-aren editorearekin zuk idatzitako informazioa baieztatzeko.

FITXATEGI BATETIK IRAKURTZEKO OPENREAD / SETREAD / READLIST / EOFP / CLOSE ;aurrekoan bezala irakurtzeko irekiko dugu OPENREAD "nireinformazinue.txt ;datuen irakurketa fitxategitik egiteko esaten diogu LOGORI, eta ez leiho modal batetik, adibidez YESNOBOX eta antzekoetatik SETREAD "nireinformazinue.txt ;EOFP zera da: END OF FILE (fitxategiaren amaiera) ;Hortaz: fitxategia amaituta ez dagoen bitartean... WHILE[NOT EOFP][ PRINT READLIST ] ;irakurketa kontsolara berbideratzen dugu 66


SETREAD [] ;eta fitxategia itxi CLOSE "nireinformazinue.txt

KONTSOLAN IDATZITAKOA FITXATEGI BATERA PASATZEKO DRIBBLE / NODRIBBLE Ikusi adibidea. ;puntu honetatik aurrera kontsolan idatzitako guztia fitxategi batera berbideratuko da DRIBBLE "nireinformazinue.txt FORWARD 100 RIGHT 90 ;... eta abar ... ;eta honekin fitxategian idazteari ixten zaio NODRIBBLE

PANTAILAKO GUNEEKIN LAN EGITEKO Gunea pantailako za3 bat da. Za3 hori kopiatu, itsatsi eta beste hainbat gauza egin ahal dira.

BITLOAD / BITSAVE name (p) Pantailan irudi bat kargatzen du, edota ďŹ txategi batean gordetzen du. ;aurreko irudia kargatzeko hau egingo dugu BITLOAD "C:\\Users\\andoni\\Pictures\\violet\\paisaia.bmp

BITCOPY / BITCUT width height / BITPASTE (p) BITLOAD "c:\\drawing.bmp BITCOPY 200 200 CS REPEAT 50 [ PU SETXY RANDOM 1000 RANDOM 1000 PD BITPASTE ] 67


;irudia pantailan kargatu, zati bat kopiatu, pantaila garbitu eta 50 alditan ausaz itsatsi dugu pantailatik ;horretarako SETXY prozedura erabili da, dortoka koordinatu kartesiano batera zuzen eramaten duena

SETBITINDEX number (p) Pantaila za3ak kopiatzen ditugunean hainbat gunetara mugitu daitezke. Gune bakoitza SETBITINDEX prozeduraren bitartez adieraziko da, beraz 1era kopiatzen dena ezin izango da erabili 2an bagauden. ;irudi batetik hainbat zati hartungo ditugu ausaz, eta bakoitza gune ezberdin baten gordeko ditugu BITLOAD "c:\\drawing.bmp PU REPEAT 25 [ SETXY RANDOM 1000 RANDOM 1000 SETBITINDEX REPCOUNT BITCOPY 100 100 ] ;orain matrize-ordenean agerraraziko ditugu zatiak CS HOME MAKE "x 0 MAKE "y 0 FOR[i 1 50 1][ SETXY :x*100 :y*100 SETBITINDEX :i BITPASTE MAKE "x :x+1 IF :x>4 [ ;bost marraztu ostean hurrengo lerrora pasa behar gara MAKE "x 0 MAKE "y :y+1 ] ]

SETBITMODE number (p) Efektu ar3s3koak lor ditzakegu honen bitartez. Ikusi zirkuituen OR AND eta abarreko eragiketak egin daitezkeela koloreekin. Adibidez: Demagun bi irudi ditugula, eta bata bestearen gainean itsatsiko dugula. Modu klasikoan goian geratzen dena behekoa estaliko du, baina hori aldatu daiteke. Foka dezagun elkar

68


kointziditu duten bi puntutan, bata arrosa eta bestea urdina, eta arrosa gainean geratzen da. KOLOREA: arrosa KOLORE: urdina

ZENBAKIA: 5 ZENBAKIA:3

BINARIOZ: 101 BINARIOZ: 011

SETBITMODE-aren arabera hau gertatuko da posizio horretan: Mode Meaning 1 Take copy of memory then copy to screen Arrosaduna goien geratzen da eta urdina desagertzen da. 2

Take copy of memory OR with copy of screen then copy to screen Bi koloreen zenbaki binarioen arteko OR operazioa aplikatzen da, eta emaitzazko kolorea agertzen da. OR operazioan hau gertatzen da: 101 OR 011 = 111 = 7 (ZURIA). Inprimatuko den kolorea zuria izango da. OR operazioa egiteko bi zenbakiak bertikalez kokatu: 101 011 ----111 Eragiketa matematiko baten modura kalkulatzen da arau hau jarraituta: bi digitotik edozein 1 bada (edo biak) emaitza 1 da, bestela 0.

3

Take copy of memory AND with copy of screen then copy to screen Aurrekoaren berdina, baina AND-en bi digitoak 1 izan behar dira emaitza 1 izateko, bestela 0. 101 011 ----001 Emaitza 001 = 1 da, URDIN ILUNA. Take copy of memory XOR with copy of screen then copy to screen XOR operazioak bi digitoak berdinak direneko 1 ematen du, bestela 0. 101 011 ----001 Emaitza 001 = 1 da, URDIN ILUNA. Take copy of memory AND with invert of screen then copy to screen Memorian gordeta dagoen irudia hartu, horren negatiboa kalkulatu eta AND eragiketa aplikatzen zaio beste kolorearekin. 101 – originala, negatiboa digito guztiak aldatzetik lortzen da, 0ak 1 bilakatu eta 1ak 0. Hortaz 101 negatiboan izango da 010. 010 011 ----010 Emaitza 010 = 2 da, BERDEA. Take invert of memory then copy to screen Aurrekoan bezala, itsatsiko den kolorearen negatiboa: 101 -> 010, BERDEA.

4

5

6

69


7

8

9

Take copy of memory OR with copy of screen then invert to screen Lehendabizi OR operazioa aplikatzen da, eta emaitzaren negatiboa kalkulatu 010 011 ----011 -> negatiboa -> 100 = 4 = GORRIA Take invert of memory OR with copy of screen then copy to screen Lehendabizi memoriako negatiboa kalkulatu eta bigarrenarekiko OR operazioa. Aurrekoaren berdina baina ordena aldatuta. 010 -> negatiboa -> 101 101 011 ----111 Emaitza 111 = 7 da = ZURIA Take invert of screen then copy to screen Memoriatik negatiboa kalkulatu eta zuzenean kopiatu. 010 -> negatiboa -> 101 = 5 da = ARROSA

;exekutatu hurrengo funtzioa: marrazkia 50 200 ;ikusi ahal izango duzu bisualki moduak nola dabilzen TO marrazkia :tamaina :offset CT PRINT (SENTENCE [Datu hauekaz marraztuku: TAMAINA] :tamaina [(0,0)TIKO DESPLAZAMENDUE] :offset) PRINT [Baliorik onenak 75 200 diez] REPEAT 9 [ HOME CS MAKE "y 0 MAKE "x 0 SETPENSIZE :tamaina FOR[i 1 100 1][ IFELSE :x=0 [PU][PD] SETPC :i SETXY :x*:tamaina-:offset :y*:tamaina:offset PD MAKE "x :x+1 IF :x>9 [ MAKE "x 0 MAKE "y :y+1 ] ] PU HOME SETXY -:offset -:offset BITCUT ROUND :tamaina ROUND :tamaina PRINT SENTENCE "SETBITMODE REPCOUNT WAIT 200 SETBITMODE REPCOUNT 70


REPEAT 100 [ SETXY RANDOM :tamaina*100-:offset RANDOM :tamaina*100-:offset BITPASTE ] MAKE "nul YESNOBOX (SENTENCE REPCOUNT [. iterazioa]) [Sakatu jarraituteko] ] PRINT [Horra modo guztixek! Saiatu tamaina ezberdinekaz!] END

TESTU-KATEEKIN LAN EGITEKO ASCII character / CHAR number (f) ASCII kodea aspaldin asmatu zen eta oinarrizko letra, zenbaki eta sinbolo guz3ak bateratzen ditu, bakoitzeko zenbaki-kode bat dagoela (03k 255era). INTERNETen bilakaeraz ASCII kodea motz geratu zen herrialdeen arteko kode guz3ak bateratzeko (japoniar karaktereak, 単, 3lde, dieresi eta abar), eta UNICODE garatu zen. SHOW ASCII "a >97 PRINT CHAR 97 >a REPEAT 10 [PRINT CHAR RANDOM 256]

FIRST / LAST / BUTFIRST / BUTLAST string (f) PR SENTENCE [FIRST "Hello BUTFIRST "Hello] >H ello PR BUTLAST "Hello >Hell

LOWERCASE / UPPERCASE word (f) PRINT LOWERCASE "Hello >hello PRINT UPPERCASE "HeLLo >HELLO

71


MEMBER string1 string2/list (f) SHOW MEMBER "b [a b c d] >[b c d] SHOW MEMBER "b "abba" bba

72


LANA GORDETZEKO ETA KARGATZEKO SAVE name SAVE "nirelanak.lgo

LOAD name LOAD "nirelanak.lgo

MAKE "STARTUP [func onname] EDALL TO sarrerapuntua PRINT "Kaixo! END MAKE "STARTUP sarrerapuntua ;aurreko fitxategia kargatzen deneko sarrerapuntua funtzioari deituko zaio automatikoki

73


SAGUA KONTROLATZEKO Aurki.

MOUSEON leQbuPondown leQbuPonup rightbuPondown rightbuPonup move MOUSEON [SETPOS MOUSEPOS PENDOWN] [PENUP] [] [] [SETPOS MOUSEPOS] MOUSEOFF MOUSEPOS

SAREA KONTROLATZEKO Aurki.

OINARRIZKO INSTRUKZIOAK BIRDEFINITZEKO Askotan oinarrizko funtzio/prozeduren izenak aldatzea komenigarria gerta dakigu, edo laburragoak egiteko edota beste hizkuntza batera pasatzeko.

COPYDEF / ERASE (P) COPYDEF "AURRERA "FD AURRERA 50 >(mugituko da aurrera 50 puntu) ERASE "AURRERA AURRERA 50 >I don’t know how to aurrera COPYDEF "ITERATU "FOR ITERATU[i 1 3][PRINT :i] >1 >2 >3 COPYDEF "BALDIN "IF COPYDEF "IDATZI "PRINT

74


BALDIN 2>1 [IDATZI "Handiague!] >Handiague!

PAUSA BAT EZARTZEKO: WAIT dura on (p) Jada ikusi dugu prozedura hau.

75


BOSTGARREN BLOKEKO ARIKETAK 1. Umeek jolasteko marrazki ezkutua deritzona erabiltzen da. Berton puntu batzuk dauzkazu eta horiek lotuta figura bat agertzen da. Horrelako bat egiteko prozedura prestatu, zeinak fitxategiaren izena jasoko duen parametro moduan. Puntuen koordenatuak fitxategi bate3k jasoko ditu (erabili SETXY). Adibidez: 00 123 45 37 100 Irakurri ostean marra bat marraztuko du (0, 0) koordenatu3k (123,45)era, eta abar. 2. Aurreko ariketaren berdina, baina kolorea gehitu. 3. Aurreko bloke baten prestatutako elkarrizketaren antzekoa egin, baina oraingo honetan erantzunak fitxategi batean gordeko dira. 4. Kontsola3k jaso fitxategi baten izena, bera ireki, irakurri edukia eta hori egin ahala bigarren fitxategi baten barruan gorde (izen hori ere galdetuko da) dena letra larritan. Ondoren baieztatu bigarren sortu eta lehenengoaren eduki bera daukala. 5. LOGOren instrukzio guz3ak euskaratu. Prozedura baten barruan sartu, eta STARTUP erabilita zure fitxategi pertsonal baten barruan gorde. Itxi LOGO, ireki berriz ere eta kargatu zure fitxategia. Birmoldatu aurreko ariketaren bat eta ikusi zer itxura daukan euskaraz. 6. Kontsola3k jaso fitxategi baten izena. Ondoren fitxategi horren barruan bilatuko den hitza eskuratu. Bi datuekin fitxategia ireki eta bilatu hitz hori non dagoen. Kontsola3k agerrarazi zein lerrotan topa den hitza, eta guz3ra zenbat alditan. 7. Kontsola3k jaso bi irudi-fitxategien izenak. Pantailan agertu bata bestearen gainean BITMODE modu guz3etan, adibidean egin den antzera. 8. Zuk aukeratutako SPRITEa (pertsonaia baten irudi bat) kargatu. Ondoren lauki handi bat marraztu (SPRITE baino askoz handiagoa) eta irudia bere barruan sartu mugitzen, laukiaren hormen kontra errebotatzen.

76


SEIGARREN BLOKEA: MATEMATIKA ARITMETIKA Eragiketak egiteko matema3kako arau berdinak erabiltzen dira. MAKE "A 50 MAKE "B 100 MAKE "C :A + :B PRINT :C >150 PRINT :A + :B >150 PRINT :C / :A * 10 >30 (150/50 = 3 * 10 = 30) PRINT :C / (:A * 10) >0.3 (50*10 = 500, 150 / 500 = 0.3) PRINT -:C / :A * -(-0.5) >-1.5

Dezimalak eta notazio zien fikoa: Dezimalak PUNTU batekin adierazten dira, eta notazio zien3fikoa E batekin. PRINT 3.14159 >3.14159 PRINT 1.0E-5 + 0.1 >0.10001 PRINT 3.4E3 >3400

Bestelako eragiketa matema koak: SUM / DIFFERENCE / PRODUCT / QUOTIENT / MODULO (hondarra) PRINT SUM 10 5 >15 PRINT DIFFERENCE 10 5 >5 77


PRINT PRODUCT 10 5 >50 PRINT QUOTIENT 10 5 >2 PRINT MODULO 10 5 >0

MINUS / INT / ROUND / SQRT / POWER PRINT SENTENCE MINUS 5 MINUS -10 >-5 10 PRINT INT 10.5 >10 PRINT (SENTENCE ROUND 10.4 ROUND 10.5 ROUND 10.6) >10 10 11 PRINT SQRT 25 >5 PRINT SENTENCE POWER 2 4 POWER 4 0.5 >16 2

EXP (e zenbakia) / LN (LOGARITMO NEPERIANOA) / LOG10 (10EKO LOGARITMOA) PRINT EXP 1 >2.71828182845905 ;hori da e zenbakia (e^1) PRINT LN 2.71828182845905 >1 ;aurreko eragiketaren kontrakoa da PRINT (SENTENCE LOG10 1 LOG10 10 LOG10 100) >0 1 2 ;zeren berreketa egin behar zaio 10ari balio horiek lortzeko? ;10^0=1 ;10^1=10 ;10^2=100 PRINT (SENTENCE LOG10 1 LOG10 2 LOG10 3) >0 0.301029995663981 0.477121254719662

78


SIN (SINUA GRADUTAN) / RADSIN (SINUA RADIANETAN) / COS (KOSENOA GRADUTAN) / RADCOS (KOSENOA RADIANETAN) / TAN (TANGENTEA) / ARCTAN (ARKOTANGENTEA GRADUTAN) PRINT (SENTENCE SIN 1 COS 1 TAN 1) >0.0174524064372835 0.999847695156391 0.0174550649282176 PRINT (SENTENCE RADSIN 1 RADCOS 1 RADTAN 1) 0.841470984807897 0.54030230586814 1.5574077246549 PRINT ARCTAN 1 45

OINARRIZKO GEOMETRIA CIRCLE radius ARC angle radius ELLIPSE crosswise.semiaxis inline.semiaxis ELLIPSEARC angle crosswise.semiaxis inline.semiaxis startangle

AUSAZKO BALIOAK Funtzio hauek erabiltzea dado bat botatzearen antzekoa da, ez dakigu zer irtengo den. Erabilera anitza dauka.

RANDOM value (f) CS REPEAT 500 [ FD 10 LT RANDOM 360 ] CS REPEAT 360 [ SETPENSIZE RANDOM 5 SETPC RANDOM 16 79


FD 1 LT 1 RT FD BK LT

90 100 100 90

]

RERANDOM (p) Askotan ausazko baliok erabili arren horiek be3 berdinak izatea behar dugu kodea aztertzeko. Horretarako rerandom dugu, eta random erabili baino lehenago jarriz gero efektu hori lortuko dugu. TO mustxapelketa :eznahastu MAKE "kartak [as 2 3 4 5 6 7 sota zaldia erregea] if :eznahastu [RERANDOM] FOR[jokalaria 1 4 1][ PRINT (SENTENCE :jokalaria "jokalaria) REPEAT 4 [ PRINT (SENTENCE "> i :kartak) ] PRINT " ] PRINT " PRINT "Mus? END mustxapelketa mustxapelketa mustxapelketa mustxapelketa

"true "true "true "false

;lehen hiru alditan karta banaketa beti izango da berdina, baina laugarrenean aldatuta agertuko dira

PICK (f) Zerrenda bate3k ausazko balio bat hartzen du. Ikusi aurreko adibidea karta bat hautatzeko.

80


KONSTANTEAK GOLDENRATIO ;aurreko adibide batean kalkulatu dugun URREZKO ZENBAKIAren konstantea da PRINT goldenratio >1.61803398874989

PI PRINT PI >3.14159265358979

81


SEIGARREN BLOKEKO ARIKETAK 1. Urrezko zenbakia erabilita Fibbonaciren espirala marraztu. 2. Aurreko ariketan bezala urrezko laukia marraztu. 3. Bate3k hamarrerako grafikoak marraztu (matema3kan egiten duzun bezala). Funtzio matema3ko ezberdinak erabiliko dituzu, eta lortutako puntuekin SETXY erabilita grafikoak sortu ahal izango dituzu. Adib, puntuak kalkulatzeko: X F1: SQRT F2: x^2 F3: LN x 1 1 1 0 2 1.414 4 0.693 … Hortaz, F1erako puntuak izango dira (1,1) (2,1.414) eta abar. Bigarren funtziorako, F2, (1,1) (1,4). Hirugarrenerako, (1,0) (2,0.693). Ikusi nola geratzen diren beste adibide batzuk:

4. Oinarrizko eragiketa matema3koak egingo dituen programa prestatu. Honako hau galdetuko du: eragiketa mota eta zenbakiak. Adibidez: >Zer egin nahi duzu? (A:batu, B:kendu, C:biderkatu, D:za tu) >C >Biderketa egitea erabaki duzu. >Zein da lehen zenbakia? >0.5 >Zein da bigarren zenbakia? >-2 >Eragiketaren emaitza: 0.5 * (-2) = -1 >Berriz egin nahi duzu? >… 5. Marraztu zirkunferentzia bat PI zenbakia erabilita, alegia, 03k 360rako gradu bakoitzeko kalkulatu beharko dituzu [x, y] puntuak. Kontuan izan formula hau: [erradioa*SIN x, erradioa*COS y]

82


PROGRAMATZEKO ESTRATEGIAK Askotan arazo korapilotsu ba3 nola aurre egiten ez dakigu, hortaz aukera bakarra daukagu: arazo nagusia arazo txikiagotan za3tu behar da, za3 bakoitza ulergarria izan arte. Nola programatu ez badakizu kontuan izan ordenagailua gizaki baten antzekoa dela, eragiketa batzuk egiteko gai dena. Hori kontuan hartuta pentsa:

HASIERAKO PROPOSAMENA EGITEKO: 1. Nola egingo nuke nik? Idatzi pausuak lengoaia naturalean. 2. Pausu bakoitzeko topatu LOGOren egituraren bat, adibidez: a. BALDIN ETA... => IF. b. BITARTEAN => WHILE. c. ERREPIKATU => REPEAT. d. GALDETU => READWORD. e. Eta abar. 3. Zure hasierako egituran LOGOren instrukzioak txertatu eta forma eman (honetarako ondo jakin behar da LOGOren sintaxia). Adibidez: ;1etik 10era arteko zenbaki bikoitiak inprimatu ;1.Kalkulatuko ditut denak, 1etik 10era, beraz banaka joan beharko naiz horiek aztertzen ;2.Jakiteko bikoitia bada /2 eragiketaren hondarra 0 izan behar da, bestela bakoitia izango da ;1.Antolatuko dut begizta bat 1etik 10era zenbatzeko eta inprimatzeko FOR[zenbakia 1 10][ PRINT :zenbakia ] ;2.Orain aztertuko dut bikoitien kontua. Hondarra kalkulatzeko MODULO funtzio daukat, honela funtzionatzen duena: MAKE "hondarra MODULO zatigaia zatitzailea 3.Jakiteko hondarra zero bada: IF :hondarra = 0 [;zerbait egin] 4.Dena antolatuta: FOR[zenbakia 1 10][ MAKE "hondarra MODULO :zenbakia 2 IF :hondarra = 0 [PRINT :zenbakia] ] 83


5.Zerbait soberan? Aldagaia aurreztu daiteke: FOR[zenbakia 1 10][ IF MODULO :zenbakia 2 = 0 [PRINT :zenbakia] ] > MODULO doesn't like false as input in forloop 6.Zergatik gertatzen da akats hori... GOGORATU! LOGOK IRAKURTZEN DU ESKOITIK EZKERRERA. ORDUAN: MODULO :zenbakia 2 = 0 Lehenik. 2 = 0 ? Ez da berdina, hortaz FALSE itzuli. Bigarrenik. MODULO :zenbakia FALSE => akatsa! Hondarra kalkulatzeko bi zenbaki oso behar dituzu, eta jasotzen ari da zenbakia eta balio booleartar bat (TRUE ala FALSE direnak, eta bakarrik baldintzetarako balio direnak). 7.Zuzentzeko IRAKURKETA ORDENA aldatu behar zaio gakoen laguntzaz: (MODULO :zenbakia 2) = 0 Lehenik: MODULO :zenbakia 2 => zenbaki osoa Bigarrenik: zenbaki osoa = 0 ? => TRUE/FALSE 8.Zuzenduta: FOR[zenbakia 1 10][ IF (MODULO :zenbakia 2) = 0 [PRINT :zenbakia] ]

OINARRIZKO AKATSAK EKIDITEKO: 1. Gogoan izan liburu honen adibide guz3etan aipatutako arazo potentzialak. a. Aldagai bat kakotx barik deklaratu: MAKE nirealdagaia. b. Aldagai bat bi puntu barik erabili (LOGOk pentsatuko du zure FUNTZIO bat dela): PRINT nirealdagaia c. Adierazpen baten HIRU elementu baino gehiago badauden gakoak ez erabiltzea (aukeran erabili be3): PRINT SENTENCE :a :b :c d. Adierazpen baten FUNTZIO lar sartzea gako barik (kontuan izan eskoi3k ezkerrera ulertzen duela): IF MODULO 10 COUNT ITEM 2 nirezerrenda e. Funtzio bat prozedura bezala erabili, eta alderantziz: i. PRINT FD 10 ; FDk ez du ezer itzultzen inprimatzeko. ii. ITEM 3 [cat dog bird] ;ez da esaten zer egin elementuarekin. f. Datu motak nahastu:

84


i. Zenbaki baino, true/false: FOR[i 1 ISNUMBER :z][] Baina FOR[i 1 :z][] ii. T/F baino, zenbakia: IF 7+3 [] Baina IF 7+3=10 [] iii. Zerrenda baino, katea: ITEM 3 "testue Baina ITEM 3 [testue] iv. Eta abar. 2. Arazo horiek LOGOren sintaxiarekin egongo dira lotuta ziur asko (kakotxak, taketak, aldagai bat puntu barik erabili...).

FUNTZIONAMENDU AKATSAK EKIDITEKO: 1. Honi DEBUGING esaten zaio: arazketa. 2. LOGOn komenigarria da PRINT asko sartzea hasieran, aldagaien balioak eta funtzioek itzulitakoak ondo daudenentz ikusteko. Alegia, oinarrizko funtzionamendurako agian ez dute baliorik izango, baina bai zuk ikusteko zer dabilen gertatzen. 3. Be3 hasi oinarrizko txan3loiak prestatzen, eta horien barruan joan gauza gehiago txertatzen. Adibidez: ;Hau da Fibonacci-ren algoritmoa MAKE "aurrekoa 1 MAKE "aurrekoarenaurrekoa 0 FOR [zenb 1 10 1] [ MAKE "unekoa :aurrekoa + :aurrekoarenaurrekoa PRINT :unekoa MAKE "aurrekoarenaurrekoa :aurrekoa MAKE "aurrekoa :unekoa ] ;1.LEHENDABIZI: prestatu aldagaiak eta FOR-a. Ondo funtzionatzen dutenean segi aurrera. ;2.ALDAGAIEN balioak agertuko duen PRINT bat jarri FOR-aren barruan, balioak ezarri eta ondoren (ez ahaztu iterazio zenbakia), horrela jakingo duzu zer ari den gertatzen: PRINT (SENTENCE :zenb :aurrekoa :unekoa :aurrekoarenaurrekoa) ;3.PAUSAren bat ezartzeko gogoratu PAUSE daukazula. ;4.Begizta lar handia bada hasieran murriztu ahal duzu 1etik 10era, eta balio horiekin ondo dabilela ikusten duzunean orduan jarri benetako zenbakitartea. 85


;5.DRIBBLE erabilita kontsolako datuak fitxategi batera pasa ditzakezu, lasaiago analizatzeko. ;6.Kontuz semantikarekin: IF NOT "baldin eta ez bada" esan nahi du, baina galdera bi modutan planteatu daiteke: jarraitu nahi duzu? Itxi nahi duzu?. Erantzuna ezberdina da! Ikusi YESNOBOX funtzioa. ;7.Ondo irakurri LOGOk zer esaten duen akatsari buruz. Aurreko adibide guztietan azaltzen da zergatik gertatzen den bakoitza. ;8.Ez badakizu zergatik dagoen txarto lerro bat KOMENTARIO bihurtu(; jarrita aurretik). Era horretan LOGOk ez du exekutatuko eta jarraitu ahal izango duzu. Askotan akats batek beste bat estaltzen du.

86


EIK PARADIGMA Informa3kan bere biziko garrantzia duen diseinatzeko eredua da. EIK-k esan nahi du (MVC ingelesez, model-view-controller): 1. E: eredua, alegia, programaren barruan kalkulatzen diren datu guz3ak. 2. I: ikuspegia, edo aurreko eredua pantaila3k nola agertzen den. LOGOn bi modu baino ez daude ikuspegiak agertzeko, hots, marrazki-gunea eta testu-kontsola. 3. K: kontrolatzailea, erabiltzailearen elkarrakzioaren bitartez sortzen diren aginduak (testuak sartu, teklak sakatu, sagua mugitu‌). Ondo ulertzeko pentsatu oinarrizko ar3kulu batean: izenburua eta gorputza. Edozein testu-prozesatzaile erabilita ia es3lo-graďŹ kozko konbinazio amaigabeak lor daitezke. Hau da, informazio-iturri berarekin hainbat sorkuntza bisual lor daitezke.

Adibideak: a. Karratu bat marrazteko: i. E: lau koordenatuak. ii. I: marrazteko es3loa: kolorea, marren loditasuna‌ b. Funtzio matema3koa marrazteko: i. E: funtzioa. ii. I: eskala. c. Bizitzaren jolasa: i. E: zelula-matrizea. ii. I: marrazki-gune3k agertzeko es3loa. iii. K: hasierako zelulak kokatzea saguaren bitartez. d. Animazioa: i. E: pertsonaien irudiak. ii. I: pertsonaien agertzea eta animazioa.

87


ADIBIDE BATZUK 1.EDOZEIN POLIGONO MARRA MARRAZTEKO RAZTEKO (funtzio baten barruan) to POLIGONOA :luzeera :aldea REPEAT :aldea [FORWARD :luzeera RIGHT 360/:aldea] end

2.LEHENENGO ZENBAKI BAKOITIAK AGERTARAZTEKO for [a 1 10 2] [print :a]

3.HAINBAT PENTAGONO MARRAZTEKO, BATA BESTEAREN BARRUAN (aurreko funtzioa erabiltzen du) home clean for [i 1 100 5] [poligonoa :i 5]

4.MARRATXOEKIN 4.MARRATXOEKIN MARRAZTUTAKO LAUKIA cs repeat 4 [repeat 10 [pd fd 10 pu fd 10] left 90]

5.INTEGRALAREN ZEINUA cs repeat 3600 [fd 10 right repcount]

6.ROSETOI BAT EGITEKO cs repeat 360 [fd 0.25 left 1 right 90 fd 150 back 150 left 90]

7.ESKATU BALIO BAT LETRA IDATZI ARTE WHILE[NUMBER? READWORD][]

8.ESKATU BALIO BAT ZENBAKIA IDATZI ARTE WHILE[NOT NUMBER? READWORD][]

9.LOREA TO DAISY CS HT REPEAT 30 [TRI 120 RT 12] REPEAT 30 [TRI 80 RT 12] REPEAT 30 [TRI 40 RT 12] 88


END

10.TXABOLA TO HUT REPEAT 4 [FD 60 RT 90] FD 60 RT 30 FD 60 RT 120 REPEAT 20 [BK 6 FD 66 BK 60 RT 3] END

11.EGUZKIA REPEAT 12 [REPEAT 4 [FD 100 RT 90] RT 30]

12.ISLAPENA (FUNTZIOEN (FUNTZIOEN ARTEKO DEIEN BITARTEZ) BITARTEZ) TO SQUARE :N REPEAT 4 [FD :N RT 90] END TO SQUARES SQUARE 60 SQUARE 80 SQUARE 100 SQUARE 120 END TO TABLES SQUARES LT 90 SQUARES END TO MIRROR TABLES LT 90 TABLES END TO MIRRORS MIRROR LT 45 MIRROR END >MIRRORS

13.ERREKURTSIBITATEA (FUNTZIOA BERE BURUARI DEITZEN) TO MAZE :N FD :N RT 90 MAZE :N + 5 END 89


TO FRACTAL :SIZE :LEVEL IF :LEVEL = 0 [FD :SIZE STOP] FRACTAL :SIZE :LEVEL - 1 RT 90 FRACTAL :SIZE :LEVEL - 1 LT 90 END

14.ITSASONTZIA MARRAZTEN POSIZIOAK ERABILITA: TO SAILBOAT CS PU SETPOS [ 20 -40] PD SETPOS [-160 -40] SETPOS [ 20 160] SETPOS [ 140 -40] SETPOS [ 20 -40] PU SETPOS [ -120 -60] PD SETPOS [ -80 -100] SETPOS [ 80 -100] SETPOS [ 120 -60] SETPOS [ 20 -60] SETPOS [ 20 -40] SETPOS [ 20 -60] SETPOS [ -120 -60] END

15.Dragoia: TO DRAGON :SIZE :LEVEL LDRAGON :SIZE :LEVEL END TO LDRAGON :SIZE :LEVEL IF :LEVEL = 0 [FD :SIZE STOP] LDRAGON :SIZE :LEVEL - 1 LT 90 RDRAGON :SIZE :LEVEL - 1 END TO RDRAGON :SIZE :LEVEL IF :LEVEL = 0 [FD :SIZE STOP] LDRAGON :SIZE :LEVEL - 1 RT 90 RDRAGON :SIZE :LEVEL - 1 END

16.Elur maluta: TO SNOWFLAKE :SIZE :LEVEL REPEAT 3 [RT 120 SIDE :SIZE :LEVEL] END TO SIDE :SIZE :LEVEL IF :LEVEL = 0 [FD :SIZE SIDE :SIZE / 3 :LEVEL SIDE :SIZE / 3 :LEVEL SIDE :SIZE / 3 :LEVEL SIDE :SIZE / 3 :LEVEL END

STOP] 1 LT 60 1 RT 120 1 LT 60 1

90


17.Berbetan ordenagailuarekin: TO TALK CT PRINT [HI! WHAT'S YOUR NAME?] MAKE "NAME READWORD MAKE "REPLY SE :NAME~ [MY NAME IS ERNESTINE.] PRINT SE [I DON'T THINK WE'VE MET,] :REPLY PRINT [HAVE YOU EVER TALKED TO A ~ COMPUTER?] TEST READWORD = "NO IFFALSE [PRINT ~ [WOW! DO YOU TALK TO TURTLES, TOO?]] IFTRUE [PRINT [OH BOY! A BEGINNER.]] END

91


PROPOSATURIKO PROIEKTUAK Proiektu guz3ek oinarri hauek eduki behar dituzte: 1. Prozedura/funtziotan oinarritu. 2. Fitxategiak erabili (konfigurazioa, puntuazioak, bestelako datuak… gordetzeko eta jasotzeko). 3. Puntuaziorik onenen ranking-a eduki. 4. Elkarrakzioa erabiltzailearekin. Proiektu bakoitza bizitza errealeko gertakizunetan oinarrituta dago, hortaz PLANTEAMENDU ANITZAK eduki ahal ditu. Hasierako ESTRATEGIA zuk planteatu beharko duzu, baita pentsatu ere nola gauzatu LOGOren bitartez. Hori dena pentsatu duzunean irakaslearekin kontsultatu eta adostu soluzio defini boa.

PROIEKTUAK: a) MASTERMIND: Zenbaki, hizki eta karaktere bereziez osatuko hitz bat asmatzeko jolasa da (adibidez hitz bat hau izan daiteke "jfdhe3ji"). Kolore sekuentzia batekin ere egin daiteke (gorri urdin gorri hori berde). Jokalariak hainbat saiakera edukiko ditu hitz sekretua asmatzeko. Saiakera bakoitzean jokalariak hitz bat sartuko du, eta sistemak esango dio: asmatutako hizkiak (posizio egokian eta desegokian), eta ez asmatutakoak. Adibidez: hitza K E H I K J H izango da. SAIAKERA

JOKALARIAREN HITZA

1

NBHDEHJ

2 MWHAHJK … Hortaz, prozesua honelakoa izango da: 1. Asmatu hitz bat. 2. Jokalariari galdetu hitza asmatzeko. 3. Emaitza esan jokalariari.

92

EMAITZA + ONDO ? ONDO BAINA TXARTO KOKATUTA ! TXARTO ! ! + ! ? ? ? (orain badaki N B eta D ez direla agertzen inondik, H ondo dagoela kokatuta, eta gainontzeko guz3ak K J eta H badaudela baina txarto kokatuta) !!+!?+?


4. Ez badu asmatu pasa 2. Puntura. b) ANIMALIA/BEGETALA/MINERALA. Bai/ez galderetan oinarritutako jolasa da. LOGO saiatu beharko da jokalariak pentsatutako elementua asmatzen. Horretarako bai/ez-ko galderak egingo dio. Asmatzen ez badu jokalariari eskatuko dio elementu berria bereizteko galdera berria egiteko. Ikusi adibidea: >Lau hanka ditu? >bai >Zaldia al da? >ez >Zein da zuk pentsatutakoa? >Behia >ZER GALDERA (BAI/EZ-KOA) EGIN BEHARKO NUKE BEHIA ZALDITIK EZBERDINTZEKO? >Esne ekoizpenerako erabiltzen da? Beste adibide bat: >Animalia da? >ez >Begetala da? >ez >Minerala da? >bai >Balio asko dauka? >bai >Urrea al da? >bai >Asmatu dut! c) HANGMAN: “ahorcado” jolasa da. d) 3 IN LINE: “3 en línea”, jolasa. e) GRAFIKO FRAKTALAK: fraktala bere burua eskala ezberdinetan errepikatzen duena da (matema3ka eta geometria hutsa). Ikusi adibideak:

93


Parametro ezberdinak jasoko dituen prozedura prestatu beharko da, erabiltzaileak konďŹ gurazio ezberdinak probatu ahal izateko. f) GPS: sare batean bi puntuen arteko biderik egokiena topako duen sistema da.

g) LIFE’S GAME: John Horton Conway asmatutako zelula-automata duzu. Matrize baten barruan elementu batzuk ak3batzen dira. Beraiek izango dira hasierako 94


hazia, uretan utzitako bakterioen antzekoak. Horren ostean jolasa hasten da, eta aurre ezarritako arau batzuen arabera bakterioak ugaldu edota hil egiten dira.

Oinarrizko arauak hauek dituzu: 1. Bi zelula (matrizeko bi puntu) elkarrekin egon, baina bakarrik badaude (inguruan ez badute beste zelularik) hiltzen dira. 2. Hiru zelula badaude beste zelula berri bat jaioko da (zuk erabaki zein aldeta3k kokatu). 3. Lau zelula badaude, denak elkartuta, laurak hiltzen dira superpoblazioa dela eta. Halere, zuk zeure arauak presta ditzakezu, baita kokapenetan oinarrituta ez dagoen planteamendu bat ere, adibidez sexu-ugalketa, janari ugariko inguruneak, eta abar. Interneten oinarritutako adibide bat ikus dezakezu hemen: h<p://mobilelife.cinnamonthoughts.org/ h) POKER: baraja karta bate3k lau jokalarientzako esku bat baino ez banatu (alegia, ez da karta botatzerik egingo). Horren ostean kalkulatu zein den eskurik onena eta zein jokalarik irabazi duen.

95


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.