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
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
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
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
#include
#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