Está en la página 1de 35

Programazioa

Karel Robota
2.1
(Apunteak eta Ariketak)

Dokumentu honek programak egiteko oso


oinarrizkoak diren kontzeptuak irakasten ditu.
Horretarako tutoretza-sistema erabiltzen da.
Ikasleak egin behar duena zera da: dokumentua
arretaz joan irakurtzen eta, irakurritakoa
ordenagailuan gauzatu. Gainera, hainbat ariketa
agertzen dira ikasleak egiteko. Ariketa bakoitza
bukatzen denean irakasleari erakutsi beronek
ondo dagoen ala ez ikusteko.
Dokumentu honetan agertzen diren azalpenak
Csar Cepedak sortutako Karel 2.1
simulagailurako dira, gaztelaniazko
bertsioetarako (euskarazko bertsioa ez dago
eta). Simulagailu hau Mexikoko Informatika
Olinpiadan simulagailu ofiziala izan da.

Aurkibidea:
00.- Sarrera
01.- Karel robotaren oinarrizko mundua
02.- Karel robotaren oinarrizko aginduak
03.- Programa exekutatu
04.- Programaren akatsak zuzendu
05.- Oinarrizko agindu berriak
06.- Karel robotaren mundu aurreratua
07.- Baldintzapeko aginduak
08.- Baldintzapeko agindu aurreratua
09.- Agindu errepikakorra
10.- Agindu errepikakor aurreratua
11.- Baldintza aurreratuak
12.- Agindu berriak sortu
13.- Iruzkinak
14.- Agindu laburpena

Bibliografia:
Karel the Robot: a Gentle Introduction to the Art of Programming with Pascal
John Wiley & Sons
Richard Pattis

Karel OMI 1.2


Csar Cepeda
Karel OMI 1.2 simulagailuak pantailan eskainitako laguntza

00.- Sarrera
Informatika gaiari buruz berba egiten dugunean bereizketa bat egin behar dugu; izan
ere, bi informatika mota daudela esan dezakegu:
- Erabiltzaile Informatika:
Informatika mota honetan informatikaren erabileran jartzen da arreta. Testu
prozesadorea, kalkulu orria, posta elektronikoa eta beste edozein programa
erabiltzen dituen pertsonak informatikaren erabiltzaileak direla esaten da. Beste
era batean esanda, pertsona hauek informatika erabili egiten dute.
- Informatika Profesionala:
Informatika mota honetan arreta ez da erabileran jartzen. Izan ere, arreta
programen sorkuntzan jartzen da. Testu prozesadorea, kalkulu orria eta beste
edozein programa sortzen dituen pertsonak informatikariak direla esaten da, edo
informatika profesionalean egiten dutela lan. Beste era batean esanda, pertsona
hauek informatika edo programak sortu egiten dituzte.
Gu ohituta gaude informatika programak erabiltzen (testu prozesadorea, marrazketa
programak,...). Bada, ikasgai honetan, programa horiek zelan egiten diren ikusiko dugu. Egia
esanda, hemen ikusiko duguna oso oinarrizkoa izango da eta, beraz, ikasitakoak ez digu
halako programak egiteko balio izango; baina informatikarekin lotutako goi edo erdi mailako
ikasketak (ingeniaritza batzuk, lanbide heziketa ziklo batzuk,...) egiteko asmoa baldin
badaukagu, hemen ikasitakoa baliagarria izan daiteke.
Informatika programak agindu multzo batez osatutako testuak dira. Agindu horiek
ordenagailuak zer egin behar duen zehazteko balio dute. Adibidez, testu prozesadore
gehienetan badago botoi bat aukeratutako testua letra lodiz jartzeko; bada, testu prozesadorea
egin duen pertsonak agindu bat jarri du programan erabiltzaileak botoi hori sakatzean testua
lodiz agertzeko.
Aipatutako aginduak idazteko ordenagailuak ulertzen duen hizkuntza bat erabili behar
da. Kontuan hartu ordenagailuak ez duela ulertzen gizakiok erabili ohi ditugun hizkuntzak.
Ordenagailuaren barrua zirkuitu elektronikoz osatuta dago eta zirkuitu horietatik korrontea
dabil. Hobeto esanda, instant bakoitzean bi gauza gerta daitezke: korrontea ibiltzea edo
korrontea ez ibiltzea. Hori da, esaterako, bonbila batean gertatzen dena: bonbila piztean
korrontea dabil eta bonbila itzaltzean korronteak ibiltzeari lagatzen dio. Korrontea dabilela
adierazteko 1 ikurra erabiltzen da eta korrontea ez dabilela adierazteko 0 ikurra. Adibidez, A
tekla sakatzean teklatutik hainbat korronte seinale bidaltzen zaizkio ordenagailuari
izugarrizko abiadurarekin; bidalitako korronte seinaleak honako hauek dira: lehenengo
instantean ez zaio korronterik bidaltzen, hurrengo instantean korrontea bidaltzen zaio,
hurrengoan ez, hurrengoan ez, hurrengoan ez, hurrengoan ez, hurrengoan ez, eta hurrengoan
bai, eta hau adierazteko 01000001 bidali dela esaten da (0 ikurrak korronterik ez dela bidali
esan nahi du eta 1 ikurrak korrontea bidali dela). Beraz, gizakion hizkuntzan A letra dena,
ordenagailuen hizkuntzan 01000001 da.

Beraz, informatika programa batek halako itxura eduki dezake, kontuan hartuta
programa handi batek, esaterako testu prozesadore batek, milioi batzuk lerro eduki ditzakeela:
01101101 11100110
11110110 00111010
------- ------01010111 11001011

01011100
11101100
------00111001

Informatikari batentzat oso zaila izango litzateke halako programak idaztea,


ordenagailuen hizkuntza eta gurea oso ezberdinak direlako. Horregatik, informatika enpresa
batzuek programa berezi batzuk egiten dituzte (itzultzaileak edo konpiladoreak izenekoak)
informatikariek gizakiongandik gertuago den hizkuntza batean idazteko; gero, programa
berezi hauek ordenagailuen hizkuntzara itzulpena egiten dute. Esaterako, data eta ordua
erakusten dituen programa sinple batek halako itxura eduki dezake:
On Error Resume Next
OrdenagailuIzena = "."
Set WMIZerbitzua = GetObject("winmgmts:" & _
"{impersonationLevel=impersonate}!\\" & OrdenagailuIzena & "\root\cimv2")
Set DataOrduaBilduma = WMIZerbitzua.ExecQuery("Select * from Win32_LocalTime")
For Each DataOrdua in DataOrduaBilduma
Urtea = DataOrdua.Year
If DataOrdua.Month < 10 Then
Hilabetea = "0" & DataOrdua.Month
Else
Hilabetea = DataOrdua.Month
End If
If DataOrdua.Day < 10 Then
Eguna = "0" & DataOrdua.Day
Else
Eguna = DataOrdua.Day
End If
If DataOrdua.Hour < 10 Then
Ordua = "0" & DataOrdua.Hour
Else
Ordua = DataOrdua.Hour
End If
If DataOrdua.Minute < 10 Then
Minutua = "0" & DataOrdua.Minute
Else
Minutua = DataOrdua.Minute
End If
If DataOrdua.Second < 10 Then
Segundua = "0" & DataOrdua.Second
Else
Segundua = DataOrdua.Second
End If
Wscript.Echo Urtea & "-" & Hilabetea & "-" & Eguna & "
" & _
Ordua & ":" & Minutua
& ":" & Segundua
Next
Wscript.Quit

Aurreko programa oso sinplea da (martxan jarriz gero, irudian ikusten den moduan,
data eta ordua erakutsi besterik ez du egiten). Baina programa konplexu batek, adibidez testu
prozesadore batek, milioi lerro batzuk eduki ditzake:

Informatikari batentzat, aurreko programa ulergarriagoa da bestea baino. Beraz,


informatikariek aurreko hizkuntza batean idazten dituzte beraien programak eta gero,
konpiladoreak erabiliz, programa horiek ordenagailuen hizkuntzara itzultzen dituzte.
0 eta 1 ikurrez osatutako programak behe mailako programazio lengoaian idatzita
daude. Aurreko programa goi mailako programazio lengoaian idatzita dago. Beraz,
konpiladoreak zera egiten du: goi mailako programazio lengoaian idatzia dagoen programa
bat behe mailako programazio lengoaian idatzia dagoen bat bihurtu.
Goi mailako programazio lengoaia ezberdinak daude. Nahiz eta oso antzekoak izan,
egon badaude ezberdintasun batzuk haien artean, batez ere, sintaxia kontuan hartuta. Besteak
beste, honako hauek dauzkagu: Basic, C, C++, Pascal, Cobol, Java, Ajax,... Halako lengoaia
bat menperatzen badugu gainerakoak berehala ikasten dira.
Dena den, guk ez dugu aurreko programazio lengoaiarik ikasiko denbora asko beharko
baikenuke. Ikasiko duguna robot baten programazioa izango da: Karel
robota. Karel
robotaren programazioa, programazioaren oinarrizko ikastaro gisa erabiltzen da unibertsitate
batzuetan, oso erraza delako eta robot horren programazioa ikasita errazago ikasten direlako
Basic, C, C++, Pascal, Cobol, Java, Ajax eta antzeko lengoaiak. Gainera, egindako
programak ondo dauden ikusteko simulagailu bat erabiliko dugu.

01.- Karel robotaren oinarrizko mundua


Karel robota oso robot sinplea da. Robot horrek motor bat dauka mugitu ahal izateko.
Leku batetik bestera mugitzeko gune bat dauka eta gune horrek hainbat kale eta hainbat
etorbide dauzka:

Kaleak

Karel

Etorbideak
Kaleak mendebaldetik ekialdera doaz eta etorbideak hegoaldetik iparraldera. Aurreko
irudian, esaterako 18 kale eta 22 etorbide ikus daitezke eta Karel 4. kalean eta 22. etorbidean
dago kokatuta.

Karel iparraldeari, hegoaldeari, ekialdeari eta mendebaldeari begira jarri daiteke.


Horrek esan nahi du ezin dela jarri, esaterako, ipar-ekialdeari begira. Aurreko irudian, Karel
iparraldera begira dago.

Ariketa01
1.- Ireki Karel simulagailua.

2.- Aktibatu Mundo fitxa aktibatuta ez badago. Beheko aldean Karel robotaren
mundua agertzen da, bera kaleak eta etorbideak dauzkala.
3.- Kokatu Karel ekialdera begira eta 5. kalean eta 7. etorbidean. Hori egiteko,
aipatutako kokalekuan egin klik eskumako botoiaz eta Situar a Karel menuko
Orientado al este hautatu.
4.- Gorde sortutako mundua zuen karpeta pertsonalean Guardar como botoia
sakatuz eta Ariketa01 izena jarri.
5.- Ireki zuen karpeta pertsonala ea agertzen den gordetako mundua. Ondo egin
badugu Ariketa01.MDO izeneko fitxategia agertuko da (MDO letrek mundua
dela adierazten dute).
6.- Itxi karpeta pertsonala eta itxi Karel simulagailua.

02.- Karel robotaren oinarrizko aginduak


Karel robota oinarrizko agindu batzuk betetzeko gai da. Zehatz-mehatz honako hauek
dira aipatutako aginduak:

- avanza
Agindu honen bidez, Karel robotak kale bat aurreratzen du (ekialdera edo
mendebaldera begira baldin badago) edo etorbide bat (iparraldera edo
hegoaldera begira baldin badago).
- gira-izquierda
Agindu honen bidez, Karel robotak ezkerraldera biratu egiten du 90, hau da,
iparraldera begira baldin badago, mendebaldera begira jarriko da.
- apagate
Agindu honen bidez, Karel robotak bere motorra gelditu egiten du, hau da, itzali
egiten da.

Ariketa01a
1.- Ireki Karel simulagailua.

2.- Aktibatu Mundo fitxa aktibatuta ez badago eta ireki aurreko ariketan gordetako
Ariketa01.MDO izeneko mundua Abrir botoia sakatuz.
2.- Aktibatu Programa fitxa aktibatuta ez badago. Beheko aldean programak
idazteko gunea agertzen da.
3.- Orain gure lehenengo programa idatziko dugu. Programa honen bidez, Karel
robotak bi aldiz mugitu beharko du aurrerantz eta ezkerrera behin biratu. Hau da,
idatzi beharrekoa honako hau da (kontuan hartu agindu bakoitzaren ostean beti
puntu eta koma idatzi behar dela):
avan za;
avan za;
g ira-izq u ierd a;
ap ag ate;

5.- Gorde sortutako programa zuen karpeta pertsonalean Guardar botoia sakatuz eta
Ariketa01 izena jarri.

6.- Ireki zuen karpeta pertsonala ea agertzen den gordetako programa. Ondo egin
badugu Ariketa01 izeneko fitxategia agertuko da.
7.- Itxi karpeta pertsonala eta itxi Karel simulagailua.

03.- Programa exekutatu


Programa bat idatzi ondoren probatu egin behar da ea egiten duen egin behar zuena.
Honi programa exekutatzea edo programa martxan jartzea deitzen zaio.

Ariketa01b
1.- Ireki Karel simulagailua, ireki Ariketa01 mundua eta Ariketa01 programa.
2.- Aktibatu Ejecutar fitxa.

3.- Ezkerreko leihoan guk idatzitako programa agertzen da eta eskumakoan guk
sortutako mundua. Bada, orain probatu egin behar dugu idatzitako programa ea
egiten duen guk nahi genuena. Hori egiteko Correr (exekutatu) botoia sakatu.

4.- Aurreko leihoa agertzen bada, horrek esan nahi du programa ez dugula konpilatu.
Sakatu OK botoia.
Aurreko atal batean aipatu dugunez, ordenagailuak (edo robotak) zirkuitu
elektronikoz osatutako gailuak dira eta 0 eta 1 ikurrez osatutako aginduak besterik
ez dute ulertzen. Beraz, guk idatzitako programa Karel robotak ulertzen duen

hizkuntzara itzuli, hau da, konpilatu behar da. Hori egiteko Programa fitxa
aktibatu eta Pascal aukera aktibatuta Compilar
botoia sakatu. Programa
compilado mezua agertzen denean OK sakatu.
5.- Aktibatu berriro Ejecutar fitxa eta Correr botoia sakatu.
Ikusten denez, Karel robotak ez du ezer egin. Horrek esan nahi du gure programa
ez dagoela ondo. Kontua da, idatzitako aginduen aurrean eta ostean azpiagindu
batzuk jarri behar direla adierazteko programaren hasiera eta bukaera. Hori
programa guztietan jarri beharreko gauza da. Beraz, Programa fitxa aktibatu eta
gehitu ondoko lerroak:
IN IC IA R -P R O G R A M A
IN IC IA -EJEC U C IO N
avan za;
avan za;
gira-izq u ierd a;
ap ag ate;
TER M IN A -EJEC U C IO N
FIN A LIZ A R -P R O G R A M A

6.- Guardar botoia sakatu baina, zoritxarrez, botoi horrek batzuetan ez du ondo
funtzionatzen eta ondoko leihoa erakusten digu:

Hori gertatuz gero, Ados botoia sakatu aurreko leihoa ixteko, Guardar como
botoia sakatu eta berriro Guardar botoia sakatu. Fitxategiaren izena berriro
eskatuko digunez berriro zehaztuko dugu izena, hau da, Ariketa01.
7.- Compilar botoia sakatu berriro itzultzeko Karel
hizkuntzara.
8.- Aktibatu berriro Ejecutar fitxa eta Correr botoia sakatu.

robotak ulertzen duen

Ikusi dugunez,gure programak guk nahi genuena egin du. OK botoia sakatu.
9.- Berriro exekutatuko dugu, baina orain polikiago. Inicializar
Retardo de ejecucin laukian 2000 jarri eta Correr sakatu.

botoia sakatu,

10.- Berriro exekutatuko dugu, baina orain aginduz agindu. Inicializar botoia sakatu,
Retardo de ejecucin laukian 500 jarri berriro eta Adelante joan sakatzen bukatu
arte.
11.- Itxi Karel simulagailua.

04.- Programaren akatsak zuzendu


Oso ohikoa da programa batean, lehenengo aldian probatzean, akatsak aurkitzea.
Akatsak bi motatakoak izan daitezke. Adibidez, avanza agindua idatzi barik avanzar idazten
badugu Karel robotak ez du ulertuko avanza hitza ulertzeko programatutako robota delako
eta ez avanzar hitza. Beraz, oso zehatzak izan beharko dugu idazterako orduan. Beste akats
bat gerta daiteke; izan ere, programa ondo idatzia izan daiteke baina probatzen dugunean
robotak ez du egiten guk nahi genuena.

Ariketa01c
1.- Ireki Karel simulagailua, ireki Ariketa01 mundua eta Ariketa01 programa.
2.- Aldatu lehenengo avanza hitza eta jarri avanzar.
3.- Compilar botoia sakatu.

3.- Aurreko leihoak akats bat dagoela adierazten digu, avanzar


ulertzen. Sakatu OK botoia eta itxi Karel simulagailua.

hitza ez duela

Ariketa02
1.- Ireki Karel simulagailua.
2.- Sortu mundu berri bat, jarri Karel iparraldera begira 2. kalean eta 2. etorbidean.
Gorde mundua Ariketa02 izena jarriz.

3.- Sortu programa berri bat Karel eskumara biratzeko, hau da, ekialdera begira
geratzeko.
4.- Probatu programa funtzionatu arte. Funtzionatzen duenean gorde programa
Ariketa02 izena jarriz eta itxi Karel simulagailua.

Ariketa03
1.- Ireki Karel simulagailua.
2.- Sortu mundu berri bat, jarri Karel ekialdera begira 1. kalean eta 1. etorbidean.
Gorde mundua Ariketa03 izena jarriz.
3.- Sortu programa berri bat Karel 10. etorbidera joateko. Etorbide horretan iristean
2. kalera igo eta itzuli 1. etorbidera, hau da, egin beharreko ibilbidea honako hau
da:

4.- Probatu programa funtzionatu arte. Funtzionatzen duenean gorde programa


Ariketa03 izena jarriz eta itxi Karel simulagailua.

Ariketa04
1.- Ireki Karel simulagailua.
2.- Sortu mundu berri bat, jarri Karel ekialdera begira 1. kalean eta 1. etorbidean.
Gorde mundua Ariketa04 izena jarriz.
3.- Sortu programa berri bat Karel 10. kalera eta 10. etorbidera joateko diagonal
lerroa jarraituz, hau da, egin beharreko ibilbidea honako hau da:

4.- Probatu programa funtzionatu arte. Funtzionatzen duenean gorde programa


Ariketa04 izena jarriz eta itxi Karel simulagailua.

05.- Oinarrizko agindu berriak


Aurreko atal batean Karel robotaren oinarrizko aginduak ikusi genituen (avanza,
gira-izquierda eta apagate). Bada, Karel robota beste agindu batzuk ulertzeko gai da.
Robotak motxila bat dauka eta motxilaren barruan burrunbagailuak (soinuak ateratzeko
gailuak). Karel gai da burrunbagailuak motxilatik ateratzeko eta lurrean lagatzeko, baita
lurretik hartzeko eta motxilan sartzeko ere.
Zehazki honako hauek dira agindu berriak:
- coge-zumbador
Agindu honen bidez, Karel robotak lurretik hartuko du burrunbagailua eta
motxilan sartuko du.
- deja-zumbador
Agindu honen bidez, Karel robotak motxilatik hartuko du burrunbagailua eta
lurrean lagako du.

Ariketa05
1.- Ireki Karel simulagailua.
2.- Sortu mundu berri bat, jarri Karel iparraldera begira 1. kalean eta 1. etorbidean.
Horretaz gain, zehaztuko dugu robotak 8 burrunbagailu dauzkala bere motxilan
Zumbadores en la mochila laukian. Gorde mundua Ariketa05 izena jarriz.
3.- Sortu programa berri bat. Programa honetan Karel robotak hainbat
burrunbagailua laga egin beharko ditu leku zehatz batzuetan (ondoko irudian
agertzen den moduan). Gainera, burrunbagailu guztiak laga ondoren Karel
robotak hasierako lekura joan beharko du:

4.- Probatu programa funtzionatu arte.


5.- Egin aldaketa bat 1. kalean eta 2. etorbidean 3 burrunbagailu lagatzeko eta
probatu programa.
6.- Ikusi dugunez, akats bat gertatu da:

Izan ere, mundua sortu genuenean 8 burrunbagailu zeuzkala zehaztu genuen eta
orain 10 behar ditu. Beraz, Mundo fitxa aktibatu eta jarri 10 Zumbadores en la
mochila laukian
7.- Probatu programa funtzionatu arte. Funtzionatzen duenean gorde programa
Ariketa05 izena jarriz eta itxi Karel simulagailua.

Ariketa06
1.- Ireki Karel simulagailua.
2.- Sortu mundu berri bat, jarri Karel iparraldera begira 1. kalean eta 1. etorbidean.
laukian. Horretaz gain hainbat burrunbagailu jarri beharko ditugu hainbat lekutan
(ondoko irudian agertzen den moduan). Burrunbagailuak jartzeko nahi dugun
kalean eta etorbidean egin klik eskumako botoiaz eta hautatua zenbat
burrunbagailu laga nahi dugun aipatutako lekuan. Gorde mundua Ariketa06 izena
jarriz.

3.- Sortu programa berri bat. Programa honetan Karel robotak burrunbagailu guztiak
hartu egin beharko ditu eta beste leku batzuetan laga (ondoko irudian agertzen den
moduan). Gainera, burrunbagailu guztiak laga ondoren Karel robotak hasierako
lekura joan beharko du:

4.- Probatu programa funtzionatu arte. Funtzionatzen duenean gorde programa


Ariketa06 izena jarriz eta itxi Karel simulagailua.

06.- Karel robotaren mundu aurreratua


Karel robotaren munduari beste osagai bat gehituko diogu. Izan ere, kale eta
etorbideen artean hormak jarri ditzakegu. Karel robotak ezin ditu hormak zeharkatu. Are
gehiago, horma baten aurrean baldin badago eta avanza agindua eman badiogu akats bat
gertatuko da.
Horma bat jarri nahi badugu etorbide batean klik egin behar dugu grisez koloreko
laukitxoetan. Kale batean jartzeko gauza bera egin behar da baina zuriz koloreko laukitxoetan.

Ariketa07
1.- Ireki Karel simulagailua.
2.- Sortu mundu berri bat ondoko irudian agertzen den moduan. Mundu horretan
Karel esparru itxi batean dago, baina ate bat dauka esparru horretatik irten ahal
izateko (5. kalean). Gorde mundua Ariketa07 izena jarriz.

3.- Sortu programa berri bat ondoko lerro hauekin:


IN IC IA R -P R O G R A M A
IN IC IA -EJEC U C IO N
avan za;
ap ag ate;
TER M IN A -EJEC U C IO N
FIN A LIZ A R -P R O G R A M A

4.- Probatu programa ea zer gertatzen den.


5.- Ikusi dugunez, akats bat gertatu da. Izan ere, Karel robotak horma batekin egin du
topo eta ezin du zeharkatu.

6.- Ezabatu aurreko programa.

7.- Sortu programa berri bat. Programa honetan Karel robotak esparrutik atera,
burrunbagailu guztiak hartu eta hasierako lekura itzuli egin behar du.
8.- Probatu programa funtzionatu arte. Funtzionatzen duenean gorde programa
Ariketa07 izena jarriz eta itxi Karel simulagailua.

07.- Baldintzapeko aginduak


Aurreko atal batean Karel robotaren oinarrizko aginduak ikusi genituen (avanza,
gira-izquierda eta apagate). Geroago bi agindu berri ikusi genituen (coge-zumbador eta
deja-zumbador). Atal honetan agindu berria ikasiko dugu. Agindu berri hau apur bat berezia
da besteekin konparatuz gero. Izan ere, aurreko aginduak oinarrizkoak baldin baziren,
oraingoa agindu aurreratua da: baldintzapeko agindua.
Agindu honen bidez, Karel robotari zerbait egiteko agin diezaiokegu baldintza baten
arabera. Esaterako, burrunbagailu bat hartzeko baldin burrunbagailurik badago.
Baldintzapeko aginduak honako itxura hau dauka:
S I < b aldin tza> EN TO N C ES
IN IC IO
< agin d u 1> ;
< agin d u 2> ;
--------< agin d u N > ;
FIN ;

, < ag ind u 2>eta < ag in d u N >jarri barik


< ag in d u 1>

oinarrizko aginduak jarri beharko


genituzke (avanza, gira-izquierda, apagate, coge-zumbador eta deja-zumbador) edo gero
ikusiko ditugun agindu berriak.
Karel robotak detektagailu batzuk dauzka. Adibidez, iparrorratz bat dauka
detektatzeko nora dagoen begira, soinu sentsore bat dauka burrunbagailu baten gainean
dagoen ala ez jakiteko, eta izpi infragorrien bidez gai da horma baten aurrean dagoen ala ez.
Detektagailu hauen bidez aukera daukagu aurreko aginduan < b ald in tza> jarri barik honako
hitz hauek jartzeko:
orientado-al-n orte n o-orien tad o-al-n orte
orientado-al-oeste n o-orien tad o-al-oeste
orientado-al-su r n o-orien tad o-al-sur
orientado-al-este n o-orientado-al-este
fren te-lib re fren te-b loq u ead o
izqu ierd a-lib re izq u ierd a-bloq u eada
d erecha-libre derech a-bloq u ead a
ju nto-a-zu m b ad or no-ju n to-a-zum bad or
alg u n -zu m b ad or-en -la-m och ila n in g u n-zu m b ad or-en -la-m och ila

Adibidez, eman dezagun egin behar dugula programa bat jartzeko Karel ekialdera
begira, baina ez dakigula zein den hasierako egoera, hau da, hasieran Karel iparraldera,
ekialdera, hegoaldera edo mendebaldera begira egon daiteke. Bada, gure programan halako
aginduak jarri beharko genituzke:
S I orientado-al-n orte EN TO N C ES
IN IC IO
g ira-izqu ierd a;
g ira-izqu ierd a;
g ira-izqu ierd a;
FIN ;
S I orientado-al-oeste EN TO N C ES
IN IC IO
g ira-izqu ierd a;
g ira-izqu ierd a;
FIN ;
S I orientado-al-su r EN TO N C ES
IN IC IO
g ira-izqu ierd a;
FIN ;

Karelek hiru agindu hauek beteko ditu baldin eta


une horretan iparraldera begira badago. Bestela
ez ditu beteko.

Karelek bi agindu hauek beteko ditu baldin eta


une horretan mendebaldera begira badago.
Bestela ez ditu beteko.
Karelek agindu hau beteko du baldin eta une
horretan hegoaldera begira badago. Bestela, ez du
beteko.

Gainera, baldintzapeko agindu baten barruan nahi beste baldintzapeko agindu jarri
ditzakegu, adibidez, ondoko adibidean agertzen den moduan:
S I fren te-lib re EN TO N C ES
IN IC IO
avan za;
S I ju n to-a-zu m bador EN TO N C ES
IN IC IO
cog e-zu m b ad or;
FIN ;
g ira-izqu ierd a;
FIN ;

Ariketa08
1.- Ireki Karel simulagailua.
2.- Sortu programa berri bat Karel iparraldera begira jartzeko; kontuan hartu ez
dakigula zein den hasierako egoera, hau da, hasieran ez dakigula nora begira
dagoen.
3.- Mundo fitxan jarri Karel ekialdera begira eta exekutatu programa. Egiaztatu
programak ondo funtzionatu duen, hau da, Karel iparraldera begira geratu den.
4.- Mundo fitxan jarri Karel hegoaldera begira eta exekutatu programa. Egiaztatu
programak ondo funtzionatu duen, hau da, Karel iparraldera begira geratu den.
5.- Mundo fitxan jarri Karel mendebaldera begira eta exekutatu programa. Egiaztatu
programak ondo funtzionatu duen, hau da, Karel iparraldera begira geratu den.

6.- Mundo fitxan jarri Karel iparraldera begira eta exekutatu programa. Egiaztatu
programak ondo funtzionatu duen, hau da, Karel iparraldera begira geratu den.
7.- Errepikatu 3, 4, 5, 6 urratsak baina exekutatzeko erabili Adelante botoia eta
begiratu ezkerraldean agertzen den leihoari hor agertzen baitira zeintzuk diren
robotak exekutatzen dituen aginduak.
8.- Gorde programa Ariketa08 izena jarriz eta itxi Karel simulagailua.

Ariketa09
1.- Ireki Karel simulagailua.
2.- Sortu programa berri bat ondoko baldintzak jakinda:
- Karel ekialdera begira egongo da 1. kalean eta 1. etorbidean.
- Karelek 1. kaletik 10. etorbidera joan beharko du baina bidean topo egin
dezake horma batekin.
- Etorbide batean horma batekin topo eginez gero hor geldituko da (itzali
egingo da), 10. etorbidera iritsi barik.
3.- Mundo fitxan jarri Karel 1. kalean eta 1. etorbidean eta ekialdera begira. Probatu
programa ondo funtzionatu arte.
4.- Mundo fitxan jarri Karel 1. kalean eta 1. etorbidean eta ekialdera begira. 5. eta 6.
etorbideen artean jarri horma bat. Probatu programa ondo funtzionatu arte.
5.- Gorde programa Ariketa09 izena jarriz eta itxi Karel simulagailua..

Ariketa10
1.- Ireki Karel simulagailua.
2.- Sortu programa berri bat ondoko baldintzak jakinda:
- Karel ekialdera begira egongo da 1. kalean eta 1. etorbidean.
- 1. kaletik 10. etorbidera joan beharko du.
- Bidean aurkitutako burrunbagailu guztiak jaso beharko ditu.
- Kontuan hartu, aldez aurretik, Karelek
ez dakiela non egongo diren
burrunbagailuak, baina leku batean burrunbagailurik egonez gero bakarra
izango dela.
3.- Mundo fitxan jarri Karel 1. kalean eta 1. etorbidean eta ekialdera begira. 1.
kalean zehar jarri hainbat burrunbagailu (leku bakoitzean bat jarri gehienez).

4.- Probatu programa ondo funtzionatu arte. Funtzionatzen duenean gorde programa
Ariketa10 izena jarriz eta itxi Karel simulagailua.

08.- Baldintzapeko agindu aurreratua


