LANBIDE EKIMENA. Proiektuaren bultzatzaileak. Laguntzaileak. Hizkuntz koordinazioa

Σχετικά έγγραφα
DERIBAZIO-ERREGELAK 1.- ALDAGAI ERREALEKO FUNTZIO ERREALAREN DERIBATUA. ( ) ( )

7.GAIA. ESTATISTIKA DESKRIBATZAILEA. x i n i N i f i

2. PROGRAMEN ESPEZIFIKAZIOA

Banaketa normala eta limitearen teorema zentrala

= 32 eta β : z = 0 planoek osatzen duten angelua.

ANGELUAK. 1. Bi zuzenen arteko angeluak. Paralelotasuna eta perpendikulartasuna

Aldagai Anitzeko Funtzioak

1. Gaia: Mekanika Kuantikoaren Aurrekoak

Poisson prozesuak eta loturiko banaketak

1 Aljebra trukakorraren oinarriak

EUSKARA ERREKTOREORDETZAREN SARE ARGITALPENA

ARRAZOI TRIGONOMETRIKOAK

KANTEN ETIKA. Etika unibertsal baten bila. Gizaki guztientzat balioko zuen etika bat.

Inekuazioak. Helburuak. 1. Ezezagun bateko lehen orria 74 mailako inekuazioak Definizioak Inekuazio baliokideak Ebazpena Inekuazio-sistemak

MATEMATIKARAKO SARRERA OCW 2015

I. KAPITULUA Zenbakia. Aldagaia. Funtzioa

Hidrogeno atomoaren energi mailen banatzea eremu kubiko batean

MATEMATIKAKO ARIKETAK 2. DBH 3. KOADERNOA IZENA:

9. K a p itu lu a. Ekuazio d iferen tzial arrun tak

Ordenadore bidezko irudigintza

(1)σ (2)σ (3)σ (a)σ n

3. Ikasgaia. MOLEKULA ORGANIKOEN GEOMETRIA: ORBITALEN HIBRIDAZIOA ISOMERIA ESPAZIALA:

LOGIKA. F. Xabier Albizuri go.ehu.eus/ii-md

ERREAKZIOAK. Adizio elektrozaleak Erredukzio erreakzioak Karbenoen adizioa Adizio oxidatzaileak Alkenoen hausketa oxidatzailea

1 GEOMETRIA DESKRIBATZAILEA...

Oxidazio-erredukzio erreakzioak

Emaitzak: a) 0,148 mol; 6,35 atm; b) 0,35; 0,32; 0,32; 2,2 atm; 2,03 atm; 2.03 atm c) 1,86; 0,043

9. Gaia: Espektroskopiaren Oinarriak eta Espektro Atomiko

Hasi baino lehen. Zenbaki errealak. 2. Zenbaki errealekin kalkulatuz...orria 9 Hurbilketak Erroreen neurketa Notazio zientifikoa

ESTATISTIKA ENPRESARA APLIKATUA (Praktika: Bigarren zatia) Irakaslea: JOSEMARI SARASOLA Data: 2013ko maiatzaren 31a. Iraupena: 90 minutu

1. jarduera. Zer eragin du erresistentzia batek zirkuitu batean?

Hirukiak,1. Inskribatutako zirkunferentzia. Zirkunskribatutako zirkunferentzia. Aldekidea. Isoszelea. Marraztu 53mm-ko aldedun hiruki aldekidea

EGITURAREN ANALISIA ETA SINTESIA. KONTZEPTU OROKORRAK

4. GAIA Mekanismoen Sintesi Zinematikoa

ZENTRAL HIDROELEKTRIKO ITZULGARRIA TURBINA-PONPA TALDEAREKIN DISEINUA BILBOKO INDUSTRIA INGENIARITZA TEKNIKOKO UNIBERTSITATE ESKOLA

ESTATISTIKA ENPRESARA APLIKATUA (Bigarren zatia: praktika). Irakaslea: Josemari Sarasola Data: 2016ko maiatzaren 12a - Iraupena: Ordu t erdi

Ordenagailuen Egitura

AURKIBIDEA I. KORRONTE ZUZENARI BURUZKO LABURPENA... 7

KONPUTAGAILUEN TEKNOLOGIAKO LABORATEGIA

MATEMATIKA DISKRETUA ETA ALGEBRA. Lehenengo zatia

TEKNIKA ESPERIMENTALAK - I Fisikako laborategiko praktikak

3. K a p itu lu a. Aldagai errealek o fu n tzio errealak

Solido zurruna 1: biraketa, inertzia-momentua eta momentu angeluarra

MATEMATIKAKO ARIKETAK 2. DBH 3. KOADERNOA IZENA:

Estatistika deskribatzailea Excel-en bidez

4. GAIA: Ekuazio diferenzialak

1. Oinarrizko kontzeptuak

Zinematika 2: Higidura zirkular eta erlatiboa

Mate+K. Koadernoak. Ikasplay, S.L.

SELEKTIBITATEKO ARIKETAK: OPTIKA

Makina elektrikoetan sortzen diren energi aldaketak eremu magnetikoaren barnean egiten dira: M A K I N A. Sorgailua. Motorea.

1. Higidura periodikoak. Higidura oszilakorra. Higidura bibrakorra.

Funtzioak FUNTZIO KONTZEPTUA FUNTZIO BATEN ADIERAZPENAK ENUNTZIATUA TAULA FORMULA GRAFIKOA JARRAITUTASUNA EREMUA ETA IBILTARTEA EBAKIDURA-PUNTUAK

Ekuazioak eta sistemak

Solido zurruna 2: dinamika eta estatika

2011 Kimikako Euskal Olinpiada

3. KOADERNOA: Aldagai anitzeko funtzioak. Eugenio Mijangos

INDUSTRI TEKNOLOGIA I, ENERGIA ARIKETAK

4. Hipotesiak eta kontraste probak.

DBH3 MATEMATIKA ikasturtea Errepaso. Soluzioak 1. Aixerrota BHI MATEMATIKA SAILA

EREDU ATOMIKOAK.- ZENBAKI KUANTIKOAK.- KONFIGURAZIO ELEKTRONIKOA EREDU ATOMIKOAK

KONPUTAGAILUEN PROGRAMAZIOA TURBO PASCAL BITARTEZ

Trigonometria ANGELU BATEN ARRAZOI TRIGONOMETRIKOAK ANGELU BATEN ARRAZOI TRIGONOMETRIKOEN ARTEKO ERLAZIOAK

Batxilergorako materialak. Logika sinbolikoa. Peru Urrutia Bilbao ISBN: Salneurria: 14 E

ESTATISTIKA ETA DATUEN ANALISIA. BIGARREN ZATIA: Praktika. Data: 2012ko ekainaren 25. Ordua: 12:00

SELEKTIBITATEKO ARIKETAK: EREMU ELEKTRIKOA

9.28 IRUDIA Espektro ikusgaiaren koloreak bilduz argi zuria berreskuratzen da.

6. Aldagai kualitatibo baten eta kuantitatibo baten arteko harremana

I. ebazkizuna (1.75 puntu)

ESTATISTIKA ETA DATUEN ANALISIA. Azterketa ebatziak ikasturtea Donostiako Ekonomia eta Enpresa Fakultatea. EHU

Jose Miguel Campillo Robles. Ur-erlojuak

4. GAIA MASAREN IRAUPENAREN LEGEA: MASA BALANTZEAK

Deixia. Anafora edota katafora deritze halako deixi-elementuei,

4.GAIA. ESPAZIO BEKTORIALAK

6.1. Estatistika deskribatzailea.

FISIKA ETA KIMIKA 4 DBH Higidurak

Definizioa. 1.Gaia: Estatistika Deskribatzailea. Definizioa. Definizioa. Definizioa. Definizioa

ARIKETAK (I) : KONPOSATU ORGANIKOEN LOTURAK [1 5. IKASGAIAK]

1.1. Aire konprimituzko teknikaren aurrerapenak

1.1 Sarrera: telekomunikazio-sistemak

EIB sistemaren oinarriak 1

6. GAIA: Oinarrizko estatistika

Zirkunferentzia eta zirkulua

5. GAIA Solido zurruna

UNIBERTSITATERA SARTZEKO HAUTAPROBAK ATOMOAREN EGITURA ETA SISTEMA PERIODIKOA. LOTURA KIMIKOA

OREKA KIMIKOA GAIEN ZERRENDA

3. K a p itu lu a. Aldagai errealek o fu n tzio errealak

1.2. Teoria ekonomikoa, mikroekonomia eta makroekonomia

10. K a p itu lu a. Laplaceren transfo rm atu a

5 Hizkuntza aljebraikoa

Kojineteak. Eskuarki, forma zilindrikoa izaten dute; jasan ditzaketen kargen arabera, bi motatan bereiz daitezke:

PROGRAMA LABURRA (gutxiengoa)

Elementu baten ezaugarriak mantentzen dituen partikularik txikiena da atomoa.

SELEKTIBITATEKO ARIKETAK: EREMU ELEKTRIKOA

