algoritmi de ramificare - studopediya

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 mare. sau egal cu

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:

b) k = 65, a = 10, b = -3, c = 2

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:

Koren, Modul. reale;

scrie ( „Introduceți valorile variabilelor x și y, separate printr-un spațiu“);

scrie ( „valoarea rădăcinii pătrate (x-y) este egal cu“);

scrie ( 'valoarea modulului de (x-y) este egal cu');

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.

a) x = 23, y = 5; b) x = -5, y = 15; c) x = 8, y = 8.

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:

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.

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ă <логическое выражение>

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ă <логическое выражение>