Atal honetan agindu berria ikasiko dugu. Egia esan, ez da hain berria izango; izan ere,
baldintzapeko aginduaren gehigarria baita.
Agindu honen bidez, Karel robotari zerbait egiteko edo ez egiteko agin diezaiokegu
baldintza baten arabera. Esaterako, lurrean burrunbagailu bat baldin badago hartzeko agindua
eman diezaiokegu eta burrunbagailurik ez badago bere motxilan daukan bat lurrean lagatzeko.
Baldintzapeko agindu aurreratuak honako itxura hau dauka:
S I < b aldin tza> EN TO N C ES
IN IC IO
< agin d u A 1> ;
< agin d u A 2> ;
---------< agin d u A N > ;
FIN
S IN O
IN IC IO
< agin d u B 1> ;
< agin d u B 2> ;
---------< agin d u B N > ;
FIN ;

Aurreko aginduak zera adierazten du: < b aldin tza> betetzen bada, lehenengo IN IC IO
eta FIN ataleko aginduak beteko ditu Karelek eta, bestela, bigarren atalekoak.

Ariketa11
1.- Ireki Karel simulagailua.
2.- Sortu programa berri bat ondoko baldintzak jakinda:
- Karel ekialdera begira egongo da 1. kalean eta 1. etorbidean.
- Motxilan 10 burrunbagailu edukiko ditu gutxienez.
- 1. kaletik 10. etorbidera joan beharko du.
- Etorbide bakoitzean burrunbagailurik dagoen ala ez begiratu beharko du.
Burrunbagailurik baldin badago hartu egin beharko du. Burrunbagailurik ez
badago bere motxilatik hartu eta lurrean laga egin beharko du.
3.- Mundo fitxan jarri Karel 1. kalean eta 1. etorbidean eta ekialdera begira. 1.
kalean zehar jarri hainbat burrunbagailu (leku bakoitzean bat jarri gehienez).

4.- Probatu programa ondo funtzionatu arte. Funtzionatzen duenean gorde programa
Ariketa11 izena jarriz eta itxi Karel simulagailua.

09.- Agindu errepikakorra


Atal honetan beste agindu berri bat ikasiko dugu. Agindu honen bidez, Karel robotari
zerbait egiteko agin diezaiokegu behin eta berriro. Esaterako, Karel 1. etorbidetik 30.
etorbideraino joatea nahi badugu 30 avanza jarri beharko genituzke. Hori saihesteko agindu
errepikakorra dugu.
Agindu errepikakorrak honako itxura hau dauka:
R EP ETIR < zen b akia> V EC ES
IN IC IO
< agin d u 1> ;
< agin d u 2> ;
--------< agin d u N > ;
FIN ;
< zen b akia>jarri barik zenbat aldiz errepikatu nahi dugun adierazten duen zenbakia
beharko genuke. < ag ind u 1>, < ag in d u 2>eta < ag ind u N >jarri barik orain arte ikusitako

jarri
aginduak jarri beharko genituzke (avanza, gira-izquierda, apagate, coge-zumbador, dejazumbador eta SI) edo gero ikusiko dugun beste agindu bat.

Adibidez, eman dezagun Karel 1. etorbidetik 30. etorbideraino joatea nahi dugula.
Bada, gure programan halako aginduak jarri beharko genituzke:
R EP ETIR 30 V EC ES
IN IC IO
avan za;
FIN ;

Karelek 30 aldiz errepikatuko du agindu hau.

Ariketa12
1.- Ireki Karel simulagailua.
2.- Agindu errepikakorra erabiliz sortu programa berri bat Karel 1. kaletik eta 1.
etorbidetik 10. kalera eta 10. etorbidera joateko diagonal lerroa jarraituz, hau da,
egin beharreko ibilbidea honako hau da:

3.- Probatu programa ondo funtzionatu arte.


4.- Probatu berriro programa baina Adelante botoia erabiliz ezkerraldean agertzen
den leihoari begiratuz hor agertzen baitira zeintzuk diren robotak exekutatzen
dituen aginduak.
5.- Gorde programa Ariketa12 izena jarriz.
6.- Programa hau Ariketa04 izeneko ariketan egin genuen. Ireki zuen karpeta
pertsonala eta ireki Ariketa04 eta Ariketa12. Ikus daitekeenez, agindu
errepikakorra erabiliz programa askoz ere sinpleagoa da. Itxi bi fitxategiak.

Ariketa13
1.- Ireki Karel simulagailua.
2.- Sortu mundu berri bat, jarri Karel iparraldera begira 1. kalean eta 1. etorbidean.
Horretaz gain hainbat burrunbagailu jarri beharko ditugu hainbat lekutan (ondoko
irudian agertzen den moduan). Gorde mundua Ariketa13 izena jarriz.

3.- Agindu errepikakorra erabiliz sortu programa berri bat Karelek burrunbagailu
guztiak hartzeko.
4.- Probatu programa ondo funtzionatu arte. Funtzionatzen duenean gorde programa
Ariketa13 izena jarriz eta itxi Karel simulagailua.

Ariketa14
1.- Aurreko ariketa egitean 2 agindu errepikakor baino gehiago erabili badituzu saiatu
egiten ariketa bera baina 2 agindu errepikakor erabiliz. Kontuan hartu agindu
errepikakor baten barruan jarri dezakegula beste agindu errepikakor bat, hau da,
oso ohikoa da halako egiturak:
R EP ETIR 30 V EC ES
IN IC IO
avan za;
R EP ETIR 5 V EC ES
IN IC IO
cog e-zum bad or;
FIN ;
FIN ;

3.- Probatu programa ondo funtzionatu arte. Funtzionatzen duenean gorde programa
Ariketa14 izena jarriz eta itxi Karel simulagailua.

10.- Agindu errepikakor aurreratua


Atal honetan beste agindu berri bat ikasiko dugu. Agindu honen bidez, Karel robotari
zerbait egiteko agin diezaiokegu behin eta berriro. Aurreko agindu errepikakorrarekin
konparatuz, oraingo aginduak ez du balio errepikatzeko guk zenbaki baten bidez zehaztutako
aldiak. Izan ere, oraingoan aginduak errepikatu egingo dira baldintza bat betetzen den
bitartean (adibidez avanza horma ez dagoen bitartean).
Agindu errepikakor aurreratuak honako itxura hau dauka:
M IEN TR A S < b aldin tza> H A C ER
IN IC IO
< agin d u 1> ;
< agin d u 2> ;
Karelek, <baldintza> betetzen den bitartean agindu
--------hauek beteko ditu.
< agin d u N > ;
FIN ;

Kontuan hartu < ag in d u 1>, < ag in d u 2>, eta < ag ind u N >Karel robotak ezagutzen duen
beste edozein agindu izan daitekeela. Beraz, programa konplexuetan oso ohikoak dira halako
egiturak:
M IEN TR A S fren te-lib re H A C ER
IN IC IO
R EP ETIR 5 V EC ES
IN IC IO
avan za;
S I algu n -zu m bador-en -la-m och ila EN TO N C ES
IN IC IO
d eja-zum b ad or;
FIN ;
FIN ;
gira-izq u ierd a;

avan za;
gira-izq u ierd a;
FIN ;

