Pentru a putea implementa logica în program, se folosesc instrucțiuni condiționale. În mod speculativ, acești operatori pot fi reprezentați sub formă de puncte nodale, ajungând la care programul poate alege ce direcție ar putea să se deplaseze mai departe. De exemplu, doriți să determinați dacă o variabilă arg conține un număr pozitiv sau negativ și afișați un mesaj corespunzător pe ecran. Pentru a face acest lucru, puteți utiliza instrucțiunea if (dacă), care efectuează verificări similare.
În cel mai simplu caz, sintaxa acestei instrucțiuni if este:
dacă <выражение>
<операторы>
capăt
Dacă valoarea parametrului "expresie" corespunde valorii "true", atunci operatorul este executat, altfel este omis de program. Trebuie remarcat faptul că "expresia" este o expresie condiționată în care se verifică o anumită condiție. În tabel. 2.1 prezintă variante de expresii logice simple ale instrucțiunii if.
Tabelul 2.1. Expresii booleene simple
Adevărat, dacă variabila a este mai mică decât variabila b și altfel falsă.
Adevărat, dacă variabila a este mai mare decât b și altfel falsă.
Adevărat, dacă variabila a este egală cu variabila b și altfel falsă.
Adevărat, dacă variabila a este mai mică sau egală cu variabila b și falsă altfel.
Adevărat, dacă variabila a este mai mare sau egală cu variabila b și falsă altfel.
Adevărat, dacă a nu este egal cu b și fals altfel.
Iată un exemplu de implementare a funcției semn (), care returnează +1 dacă numărul este mai mare decât zero, -1 dacă numărul este mai mic decât zero și 0 dacă numărul este zero:
funcția my_sign
x = 5;
dacă x> 0
disp (1);
capăt
dacă x <0
disp (-1);
capăt
dacă x == 0
disp (0);
capăt
O analiză a acestui exemplu arată că toate aceste trei condiții se exclud reciproc, adică când una dintre ele funcționează, nu este nevoie să verificați cealaltă. Implementarea unei astfel de logici va crește viteza programului. Acest lucru se poate realiza prin utilizarea construcției
dacă <выражение>
<операторы1> % sunt îndeplinite dacă sunt condiționate
altfel
<операторы2> % sunt îndeplinite dacă condiția este falsă
capăt
Apoi exemplul de mai sus poate fi scris astfel:
funcția my_sign
x = 5;
dacă x> 0
disp (1);
altfel
dacă x <0
disp (-1);
altfel
disp (0);
capăt
capăt
În acest program, pozitivitatea variabilei x este verificată mai întâi, iar dacă este, atunci valoarea 1 este afișată și toate celelalte condiții sunt ignorate. Dacă prima condiție este falsă, atunci programul execută altfel (altfel) în cea de-a doua condiție, unde variabila x este verificată pentru negativitate și dacă condiția este adevărată, se afișează -1. Dacă ambele condiții sunt false, se obține valoarea 0.
Exemplul de mai sus poate fi scris într-o formă mai simplă, utilizând o altă construcție a instrucțiunii if a limbajului MatLab:
dacă <выражение1>
<операторы1> % sunt adevărate dacă expresia1 este adevărată
elseif <выражение2>
<операторы2> % sunt adevărate dacă expresia2 este adevărată
.
elseif <выражениеN>
<операторыN> % sunt valabile dacă expresia este adevărată
capăt
și este scrisă după cum urmează:
funcția my_sign
x = 5;
dacă x> 0
disp (1); % este satisfăcută dacă x> 0
altfel x <0
disp (-1); % este satisfăcută dacă x <0
altfel
disp (0); % este satisfăcută dacă x = 0
capăt
Folosind instrucțiunea conditional if, puteți testa pentru condiții mai complexe (compuse). De exemplu, trebuie să stabiliți dacă variabila x se încadrează într-un interval de valori de la 0 la 2? Acest lucru se poate face prin verificarea simultană a două condiții: x> = 0 și x <=2. Если эти оба условия истинны, то x попадает в диапазон от 0 до 2.
Pentru a pune în aplicare condițiile compuse în operatorii logici MatLab sunt folosiți:
- logic AND
| | - logic OR
Să luăm în considerare un exemplu de utilizare a condițiilor compuse. Să se solicite verificarea loviturii variabilei x în intervalul de la 0 la 2. Programul va fi scris după cum urmează:
funcția my_if
x = 1;
dacă x> = 0 x <= 2
disp ('x face parte din intervalul de la 0 la 2');
altfel
disp ('nu aparține domeniului 0 la 2');
capăt
În cel de-al doilea exemplu, verificăm dacă variabila x nu aparține intervalului de la 0 la 2. Aceasta se obține prin declanșarea uneia din cele două condiții: x <0 или x> 2:
funcția my_if
x = 1;
dacă x <0 | x> 2
disp ('nu aparține domeniului 0 la 2');
altfel
disp ('x face parte din intervalul de la 0 la 2');
capăt
Folosind operatorii logici AND, OR, NOT, puteți crea o varietate de condiții compuse. De exemplu, puteți verifica dacă variabila x se încadrează în intervalul de la -5 la 5, dar nu aparține domeniului de la 0 la 1. Evident, acest lucru poate fi implementat după cum urmează:
funcția my_if
x = 1;
dacă (x> = -5 x <= 5) & (x <0 | x> 1)
disp ('x aparține lui [-5, 5], dar nu intră [0, 1]');
altfel
disp ('x sau nu în [-5, 5] sau în [0, 1]');
capăt
Rețineți că, cu o condiție complexă complexă, s-au folosit paranteze. Problema este că prioritatea operației AND este mai mare decât prioritatea operației OR și dacă nu există paranteze, condiția ar arăta astfel: (x> = -5 și x <= 5 и x <0) или x> 1. Evident, un astfel de test ar da un rezultat diferit de cel așteptat.
Parentheses în programare sunt folosite pentru a schimba prioritățile pentru executarea declarațiilor. Ca și operatorii aritmetici, operatorii logici pot fi de asemenea modificați la voința programatorului. Prin utilizarea parantezelor, mai întâi verificați în interiorul acestora și apoi în afara lor. De aceea, în exemplul de mai sus, acestea sunt necesare pentru a obține rezultatul dorit.
Prioritatea operațiilor logice este următoarea:
) - cea mai mare prioritate;
Și () - prioritatea medie;
OR (|) este cea mai mică prioritate.