Proiektuaren bultzatzaileak. Laguntzaileak. Hizkuntza-koordinazioa

7.1 Oreka egonkorra eta osziladore harmonikoa

I. ikasgaia: Probabilitateen kalkulua

DBH 2 MATEMATIKA. erein

LANBIDE EKIMENA. Proiektuaren bultzatzaileak. Laguntzaileak. Hizkuntz koordinazioa

Diamanteak osatzeko beharrezkoak diren baldintzak dira:

Transcript:

PROGRAMAZIO-TEKNIKAK Programazio-teknikak LANBIDE EKIMENA

LANBIDE EKIMENA LANBIDE EKIMENA Proiektuaren bultzatzaileak Laguntzaileak LANBIDE HEZIKETAKO ZUZENDARITZA DIRECCION DE FORMACION PROFESIONAL Hizkuntz koordinazioa

Egilea(k): Técnicas de programación. Juan C. López Rodríguez José A. López Rodríguez. Paraninfo Thomson Learning Programazioaren oinarriak. Iñaki Goirizelaia Ordorika. EHU Argitalpenak Itzultzailea: Josemari Navascues Zuzenketak: ELHUYAR Hizkuntz zerbitzuak Maketa: Naiara Beasain Azalaren diseinua: Naiara Beasain 2002an itzulia eta prestatua

Aurkibidea 1. PROGRAMAK EGITEN... 1 1.1. PC ordenagailuan programatzeko hastapenak... 2 1.2. Tamaina eta zailtasun txikiko programak egiten... 7 1.3. Algoritmoak sortzen... 9 1.4. Programazio egituratua... 15 1.5. Moduluzko programazioa... 23 1.6. C lengoaiarako sarrera... 23 2. C LENGOAIAREN OINARRIZKO KONTZEPTUAK... 26 2.1. Sarrera... 26 2.2. C lengoaiaren datu-motak... 27 2.3. Iruzkinak... 31 2.4. Sarrera/irteerarako funtzioak... 31 2.5. Sarrera eta irteeratarako zenbait funtzio... 37 2.6. Espresioak eta eragileak... 38 2.7. Bihurketak eragiketa aritmetikoetan eta espresioetan... 40 2.8. Erlazio-eragileak... 41 2.9. Eragile logikoak... 42 2.10. Beste zenbait eragile... 42 2.11. Eragileen lehentasuna... 45 2.12. Proposatutako ariketak... 46 3. BALDINTZAZKO SENTENTZIAK... 48 3.1. Sarrera... 48 3.2. If egitura... 48 3.3. If else egitura... 49 3.4. Switch egitura... 51 3.5. Proposatutako ariketak... 52 4. EGITURA ERREPIKAKORRAK... 53 4.1. Sarrera... 53 4.2. For kontrol-egitura... 53 4.3. While kontrol-egitura... 57 4.4. Do while kontrol-egitura... 59 4.5. Kontrol-egitura errepikakor habiatutak... 60 4.6. Beste kontrol-egitura batzuk: break eta continue... 61 4.7. Proposatutako ariketak... 62 LANBIDE EKIMENA I

5. FUNTZIOAK... 64 5.1. Sarrera... 64 5.2. Funtzioen egitura... 66 5.3. Funtzioen arteko informazioaren transmisioa... 68 5.4. Aldagaien zenbait ezaugarri... 76 5.5. Adibidea: kosinu funtzioaren balioa kalkulatu... 78 5.6. Proposatutako ariketak... 80 6. ARRAY-AK... 82 6.1. Sarrera... 82 6.2. Array baten deklarazioa... 82 6.3. Array dimentsioanitzak... 84 6.4. Array-ak eta erakusleak... 85 6.5. Array-ak eta funtzioak... 87 6.6. Erakusleen erakusleak... 87 6.7. Funtzioak eta array dimentsioanitzak... 90 6.8. Array-etan eragiketak egiteko algoritmoak... 90 6.9. Adibidea: array-ak prozesatzen... 94 6.10. Proposatutako ariketak... 97 7. KARAKTERE-KATEAK... 100 7.1. Karaktere-kateak... 100 7.2. Karaktere-kateen sarrera / irteeretarako funtzioak... 103 7.3. Karaktere-kate baten hasieraketa... 104 7.4. Karaktere-kateen array-ak... 104 7.5. Karaktere-kateak prozesatzeko zenbait funtzio... 105 7.6. Karaktere-kateen hasieraketa erakusle balira bezala... 108 7.7. Karaktere-kateen erakusleen array baten hasieraketa... 109 7.8. Adibidea: karaktere-kateak prozesatzen... 111 7.9. Proposatutako ariketak... 114 8. EGITURAK... 115 8.1. Egiturak... 115 8.2. Egitura habiatuak... 119 8.3. Egiturak funtzioen argumentu gisa... 120 8.4. Egituren erakusleak... 121 8.5. Egituren array-ak... 123 8.6. Proposatutako ariketak... 125 LANBIDE EKIMENA II

9. LOTURAK... 126 9.1. LOTURAK... 126 9.2. PROPOSATUTAKO ARIKETAK... 128 10. ZERRENDA KATEATUAK... 129 10.1. Sarrera... 129 10.2. MEMORIAREN ERRESERBA DINAMIKOA... 129 10.3. ZERRENDA KATEATUAK... 131 10.4. ZERRENDA KATEATUAK SORTZEKO METODOAK... 131 10.5. PROPOSATUTAKO ARIKETAK... 141 11. FITXATEGIAK IRAKURTZEA ETA IDAZTEA... 142 11.1. Sarrera... 143 11.2. TESTU-FITXATEGIAK VS. FITXATEGI BITARRAK... 143 11.3. SARRERA/IRTEERA ESTANDARRA... 143 11.4. TESTU-FITXATEGIAK VS. FITXATEGI BITARRAK: ZEHAZTAPEN GEHIAGO... 149 11.5. BLOKE IZENEKO SARRERA/IRTEERA... 150 11.6. PROPOSATUTAKO ARIKETAK... 154 LANBIDE EKIMENA III

1 Programak egiten Kapituluaren edukia: Sarrera. 1. PC ordenagailua programatzeko hastapenak. 2. Tamaina eta zailtasun txikiko programak egiten. 3. Algoritmoak sortzen. 4. Programazio egituratua. 5. Moduluzko programazioa. 6. C lengoaiarako sarrera. SARRERA Kapitulu hau programazioaren munduan hastera doazenentzat idatzi da. Bertan oinarrizko kontzeptuak, oinarrizko datuen egiturak eta egitura hauek gidatzen dituzten algoritmoak deskribatzen dira. Alderdi hauek guztiak programazio egituratuaren ikuspegitik landu dira. HELBURUAK Algoritmoak irudikatzeko teknikak deskribatzea. Programazio-lengoaiak sailkatzea. Algoritmoen ebazpenean erabilitako irudikapen grafikozko metodoak azaltzea. Fluxu-diagrametan erabiltzen diren ikur arautuak adieraztea. Programa egituratuetan erabiltzen diren oinarrizko kontrol-egiturak deskribatzea. LANBIDE EKIMENA 1

1. PC ORDENAGAILUAN PROGRAMATZEKO HASTAPENAK Lehen ikusi dugunez, ordenagailuaren oinarrizko egitura honela osatuta dago: prozesatzeko unitate zentrala (PUZ), memoria nagusia, sarrerako eta irteerako gailuak (I/O; ingeleseko Input/Output terminoetatik) eta bigarren mailako memoriaren gailuak. PUZ-ak edo mikroprozesadoreak oinarrizko agindu-sorta txikia abiadura handian exekuta dezake. Memoria nagusia datu eta programa bezala ezagutzen ditugunak gordetzeaz arduratzen da (aurrerago ikusiko dugunez, programek PUZ-ari datuei aplikatu behar zaion agindu-sorta zein den adierazten diote). I/O gailuei esker ordenagailuaren eta beste elementuen arteko komunikazioa gerta daiteke, erabiltzailearekin, beste ordenagailu batzuekin edo edozein ekipamendu informatikorekin izan dezakeen komunikazioa, hain zuzen. Bigarren mailako memoriaren gailuen eginkizuna datu-kantitate handia etengabe gordetzea da. Oro har, ordenagailuaren funtzionamendua sinplifikatuz honela ikus daiteke: sarrera- -datuak jaso, programaren arabera prozesatu eta ondoren irteerako datu berriak sortzen dituen sistema da. Adibide gisa, kimikariaren kasua aipa dezakegu: honek jakineko osagaietatik abiatuta (sarrera) eta erreakzio kimikoaren arabera (programa) prestatutako konposatua lortzen du (irteera). 1.1. irudian oraintxe azaldu dugun prozesua ikus daiteke. 1.1. irudia. Programa jakineko atazak burutzeko ordenagailuak exekutatzen duen agindu-multzoa da eta agindu hauek programazio-lengoaian adierazita daude. Hortaz, programa exekutatzea ordenagailuan sartzen diren datuak nahi diren emaitzak lortzeko prozesatzea da, hau da irteerako datuak lortzeko. Programazio-lengoaia ordenagailuarentzat diren programak idazteko erabiltzen den idazkera berezia da, edo bestela esanda, ordenagailuari bere hizkera berezian zer egin behar duen esateko erabiltzen den lengoaia da. Hiru programazio-lengoaia nagusi daude. 1.1. Makina-lengoaia Balio bitarren sekuentziek osatzen dute lengoaia hau, hots makina-lengoaian idatzitako programaren aginduak bat (1) eta zero (0) zenbakiek osatzen dituzte, hauxe baita makinak benetan ulertzen duena. Adibidez, demagun ordenagailuan bat eta zeroen honako sekuentzia hau dugula: 11001100 00110011 10101010 01010101; sekuentzia honek bi balioen biderkadura adieraz dezake. Aldiz, honako sekuentzia honek: 11001100 00110011 10101010 01010111 bi balioen arteko zatiketa ahalbidetzen du. Kontuan izan behar da PUZ-ak ezagutzen duen sekuentzia bitarren multzoak osatzen duela bere agindu-multzoa eta agindu hauek batuketa, kenketa, biderketa, zatiketa, konparaketa, balioen lekualdaketa, etab. izan daitezke. Agindu hauek guztiak oinarrizko eragiketak dira eta hauen bitartez eragiketa konplexuak egin daitezke. Agindu-multzo hau PUZ-arena da bakarrik, eta ondorioz, makina-lengoaian egindako programa hardwarearen esku egongo da, hau da, ezin izango da PUZ bera duen beste ordenagailu batean erabili, honek beste agindu-multzoa izango baitu. LANBIDE EKIMENA 2

