Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Vijesti
  • Uslovne konstrukcije. Uslovna izjava ako je drugačije

Uslovne konstrukcije. Uslovna izjava ako je drugačije

Neki izvori kažu da je naredba za odabir if else samostalna izjava. Ali to nije istina, if else je samo oblik pisanja if naredbe za odabir. Naredba if else dozvoljava programeru da definira akciju kada je uvjet istinit i alternativnu akciju kada je uvjet netačan. Dok ako vam je dozvoljeno da odredite akciju da li je uslov istinit.

Sintaksa za pisanje naredbe za odabir if else je:

If (/*uslov koji treba provjeriti*/) ( /*tijelo operatora odabira 1*/; ) else ( /*tijelo operatora odabira 2*/; )

Ona glasi ovako: „Ako je uslov koji se testira tačan, onda odaberite tijelo izjave 1, u suprotnom (to jest, uslov koji se testira je netačan) je zadovoljen odaberite tijelo izjave 2". Obratite pažnju na to kako je napisana izjava if else. Riječ else je posebno pomaknuta udesno tako da je programski kod jasan i zgodan za čitanje.

Pogledajmo problem iz prethodne teme, koristeći if else . Dozvolite mi da vas podsjetim na uslov zadatka: „Dana su dva broja, trebate ih uporediti.“

// if_else.cpp: Definira ulaznu točku za aplikaciju konzole. #include "stdafx.h" #include korištenje imenskog prostora std; int main(int argc, char* argv) (int a, b; cout<< "Vvedite pervoe chislo: "; cin >>a; cout<< "Vvedite vtoroe chislo: "; cin >>b; if (a >= b) // ako je a veće ili jednako b, onda ( cout<< a << " >= " << b << endl; } else // иначе { cout << a << " <= " << b << endl; } system("pause"); return 0; }

Za ovaj kod nas zanimaredovi 14-20. Ovi redovi glase ovako: ako a (prvi broj) veći ili jednak b (drugi broj), zatim izvršite izlaznu naredbu ured 16

Cout<< a << " >= " << b << endl;

inače izvršite izlaznu naredbu u red 19

Cout<< a << " <= " << b << endl;

U ovom primjeru koristimo operatore relacije >= i<= . Условие перехода не совсем правильно, так как условие будет ложно только в том случае, если первое число будет меньше второго, во всех остальных случаях условие истинно. Значит, red 19 treba da napišeš ovako

cout<< a << " < " << b << endl; // в кавычках записать не меньше или равно, а просто меньше.

I ovako je program radio (vidi sliku 1).

Vvedite pervoe chislo: 15 Vvedite vtoroe chislo: -4 15 >= -4 Za nastavak pritisnite bilo koji taster. . .

Slika 1 - Izjava o odabiru ako je drugačije

Dozvolite mi da vam pokažem još jedan primjer korištenja if else naredbi za odabir (tzv. ugniježđene if else naredbe za višestruki odabir).

Zadatak:
Kreirajte algoritam koji pronalazi vrijednost y, ako je y=x, za x<0; у=0, при 0<=х<30; у=х 2 , при х>=30;

// inif_else.cpp: Definira ulaznu točku za aplikaciju konzole. #include "stdafx.h" #include korištenje imenskog prostora std; int main(int argc, char* argv) (int x, y; cout<< "Vvedite x: "; cin >>x; if(x< 0) { y = x; // выполняется, если х меньше нуля } else { if ((x >= 0) && (x< 30)) { y = 0; // выполняется, если х больше либо равно нуля и меньше 30 } else { if (x >= 30) ( y = x * x; // izvršava se ako je x veći ili jednak 30 ) ) ) cout<< "y=" << y << endl; system("pause"); return 0; }

U ovom problemu postoje tri moguća slučaja:
1. slučaj: x< 0 ;
2. slučaj: x leži u rasponu od 0 (uključujući 0) do 30;
3. slučaj: x je veće ili jednako 30.