Ariketa15
1.- Ireki Karel simulagailua.
2.- Sortu programa berri bat ondoko baldintzak jakinda:
- Karel ekialdera begira egongo da 1. kalean eta 1. etorbidean.
- 1. kaletik joan beharko du horma bat aurkitu arte.
- Horma bat aurkitzen duenean gelditu egingo da.
3.- Mundo fitxan jarri Karel 1. kalean eta 1. etorbidean eta ekialdera begira. 1.
kalean eta 7. eta 8. etorbideen artean jarri horma bat.
4.- Probatu programa ondo funtzionatu arte.
5.- Mundo fitxan jarri Karel 1. kalean eta 1. etorbidean eta ekialdera begira. 1.
kalean, kendu lehen jarritako horma eta jarri beste bat 10. eta 11. etorbideen
artean.
6.- Aurreko programan ezer aldatu barik probatu ea funtzionatzen duen.
Funtzionatzen ez badu errepikatu ariketa osoa; izan ere, programak funtzionatu
behar du horma edozein etorbidetan jarrita.
7.- Gorde programa Ariketa15 izena jarriz eta itxi Karel simulagailua..

Ariketa16
1.- Ireki Karel simulagailua.
2.- Sortu programa berri bat ondoko baldintzak jakinda:
-

Karel ekialdera begira egongo da 1. kalean eta 1. etorbidean.


1. kaletik joan beharko du 3. etorbideraino.
Aurreko lekuan hainbat burrunbagailu egongo dira.
Dauden burrunbagailu guztiak jaso egin behar ditu.

3.- Mundo fitxan jarri Karel 1. kalean eta 1. etorbidean eta ekialdera begira. 1.
kalean eta 3. etorbidean jarri burrunbagailu bat.
4.- Probatu programa ondo funtzionatu arte.

5.- Mundo fitxan jarri Karel 1. kalean eta 1. etorbidean eta ekialdera begira. 1.
kalean eta 3. etorbidean jarri 10 burrunbagailu.
6.- Aurreko programan ezer aldatu barik probatu ea funtzionatzen duen.
Funtzionatzen ez badu errepikatu ariketa osoa; izan ere, programak funtzionatu
behar du edozein burrunbagailu kopuru jarrita.
7.- Gorde programa Ariketa16 izena jarriz eta itxi Karel simulagailua.

Ariketa17
1.- Ireki Karel simulagailua.
2.- Sortu programa berri bat ondoko baldintzak jakinda:
-

Karel ekialdera begira egongo da 1. kalean eta 1. etorbidean.


1. kalean eta ez dakigun zein etorbidetan hainbat burrunbagailu egongo dira.
Karel robotak burrunbagailuak dauden etorbideraino joan beharko du.
Dauden burrunbagailu guztiak jaso egin behar ditu.

3.- Mundo fitxan jarri Karel 1. kalean eta 1. etorbidean eta ekialdera begira. 1.
kalean eta 3. etorbidean jarri burrunbagailu bat.
4.- Probatu programa ondo funtzionatu arte.
5.- Mundo fitxan jarri Karel 1. kalean eta 1. etorbidean eta ekialdera begira. 1.
kalean eta 9. etorbidean jarri 10 burrunbagailu.
6.- Aurreko programan ezer aldatu barik probatu ea funtzionatzen duen.
Funtzionatzen ez badu errepikatu ariketa osoa; izan ere, programak funtzionatu
behar du edozein burrunbagailu kopuru jarrita.
7.- Gorde programa Ariketa17 izena jarriz eta itxi Karel simulagailua..

Ariketa18
1.- Ireki Karel simulagailua.
2.- Sortu mundu berri bat, ondoko irudian agertzen den moduan. Gorde mundua
Ariketa18 izena jarriz.

3.- Agindu errepikakorrak erabiliz, sortu programa berri bat Karel 1. kalera eta 13.
etorbidera joateko eta han dagoen burrunbagailua jasotzeko, baina 1. kaletik
jarraituz ahal den neurrian, hau da, imajina dezakegu hesi-lasterketa bat dela.
Beraz, egin beharreko ibilbidea honako hau da:

Beste era batean esanda, Karel robotak egin behar duena zera da: hesiak jauzi
egin lau aldiz.
4.- Probatu programa funtzionatu arte. Funtzionatzen duenean gorde programa
Ariketa18 izena jarriz eta itxi Karel simulagailua.

11.- Baldintza aurreratuak


Aurreko ataletan baldintzapeko aginduak eta agindu errepikakorrak ikusi ditugu.
Halako agindu batzuetan < b aldin tza> bat zehaztu behar genuen ( orien tado-al-n orte , n o, jun to-a-zu m b ad or,...). Baldintza
orien tad o-al-sur , fren te-lib re , d erecha-b loq u ead a
horiek nahastu egin ditzakegu agindu berean Y (eta), eta O (edo) hitzekin.
Aurrekoaren adibide batzuk honako hauek izan daitezke:
M IEN TR A S fren te-lib re Y n o-ju n to-a-zum bador H A C ER
IN IC IO
avan za;
Karelek, avanza agindua beteko du frente-libre ETA,
FIN ;
aldi berean, no-junto-a-zumbador baldintzak egia
baldin badira.
S I fren te-b loqu ead o O ju n to-a-zu m b ad or EN TO N C ES
IN IC IO
ap ag ate;
Karelek, apagate agindua beteko du frente-bloqueado
FIN ;
EDO junto-a-zumbador baldintzen artean bat,
gutxienez, egia baldin bada.

Ariketa19
1.- Ireki Karel simulagailua.
2.- Sortu programa berri bat ondoko baldintzak jakinda:
- Karel ekialdera begira egongo da 1. kalean eta 1. etorbidean.
- 1. kaletik joan beharko du burrunbagailu bat aurkitu arte. Burrunbagailua
aurkitzean jaso egingo du eta itzali egingo da.
- Bidean hainbat horma aurki ditzake. Horma bat aurkitzean horma hori
saihestu egin behar du kaleak igoz eta berriro kaleak jaitsiz 1. kalera
itzultzeko.
- Kontuan hartu, aldez aurretik, Karel robotak ez daki non dagoen
burrunbagailua, ezta hormak ere.
3.- Mundo fitxan sortu ondoko irudian agertzen den mundu bat (gorde Ariketa19a
izena erabiliz), eta probatu programa ondo funtzionatu arte:

4.- Mundo fitxan sortu ondoko irudian agertzen den mundu bat (gorde Ariketa19b
izena erabiliz), eta programan ezer aldatu barik probatu programa (funtzionatzen
ez badu errepikatu ariketa osoa; izan ere, programak funtzionatu behar du edozein
egoeratan):

5.- Mundo fitxan sortu ondoko irudian agertzen den mundu bat (gorde Ariketa19c
izena erabiliz), eta programan ezer aldatu barik probatu programa (funtzionatzen
ez badu errepikatu ariketa osoa; izan ere, programak funtzionatu behar du edozein
egoeratan):

6.- Gorde programa Ariketa19 izena jarriz eta itxi Karel simulagailua.

12.- Agindu berriak sortu


Karel robota oso robot sinplea da, orain arte ikusi dugun moduan. Izan ere, Karel ez
da gai agindu asko ulertzeko. Adibidez, robotari gira-derecha edo retrocede esaten badiogu
ez digu ulertuko agindu horiek definituak ez dauzkalako.
Aurrekoaren adibide bat ondoko irudian ikus dezakegu:

Irudian ikus daitekeenez, programan, 3. lerroan, gira-derecha idatzi dugu. Compilar


botoia sakatzean El procedimiento GIRA-DERECHA no ha sido previamente definido
mezua agertzen da. Horrek esan nahi du Karel robotak ez duela ulertzen agindu hori eta,
beraz, ezin izango duela programa exekutatu.
Dena den, aurrekoak ez du esan nahi Karel robotak ezin duenik bere burua eskumara
biratu. Izan ere, eskumara biratzeko nahikoa izango da 3 aldiz gira-izquierda jartzea.
Beraz, Karel robotak bere burua eskumara biratzea nahi dugunean ondoko aginduak
idatzi behar ditugu:
g ira-izq u ierda;
g ira-izq u ierda;
g ira-izq u ierda;