Lengoaia hau erabiltzen zail samarra da darabiltzan elementu guztiak bat eta zeroen sekuentzien bitartez adierazten baitira (kode bitarra). Alabaina, lengoaia honek abantaila nagusi bat dauka eta hauxe da, exekuzio-abiadura handiko programak lortzen dira eta gainera, ordenagailuaren baliabideak ahalik eta gehien aprobetxatzen dira. 1.2. irudia. Makina-lengoaiako programa baten itxura 1.2. Mihiztadura-lengoaia Makina-lengoaian idaztean sortzen diren zailtasunak saihestearren, mihiztadura- -lengoaia asmatu zuten. Lengoaia hau, makina-lengoaiak bezala, hardwarearen esku dago, baina kasu honetan mihiztadura-lengoaiak programatzaileak ulertzen duen sintaxi zehatza du, agindu bitar bakoitzari aginduaren esanahia adierazten duen hitza lotzen baitzaio. Hitz hauei mnemonikoak esaten zaie. Adibidez, lehen aipatu dugun ordenagailu horretan, sekuentzia honi 11001100 00110011 10101010 01010101 honako mnemoniko hau lotuko zaio: MUL A, B. Mihiztadura-lengoaiaren bidez prestaturiko programak ezin dira zuzenean PUZ-aren bidez exekutatu, mihiztadura-lengoaia itzuli eta aginduak makina-lengoaian adieraziko dituen programa behar du-eta. Programa honi mihiztatzaile deritzo. Mihiztadura-lengoaiaren abantailak eta makina-lengoaiarenak berdinak dira eta hauez gain, irakurgarritasuna eta programak idazteko erraztasuna ere aipatu behar dira. Alabaina, oraindik ere hardwarearen esku daude lengoaia hauek, eta ondorioz, lengoaia hau erabiltzeko ordenagailuaren PUZ-a ondo ezagutu beharra dago. LANBIDE EKIMENA 3

1.3. Goi-mailako lengoaiak Programazio-lengoaia hauek gizakion hizkuntza naturaletik gertuago dagoen sintaxia erabiltzen dute, eta gainera, gure pentsaeratik hurbilago dagoen semantika erabiltzen dute. Ondorioz, aurreko bi lengoaiak erabiltzean sortzen ziren arazoak gainditu egiten dira mota honetako lengoaien bidez. Hala ere, goi-mailako lengoaiak erabilita, PC-ko hardwarea era onenean erabiltzeari utzi egiten zaio eta programek, idazten errazagoak izan arren, memoria-espazio handiagoa hartzen dute eta mihiztadura-lengoaiako kideak baino motelagoak dira. Goi-mailako lengoaiak, lengoaia mihiztatzailea erabiltzean gertatzen den bezala, PUZ- -ak ezin ditu zuzenean exekutatu eta bere aginduak itzuli eta makina-lengoaiaren bidez adieraziko dituen programaren premia dute. Itzultzeko bi programa-mota daude: Konpiladoreak: Programa hauek itzulpen osoa aldi batean egiten dute, hau da, goi- -mailako lengoaian idatzitako programa osoa hartzen dute eta makina-lengoaiara itzultzen dute, eta horrela, ordenagailuaren sistema eragiletik zuzenean exekuta daiteke. Interpretatzaileak: Programa hauek goi-mailako lengoaian idatzitako programa lerroz lerro irakurtzen, itzultzen eta exekutatzen dute. Itzultzeko bi programa hauen emaitza bera da: biek ordenagailuan exekutatzen den programa sortzen dute. Alabaina, modu desberdinean egiten dute lan. Konpiladoreek itzulpen- -prozesua aldi batean burutzen dute eta programek azkarrago funtzionatzen dute. Interpretatzaileek, berriz, itzulpena programa exekutatzen den aldiro burutzen dute, eta ondorioz, hauen funtzionamendua motelagoa da. Goi-mailako programazio-lengoaia ugari dago. Gaur egun ezagunenak eta maizen erabiltzen direnak hauexek dira: C, C++, Basic, Pascal eta Java. Baina badaude askoz gehiago ere, adibidez Cobol, Fortran, Modula-2, ADA, SQL, Lisp, Prolog, etab. Hauetariko bakoitzak bere ezaugarri propioak ditu, bere abantaila eta desabantailak ere bai. Goi-mailako lengoaia bat ala bestea aukeratzean faktore ugari hartuko dira kontuan, besteak beste norberaren gustuak, enpresaren politikak, prestatu nahi den programaren ezaugarriak, etab. 1.4. Programaren elementuak Programazio-lengoaia guztiek, salbuespenik gabe, oso sintaxi sendoa dute. Alderdi honen oinarrian hauxe dago: guztiek hitz bereizi edo gako-hitz batzuk dituzte eta hauen erabilera programak berak zehazten du aldez aurretik. Hitz hauek guztiak programa eraikitzea ahalbidetzen dituzten funtsezko elementuen oinarri dira. Oinarrizko elementuak honako hauek dira: oinarrizko eta egituratutako datu-motak, konstanteak eta aldagaiak, identifikadoreak, adierazpen eta eragileak, instrukzioak eta iruzkinak. PC ordenagailuek zenbakien bidez adierazitakoa bakarrik ulertzen dutenez eta zenbakien bitartez bakarrik lan egin dezaketenez, ezinbestekoa da programak egitean erabiltzen diren datu-motak aztertzea. Oinarrizkoak edo funtsezko datu-motak definitzeko beste datu-moten premiarik ez duten datuak dira. Oinarrizko datu-mota hauen erlazioen bitartez egituratutako datu-motak edo datu-mota konposatuak osatzen dira. Eskuarki oinarrizko datu-motak honako hauek dira: zenbakizko datuak, datu logikoak eta karaktereak. LANBIDE EKIMENA 4

Zenbakizko datu-motak bitan bana daitezke: datu-mota osoak eta datu-mota errealak. Datu-mota osoak zenbaki osoen azpimultzo finitua adierazten du, hau da, ez dute atal hamartarrik. Datu-mota errealak zenbaki errealen azpimultzo finitua osatzen dute, hau da, hauek badute atal hamartarra. Datu-mota logiko edo boolearren bitartez egiazkoak edo faltsuak diren balioak adieraz daitezke. Eskuarki datu-mota hauek baldintzaren edo adierazpen logiko edo erlaziozkoaren emaitzari lotuta joan ohi da. Karaktereko datu-moten bidez PC ordenagailuak erabili ohi dituen karaktere-multzoa adieraz daiteke, hots ASCII kodearen karaktere-multzoa. Karaktere-multzo hau alfabeto- -karaktereek, zenbakizko karaktereek eta maiz erabili ohi diren karaktereek osatzen dute (?! + * @, etc.). Oinarrizko datu-moten bitartez inolako erlaziorik ez duten elementuak adieraz daitezke. Alabaina, askotan informazioa antolatuta adierazten da edo nola edo hala antola daiteke. Hortaz, programazio-lengoaien bidez programatzaileak antolaketa hori adierazten duten egiturak sor ditzake egituratutako datu-motak erabiliz. Egituratutako datuen mota elkarren artean erlazionatuta dauden izen bakarreko datu- -multzoa da eta oinarrizko eragiketa batzuei lotuta daude. Estatikoak eta dinamikoak izan daitezke, bere bizi-zikloaren arabera. Datu-mota estatikoen tamaina konpilazio-denboraren arabera finkatuta dago, hau da, programa exekutatzen ari den bitartean ezin dira, ez handitu eta ez txikiagotu. Aldiz, datu-mota dinamikoen tamaina programa exekutatzen ari den bitartean alda daiteke. Egituratutako datu-motei datuen egiturak ere esaten zaie. 1.5. irudia. Programek, aginduen bitartez, eralda daitezkeen eta ezin eralda daitezkeen datuak erabiltzen dituzte eta irizpide horren arabera sailka daitezke datuak. Horregatik, datu konstante edo literalak eta aldagaiak bereiz daitezke. Datu konstanteek ezin dute beren edukia aldatu programa exekutatzen ari den bitartean eta oinarrizko datu-mota batekoak dira. Aldagaia ordenagailuaren memoria nagusian dagoen tokia da eta bertan aldagaien datu-mota bereko balioak gorde daitezke. Aldagaiaren edukia kontsulta edo alda daiteke programaren aginduak eraginda. LANBIDE EKIMENA 5