Obratite pažnju na inovaciju!! IN Linija 17 takav unos: ako ((x >= 0) && (x< 30)) , Koristio sam && simbole - ovo je . Logička operacija I&& je potreban za kombinovanje nekoliko jednostavnih uslova u jedan složeni uslov. U našem slučaju potrebno je provjeriti istinitost dva uslova: prvi – x >= 0, drugi – x< 30 . Все проверяемое условие будет истинно, если истинны два простых условия. В математике правильной записью считается такая запись: 0 <= x < 30 , а в С++ правильной записью считается вот такая запись: (x >= 0) && (x< 30) или такая 0 <= x && x < 30 . Кстати круглые скобочки () && () не обязательны, так как условия простые, но для уверенности, я прописываю, всегда, данные скобочки и вам советую.

Analiza konkretnog slučaja:

Recimo da je korisnik unio broj 31. Počevši od redovi 12, uvjeti su provjereni. Ona glasi ovako: „Ako je x (31 u našem slučaju)< 0, то выполнить оператор в red 14" Ali pošto je 31 > 0 uslov je netačan, prelazimo na riječ else (inače) red 15. Zatim provjeravamo da li je broj 31 uključen u navedeni interval. To glasi ovako: ako je x>=0 i x<30zatim izvršite naredbu u redu 19 . Ali pošto broj 31 nije uključen u dati interval, uslov je netačan. Detalji red 17: program će prvo provjeriti prvi jednostavan uvjet x >= 0 - istina je, a ako je prvi tačan, onda će program nastaviti s provjerom drugog jednostavnog uvjeta x< 30 – оно ложно. Следовательно всё составное условие ложно, ведь в составном условии у нас используется логическая операция && , а это значит, что все составное условие истинно только в том случае, когда истинны оба простых условия. Переходим к else (иначе), здесь у нас последний if , (red 22). Provjera je x >= 30. To glasi ovako: Ako je x >= 30, onda izvršite naredbu koja se nalazi u redu 24 . Konačno, uslov je tačan, pa je izjava u red 24. I red 28 ispisuje rezultujuću vrijednost. Eto, to je to, program smo sagledali do najsitnijih detalja. Rezultat programa ako je korisnik unio broj 31 (vidi sliku 2)

Uslovni operator omogućava vam da preskočite ili izvršite određeni blok koda u zavisnosti od rezultata izračunavanja navedenog izraza - uslova. Može se reći da je uslovna izjava tačka odlučivanja u programu; ponekad se naziva i izjava grananja. Ako zamislite da je program put, a PHP interpreter putnik koji njime hoda, onda se uslovni iskazi mogu smatrati raskrsnicama na kojima se programski kod grana na dva ili više puteva, a na takvim raskrsnicama tumač mora izabrati koji put kojim treba ići.

if izjava

Naredba if je najjednostavniji izraz grananja.

Sintaksa if naredbe je:

Naredba if prvo procjenjuje uvjetni izraz naveden u zagradama, čiji je rezultat Boolean vrijednost. Ako je dobijeni rezultat tačan, tada se instrukcija izvršava. Ako izraz vrati false, tada se instrukcija ne izvršava. Kao uslov se može koristiti izraz bilo koje složenosti.

Ako tijelo if naredbe koristi samo jednu instrukciju, onda je stavljanje u vitičaste zagrade moguće, ali nije potrebno. Međutim, ako trebate izvršiti više od jedne instrukcije u tijelu if naredbe, onda ovih nekoliko instrukcija mora biti zatvoreno u vitičaste zagrade. Imajte na umu da nakon završne vitičaste zagrade ne smije biti tačka-zarez.

Sljedeći kod pokazuje upotrebu if naredbe:

If izrazi mogu biti ugniježđeni unutar drugih if naredbi:

Obratite pažnju na posljednji primjer: instrukcija ne mora biti napisana tačno ispod if naredbe; ako instrukcija nije velika, onda se može napisati u jednom redu.

if else izjava

I tako smo naučili da if naredba vam omogućava da izvršite instrukcije ako je uslov istinit. Ako je uvjet netačan, tada se ne izvodi nikakva radnja. Međutim, često je potrebno izvršiti određene instrukcije ako je određeni uvjet tačan i druge upute ako je uvjet netačan. Za takve se slučajeve koristi if else grananje. Sastoji se od if naredbe iza koje slijedi blok naredbi i ključne riječi else iza koje slijedi drugi blok naredbi.

