ramificare algoritmi

Până acum ați folosit algoritmi liniari, adică, algoritmi, în care toate etapele de rezolvare a sarcinilor sunt efectuate strict secvențial. Astăzi vă va întâlni cu algoritmi de ramificare.

Definiția. Ramificare numit un algoritm, în care sunt selectați una dintre mai multe variante posibile ale procesului de calcul. Fiecare astfel de cale este numită o ramură a algoritmului.

Semnul ramificare algoritm este prezența unor condiții operațiunile de verificare. Există două tipuri de condiții - simple și complexe.

Condiții simple (atitudine) este o expresie compusă din două expresii aritmetice sau două valori de text (altfel, ele sunt numite operanzi) asociate cu unul din semnele:

<- меньше, чем.
> - mai mult.
<= - меньше, чем. или равно
> = - mai mare. sau egal cu
<> - nu este egal
= - egal

De exemplu, relațiile simple, sunt după cum urmează:

x-y> 10; k<=sqr(c)+abs(a+b); 9<>11; „Mama“<>„Tata“.

În aceste exemple, primele două relații includ variabile, astfel încât corectitudinea acestor relații poate fi judecat numai prin substituirea unor valori:

  • dacă x = 25, y = 3, atunci raportul dintre x-y> 10 va fi adevărat, deoarece 25-3> 10
  • dacă x = 5, y = 30, atunci raportul dintre x-y> 10 va fi incorectă, deoarece 5-30<10
  • Verificați fidelitatea de-a doua relație prin substituirea următoarele:

    Definiția. Exprimarea, prin substituirea în care unele dintre variabile, putem spune despre el este adevărat (true) sau fals (incorect) numite boolean expresii (logice).

    Notă. Numele „boolean“ este derivat din numele matematicianului George Boole, dezvoltat în secolul al XIX-lea, algebra booleană și logica.

    Definiția. O variabilă care poate lua una din două valori: Adevărat (adevărat) sau False (fals) este numit Boolean (logica) variabila. De exemplu,

    Sarcină. Se calculează valoarea modulului și rădăcina pătrată a expresiei (x, y).

    Pentru a rezolva această problemă, caracteristici standard deja familiare de a găsi rădăcina pătrată - Sqr și modulul - Abs. Prin urmare, puteți scrie deja următoarele afirmații de atribuire:

    În acest caz, programul va arata:

    Programul Znachenia;
    utilizări
    crt;
    var
    x, y. întreg;
    Koren, Modul. reale;
    începe
    ClrScr;
    scrie ( „Introduceți valorile variabilelor x și y, separate printr-un spațiu“);
    readln (x, y);
    Koren: = sqrt (x-y);
    Modul: = Abs (x-y).
    scrie ( „valoarea rădăcinii pătrate (x-y) este egal cu“);
    scrie ( 'valoarea modulului de (x-y) este egal cu');
    readln;
    Sfârșit.

    S-ar părea că problema este rezolvată. Dar noi nu iau în considerare intervalul de toleranță pentru a găsi rădăcina pătrată a modulului. Desigur, în matematică trebuie să știți că puteți găsi orice număr al modulului, dar valoarea rădăcina pătrată a expresiei trebuie să fie non-negativ (mai mare sau egal cu zero).

    Prin urmare, programul nostru are gama admisibil de date de intrare. Găsim acest domeniu. Pentru aceasta vom scrie inegalitatea x, y> = 0 si rezolvarea ei obținem x> = y. Deci, în cazul în care utilizatorul a programului nostru sunt numere astfel încât valoarea de substituție a acestei inegalități este egală cu adevărat, atunci rădăcina pătrată a expresiei (x, y) va fi introdus pentru a elimina cutia. Iar dacă valoarea inegalității este falsă, executarea programului se încheie anormal.

    Sarcină. Introduceți textul programului. Testați programul cu următoarele valori ale variabilelor, și pentru a trage concluzii.

    Fiecare program, în măsura în care este posibil, ar trebui să monitorizeze permisibilitatea cantităților implicate în calcule. Aici ne confruntăm cu o ramură a algoritmului nostru, în funcție de condițiile. Pentru a pune în aplicare astfel de sucursale condiționale în operatorii de utilizare Pascal Dacă și altceva, și transferul necondiționat operatorul Goto.

    Luați în considerare operatorul În cazul în care.

    Pentru problema noastră, trebuie să ne vypolit următorul algoritm:

    dacă x> = y,
    apoi se calculează rădăcina pătrată,
    în caz contrar se afișează un mesaj despre greșelile comune.

    Am scrie cu declarația Dacă. Se va arăta.

    dacă x> = y
    atunci
    Koren: = Sqr (x-y)
    altfel
    scrie ( „nevalid introdus variabile“);

    Acum, în funcție de valorile de intrare ale variabilelor x și y, condițiile pot sau nu pot deține.

    În general, forma integrală a unei structuri condiționate este după cum urmează:

    dacă <логическое выражение>
    atunci
    <оператор 1>
    altfel
    <оператор 2>

    Operatorul condițional lucrează la următorul algoritm.

    Prima expresie valoare logică evaluată situată în spatele cuvântului de birou IF. Dacă rezultatul este adevărat. efectuat <оператор 1>, aflat după cuvântul APOI și acțiunile după Else sunt omise; în cazul în care rezultatul este fals, dimpotrivă, acțiunile după cuvântul APOI omit, iar după ELSE este executată <оператор 2>.

    Structura de management poate apărea dacă inflexibilă, deoarece acțiunea întreprinsă poate fi descrisă de un singur operator. Uneori poate fi necesar pentru a efectua o secvență de declarații. În acest caz, aș dori să încheie întreaga secvență în paranteze imaginare. Pascal prevăzut pentru acest caz.

    În cazul în care operatorul trebuie să execute o serie de declarații, ele sunt în paranteze de operator începe-end. Proiectarea începe. Sfârșitul numit o declarație compus.

    dacă <логическое выражение>
    atunci
    începe
    1 operator de;
    Operatorul 2;
    .
    capăt
    altfel
    începe
    1 operator de;
    Operatorul 2;
    .
    se încheie;

    Definiția. Compusul declarație - combină mai mulți operatori într-un singur grup. Declarații în interiorul grupului compus este suportul operatorului (begin-end).

    începe
    1 operator de;
    Operatorul 2;
    se încheie;

    Având în vedere cunoștințele dobândite transforma programul nostru.

    Programul Znachenia;
    utilizări
    crt;
    var
    x, y. întreg;
    Koren, Modul. reale;
    începe
    ClrScr;
    scrie ( „Introduceți valorile variabilelor x și y, separate printr-un spațiu“);
    citit (x, y);
    dacă x> = y
    atunci
    începe
    Koren: = Sqr (x-y)
    Modul: = Abs (x-y)
    scrie ( „valoarea rădăcinii pătrate (x-y) este egal cu“);
    scrie ( 'valoarea modulului de (x-y) este egal cu');
    capăt
    altfel
    scrie ( „nevalid introdus variabile“);
    readln;
    Sfârșit.

    Operatorul compozit este un operator și

    Simbolul „“, în acest caz, împarte asignare S: = 0 și operatorul gol.

    O declarație goală nu implică nici o acțiune, și în nici un fel indicat în programul de înregistrare.

    De exemplu, o instrucțiune compusă

    Acesta include doar o singură declarație goală.

    Dacă ați observat, programul în Pascal conține întotdeauna o declarație compus - secțiunea operatorilor de program.

    Atenție! Înainte de cuvânt oficial separator Else (virgula) nu este atribuit.

    Rețineți că majoritatea operatorilor din programele Pascal se încheie cu punct și virgulă, dar nici un punct și virgulă este plasat după unii operatori. Formulăm regulile generale de utilizare a virgulă:

    1. Fiecare descriere și definirea variabilei capăt constant cu punct și virgulă.
  • Fiecare operator în corpul programului se termină cu punct și virgulă, cu excepția cazului în care nu este urmat imediat de următoarele cuvinte rezervate End, Else, Pana.
  • După anumite cuvinte rezervate, cum ar fi Apoi, Else, Var, Const, Begin, niciodată nu o virgulă.
  • Luați în considerare un alt exemplu.

    Sarcină. Afișarea cea mai mare dintre cele două numere date.

    Puteți utiliza, de asemenea, un abreviată (incomplet), o formă de intrare condiționată. Acest formular este utilizat atunci când condițiile în caz de eșec de a nu face nimic altceva.

    Formular incomplet de declarație condiționată este după cum urmează.

    dacă <логическое выражение>
    atunci
    <оператор>

    Apoi, în cazul în care expresia se află în spatele cuvântului oficial IF. rezultând într-o adevărată, acțiunile sunt realizate după cuvântul THEN, în caz contrar acești pași sunt omise.

    Sarcină. Scrieți un program care, în cazul în care numărul introdus o modificare negativă la alta.

    1. Dacă întreg M este divizibil cu un număr întreg N, apoi afișa coeficientul de divizare, altfel va afișa un mesaj M la N nu este divizibil uniform.
  • Înregistrarea declarație condiționată în cadrul căreia valoarea variabilei se calculează cu formula a + b, și în cazul în care - și ciudat a * b, și în cazul în care - chiar.
  • Se calculează valoarea funcției:
  • Scrieți un program pentru a conta cantitatea de numai pozitive din cele trei numere date.
  • Având în vedere trei numere. Scrie programul pentru numărarea numărului de zero de valori proprii.
  • Scrieți un program, simplificând următorul fragment de cod:
    dacă a> b, atunci c: = 1;
    dacă a> b, atunci d: = 2;
    în cazul în care un<=b then c:=3;
    în cazul în care un<=b then d:=4.
  • Care va fi valoarea variabilei și apoi executați declarațiile:
    a: = 3;
    în cazul în care un<4
    atunci
    începe
    Inc (a, 2);
    Inc (a, 3);
    se încheie;
  • Găsiți numărul de numere pozitive (negative) între cele patru numere întregi A, B, C, D.
  • Asigurați-un program care reduce numărul primelor introduse de cinci ori, în cazul în care este mai mare decât al doilea număr introdus în termeni absoluți.
  • Pentru o valoare dată X valoarea calculată a funcției, care este definit după cum urmează:
    Y = sin (x), atunci când x> = 1
    Y = cos (x), atunci când x <1
  • Pentru a determina dacă numărul introdus chiar.
  • Calculatorul întreabă: „Ce-i tot ce ai nevoie?“ iar în cazul în care computerul primește un răspuns, se spune, „Ei bine, desigur, computerul!“, sau „Acest lucru este, de asemenea, necesar pentru toți, dar ai nevoie de un calculator!“
  • Scrieți un program în care computerul ar fi salutat doar proprietarul, dar atunci când încercați să introduceți orice alt nume ar fi întrebat: „Unde sunt (de exemplu), Bob?“
  • Scrieți un program care determină dacă există o parte fracționară a introducerii numărului.
  • Scrieti un cerc program de risuyuschuyu în cazul introducerii de utilizator 1 și pătrat în toate celelalte cazuri.
  • articole similare