Lengoaia guztietan, eta agindu batek aldagaiari erreferentzia egin baino lehen, aldez aurretik aldagai hori dagoela aditzera eman behar da. Aldagaia aditzera ematea aldagaiarentzat onargarria den identifikadorea eta datu-mota bat elkarri lotzean datza. Honela aldagaiak gorde dezakeen balio-mota zehaztuta geratzen da. Lengoaiaren sintaxia aldagaiak aditzera emateko adierazpenen kokalekua zehaztea ahalbidetzen duen lengoaia izango da. Identifikadorea datuari lotzen zaion izena da. Datu hau konstantea edo aldagaia izan daiteke. Identifikadorearen izena alfabeto-karakterez eta zenbakizko karakterez osaturiko segida izan ohi da, betiere zenbakizkoa ez den karakterez hasi behar dela kontuan izanik. Horrela, identifikadorea eta zenbakizko konstantea argi bereiziko ditugu. Programazioan adierazpenak eragiketa-multzoak dira eta eragiketa-multzo hauek eragigaiak konstanteak edo aldagaiak izan daitezke eta elkarri konektatuta egon ohi dira eragile bat edo gehiagoren bitartez. Adierazpenak lau motakoak izan daitezke: logikoak, erlaziozkoak, aritmetikoak eta karaktere-motakoak. Ondorioz, adierazpen-mota bakoitzari zuzenean lotuta dagoena eragile-multzo bat dago. Gainera, programak izan ditzakeen adierazpen asko konplexuak izan daitezkeenez, programazio-lengoaiek lehentasunezko arau batzuk ezartzen dituzte, eragiketak zein ordenatan egin behar diren zehazten dutenak. Instrukzio edo sententziak sarrera-datuak irteera-datu bihurtu ahal izateko programak erabiltzen dituen datu guztiengan eragiten duten ekintzak dira. Instrukzio-mota desberdinak daude: esleipen-instrukzioak, sarrera-instrukzioak, irteera-instrukzioak, kontrol-instrukzioak eta instrukzio konposatuak. Esleipen-instrukzioa oinarrizkoa da, hau gabe ez baitago programarik. Instrukzio hau aldagai edo konstanteari balio bat lotzean datza, eta balio hau esleitu nahi den adierazpenaren ebaluazioaren emaitza da. Sarrera-instrukzioei esker programetan irakurketa-eragiketak burutu ahal dira, hauen bidez gailu desberdinetatik (hala nola teklatutik, sagutik, disko-unitateetatik, serieko ataketatik, etab.) datozen sarrera-datuak eskura daitezke eta. Irteera-instrukzioek, berriz, gailu desberdinetan idazketa-eragiketak burutu ahal izatea ahalbidetzen dute. Eskuarki, irteerako gailua ordenagailuaren pantaila dela suposatzen da. Programazio-lengoaiek beste instrukzio-mota bat izan ohi dute, programaren instrukzioen ordena aldatzea ahalbidetzen duena. Instrukzio hauei kontrol-instrukzio esaten zaie eta hiru motakoak izan daitezke: aldizkakoak, errepikakorrak eta sekuentzia eteten dituztenak (azken hau ez da ia erabiltzen, programak egiteko metodoek instrukzio hauek baztertzeko joera baitute). Instrukzio hauek ez baleude, programa osatzen duen sententzia- -multzoa, sententziak prestatu diren ordenaren arabera exekutatuko lirateke. Aldizkako instrukzioa logiko-motako adierazpena ebaluatzen hasten da, hau da, egiazkoa ala faltsua adierazten duten balioak bakarrik har ditzake, eta adierazpen horren ebaluazioaren arabera, instrukzio-multzo bat ala bestea exekutatuko du. Instrukzio errepikakorrari esker instrukzio-seriea behin eta berriro exekuta daiteke, baldintzaren balioaren arabera (adierazpen logikoa, alegia). Azkenik, sekuentzia eteten duten instrukzioek programaren fluxua programaren beste toki batera bidaltzen dute. Instrukzio hau ez da kasik erabiltzen, maiz eta modu desegokian erabiltzen bada, programak irakurtezin bihurtzea gerta baitaiteke. Instrukzio konposatuak, egia esan, programazio-lengoaiaren mugatzaile zehatz batzuen artean dauden sententzia-multzoak dira. Sententzia-multzo hau kontrol-instrukzioa exekutatzearen eraginpean egon ohi da. Iruzkinak instrukzio-multzoaren betekizuna argitzeko programan sartzen diren esaldiak dira. Iruzkin hauek itzultzeko programak ez ditu kontuan hartzen, baina programa dokumentatu egiten dute, errazago uler dadin. LANBIDE EKIMENA 6

2. TAMAINA ETA ZAILTASUN TXIKIKO PROGRAMAK EGITEN Programak egitean bi joera nagusi bereiz ditzakegu: batetik, programazio egituratua eta moduluzkoa (tradizioz prozedurazko programazioa deitu izan dena), eta bestetik, objektuak helburu dituen programazioa. Liburu honen helburua, besteak beste, tamaina eta zailtasun txikiko programak egiten ikasteko beharrezkoak diren gaitasunak eskuratzea denez, liburuaren edukia programak C lengoaia erabiltzean, ikuspegi egituratu eta modularretik, oinarrituko da eta horretarako Windows-eko MS-DOS modua erabiliko dugu. Programa hauek egiteko jarraitu behar den prozesua, arazoa planteatu eta programaren bidez irtenbidea bilatu arte, pauso-serie batek osatzen du. Fase hauek guztiak 1.6. irudiko diagraman ikus daitezke. 1.6. irudia. Algoritmoa diseinatzeko fasea Lehenengo pausoa konpondu beharreko arazoarentzat algoritmoa diseinatzea da. Lehendik badakigu programa arazoari irtenbidea emateko bereziki prestaturiko eta programazio-lengoaian idatzitako instrukzio-seriea dela. Argi dago arazoak konpontzeko prozedurarik gabe ez legokeela programaziorik. Prozedura honi algoritmo deritzo. Algoritmoa pauso-sekuentzia ordenatua besterik ez da, anbiguotasunik gabea. Pauso hauek bata bestearen atzetik eginez, konpondu behar den arazoaren irtenbidea lortuko da; hau da, bestela esanda, algoritmoa arazoaren irtenbidea da. Kodifikazio-fasea Programaren iturburu-programa edo programaren iturburu-kodea delakoaren edizioa (testu-editorearen bidez) prestatzean datza. Iturburu-programa hau programaren instrukzioak gordetzen dituen testu-fitxategia da, hau da, algoritmoa programazio-lengoaiara itzultzearen emaitza. Konpilazio-fasea Fase hau iturburu-programa makina-lengoaiara itzultzean datza, eta horrela objektu- -programa edo programaren objektu-kodea izenekoa sortzen da. Horretarako programa konpiladoreak edo interpretatzaileak daude eta hauek iturburu-programatik abiatuta kodifikazio- -fasean sor daitezkeen akats sintaktikoak lortzen dituzte. Akats hauek kodifikazio-fasean bertan zuzendu egin behar dira, bestela ez da objektu-programa onargarririk sortuko eta. LANBIDE EKIMENA 7