Sintaksa if else naredbe je:

Naredba else je opciona. Blok instrukcija koji se nalazi iza else se po defaultu izvršava, tj. kada uslovni izraz u if vraća false . Naredba else se ne može koristiti odvojeno od if naredbe. Blok else bi se trebao pojaviti samo nakon naredbe if; može se smatrati zadanom radnjom.

Malo modificirajući naš prethodni primjer, možemo vidjeti kako funkcionira if else izjava ako uvjet vrati false:

Naredba if else može biti ugniježđena. Takvi ugniježđeni uvjetni iskazi se često javljaju u praksi. Naredba if je ugniježđena ako je ugniježđena unutar drugog if ili else bloka. Ako vaš kod koristi više if naredbi u nizu, else se uvijek odnosi na najbliži if:

Posljednje drugo se ne odnosi na if($a) jer se ne nalazi u unutrašnjem bloku, pa mu je najbliži if($i) . Naredba else unutar bloka je povezana sa if($b) jer joj je ova if najbliža.

elseif/else if konstrukcija

Naredba if/else procjenjuje vrijednost uvjetnog izraza i izvršava određeni dio programskog koda. Ali šta ako trebate izvršiti jedan od mnogih fragmenata? Ako trebate provjeriti nekoliko uslova za redom, onda elseif ili else if konstrukcija je pogodna za ovo (ovo je ista konstrukcija, samo napisana drugačije). Formalno, to nije nezavisna PHP konstrukcija - to je samo uobičajeni stil programiranja koji se sastoji od upotrebe ponovljenih if/else naredbi. Omogućava testiranje dodatnih uslova dok se ne pronađe istina ili dok se ne dostigne else blok. elseif/else if konstrukcija mora se pojaviti iza naredbe if i prije naredbe else, ako postoji.

Ovdje se provjeravaju tri uvjeta i, ovisno o vrijednosti varijable $username, izvode se različite akcije.

Zaista nema ništa posebno u vezi sa ovim komadom. To je jednostavno niz if naredbi, gdje je svaki if naredba dio else klauzule prethodne if naredbe. Za one koji su se prvi put susreli s ovim oblikom notacije i ne razumiju kako funkcionira, prepisat ćemo isti primjer, samo u ekvivalentnom sintaksičkom obliku koji u potpunosti pokazuje ugniježđenje struktura:

Mogućnost kontrole toka programa omogućava selektivno izvršavanje pojedinačnih sekcija koda, a to je vrlo vrijedna karakteristika programiranja. Naredba if nam omogućava da izvršimo ili ne izvršimo određene dijelove koda, ovisno o tome da li je uvjet iskaza istinit ili netačan. Jedna od najvažnijih svrha if naredbe je da dozvoljava programu da preduzme akciju na osnovu onoga što je korisnik unio. Trivijalan primjer korištenja if je provjera lozinke koju je unio korisnik; ako je lozinka ispravna, program dozvoljava korisniku da izvrši neku radnju; ako je lozinka unesena pogrešno, tada program neće dozvoliti korisniku pristup ograničenim resursima .

Bez uslovnog izraza, program bi se izvršavao na isti način iznova i iznova, bez obzira na to koji je input korisnik dao. Ako koristite operatore odabira, rezultat programa može biti mnogo zanimljiviji, jer će direktno ovisiti o unosnim podacima korisnika.

Pre nego što počnete da razumete strukturu if naredbe, vredi obratiti pažnju na značenja TRUE i FALSE u kontekstu programiranja i računarske terminologije.

Tačna vrijednost (TRUE) ima vrijednost različitu od nule, FALSE je ekvivalent nuli. Kada koristite operatore poređenja, operator će vratiti jedan ako je izraz za usporedbu istinit, ili - 0 ako je uvjetni izraz netačan. Na primjer, izraz 3 == 2 će vratiti vrijednost 0, pošto tri nije jednako dva. Izraz 5 == 5 daje vrijednost true i vraća vrijednost 1. Ako imate problema da ovo shvatite, pokušajte da odštampate ove izraze na ekranu, na primer: printf("%d", 7 == 0);

