Date post: | 22-Jul-2016 |
Category: |
Documents |
Upload: | andoni-sanz |
View: | 232 times |
Download: | 6 times |
@andonisanz
2
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
3
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
4
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
5
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. 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).
f. 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.
6
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/.
7
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
8
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 [instruconlist] (1..n) ........................................................................ 54
FOR [controllist] [instruconlist] (0..n) .................................................................... 55
DO.WHILE [instruc�onlist] [condi�onlist] (1..n) ....................................................... 57
WHILE [condi�onlist] [instruc�onlist] (0..n) ............................................................. 57
DO.UNTIL [instruconlist] [condionlist] (1..n) ....................................................... 57
UNTIL [condionlist] [instruconlist] (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
9
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 [funconname] ................................................................................ 73
SAGUA KONTROLATZEKO ................................................................................................ 74
MOUSEON leMbu<ondown leMbu<onup rightbu<ondown rightbu<onup move ..... 74
10
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 duraon (p) .................................................................... 75
BOSTGARREN BLOKEKO ARIKETAK .................................................................................. 76
SEIGARREN BLOKEA: MATEMATIKA ................................................................................ 77
ARITMETIKA .................................................................................................................... 77
Dezimalak eta notazio zien3fikoa: .............................................................................. 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
11
ADIBIDE BATZUK ............................................................................................................. 88
PROPOSATURIKO PROIEKTUAK ....................................................................................... 92
12
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.
13
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-fluxuen 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.
14
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, planifikazioa, logika pertsonala, norberaren
burua gainditzea, hainbat estrategien garapena, esperimentazioa, barne-
bisualizazioa, eta abar garatzen dira.
15
8. Interpertsonala: talde-lana, talde-proiektuak, lankideen arteko koordinazioa,
besteenganako ardura, besteekiko komunikazioa, lan-banaketa, akordioak…
16
NOLA DAGO ANTOLATUTA?
LOGOn bi lan-gune dituzu: grafikoa 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 infinitu
baten barruan sartzen garenean).
b. TRACE: kodearen arazketa egiteko bere biziko garrantzizko tekla dugu
hau. Programaren barruan zein puntutan gauden kokatuta agerrarazten
17
du kontsola3k, horrela jakin dezakegu zer ari den gertatzen kodearen
barruan, akatsak edo funtzionamendu okerrak zuzendu ahal izateko.
c. PAUSE: halt-en antzekoa, baina geldiunea ezartzen du. Klikatzerakoan
leiho bat agertuko zaigu. Exekuzioarekin jarraitzeko leiho horretan
teklatu behar da CONTINUE.
d. STATUS: leiho bat irekitzen da unean dagoen konfigurazioaren balioekin
(dortokaren kokapena, orientazioa, koloreak, eta abar).
e. STEP: exekuzioan dagoen kodea LERROZ LERRO exekutatzen du eta lerro
bakoitzaren informazioa ematen digu kontsola3k.
f. RESET: berrabiarazten du marrazki-gunea.
g. EXECUTE: kontsolako lerroan idatzitakoa exekutatzen du (efektu bera
lortuko duzu ENTER/RETURN teklari sakatuz gero).
h. EDALL: editorea irekitzen da.
=C��
>����&� ���8�>= ��=6;��6;�?�
�$)$�"64()2/#("*��*(.-)-�#-4"/-*(�"42%,-:�(&"/-/"*( �.)(4)"#"��02)-�$42/-)"�:$0"/:$/"%�(2%"))2/:$%�,2/-$%"?�
=�� 0�$�������$ ?�"42%,-"*�+"/"�+$&/$")$%�"/:$3*�,(":$%$"%��
��� � A��������$ ?�"6,"4"2�+"/$%�+"62(")$%�")"+$)"�"42%,-�+"/�"6"�+$&/$�$1$*-/"/:$*(�
"-*$)"��
�B�� A�!����$ ?�$))$.2*".$%�$42/-)"*��
�
�-))$*(�$42/-)"*�$-)$%�")/$"%�*(%+2%"�,"2/$:*$��2*-&2�",2+2,$�+"/?�
�
�
=N��
� 6B��6 ���A=6>�,A����
=�� $*-$%/:2"*�+"2%(�$:�,2)"�$)"+26/:$%���� � �(42*"�$:�,"�".62*"/:$%��$/"�*(,$"�-6$)/-�+")2*�$)" +26/:$%�,"��B�� �6"%2>*":2("��,$&*(%.(&2:2("�$/"�")":*$/"�$:�,"�".6 2*"/:$%��
�
, ���� �,6 �6;6�=A;�;��;?�
�:"6.$%"*�+6(*$*"�"-)*2/-*(�,2/-:-��$/"�+"*(2/:")$% �+"))-"%�"/"6$:�"/"6�"%/(6"/:$%�,"�2%8()#":2("��+$3$)$�",2+2,$�%"02*(�$/"�6")�$#"%,"��
�,2+2,$"*�4)2&�+$),$/"%�,"-,$�#")*"/-/"��$/"�*(,$"� :-:$%$"%�*(.2"/-�$/"�2/&"&2�,"2/$*$���)$%�$,2/()$"%��$,(�*(%/&(6"%��6$))(�+"/ $*("*�2:"%$:�4$)(��$1$*-:2("�2*-&/$*(���(%/&(6"3*�2)/$%�+$0")�,$%�2%8()#":2("�C�&2%+(6(")$%�(&/$"%�",2$)":/$%�,"���,2+2,$�+"/�+"2%(�4$02"4(�+","-,$�6"-*2�4)2&�$:+$),2%$/"%�2*-&2*(�,2/-:-��
�(,$)$%�+"/$"%�"*"/&2*�/(."/:$%�+",-:-�$,(/"�:-)$�" ,2+2,$"*�62+-)-�0(%$/"%�"4$)/:$"�4-)"�+",-:-��:-)$�2:$%"�2*-&2*(�,"��;"*2%")":2�%2)2�$�.(&/":�� "%,(%2�&"%:U4#"26�5(#���
��!������� ?�"42%,-"*�$#"/$*(�6$))(�+$)$"%�2,"/:2�,"2/$:*$�+"/"�+$&/$")$%�"/:$3*��+"2%"�*(,$"�$))":"4(�2)"*-))2�"0"6�2:"/$*(�0"2%+"/�6$))(/"%�"%/(6"/:$*(�4(#$%,"/:$%�,"��",2+2,$:�$,2/()$")$%�+"))-"%��������/$*6"/-��$, (�+(/(2")2�&"*"/-���
�
A��$���$�������"���!����!� ����������9
=�� �,2+2,$"*�.)(+"/-��"6,"/-�$/"�:-)$�$&.$)2#$%/-"*�$4 2%���� � �6(*$�+"*(2/:")$%�"#"2$)"*(�")2*$/"*�$42%��B�� ()�,"*2:*2:-*$$%�:"6"%/:"*�".-%/"/-�$/"?�
"� � �&.$)2#$%/":2(")$%�+2/")/$:�")42/:$%�&"2"/-��+�� �(*-#$%/-�0(%$%�6"4-%/:")$%�+2/")/$:�*(%.(%/:$%�&"2"/-��5�� �)"*"&6$")2�4"6,$/-��
�
A��$��$"���$������9
=�� ������������������� � ���������������B�� ���� �����D�� ���!������������H�� �������� ����K�� ������������
�F��
D����=6;�;���6=<9, ���=���>=)=6B�6��=A�6�,< <�&�,�
�
��)$%�"42%,-�+"/:-$*�>/1"/$42$%�*(*".$%$%�+2,$"�$&*"/:$%�,2:*24-/$���2,$�0()2�$))":"�,"��+"2%"�;"*2%�+$0")�,"�:$0"/:�#$0"/:�;")/: $%���-))$%4(�",2+2,$"%�#"))":*2�+"/$%�,2&*(�+2,$"�:$2%�,$%�2*-&2*(�,-4-������������ ���+"))-"%��$/"�4$)(������*").$/"%���
�)-,2")$%�*").$/"�",2$)":/$*(�0-))$%4(*("�$42%�+$0" )�,"?��
�
�$#"4-%������*").$/"%�,"-*","6"�%2)$�")4":*2"���* -&2�*").$/$%�������4(2*(�+"))"%�2*-&�,"2/$*$6"���"))"�0())$/"%�*62*"/-:�4$)(���*� +$0")�,-$%�8()#"/-"%�;"))2*(�,"?�
�
�()/":��4-)$�2)-,2")$%�2:$%"���� ��������+"6,2%�+", "�+2,$�(&("�0(%$6"�",2$)":2*(�,"?�
�9E;����E������E&�������E/�����E��������� �
����������� �*")"*/$)$�+$)$:2"�,$%$:�+2*(2:/-�+$0")�,-4-���)2 �",2$)":/$*(�+"))"�%()#"6�#(,-"%�$)"+262�%"02�,-4-6"��+$)":������)$%�" :*$%�8()#"/-"�0"-�2:"%4(�,"?�
�9EE;����EE������EE&�������EE/�����EE��������� � �
21
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.
22
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 ;dortokaren X edo Y posizioa itzultzen du
SETTURTLE number (P) SETTURTLE 0 LT RANDOM 360 FD 100 SETTURTLE 1 LT RANDOM 360 FD 100 SETTURTLE 2 LT RANDOM 360 FD 100 ;LOGOK 1024 dortoka dauzka erabiltzeko, 0tik 1023ra.
CS REPEAT 100 [SETTURTLE REPCOUNT SETPC RANDOM 16 LT RANDOM 360 SETPENSIZE RANDOM 5 FD RANDOM 200]
23
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 Color Vector Color
0 [0 0 0] Black
1 [0 0 255] Blue
2 [0 255 0] Lime
3 [0 255 255] Cyan (Aqua)
4 [255 0 0] Red
5 [255 0 255] Magenta (Fuchsia)
6 [255 255 0] Yellow
7 [255 255 255] White
8 [155 96 59] Brown
9 [197 136 18] Tan
10 [100 162 64] Olive
11 [120 187 187] Sky Blue
12 [255 149 119] Salmon
13 [144 113 208] Medium Purple
14 [255 163 0] Orange
15 [183 183 183] Dark Gray
24
SETPC RANDOM 16 FD 100 ;arkatzaren kolorea aldatzen du
Eta hauek dira beste kolore batzuk, definitu barik daudenak baina edozein
momentutan definitu eta erabili ahal direnak:
Color Name Color vector
AliceBlue [240 248 255]
AntiqueWhite [250 235 215]
Aqua [0 255 255]
Aquamarine [127 255 212]
Azure [240 255 255]
Beige [245 245 220]
Bisque [255 228 196]
Black [0 0 0]
BlanchedAlmond [255 235 205]
Blue [0 0 255]
BlueViolet [138 43 226]
Brown [165 42 42]
BurlyWood [222 184 135]
CadetBlue [95 158 160]
Chartreuse [127 255 0]
Chocolate [210 105 30]
Coral [255 127 80]
CornflowerBlue [100 149 237]
Cornsilk [255 248 220]
Crimson [220 20 60]
Cyan [0 255 255]
DarkBlue [0 0 139]
DarkCyan [0 139 139]
DarkGoldenRod [184 134 11]
DarkGray [169 169 169]
DarkGreen [0 100 0]
DarkGrey [169 169 169]
DarkKhaki [189 183 107]
DarkMagenta [139 0 139]
DarkOliveGreen [85 107 47]
DarkOrange [255 140 0]
DarkOrchid [153 50 204]
DarkRed [139 0 0]
DarkSalmon [233 150 122]
DarkSeaGreen [143 188 143]
DarkSlateBlue [72 61 139]
DarkSlateGray [47 79 79]
DarkSlateGrey [47 79 79]
DarkTurquoise [0 206 209]
DarkViolet [148 0 211]
DeepPink [255 20 147]
DeepSkyBlue [0 191 255]
DimGray [105 105 105]
DimGrey [105 105 105]
DodgerBlue [30 144 255]
FireBrick [178 34 34]
FloralWhite [255 250 240]
ForestGreen [34 139 34]
Fuchsia [255 0 255]
Gainsboro [220 220 220]
GhostWhite [248 248 255]
Gold [255 215 0]
GoldenRod [218 165 32]
Gray [128 128 128]
Green [0 128 0]
GreenYellow [173 255 47]
Grey [128 128 128]
HoneyDew [240 255 240]
HotPink [255 105 180]
IndianRed [205 92 92]
Indigo [75 0 130]
Ivory [255 255 240]
Khaki [240 230 140]
Lavender [230 230 250]
LavenderBlush [255 240 245]
LawnGreen [124 252 0]
LemonChiffon [255 250 205]
LightBlue [173 216 230]
LightCoral [240 128 128]
LightCyan [224 255 255]
LightGoldenRodYellow [250 250 210]
LightGray [211 211 211]
LightGreen [144 238 144]
LightGrey [211 211 211]
LightPink [255 182 193]
LightSalmon [255 160 122]
LightSeaGreen [32 178 170]
LightSkyBlue [135 206 250]
LightSlateGray [119 136 153]
LightSlateGrey [119 136 153]
LightSteelBlue [176 196 222]
LightYellow [255 255 224]
Lime [0 255 0]
LimeGreen [50 205 50]
Linen [250 240 230]
Magenta [255 0 255]
Maroon [128 0 0]
MediumAquaMarine [102 205 170]
MediumBlue [0 0 205]
MediumOrchid [186 85 211]
MediumPurple [147 112 216]
MediumSeaGreen [60 179 113]
MediumSlateBlue [123 104 238]
MediumSpringGreen [0 250 154]
MediumTurquoise [72 209 204]
MediumVioletRed [199 21 133]
MidnightBlue [25 25 112]
MintCream [245 255 250]
MistyRose [255 228 225]
Moccasin [255 228 181]
NavajoWhite [255 222 173]
Navy [0 0 128]
OldLace [253 245 230]
Olive [128 128 0]
OliveDrab [107 142 35]
Orange [255 165 0]
OrangeRed [255 69 0]
Orchid [218 112 214]
PaleGoldenRod [238 232 170]
PaleGreen [152 251 152]
PaleTurquoise [175 238 238]
PaleVioletRed [216 112 147]
PapayaWhip [255 239 213]
PeachPuff [255 218 185]
Peru [205 133 63]
Pink [255 192 203]
Plum [221 160 221]
PowderBlue [176 224 230]
Purple [128 0 128]
25
Red [255 0 0]
RosyBrown [188 143 143]
RoyalBlue [65 105 225]
SaddleBrown [139 69 19]
Salmon [250 128 114]
SandyBrown [244 164 96]
SeaGreen [46 139 87]
SeaShell [255 245 238]
Sienna [160 82 45]
Silver [192 192 192]
SkyBlue [135 206 235]
SlateBlue [106 90 205]
SlateGray [112 128 144]
SlateGrey [112 128 144]
Snow [255 250 250]
SpringGreen [0 255 127]
SteelBlue [70 130 180]
Tan [210 180 140]
Teal [0 128 128]
Thistle [216 191 216]
Tomato [255 99 71]
Turquoise [64 224 208]
Violet [238 130 238]
Wheat [245 222 179]
White [255 255 255]
WhiteSmoke [245 245 245]
Yellow [255 255 0]
YellowGreen [154 205 50]
SETPENSIZE size (P) REPEAT 5 [SETPENSIZE REPCOUNT FD 20] ;arkatzaren puntaren tamaina aldatzen du
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 konfiguratuta 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 3D Command
SETXY SETXY (does not change z-coordinate)
SETX (does not change y-
coordinate)
SETX (does not change y-coordinate or z-
coordinate)
SETY (does not change x-
coordinate)
SETY (does not change x-coordinate or z-
coordinate)
SETZ (does not change x-coordinate or y-
coordinate)
XCOR XCOR
YCOR YCOR
ZCOR
POS POS (z-coordinate is ignored)
26
POSXYZ
SETPOS SETPOS (does not change z-coordinate)
TOWARDS TOWARDS
TOWARDSXYZ
DISTANCE DISTANCE
DISTANCEXYZ
HEADING HEADING
ROLL
PITCH
ORIENTATION
SETHEADING SETHEADING
SETROLL
SETPITCH
SETORIENTATION
RIGHT RIGHT (on current plane)
RIGHTROLL
UPPITCH
LEFT LEFT (on current plane)
LEFTROLL
DOWNPITCH
WINDOW PERSPECTIVE
WRAP
FENCE
SETTURTLE 0-1023 SETTURTLE 0-1023
SETTURTLE -1 (the eye position)
SETTURTLE -2 (where the eye is looking)
ELLIPSEARC ELLIPSEARC (great for spheres)
27
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 ;aurrekoaren kontrakoa, dortokak ihes egingo du
FENCE (P) FENCE ;dortokak ezin izango du ihes egin mugetatik harago
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
28
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
29
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
Band
Behavior
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]
30
;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]
31
LEHEN BLOKEKO ARIKETAK
OHARRA: hauek egiteko REPEAT egitura ezagutu behar da, hortaz joan FLUXUEN
blokera ikusteko.
1. Hurrengo figurak egiteko kodea idatzi (ez erabili SETXY edo SETPOS):
32
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.
33
BIGARREN BLOKEA: DATU-EGITURAK
ALDAGAIAK SORTZEKO
OROKORRAK
MAKE varname value (P)
Gakoen erabilera nahasia eman dezake hasieran, hortaz kontuan izan aholku hauek:
1. Aldagai bat IZENDATZERAKOAN be3 eramango ditu kakotxak aurre3k.
2. Aldagai hori ERABILTZERAKOAN be3 eramango ditu bi puntuak aurre3k.
3. Testuek kakotxak eramango dituzte aurre3k.
4. 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 ;kakotxak agerrarazteko PRINT :izena >"Eguzki
MAKE "izena ""Eguzki" ;amaieran gako bakarra! PRINT :izena >"Eguzki"
MAKE "izenabizenak [Eguzki Perry] ;esaldiak taketekin PRINT :izenabizenak >Eguzki Perry
34
MAKE "izenabizenak ["Eguzki "Perry"] ;gako eta taket PRINT :izenabizenak >"Eguzki "Perry"
MAKE "izenabizenak "Eguzki "Perry ;kontuz! >I don’t know what to do with Perry
NOLA HANDITU ALDAGAI BATEN BALIOA? MAKE "zbk 0 ;hasierako balioa
MAKE "zbk :zbk+1 ;aurrekoa plus 1 PRINT :zbk >1
MAKE "zbk :zbk*5 ;aurrekoa bider 5 PRINT :zbk >5
MAKE "zbk "zbk*10 ;kontuz! Testua adierazten gaude PRINT :zbk >zbk*10
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
35
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.
36
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 ;berriz deituz gero azken balioarekin geratu da >danadalakue
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]
37
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 ;8. elementua itzultzen du >da
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 ;elementuen kopurua itzultzen du >9
38
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 ;kontuz! testuak "-ekin >I don’t know how to fib
MAKE "fib REMOVE "hau :fib PRINT :fib >0 2 3 5 8 Fibonacci da .
39
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
40
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] ;zerrenda bat sortzen da PRINT :aditzak >sum es est MAKE "aditzak LPUT "sumus ;amaieran txertatu PRINT :aditzak >sum es est sumus 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, array-aren neurria finkoa delako.
KONPONBIDEA:KONPONBIDEA:KONPONBIDEA: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.
41
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
42
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
43
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.
44
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.
45
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 SUM-eri 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!
46
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
47
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 infinitura 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
48
BALDINTZA :param DEITU PROZESUA AMAITU
49
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.
50
LAUGARREN BLOKEA: FLUXUAK
FLUXU KONTROLA
BALDINTZAK
IF condi�oncondi�oncondi�oncondi�on [instruc�ons if true][instruc�ons if true][instruc�ons if true][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
51
IFELSE condi�oncondi�oncondi�oncondi�on [instruc�ons if true] [instruc�ons if true] [instruc�ons if true] [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
52
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
53
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
54
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!
55
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
56
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 ]
57
;Eta atzera kontatzeko? FOR [zenb 10 1 -0.5] [PRINT :zenb]
DO.WHILE [insinsinsinstruc�onlisttruc�onlisttruc�onlisttruc�onlist]]]] [condi�onlistcondi�onlistcondi�onlistcondi�onlist] (1..n)] (1..n)] (1..n)] (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�onlistcondi�onlistcondi�onlistcondi�onlist]]]] [instruc�onlistinstruc�onlistinstruc�onlistinstruc�onlist] (0..n)] (0..n)] (0..n)] (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
58
"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:
59
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 infinitorarte 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 sinplifikatu dira argi ikus dadin sintaxia. 1e3k 10erako zenbakiak
inprimatuko dute, eta aldagaia be3 izango da n.
60
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] ]
61
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? (kontsolak 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
62
>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:
63
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)
64
;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]
65
>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.
66
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
67
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 fitxategi 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 ]
68
;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
69
kointziditu duten bi puntutan, bata arrosa eta bestea urdina, eta arrosa gainean
geratzen da.
KOLOREA: arrosa ZENBAKIA: 5 BINARIOZ: 101
KOLORE: urdina ZENBAKIA:3 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.
4 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.
5 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.
6 Take invert of memory then copy to screen
Aurrekoan bezala, itsatsiko den kolorearen negatiboa: 101 -> 010, BERDEA.
70
7 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
8 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
9 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
71
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
72
MEMBER string1 string2/list (f) SHOW MEMBER "b [a b c d] >[b c d]
SHOW MEMBER "b "abba" bba
73
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
74
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
75
BALDIN 2>1 [IDATZI "Handiague!] >Handiague!
PAUSA BAT EZARTZEKO: WAIT dura�on (p) Jada ikusi dugu prozedura hau.
76
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:
0 0
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.
77
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
78
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
79
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
80
FD 1 LT 1 RT 90 FD 100 BK 100 LT 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 "true mustxapelketa "true mustxapelketa "true mustxapelketa "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.
81
KONSTANTEAK
GOLDENRATIO ;aurreko adibide batean kalkulatu dugun URREZKO ZENBAKIAren konstantea da PRINT goldenratio >1.61803398874989
PI PRINT PI >3.14159265358979
82
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:zatu)
>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]
83
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] ]
84
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:
85
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 zenbaki-tartea.
86
;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.
87
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-grafikozko 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.
88
ADIBIDE BATZUK
1.EDOZEIN POLIGONO MAR1.EDOZEIN POLIGONO MAR1.EDOZEIN POLIGONO MAR1.EDOZEIN POLIGONO MARRARARARAZTEKOZTEKOZTEKOZTEKO (funtzio baten barruan)(funtzio baten barruan)(funtzio baten barruan)(funtzio baten barruan)
to POLIGONOA :luzeera :aldea
REPEAT :aldea [FORWARD :luzeera RIGHT 360/:aldea]
end
2.LEHENENGO 2.LEHENENGO 2.LEHENENGO 2.LEHENENGO ZENBAKI BAKOITIAK AGERTARAZTEKOZENBAKI BAKOITIAK AGERTARAZTEKOZENBAKI BAKOITIAK AGERTARAZTEKOZENBAKI BAKOITIAK AGERTARAZTEKO
for [a 1 10 2] [print :a]
3.HAINBAT PENTAGONO MARRAZTEKO, BATA BESTEAREN BARRUAN3.HAINBAT PENTAGONO MARRAZTEKO, BATA BESTEAREN BARRUAN3.HAINBAT PENTAGONO MARRAZTEKO, BATA BESTEAREN BARRUAN3.HAINBAT PENTAGONO MARRAZTEKO, BATA BESTEAREN BARRUAN (aurreko funtzioa erabiltzen du)(aurreko funtzioa erabiltzen du)(aurreko funtzioa erabiltzen du)(aurreko funtzioa erabiltzen du)
home clean for [i 1 100 5] [poligonoa :i 5]
4.4.4.4.MARRATXOEKIN MARRAZTUTAKO LAUKIAMARRATXOEKIN MARRAZTUTAKO LAUKIAMARRATXOEKIN MARRAZTUTAKO LAUKIAMARRATXOEKIN MARRAZTUTAKO LAUKIA
cs repeat 4 [repeat 10 [pd fd 10 pu fd 10] left 90]
5.INTEGRALAREN ZEINUA5.INTEGRALAREN ZEINUA5.INTEGRALAREN ZEINUA5.INTEGRALAREN ZEINUA
cs repeat 3600 [fd 10 right repcount]
6.ROSETOI BAT EGITEKO6.ROSETOI BAT EGITEKO6.ROSETOI BAT EGITEKO6.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 ARTE7.ESKATU BALIO BAT LETRA IDATZI ARTE7.ESKATU BALIO BAT LETRA IDATZI ARTE7.ESKATU BALIO BAT LETRA IDATZI ARTE
WHILE[NUMBER? READWORD][]
8.ESKATU BALIO BAT 8.ESKATU BALIO BAT 8.ESKATU BALIO BAT 8.ESKATU BALIO BAT ZENBAKIA IDATZI ARTEZENBAKIA IDATZI ARTEZENBAKIA IDATZI ARTEZENBAKIA IDATZI ARTE
WHILE[NOT NUMBER? READWORD][]
9.LOREA9.LOREA9.LOREA9.LOREA
TO DAISY CS HT REPEAT 30 [TRI 120 RT 12] REPEAT 30 [TRI 80 RT 12] REPEAT 30 [TRI 40 RT 12]
89
END
10.TXABOLA10.TXABOLA10.TXABOLA10.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.EGUZKIA11.EGUZKIA11.EGUZKIA11.EGUZKIA
REPEAT 12 [REPEAT 4 [FD 100 RT 90] RT 30]
12.ISLAPENA (12.ISLAPENA (12.ISLAPENA (12.ISLAPENA (FUNTZIOEN ARTEKO DEIEN BITARTEZFUNTZIOEN ARTEKO DEIEN BITARTEZFUNTZIOEN ARTEKO DEIEN BITARTEZFUNTZIOEN ARTEKO DEIEN 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)13.ERREKURTSIBITATEA (FUNTZIOA BERE BURUARI DEITZEN)13.ERREKURTSIBITATEA (FUNTZIOA BERE BURUARI DEITZEN)13.ERREKURTSIBITATEA (FUNTZIOA BERE BURUARI DEITZEN)
TO MAZE :N FD :N RT 90 MAZE :N + 5 END
90
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:14.ITSASONTZIA MARRAZTEN POSIZIOAK ERABILITA:14.ITSASONTZIA MARRAZTEN POSIZIOAK ERABILITA: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:15.Dragoia:15.Dragoia: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:16.Elur maluta:16.Elur maluta:16.Elur maluta:
TO SNOWFLAKE :SIZE :LEVEL REPEAT 3 [RT 120 SIDE :SIZE :LEVEL] END TO SIDE :SIZE :LEVEL IF :LEVEL = 0 [FD :SIZE STOP] SIDE :SIZE / 3 :LEVEL - 1 LT 60 SIDE :SIZE / 3 :LEVEL - 1 RT 120 SIDE :SIZE / 3 :LEVEL - 1 LT 60 SIDE :SIZE / 3 :LEVEL - 1 END
91
17.Berbetan ordenagailuarekin:17.Berbetan ordenagailuarekin:17.Berbetan ordenagailuarekin: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
92
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 EMAITZA
+ ONDO
? ONDO BAINA TXARTO KOKATUTA
! TXARTO
1 N B H D E H J ! ! + ! ? ? ? (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)
2 M W H A H J K ! ! + ! ? + ?
…
Hortaz, prozesua honelakoa izango da:
1. Asmatu hitz bat.
2. Jokalariari galdetu hitza asmatzeko.
3. Emaitza esan jokalariari.
93
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:
94
Parametro ezberdinak jasoko dituen prozedura prestatu beharko da,
erabiltzaileak konfigurazio 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
95
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.