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.