Muntatze- edo elkartze-fasea Objektu-programa, makina-lengoaian idatzita badago ere, ezin da zuzenean ordenagailuan exekutatu muntatzeko programa (linkerra) behar du eta. Programa hau programa osatzen duten objektu-modulu guztiak elkartzeaz arduratzen da, liburutegiak barne, ordenagailuan exekuta daitekeen programa bakarra osatzeko. Eskuarki programek liburutegiak erabiltzen dituzte eta gainera, iturburu-kodeak tamaina handia hartzen duenean, moduluetan egituratu behar izaten dira. Modulu hauek bakarka konpilatzen dira. Elkartze-fasean akatsak sor daitezke eta akats hauek kodifikazio-fasean zuzendu behar dira. Bestela, ezin da sortu exekuta daitekeen programarik. Exekuzio-fasea Fase honetan programa behin eta berriro exekutatzen da probarako datu desberdinak erabiliz. Horrela programa zuzen dabilela egiazta daiteke. Exekuzio-fasean sor daitezkeen akatsak gehienetan onar ezin daitezkeen eragiketak sortuak dira: zati zero egitea, zenbakizkoa ez den datua zenbakizko aldagaian irakurtzea, onartutako gehiegizko balioak, etab. Akats hauei honela antzeman diezaiekegu: programa exekutatzean programak ez-ohiko geldialdia egiten du. Kasu hauetan sistemak programa bertan behera utzi duela esaten da. Akats hauek aurkitzea konpilazio- eta elkartze-faseetan gertatzen diren akatsei antzematea baino zailago da, akats hauek erabiltzen diren sarrera-datuen arabera gertatzen baitira. Arazketa-fasea Fase hau programaren funtzionamendua egiaztatzean datza exekuzioan zehar gertatutako akatsak aurkitzeko. Programa araztailea erabiltzen da (debugger) eta programa honen bitartez honako hau egin daiteke: Programa proba moduan exekuta daiteke lerroz lerro. Instrukzio bakoitza exekutatu ondoren, zer gertatzen den ikus daiteke. Aldagaien balioak eragiketa aurretik eta ondoren lor daitezke. Programa exekutatzen ari den bitartean aldagaien balioak alda daitezke. Programaren exekuzioa edozein puntu jakinetan eten daiteke (eteteko puntuak). Dokumentazio-fasea Programaren dokumentazioa erabiltzaileek programa errazago erabil dezaten ahalbidetzen du eta programaren mantenurako balio handiko informazioa ematen du. Kokapenaren arabera bi dokumentazio-mota bereiz daitezke: barrukoa eta kanpokoa. Barruko dokumentazioa iturburu-programaren zerrendak osatzen du nagusiki. Honen bidez programa errazago irakur eta uler daiteke. Iruzkinek eta autodokumentatutako kodeak osatzen dute dokumentazioa. Iruzkinak iturburu-programaren edozein tokitan txerta daitezkeen azalpe-esaldiak dira. Esaldi hauek konpiladoreak ez ditu kontuan hartzen. Autodokumentatutako kodeak identifikadore egokiak erabiltzeko kodea ezartzen du aldagaiak, konstanteak, etab. izendatzeko, balio finkoen konstanteak aditzera emateko, bai eta ezkerraldeko koska (indentazioa), orrialde- -zenbaketa eta lerro zuriak tartean sartzea, programak itxura atseginagoa eta irakurterrazagoa izan dezan. Kanpoko dokumentazioa programarekin batera doazen dokumentuek osatzen dute, hala nola diseinuaren deskribapenak, erabiltzailearen esku-liburuak, etab. LANBIDE EKIMENA 8

Hemen aipatutako prozesuaren faseak burutu ahal izateko, integratutako garapen- -ingurunea (IDE) erabiltzen da. Ingurune honetan testu-editorea, konpiladorea, elkartzailea eta araztailea izan ohi ditu programak egin eta exekutatzeko. Ezaugarri hauek guztiak ingurunetik bertatik eskura daitezke. Honi esker konpilazio-ziklo nahikoa bizkorrak lor daitezke eta, ondorioz, programen sorketa-, probaketa- eta arazketa-eragiketak azkarragoak eta errazagoak dira. 2.1. Programen kalitate-irizpideak Arazo jakin baterako programa desberdinetan gauzaturiko irtenbide desberdinak presta daitezke. Irtenbide egokiena hautatzeko programen kalitate-irizpideak hartu behar dira kontuan. Irizpide horiek honako hauek dira: Argitasuna Ezaugarri hau programa irakurtzeko erraztasunari dagokio. Programa argi idatzita baldin badago, beste norbaitek programaren logika jarraitu ahal izango du beharrezko ez den esfortzurik egin gabe. Gainera jatorrizko programatzaileari, denboraldi luzean utzi ondoren, bere programari jarraitzeko aukera emango dio. Erraztasuna Erraza den programa, argi eta zuzena izatetik hurbilago dago. Hain zuzen ere, batzuetan eraginkortasunean apur bat galtzea merezi du programaren egitura ez zailtzearren. Eraginkortasuna Ezaugarri hau programa exekutatzeko abiadurarekin eta ordenagailuaren baliabideen erabilerarekin lotuta dago. Hau irizpide nagusietakoa baldin bada ere, eraginkortasunean irabazteko ez da programa zail eta ilunik burutu behar. Programak zailak direnean ezaugarri hauek aurrez aurre jartzen dira. Kasu hauetan esperientziak eta sen onak diotena kontuan hartu behar da lehentasunak ezartzeko. Modulartasuna Programa asko ataza txikietan zati daitezke. Programazio-eragiketa ona da ataza hauek modulu bereizietan sortzea. Gauzak horrela eginda programak argiagoak izaten dira eta errazago zuzen daitezke. Gainera, aurrerago aldaketak egin ahal izatea errazten da. 3. ALGORITMOAK SORTZEN Programazioaren oinarrizko elementuak aztertu eta gero, algoritmoak sortzen edo diseinatzen hasteko prest gaude. Prozesu hau benetan erraza edo guztiz konplexua izan daiteke, programak bete behar duen eginkizunaren arabera. Algoritmoak honako hiru arau hauek bete behar ditu: Zehatza izan behar du, hau da, zehatz-mehatz azaldu behar du urratsak zein ordenatan eman behar diren, gerta daitezkeen kasu guztietan. Aldez aurretik kontuan hartu den edozein egoera gerora arazoen iturburu bihur daiteke eta. Zehaztuta egon behar du, bestela esanda, algoritmoa behin eta berriro jarraitzen bada, datu berberak erabiliz, beti emaitza berak lortu behar ditugu. Mugatua izan behar du. Algoritmoa jarraitzean, algoritmoa une jakin batean amaitu egin behar da; pauso-kopuru mugatua du, hain zuzen. LANBIDE EKIMENA 9

Algoritmoaren diseinua prestatzeko arazoa konpontzeko, ataza edo eginkizun garrantzitsuenak zeintzuk diren zehaztu behar dira lehenik, eta ondoren, ataza hauek exekutatu behar diren ordenan jarri. Atazen hasierako deskribapen honetan pausoak findu egin behar dira xehetasun gehiago erantsiz, eta hauetariko batzuei, algoritmo garbia, zehatza eta osatua lortzearren, finketa osagarria egin beharko zaie. Algoritmoak atalka diseinatzeko teknika honi, orokorretik zehatzenera behin eta berriz finduz igarotzeari alegia, beherako diseinua esaten zaio (ingelesezko top-down hain zuzen). 1.7. irudia. Beherako diseinua edo top-down. Algoritmoan hiru atal hauek kontuan hartu behar dira: Sarrera: Algoritmoari ematen zaion informazioa da. Prozesua: Arazoaren irtenbidea bilatzeko beharrezkoak diren ekintzak eta kalkuluak dira. Irteera: Algoritmoak emandako erantzunak edo kalkuluen azkeneko emaitzak dira. Algoritmoa idazten amaitu dugunean, ezinbestekoa da algoritmoa diseinatzean kontuan izan ditugun eginkizunak betetzen dituela egiaztatzea, eta gainera espero genuen emaitza zuzena sortzen duela. Algoritmoa egiaztatzeko maizen erabiltzen den metodoa algoritmoa eskuz exekutatzea da. Horretarako, balioen barruti gehiena biltzen duen datu aukeratuak erabiltzen dira. Ondoren paperezko orri batean fase bakoitzean egin behar diren aldaketak emaitzak lortu arte idazten dira. Algoritmoak erabili behar den programazio-lengoaiatik bereizita egon behar du, baina erraz itzuli ahal izango dugu programazio-lengoaiara. Hau lortzeko algoritmoak irudikatzeko metodo arautuak erabili ohi dira. Metodo hauek honako hauek dira: fluxu-diagramak, ordinogramak eta pseudokodea. LANBIDE EKIMENA 10

