Kaj je pogojna izjava v jeziku C?
Pogojne izjave v programiranju C se uporabljajo za odločanje na podlagi pogojev. Pogojni stavki se izvajajo zaporedno, kadar okoli stavkov ni pogoja. Če postavite nek pogoj za blok stavkov, se lahko tok izvajanja spremeni na podlagi rezultata, ki ga ovrednoti pogoj. Ta postopek se imenuje odločanje v 'C.'
V programiranju 'C' so pogojni stavki možni s pomočjo naslednjih dveh konstruktov:
1. Če izjava
2. Izjava if-else
Imenuje se tudi kot razvejanje, saj se program na podlagi rezultata ocenjenega pogoja odloči, kateri stavek bo izvedel.
V tej vadnici boste izvedeli-
- Kaj je pogojna izjava?
- Če izjava
- Relacijski operaterji
- Izjava If-Else
- Pogojni izrazi
- Ugnezdene izjave if-else
- Ugnezdeni stavki Else-if
Če izjava
To je ena močnih pogojnih izjav. Če je stavek odgovoren za spreminjanje poteka izvajanja programa. Če se stavek vedno uporablja s pogojem. Pogoj se najprej oceni, preden se izvede kateri koli stavek v telesu If. Sintaksa stavka if je naslednja:
if (condition)instruction;
Pogoj je ovrednoten kot true ali false. True je vedno vrednost, ki ni nič, in false je vrednost, ki vsebuje nič. Navodila so lahko eno navodilo ali blok kode, ki ga zapirajo kodraste oklepaje {}.
Naslednji program ponazarja uporabo if konstrukta pri programiranju 'C':
#includeint main(){int num1=1;int num2=2;if(num1 Izhod:
num1 is smaller than num2Zgornji program ponazarja uporabo konstrukta if za preverjanje enakosti dveh števil.
- V zgornjem programu smo inicializirali dve spremenljivki z num1, num2 z vrednostjo 1, 2.
- Nato smo s testnim izrazom preverili, katero število je najmanjše in katero največje. V konstruktu if smo uporabili relacijski izraz. Ker je vrednost num1 manjša od num2, bo stanje ocenjeno na true.
- Tako bo izjavo natisnil znotraj bloka If. Po tem bo nadzor šel zunaj bloka in program bo zaključen z uspešnim rezultatom.
Relacijski operaterji
C ima šest relacijskih operatorjev, ki jih lahko uporabimo za oblikovanje logičnega izraza za odločanje in preskusne pogoje, ki vrne true ali false:
<= manj ali enako
> večje od
> = večje ali enako
== enako
! = ni enako
Upoštevajte, da se enakovreden test (==) razlikuje od operaterja dodelitve (=), ker je eden najpogostejših problemov, s katerimi se sooča programer, ko jih pomeša.
Na primer:
int x = 41;x =x+ 1;if (x == 42) {printf("You succeed!");}Izhod:
You succeedUpoštevajte, da se pogoj, ki se izračuna na vrednost, ki ni enaka nič, šteje za resnično.
Na primer:
int present = 1;if (present)printf("There is someone present in the classroom \n");Izhod:
There is someone present in the classroomIzjava If-Else
Stavek if-else is je razširjena različica If. Splošna oblika if-else je naslednja:
if (test-expression){True block of statements}Else{False block of statements}Statements;pri tej vrsti konstrukcije, če je vrednost preskusnega izraza resnična, bo izveden blok stavkov true. Če je vrednost test-expression, če je false, bo izveden false blok stavkov. V vsakem primeru se bo po izvedbi nadzor samodejno prenesel na stavke, ki se pojavijo zunaj bloka If.
Naslednji programi ponazarjajo uporabo konstrukta if-else:
Inicializirali bomo spremenljivko z neko vrednostjo in napisali program, s katerim bomo ugotovili, ali je vrednost manjša od deset ali večja od deset.
Začnimo.
#includeint main(){int num=19;if(num<10){printf("The value is less than 10");}else{printf("The value is greater than 10");}return 0;} Izhod:
The value is greater than 10
- S pomočjo programa 'C' smo inicializirali spremenljivko z vrednostjo 19. Ugotoviti moramo, ali je število večje ali manjše od 10. Za to smo uporabili konstrukt if-else.
- Tu smo podali pogoj številka <10, ker moramo svojo vrednost primerjati z 10.
- Kot lahko vidite, je prvi blok vedno pravi blok, kar pomeni, da če je vrednost test-expression true, se izvede prvi blok, ki je If.
- Drugi blok je blok else. Ta blok vsebuje stavke, ki se izvedejo, če vrednost testnega izraza postane false. V našem programu je vrednost num večja od deset, zato testni pogoj postane false in sicer se izvede blok. Tako bomo dobili izhod iz bloka else, ki je "Vrednost je večja od 10". Po if-else se program zaključi z uspešnim rezultatom.
Pri programiranju 'C' lahko med seboj uporabimo več konstruktov if-else, ki se imenujejo gnezdenje stavkov if-else.
Pogojni izrazi
Obstaja še en način izražanja stavka if-else z uvedbo operaterja ?: . V pogojnem izrazu ima operater ?: Samo en stavek, povezan z if in ostalim.
Na primer:
#includeint main() {int y;int x = 2;y = (x >= 6) ? 6 : x;/* This is equivalent to: if (x >= 5) y = 5; else y = x; */printf("y =%d ",y);return 0;} Izhod:
y =2Ugnezdene izjave if-else
Ko je potrebna vrsta odločitve, se uporabi ugnezdeni if-else. Gnezdenje pomeni uporabo enega konstrukta if-else znotraj drugega.
Napišimo program za ponazoritev uporabe ugnezdenega if-else.
#includeint main(){int num=1;if(num<10){if(num==1){printf("The value is:%d\n",num);}else{printf("The value is greater than 1");}}else{printf("The value is greater than 10");}return 0;} Izhod:
The value is:1Zgornji program preveri, ali je število manjše ali večje od 10, in rezultat natisne z uporabo ugnezdenega konstrukta if-else.
- Najprej smo deklarirali spremenljivko num z vrednostjo 1. Nato smo uporabili konstrukt if-else.
- V zunanjem if-else podani pogoj preveri, ali je število manjše od 10. Če je pogoj resničen, bo in šele nato izvedel notranjo zanko. V tem primeru je pogoj resničen, zato se obdela notranji blok.
- V notranjem bloku imamo spet pogoj, ki preverja, ali naša spremenljivka vsebuje vrednost 1 ali ne. Ko je pogoj resničen, bo obdelal blok If, sicer pa blok else. V tem primeru je pogoj resničen, torej če se izvede blok in vrednost izpiše na izhodnem zaslonu.
- Zgornji program bo natisnil vrednost spremenljivke in uspešno zaključil.
Poskusite spremeniti vrednost spremenljivke in si oglejte, kako se program obnaša.
OPOMBA: Pri ugnezdenih if-else moramo biti previdni z zamikom, ker je v ta postopek vključenih več konstrukcij if-else, zato je težko ugotoviti posamezne konstrukte. Pravilno zamikanje olajša branje programa.
Ugnezdeni stavki Else-if
Vgnezdeno else-if se uporablja, kadar so potrebne odločitve za več poti.
Splošna sintaksa, kako drugače so lestvice zgrajene v programiranju 'C', je naslednja:
if (test - expression 1) {statement1;} else if (test - expression 2) {Statement2;} else if (test - expression 3) {Statement3;} else if (test - expression n) {Statement n;} else {default;}Statement x;Ta vrsta konstrukcije je znana kot lestev else-if. Ta veriga je na splošno videti kot lestev, zato jo imenujemo tudi lestev drugače. Testni izrazi se ovrednotijo od zgoraj navzdol. Kadar koli je resnični testni izraz, če ga najdete, izveden z njim povezan stavek. Ko vseh n testnih izrazov postane false, se izvede privzeti stavek else.
Oglejmo si dejansko delo s pomočjo programa.
#includeint main(){int marks=83;if(marks>75){printf("First class");}else if(marks>65){printf("Second class");}else if(marks>55){printf("Third class");}else{printf("Fourth class");}return 0;} Izhod:
First classZgornji program natisne oceno glede na ocene, pridobljene na testu. V zgornjem programu smo uporabili konstrukcijo lestve else-if.
- Spremenljivko smo inicializirali z oznakami. V strukturi lestve else-if smo zagotovili različne pogoje.
- Vrednost iz spremenljivk bo primerjana s prvim pogojem, saj je res, da bo z njo povezan izpis natisnjen na izhodnem zaslonu.
- Če se prvi testni pogoj izkaže za napačnega, se primerja z drugim pogojem.
- Ta postopek se bo nadaljeval, dokler ne bo ovrednoten celoten izraz, sicer bo nadzor izstopil iz lestve else-if in bo natisnjen privzeti stavek.
Poskusite spremeniti vrednost in opazite spremembo v izhodu.
Povzetek
- Stavki odločanja ali razvejanja se uporabljajo za izbiro ene poti na podlagi rezultata ocenjenega izraza.
- Imenuje se tudi kot stavki nadzora, ker nadzoruje potek izvajanja programa.
- „C“ določa konstrukcije if, if-else za izjave odločanja.
- Če je treba preizkusiti več poti, lahko med seboj ugnezdimo tudi drugače.
- Lestev else-if se uporablja, kadar moramo na podlagi rezultata izraza preveriti različne načine.