Biak (if kontrol-egitura eta if-else kontrol-egitura) bat dira else zatia aukerakoa delako. Kontrol-egitura hauek baldintzazko aginduak dira eta programan erabakiak hartzeko balio dute. Hona hemen bakoitzaren eskemak:
Esan bezala, kontrol-egitura honi esker programa batean gauzatu beharreko ekintzari buruzko erabakia hartzerik dago, adierazpen baten emaitzan oinarrituta (adierazpen emaitza egiazkoa izatean edo adierazpen emaitza faltsua izatean, bide bat ala beste hartuz). Hau da bere sintaxia:
if (adierazpena) agindu_1;
[else agindu_2;]
Non...
adierazpena:
Adierazpen numerikoa, erlazionala edo logikoa izan behar du. Adierazpena ebaluatzean lortzen den emaitza bi motatakoa izan daiteke: egiazkoa (zero ez dena) edo faltsua (zero dena).
agindu_1:
Sententzia sinplea edo konposatua adierazten du. Sententzia konposatua bada, agindu bakun bakoitza ; sinboloz bukatzen da. Kodearen zati hau exekutatuko da: adierazpena zero ez bada.
else agindu_2:
Kortxeteek hautazkotasuna adierazten dute, bloke hau ager daiteke edo ez. Sententzia sinplea edo konposatua adierazten du agindu_2k. Sententzia konposatua bada, agindu bakun bakoitza ; sinboloz bukatzen da. Kodearen zati hau exekutatuko da: adierazpena zero bada.
Esan bezala, else aukerakoa da. Baina baldin bada, baldintza egiazkoa bada, if-ari lotutako zatia exekutatuko da; faltsua bada, else-ri lotutako zatia exekutatuko da. Adibide bat ikus dezagun:
/* IF-ELSE_KartesiarPolar: erabakiak hartzen */
// atan(), sqrt() eta pow() funtzio estandar matematikoak ikasiko
// ditugu, horiek erabiltzeko "math.h" fitxategia derrigorrezkoa da.
// if agindua ikasiko dugu.
/*
XY planoan dagoen P puntu baten koordenatu kartesiarretan (fPx, fPy) teklatutik
irakurri eta P puntuari dagozkion koordenatu polarrak lortu (distantzia, angelua).
P puntuaren koordenatu polarraren angelua radianetan pantailaratu.
P puntua ezin daiteke "OY" ardatzean egon, bere tangenteak infinitoren balioa
hartuko zukeelako. Beraz, fPx abzisa ezin daiteke 0.0 izan eta hori izango da,
hain zuzen ere, programaren fluxoa erabakitzeko baldintza.
*/
#include <stdio.h>
#include <math.h> // atan(), pow() eta sqrt() funtzio estandarrak
int main()
{
float fPx, fPy, fDist, fAng;
printf("\n\nZenbaki errealekin lan eginez...\n\n");
printf("\"P\" puntuaren x koordenatua eman: ");
scanf("%f", &fPx);
if (fPx == 0.0)
printf("\a\"P\" puntuaren abzisa ezin daiteke 0.0 izan. Programa bukatzera doa...");
else
{
printf("\"P\" puntuaren y koordenatua eman: ");
scanf("%f", &fPy);
fDist = sqrt(pow(fPx, 2) + pow(fPy, 2));
fAng = atan(fPy/fPx);
printf("\nOP Distantzia = %f unitate", fDist);
printf("\nAlfa angelua = %f radian", fAng);
printf("\n\nKoordenatuak: (%.3f, %.3f) = [%.3f | %.3f]", fPx, fPy, fDist, fAng);
}
printf("\n\n");
return 0;
}
if-else sententziak habia eginda egon daitezke bata beste baten barruan. Hau da, agindu_1 edo agindu_2 gisa, beste if-else sententzia bat idatz daiteke.
if-else sententzietan, if zatia eta else zatian parekatuta daude; eta programa batean if-else sententziak habiaratuta agertzen direnean, ez da beti erraza izaten jakitea zein else doan zein if-arekin. Halakoetan, sententzia horietako bakoitza bereizteko araua da:
else bakoitza parekatu ez den if hurbilenari dagokio.
Eskematikoki:
![]() |
| Eskumako kasuan bigarren if-a da else-tik hurbilen dagoena, baina ezkerreko kasuan lehenengo if-a parekatzen da dagoen else bakarrekin |
if-else sententziak bata beste baten barruan egon daitezkeela dakigu eta zenbat if-else habiaratu daitekeen ez denez mugatzen, honelako kateak ikusi ohi dira programentan:
if (adierazpen_1)
aginduak_1;
else if (adierazpen_2)
aginduak_2;
else if (adierazpen_3)
aginduak_3;
...
else aginduak_n
Non...
adierazpen_1, adierazpen_2, ... adierazpen_n:
Adierazpen xeheak ala konposatuak izan daitezkeen.
aginduak_1, aginduak_2, ... aginduak_n:
Sententzia sinpleak edo konposatuak adierazten duten.
Azalpena: adierazpen_1 betetzen bada, aginduak_1 exekutazten dira, eta adierazpen_1 betetzen ez bada, hurrengo baldintzak sekuentzialki aztertzen dira eta else-if bikoteen baldintzak betetzen badira dagozkien aginduak exekutatuko dira. Adierazpen guztiak faltsuak badira, azken else-ri lotutako aginduak_n aginduak betearaziko dira. IF-ELSE-IF-ELSE-...-IF-ELSE segidari dagokion eskema eta adibide bat ikus ditzagun:
![]() |
| Irudia handiago ikusteko bere gainean klik egin |
/* IF-ELSE-IF-ELSE-IF-ELSE_adibidea */
#include <stdio.h>
int main()
{
int iDatua;
printf("\n\n\t Zenbaki osoekin lan eginez...\n\n");
printf("\t Datua eman: ");
scanf("%d", &iDatua);
if (iDatua <= 0)
printf("\t Datua zero edo negatiboa izan da\n");
else if (iDatua <= 10)
printf("\t Datua 1 eta 10 artekoa izan da (biak barne)\n");
else if (iDatua <= 20)
printf("\t Datua 11 eta 20 artekoa izan da (biak barne)\n");
else if (iDatua <= 30)
printf("\t Datua 21 eta 30 artekoa izan da (biak barne)\n");
else if (iDatua <= 40)
printf("\t Datua 31 eta 40 artekoa izan da (biak barne)\n");
else
printf("\t Datua 41 edo handiago izan da\n");
printf("\n\n");
return 0;
}
if-else sententziak bata beste baten barruan egon daitezkeela dakigu. Badakigu ere programa batean if-else sententziak habiaratuta agertzen direnean, ez dela beti erraza izaten jakitea zein else doan zein if-arekin. Holako zalantzak ekiditeko bide bat da if sententzia bakar batean bi if sententzia biltzea, hori bai, bere adierazpena izan dadila baldintza konposatu egoki bat. Adibidez:
/* IF-ELSE_BaldintzaKonposatua: IF-ELSE bakarrean adierazpen konposatua */
// Erabaki datua positiboa dela eta aldiberean 100 baino txikiagoa.
// Datua mugen artean badagoenean kalkuluak egingo dira, bestela ez.
#include <stdio.h>
int main()
{
int iDatua, iHondarra;
printf("\n\nZenbaki osoekin lan eginez...\n\n");
printf("Datua eman: ");
scanf("%d", &iDatua);
if (iDatua < 0) // baldintza 1
printf("Datua ezin daiteke negatiboa izan. \nEz dakigu zenbakia bakoitia ala bikoitia den.");
else
{
if (iDatua >= 100) // baldintza 2
printf("Datua ezin daiteke 100 edo handiagoa izan. \nEz dakigu zenbakia bakoitia ala bikoitia den.");
else
{
printf("Emandako %d datua mugen artean dago eta bere izaera erakutsiko dugu.\n", iDatua);
iHondarra = iDatua % 2;
if (iHondarra == 1)
printf("Emandako %d da bakoitia da.", iDatua);
else
printf("Emandako %d da bikoitia da.", iDatua);
}
}
printf("\n\nZenbaki osoekin jarraituz...\n\n");
printf("Datua eman: ");
scanf("%d", &iDatua);
if (iDatua < 0 || iDatua > 99) // baldintza konposatua
printf("Datuaren mugak 0 eta 99 dira. Programa bukatzera doa...");
else
{
printf("Emandako %d datua mugen artean dago, ikus dezagun 3-ren anizkoitza den.\n", iDatua);
iHondarra = iDatua % 3;
if (iHondarra == 0)
printf("Emandako %d datua 3-ren anizkoitza da.", iDatua);
else
printf("Emandako %d datua ez da 3-ren anizkoitza.", iDatua);
}
printf("\n\n");
return 0;
}





iruzkinik ez:
Argitaratu iruzkina