Tokom procesa programiranja, često morate upoređivati ​​neke varijable s drugima i na osnovu tih poređenja kontrolirati tok programa. Postoji čitav spisak operatora koji vam omogućavaju poređenja, evo ga:

Vjerovatno ste upoznati sa ovim operatorima poređenja, ali za svaki slučaj, pokazao sam ih u gornjoj tabeli. Ne bi vam trebalo biti teško razumjeti ih; većinu ovih operatora ste naučili u školi na časovima matematike. Sada ste shvatili šta su TRUE i FALSE, vrijeme je da stavimo if select naredbu na test. ako struktura:

If (uvjetni izraz) // ovdje je jedan iskaz koji će se izvršiti ako je uvjetni izraz istinit

Evo jednostavnog primjera korištenja if naredbe:

Ako je (7 > 6) printf("Sedam je veće od šest");

U ovom primjeru, program procjenjuje uslovni izraz - "je li sedam veće od šest?" Da biste vidjeli rezultat ovog dijela koda, jednostavno ga zalijepite u funkciju main() i ne zaboravite uključiti zaglavlje stdio.h, pokrenite program i vidite rezultat - istina. Konstrukcija operatora odabira ako ima vitičaste zagrade:

Ako (TRUE) ( /* sav kod stavljen unutar zagrada će biti izvršen */ )

Ako ne koristite vitičaste zagrade, tada će se samo jedna, prva izjava, odnositi na tijelo if naredbe. Ako trebate kontrolirati nekoliko operatora, trebate ih staviti u vitičaste zagrade. Preporučujem da uvijek stavljate zagrade iza deklaracije if - ovo je dobra programska praksa i nikada se nećete zbuniti u svom kodu, jer je takva deklaracija najrazumljivija.

else operator

Ponekad, kada je uslovni izraz FALSE, bilo bi zgodno izvršiti neki kod koji se razlikuje od koda koji se izvršava kada je uslov TRUE. Kako se to radi?
Evo primjera korištenja if else naredbe:

If (TRUE) ( /* izvrši ovaj kod ako je uslov tačan */ ) else ( /* izvrši ovaj kod ako je uslov netačan */ )

inače ako se konstruiše

Tipično, else if iskazi se koriste kada je potreban višestruki izbor, to jest, na primjer, definirano je nekoliko uvjeta koji mogu biti istiniti u isto vrijeme, ali nam je potreban samo jedan istiniti uslovni izraz. Naredbu if else možete koristiti odmah nakon if naredbe, nakon njenog tijela. U takvom slučaju, ako je uvjet prve naredbe select TRUE, onda će else if klauzula biti zanemarena, dok u suprotnom, ako je uvjet prve naredbe select FALSE, provjera u else if klauzuli će početi biti izvršeno. Odnosno, ako je uslov jednog if iskaza tačan, onda se ostali neće provjeravati. Sada, kako bismo sve ovo čvrsto konsolidirali u našim glavama i razumjeli, pogledajmo jednostavan primjer koristeći konstrukcije operatora selekcije.

#include #include int main() ( int age; // nema šanse bez varijable... printf("Koliko imaš godina?"); // pitaj korisnika o njegovoj dobi scanf("%d", &age); // korisnik unosi broj godina ako (starost< 100) { // если введенный возраст меньше 100 printf ("Вы очень молоды!\n"); // просто показываем что программа сработала верно... } else if (age == 100) { // используем else для примера printf("Молодость уже позади\n"); // \n - символ перевода на новую строку. } else { printf("Столько не живут\n"); // если ни одно из выше-перечисленных условий не подошло, то программа покажет этот вариант ответа } return 0; }

Pogledajmo zanimljive uslovne izraze koristeći logičke operatore.

Logički operatori vam omogućavaju da kreirate složenije uslovne izraze. Na primjer, ako želite provjeriti da li je vaša varijabla veća od 0, ali manja od 10, onda samo trebate koristiti logički operator - AND. Ovako se to radi - var > 0 i var< 10 . В языке СИ есть точно такой же же оператор, только обозначается он иначе — && .
Kada koristite if naredbe, često morate testirati nekoliko različitih uslova, tako da je važno razumjeti logičke operatore OR, NOT i AND. Logički operatori rade potpuno isto kao i operatori poređenja: vraćaju 0 ako je Boolean izraz netačan ili 1 ako je Boolean izraz istinit.
Više o logičkim operacijama možete pročitati u.