3.1. Fluxu-diagramak Fluxu-diagramak ikus daitezkeen tresnak dira eta algoritmoak ulertzen lagunduko digute. Esperientzia handiko programatzaileek ez dituzte tresna hauek maiz erabiliko, baina programak egiten hasten direnentzat, berriz, benetan erabilgarriak dira. Ikusi ahal izateari esker, algoritmoaren egitura argi azal daiteke, eta gainera, diseinatzeko egin behar diren lanak ere errazten ditu. Fluxu-diagrama algoritmoaren pausoak adierazten dituzten ikurrek osatzen dute. Ikur hauek elkarri lotuta daude exekutatzeko noranzkoa adierazten duten gezien bitartez. 1.8. irudia. Fluxu-diagrametan gehien erabiltzen diren ikurrak. Maizen erabiltzen diren ikurrak honako hauek dira: Terminala: Ikur hau fluxu-diagramaren hasiera eta amaiera adierazteko erabiltzen da. Bi kasu hauetan ikur bera erabiltzen denez, ikurraren barnean hasieran bada INICIO eta amaiera bada FIN idatzi beharko ditugu. Prozesua: Ikur hau algoritmoan egin behar den edozein prozesu- edo ataza-mota adierazteko erabiltzen da. Ikurraren barnean esaldi deskribatzailea edo ekintza-seriea jarri behar dugu. Edozein formatu erabil daiteke, betiere transmititu nahi den ideia garbi adierazten delarik. Sarrera/Irteera: Ikur honek sarrera/irteerako edozein gailuren erabilera adierazten du. Gailu hauek teklatua, pantaila, inprimagailua, etab. izan daitezke. Ikur hau generikoa da eta informazioaren sarrera/irteerako edozein egoeratan erabil daiteke. Alabaina, ezin dugu ahaztu badaudela sarrera/irteerako beste ikur zehatzagoak ere. Erabakia: Ikur hau erabakiren bat hartu behar den guztietan erabiltzen da. Ikurraren barruan ebaluatu behar den galdera edo baldintza idazten da, eta honen arabera exekuzioak hartu behar duen bidea hautatuko da. Ikur honetatik abiatzen den bide bakoitzaren alboan aukera bakoitza identifikatzen laguntzen duen hitza idatziko da. Aldez aurretik zehaztutako prozesua: Ikur honek sortuta dagoen algoritmoaren erabilera adierazten du. Konektorea: Bi zuzentzaile-mota daude. Zuzentzaile bat zirkulu-formakoa da eta ordinograma gune jakin batean eteteko eta orrialde bereko beste gune batean jarraitzeko erabiltzen da. Horrela, konplexuegiak eta jarraitzen zailak gertatzen diren fluxu-diagramak saihesten dira. LANBIDE EKIMENA 11

Beste zuzentzailea era berean erabiltzen da, baina diagrama beste orrialde batean jarraitzea ahalbidetzen du. Zuzentzaile hauek orrialde batean sartzen ez diren ordinograma luzeetan erabil daitezke. Dokumentua: Edozein dokumentu adierazteko erabiltzen da, adibidez inprimagailuaren bidez lortutako zerrenda. Pantaila: Pantailako irteera adierazteko erabiltzen da; eragiketa baten kalkuluak adierazteko, adibidez. Eskuzko sarrera: Ikur honek datuak eskuz hartu direla adierazten du, edo bestela esanda, datuak teklatuaren bidez sartu direla. Disko magnetikoa: Ikur hau disko magnetikotik abiatuta edota disko magnetikorako egiten den sarrerako edo irteerako edozein eragiketa, inolako bereizketarik gabe, adierazteko erabiltzen da. Bestalde, disko gogorrekin zein disketeekin erabil daiteke. Algoritmoa sortu eta fluxu-diagramaren bidez irudikatu dugunean, zein programazio- -lengoaiaren bidez kodetuko dugun jakinik, ordinogramatik lengoaiara igarotzeko teknika aplikatu behar da, bere ezaugarri bereziak kontuan izanik. Itzultzeko teknika hau oso erraza izan ohi da. Fluxu-diagramak oinarrizko elementu batzuk argi adierazi behar ditu, eta hori argi ikus daiteke 1.9. irudian: Diagramaren hasiera (1). Ekintzak (2). Zein sekuentziatan egiten diren (3). Diagramaren amaiera (4). 1.9. irudia. Fluxu-diagramaren oinarrizko elementuak. LANBIDE EKIMENA 12

Bestalde, ordinogramak adierazteko badaude gomendio batzuk eta hauei esker ordinogramak erabiltzen ditugun guztiok irizpide bertsuak erabiltzen ditugu. Jarraitu beharreko gomendioak honako hauek dira: Diagramaren hasiera goiko partean azalduko da. Diagrama-fluxua, ahal dela behintzat, goitik behera eta ezkerretik eskuinera joango da. Diagramaren amaiera beheko partean azalduko da. Hasiera eta amaierako ikurrak behin bakarrik azalduko dira. Ahal den neurrian behintzat, simetria eta oreka gorde behar da diagrama egitean. Lerroak gurutzatzea saihestu egingo dugu. Horretarako konektoreak erabiliko ditugu. Konektore batera fluxu-lerro bat baino gehiago irits daiteke, baina konektoretik fluxu-lerro bakarra irtengo da beti. Ahalik eta iruzkin gutxien erabiliko ditugu, kodifikazioan ez bezala, kodifikazioan iruzkinak ezinbestekoak baitira. 1.10. irudian algoritmo bati dagokion fluxu-diagrama ikus daiteke. Algoritmo honen datua teklatuaren bidez sartu dugu, 0 eta 255 bitartekoa da eta SADen irteera digitaletara bidaliko da ordenagailuaren ataka paraleloa erabiliz. 1.10. irudia. Pantaila garbitu. 1.11. irudia. FlowCharter bidez fluxu-diagramak eraikitzea. LANBIDE EKIMENA 13

Informatika-merkatuan badaude ordinogramak modu erraz eta arinean egiteko programa bereziak, hala nola FlowCharter izenekoa. Programa hauei esker edozein fluxu- -diagrama, organigrama, sareko diagrama, estatista-kontroleko grafiko, enpresa-diagrama, etab. sortu eta azter daiteke. Programa hauek bere baitan fluxu-diagrama elkarreragileak, marrazteko tresnak eta ikur eguneratuak ere izaten dituzte. 3.2. Pseudokodea Pseudokodea giza lengoaiaren eta goi-mailako lengoaien artean dagoen algoritmo zehazteko lengoaia da. Hitz bereiziak erabili ohi ditu eta indentazioa, hau da, ezkerreko aldean koska egitea, ezinbestekoa da. Pseudokodea fluxu-diagramen bi desabantaila nagusiak gainditzeko asmoz asmatu zen, hots sortze-prozesua motela izatea eta marrazki berria egin gabe zuzenketak egiteko zailtasuna gainditzeko. Tresna egokia da oso algoritmoaren logikari jarraitzeko eta algoritmoak programa erraz bihurtzeko ere, programa hauek programazio-lengoaia berezian idatzita daudelarik. Pseudokodea hasiera gako-hitzarekin hasten da beti eta amaiera gako-hitzarekin amaitzen da. Pseudokodearen bitartez algoritmoak idazteko erabiltzen diren beste hitz bereizietan hauek aipa ditzakegu: bai, orduan, baldin- ez, amaiera-baldin, bitartean, amaiera- -bitartean, etab. Algoritmoen irudikapen grafikoak egiten diren bezala, era berean pseudokodearen bidez sarrera/irteerako eragiketen, prozesuaren instrukzioen, kontrol-instrukzioen eta ondoren fintzea ekartzen duten eragiketa konposatuen deskribapena egin daitezke. 1.12. irudian 1.10. irudiko algoritmoari dagokion pseudokodea ikus daiteke. Tekla karaktere izendatu Errepikatu Pantaila garbitu Idatzi idatzi 0 eta 255 bitartean bihurtu nahi duzun datua Irakurri tekla Bidali tekla datu-atakara 13 (0x0D) balioa kontrol-atakara bidali 11 (0x0B) balioa kontrol-atakara bidali bitartean tekla 0 1.12. irudia. LANBIDE EKIMENA 14

4. PROGRAMAZIO EGITURATUA Programazio egituratua idazteko, egiaztatzeko, irakurtzeko eta aldatzen errazak diren programak sortzeko algoritmoak diseinatzeko teknika-multzoak osatzen du. Programa guztietan azaltzen diren elementu komunez gain, programazio egituratuak honako elementu hauek erabiltzen ditu: Beherako diseinua (top-down). Baliabide abstraktuak. Kontrolerako oinarrizko egiturak. Beherako diseinua algoritmoak atalka prestatzean datza, orokorretik abiatuta zehatzenera joanez, behin eta berriro finduz eta deskonposatuz. Baliabide abstraktuak beherako diseinuarentzako osagarri bikaina dira. Programa deskonposatzen den aldiro emaitzan lortzen diren atal guztien irtenbidea aurkitu dela suposatzen da, eta ondorioz, ez dira errealizatuko berriz fintzen diren arte. Kontrolerako oinarrizko egiturei esker, algoritmo konplexuak egin daitezke, ekintza guztiak exekutatzeko modua kontrolatzen baitute. Egitura hauek honako hauek dira: sekuentziala, alternatiboa eta errepikakorra. Kontuan izan behar da algoritmoak programazio egituratuaren teknikak erabiliz prestatzean kontrolerako oinarrizko egiturak bata bestearen barruan egotea gerta daitekeela. Honek egitura sekuentzialaren barnean egitura alternatiboak eta egitura errepikakorrak ager daitezkeela esan nahi du. Era berean, egitura alternatiboen bide desberdinak egitura sekuentzialak, errepikakorrak edo beste egitura alternatiboak izan daitezke. Gauza bera gertatuko da egitura errepikakorraren kasuan. Azkenik, ezin ahaztuko dugu kontrolerako egiturak programazio-lengoaiara lengoaiak berak eginkizun honetarako dituen instrukzioen bitartez itzultzen direla. 4.1. Egitura sekuentziala Egitura sekuentziala algoritmoaren atazak programa exekutatzean atazak egingo diren ordena berean idatziz eraikitzen da. 1 instrukzioa 2 instrukzioa 3 instrukzioa 1.1. taula. Egitura sekuentzialaren pseudokodea. 1.13. irudia. Egitura sekuentzialeko fluxu- -diagrama. LANBIDE EKIMENA 15

