C uvjetna naredba: IF, IF Else i ugniježđeni IF Else s primjerom
Što je uvjetna izjava u C-u?
Uvjetne izjave u C programiranje se koriste za donošenje odluka na temelju uvjeta. Uvjetne naredbe izvršavaju se sekvencijalno kada oko naredbi nema uvjeta. Ako postavite neki uvjet za blok naredbi, tijek izvršenja može se promijeniti na temelju rezultata evaluiranog uvjetom. Taj se proces naziva donošenje odluka u 'C'.
U 'C' programiranju uvjetni iskazi mogući su uz pomoć sljedeće dvije konstrukcije:
1. If izjava
2. If-else izjava
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 uvjete testiranja, koji vraća true ili false:
< manje od
<= manje od ili jednako
> veći od
>= veće ili jednako
== 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
If-else is iskaz je proširena verzija If-a. Opći oblik 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 pravi blok naredbi. Ako je vrijednost testnog izraza lažna, tada će se izvršiti lažni blok naredbi. U svakom slučaju, nakon izvršenja, kontrola će se automatski prenijeti na izjave 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
Postoji još jedan način da se izrazi if-else izjava je uvođenjem ?: operater. U uvjetnom izrazu the ?: 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, navedeni uvjet provjerava je li broj manji od 10. Ako je uvjet istinit tada i samo tada će izvršiti unutarnja petlja. U ovom slučaju, uvjet je istinit pa se unutarnji blok obrađuje.
- U unutarnjem bloku opet imamo uvjet koji provjerava sadrži li naša varijabla vrijednost 1 ili ne. Kada je uvjet istinit, tada će obraditi blok If, inače će obraditi blok else. U ovom slučaju, uvjet je istinit, stoga se blok If izvršava i vrijednost se ispisuje na izlaznom ekranu.
- Gornji program će ispisati vrijednost a varijabla i izaći s uspjehom.
Pokušajte promijeniti vrijednost varijable i pogledajte kako se program ponaša.
NAPOMENA: Kod ugniježđenih if-else, moramo biti oprezni s uvlačenjem jer je više if-else konstrukata uključeno u ovaj proces, tako da postaje teško dokučiti pojedinačne konstrukte. Ispravno 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 je poznata kao else-if ljestve. Ovaj lanac općenito izgleda kao ljestve pa se nazivaju i else-if ljestve. Testni izrazi se vrednuju od vrha prema dolje. Kad god se pronađe pravi testni izraz, izvršava se naredba povezana s njim. Kada svih n testnih izraza postane lažno, tada se izvršava zadana naredba else.
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 dok se ne procijeni all izraz, inače će kontrola izaći iz else-if ljestvice, a zadana izjava će biti ispisana.
Pokušajte promijeniti vrijednost i primijetite promjenu u izlazu.
Rezime
- Izjave o donošenju odluka ili grananju koriste se za odabir jednog puta na temelju rezultata evaluiranog izraza.
- Naziva se i kontrolnim iskazima jer kontrolira tijek izvođenja programa.
- 'C' pruža konstrukcije if, if-else za izjave za donošenje odluka.
- Možemo također ugnijezditi if-else jedan u drugi kada je potrebno testirati više putanja.
- Ljestve else-if koriste se kada moramo provjeriti različite načine na temelju rezultata izraza.