Kontrol-egituren bidez espresioak aukeratu edo errepikatzeko aukera dago. Aurreko kapituluan azterturiko espresioak erabiliz programa guztiz linealak eta sekuentzialak idatz daitezke, baina programa gehienetan datuen arabera zenbait agindu exekutatu ala ez erabaki behar da, baldintzazko egituren bidez, eta agindu-multzoen egikaritzapena errepikatu egitura errepikakorrak erabiliz. Egitura hauek C lengoaiaz nola idatzi eta erabili da kapitulu honen helburua.
Baldintzazko egituren artean bi dira erabilienak eta C lengoaiak bi hauek dauzka: baldin egitura (if) eta aukera (switch). Lehenengoan espresio logiko baten balioaren arabera bi adarren artean aukeratzen da. Bigarrenean, aldiz, aukeran nahi adina adar jar daitezke.
Egitura errepikakorretan C oso aberatsa da; hiru motakoak bait dauzka: bitartean (while), errepika (do/while) eta aldatuz (for). Beren ezaugarriak aurrerago aztertuko ditugu.
Egitura edo sententzia hau edozein lengoaiatan dago eta C-n ezaugarri orokorrak matendu egiten ditu, hau da, espresio logiko bat ebaluatzen da eta emaitzaren arabera ondokoari ala bestela ri (else) dagokion adarra egikarituko da.
Egiturari dagokion sintaxia honako hau da:
Ikus daitekeenez bestela adarra aukerakoa da, agerpenaren arabera egitura osoa edo sinplea bereiziz.
Adibidez, ondoko programa-zatian agertzen den if egitura sinplea da.
Aldiz, honako zati honetan egitura osoa dugu:
Ondoko ñabardura hauek hartu behar dira kontutan:
Egitura honen bidez espresio baten balioaren arabera nahi dugun adinako adar-kopurua sor daiteke, adar bakoitza case hitz gako batez hasten delarik (azkenekoa izan ezik; default hitz gakoaz has bait daiteke). Dagokion sintaxia honako hau da:
Ikus daitekeenez, adarretan espresioak aukerakoak dira default adarra bezala. Adar batean espresio bat baino gehiago jartzen bada, ez da { eta } jarri behar, baina ; karaktereaz bukatu behar du bakoitzak.
Exekuzioan swicth bat aurkitzen denean, baldin-espresioa ebaluatzen da eta balioaren arabera bilatzen da zein adarretan espresio kontanteak balio berbera duen. Horrelako adarrik aurkitzen bada, adar horri eta gainerako hurrengoei dagozkien sententziak burutzen dira. Pascal-eko “case” egituran, adarrari dagozkion espresioak baino ez dira burutzen. Dena den, C-z horrelakorik nahi bada, adarretako azken espresioa break izango da
.Espresioak duen balioa adarretan aurkitzen ez bada, default adarraren espresioak burutuko dira, adar hau idatzi bada noski.
2. programan switch-aren erabilpen konbentzionala (break erabiltzen duena) azaltzen da.
Egitura errepikakor orokorrena da Pascal-eko “while-do” sententzia bezalakoa. Sintaxiaren aldetik:
Baldin-espresioa ebaluatzen da eta egiazkoa (ez Ø) bada, egiturari dagozkion espresioak burutzen dira eta espresioa ebaluatzera itzultzen da, bigizta osatuz.
Espresioaren ebaluazioa faltsua denean, ondoko sententziara pasatzen da.
Parentesien arteko espresioa da errepikatzeko baldintza eta beste espresioa edo espresio-multzoa errepikatzen den gorputza. Gorputzak sententzia bat baino gehiago badu { hasieran eta } bukaeran beharrezko dira. 4. programan erabilpen bat ikus daiteke.
While
egituraren aldaketa honetan, baldintzaren ebaluazioa bigiztaren bukaeran gertatzen da. Beraz, do-while egitura honetan gorputza gutxienez behin exekutatzen da. Aldiz, while egituran behin ere ez burutzea gerta daiteke lehen ebaluazioa faltsua bada. Gainerakoan berdin-berdinak dira.
Egituraren sintaxia honako hau da:
5. programan do-while faktorialaren programan egindako aldaketak ikus daitezke.
if
berria erabiltzen da Ø eta 1-en faktorialak ondo buru daitezen.
Hurrengo kapituluan egiturekin segituko dugu eta adibideen laguntzaz kontrol-egituren erabilpena sakonduko dugu.