C programazio-lengoaia (eta XV). Aplikazioak II
1992/05/01 Alegria Loinaz, Iñaki | Maritxalar, Montse Iturria: Elhuyar aldizkaria
Kapitulu honetan erabilpen orokorreko funtzio-multzo bat definituko dugu, funtzio-multzo hau liburutegi batean gorde eta edozein aplikaziotatik erabil daitekeelarik.
Definituko dugun funtzio-multzoak listak maneiatzeko datu-mota berria osatuko du, eta aplikazio batek listak erabili nahi baditu, datu-mota berri horren bidez egin dezake C liburutegi estandarreko funtzioak balira bezala. Beraz, has gaitezen listak eta dagozkien funtzioak definitzen.
Lista bat bi erakuslek definituko dute, bata lehen osagaia adierazteko eta bestea azkena adierazteko izango direlarik. Listaren osagai bakoitzak badu erakusle bat listaren ondoko osagaia adierazteko, osagaiaren informazioaren erakuslea eta lehentasuna, zeren osagaiak lehentasunaren arabera txertatzeko aukera bait dago. 1. programan lista_def.h fitxategiaren edukina azaltzen da, bertan lista egin eta osagaia definitzen delarik.
Ondoren aplikazioek beharko dituzten listen gaineko funtzioak diseinatu eta definitu egin behar dira.
Diseinuaren aldetik, funtzioak zeintzuk izango diren zein motatakoak eta zein parametro izango dituzten da zehaztu behar dena. Hasteko, lista huts bat sortzeko funtzioa beharko dugu; sortu izenekoa parametro bakartzat listaren erakuslea izango duena. Lista hutsa den ala ez jakiteko, funtzio boolear bat izango dugu parametro bakarrarekin; huts funtzioa alegia. Listetan osagaiak erantsi eta kendu egiten direnez, hauexek izango dira funtzio nagusiak: bukaeran eranstea (lehentasuna kontutan hartu gabe) edo lehentasunaren arabera eranstea, eta lehen osagaia kentzea edo lehentasun jakin baten lehen osagaia kentzea. Lau funtzio hauei lotu, txertatu, lehena eta atera izenak dagozkie eta ondoko ezaugarriak egokituko dizkiegu:
- lotu eta txertatu eransteko funtzioak direnez, bi parametro izango dituzte, lista eta osagaia, (erakusleen bidez) eta ez dute baliorik itzuliko.
- lehena eta atera funtzioek osagai bat listatik kentzen dutenez, osagai horren erakuslea itzuliko dute, bietan parametro bakartzat listaren erakusle agertuz.
- atera funtzioan listaren gain beste parametro bat zehaztu behar da, lehentasuna hain zuzen; horretarako lehen osagaia kendu behar bait da listatik.
Diseinatutako funtzioak lista_fun.h fitxategian isladatuko dira; aplikazioetan fitxategi hau listen gaineko funtzioak erazagutzeko erabiliko bait da.
Ondoko programetan 3.etik 8.erarte funtzioen definizioari ekin diogu, definizioak denak fitxategi batean edo fitxategi bereiztuetan egon daitezkeelarik. Fitxategi bakoitzeko hasieran #include lista_def.h sententzia zehaztu beharko da.
Lehen irudian egoera arrunta isladatzen da, hau da, txertatzen den elementua lehena edo azkena ez denekoa.
lotu eta txertatu funtzioen alderantzizkoak lehena eta atera funtzioak dira; elementu bat lotu beharrean kendu egiten bait dute.
Funtzio hauek konpilatu ondoren, liburutegi batean gordetzea komeni da; horrela aplikazioetatik erreferentziatzen direnean estekatzeko prozedura erraztu egiten bait da. Aurreko kapituluko funtzioak ez ziren liburutegi batean kokatzen, aplikazio jakin baterako idatzita zeudelako, baina kapitulu honetako funtzioen helburua edozein aplikaziotarako datu-mota berria eskaintzea denez, liburutegi batean kokatzea da prozedura estandarra.
Objektu-moduluak liburutegietan gordetzeko sistema eragile bakoitzak komandoren bat dauka, 11. kapituluan esan genuenez.
Liburutegia osatuta edukiz gero, ikus dezagun liburutegian gordetako aipatutako funtzioak nola erabil dlaitezkeen.
Adibide batez azalduko dugu. Pentsa dezagun aurreko kapituluko datu-basean liburuak publikazio-dataren arabera listatu nahi ditugula. 9. programan azaltzen denaren arabera, lista bat definituko dugu eta listaren osagaiak memoria dinamikoan kokatuko dira.
Ondokorako erakusleak, publikazio-datak lehentasun gisa eta dagokion libururako erakusleak osatzen dute listaren osagai edo elementu bakoitza. Liburu guztiak korrituz lista osatu ondoren, osagaiak ordenean atera eta inprimatuko dira.
Konturatu lista eta elementuak, orain arte memoria asignaturik ez zeukatenez, programa nagusian definitu direla, bata memoria estatikoan eta memoria dinamikoan besteak. Bestetik, listei dagozkien funtzioen erazagupena ez da egiten, lista_fun.h fitxategia txertaturik dago eta.
Programa estekatzean listei dagokien liburutegia aipatu beharko da.
Gai honi buruzko eduki gehiago
Elhuyarrek garatutako teknologia