4.2. Egitura alternatiboa Egitura honi esker ataza-multzo zehatza burutu ahal izango da baldintza bat betetzearen arabera. Ataza-multzo hau ataza batek edo gehiagok osa dezakete. Egitura alternatiboa hiru motakoa izan daiteke: sinplea, bikoitza eta anizkoitza. Sinplea Baldintza balioztatu egiten da eta emaitza egiazkoa baldin bada, ekintza edo ekintza- -multzo zehatza burutzen da; aldiz, emaitza faltsua baldin bada, ekintza horiek egin gabe geratzen dira. 1.14. irudia. Egitura alternatibo sinpleko fluxu-diagrama. Baldin baldintza Orduan Instrukzioak Amaitu baldin 1.2. taula. Egitura alternatibo sinpleko egitura. LANBIDE EKIMENA 16

Bikoitza Baldintza balioztatu ondoren emaitza egiazkoa baldin bada, ataza edo ataza-multzo zehatza exekutatzen da. Aldiz, emaitza faltsua denean beste zerbait exekutatzen da. 1.15. irudia. Egitura alternatibo bikoitzeko fluxu-diagrama. Baldin baldintza Orduan Instrukzioak egia denean Bestela Instrukzioak faltsua denean Amaitu baldin 1.3. taula. Egitura alternatibo bikoitzeko pseudokodea. LANBIDE EKIMENA 17

Anizkoitza Adierazpenaren balorazioa egin ondoren, emaitzaren arabera, ekintza zehatz batzuk exekutatzen dira. 1.16. irudia. Egitura alternatibo anizkoitzeko fluxu-diagrama. baldin adierazpena 1 kasua 1 kasuko instrukzioak 2 kasua 2 kasuko instrukzioak... N kasua N kasuko instrukzioak amaitu baldin 1.4. taula. Egitura alternatibo anizkoitzeko pseudokodea. LANBIDE EKIMENA 18

4.3. Egitura errepikakorra Egitura hau baldintza jakin bat betetzen den bitartean behin eta berriro exekutatzen den ataza-multzoak osatzen du. Egitura errepikakorrei begizta ere esaten zaie eta hiru motakoak izan daitezke: hemendik, bitartean, arte. Hemendik Begizta klasikoa da eta ataza-multzoa begiztaren barruan zenbat aldiz exekutatu behar den zehazki dakigunean erabiliko dugu. Egitura honek aldagaia (indizea) behar du eta aldagai hau hasierako balioari lotuko zaio automatikoki. Zehaztutako atazak exekutatu egingo dira harik eta hasierako balioa amaierako balioa baino handiagoa den arte. Indizea bat handiagotuko da, edo zehaztu dugun balioa, eta balio berri hau amaierako balioa baino handiago ez baldin bada, atazak berriro exekutatuko dira. indizetik V i -ra V f -raino A gehikuntzaz Instrukzioak amaiera hemendik 1.5. taula. Hemendik egitura errepikakorraren pseudokodea 1.17. irudia. Hemendik egitura errepikakorraren fluxu-diagrama LANBIDE EKIMENA 19

Bitartean Begiztaren hasieran baldintza egiaztatzen da, eta baldintza egiazkoa baldin bada, adierazitako ekintzak exekutatzen dira. Aldiz, baldintza egiaztatzean emaitza faltsua baldin bada, begizta amaitu egiten da. Begizta hau aldez aurretik atazak zenbat bider exekutatu behar diren ez dakigunean erabiltzen da. Horregatik, indize gisa erabiliko den aldagaia hasierako balioari begiztan sartu baino lehen lotu beharko zaio eta bere balioa begiztaren barruan dagoenean eguneratuko da. 1.18. irudia. Bitartean egitura errepikakorraren fluxu-diagrama. bitartean baldintza instrukzioak amaiera bitartean 1.6. taula. Bitartean egitura errepikakorraren pseudokodea. LANBIDE EKIMENA 20

Arte Begiztaren barruan gertatzen diren ekintzak behin exekutatzen dira eta berriro errepikatuko dira baldintza benetakoa izan arte. Egitura honetan baldintza begiztaren amaieran egiaztatzen da eta begiztako ekintzak gutxienez behin exekuta daitezen nahi dugunean erabiliko dugu. 1.19. irudia. Arte egitura errepikakorraren fluxu-diagrama. Errepikatu instrukzioak arte baldintza 1.7. taula. Arte egitura errepikakorraren pseudokodea. LANBIDE EKIMENA 21

4.4. Egitura habiaratuak Bai aldizkako egiturak eta bai egitura errepikakorrak habiara daitezke, hau da, bata bestearen barruan sar daitezke. Begizten kasuan kontuan izan behar dugu begizta bakoitza indize desberdin batek kontrolatu behar duela. 1.20 irudia. Habiaratutako kontrol-egituraren adierazpenak. LANBIDE EKIMENA 22

5. MODULUZKO PROGRAMAZIOA Beherako diseinua erabiliz arazoaren irtenbidea aurki daiteke, beste arazo sinpleagoetan deskonposizioak eginez finketa-maila desberdinen bidez. Moduluzko programazioa deskonposizioaren ondorioz sorturiko azpiarazoei irtenbidea bereizirik aurkitzean datza. Azpiarazoen irtenbidea aurkitzeko egin behar den ataza-multzoak modulu edo azpialgoritmoa osatzen du. C lengoaian modulu hauei funtzio esaten zaie. Moduluzko programazioak beheko diseinua osatu eta zabaldu egiten du arazoen irtenbidea aurkitzeko unean, eta azpiarazoari lotutako informazioa babestea ahalbidetzen du. Honela lan eginda algoritmo nagusi bat dago kontrola modulu edo azpialgoritmoei transferitu egiten diena eta hauek, ataza amaitzean, algoritmoari kontrola itzuli egingo diote. Moduluak txikiak izango dira, programazio egituratuaren arau guztiak beteko dituzte eta ohiko metodoen bitartez adierazi ahal izango dira (fluxu-diagramak eta pseudokodea, hain zuzen). Moduluzko programazioak honako abantaila hauek ditu: Moduluak independenteak dira eta, ondorioz, programatzaile batek baino gehiagok aldi berean lan egin ahal izango du algoritmoa prestatzen, algoritmoaren atalak elkarren artean banatuz. Modulu bat alda daiteke besteengan eragin gabe. Moduluaren atazak behin bakarrik idatziko dira nahiz eta algoritmoan zehar ataza hauek behin baino gehiagotan erabili. 6. C LENGOAIARAKO SARRERA Azken urteotan C lengoaiaren erabilera asko zabaldu da (hemendik aurrera C esango diogu) programatzaile profesionalengan. Horregatik lengoaia hau informatikaren munduan azaldu zenetik makina-mota ugaritan erabili da, makina xumeetan, ordenagailuetan kasu, zein handietan, adibidez mainframe delakoan. C lengoaia Dennis Ritchie-k sortu zuen AT&T-ko Bell Laboratories-en (gaur egun Bell Labs, Lucent Technologies izenekoa). 70eko hamarkadan sortu zuen UNIX sistema eragilearentzat DEC PDP-11 makinarekin. Lehendik ezagunak ziren bi lengoaien emaitza da, BCPL eta B lengoaienak hain zuzen. C lengoaia asmatu zuenean bere asmoa goi-mailako lengoaien (COBOL, FORTRAN) eta behe mailakoen (mihiztatzaileen) arteko programazio- -lengoaia sortzea zen. Programatzaileengan arrakasta handia lortu zuen, eta ondorioz, lengoaia-estandarra sortu behar izan zuen. 1983an, Amerikako Estandarren Institutu Nazionalak (ANSIk) gaur egungo estandarra definitu zuen, ANSI C izenekoa, eta estandar honetan oinarrituta dago liburu hau. LANBIDE EKIMENA 23

