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
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ă:
- Fiecare descriere și definirea variabilei capăt constant cu punct și 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.
- 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.
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.
a: = 3;
în cazul în care un<4
atunci
începe
Inc (a, 2);
Inc (a, 3);
se încheie;
Y = sin (x), atunci când x> = 1
Y = cos (x), atunci când x <1