Laboratorijski rad

Na temu: " Operator uslova ako - ostalo "


1. Svrha i sintaksa

Naredba uslova if-else se koristi za odabir pravca rada programa u zavisnosti od uslova koji preovladavaju u datoj tački programa u trenutku njegovog izvršavanja.

Opšti oblik pisanja uslovnog operatora

ako ( <условие>)

<блок операторов 1>;

<блок операторов 2>;

Ako u vrijeme izvršenja<условие>istina, program prenosi kontrolu<блоку операторов 1>i dalje, na prvu naredbu izvan if-else konstrukcije. Gde<блок операторов 2>se ne izvršava. Inače, ako<условие>lažno, izvršeno<блок операторов 2>, A<блок операторов 1>preskočio. Odgovarajući blok dijagram


Vitičaste zagrade u sintaksi naredbe if-else koriste se za isticanje blokova 1 i 2 u tekstu. Pokušajte da postavite završnu zagradu ispod početne zagrade kako biste poboljšali čitljivost programskog koda. U istu svrhu, tekst unutar vitičastih zagrada mora se pomaknuti udesno za nekoliko pozicija.

Bilo koji Boolean izraz koji ima vrijednost istinito ili netočno može se koristiti kao uvjet u if-else izjavama. Ispod je tabela koja prikazuje najjednostavnije operacije poređenja između cijelih i realnih brojeva

Primjer 1. Potrebno je napisati program koji pretvara temperaturu na Celzijusovoj skali T C (°C) u temperaturu na kelvinovoj skali T K (K). T C vrijednost korisnik unosi sa tastature.

Rješenje. Koristimo dobro poznatu formulu konverzije – T K = T C – T 0, gdje je T 0 = –273 °C temperatura apsolutne nule. Smatraćemo da je uneseni T C netačan ako je manji od T 0 .

// – KelvinvsCelsius–

#include // za streaming I/O

#include // za konzole I/O (dobi)

#pragma argsused

floatT0 = -273; // deklarirati i inicijalizirati T0

floatTc, Tk; // deklarirati stvarne Tc i Tk

cout<<» VvediteTc=»; // выводим приглашение

cin>>Tc; // zahtjev Tc

ako ( Tc < T 0) // provjeriti stanje Tc

cout<<» Tc < T0!»; // условие истинно, выводим на

} // ekran poruke o grešci

Tk = Tc-T0; // uvjet je lažan, izračunaj

cout<< «Tk =» << Tk; // Tk и выводим на экран

getch(); // odgoda prije pritiska na tipku

return 0; // završiti program

Otkucajte gornji kod, kompajlirajte ga i pokrenite program. Ispitati rezultate rada pri različitim vrijednostima T C .

2. Skraćene opcije snimanja

U programiranju je uobičajeno otkriti da je potrebna neka radnja kao odgovor na postojeće uslove (na primjer, ako su od korisnika primljeni netačni ulazni podaci, onda izdati poruku o grešci i izaći iz programa). U takvim slučajevima, C++ programi mogu koristiti stenografsku notaciju uslovnog izraza sa blokom else koji nedostaje. Opšti oblik takvog zapisa

ako ( <условие>)

<блок операторов>;

Ovdje, ako je uvjet istinit, kontrola se prenosi na blok naredbi u vitičastim zagradama. Ako je uslov netačan, ovaj blok se preskače. Odgovarajući blok dijagram razlikuje se od prethodnog u nedostatku jedne "ruke"


Druga skraćena opcija se koristi kada se bilo koji od blokova if ili else sastoji od samo jedne izjave. U ovom slučaju, dopušteno je odsustvo vitičastih zagrada koje ograničavaju ovaj blok.

ako ( <условие>)

operater 1;

operater 2;

