Articolul este o lecție cu

Lecția C / C ++ 10. Structura selecției

1. În primul rând, să oferim conceptul de bloc. o vom avea nevoie în multe cazuri. Un bloc este o listă de afirmații închise în bretele:









De ce este nevoie? Blocul permite să ia în considerare mai mulți operatori ca unul. A fost doar o digresiune mică, pe care am ratat în lecțiile anterioare În plus, puteți defini o unitate de variabilă, care va fi distrus în mod automat la ieșirea din bloc, dar așa-numitele zone de vizibilitate și durata de viață a variabilelor ne vom ocupa mai târziu.

2. Dacă. Acum să mergem direct la construirea alegerii (sau ramificării). Permiteți-mi (lăsați-i pe cei care citesc ambele cursuri să mă ierte) repetați prost o parte a textului din lecție pe un subiect similar al cursului VB

Linia de jos este simplă. În limba rusă, în viața de zi cu zi, o folosim în mod constant. Acesta este cazul nostru foarte comun. Dacă ne sună la ușă, vom merge deschisi. În acest caz, soneria este o condiție testabilă (amintiți-vă o altă lecție despre operatorii logici?), Dar să mergem deschis este operatorul care va fi executat NUMAI dacă această condiție este adevărată. Acesta este cel mai simplu exemplu de ramificare. Care este sucursala? O declarație de acțiune, de unde vine sucursala? Ideea este că sucursala arată astfel: sau o să deschid --- sau nu fac nimic.

Cum va fi înregistrată această opțiune?

dacă (expresia booleană)

operatorul;

Pentru cazul nostru:

dacă (apelați la ușă = = adevărat)

Hai să ne deschidem;

Să luăm în considerare două opțiuni pentru scriere:

dacă (condiție)
statement1;


După cum vedem, în cel de-al doilea caz, operatorii ar trebui executați ca unul datorită parantezelor furnizate de bloc (așa cum am menționat la începutul lecției noastre). Astfel, avem o diferență foarte importantă în performanța acestor două opțiuni.

În primul caz, în condiția adevărată, operatorul 1 este executat și operatorul 2 este mulțumit ÎN FIECARE caz, chiar dacă condiția este falsă. Amintiți-vă că l-am împins la nesfârșit la nivelul celui de-al doilea operator, este un semnal numai pentru noi, dar nu pentru compilator. El crede că prima afirmație este în blocul if și după aceea, care arată sfârșitul primei instrucțiuni, se termină întregul bloc if. Și un operator2 este executat, care nu are nimic de a face cu dacă. Prin urmare, este îndeplinită indiferent de condiția verificată.

În cel de-al doilea caz, în condiția adevărată, operatorul BOTH este executat. De ce? Dar deoarece sunt unite prin paranteze ale blocului și sunt executate ca un întreg. Dacă condiția este falsă, nici operatorul1, nici operatorul2 nu vor fi executați. Aici aveți două paranteze mici!







3. Dacă. altceva. Am complicat problema.

Opțiunea atunci când condiția este falsă, de asemenea, ar trebui să aibă unele afirmații de genul asta: dacă am să lucrez astăzi - condiția este adevărată - mă trezesc la 7h, și se spală, se îmbrăca, perekushu și du-te la locul de muncă. Dacă condiția nu este falsă (altfel) - voi dormi până la ora 10 și mă voi plimba.

Cum va arata:

dacă (condiția verificată)
operator1 (sau bloc de operatori, după cum am aflat deja)

altfel
operator2 (sau bloc de declarații)

dacă (lucrează)
te la 7h;

du-te la muncă;
>
altfel
Am dormit până la 10 ore;

// nu uitați să specificați cât de multe și apoi cum veți pleca. (
>

Executarea instrucțiunii if începe cu evaluarea expresiei.

Execuția ulterioară se realizează în conformitate cu următoarea schemă:
  • dacă expresia este adevărată (adică, alta decât 0), atunci operatorul-1 este executat.
  • dacă expresia este falsă (adică 0), atunci operatorul-2 este executat.
  • dacă expresia este falsă și nu există operator-2. se execută următorul operator.


4. Constructii imbricate. Dacă declarațiile pot fi imbricate una în cealaltă. O instrucțiune if este inclusă în constructul if sau în alt construct al altei instrucțiuni if. Pentru a face programul mai ușor de citit, este recomandat să grupați operatorii și construcțiile în instrucțiuni imbricate, dacă se folosesc cotiere curbate. Dacă ochelarii sunt omiteți, compilatorul asociază fiecare alt cuvânt cheie cu cea mai apropiată dacă, pentru care nu există altceva.


Ca rezultat al acestui program, r devine 2.

Dacă omiteți bretele în program după instrucțiunea if, programul va arăta astfel:

int main ()
int t = 2, b = 7, r = 3;


În acest caz, r va primi o valoare de 3, deoarece alt cuvânt cheie se referă la cea de-a doua instrucțiune if nu este executată, deoarece condiția verificată în prima instrucțiune if nu conține.

Fragmentul următor ilustrează instrucțiunile if:

dacă (ZNAC == '-') x = y-z;

altfel dacă (ZNAC == '+') x = y + z;

altfel dacă (ZNAC == '*') x = y * z;

altfel dacă (ZNAC == '/') x = y / z;


Din examinarea acestui exemplu, putem concluziona că construcțiile care folosesc declarațiile imbricate dacă sunt destul de greoaie și nu întotdeauna suficient de fiabile. O altă modalitate de a organiza o alegere dintr-o varietate de opțiuni diferite este utilizarea unui operator special de selecție a comutatoarelor, pe care îl vom învăța în următoarea lecție.

(Notă din Alpha:
Construcția formei


este destul de tipic pentru încercarea de diferite opțiuni (s-ar putea spune, unul dintre idiomurile C ++), pentru ușurința de citire este formatat fără indentare, și, de fapt, nu este considerată ca investiție (deși aceasta este în mod oficial). În plus, nu este clar unde a venit concluzia cu privire la greutatea și lipsa de fiabilitate a acestui design. De exemplu, l-am aplicat în articolul meu despre recursivitate în secțiunea privind determinarea dacă un șir corespunde unui model.)

  • Introduceți două numere. Cea mai mică dintre ele trebuie să înlocuiți suma numerelor introduse, cu atât este mai mare diferența. Afișați rezultatele pe ecran.
  • Introduceți un număr. Pe ecran, afișează un mesaj despre dacă acest număr este pozitiv, negativ sau zero.
  • Sarcina: meteorologul elimină 4 măsurători ale vitezei vântului pe zi. Trebuie să intrați
Aceste patru numere din program, calculează viteza medie zilnică a vântului și o aduc pe ecran. OBLIGATORIU: verificați numerele introduse astfel încât să nu fie introdusă o valoare nevalidă (negativă). Dacă se întâmplă acest lucru, nu afișați rezultatul (viteza medie), dar afișați mesajul Intrare incorectă a datelor!





Articole similare

Trimiteți-le prietenilor: