C programazio-lengoaia (XIV). Aplikazioak I
1992/04/01 Alegria Loinaz, Iñaki | Maritxalar, Montse Iturria: Elhuyar aldizkaria
Kapitulu honetan aurreko kapituluetan aztertutako kontzeptu gehienak praktikan jarri nahi ditugu eta horretarako aplikazio bat programatuko dugu; liburutegi txiki baten kudeaketa hain zuzen.
Interesatzen zaigun aurreneko erabakia erregistroari buruzkoa da, hau da, liburu bakoitzari buruz mantenduko dugun informazioari buruzkoa. Pentsa dezagun ondoko informazioa gordeko dela: liburu-kodea, izenburua, idazlea, urtea eta liburu-motaren kodea. Erregistro hau funtzio gehienetan erabiliko denez, liburu.h fitxategian erregistroaren definizioa egingo dugu (ikus 1. programa).
![](images/A58028.jpg)
![](images/A58028-a.jpg)
Erregistro honekin oinarrizko bi eragiketa egingo dira: informazioa teklatutik irakurtzea eta pantailan idaztea. Funtzio hauek aparte konpilatuko ditugu. Beraz fitxategi batean kokatuko dira; lib_oinarri.c izeneko fitxategian gure kasuan, 2. programan ikusten den bezala.
Pantailaren maneiua hobe daiteke. Horretarako sistema berrietan leiho-sistema (windows) bat erabiltzen da datuak teklatu zein saguaren (mouse) bidez sar daitezkeelarik. Zoritxarrez sistema hauek programatzeko liburutegiak ez dira estandarrak eta horrexegatik ez ditugu hemen azaldu.
Pentsa dezagun orain gure liburuei buruzko datu-basean zein eragiketa-mota egin daitezkeen. Hasiera batean gutxienez ondoko eragiketek egon beharko lukete: liburuen sarrera, liburuen listatua eta liburuen kontsulta. Liburuen kontsultari dagokionean ondoko erizpideak hartu beharko lirateke kontutan: kodea (horrela liburu bakarraren informazioa lortuz), idazlea, urtea (daten arteko tarteak onartuz) eta mota. Kontsulta hauek azkar egiteko bi aukera daude: batetik liburuen datu-basea txikia izan eta memoriara ekarri hasieran, horrela kontsultak azkarrago burutuz, eta bestetik, indizeak eraiki beste fitxategi batzuetan datu-basea eraiki ahala, eta kontsultak egitean indize hauek erabiliz datu-basea irakurri.
Bigarren hau orokorragoa da, eta horrexegatik datu-base sistemetan erabiltzen da, baina artikulu-sail honen helburuetatik kanpo dago; oso programa-multzo konplexua gertatzen bait da. Beraz, lehenengoari ekingo diogu. Dena den, liburuaren kodea sekuentziala dela kontsideratuko dugu. Horrela kodearen araberako kontsulta berehalakoa izango da; irakurketa sekuentziala, memorian edo fitxategian, ez bait da egin beharko. Beraz, programa nagusiak egingo duena honako hau izango da: datu-basea duen fitxategia ireki, fitxategia memoriara ekarri, pantailan menu bat azaldu aukera desberdinak emanez, aukera bat irakurri eta aukeraren arabera funtzio berezitu bati deitu. 3. programan hori burutzen duen programa dugu.
![](images/A58028-b.jpg)
Konturatu sarrera, listatu, kon_kod eta kon_beste funtzioak programa nagusian definitu gabe daudela, baina extern bezala erazagutu ditugula. Funtzio hauen definizioa 4 fitxategi desberdinetan egin daiteke, 4., 5., eta 6. programan azaltzen den bezala; listatu funtzio ez bait dugu azalduko. garbi_pantaila funtzioa ere extern bezala erazagutu da; lib.oinarria fitxategian bait dago. Beraz, ez da definitu behar. Ezta fitxategi horren # include egin behar ere; estekatzaileak (linker) lotura egingo bait du.
![](images/A58028-c.jpg)
![](images/A58028-d.jpg)
![](images/A58028-e.jpg)
Erroreen maneiua askoz ere konplexuago egin zitekeen, baina ahalik eta laburren egin dugu garrantzia ekintza nagusiei ematearren.
Beraz, 6 modulu ditugu: liburu.h, lib.oinarri.c, nagusi.c, sarrera.c, kon_kod.c eta kon_beste.c. listatu.c modulua ez da azaltzen idatz funtzioa antzekoa delako, baina inprimagailua maneiatuz eta for egitura batez kontrolaturik.
Modulu hauen dependentzia hierarkikoa lehen irudian azaltzen da. Bertan ez da agertzen liburu.h modulua izenburu-fitxategia delako eta beraz beste moduluetan # include sasiaginduaren bidez txertatzen delako.
![](images/A58028-f.jpg)
Konpilatzeko, lehenbizi lau modulu eznagusiak banan-banan konpilatzen dira, dagozkien .0 objektu-moduluak lortuz. Ondoren, programa nagusia konpilatu eta estekatu egiten da azken honetarako aurretik lortutako objektu-moduluen izenak aipatu egin behar delarik. Estekaketaren ondorioz moduluen arteko erreferentzi gurutzatuak ebaztu eta programa exekutagarri bakarra lortzen da.
Oharra: Argazkiak ongi ikusteko, jo ezazu PDF-ra.
![](https://elia.eus/static/elhuyar/img/elia_RGB.png)
Gai honi buruzko eduki gehiago
Elhuyarrek garatutako teknologia