Ovdje operatori 1 i 2 mogu biti ne samo jednostavne jednolinijske aritmetičke operacije ili I/O operatori, već i složene višelinijske konstrukcije, kao što su drugi (ugniježđeni) uvjetni iskazi ili operatori petlje, o čemu će biti riječi u nastavku.

3. Ugniježđeni izrazi

Uslovni izrazi mogu biti ugniježđeni jedni u druge, u skladu sa softverskim algoritmom koji implementiraju. Dozvoljen je proizvoljan stepen njihovog „gniježđenja“.

Ako je jedan if-else izraz ugniježđen u drugi, tada je prvi izraz uključen u drugi u potpunosti, a ne samo bilo koji od njegovih if ili else dijelova. Djelomično preklapanje njihovih pojedinačnih blokova je neprihvatljivo.

U gornjem primjeru, jedna od izjava (prikazano podebljano) je ugniježđena u drugu. Unos B) je netačan zbog činjenice da se else blok unutrašnjeg uslovnog izraza delimično preklapa sa if i else blokovima spoljašnjeg izraza.

Primjer 2. Korisnik unosi tri cijela broja a, b, c sa tastature. Potrebno je prikazati najveći od ovih brojeva.

Rješenje. Jedan od mogućih algoritama za rješavanje ovog problema prikazan je na sljedećem blok dijagramu.


Šema se može implementirati programski korištenjem ugniježđenih if-else izraza

// – Odabir najvećeg od 3 broja –

#include

#include

#pragma argsused

int main (int argc, char* argv)

float a, b, c; // deklarisanje tri varijable

cout<< «Vvedite a –»; // вводимзначения a, b, c

cout<< «Vvedite b –»;

cout<< «Vvedite c –»;

if (a>b) // ako je a > b

if (a>c) // ako je a > c

cout<<» max = «<

else // inače, tj. ako a<= с

cout<<» max = «<

else // inače, tj. ako a<= b

if (b>c) // i ako je b > c

cout<<» max = «<

else // inače, tj. ako b<= а

cout<<» max = «<

getch(); // odgoda prije pritiska bilo koje tipke

Analizirajte blok dijagram ovog algoritma i njegovu softversku implementaciju. Izmijenite algoritam i programski kod kako biste pronašli najmanji od tri broja.

4. Složeni logički izrazi

Uslov u naredbi if-else može se izraziti kao više od poređenja dvije numeričke vrijednosti. Na primjer, vrlo su česti dvostruki uvjeti koji se u matematici pišu kao „a< b < c». Запись означает, что значение b лежит в диапазоне между значениями a и c. В программе такие условия должны быть переформулированы с использованием простых операций сравнения и логических операций «И», «ИЛИ», «НЕ»

