Šta drugo znači. Šta je uslovni operator? Opšti opis aplikacije

Neki izvori kažu da je if else select naredba samostalna izjava. Ali to nije slučaj, if else je samo oblik if select naredbe. Naredba if else dozvoljava programeru da definira akciju kada je uvjet istinit i alternativnu akciju kada je uvjet netačan. Dok ako je dozvoljeno odrediti radnju pod istinitim uslovom.

Kontrolni izrazi nam omogućavaju da specificiramo tok kontrole programa; one. redosled kojim se instrukcije u programu trebaju izvršiti. Oni vam omogućavaju da donosite odluke, ponavljate zadatke ili prelazite s jednog dijela koda na drugi.

Naredbe odluke Zaključci odabira Izjave iteracije Naredbe za skok. Sljedeći program provjerava da li je uneseni broj pozitivan ili negativan. Sljedeći program uspoređuje dva niza da vidi da li su jednaki ili ne.

Gornji program uspoređuje dva niza kako bi provjerio jesu li isti ili ne. Ugniježđenje je korisno u situacijama kada trebate odabrati jedan od nekoliko različitih pravaca djelovanja. Gornji program uspoređuje tri cijela broja i ispisuje najveći.

Sintaksa za pisanje naredbe select ako je drugačije:

If (/*testni uvjet*/) ( /*tijelo naredbe za odabir 1*/; ) else ( /*tijelo naredbe za odabir 2*/; )

Ona glasi ovako: „Ako je uslov koji se provjerava istinit, onda je odaberite tijelo izjave 1, inače (to jest, uslov koji se provjerava je lažan) odaberite tijelo izjave 2". Obratite pažnju na to kako je napisana izjava if else. drugom rečju posebno pomaknut udesno kako bi programski kod bio jasan i lak za čitanje.

Izjava o izdanju: Izjava o prebacivanju

Obratite pažnju na ugniježđenje, vitičaste zagrade i udubljenje. Sve ovo je neophodno kako bi se osigurala jasnoća. Ovaj izraz ili varijabla mora biti cjelobrojni tip podataka. Vrijednost ovog izraza se generiše tokom izvršavanja programa ili se čita kao korisnički unos. Slučaj čija vrijednost odgovara vrijednosti izraza se bira i izvršava. Opciona podrazumevana oznaka se koristi za označavanje segmenta koda koji treba da se izvrši kada se vrednost izraza ne podudara ni sa jednom od vrednosti slučaja.

Razmotrite problem iz prethodne teme, koristeći if else . Da vas podsjetim na uslov zadatka: "Dana su dva broja, potrebno ih je 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 ife-u koristimo relacijske operacije >= i<= . Условие перехода не совсем правильно, так как условие будет ложно только в том случае, если первое число будет меньше второго, во всех остальных случаях условие истинно. Значит, red 19 treba ovako napisati

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

I ovako je program radio (vidi sliku 1).

Vvedite pervoe chislo: 15 Vvedite vtoroe chislo: -4 15 >= -4 Pritisnite bilo koji taster za nastavak. . .

Slika 1 - Naredba za odabir if else

Pokazat ću još jedan primjer korištenja if else naredbi za odabir (tzv. ugniježđene if else naredbe za višestruki odabir).

Zadatak:
Napišite 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; ako (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 je između 0 (uključujući 0) i 30;
3. slučaj: x je veće ili jednako 30.

Obratite pažnju na inovaciju!! AT red 17 ovako: ako ((x >= 0) && (x< 30)) , Koristio sam && znakove - ovo je . Boolean operacija I&& je potreban za kombinovanje nekoliko jednostavnih uslova u jedan složeni uslov. U našem slučaju potrebno je provjeriti istinitost dva uvjeta: 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 red 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, idemo na riječ else (inače) red 15. Zatim provjeravamo da li je broj 31 uključen u dati 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. detaljno red 17: program će prvo provjeriti prvi jednostavan uvjet x >= 0 - istina je, a ako je prvi tačan, onda će program prijeći na drugi jednostavan uvjet x< 30 – оно ложно. Следовательно всё составное условие ложно, ведь в составном условии у нас используется логическая операция && , а это значит, что все составное условие истинно только в том случае, когда истинны оба простых условия. Переходим к else (иначе), здесь у нас последний if , (red 22). Test je x >= 30 . To glasi ovako: Ako je x >= 30 onda izvršite naredbu u redu 24 . Konačno je uslov tačan, tako da 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)

Vvedite x: 31 y=961 Pritisnite bilo koji taster za nastavak. . .

Slika 2 - Naredba za odabir if else

Razmotrite organizaciju input-outputa i implementaciju glavne upravljačke strukture. Bilo koji određeni algoritam može biti napisan u programskom jeziku koristeći samo tri kontrolne strukture: sekvencijalno izvršenje, grananje i ponavljanje.
Sekvencijalno izvršenje je toliko uobičajeno da rijetko o njemu razmišljamo kao o kontrolnoj strukturi. 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.
Grananje je u najjednostavnijem slučaju opisano u jeziku C pomoću uslovnog operatora. ima oblik:
ako (izraz)
operator_1;
ostalo
operator_2;

gde deo 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), onda operator_1 preskočeno i izvršeno operator_2. Ako grupu od nekoliko jezičkih operatora treba staviti na mjesto uslovno izvršenih naredbi, onda se oni zatvaraju u vitičaste zagrade - { }. Često, "izraz" u zagradama predstavlja uslov specificiran korištenjem relacijskih i logičkih operacija. 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, i && - logično I. Relacijske operacije imaju prednost nad aritmetičkim operacijama, dakle izraz oblika k > n%i se računa kao k > (n%i). Prioritet && veća od ||, ali se obje logičke operacije izvode nakon relacijske i aritmetičke operacije. U sumnjivim slučajevima, bolje je postaviti zagrade.

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

Primjer 1.3.

Razmotrite primjer programa koji koristi više ugniježđenih uvjetnih izraza. U ovom programu, linija plutaju A, B, X deklarira ove tri varijable kao stvarne vrijednosti. Niz formata funkcije scanf nalaže unos dva realna broja koji će postati vrijednosti varijabli A i B respektivno.

Primjer 1.4

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

floatA,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 uvjet istinit, onda se svi preostali uvjeti, naravno, preskaču. Sa dubinom ugniježđenja od više od tri uvjetna operatora, grananje gubi vidljivost i jasnoću.
Za implementaciju multitasking grananja, obično se pribjegava kontrolnoj strukturi izbor ( prekidač) (vidi tačku 9.4). Kada struktura kontrole grana postane posebno zbunjujuća, vitičaste zagrade mogu pružiti malo jasnoće. Oni su potrebni kada, na primjer, uvjetni izraz sadrži više od jedne izjave ili funkcije