O declarație condiționată - ce este?
Condiționat IF este utilizată pentru a selecta situațiile de programare (simularea diferitelor scenarii cu privire la care ne întâlnim în viață, dar acum în program).
Structura operatorului condițional. modularitate
Operatorul condițional în forma sa generală constă din trei părți:
- Verificarea valorii booleene
- Adevărul (obligatoriu) - va fi executat dacă valoarea logică este adevărată (adevărată)
- Filiala falsă (opțională) - va fi executată dacă valoarea booleană este falsă (false)
Rețineți că valoarea logică este, de fapt, răspunsul la întrebarea formatului "da / nu". reamintim că tipul logic al valorii este:
- logici literali
- Variabile booleene
- și expresii logice
-- la fel ca orice tip de date simplu, poate fi reprezentat de literali, variabile sau expresii din ele.
În codul programului, structura unei declarații condiționale poate fi ilustrată prin următoarea schemă:
-- în acest caz va fi executată o filială "falsă", deoarece $ 5> 7 $ returnează false.
Un punct și virgulă mai devreme
Notă (vedeți exemplele de mai sus și de mai jos) că nu există punct și virgulă înainte de alta.
Parantezele operatorului unei declarații condiționate
În exemplul precedent, uitați-vă la parantezele instrucțiunilor. corpurile înconjurătoare ale ramurilor operatorului de ramură - încep și termină sunt necesare în cazul în care se desfășoară mai multe operațiuni în ramură. Dacă ramura conține o singură operație, atunci nu sunt necesare paranteze ale operatorului.
De exemplu, pentru situația descrisă în această diagramă:
![9 Declarația conditională if (operatorul ramurii dacă altceva) în pascal (prima este mai mare decât a doua) 9 Declarație condiționată dacă operatorul de ramură dacă altceva în pascal](https://images-on-off.com/images/150/9uslovniyoperatorifoperatorvetvleniyaife-65dca11f.jpg)
Aceeași situație poate fi ilustrată și prin cod:
-- aici, în ambele ramuri, există o singură operațiune și, prin urmare, parantezele operatorului nu sunt necesare.
Forma completă și incompletă a operatorului IF
Instrucțiunea IF din program poate fi reprezentată în următoarele forme:
- Forma completă este forma instrucțiunii if, în care sunt prezente ambele ramuri - și apoi și altceva
- Forma incompletă este o formă în care numai atunci există.
Forma completă a operatorului condițional IF
În forma completă a operatorului IF, sunt prezente ambele sucursale, și anume forma completă pe care am considerat-o mai sus, de exemplu:
-- Aici, ca o condiție, am comparat variabila cu un număr, și apoi am descris două scenarii, dintre care unul va fi executat în funcție de valoarea condiției.
În ultimul exemplu de cod, avem o operație în ramura adevărului, iar în falsitate două ramuri - această situație poate fi reprezentată în schema de evoluție după cum urmează (cu o acțiune preliminară înainte de dacă):
![9 Declarația conditională if (operatorul ramurii dacă altceva) în pascal (prima este mai mare decât a doua) 9 Declarație condiționată dacă operatorul de ramură dacă altceva în pascal](https://images-on-off.com/images/150/9uslovniyoperatorifoperatorvetvleniyaife-7cc3c589.jpg)
Forma incompletă a declarației condiționate IF
În forma incompletă a afirmației condiționate, există doar un scenariu de adevăr. Ramura de falsitate nu este descrisă deloc. de exemplu:
-- Nu există nimic în ramura falsității. adică, dacă $ a $ nu este mai mare de $ 5 $, atunci nu se va întreprinde nicio acțiune.
În diagrama bloc, forma incompletă a operatorului de ramură arată astfel:
![9 Declarație condiționată dacă operatorul ramane altceva decât pascal (altceva) 9 Declarație condiționată dacă operatorul de ramură dacă altceva în pascal](https://images-on-off.com/images/150/9uslovniyoperatorifoperatorvetvleniyaife-dd370893.jpg)
-- regula de folosire a consolelor de operare funcționează de asemenea aici: dacă există mai multe operații în ramură, atunci sunt necesare începutul și sfârșitul.
tutorial
Exemplul nr. 1 - formă incompletă de IF
Comparați două numere, dacă prima este mai mare decât a doua, afișați "22" și apoi cu un apel separat la scriteln () numărul 555.
-- în această problemă se indică faptul că este necesar să se ia anumite acțiuni doar într-un caz ("dacă primul este mai mare decât cel de-al doilea") și, prin urmare, va folosi operatorul de ramificare în formă incompletă:
-- în filiala adevărului au existat două operațiuni și, prin urmare, am folosit paranteze pentru operatori.
Exemplul # 2 - forma completă, o acțiune pe ramură
Comparați două numere, dacă prima este mai mare decât a doua, afișați "22" pe ecran, altfel veți afișa "abc".
-- în această problemă sunt indicate două acțiuni alternative și, prin urmare, vom folosi operatorul de ramură în forma sa completă:
-- rețineți că nu există punct și virgulă înainte.
Exemplul # 3 - Expresii booleene și instrucțiuni de ramură IF
Kolya a marcat $ k $ puncte, Misha $ n $ puncte și Petya $ d $ puncte în timpul competiției. În cazul în care:
- suma punctelor lui Kolya și Misha este mai mare de 20 $
- iar suma punctelor Petya și Misha este mai mică de $ 55 $
--apoi ieșiți la mesajul consolei că o remiză, altfel afișați un mesaj care la învins pe Kohl.
Acest lucru este necesar ca o condiție pentru executarea a două sub-condiții, și nu una dintre ele - dar două în același timp, pentru că expresia logică dacă vom folosi operația logică AND. atunci puteți decide astfel:
Exemplul # 4 - declarații condiționale imbricate
Operatorii pot fi imbricate unul în interiorul celuilalt ca și cum se arată în diagrama de flux (de fapt, operatorul încorporat în cea interioară a ramurilor externe):
![9 Declarație condiționată dacă operatorul ramane altceva decât pascal (altceva) 9 Declarație condiționată dacă operatorul de ramură dacă altceva în pascal](https://images-on-off.com/images/150/9uslovniyoperatorifoperatorvetvleniyaife-f3ee21e9.jpg)
Luați în considerare sarcina a cărei soluție va corespunde acestei scheme:
Obțineți două numere întregi de la utilizator, dacă primul este mai mare decât cel de-al doilea, afișați suma pe ecran și apoi diferența lor, altfel:
- comparați mai întâi suma acestora cu numărul de $ 25 $, dacă este mai mare, apoi afișați primul număr și, dacă este mai mic, apoi al doilea.
- apoi afișați al doilea număr în cutie
Implementăm soluția sub forma unui program:
Exemplul 5 - declarații condiționale imbricate
De exemplu, problema dintr-un exemplu anterior:
Kolya a marcat $ k $ puncte, Misha $ n $ puncte și Petya $ d $ puncte în timpul competiției. În cazul în care:
- suma punctelor lui Kolya și Misha este mai mare de 20 $
- iar suma punctelor Petya și Misha este mai mică de $ 55 $
--apoi ieșiți la mesajul consolei că o remiză, altfel afișați un mesaj care la învins pe Kohl.
ar putea fi rezolvată cu ajutorul blocurilor imbricate ale operatorului condițional IF:
-- Vă rugăm să rețineți că începutul și sfârșitul nu sunt necesare pentru adevărul sucursalei externe a operatorului, deoarece acesta este încorporat doar una, dacă - și alte linii se referă la acest imbricate în cazul în care.
IMPORTANT: În acest exemplu, există o dublare a codului. care este un stil rău. Mai mult, blocurile imbricate din cod sunt mai greu de înțeles, prin urmare:
Dacă nu puteți utiliza cuiburile, nu o utilizați. utilizați mai bine condiții mai complexe cu operații logice.
Exemplul №6 - alegerea vieții
Aceasta este situația în care eroul a căzut în această ilustrație:
![9 Declarație condiționată dacă operatorul de ramură dacă altceva în pascal (ramificare) 9 Declarație condiționată dacă operatorul de ramură dacă altceva în pascal](https://images-on-off.com/images/150/9uslovniyoperatorifoperatorvetvleniyaife-f4b30279.jpg)
Pot fi programate după cum urmează:
- de fapt, este vorba și de câțiva operatori de ramificație imbricate, iar aici atașamentul pe toate cele două niveluri inferioare are loc în ramura falsității.
Muncă independentă
- Care este utilizarea operatorului de ramură (operator condițional)?
- Ce ramuri ale afirmației condiționale știți?
- Care este diferența dintre o formă completă a unui operator condiționat și una incompletă?
- Când avem nevoie de paranteze de operare în ramurile instrucțiunii IF și când nu?
- Comparați două numere, dacă prima este mai mare decât a doua, apoi afișați "12". (aici este necesară utilizarea formei incomplete a operatorului condițional)
- Comparați două numere, dacă prima este mai mare decât cea de-a doua, apoi afișați "12" și, dacă nu, afișați "888".
- Se dau trei numere întregi: $ A $, $ B $, $ C $. Verificați adevărul afirmației: "Numărul $ A $ este între numerele $ B $ și $ C $" - ieșire "da" dacă este adevărat și "nu" dacă este fals.
NOTĂ: Această sarcină următoare se bazează pe ceea ce am decis deja (vezi sarcinile de la sfârșitul lecției).
NOTĂ: aici veți avea nevoie de blocuri if-blocate.
- suma punctelor lui Kolya și Misha este mai mare de 20 $
- sau produsul punctelor Petit și Misha sub $ 55 $
--apoi ieșiți la mesajul consolei că o remiză, altfel afișați un mesaj care la învins pe Kohl.