Uvjetne naredbe u C-u: If, Else, Nested If s primjerom
โก Pametni saลพetak
Uvjetne naredbe u C-u kontroliraju tok programa izvrลกavanjem blokova koda samo kada se testirani uvjet isplati, omoguฤujuฤi donoลกenje odluka putem if, if-else, ugnijeลพฤenih i else-if ljestviฤastih konstrukcija.

ล to je uvjetna izjava u C-u?
Uvjetne naredbe u C programiranju koriste se za donoลกenje odluka na temelju uvjeta. Uvjetne naredbe izvrลกavaju se sekvencijalno kada ne postoji uvjet oko naredbi. Ako postavite neki uvjet za blok naredbi, tok izvrลกavanja moลพe se promijeniti na temelju rezultata koji se procjenjuje uvjetom. Taj se proces u 'C' naziva donoลกenje odluka.
Za razliku od petlje u C-u koji ponavljaju kod, uvjetne naredbe biraju jedan put.
U 'C' programiranju uvjetni iskazi moguฤi su uz pomoฤ sljedeฤe dvije konstrukcije:
- If izjava
- Ako-inaฤe naredba
Naziva se i grananjem jer program odluฤuje koju ฤe naredbu izvrลกiti na temelju rezultata procijenjenog uvjeta.
If izjava
To je jedna od moฤnih uvjetnih izjava. If naredba je odgovorna za modificiranje tijeka izvoฤenja programa. Iskaz se uvijek koristi s uvjetom. Uvjet se prvo procjenjuje prije izvrลกavanja bilo koje naredbe unutar tijela If. Sintaksa if naredbe je sljedeฤa:
if (condition)
instruction;
Uvjet se procjenjuje kao istinit ili laลพan. True je uvijek vrijednost razliฤita od nule, a false je vrijednost koja sadrลพi nulu. Instrukcije mogu biti jedna instrukcija ili blok koda omeฤen vitiฤastim zagradama { }.
Sljedeฤi program ilustrira koriลกtenje if konstrukcije u 'C' programiranju:
#include<stdio.h> int main() { int num1=1; int num2=2; if(num1<num2) //test-condition { printf("num1 is smaller than num2"); } return 0; }
Izlaz:
num1 is smaller than num2
Gornji program ilustrira upotrebu konstrukcije if za provjeru jednakosti dva broja.
- U gornjem programu, inicijalizirali smo dvije varijable s num1, num2 s vrijednoลกฤu 1, odnosno 2.
- Zatim smo upotrijebili if s testnim izrazom da provjerimo koji je broj najmanji, a koji najveฤi. Koristili smo relacijski izraz u konstrukciji if. Buduฤi da je vrijednost num1 manja od num2, procjena uvjeta ฤe biti istinita.
- Stoga ฤe ispisati izjavu unutar bloka If. Nakon toga kontrola ฤe izaฤi izvan bloka i program ฤe biti prekinut s uspjeลกnim rezultatom.
Relacijski Operaulagatelji
C ima ลกest relacijskih operatora koji se mogu koristiti za formuliranje Booleovog izraza za donoลกenje odluke i testiranje uvjeta, koji vraฤa vrijednost true ili false:
<โ manje od<=โ manje ili jednako>โ veฤi od>=โ veฤi ili jednak==โ jednako!=โ nije jednako
Primijetite da se test jednakosti (==) razlikuje od operatora dodjele (=) jer je to jedan od najฤeลกฤih problema s kojima se programer suoฤava ako ih pomijeลกa.
Na primjer:
int x = 41; x =x+ 1; if (x == 42) { printf("You succeed!");}
Izlaz:
You succeed
Imajte na umu da se uvjet koji daje vrijednost razliฤitu od nule smatra istinitim.
Na primjer:
int present = 1; if (present) printf("There is someone present in the classroom \n");
Izlaz:
There is someone present in the classroom
Izjava If-Else
Naredba if-else je proลกirena verzija naredbe If. Opฤi oblik naredbe if-else je sljedeฤi:
if (test-expression)
{
True block of statements
}
Else
{
False block of statements
}
Statements;
U ovoj vrsti konstrukcije, ako je vrijednost test-izraza istinita, tada ฤe se izvrลกiti blok naredbi "true". Ako je vrijednost test-izraza "false", tada ฤe se izvrลกiti blok naredbi "false". U svakom sluฤaju, nakon izvrลกenja, kontrola ฤe se automatski prenijeti na naredbe koje se pojavljuju izvan bloka If.
Sljedeฤi programi ilustriraju koriลกtenje konstrukcije if-else:
Inicijalizirat ฤemo varijablu nekom vrijednoลกฤu i napisati program koji ฤe odrediti je li vrijednost manja od deset ili veฤa od deset.
Poฤnimo.
#include<stdio.h> int main() { int num=19; if(num<10) { printf("The value is less than 10"); } else { printf("The value is greater than 10"); } return 0; }
Izlaz:
The value is greater than 10
- Inicijalizirali smo varijablu s vrijednoลกฤu 19. Moramo saznati je li broj veฤi ili manji od 10 koristeฤi 'C' program. Da bismo to uฤinili, upotrijebili smo konstrukciju if-else.
- Ovdje smo dali uvjet num<10 jer naลกu vrijednost moramo usporediti s 10.
- Kao ลกto vidite, prvi blok je uvijek pravi blok, ลกto znaฤi da ฤe, ako je vrijednost test-izraza istinita, prvi blok koji je If biti izvrลกen.
- Drugi blok je else blok. Ovaj blok sadrลพi naredbe koje ฤe se izvrลกiti ako vrijednost testnog izraza postane laลพna. U naลกem programu, vrijednost num je veฤa od deset, stoga test-uvjet postaje laลพan i blok else se izvrลกava. Stoga ฤe naลก izlaz biti iz else bloka koji glasi "Vrijednost je veฤa od 10". Nakon if-else, program ฤe zavrลกiti s uspjeลกnim rezultatom.
U 'C' programiranju moลพemo koristiti viลกestruke if-else konstrukte jedne unutar drugih koji se nazivaju gnijeลพฤenje if-else naredbi.
Uvjetni izrazi
Drugi naฤin izraลพavanja if-else naredbe je uvoฤenjem operatora ?:. U uvjetnom izrazu operator ?: ima samo jednu naredbu povezanu s if i else.
Na primjer:
#include <stdio.h> int 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;}
Izlaz:
y =2
Ugnijeลพฤene If-else izjave
Kada je potreban niz odluka, koristi se ugnijeลพฤeni if-else. Gnijeลพฤenje znaฤi koriลกtenje jedne if-else konstrukcije unutar druge.
Napiลกimo program koji ฤe ilustrirati koriลกtenje ugnijeลพฤenog if-else.
#include<stdio.h> int 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; }
Izlaz:
The value is:1
Gornji program provjerava je li broj manji ili veฤi od 10 i ispisuje rezultat pomoฤu ugnijeลพฤene if-else konstrukcije.
- Prvo smo deklarirali varijablu num s vrijednoลกฤu 1. Zatim smo upotrijebili if-else konstrukciju.
- U vanjskom if-else, zadani uvjet provjerava je li broj manji od 10. Ako je uvjet istinit, tada i samo tada ฤe se izvrลกiti unutarnji blok. U ovom sluฤaju, uvjet je istinit, stoga se obraฤuje unutarnji blok.
- U unutarnjem bloku ponovno imamo uvjet koji provjerava sadrลพi li naลกa varijabla vrijednost 1 ili ne. Kada je uvjet istinit, obradit ฤe se If blok, inaฤe ฤe se obraditi else blok. U ovom sluฤaju, uvjet je istinit, stoga se izvrลกava If blok i vrijednost se ispisuje na izlaznom zaslonu.
- Gornji program ฤe ispisati vrijednost varijable i uspjeลกno se zavrลกiti.
Pokuลกajte promijeniti vrijednost varijabla vidjeti kako se program ponaลกa.
NAPOMENA: U ugnijeลพฤenim if-else naredbama moramo biti oprezni s uvlaฤenjem jer je u ovaj proces ukljuฤeno viลกe if-else konstrukcija, pa je teลกko prepoznati pojedinaฤne konstrukcije. Pravilno uvlaฤenje olakลกava ฤitanje programa.
Ugnijeลพฤene Else-if izjave
Ugnijeลพฤeni else-if koristi se kada su potrebne viลกestazne odluke.
Opฤa sintaksa kako se inaฤe-ako ljestvice konstruiraju u 'C' programiranju je sljedeฤa:
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;
Ova vrsta strukture poznata je kao else-if ljestvica. Ovaj lanac opฤenito izgleda kao ljestvica, stoga se naziva i else-if ljestvica. Testni izrazi se procjenjuju od vrha do dna. Kad god se pronaฤe testni izraz koji je istinit, izvrลกava se naredba povezana s njim. Kada svih n testnih izraza postanu laลพni, izvrลกava se zadana else naredba.
Pogledajmo stvarni rad uz pomoฤ programa.
#include<stdio.h> int 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; }
Izlaz:
First class
Gornji program ispisuje ocjenu prema ocjenama postignutim na testu. Koristili smo konstrukciju else-if ljestvice u gornjem programu.
- Inicijalizirali smo varijablu s oznakama. U strukturi ljestvice else-if osigurali smo razliฤite uvjete.
- Vrijednost iz oznaka varijable usporeฤivat ฤe se s prvim uvjetom buduฤi da je istinita i izjava povezana s njom bit ฤe ispisana na izlaznom ekranu.
- Ako se prvi testni uvjet pokaลพe laลพnim, tada se usporeฤuje s drugim uvjetom.
- Ovaj proces ฤe se nastaviti sve dok se ne izvrลกe svi izrazi, inaฤe ฤe kontrola izaฤi iz else-if ljestvice i ispisati ฤe se zadana naredba.
Pokuลกajte promijeniti vrijednost i primijetite promjenu u izlazu.





