9 Declarație condiționată dacă operatorul de ramură dacă altceva în pascal

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:

  1. Verificarea valorii booleene
  2. Adevărul (obligatoriu) - va fi executat dacă valoarea logică este adevărată (adevărată)
  3. 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:

  1. logici literali
  2. Variabile booleene
  3. ș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ție condiționată dacă operatorul de ramură dacă altceva în pascal

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:

  1. Forma completă este forma instrucțiunii if, în care sunt prezente ambele ramuri - și apoi și altceva
  2. 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ție condiționată dacă operatorul de ramură dacă altceva în pascal

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 de ramură dacă altceva în pascal






-- 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:

  1. suma punctelor lui Kolya și Misha este mai mare de 20 $
  2. 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 de ramură dacă altceva în pascal

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:

  1. 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.
  2. 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:

  1. suma punctelor lui Kolya și Misha este mai mare de 20 $
  2. 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

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ă

  1. Care este utilizarea operatorului de ramură (operator condițional)?
  2. Ce ramuri ale afirmației condiționale știți?
  3. Care este diferența dintre o formă completă a unui operator condiționat și una incompletă?
  4. Când avem nevoie de paranteze de operare în ramurile instrucțiunii IF și când nu?
  1. 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)
  2. 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".
  3. 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).

  • Se dau trei numere întregi: $ A $, $ B $, $ C $. Verificați adevărul declarației: "Numărul $ A $ și numărul $ B $ este mai mare de 17 și $ C $> 7". - ieșirea "da" dacă este adevărată și "nu" dacă este falsă.
  • Utilizatorul introduce două numere, găsind numărul maxim de ele. (totul este simplu aici)
  • Utilizatorul introduce trei numere, găsind numărul maxim de ele.

    NOTĂ: aici veți avea nevoie de blocuri if-blocate.

  • Utilizatorul introduce patru numere, găsind numărul maxim de ele.
  • Kolya a marcat $ k $ puncte, Misha $ n $ puncte și Petya $ d $ puncte în timpul competiției. În cazul în care:
    1. suma punctelor lui Kolya și Misha este mai mare de 20 $
    2. 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.

    Surse (ce altceva să citiți)

    Cuvinte cheie pentru Forumul FKN + antitotal (CS VSU):







    Articole similare

    Trimiteți-le prietenilor: