SlideShare a Scribd company logo
@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-exisƟng works, such
as a translaƟon, adaptaƟon, derivaƟve work, arrangement of music or other alteraƟons of a literary or
arƟsƟc work, or phonogram or performance and includes cinematographic adaptaƟons 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 consƟtutes a CollecƟon will not be considered an AdaptaƟon for the
purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or
phonogram, the synchronizaƟon of the Work in Ɵmed-relaƟon with a moving image ("synching") will be
considered an AdaptaƟon for the purpose of this License.
b. "CollecƟon" means a collecƟon of literary or arƟsƟc works, such as encyclopedias and anthologies, or
performances, phonograms or broadcasts, or other works or subject maƩer other than works listed in
SecƟon 1(g) below, which, by reason of the selecƟon and arrangement of their contents, consƟtute
intellectual creaƟons, in which the Work is included in its enƟrety in unmodified form along with one or
more other contribuƟons, each consƟtuƟng separate and independent works in themselves, which
together are assembled into a collecƟve whole. A work that consƟtutes a CollecƟon will not be considered
an AdaptaƟon (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 AdaptaƟon, 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 Ɵtle of this License: AƩribuƟon, Noncommercial, ShareAlike.
e. "Licensor" means the individual, individuals, enƟty or enƟƟes that offer(s) the Work under the terms of
this License.
f. "Original Author" means, in the case of a literary or arƟsƟc work, the individual, individuals, enƟty or
enƟƟes who created the Work or if no individual or enƟty can be idenƟfied, the publisher; and in addiƟon
(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 arƟsƟc works or expressions of folklore;
(ii) in the case of a phonogram the producer being the person or legal enƟty who first fixes the sounds of a
performance or other sounds; and, (iii) in the case of broadcasts, the organizaƟon that transmits the
broadcast.
g. "Work" means the literary and/or arƟsƟc work offered under the terms of this License including without
limitaƟon any producƟon in the literary, scienƟfic and arƟsƟc domain, whatever may be the mode or form
of its expression including digital form, such as a book, pamphlet and other wriƟng; a lecture, address,
sermon or other work of the same nature; a dramaƟc or dramaƟco-musical work; a choreographic work or
3
entertainment in dumb show; a musical composiƟon with or without words; a cinematographic work to
which are assimilated works expressed by a process analogous to cinematography; a work of drawing,
painƟng, 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 illustraƟon, map, plan,
sketch or three-dimensional work relaƟve to geography, topography, architecture or science; a
performance; a broadcast; a phonogram; a compilaƟon 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 arƟsƟc work.
h. "You" means an individual or enƟty 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 violaƟon.
i. "Publicly Perform" means to perform public recitaƟons of the Work and to communicate to the public
those public recitaƟons, 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 communicaƟon 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 limitaƟon by sound or
visual recordings and the right of fixaƟon and reproducing fixaƟons 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 CollecƟons, and to Reproduce the Work
as incorporated in the CollecƟons;
b. to create and Reproduce AdaptaƟons provided that any such AdaptaƟon, including any translaƟon in any
medium, takes reasonable steps to clearly label, demarcate or otherwise idenƟfy that changes were made
to the original Work. For example, a translaƟon could be marked "The original work was translated from
English to Spanish," or a modificaƟon could indicate "The original work has been modified.";
c. to Distribute and Publicly Perform the Work including as incorporated in CollecƟons; and,
d. to Distribute and Publicly Perform AdaptaƟons.
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 IdenƟfier (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 noƟces that
refer to this License and to the disclaimer of warranƟes with every copy of the Work You Distribute or
Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effecƟve
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 SecƟon 4(a) applies to the Work as
incorporated in a CollecƟon, but this does not require the CollecƟon apart from the Work itself to be made
subject to the terms of this License. If You create a CollecƟon, upon noƟce from any Licensor You must, to
the extent pracƟcable, remove from the CollecƟon any credit as required by SecƟon 4(d), as requested. If
You create an AdaptaƟon, upon noƟce from any Licensor You must, to the extent pracƟcable, remove from
the AdaptaƟon any credit as required by SecƟon 4(d), as requested.
b. You may Distribute or Publicly Perform an AdaptaƟon 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 CreaƟve Commons
jurisdicƟon license (either this or a later license version) that contains the same License Elements as this
License (e.g., AƩribuƟon-NonCommercial-ShareAlike 3.0 US) ("Applicable License"). You must include a
copy of, or the URI, for Applicable License with every copy of each AdaptaƟon You Distribute or Publicly
Perform. You may not offer or impose any terms on the AdaptaƟon that restrict the terms of the
Applicable License or the ability of the recipient of the AdaptaƟon to exercise the rights granted to that
recipient under the terms of the Applicable License. You must keep intact all noƟces that refer to the
Applicable License and to the disclaimer of warranƟes with every copy of the Work as included in the
AdaptaƟon You Distribute or Publicly Perform. When You Distribute or Publicly Perform the AdaptaƟon,
You may not impose any effecƟve technological measures on the AdaptaƟon that restrict the ability of a
recipient of the AdaptaƟon from You to exercise the rights granted to that recipient under the terms of the
Applicable License. This SecƟon 4(b) applies to the AdaptaƟon as incorporated in a CollecƟon, but this
does not require the CollecƟon apart from the AdaptaƟon 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 SecƟon 3 above in any manner that is primarily
intended for or directed toward commercial advantage or private monetary compensaƟon. 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
compensaƟon, provided there is no payment of any monetary compensaƟon in con-necƟon with the
exchange of copyrighted works.
d. If You Distribute, or Publicly Perform the Work or any AdaptaƟons or CollecƟons, You must, unless a
request has been made pursuant to SecƟon 4(a), keep intact all copyright noƟces for the Work and
provide, reasonable to the medium or means You are uƟlizing: (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 parƟes (e.g., a sponsor insƟtute, publishing enƟty, journal) for aƩribuƟon ("AƩribuƟon ParƟes") in
Licensor's copyright noƟce, terms of service or by other reasonable means, the name of such party or
parƟes; (ii) the Ɵtle of the Work if supplied; (iii) to the extent reasonably pracƟcable, the URI, if any, that
Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright noƟce or
licensing informaƟon for the Work; and, (iv) consistent with SecƟon 3(b), in the case of an AdaptaƟon, a
credit idenƟfying the use of the Work in the AdaptaƟon (e.g., "French translaƟon of the Work by Original
Author," or "Screenplay based on original Work by Original Author"). The credit required by this SecƟon
4(d) may be implemented in any reasonable manner; provided, however, that in the case of a AdaptaƟon
or CollecƟon, at a minimum such credit will appear, if a credit for all contribuƟng authors of the
AdaptaƟon or CollecƟon appears, then as part of these credits and in a manner at least as prominent as
the credits for the other contribuƟng authors. For the avoidance of doubt, You may only use the credit
required by this SecƟon for the purpose of aƩribuƟon in the manner set out above and, by exercising Your
rights under this License, You may not implicitly or explicitly assert or imply any connecƟon with,
sponsorship or endorsement by the Original Author, Licensor and/or AƩribuƟon ParƟes, 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ƩribuƟon ParƟes.
e. For the avoidance of doubt:
i. Non-waivable Compulsory License Schemes. In those jurisdicƟons in which the right to collect
royalƟes through any statutory or compulsory licensing scheme cannot be waived, the Licensor
reserves the exclusive right to collect such royalƟes for any exercise by You of the rights granted
under this License;
ii. Waivable Compulsory License Schemes. In those jurisdicƟons in which the right to collect
royalƟes through any statutory or compulsory licensing scheme can be waived, the Licensor
5
reserves the exclusive right to collect such royalƟes 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 SecƟon 4(c) and otherwise waives the right to collect
royalƟes through any statutory or compulsory licensing scheme; and,
iii. Voluntary License Schemes. The Licensor reserves the right to collect royalƟes, whether
individually or, in the event that the Licensor is a member of a collecƟng 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 SecƟon 4(c).
f. Except as otherwise agreed in wriƟng 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 AdaptaƟons or
CollecƟons, You must not distort, muƟlate, modify or take other derogatory acƟon in relaƟon to the Work
which would be prejudicial to the Original Author's honor or reputaƟon. Licensor agrees that in those
jurisdicƟons (e.g. Japan), in which any exercise of the right granted in SecƟon 3(b) of this License (the right
to make AdaptaƟons) would be deemed to be a distorƟon, muƟlaƟon, modificaƟon or other derogatory
acƟon prejudicial to the Original Author's honor and reputaƟon, the Licensor will waive or not assert, as
appropriate, this SecƟon, to the fullest extent permiƩed by the applicable naƟonal law, to enable You to
reasonably exercise Your right under SecƟon 3(b) of this License (right to make AdaptaƟons) 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 automaƟcally upon any breach by You of the
terms of this License. Individuals or enƟƟes who have received AdaptaƟons or CollecƟons from You under
this License, however, will not have their licenses terminated provided such individuals or enƟƟes remain
in full compliance with those licenses. SecƟons 1, 2, 5, 6, 7, and 8 will survive any terminaƟon of this
License.
b. Subject to the above terms and condiƟons, the license granted here is perpetual (for the duraƟon 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 distribuƟng the Work at any Ɵme; provided, however that
any such elecƟon 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 conƟnue in full force and effect unless
terminated as stated above.
8. Miscellaneous
a. Each Ɵme You Distribute or Publicly Perform the Work or a CollecƟon, the Licensor offers to the recipient a
license to the Work on the same terms and condiƟons as the license granted to You under this License.
b. Each Ɵme You Distribute or Publicly Perform an AdaptaƟon, Licensor offers to the recipient a license to the
original Work on the same terms and condiƟons 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 acƟon by the
parƟes 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 wriƟng and signed by the party to be charged with such waiver or consent.
e. This License consƟtutes the enƟre agreement between the parƟes with respect to the Work licensed here.
There are no understandings, agreements or representaƟons with respect to the Work not specified here.
Licensor shall not be bound by any addiƟonal provisions that may appear in any communicaƟon 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 draŌed uƟlizing the
terminology of the Berne ConvenƟon for the ProtecƟon of Literary and ArƟsƟc Works (as amended on
September 28, 1979), the Rome ConvenƟon of 1961, the WIPO Copyright Treaty of 1996, the WIPO
Performances and Phonograms Treaty of 1996 and the Universal Copyright ConvenƟon (as revised on July
24, 1971). These rights and subject maƩer take effect in the relevant jurisdicƟon in which the License
terms are sought to be enforced according to the corresponding provisions of the implementaƟon of those
treaty provisions in the applicable naƟonal law. If the standard suite of rights granted under applicable
copyright law includes addiƟonal rights not granted under this License, such addiƟonal 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 condiƟon......................................................................................................... 52
NUMBER? (zenbaki bat da?) ................................................................................... 52
EMPTY? (hutsik dago?)............................................................................................ 52
MEMBERP element set (elementua multzoaren barruan dago?)........................... 53
EQUALP elem/list elem/list (biak berdinak dira?)................................................... 53
WORDP (hitza/zenb?) / LISTP (zerrenda?) / ARRAYP (array-a?).............................. 54
BEGIZTAK..................................................................................................................... 54
REPEAT count [instrucƟonlist] (1..n)........................................................................ 54
FOR [controllist] [instrucƟonlist] (0..n).................................................................... 55
DO.WHILE [instrucƟonlist] [condiƟonlist] (1..n) ....................................................... 57
WHILE [condiƟonlist] [instrucƟonlist] (0..n) ............................................................. 57
DO.UNTIL [instrucƟonlist] [condiƟonlist] (1..n)....................................................... 57
UNTIL [condiƟonlist] [instrucƟonlist] (0..n) ............................................................. 58
FOREACH # ? ?REST (iterazio elementua gainontzekoa)......................................... 58
FOREVER.................................................................................................................. 59
STOP ........................................................................................................................ 59
BEGIZTEN ARTEKO BALIOKIDETASUNAK ..................................................................... 59
1..10 (1..n) ............................................................................................................... 59
0..10 (0..n) ............................................................................................................... 60
PAUSAK EZARTZEKO ETA ETETEKO.................................................................................. 60
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 windowƟtle texƩoshow (f)....................................................................... 64
PRINT / PR / SHOW (p)................................................................................................ 64
SENTENCE (letrak eta aldagaiak konbinatzeko) (f)...................................................... 65
FITXATEGIEKIN LAN EGITEKO.......................................................................................... 65
FITXATEGI BATEAN IDAZTEKO ..................................................................................... 66
OPENWRITE / OPENUPDATE / SETWRITE / CLOSE .................................................. 66
FITXATEGI BATETIK IRAKURTZEKO............................................................................... 66
OPENREAD / SETREAD / READLIST / EOFP / CLOSE................................................. 66
KONTSOLAN IDATZITAKOA FITXATEGI BATERA PASATZEKO......................................... 67
DRIBBLE / NODRIBBLE............................................................................................. 67
PANTAILAKO GUNEEKIN LAN EGITEKO............................................................................ 67
BITLOAD / BITSAVE name (p) ...................................................................................... 67
BITCOPY / BITCUT width height / BITPASTE (p)........................................................... 67
SETBITINDEX number (p) ............................................................................................ 68
SETBITMODE number (p)............................................................................................ 68
TESTU-KATEEKIN LAN EGITEKO....................................................................................... 71
ASCII character / CHAR number (f)............................................................................. 71
FIRST / LAST / BUTFIRST / BUTLAST string (f) ............................................................. 71
LOWERCASE / UPPERCASE word (f) ............................................................................ 71
MEMBER string1 string2/list (f).................................................................................. 72
LANA GORDETZEKO ETA KARGATZEKO ........................................................................... 73
SAVE name .................................................................................................................. 73
LOAD name ................................................................................................................. 73
MAKE "STARTUP [funcƟonname]................................................................................ 73
SAGUA KONTROLATZEKO................................................................................................ 74
MOUSEON leŌbuƩondown leŌbuƩ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 duraƟon (p) .................................................................... 75
BOSTGARREN BLOKEKO ARIKETAK.................................................................................. 76
SEIGARREN BLOKEA: MATEMATIKA................................................................................ 77
ARITMETIKA.................................................................................................................... 77
Dezimalak eta notazio zienƟfikoa: .............................................................................. 77
Bestelako eragiketa matemaƟkoak:............................................................................ 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 gramaƟka 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, beƟere modu jostagarri batean:
1. MatemaƟkan: esƟmazioa, 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: roboƟka, sentsoreak, simulazio teknologikoak, sistema biologikoen
simulazioak, sistema adimentsuak.
6. Artean: dortokarekin eginiko grafikoak, musika, dantza, mulƟmedia.
13
ETA ADIMENAK?
1. Logiko matemaƟkoa: logikaren garapena hainbat mailatan gertatzen da. Alde
bateƟk, arazo baƟ konponbidea emateko behar den logikaren parteƟk; beste
alde bateƟk, kode-fluxuen kontrolerako behar den logikaƟk.
2. Espaziala: dortokarekin eginiko marrazkiak plano kartesiar batean egiten dira, bi
edo hiru dimentsiotan. Gainera, espazio horretan eginiko lana erlaƟboa zein
absolutua izan daiteke.
3. LinguisƟkoa: dortoka kontrolatzeko zein LOGOrekin programatzeko bere
lengoaiaren gramaƟka 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 matemaƟkoa 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 irudiagaƟk), 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 atzeƟk. 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 bertaƟk 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 kontsolaƟk, 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 kontsolaƟk.
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.
18
ZER DA PROGRAMAZIO EGITURATUA?
Bere algoritmoak (kopuru mugatuko aginduz osatutako programa) hiru egitura
zehatzetan oinarritzen dituena:
1. Sekuentziak: aginduak bata bestearen atzeƟk doazenean.
2. Baldintzak: aldagai baten balioaren arabera agindu bat ala beste exekutatzeko
aukera.
3. Begiztak: errepikapen-egiturak.
Aurreko egiturak euren artean konbina daitezke, ikusi adibide bat:
19
LOGO TXARTO ERABILTZEN BADA
1. Sekuentziak baino ez dira erabiltzen.
2. Logika ez da aplikatzen, eta kodea ulertu barik erabiltzen da.
3. Planifikazioa, deskonposizioa eta arazketa ez da aplikatzen.
NOLA DAGO ANTOLATUTA LIBURU HAU?
Azalpenak blokeka aurkituko dituzu, eta bakoitzaren barruan atalez atal antolatzen da
informazioa, beƟere adibide nahiko eta lar emanda.
Adibideak gris/berdetan daude markatuta, eta kodea zuzenean kopiatu eta itsasi
daiteke LOGOren editorean (edo kontsolan, lerro batekoak izanez gero) exekuzioa
ikusteko. KontsolaƟk irten behar den informazioa > sinboloaren ostean adierazten da.
Adibide bat baino gehiago badaude lauki gris ezberdinetan ikusiko dituzu.
Koderen batean akatsik topatzen baduzu edota zure adibideak liburu honetan agertzea
gura baduzu (zure izena ikusiko da) jakinarazi niri e-postaz (andoni.sanz@gmail.com).
Gogoan izan: aginduak emateko lerro berean idatzi daitezke bata bestearen atzeƟk,
baina kodea errazago irakurri ahal izateko hainbat lerrotan antolatzeko gomendatzen
da, adibidez editorearen barruan (EDALL teklatu, edo botoiari sakatu).
Bloke bakoitzean hau egitea gomendatzen da:
1. Adibideak probatu, aldatu eta zure esperimentuak egin.
2. Bloke bakoitzaren amaierako ariketak egin.
3. Sor dakizkizukeen zalantzak apuntatu eta:
a. Esperimentazioaren bitartez argitzen saiatu.
b. Dokumentu honen laguntzaren bitartez konpontzen saiatu.
c. Irakasleari galdetu.
Blokeak hauek dituzu:
1. DORTOKAREN KONTROLA.
2. DATU-EGITURAK.
3. FUNTZIOAK.
4. FLUXU-EGITURAK.
5. ELKARRAKZIOA.
6. MATEMATIKA.
20
JARRAITU AURRETIK: NOLA ADIERAZI FITXATEGI
BATEN KOKAPENA
LOGOren agindu batzuek fitxategien kokapenen bidea eskatzen dizkigute. Bide hori
erraza da, baina jakin behar da zehatz mehatz jartzen. Hurrengo adibidean marrazki
baten disko-bidea zein den ikusiko dugu (NIRE IRUDIAK barruan, eta gero VIOLET
karpetan).
Irudiaren karpeta adierazteko hurrengokoa egin behar da:
Demagun VIOLET karpetan daukadala nire argazkia. Ikusi karpeten BIDEA goiko barran
ikus daitekela. Barra horretan klikatuz gero LOGOk behar duen formatuan jarriko da:
Hortaz, gure irudiaren izena PAISAIA.BMP baldin bada bide osoa honela adieraziko da:
C:UsersandoniPicturesvioletpaisaia.bmp
Barra okerra karaktere berezia denez bikoiztu behar dugu LOGOri adierazteko barra
normal moduan erabili nahi dugula, beraz BIDEAren azken formatua hau izango da:
C: UsersandoniPicturesvioletpaisaia.bmp
21
LEHEN BLOKEA: DORTOKAREN KONTROLA
Dortoka kartesiar espazio baten mugitzen den triangelu txikia da, bere atzeƟk arrasto
bat utzita. Arrasto horren itxura (gogortasuna, kolorea, efektua eta abar) eralda
daiteke, baita dortokaren forma zein espazioƟk 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:windowstada.wav 1+8
;c:windowstada.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:windowsclock.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 abesƟ hau jo: DO DO DO SI DO RE RE RE SI DO RE SI DO SOL
5. Aurreko abesƟa 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 guneƟk irtengo den espiral bat marraztu (13. edo 14. espiralak
erabili ahal dira) LEIHO modu guzƟetan: 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 beƟ eramango ditu kakotxak aurreƟk.
2. Aldagai hori ERABILTZERAKOAN beƟ eramango ditu bi puntuak aurreƟk.
3. Testuek kakotxak eramango dituzte aurreƟk.
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 funtzioƟk 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 beƟ 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 piloƟk
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 zerrendaƟk 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
MatemaƟkako funtzioen modura funtzionatzen dute: y = x + 1, non eskumako x-ari
balioak eman eta ezkerreko y-Ɵk sortzen diren. Modu berean hainbat funtzio kateatu
ahal dira bata bestearen atzeƟk.
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 baƟ 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 bateƟk 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 beƟ 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 bateƟk beste batera pasatzeko gehiketa) jasoko
ditu. Inprimatu kontsolaƟk. 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 kontsolaƟk 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 1eƟk 5erako zenbaki zerrenda
itzuliko du (erabili OUTPUT), eta bigarrenak kontsolaƟk inprimatuko du
lehenaren erantzuna.
6. KontsolaƟk 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 10eƟk 1era zenbatuko duen prozedura prestatu.
10. Errekurtsibitatea erabilita letra guzƟak inprimatuko dituen prozedura prestatu,
AƟk 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 estaƟkoak).
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 hasieraƟk 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 zerrendaƟk 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. BarruƟk 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 bateƟk 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 guzƟekin.
1..10 (1..n)
Datozen adibideak sinplifikatu dira argi ikus dadin sintaxia. 1eƟk 10erako zenbakiak
inprimatuko dute, eta aldagaia beƟ 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 kontsolaƟk agerrarazi.
2. Aurreko ariketari sartu gehikuntza bat: zenbakiaz gain hau testua agerrarazi
"8ren mulƟploa da", baldintza hori betetzen bada (16, 32, 64… zenbakiekin
gertatuko da). Erabili IF edo TEST egitura. Adibidez: 1, 2, 4, 8, 16 8ren mulƟploa
da, 32 8ren mulƟploa da…
3. Prozedura baten barruan: kontsolaƟk jaso balio bat, ikusi zer motakoa den eta
kontsolaƟk 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 kontsolaƟk agertu.
5. Prozedura bat sortu, elkarrizketa hau edukiko duena (erantzuna ondo eman
arte LOGOk galdera berdina galdetzen jarraituko du):
KAIXO, NOLA DAUKAZU IZENA? (kontsolaƟk jaso izena, eta konprobatu testua
dela).
(ondo)>POZTEN NAIZ ZU EZAGUTZEAZ :IZENA
(txarto)>BENETAKO IZENA ESAN BEHAR DIDAZU. :IZENA EZ DA ZUZENA.
ZENBAT URTE DITUZU? (konprobatu zenbakia dela).
(ondo)>HORTAZ :urte URTE DITUZU, E?
(txarto)>URTEAK TXARTO ESAN DIZKIDAZU
NON BIZI ZARA? (konprobatu testua dela, eta BERMEO esanez gero…)
(ondo, Bermeon)>HARA! NEU ERE BERMEON BIZI NAIZ
(ondo, beste baten)>ORDUAN :HERRIA-n BIZI ZARA, NI, ALDIZ, BERMEON BIZI
NAIZ
(txarto)>:HERRIA HERRI BAT AL DA? EZ DUT USTE.
Adibidez:
>KAIXO, NOLA DAUKAZU IZENA?
>EGUZKI
>POZTEN NAIZ ZU EZAGUTZEAZ EGUZKI
>ZENBAT URTE DITUZU?
>HAMAR
>URTEAK TXARTO ESAN DIZKIDAZU
>ZENBAT URTE DITUZU>
>10
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 bertaƟk 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 pantailaƟk balioak eskatzeko. Era horretan programak behar dituen balioak
kodean sartu beharrean kontsolaƟk 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 texƩoshow (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)
KontsolaƟk 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 hitzeƟk 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 beƟ 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 bateƟk 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 zaƟ bat da. ZaƟ 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:UsersandoniPicturesvioletpaisaia.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 zaƟak 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 arƟsƟkoak 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.
Logo programazio mintzairaren eskuliburua
Logo programazio mintzairaren eskuliburua
Logo programazio mintzairaren eskuliburua
Logo programazio mintzairaren eskuliburua
Logo programazio mintzairaren eskuliburua
Logo programazio mintzairaren eskuliburua
Logo programazio mintzairaren eskuliburua
Logo programazio mintzairaren eskuliburua
Logo programazio mintzairaren eskuliburua
Logo programazio mintzairaren eskuliburua
Logo programazio mintzairaren eskuliburua
Logo programazio mintzairaren eskuliburua
Logo programazio mintzairaren eskuliburua
Logo programazio mintzairaren eskuliburua
Logo programazio mintzairaren eskuliburua
Logo programazio mintzairaren eskuliburua
Logo programazio mintzairaren eskuliburua
Logo programazio mintzairaren eskuliburua
Logo programazio mintzairaren eskuliburua
Logo programazio mintzairaren eskuliburua
Logo programazio mintzairaren eskuliburua
Logo programazio mintzairaren eskuliburua
Logo programazio mintzairaren eskuliburua
Logo programazio mintzairaren eskuliburua
Logo programazio mintzairaren eskuliburua
Logo programazio mintzairaren eskuliburua

More Related Content

More from Andoni Sanz

#Educational #neuroscience (by Andoni Sanz)
#Educational #neuroscience (by Andoni Sanz)#Educational #neuroscience (by Andoni Sanz)
#Educational #neuroscience (by Andoni Sanz)
Andoni Sanz
 
#Gamification mechanics in #education (Andoni Sanz)
#Gamification mechanics in #education (Andoni Sanz)#Gamification mechanics in #education (Andoni Sanz)
#Gamification mechanics in #education (Andoni Sanz)
Andoni Sanz
 
Euskal eskola publikoaren topaketa digitalak 2016: HAIDEI (@andonisanz)
Euskal eskola publikoaren topaketa digitalak 2016: HAIDEI (@andonisanz)Euskal eskola publikoaren topaketa digitalak 2016: HAIDEI (@andonisanz)
Euskal eskola publikoaren topaketa digitalak 2016: HAIDEI (@andonisanz)
Andoni Sanz
 
Gwc15 - haidei presentation - (@andonisanz)
Gwc15 - haidei presentation -  (@andonisanz)Gwc15 - haidei presentation -  (@andonisanz)
Gwc15 - haidei presentation - (@andonisanz)
Andoni Sanz
 
#Moodle + #gamification (Andoni Sanz)
#Moodle + #gamification (Andoni Sanz)#Moodle + #gamification (Andoni Sanz)
#Moodle + #gamification (Andoni Sanz)
Andoni Sanz
 
#Google #GAFE summit - Euskadi 2015 - #screencast, #p2p review (@andonisanz)
#Google #GAFE summit - Euskadi 2015 - #screencast, #p2p review (@andonisanz)#Google #GAFE summit - Euskadi 2015 - #screencast, #p2p review (@andonisanz)
#Google #GAFE summit - Euskadi 2015 - #screencast, #p2p review (@andonisanz)
Andoni Sanz
 
Flipped Classes
Flipped ClassesFlipped Classes
Flipped Classes
Andoni Sanz
 
Gamecodization
GamecodizationGamecodization
Gamecodization
Andoni Sanz
 
Blogging for students
Blogging for studentsBlogging for students
Blogging for students
Andoni Sanz
 
Malware cleaning
Malware cleaningMalware cleaning
Malware cleaning
Andoni Sanz
 
#Gamification and #moodle: the how to's (@andonisanz)
#Gamification and #moodle: the how to's (@andonisanz)#Gamification and #moodle: the how to's (@andonisanz)
#Gamification and #moodle: the how to's (@andonisanz)
Andoni Sanz
 
Web-gune itzelak eskura
Web-gune itzelak eskuraWeb-gune itzelak eskura
Web-gune itzelak eskura
Andoni Sanz
 
The Internet
The InternetThe Internet
The Internet
Andoni Sanz
 

More from Andoni Sanz (13)

#Educational #neuroscience (by Andoni Sanz)
#Educational #neuroscience (by Andoni Sanz)#Educational #neuroscience (by Andoni Sanz)
#Educational #neuroscience (by Andoni Sanz)
 
#Gamification mechanics in #education (Andoni Sanz)
#Gamification mechanics in #education (Andoni Sanz)#Gamification mechanics in #education (Andoni Sanz)
#Gamification mechanics in #education (Andoni Sanz)
 
Euskal eskola publikoaren topaketa digitalak 2016: HAIDEI (@andonisanz)
Euskal eskola publikoaren topaketa digitalak 2016: HAIDEI (@andonisanz)Euskal eskola publikoaren topaketa digitalak 2016: HAIDEI (@andonisanz)
Euskal eskola publikoaren topaketa digitalak 2016: HAIDEI (@andonisanz)
 
Gwc15 - haidei presentation - (@andonisanz)
Gwc15 - haidei presentation -  (@andonisanz)Gwc15 - haidei presentation -  (@andonisanz)
Gwc15 - haidei presentation - (@andonisanz)
 
#Moodle + #gamification (Andoni Sanz)
#Moodle + #gamification (Andoni Sanz)#Moodle + #gamification (Andoni Sanz)
#Moodle + #gamification (Andoni Sanz)
 
#Google #GAFE summit - Euskadi 2015 - #screencast, #p2p review (@andonisanz)
#Google #GAFE summit - Euskadi 2015 - #screencast, #p2p review (@andonisanz)#Google #GAFE summit - Euskadi 2015 - #screencast, #p2p review (@andonisanz)
#Google #GAFE summit - Euskadi 2015 - #screencast, #p2p review (@andonisanz)
 
Flipped Classes
Flipped ClassesFlipped Classes
Flipped Classes
 
Gamecodization
GamecodizationGamecodization
Gamecodization
 
Blogging for students
Blogging for studentsBlogging for students
Blogging for students
 
Malware cleaning
Malware cleaningMalware cleaning
Malware cleaning
 
#Gamification and #moodle: the how to's (@andonisanz)
#Gamification and #moodle: the how to's (@andonisanz)#Gamification and #moodle: the how to's (@andonisanz)
#Gamification and #moodle: the how to's (@andonisanz)
 
Web-gune itzelak eskura
Web-gune itzelak eskuraWeb-gune itzelak eskura
Web-gune itzelak eskura
 
The Internet
The InternetThe Internet
The Internet
 

Logo programazio mintzairaren eskuliburua

  • 2. 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-exisƟng works, such as a translaƟon, adaptaƟon, derivaƟve work, arrangement of music or other alteraƟons of a literary or arƟsƟc work, or phonogram or performance and includes cinematographic adaptaƟons 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 consƟtutes a CollecƟon will not be considered an AdaptaƟon for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronizaƟon of the Work in Ɵmed-relaƟon with a moving image ("synching") will be considered an AdaptaƟon for the purpose of this License. b. "CollecƟon" means a collecƟon of literary or arƟsƟc works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject maƩer other than works listed in SecƟon 1(g) below, which, by reason of the selecƟon and arrangement of their contents, consƟtute intellectual creaƟons, in which the Work is included in its enƟrety in unmodified form along with one or more other contribuƟons, each consƟtuƟng separate and independent works in themselves, which together are assembled into a collecƟve whole. A work that consƟtutes a CollecƟon will not be considered an AdaptaƟon (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 AdaptaƟon, 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 Ɵtle of this License: AƩribuƟon, Noncommercial, ShareAlike. e. "Licensor" means the individual, individuals, enƟty or enƟƟes that offer(s) the Work under the terms of this License. f. "Original Author" means, in the case of a literary or arƟsƟc work, the individual, individuals, enƟty or enƟƟes who created the Work or if no individual or enƟty can be idenƟfied, the publisher; and in addiƟon (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 arƟsƟc works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal enƟty who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organizaƟon that transmits the broadcast. g. "Work" means the literary and/or arƟsƟc work offered under the terms of this License including without limitaƟon any producƟon in the literary, scienƟfic and arƟsƟc domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other wriƟng; a lecture, address, sermon or other work of the same nature; a dramaƟc or dramaƟco-musical work; a choreographic work or
  • 3. 3 entertainment in dumb show; a musical composiƟon with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painƟng, 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 illustraƟon, map, plan, sketch or three-dimensional work relaƟve to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilaƟon 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 arƟsƟc work. h. "You" means an individual or enƟty 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 violaƟon. i. "Publicly Perform" means to perform public recitaƟons of the Work and to communicate to the public those public recitaƟons, 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 communicaƟon 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 limitaƟon by sound or visual recordings and the right of fixaƟon and reproducing fixaƟons 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 CollecƟons, and to Reproduce the Work as incorporated in the CollecƟons; b. to create and Reproduce AdaptaƟons provided that any such AdaptaƟon, including any translaƟon in any medium, takes reasonable steps to clearly label, demarcate or otherwise idenƟfy that changes were made to the original Work. For example, a translaƟon could be marked "The original work was translated from English to Spanish," or a modificaƟon could indicate "The original work has been modified."; c. to Distribute and Publicly Perform the Work including as incorporated in CollecƟons; and, d. to Distribute and Publicly Perform AdaptaƟons. 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 IdenƟfier (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 noƟces that refer to this License and to the disclaimer of warranƟes with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effecƟve
  • 4. 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 SecƟon 4(a) applies to the Work as incorporated in a CollecƟon, but this does not require the CollecƟon apart from the Work itself to be made subject to the terms of this License. If You create a CollecƟon, upon noƟce from any Licensor You must, to the extent pracƟcable, remove from the CollecƟon any credit as required by SecƟon 4(d), as requested. If You create an AdaptaƟon, upon noƟce from any Licensor You must, to the extent pracƟcable, remove from the AdaptaƟon any credit as required by SecƟon 4(d), as requested. b. You may Distribute or Publicly Perform an AdaptaƟon 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 CreaƟve Commons jurisdicƟon license (either this or a later license version) that contains the same License Elements as this License (e.g., AƩribuƟon-NonCommercial-ShareAlike 3.0 US) ("Applicable License"). You must include a copy of, or the URI, for Applicable License with every copy of each AdaptaƟon You Distribute or Publicly Perform. You may not offer or impose any terms on the AdaptaƟon that restrict the terms of the Applicable License or the ability of the recipient of the AdaptaƟon to exercise the rights granted to that recipient under the terms of the Applicable License. You must keep intact all noƟces that refer to the Applicable License and to the disclaimer of warranƟes with every copy of the Work as included in the AdaptaƟon You Distribute or Publicly Perform. When You Distribute or Publicly Perform the AdaptaƟon, You may not impose any effecƟve technological measures on the AdaptaƟon that restrict the ability of a recipient of the AdaptaƟon from You to exercise the rights granted to that recipient under the terms of the Applicable License. This SecƟon 4(b) applies to the AdaptaƟon as incorporated in a CollecƟon, but this does not require the CollecƟon apart from the AdaptaƟon 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 SecƟon 3 above in any manner that is primarily intended for or directed toward commercial advantage or private monetary compensaƟon. 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 compensaƟon, provided there is no payment of any monetary compensaƟon in con-necƟon with the exchange of copyrighted works. d. If You Distribute, or Publicly Perform the Work or any AdaptaƟons or CollecƟons, You must, unless a request has been made pursuant to SecƟon 4(a), keep intact all copyright noƟces for the Work and provide, reasonable to the medium or means You are uƟlizing: (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 parƟes (e.g., a sponsor insƟtute, publishing enƟty, journal) for aƩribuƟon ("AƩribuƟon ParƟes") in Licensor's copyright noƟce, terms of service or by other reasonable means, the name of such party or parƟes; (ii) the Ɵtle of the Work if supplied; (iii) to the extent reasonably pracƟcable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright noƟce or licensing informaƟon for the Work; and, (iv) consistent with SecƟon 3(b), in the case of an AdaptaƟon, a credit idenƟfying the use of the Work in the AdaptaƟon (e.g., "French translaƟon of the Work by Original Author," or "Screenplay based on original Work by Original Author"). The credit required by this SecƟon 4(d) may be implemented in any reasonable manner; provided, however, that in the case of a AdaptaƟon or CollecƟon, at a minimum such credit will appear, if a credit for all contribuƟng authors of the AdaptaƟon or CollecƟon appears, then as part of these credits and in a manner at least as prominent as the credits for the other contribuƟng authors. For the avoidance of doubt, You may only use the credit required by this SecƟon for the purpose of aƩribuƟon in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connecƟon with, sponsorship or endorsement by the Original Author, Licensor and/or AƩribuƟon ParƟes, 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ƩribuƟon ParƟes. e. For the avoidance of doubt: i. Non-waivable Compulsory License Schemes. In those jurisdicƟons in which the right to collect royalƟes through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalƟes for any exercise by You of the rights granted under this License; ii. Waivable Compulsory License Schemes. In those jurisdicƟons in which the right to collect royalƟes through any statutory or compulsory licensing scheme can be waived, the Licensor
  • 5. 5 reserves the exclusive right to collect such royalƟes 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 SecƟon 4(c) and otherwise waives the right to collect royalƟes through any statutory or compulsory licensing scheme; and, iii. Voluntary License Schemes. The Licensor reserves the right to collect royalƟes, whether individually or, in the event that the Licensor is a member of a collecƟng 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 SecƟon 4(c). f. Except as otherwise agreed in wriƟng 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 AdaptaƟons or CollecƟons, You must not distort, muƟlate, modify or take other derogatory acƟon in relaƟon to the Work which would be prejudicial to the Original Author's honor or reputaƟon. Licensor agrees that in those jurisdicƟons (e.g. Japan), in which any exercise of the right granted in SecƟon 3(b) of this License (the right to make AdaptaƟons) would be deemed to be a distorƟon, muƟlaƟon, modificaƟon or other derogatory acƟon prejudicial to the Original Author's honor and reputaƟon, the Licensor will waive or not assert, as appropriate, this SecƟon, to the fullest extent permiƩed by the applicable naƟonal law, to enable You to reasonably exercise Your right under SecƟon 3(b) of this License (right to make AdaptaƟons) 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 automaƟcally upon any breach by You of the terms of this License. Individuals or enƟƟes who have received AdaptaƟons or CollecƟons from You under this License, however, will not have their licenses terminated provided such individuals or enƟƟes remain in full compliance with those licenses. SecƟons 1, 2, 5, 6, 7, and 8 will survive any terminaƟon of this License. b. Subject to the above terms and condiƟons, the license granted here is perpetual (for the duraƟon 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 distribuƟng the Work at any Ɵme; provided, however that any such elecƟon 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 conƟnue in full force and effect unless terminated as stated above. 8. Miscellaneous a. Each Ɵme You Distribute or Publicly Perform the Work or a CollecƟon, the Licensor offers to the recipient a license to the Work on the same terms and condiƟons as the license granted to You under this License. b. Each Ɵme You Distribute or Publicly Perform an AdaptaƟon, Licensor offers to the recipient a license to the original Work on the same terms and condiƟons as the license granted to You under this License.
  • 6. 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 acƟon by the parƟes 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 wriƟng and signed by the party to be charged with such waiver or consent. e. This License consƟtutes the enƟre agreement between the parƟes with respect to the Work licensed here. There are no understandings, agreements or representaƟons with respect to the Work not specified here. Licensor shall not be bound by any addiƟonal provisions that may appear in any communicaƟon 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 draŌed uƟlizing the terminology of the Berne ConvenƟon for the ProtecƟon of Literary and ArƟsƟc Works (as amended on September 28, 1979), the Rome ConvenƟon of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright ConvenƟon (as revised on July 24, 1971). These rights and subject maƩer take effect in the relevant jurisdicƟon in which the License terms are sought to be enforced according to the corresponding provisions of the implementaƟon of those treaty provisions in the applicable naƟonal law. If the standard suite of rights granted under applicable copyright law includes addiƟonal rights not granted under this License, such addiƟonal 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. 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. 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 condiƟon......................................................................................................... 52 NUMBER? (zenbaki bat da?) ................................................................................... 52 EMPTY? (hutsik dago?)............................................................................................ 52 MEMBERP element set (elementua multzoaren barruan dago?)........................... 53 EQUALP elem/list elem/list (biak berdinak dira?)................................................... 53 WORDP (hitza/zenb?) / LISTP (zerrenda?) / ARRAYP (array-a?).............................. 54 BEGIZTAK..................................................................................................................... 54 REPEAT count [instrucƟonlist] (1..n)........................................................................ 54 FOR [controllist] [instrucƟonlist] (0..n).................................................................... 55 DO.WHILE [instrucƟonlist] [condiƟonlist] (1..n) ....................................................... 57 WHILE [condiƟonlist] [instrucƟonlist] (0..n) ............................................................. 57 DO.UNTIL [instrucƟonlist] [condiƟonlist] (1..n)....................................................... 57 UNTIL [condiƟonlist] [instrucƟonlist] (0..n) ............................................................. 58 FOREACH # ? ?REST (iterazio elementua gainontzekoa)......................................... 58 FOREVER.................................................................................................................. 59 STOP ........................................................................................................................ 59 BEGIZTEN ARTEKO BALIOKIDETASUNAK ..................................................................... 59 1..10 (1..n) ............................................................................................................... 59 0..10 (0..n) ............................................................................................................... 60 PAUSAK EZARTZEKO ETA ETETEKO.................................................................................. 60
  • 9. 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 windowƟtle texƩoshow (f)....................................................................... 64 PRINT / PR / SHOW (p)................................................................................................ 64 SENTENCE (letrak eta aldagaiak konbinatzeko) (f)...................................................... 65 FITXATEGIEKIN LAN EGITEKO.......................................................................................... 65 FITXATEGI BATEAN IDAZTEKO ..................................................................................... 66 OPENWRITE / OPENUPDATE / SETWRITE / CLOSE .................................................. 66 FITXATEGI BATETIK IRAKURTZEKO............................................................................... 66 OPENREAD / SETREAD / READLIST / EOFP / CLOSE................................................. 66 KONTSOLAN IDATZITAKOA FITXATEGI BATERA PASATZEKO......................................... 67 DRIBBLE / NODRIBBLE............................................................................................. 67 PANTAILAKO GUNEEKIN LAN EGITEKO............................................................................ 67 BITLOAD / BITSAVE name (p) ...................................................................................... 67 BITCOPY / BITCUT width height / BITPASTE (p)........................................................... 67 SETBITINDEX number (p) ............................................................................................ 68 SETBITMODE number (p)............................................................................................ 68 TESTU-KATEEKIN LAN EGITEKO....................................................................................... 71 ASCII character / CHAR number (f)............................................................................. 71 FIRST / LAST / BUTFIRST / BUTLAST string (f) ............................................................. 71 LOWERCASE / UPPERCASE word (f) ............................................................................ 71 MEMBER string1 string2/list (f).................................................................................. 72 LANA GORDETZEKO ETA KARGATZEKO ........................................................................... 73 SAVE name .................................................................................................................. 73 LOAD name ................................................................................................................. 73 MAKE "STARTUP [funcƟonname]................................................................................ 73 SAGUA KONTROLATZEKO................................................................................................ 74 MOUSEON leŌbuƩondown leŌbuƩonup rightbuƩondown rightbuƩonup move..... 74
  • 10. 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 duraƟon (p) .................................................................... 75 BOSTGARREN BLOKEKO ARIKETAK.................................................................................. 76 SEIGARREN BLOKEA: MATEMATIKA................................................................................ 77 ARITMETIKA.................................................................................................................... 77 Dezimalak eta notazio zienƟfikoa: .............................................................................. 77 Bestelako eragiketa matemaƟkoak:............................................................................ 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. 11 ADIBIDE BATZUK ............................................................................................................. 88 PROPOSATURIKO PROIEKTUAK....................................................................................... 92
  • 12. 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 gramaƟka 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, beƟere modu jostagarri batean: 1. MatemaƟkan: esƟmazioa, 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: roboƟka, sentsoreak, simulazio teknologikoak, sistema biologikoen simulazioak, sistema adimentsuak. 6. Artean: dortokarekin eginiko grafikoak, musika, dantza, mulƟmedia.
  • 13. 13 ETA ADIMENAK? 1. Logiko matemaƟkoa: logikaren garapena hainbat mailatan gertatzen da. Alde bateƟk, arazo baƟ konponbidea emateko behar den logikaren parteƟk; beste alde bateƟk, kode-fluxuen kontrolerako behar den logikaƟk. 2. Espaziala: dortokarekin eginiko marrazkiak plano kartesiar batean egiten dira, bi edo hiru dimentsiotan. Gainera, espazio horretan eginiko lana erlaƟboa zein absolutua izan daiteke. 3. LinguisƟkoa: dortoka kontrolatzeko zein LOGOrekin programatzeko bere lengoaiaren gramaƟka ondo jakin behar da erabiltzen.
  • 14. 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 matemaƟkoa 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. 15 8. Interpertsonala: talde-lana, talde-proiektuak, lankideen arteko koordinazioa, besteenganako ardura, besteekiko komunikazioa, lan-banaketa, akordioak…
  • 16. 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 irudiagaƟk), 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 atzeƟk. 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 bertaƟk 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. 17 du kontsolaƟk, 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 kontsolaƟk. 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.
  • 18. 18 ZER DA PROGRAMAZIO EGITURATUA? Bere algoritmoak (kopuru mugatuko aginduz osatutako programa) hiru egitura zehatzetan oinarritzen dituena: 1. Sekuentziak: aginduak bata bestearen atzeƟk doazenean. 2. Baldintzak: aldagai baten balioaren arabera agindu bat ala beste exekutatzeko aukera. 3. Begiztak: errepikapen-egiturak. Aurreko egiturak euren artean konbina daitezke, ikusi adibide bat:
  • 19. 19 LOGO TXARTO ERABILTZEN BADA 1. Sekuentziak baino ez dira erabiltzen. 2. Logika ez da aplikatzen, eta kodea ulertu barik erabiltzen da. 3. Planifikazioa, deskonposizioa eta arazketa ez da aplikatzen. NOLA DAGO ANTOLATUTA LIBURU HAU? Azalpenak blokeka aurkituko dituzu, eta bakoitzaren barruan atalez atal antolatzen da informazioa, beƟere adibide nahiko eta lar emanda. Adibideak gris/berdetan daude markatuta, eta kodea zuzenean kopiatu eta itsasi daiteke LOGOren editorean (edo kontsolan, lerro batekoak izanez gero) exekuzioa ikusteko. KontsolaƟk irten behar den informazioa > sinboloaren ostean adierazten da. Adibide bat baino gehiago badaude lauki gris ezberdinetan ikusiko dituzu. Koderen batean akatsik topatzen baduzu edota zure adibideak liburu honetan agertzea gura baduzu (zure izena ikusiko da) jakinarazi niri e-postaz (andoni.sanz@gmail.com). Gogoan izan: aginduak emateko lerro berean idatzi daitezke bata bestearen atzeƟk, baina kodea errazago irakurri ahal izateko hainbat lerrotan antolatzeko gomendatzen da, adibidez editorearen barruan (EDALL teklatu, edo botoiari sakatu). Bloke bakoitzean hau egitea gomendatzen da: 1. Adibideak probatu, aldatu eta zure esperimentuak egin. 2. Bloke bakoitzaren amaierako ariketak egin. 3. Sor dakizkizukeen zalantzak apuntatu eta: a. Esperimentazioaren bitartez argitzen saiatu. b. Dokumentu honen laguntzaren bitartez konpontzen saiatu. c. Irakasleari galdetu. Blokeak hauek dituzu: 1. DORTOKAREN KONTROLA. 2. DATU-EGITURAK. 3. FUNTZIOAK. 4. FLUXU-EGITURAK. 5. ELKARRAKZIOA. 6. MATEMATIKA.
  • 20. 20 JARRAITU AURRETIK: NOLA ADIERAZI FITXATEGI BATEN KOKAPENA LOGOren agindu batzuek fitxategien kokapenen bidea eskatzen dizkigute. Bide hori erraza da, baina jakin behar da zehatz mehatz jartzen. Hurrengo adibidean marrazki baten disko-bidea zein den ikusiko dugu (NIRE IRUDIAK barruan, eta gero VIOLET karpetan). Irudiaren karpeta adierazteko hurrengokoa egin behar da: Demagun VIOLET karpetan daukadala nire argazkia. Ikusi karpeten BIDEA goiko barran ikus daitekela. Barra horretan klikatuz gero LOGOk behar duen formatuan jarriko da: Hortaz, gure irudiaren izena PAISAIA.BMP baldin bada bide osoa honela adieraziko da: C:UsersandoniPicturesvioletpaisaia.bmp Barra okerra karaktere berezia denez bikoiztu behar dugu LOGOri adierazteko barra normal moduan erabili nahi dugula, beraz BIDEAren azken formatua hau izango da: C: UsersandoniPicturesvioletpaisaia.bmp
  • 21. 21 LEHEN BLOKEA: DORTOKAREN KONTROLA Dortoka kartesiar espazio baten mugitzen den triangelu txikia da, bere atzeƟk arrasto bat utzita. Arrasto horren itxura (gogortasuna, kolorea, efektua eta abar) eralda daiteke, baita dortokaren forma zein espazioƟk mugitzeko modua ere.
  • 22. 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. 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. 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. 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. 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. 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. 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:windowstada.wav 1+8 ;c:windowstada.wav fitxategia ireki eta barruan
  • 29. 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. 30 ;oinarrizko aginduak jotzea amaitzeko MCI [stop cdaudio] MCI [close cdaudio] BIDEO BAT IKUSARAZTEKO Ikusi adibidea: ;bideo irekitzeko IGNORE MCI [open c:windowsclock.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. 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. 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 abesƟ hau jo: DO DO DO SI DO RE RE RE SI DO RE SI DO SOL 5. Aurreko abesƟa 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 guneƟk irtengo den espiral bat marraztu (13. edo 14. espiralak erabili ahal dira) LEIHO modu guzƟetan: 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. 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 beƟ eramango ditu kakotxak aurreƟk. 2. Aldagai hori ERABILTZERAKOAN beƟ eramango ditu bi puntuak aurreƟk. 3. Testuek kakotxak eramango dituzte aurreƟk. 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. 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. 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 funtzioƟk 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 beƟ gordeko dute ezarritako azken balioa, edonon aldatu bazaion ere.
  • 36. 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. 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. 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. 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. 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. 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 piloƟk 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. 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. 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 zerrendaƟk aterata. Ondoren PILA batean sartu eta jo berriz ere atzekoz aurrera.
  • 44. 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 MatemaƟkako funtzioen modura funtzionatzen dute: y = x + 1, non eskumako x-ari balioak eman eta ezkerreko y-Ɵk sortzen diren. Modu berean hainbat funtzio kateatu ahal dira bata bestearen atzeƟk. 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. 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 baƟ 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. 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. 47 ERREKURTSIBITATEA Gaitasun honen bitartez funtzio batek bere buruari deituko dio. Adibidez, zenbaki zehatz bateƟk 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 beƟ 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. 48 BALDINTZA :param DEITU PROZESUA AMAITU
  • 49. 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 bateƟk beste batera pasatzeko gehiketa) jasoko ditu. Inprimatu kontsolaƟk. 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 kontsolaƟk 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 1eƟk 5erako zenbaki zerrenda itzuliko du (erabili OUTPUT), eta bigarrenak kontsolaƟk inprimatuko du lehenaren erantzuna. 6. KontsolaƟk 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 10eƟk 1era zenbatuko duen prozedura prestatu. 10. Errekurtsibitatea erabilita letra guzƟak inprimatuko dituen prozedura prestatu, AƟk Zra.
  • 50. 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. 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. 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. 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. 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 estaƟkoak). 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. 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. 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. 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. 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 hasieraƟk 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. 59 1) # errepikapen zenbakia da, REPEAT-aren REPCOUNT-a bezalakoa. 2) ? zerrendaren unean uneko elementua da. 3) ?REST zerrendaƟk 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. BarruƟk 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 bateƟk 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 guzƟekin. 1..10 (1..n) Datozen adibideak sinplifikatu dira argi ikus dadin sintaxia. 1eƟk 10erako zenbakiak inprimatuko dute, eta aldagaia beƟ izango da n.
  • 60. 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. 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 kontsolaƟk agerrarazi. 2. Aurreko ariketari sartu gehikuntza bat: zenbakiaz gain hau testua agerrarazi "8ren mulƟploa da", baldintza hori betetzen bada (16, 32, 64… zenbakiekin gertatuko da). Erabili IF edo TEST egitura. Adibidez: 1, 2, 4, 8, 16 8ren mulƟploa da, 32 8ren mulƟploa da… 3. Prozedura baten barruan: kontsolaƟk jaso balio bat, ikusi zer motakoa den eta kontsolaƟk 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 kontsolaƟk agertu. 5. Prozedura bat sortu, elkarrizketa hau edukiko duena (erantzuna ondo eman arte LOGOk galdera berdina galdetzen jarraituko du): KAIXO, NOLA DAUKAZU IZENA? (kontsolaƟk jaso izena, eta konprobatu testua dela). (ondo)>POZTEN NAIZ ZU EZAGUTZEAZ :IZENA (txarto)>BENETAKO IZENA ESAN BEHAR DIDAZU. :IZENA EZ DA ZUZENA. ZENBAT URTE DITUZU? (konprobatu zenbakia dela). (ondo)>HORTAZ :urte URTE DITUZU, E? (txarto)>URTEAK TXARTO ESAN DIZKIDAZU NON BIZI ZARA? (konprobatu testua dela, eta BERMEO esanez gero…) (ondo, Bermeon)>HARA! NEU ERE BERMEON BIZI NAIZ (ondo, beste baten)>ORDUAN :HERRIA-n BIZI ZARA, NI, ALDIZ, BERMEON BIZI NAIZ (txarto)>:HERRIA HERRI BAT AL DA? EZ DUT USTE. Adibidez: >KAIXO, NOLA DAUKAZU IZENA? >EGUZKI >POZTEN NAIZ ZU EZAGUTZEAZ EGUZKI >ZENBAT URTE DITUZU? >HAMAR >URTEAK TXARTO ESAN DIZKIDAZU >ZENBAT URTE DITUZU> >10
  • 62. 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 bertaƟk igarotzeko bidea izan. Ausaz marraztu. Ikusi adibidea:
  • 63. 63 BOSTGARREN BLOKEA: ELKARRAKZIOA KONTSOLATIK BALIO BAT JASOTZEKO ETA INPRIMATZEKO Aukera hauei ezker ordenagailua eta erabiltzailearen arteko elkarrekintza bermatzen dugu pantailaƟk balioak eskatzeko. Era horretan programak behar dituen balioak kodean sartu beharrean kontsolaƟk 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. 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 texƩoshow (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) KontsolaƟk 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. 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 hitzeƟk 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 beƟ 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 bateƟk irakurri. c. Fitxategian idatzi. d. Hurrengo lerro/erregistrora pasa. e. Fitxategia itxi. Ikusten denez guk liburu batekin egiten dugunaren antzekoa da.
  • 66. 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. 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 zaƟ bat da. ZaƟ 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:UsersandoniPicturesvioletpaisaia.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. 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 zaƟak 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 arƟsƟkoak 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. 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.