6.1. Ezaugarri orokorrak Oso lengoaia zabaldua C ez da programazio- edo aplikazio-mota jakin bat eraikitzeko, datuak manipulatzeko sistemak eta programa zientifikoak ez bezala. C lengoaiarekin, beste lengoaia batzuekin ez bezala, edozein programa-mota egin daiteke ia, bere erabilera nagusia sistemak programatzea bada ere. Kontuan izan behar da gaur egungo UNIX sistema eragile guztiak C-n idatzita daudela, azpirrutina (instrukzio-multzoa) gutxi batzuk salbu, errutina ere esaten zaienak, erabiltzen ari garen makinaren lengoaia mihiztatzailean programatuta baitaude. Garraiagarritasuna Sistema eragile jakin bateko C-n idatzitako edozein programa beste edozein sisteman exekuta daiteke aldaketa txiki batzuk egiten badira. Kasu batzuetan, iturburu-kodean ez da aldaketarik ere egin behar. Mota zorrotzik ez egotea C lengoaia ez da oso murriztailea, hau da, programatzaileak beste lengoaietan gaizki ikusita dauden aldaketa batzuk egin ditzake C-n. Adibidez, C-n programatzaileak arrayaren indizeei kasu egin ez eta datuak kanpoan idatz ditzake. Malgutasun hau dela-eta, lengoaia honek potentzia handia dauka eta sistemak programatzen adituak direnak biziki estimatzen dute ezaugarri hau. Maila ertaineko lengoaia C-n hardwarea errazago programa daiteke. Bere baitan bitak manipulatzeko eragile- -multzo zabala du, eta honela, makina-kodean idatzitako eragiketa posible bakoitzarentzat eragile bat du. Gainera, ondo zehaztutako metodoa du lengoaia mihiztatzailean idatziriko azpirrutinak dituzten C lengoaian idatzitako instrukzioen konbinazioentzat. Lengoaia murriztua Bestela badirudi ere, C-ren nukleoa gako-hitz gutxi batzuek osatzen dute. Aurreratutako eragiketa guztiak, beste lengoaia batzuetan zuzenean sartuta daudenak, liburutegi-funtzioen bitartez burutzen dira. Definizioaren arabera, liburutegia konpilatutako funtzio-multzoa da eta funtzio hauek erabil ditzakeen edozein programak eska ditzake. Liburutegi batzuek sarrera eta irteerako funtzioak dituzte, beste batzuk karaktere-kateen funtzioak dituzte, beste batzuek data eta orduaren funtzioak, etab. Programa eraikitzeko behar diren funtzio osagarri guztiak sor daitezke, jakina. Arretaz sortzen badira, funtzio hauek beste programa batzuetan ere erraz erabili ahal izango ditugu. Lengoaia egituratua eta modularra C-n barnean lengoaia egituratuan egon behar duten kontrol-egitura guztiak daude. Beherako diseinua ere erabiltzen du funtzioetan multzokatutako instrukzioak kodetuz (moduluak). Alabaina, C-n ezin da habiaratutako funtziorik sortu, hau da, ezin dira funtzioak funtzioen barne egon. Gainera, C-n konpilazio eta estekadura kontzeptuak bereizita daude. Metodo honi esker garapenean zehar aldatu egin diren programaren atalak bakarrik konpila daitezke. Ezaugarri hau biziki garrantzitsua izan daiteke ehunka liburutegi dituzten programa handiak garatzen ari direnean, betiere, aldatutako iturburu-fitxategien kopurua handiegia ez denean, jakina. LANBIDE EKIMENA 24

Aldagai erakusleak C-ren ezaugarri eraginkorretako bat erakusleak erabiltzea da. Egia esan programaren edozein datu seinalatzen duten memoria-helbideak dira. Oso erabilgarriak dira datu-egitura dinamikoak (zerrenda estekatuak eta zuhaitzak, besteak beste) sortzeko eta kudeatzeko bereziki, bai eta ordenagailuaren hardwarearen atzipena lortzeko. Errekurtsibitatea C-ak errekurtsibitatea onartzen du eta honi esker funtzio batek bere buruari dei diezaioke. Ezaugarri hau programa handietan ez da ohikoa, eskuarki memoria handia eta prozesu-denbora handia behar baititu. Alabaina, honi esker programa trinkoagoak eta dotoreagoak sor daitezke iturburu-kodearen ikuspegitik. 6.1.1. JARDUERAK Bisurtea gelditzeaz arduratzen den 1.21. irudiko fluxu-diagrama aztertu hementxe zehazten diren urratsei jarraituz: Irudikapen grafikoan erabilitako ikurrak ezagutu behar dituzu. Sarrera-datuak eta irteera-datuak identifikatu behar dituzu. Erabili diren kontrol-egiturak identifikatu behar dituzu. Datuei balio esangarriak emanez, algoritmoaren funtzionamendua egiaztatu behar duzu. Teklatuaren bidez sartutako 50 zenbakien batez bestekoa kalkulatzeaz eta emaitza pantailan agerrarazteaz arduratzen den 1.22. irudiko fluxu-diagrama azter ezazu. Horretarako, hementxe zehazten diren urratsei jarraitu behar zaio: Irudikapen grafikoan erabilitako ikurrak ezagutu behar dituzu. Sarrera-datuak eta irteera-datuak identifikatu behar dituzu. Erabili diren kontrol-egiturak identifikatu behar dituzu. Datuei balio esangarriak emanez, algoritmoaren funtzionamendua egiaztatu behar duzu. Ax 2 + Bx + C = 0 moduan adierazitako bigarren mailako ebazpenari dagokion 1.23. irudiko fluxu-diagrama azter ezazu. Horretarako, hementxe zehazten diren urratsei jarraitu behar zaio: Irudikapen grafikoan erabilitako ikurrak ezagutu behar dituzu. Sarrera-datuak eta irteera-datuak identifikatu behar dituzu. Erabili diren kontrol-egiturak identifikatu behar dituzu. Datuei balio esangarriak emanez, algoritmoaren funtzionamendua egiaztatu behar duzu. Zenbaki baten faktorialaren kalkuluari dagokion 1.24. irudiko fluxu-diagrama azter ezazu. Horretarako, hementxe zehazten diren urratsei jarraitu behar zaio: Irudikapen grafikoan erabilitako ikurrak ezagutu behar dituzu. Sarrera-datuak eta irteera-datuak identifikatu behar dituzu. Erabili diren kontrol-egiturak identifikatu behar dituzu. Datuei balio esangarriak emanez, algoritmoaren funtzionamendua egiaztatu behar duzu. Aurreko algoritmoak pseudokodearen bitartez adieraz itzazu, horretarako programazio egituratuaren teknikak erabiliz. LANBIDE EKIMENA 25

2 C Lengoaiaren oinarrizko kontzeptuak Kapituluaren edukia: 1. Sarrera. 2. C Lengoaiaren datu-motak. 2.1. Identifikatzaileak. 2.2. Datu-motak. 2.2.1. Zenbaki osoak. 2.2.2. Zenbaki Errealak. 2.2.3. Karaktereak. 2.2.4. Konstanteak. 3. Iruzkinak. 4. Sarrera/Irteerarako funtzioak. 4.1. printf ( ) funtzioa. 4.1.1. Formatuen Espezifikatzaileak. 4.1.2. Formatuen Espezifikatzaileen Aldatzaileak. 4.2. scanf ( ) funtzioa. 4.2.1. & eragilea, idirekzio-eragilea. 5. Sarrera eta irteeratarako zenbait funtzio. 5.1. getchar ( ). 5.2. getch ( ). 5.3. getche ( ). 5.4. putchar ( ). 5.5. putch ( ). 6. Espresioak eta eragileak. 6.1. Espresioak. 6.2. Esleipen-zeinua, =. 6.3. Eragile aritmetikoak. 6.3.1. Batuketak egiteko eragileak, +. 6.3.2. Kenketak egiteko eragilea, 6.3.3. Zeinua Eragilea,. 6.3.4. Biderkaketak egiteko eragilea, *. 6.3.5. Zatiketak egiteko eragilea, /. 7. Bihurketak eragiketa aritmetikoetan eta espresioetan. 8. Erlazio-eragileak. 9. Eragile logikoak. 10. Beste zenbait eragile. 10.1. Modulua eragilea, %. 10.2. Inkrementua ++ eta Dekrementua Eragileak. 10.3. Eragile konbinatuak. 11. Eragileen lehentasuna. 12. Proposatutako ariketak. 1. SARRERA C lengoaia 1972.ean D. Ritchie-k sortu zuen AT&T-ko laborategietan, UNIX sistema eragilea garatzen ari zen bitartean, Ken Thompson-arekin batera. Gaur egun, C-ren aplikazio- -esparrua ezin da mugatu. Ingeniaritzaren ia arlo guztietan ikus daiteke. Gero eta aplikazio gehiago garatzen dira C lengoaia erabiliz, eta Telekomunikazio Ingeniarientzat erabili beharreko tresna dela esan genezake. Behar bada, C lengoaiaren arrakasta, besteak beste, ondoko ezaugarri hauetan datza: Oso lengoaia sinple eta ahaltsua da. Mota guztietako programak idatz daitezke C-z idatzitako programak konpilatu ondoren, oso eraginkorrak izaten dira; oso trinkoak (memoria-zati txikia hartzen dute) eta azkarrak. C lengoaia oso trukagarria da. Beraz, iturburu-lengoaiaz makina batean idatzitako programak besteetara eraman eta aldaketarik gabe konpila eta exekuta daitezke. Goi-mailako lengoaia bada ere, baliabide fisikoetatik gertu dauden kontzeptuak (erregistro orokorrak, bitak, sarrera/irteerako gailuak, etab.) erabil daitezke. Aplikazio- -mota batzuetarako oso interesgarriak dira. Bestalde, programatzaileek diziplina handiz eta zorrotz jokatu behar dute, lan-taldeko pertsona guztiek programak ulertu ahal izateko. LANBIDE EKIMENA 26