Dena den, Karel robotak badauka aukera bat guk agindu berriak sortzeko edo
definitzeko ondoko lerroek adierazten duten moduan:
D EFIN E-N U EVA -IN S TR U C C IO N < n om b re-n u eva-in stru ccin> C O M O
IN IC IO
< agin d u 1> ;
< agin d u 2> ;
--------< agin d u N > ;
FIN ;
< n om b re-n ueva-in stru ccin >agertzen den lekuan agindu berriari eman nahi diogun
izena jarri beharko genuke. Logikoena izen esanguratsua ematea da.

Adibidez, g ira-d erech a agindua sortzeko ondoko irudian agertzen diren lerroak
idatzi beharko genituzke:

Ikus daitekeenez, D EFIN E-N U EVA -IN S TR U C C IO N ...C O hitzak


M O erabili ditugu agindu
berria sortzeko. Izan ere, Karel robota
D EFIN E-N U EVA -IN S TR U C C IO N ...C O ulertzeko
MO
programatuta dago. Programa batean agindu berri bat baino gehiago sor ditzakegu. Agindu
berriak beti IN IC IA R -P R O G R A Meta
A IN IC IA -EJEC U C IO N hitzen artean idatzi behar ditugu.
Behin agindu berria sortuta, programaren hurrengo lerroetan erabili dezakegu aipatutako
agindua. Gainera, agindu berria agindu berriaren barruan erabili dezakegu, hau da,
errekurtsibitatea erabili daiteke ondoko adibidean ikus daitekeenez:
D EFIN E-N U EVA -IN S TR U C C IO N recorre-hab itacion C O M O
IN IC IO
M IEN TR A S d erecha-b loq u ead a Y fren te-lib re H A C ER
IN IC IO
avan za;
FIN ;
S I derech a-lib re EN TO N C ES
IN IC IO
g ira-derech a;
avan za;
ap ag ate;
FIN ;
S I fren te-b loq ueado EN TO N C ES
IN IC IO
g ira-izqu ierd a;
recorre-h ab itacion ;
FIN ;
FIN ;

Agindu berriak sortuz, programak, kasu gehienetan, askoz ere laburragoak izaten dira.
Adibidez, programa konplexu batean Karel robotak bere burua askotan eskumara biratu behar
badu, horrek suposatuko luke gira-izq u ierd a agindu multzo asko idaztea. Agindu berriak
erabiliz, g ira-derech a agindua sor dezakegu ( g ira-izqu ierd a agindua hiru aldiz idatzita).
Behin agindu berria sortuta, hortik aurrera eskumara biratu nahi dugun bakoitzean ez dugu
g ira-izqu ierd a agindua hiru aldiz idatzi behar; izan ere, nahikoa izango da g ira-d erech a
behin idaztea. Beraz, aldez aurretik ikusten badugu Karel robotak agindu multzo bat askotan
errepikatu behar duela, oso komenigarria da agindu berri bat sortzea.

Ariketa20
1.- Ireki Karel simulagailua.
2.- Sortu programa berri bat Karel robota eskumara biratzeko eta atzera joateko bi
agindu berri sortuz.
3.- Mundo fitxan jarri Karel 3. kalean eta 3. etorbidean eta ekialdera begira.
4.- Probatu programa funtzionatu arte. Funtzionatzen duenean gorde programa
Ariketa20 izena jarriz eta itxi Karel simulagailua.

Ariketa21
1.- Ireki Karel simulagailua.
2.- Errepikatu Ariketa19 izeneko ariketa, baina 2 agindu berri sortuz (
eta salta-valla edo evita-m u ro).

g ira-d erech a

3.- Probatu programa funtzionatu arte sortu genituen mundu guztietan (Ariketa19a,
Ariketa19b eta Ariketa19c). Funtzionatzen duenean gorde programa Ariketa21
izena jarriz eta itxi Karel simulagailua.
4.- Ireki zuen karpeta pertsonala eta ireki Ariketa19 eta Ariketa21
fitxategiak. Jarri bata, bestearen ondoan:

izeneko

Bi programek gauza bera egiten dute, hau da, Karel eramaten dute 1. kaletik eta
1. etorbidetik burrunbagailua dagoen lekuraino hesiak saihestuz edo jauzi eginez.
Hala ere, Ariketa21 programa hobeto dago idatzita Ariketa19 programa baino.

Izan ere, IN IC IA -EJEC U C IO N eta TER M IN A -EJEC U C IOartean


dauden aginduak
N
ikusten baditugu errazago ulertzen da Ariketa21 programa (adibidez, sortutako
salta-valla agindua ikusten delako).
Hori, programazio arloan, oso garrantzitsua da; izan ere, oso ohikoa da pertsona
betek egindako programa batean, denboraz, beste pertsona batek aldaketak egin
behar izatea gauza gehiago gehitzeko programari edo, beste barik, hobetzeko.
Halako kasuetan, programa ulergarriagoa baldin bada, bigarren pertsona horrek
zailtasun gutxiago edukiko du aldaketak egiteko.
Horretaz gain, programen akatsak zuzentzeko errazagoa izango da Ariketa21
programan Ariketa19 programan baino. Esaterako, programa martxan jartzen
dugunean ikusten badugu Karel robotak hormak (edo hesiak) ez dituela ondo
saihesten (edo jauzi egiten) D EFIN E-N U EVA -IN S TR U C C IO N salta-valla C O M O
zatia begiratu behar dugu bakarrik arazoa konpontzeko.

Ariketa22
1.- Ireki Karel simulagailua.
2.- Sortu programa bat Karelek oinarrizko aginduak (
avanza, g ira-izqu ierd a ,
eta d eja-zum b ad or
) euskaraz ulertzeko. Adibidez,
ap ag ate, coge-zu m b ad or
ondoko programa ulertzeko gai izan behar du Karel robotak:
IN IC IA -EJEC U C IO N
aurrera;
ezkerra;
h artu-b u rru n bagailu a;
aurrera;
lag a-b u rru n bag ailu a;
itzali;
TER M IN A -EJEC U C IO N

3.- Mundo fitxan sortu ondoko irudian agertzen den mundua eta gorde Ariketa22
izena erabiliz:

4.- Probatu programa funtzionatu arte. Funtzionatzen duenean gorde programa


Ariketa22 izena jarriz eta itxi Karel simulagailua.

13.- Iruzkinak
Karel robota programatzeko egin beharreko programak, batzuetan programa laburrak
dira eta, horretaz gain, pertsona batek egindako programa bat oso ulergarria da beste pertsona
batentzat. Beste batzuetan, ordea, programak nahiko luzeak dira eta, gainera, ez dira oso erraz
ulertzen, hau da, pertsona betek egindako programa zaila da ulertzea beste pertsona batentzat.
Halako kasuetan, programatzaileak aukera dauka programan bertan iruzkinak edo azalpenak
txertatzeko.
Hori egiteko, { } edo (* *) ikurrak erabili behar dira ondoko programan ikus
dezakegun moduan:
IN IC IA R -P R O G R A M A
(* P rog ram a h onen h elb urua K arelek h esi lasterketa eg itea d a *)
IN IC IA -EJEC U C IO N
M IEN TR A S n o-ju n to-a-zu m b ad or H A C ER
IN IC IO
S I fren te-lib re EN TO N C ES
(* ez dago hesirik, b eraz, au rrera *)
IN IC IO
avanza;
FIN
S IN O
(* h esi b at au rkitu da, b eraz, eg in jau zi *)
IN IC IO
g ira-izq u ierda;
(* ig o h esia *)
M IEN TR A S d erech a-b loq u ead a H A C ER
IN IC IO
avan za;
FIN ;
g ira-izq u ierda;
g ira-izq u ierda;
g ira-izq u ierda;
avanza;
g ira-izq u ierda;
g ira-izq u ierda;
g ira-izq u ierda;
(* jaitsi h esia *)
M IEN TR A S fren te-libre H A C ER
IN IC IO
avan za;
FIN ;
g ira-izq u ierda;
FIN ;
FIN ;
cog e-zu m b ad or;
ap ag ate;
TER M IN A -EJEC U C IO N
FIN A LIZ A R -P R O G R A M A