Konkretno, izraz „a< b < c» сформулируем как «a меньше b, и b меньше c». На С++ это будет записано как (a

ako((a

Primjer 3. Na praznoj šahovskoj tabli nalazi se bijeli pješak na poziciji (n, m), a crni biskup na poziciji (k, l). Ovdje je prva koordinata broj kolone šahovske ploče, druga je broj reda (obje variraju u rasponu od 1 do 8). Procijenite trenutno stanje prema tri opcije

Pijun je napadnut

Slon je napadnut

Biskup i pešak su „sigurni“.

Rješenje. Uzmimo u obzir da pešak može da napadne dve njemu najbliže pozicije dijagonalno napred, a biskup napada u potpunosti obe njegove dijagonale. Odavde se mogu formulisati uslovi

· “((k = n+1) ILI (k = n‑1)) I (l = m+1)” – napad pješaka na biskupa,

· “(k+l = n+m) ILI (k-l = n-m)” – napad biskupa na pješaka,

· inače su komadi sigurni.

// – Šahovska kompozicija –

#include

#include

int main (int argc, char* argv)

cout<<«Koordinaty beloi peshki:«<

cout<<» vvedite n –»;

cout<<» vvedite m –»;

cout<<«Koordinaty chernogo slona:«<

cout<<» vvedite k –»;

cout<<» vvedite l –»;

if(((k==n+1)||(k==n‑1))&&(l==m+1)) // biskup napadnut

cout<

if((k+l==n+m)||(k-l==n-m)) // pijun napadnut

cout<

ostalo // nema napada

cout< Pogledajmo organizaciju input-outputa i implementaciju glavne upravljačke strukture. Svaki specifični algoritam može biti napisan u programskom jeziku koji koristi samo tri kontrolne strukture: sekvencijalno izvršenje, grananje i ponavljanje.
Dosljedno izvršenje je toliko uobičajeno da ga rijetko pamtimo kao kontrolnu strukturu. Niz naredbi se izvršava redoslijedom njihove prirodne lokacije u programu, uz moguće odstupanje za pozivanje eksternog fragmenta (funkcije), ali uz obavezan povratak na točku poziva.
U najjednostavnijem slučaju, grananje je opisano u jeziku C pomoću uslovnog operatora. ima oblik:

ako (izraz)
operator_1;
ostalo
operator_2;

gdje je dio ostalo može biti odsutan. Prvo se vrednuje "izraz". u zagradi; ako je istina onda se izvršava operator_1. ako " izraz" netačno (jednako nuli - NULL), To operator_1 se preskače i izvršava operator_2. Ako bi umjesto uvjetno izvršenih operatora trebala biti grupa od nekoliko jezičkih operatora, onda su oni zatvoreni u vitičaste zagrade - { }. Često "izraz" u zagradama predstavlja uslov specificiran pomoću relacionih i logičkih operatora. Relacijske operacije su označene u C kako slijedi:

= = jednako; ! = nije jednako;< меньше; >više;
< = меньше или равно; >= veće ili jednako.

Simbol ! u jeziku C označava logičku negaciju. Postoje još dvije logičke operacije: || znači ili && - logično I. Relacijske operacije imaju prednost nad aritmetičkim operacijama, dakle izraz oblika k > n%i izračunato kao k > (n%i). Prioritet && veća od ||, ali se obje logičke operacije izvode nakon relacijskih i aritmetičkih operacija. U sumnjivim slučajevima, bolje je koristiti zagrade.

Da biste ilustrirali upotrebu uslovnog operatora, razmotrite program za određivanje najvećeg od tri broja. Prvo ako operator predstavlja kompletnu uslovnu konstrukciju, u drugom slučaju ostalo odsutan. Imajte na umu da tačka-zarez završava naredbu o dodjeli max=x, ne narušava jedinstvo ako- operater. Ako ostalo- grana je preskočena u ugniježđenim uvjetima, njihova interpretacija može biti dvosmislena. Da biste izbjegli nejasnoće, riješite to na sljedeći način: ostalo odgovara najbližem ako, nemajući svoje ostalo.

Primjer 1.3.

Pogledajmo primjer programa koji koristi nekoliko ugniježđenih uvjetnih izraza. U ovom programu postoji linija plutaju A, B, X deklarira ove tri varijable kao stvarne vrijednosti. Niz formata funkcije scanf upućuje vas da unesete dva realna broja koji će postati vrijednosti varijabli A i B respektivno.

Primjer 1.4

/*RJEŠENJE JEDNAČINE AX=B*/
#include
main()
{

plovak A,B,X;
printf("ENTER A, B\n");
scanf("%f %f",&A, &B);
if(A!=0)
printf("REŠENJE:%f\n", B/A);
ostalo
if(B==0)
printf("X-BILO KOJI BROJ\n");
ostalo
printf("NEMA RJEŠENJA\n");
}

Pogledajte kako izgleda grananje kada je dubina ugniježđenja uvjetnih izraza tri (Primjer 1.5). Ako je barem jedan uslov tačan, onda se svi preostali, naravno, preskaču. Kada dubina ugniježđenja uvjetnih iskaza premaši tri, grananje gubi jasnoću i jasnoću.
Za implementaciju multitasking grananja obično pribjegavaju kontrolnoj strukturi izbor ( prekidač) (vidi paragraf 9.4). Kada struktura kontrole grananja postane posebno zbunjujuća, vitičaste zagrade mogu pružiti određenu jasnoću. Oni su potrebni kada, na primjer, uvjetni izraz sadrži više od jedne izjave ili funkcije

Najbolji članci na ovu temu