Karel robotak aginduak betetzeko lerroz lerro irakurtzen du programa. Bada, iruzkin
bat daukan lerro bat aurkitzen duenean lerro hori ez du kontuan hartzen eta hurrengo
lerroarekin jarraitzen du. Izan ere, Karelek badaki iruzkinak programa irakurtzen duten
pertsonentzako direla, hobeto uler dezaten programaren betebeharra.

Ariketa23
1.- Ireki Karel simulagailua.
2.- Sortu programa berri bat, iruzkinak txertatuz, ondoko baldintzak jakinda:
- Karel gune itxi batean dago sartuta ondoko irudian agertzen den moduan:

- Karelek itzuli osoa egin behar du gune horretatik kale eta etorbide
bakoitzean burrunbagailu bat lagaz.
- Aldez aurretik ezin jakin non dagoen Karel eta nora dagoen begira.
Horretaz gain, ezin jakin gune itxiaren zabalera eta altuera.
3.- Mundo fitxan sortu aurreko irudian agertzen den mundu bat Karelen motxilan
beharrezkoak diren burrunbagailuak sartuz (gorde Ariketa23 izena erabiliz), eta
probatu programa ondo funtzionatu arte.
4.- Egin aldaketak aurreko munduari (jarri Karel beste leku batean eta beste alde
batera begira, handitu gunearen zabalera edota altuera,...), eta programan ezer
aldatu barik probatu programa (funtzionatzen ez badu errepikatu ariketa osoa; izan
ere, programak funtzionatu behar du edozein egoeratan).
5.- Gorde programa Ariketa23 izena jarriz eta itxi Karel simulagailua.

Ariketa24
1.- Ireki Karel simulagailua.
2.- Sortu programa bat Karelek edozein kaletan eta etorbidetan dagoen burrunbagailu
bat jasotzeko. Hasieran, Karel 1. kalean eta 1. etorbidean egongo da ekialdera
begira. Programan zehar txertatu iruzkinak beste pertsona batzuek hobeto uler
dezaten programa.
3.- Mundo fitxan jarri Karel ekialdera begira 1. kalean eta 1. etorbidean eta jarri
burrunbagailu bat 7. kalean eta 10. etorbidean. Exekutatu programa eta egiaztatu
ondo funtzionatu duen, hau da, Karelek burrunbagailua aurkitu duen ala ez.
4.- Mundo fitxan jarri Karel ekialdera begira 1. kalean eta 1. etorbidean eta jarri
burrunbagailu bat 44. kalean eta 49. etorbidean. Exekutatu programa eta egiaztatu
ondo funtzionatu duen, hau da, Karelek burrunbagailua aurkitu duen ala ez.

5.- Gorde programa Ariketa24 izena jarriz eta itxi Karel simulagailua.

Ariketa25
1.- Ireki Karel simulagailua.
2.- Sortu programa berri bat (iruzkinak txertatuz) ondoko baldintzak jakinda:
- Karel edozein kaletan eta etorbidetan egon daiteke eta edozein lekutara
begira.
- Karel hormaz inguratuta dago gela itxi batean egongo balitz bezala (gelak
laukizuzen itxura dauka). Baina, egon badago irteera bat, burrunbagailu bat
daukala, nahiz eta non dagoen jakin ez. Adibidez, ondoko irudietan agertzen
den moduan:

- Karelen eginbeharra gelatik irten eta burrunbagailua jasotzea da.


3.- Mundo fitxa ireki eta sortu aurreko irudietan agertzen diren bost munduak (gorde
Ariketa25a, Ariketa25b, Ariketa25c, Ariketa25d, Ariketa25e eta Ariketa25f
izenak erabiliz), eta probatu programa ondo funtzionatu arte mundu guztietan.
4.- Gorde programa Ariketa25 izena jarriz eta itxi Karel simulagailua.

Ariketa26
1.- Ireki Karel simulagailua.
2.- Sortu programa berri bat karel labirinto batetik irteteko. Labirintoaren irteeran
burrunbagailu bat dago justu labirintotik kanpoan dagoen lehenengo kalean eta

etorbidean, eskumako hormaren ondoan. Karel, hasieran 1. kalean eta 1.


etorbidean ekialdera begira egongo da.
3.- Mundo fitxan sortu ondoko irudian agertzen den mundu bat (gorde Ariketa26a
izena erabiliz), eta probatu programa ondo funtzionatu arte:

4.- Mundo fitxan sortu ondoko irudian agertzen den mundu bat (gorde Ariketa26b
izena erabiliz), eta programan ezer aldatu barik probatu programa (funtzionatzen
ez badu errepikatu ariketa osoa; izan ere, programak funtzionatu behar du edozein
egoeratan):

5.- Aurreko munduari egin hainbat aldaketa horma berriak jarriz eta horma batzuk
kenduz, eta programan ezer aldatu barik probatu programa (funtzionatzen ez badu
errepikatu ariketa osoa; izan ere, programak funtzionatu behar du edozein
egoeratan).
6.- Gorde programa Ariketa26 izena jarriz eta itxi Karel simulagailua.

14.- Agindu laburpena


Atal honetan, ikusitako agindu guztiak bilduta daude taula batean erraz kontsultatu
ahal izateko:
Hasteko/Bukatzeko Aginduak eta Iruzkinak
IN IC IA R -P R O G R A M A FIN A LIZ A R -P R O G R A M A
IN IC IA -EJEC U C IO N TER M IN A -EJEC U C IO N
{ < iruzkin a> }
(* < iru zkin a> *)

Oinarrizko Aginduak
avan za

g ira-izq uierd a

ap ag ate

cog e-zu m b ad or d eja-zu m b ad or

Baldintzak
orientad o-al-n orte
n o-orientad o-al-norte
orientad o-al-oeste
n o-orientad o-al-oeste
orientad o-al-sur
no-orien tad o-al-su r
orientad o-al-este
n o-orientad o-al-este
fren te-lib re
frente-b loq u ead o
izq uierd a-lib re
izq uierd a-b loq uead a
d erech a-lib re
d erech a-b loq u ead a
jun to-a-zu m b ad or
n o-ju n to-a-zu m b ad or
alg u n-zu m b ad or-en -la-m ochila n in g un -zum b ad or-en -la-m och ila
y
o

Baldintzapeko Aginduak
S I < b ald in tza> EN TO N C ES
IN IC IO
< ag in d u1> ;
< ag in d u2> ;
--------< ag in d uN > ;
FIN ;

S I < b ald intza> EN TO N C ES


IN IC IO
< ag in d u A 1> ;
< ag in d u A 2> ;
---------< ag in d u A N > ;
FIN
S IN O
IN IC IO
< ag in d u B 1> ;
< ag in d u B 2> ;
---------< ag in d u B N > ;
FIN ;

Agindu Errepikakorrak
R EP ETIR < zenb akia> V EC ES
IN IC IO
< ag in d u1> ;
< ag in d u2> ;
--------< ag in d uN > ;
FIN ;

M IEN TR A S < b ald in tza> H A C ER


IN IC IO
< ag in d u 1> ;
< ag in d u 2> ;
--------< ag in d u N > ;
FIN ;

Agindu Berriak Sortzeko


D EFIN E-N U EVA -IN S TR U C C IO N < n om b re-n ueva-in stru ccin > C O M O
IN IC IO
< ag in d u1> ;
< ag in d u2> ;
--------< ag in d uN > ;
FIN ;

También podría gustarte