Structura ramurilor. Operator condiționat. Operator condițional în pascal Traducerea gramaticală care traduce operatorul condiționat al limbajului pascal

Instrucțiunile structurate sunt instrucțiuni care conțin alte instrucțiuni și controlează succesiunea în care sunt executate. Acestea includ:

Operator compus

De multe ori este necesar ca, în raport cu o anumită acțiune, mai multe enunțuri să fie percepute în program ca un singur enunț. Un astfel de operator poate fi obținut dacă secvența necesară de operatori este combinată cu paranteze operator. Cuvintele de serviciu Început și Sfârșit sunt numite paranteze operator.

Format operator:

operator numarul 1;

operator numarul 2;

operator numarul 3;

operator numărul n-1;

numărul operator n; Sfârşit;

Cuvântul Început joacă rolul unui parantez de deschidere, cuvântul Sfârșit joacă rolul unui parantez de închidere.

O declarație compusă este tratată ca o singură declarație. Poate fi inserat oriunde în program unde este permisă o singură instrucțiune.

Declarațiile incluse în instrucțiunea compusă, ca orice instrucțiuni, sunt separate prin punct și virgulă, dar acest separator poate fi omis înainte de final. După sfârșit, este necesar un punct și virgulă ca separator între instrucțiunea compusă și instrucțiunea următoare.

În secțiunile următoare, semnificația și scopul operator compus vor fi ilustrate cu numeroase exemple.

Declarație IF condiționată

Operatorul If implementează construcția algoritmică „Decizie” și vă permite să schimbați ordinea de execuție a operatorilor în funcție de adevărul sau falsitatea unei anumite condiții. Formatul operator poate fi scris în două forme: complet și incomplet.

Format operator în formă completă:

Dacă<условие>Apoi<оператор 1>Altfel<оператор 2>

Format operator în formă incompletă:

Dacă<условие>Apoi<оператор 1>

Dacă (dacă), Atunci (atunci), Altfel (altfel) sunt cuvinte rezervate.

Diagramele instructiunii if sunt prezentate mai jos:

Operatorul condiționat funcționează astfel. În primul rând, se evaluează expresia condiționată< условие >. Dacă rezultatul este adevărat, atunci< оператор 1 >(după cuvântul Atunci) și< оператор 2 >sarit. Dacă rezultatul este Fals (fals), atunci< оператор 1 >sarit si executat< оператор 2 >(după cuvântul Else). Else nu este niciodată precedat de punct și virgulă, deoarece acesta nu este sfârșitul instrucțiunii If.

Altceva parte<оператор 2>condițional If poate fi omisă. În cazul în care un< условие >Dacă declarația se evaluează la True , atunci<оператор 1>, în caz contrar, acest operator este omis. În acest caz, formatul declarației condiționate are o formă incompletă:

Să comparăm două modele:

Dacă<условие>Apoi<оператор 1>;

Dacă<условие>Apoi<оператор 1>; <оператор 2>;

În prima linie<оператор 1>fie executat, fie neexecutat în funcţie de execuţie<условия>. În a doua linie<оператор 2>se execută întotdeauna, pentru că după<оператора 1>există un separator ";" și orice lucru care merită câmpul delimitator contează ca un alt operator. Prin urmare, conform formatului instrucțiunii If, poate exista o singură instrucțiune după cuvintele rezervate Then și Else.

Exemplu:

Dacă a > 0 Atunci b:=1;

Dacă a > 0 Atunci b:=1; a:=b; (operator a:=b; întotdeauna executat)

Dacă este necesar să se execute după Then și Else nu unul, ci mai mulți operatori, atunci ar trebui să se pună paranteze operator, adică. utilizați un operator compus.

În acest caz, instrucțiunea If ar arăta astfel:

Dacă<условие>Apoi

operator 11;

operator 1n;

operator 21;

operator 2n;

Exemplu.

Dacă a>0, atunci începe b:=1; a:=b; Sfârşit;

SARCINA 1. Calculați valoarea funcției dată de inegalități

y=x+1 pentru x<0; y=2∙x при x>0.program a5; varx,y:real; begin write('Introduceți valoarea lui x: '); readln(x); if x writeln('Valoarea lui y este: ', y:6:2) end.

Rezultatele programului:

Introduceți valorile x:0,5

Valoarea lui y este: 1,00

SARCINA 2. Scrieți un program pentru rezolvarea unei ecuații pătratice. Dacă discriminantul este mai mic decât zero, atunci afișați mesajul corespunzător.

Programul a6; var a,b,c:real; (coeficienții ecuației) x1,x2:real; (rădăcinile ecuației) d:real; (discriminant) begin Writeln('Rezolvarea unei ecuații pătratice':50); Write('Introduceți valorile coeficienților a,b,c:'); readln(a,b,c); (introducerea coeficienților) d:=b*b-4*a*c; dacă (d<0) then Writeln(‘Уравнение не имеет корней.’) else begin {операторные скобки} x1:=(-b+sqrt(d))/(2*a); x2:=(-b-sqrt(d))/(2*a); WriteLn(‘Корни уравнения: ’, x1:8:2,x2:8:2); end; end.

Rezultatele programului:

Rezolvarea unei ecuații pătratice

Introduceți coeficienții a,b,c:3 1 6

Ecuația nu are rădăcini.

Într-o instrucțiune If, ​​poate fi folosită nu numai o instrucțiune compusă, ci și orice instrucțiune structurată. Operatorul condiționat Dacă este considerat de noi, poate fi folosit și ca atare operator. În acest caz se vorbește de instrucțiuni If imbricate.

Exemplu.

dacă condiție atunci
ÎNCEPE Paranteze operator
operator; cuibărit
declarație IF,
formă incompletă
if condiție atunci declarație
declarație else;
Sfârşit
altfel
ÎNCEPE Paranteze operator
operator; cuibărit
declarație IF,
formă incompletă
dacă starea
apoi declarație;
Sfârşit;

Când lucrați cu instrucțiuni imbricate dacă trebuie luate în considerare următoarele reguli:

  • înainte de cuvântul rezervat altfel caracterul „;” nu se setează niciodată;
  • cuvântul rezervat else este întotdeauna asociat cu cel mai apropiat cuvânt rezervat, apoi înaintea acestuia.

SARCINA 3. Vom îmbunătăți programul de rezolvare a ecuației pătratice (SARCINA 2). Când valoarea coeficientului a=0, ecuația degenerează. Acest fapt nu a fost luat în considerare în program, ceea ce va provoca o eroare fatală în timpul execuției programului (împărțit la zero). Pentru a exclude împărțirea la zero, verificăm valoarea coeficientului a după ce a fost introdus de operatorul Readln(a,b,c) .

Deoarece variabila a este declarată în program ca o variabilă de tip real, valoarea sa numerică în mașină nu este reprezentată exact, cu o oarecare eroare. Prin urmare, o intrare ca

Există mai multe opțiuni pentru a compara corect valorile unei variabile reale cu zero:

SARCINA 4. Un program îmbunătățit pentru rezolvarea unei ecuații pătratice.

Program a7;Var a,b,c:real; (coeficienții ecuației) x1,x2:real; (rădăcinile ecuației) d:real; (discriminant) begin Writeln('Rezolvarea unei ecuații pătratice':50); Write('Introduceți valorile coeficienților a,b,c: '); readln(a,b,c); (coeficienți de intrare) dacă rotund(a)<>0 apoi începe d:=b*b-4*a*c; dacă d<0 then Writeln(‘Уравнение не имеет корней.’) else begin{операторные скобки} x1:=(-b+sqrt(d))/(2*a); x2:=(-b-sqrt(d))/(2*a); WriteLN(‘Корни уравнения: ’, x1:8:2,x2:8:2); end; end else Writeln(‘Деление на нуль.’); end.

Rezultatele programului:

Rezolvarea ecuației pătratice Introduceți valorile coeficienților a,b,c:0 1 6 Împărțiți la zero.

Declarație de selecție condiționată Caz

Instrucțiunea select este o generalizare a instrucțiunii If și este utilizată atunci când trebuie executată doar o instrucțiune dintr-un set de instrucțiuni, în funcție de valoarea cheii de selecție.

Tasta de selecție este o expresie care se află între cuvintele rezervate Case și of. Expresia poate fi de tipuri întregi, logice și de caractere. Expresia nu poate fi de tip Real, String.

Format operator:

Caz de"<ключ выбора>" constant1: operator 1; constant2: operator 2; constant3: operator 3; ... constantN-1: operator N-1; constantN: operator Nn; Else operator End;

Aici Case (în caz că), de (de la), Altfel (în caz contrar), Sfârșit (sfârșit) sunt cuvinte rezervate.

O cheie de selecție este o expresie de orice tip decât Real și String.

Constanta1 este o constantă de același tip ca și expresia.

Operatorul 1 este un operator arbitrar.

Declarația select funcționează după cum urmează. În primul rând, expresia este evaluată<ключ выбора>, iar apoi în succesiunea operatorilor se găsește unul care este precedat de o constantă egală cu valoarea calculată<ключ выбора>. Instrucțiunea găsită este executată, după care instrucțiunea select își încheie munca (controlul este transferat la final). Dacă nu se găsește nicio constantă în lista de constante care se potrivește cu valoarea calculată a tastei de selecție, controlul este transferat instrucțiunii care urmează cuvântului Else .

Altceva parte<оператора>poate fi omis, atunci dacă constanta necesară nu este în lista de constante, nu se întâmplă nimic și instrucțiunea select își încheie pur și simplu activitatea.

SARCINA 5. Scrieți un program de calculator simplu.

Programul a8; varx,y:real; z:real; (rezultat) op:char; (tasta de selectare) begin Write('Introduceți operanzii x,y: '); readln(x,y); Write('Introduceți operația(+,-,*,/): '); readln(op); cazul op de ‘+’:z:=x+y; ‘-‘:z:=x-y; ‘*‘:z:=x*y; ‘/‘:dacă y0 atunci z:=x/y Elsewriteln(‘Diviziunea la zero’); Else writeln('Nici o acțiune!'); Sfârşit; (op) (deci puteți marca „al cui” sfârșit) writeln('Result is=',z:8:2); Sfârşit.

Rezultatele programului:

Introduceți operanzii x,y:4 2

Introduceți operația (+,-,*,/):*

Rezultatul este = 8,00

În program, tasta de selecție este o variabilă de tip caracter. În funcție de valoarea introdusă a simbolurilor (+, -, *, /), se efectuează una dintre operațiile aritmetice: adunare, scădere, înmulțire sau împărțire. Dacă zero este introdus ca divizor, împărțirea nu este posibilă și este afișat mesajul „Diviziune la zero”. Dacă se introduce orice alt caracter, rezultatul va fi mesajul „Nici o acțiune furnizată!”. Dacă sunt introduse operații valide, rezultatul este returnat.

SARCINA 6. Scrieți un program care solicită utilizatorului numărul zilei săptămânii, apoi tipăriți numele zilei săptămânii sau un mesaj de eroare dacă introducerea este incorectă.

Programul a9; Varn: întreg; (numărul zilei săptămânii) Begin write('Introduceți numărul zilei săptămânii:'); readln(n); cazul n din 1: writeln('luni'); 2: writeln('Marți'); 3: writeln('Miercuri'); 4: writeln('Joi'); 5: writeln('vineri'); 6: writeln('Sâmbătă'); 7: writeln('Duminică'); else write('ai greșit!') end; (n) sfârşit.

Rezultatele programului:

Introduceți numărul zilei săptămânii:1

luni

Nicio constantă nu trebuie să se potrivească cu cealaltă. Dacă aceeași instrucțiune trebuie executată pentru mai multe constante, atunci acestea pot fi listate separate prin virgule, de exemplu

cazul n de 1,3,5,7,9: writeln('Acestea sunt numere impare'); 2,4,6,8,10: writeln('Acestea sunt cifre pare'); Sfârşit;

Operatorul este un element indivizibil al programului, ceea ce face posibilă efectuarea anumitor acțiuni algoritmice. Diferența dintre operator, în raport cu alte elemente, este că înseamnă întotdeauna un fel de acțiune. În Pascal, operatorii sunt alcătuiți din cuvinte funcționale. Instrucțiunile utilizate în program sunt separate între ele și de alte elemente ale programului prin simbolul (;). Toate Operatori de limbaj Pascal poate fi împărțit în doua grupuri:

  1. simplu;
  2. structurat.

Operatori simpli sunt operatori care nu conțin alți operatori. Acestea includ:

  • operator de atribuire (:=);
  • operator de procedură;
  • operator de sărituri necondiționate (GOTO).

Declarații structurate sunt afirmații care conțin alte afirmații. Acestea includ:

  • operator compus;
  • operatori de condiție (IF, CASE);
  • instrucțiuni bucle (FOR, WHILE, REPEAT);
  • operator de unire (CU).

Operatori simpli

declarație de procedură

declarație de procedură este folosit pentru a apela o procedură.

Format: [nume_procedură] (lista parametrilor de apel);

O instrucțiune de procedură constă dintr-un identificator de procedură urmat imediat de o listă de parametri de apel între paranteze. Pascal are proceduri fără parametri. În acest caz, atunci când este apelat, nu există nicio listă de parametri. Executarea instrucțiunii de procedură duce la activarea acțiunilor descrise în corpul acesteia. Există două tipuri de proceduri în Pascal:

  • Standard, care sunt descrise în limba însăși și aparțin limbii;
  • Proceduri de utilizator pe care utilizatorul le creează.

Pentru a apela proceduri standard, trebuie să vă conectați în secțiunea UTILIZĂRI a numelui modulului (biblioteca), unde este descrisă această procedură. O serie de proceduri situate în modulul SISTEM sunt întotdeauna conectate automat la program și conectarea lor în secțiunea UTILIZĂRI nu este necesară. Procedurile standard ale lui Pascal sunt READ, WRITE, REWITE, CLOSE, RESET.

CITEȘTE ([variabilă_fișier], [listă_intrare])

CITEȘTE (x,y)

Procedurile utilizator (non-standard) trebuie create înainte de a fi utilizate în program și sunt situate fie în secțiunea de descriere a programului în sine, fie în unități de program separate ale modulului. Dacă procedura este într-un modul, atunci numele acelui modul trebuie menționat în aplicația USES.

Declarație de salt necondiționat GOTO

Format: GOTO [etichetă];

GOTO este un cuvânt rezervat în Pascal. [label] este un identificator arbitrar care vă permite să marcați o instrucțiune de program și să faceți referire la ea mai târziu. În limbajul Pascal, este permisă utilizarea unui întreg fără semn ca etichete. Eticheta este plasată înaintea operatorului etichetat și separată de acesta (:). Un operator poate fi marcat cu mai multe etichete. De asemenea, sunt despărțiți unul de celălalt (:). Înainte ca o etichetă să poată fi utilizată într-o secțiune de declarații, aceasta trebuie declarată în secțiunea LABEL (secțiunea descriere).

Acțiunea GOTO transferă controlul către instrucțiunea etichetată corespunzătoare. Când utilizați etichete, trebuie să respectați următoarele reguli:

  • eticheta trebuie descrisă în secțiunea de descriere și trebuie folosite toate etichetele;
  • dacă numerele întregi sunt folosite ca etichete, acestea nu sunt declarate.

Contrazice principiile tehnologiei de programare structurată. Limbajele de programare moderne nu includ un astfel de operator și nu este nevoie să îl utilizați. În plus, computerele moderne folosesc așa-numita metodă pipeline. Dacă în program este întâlnit un operator de ramură necondiționat, atunci un astfel de operator rupe întreaga conductă, forțând să fie creată din nou, ceea ce încetinește semnificativ procesul de calcul.

Declarații structurate

IF instrucțiuni de condiție

Operatorul condiționat este utilizat în program pentru a implementa structura algoritmică - ramificare. În această structură, procesul de calcul poate continua într-una dintre direcțiile posibile. Alegerea direcției se face de obicei prin verificarea unor condiții. Există două tipuri de structură de ramificație: structură de furcă și structură de ocolire.

În Pascal, operatorul condiționat IF este un mijloc de organizare a unui proces de calcul ramificat.

Format: IF [expresie_booleană] Apoi [instrucțiune_1]; Else [operator_2];

IF, Then, Else - cuvinte de serviciu. [operator_1], [operator_2] - operații obișnuite în limbajul Pascal. Partea Else este opțională (poate lipsi).

Instrucțiunea IF funcționează astfel: mai întâi, rezultatul expresiei booleene este verificat. Dacă rezultatul este TRUE, atunci [operator_1] după cuvântul cheie Then este executat și [operator_2] este omis. Dacă rezultatul este FALS, atunci [statement_1] este omis și [statement_2] este executat.

Dacă partea Else lipsește, atunci instrucțiunea IF are o formă incompletă:

IF [expresie_booleană] Apoi [operator];

În acest caz, dacă rezultatul este TRUE, atunci [operatorul] este executat; dacă este FALS, atunci controlul este transferat operatorului în urma instrucțiunii IF.

există 2 numere A și B. Aflați numărul maxim.

Operator compus

O instrucțiune compusă este o secvență de operații arbitrare dintr-un program, închisă în așa-numitele paranteze operator (Început-Sfârșit).

Format: Începe [afirmații]; Sfârşit;

Instrucțiunile compuse permit reprezentarea unui grup de instrucțiuni ca o singură instrucțiune.

CASE selectează declarația

Conceput pentru a implementa mai multe ramuri, deoarece instrucțiunea IF poate implementa doar două direcții ale procesului de calcul, nu este întotdeauna convenabil să o folosești pentru a implementa mai multe ramuri. Ramificarea multiplă este implementată de instrucțiunea CASE.

Format: CAZ [select_key] OF

[select_constant_1]:[operator_1];

[selection_2_constant]:[operator_2];

[selection_N]:[operator_N];

ELSE [operator];

CAS, OF, ELSE, END - cuvinte de serviciu. [select_key] este un parametru al unuia dintre tipurile ordinale. [choice_consts] - constante de același tip ca și cheia de alegere care implementează alegerea. [operator_1(N)] este un operator obișnuit. ELSE poate lipsi.

Instrucțiunea de selecție funcționează după cum urmează: înainte ca instrucțiunea să fie executată, se determină valoarea parametrului cheie de selecție. Acest parametru poate fi exprimat fie ca variabilă în program, fie altfel. Apoi parametrul cheie de selecție este comparat secvenţial cu constanta de selecție. Dacă valoarea cheii de alegere se potrivește cu una dintre constantele de alegere, instrucțiunea care urmează acelei constante este executată și toate celelalte instrucțiuni sunt ignorate. Dacă tasta de selecție nu se potrivește cu niciuna dintre constante, se execută instrucțiunea următoare Else. Else este adesea opțional, iar dacă tasta de selecție nu se potrivește cu niciuna dintre constantele de selecție și dacă Else nu este prezent, controlul este transferat instrucțiunii care urmează instrucțiunii CASE.

Nu există nicio verificare explicită a condiției în instrucțiunea CASE care este specifică instrucțiunii IF. Totodată, se realizează operația de comparare implicită. CASE introduce disonanța într-un program Pascal, deoarece instrucțiunea de date se termină cu cuvântul cheie End, care nu are o pereche de Begin.

Scrieți un algoritm și un program pentru o sarcină care simulează funcționarea unui semafor. Când introduceți caracterul primei litere a culorilor semaforului, programul ar trebui să afișeze un mesaj despre culoarea și acțiunile corespunzătoare.

Programul funcționează astfel: folosind procedura Citire de pe tastatură se introduce simbolul literei de culoarea semaforului. Dacă se introduce litera „g” corespunzătoare verdelui, atunci în instrucțiunea CASE valoarea introdusă în lista de selecție va găsi constanta de selecție „g” și va fi afișat mesajul „Verde, mișcare permisă”. Când introduceți caracterul literelor „k” și „g”, vor fi afișate mesaje similare. Dacă introduceți orice alt caracter, va fi afișat mesajul „Semaforul nu funcționează”, deoarece în acest caz funcționează partea Else a instrucțiunii CASE.

Instrucțiuni de buclă

O structură algoritmică ciclică este o structură în care unele acțiuni sunt efectuate de mai multe ori. Există două tipuri de structuri de buclă în programare: o buclă cu un parametru și o buclă iterativă.

O buclă cu un parametru are întotdeauna așa-numiții parametri de buclă: X, X n , X k , ∆X. Uneori, o buclă cu un parametru se numește buclă obișnuită. O caracteristică caracteristică este că numărul de bucle și repetări poate fi determinat înainte ca bucla să fie executată.

Într-o buclă iterativă, este imposibil să se determine numărul de bucle înainte de a fi executată. Se execută atâta timp cât este îndeplinită condiția de continuare a buclei.

Există trei operatori în Pascal care implementează structuri de calcul ciclic:

  • PENTRU operator de numărare. Este destinat să implementeze o buclă cu un parametru și nu poate fi folosit pentru a implementa o buclă iterativă;
  • operator de buclă cu precondiția WHILE;
  • operator de buclă cu postcondiție REPEAT.

Ultimele două sunt axate pe implementarea unei bucle iterative, dar pot fi folosite și pentru a implementa o buclă cu un parametru.

declarație FOR

Format: FOR [loop_parameter] := [c_c_p_c] To [c_c_c_c] Do [operator];

FOR, To, Do - cuvinte de serviciu. [loop_parameter] - parametru buclă. [n_z_p_ts] - valoarea inițială a parametrului ciclului. [k_z_p_ts] - valoarea finală a parametrului ciclului. [operator] - un operator arbitrar.

Parametrul buclă trebuie să fie o variabilă de tip ordinal. Valorile de început și de sfârșit ale parametrului buclei trebuie să fie de același tip cu parametrul buclei.

Luați în considerare munca operatorului asupra algoritmului său:

La primul pas, valoarea parametrului ciclului ia [n_z_p_ts], apoi se verifică parametrul ciclului dacă este mai mic sau egal cu [k_z_p_ts]. Această condiție este condiția pentru continuarea buclei. Dacă este executată, atunci bucla își continuă lucrul și [instrucțiunea] este executată, după care parametrul buclei este mărit (scăzut) cu unu. Apoi, cu noua valoare a parametrului buclă, se verifică condiția de continuare a buclei. Dacă este executat, atunci acțiunile se repetă. Dacă condiția nu este îndeplinită, atunci bucla se termină.

Operatorul For diferă semnificativ de operatorii similari din alte limbaje de programare. Diferențele sunt:

  • corpul declarației For. Instrucțiunea poate să nu fie executată nici măcar o dată, deoarece testarea condiției de continuare a buclei este efectuată înaintea corpului buclei;
  • pasul de modificare a parametrului ciclului este constant și egal cu 1;
  • corpul buclei din instrucțiunea For este reprezentat de o singură instrucțiune. În cazul în care acțiunea corpului buclei necesită mai mult de o instrucțiune simplă, atunci aceste instrucțiuni trebuie transformate într-o singură instrucțiune compusă folosind paranteze operator (BEGIN-END);
  • Parametrul buclă poate fi doar o variabilă de tip ordinal.

Un exemplu de utilizare a instrucțiunii FOR: faceți un tabel pentru conversia rublelor în dolari.

Instrucțiunea WHILE (instrucțiunea buclă cu precondiție)

Format: WHILE [condiție] Do [afirmație];

WHILE, Do - cuvinte de serviciu. [condiție] - expresie de tip boolean. [operator] - un operator obișnuit.

;

Instrucțiunea While funcționează după cum urmează: mai întâi, rezultatul unei condiții logice este verificat. Dacă rezultatul este adevărat, atunci se execută operatorul, după care se efectuează revenirea la verificarea stării cu noua valoare a parametrilor în expresia logică a condiției. Dacă rezultatul este fals, atunci bucla se termină.

Când lucrați cu While, trebuie să acordați atenție proprietăților sale:

  • condițiile folosite în While sunt condiția pentru continuarea buclei;
  • în corpul ciclului, valoarea parametrului inclus în expresia condiției se schimbă întotdeauna;
  • Bucla While poate să nu se execute nici măcar o dată, deoarece testarea condiției în timpul buclei este efectuată înainte de corpul buclei.

Instrucțiune REPEAT (instrucțiune buclă cu postcondiție)

Format: REPEAT [loop_body]; PÂNĂ [condiție];

Instrucțiunea REPEAT funcționează astfel: mai întâi sunt executate instrucțiunile corpului buclei, după care se verifică rezultatul condiției logice. Dacă rezultatul este fals, atunci se efectuează revenirea la execuția operatorilor corpului ciclului următor. Dacă rezultatul este adevărat, atunci declarația iese.

Operatorul Repeat are următoarele caracteristici:

  • în Repeat, se verifică condiția de terminare a buclei, iar dacă condiția este îndeplinită, atunci bucla se termină;
  • corpul buclei este întotdeauna executat cel puțin o dată;
  • parametrul pentru verificarea stării este modificat în corpul buclei;
  • Instrucțiunile corpului buclei nu trebuie să fie incluse în paranteze operator (BEGIN-END), în timp ce rolul parantezelor operator este îndeplinit de Repeat și Until.

Calculați y=sin(x), unde xn=10, xk=100, pasul este 10.

Operatorii condiționali sunt proiectați să selecteze una dintre acțiunile posibile (operatorii) pentru execuție în funcție de o anumită condiție (în acest caz, una dintre acțiuni poate fi absentă). Valoarea expresiei logice este folosită ca condiții de selecție. Există două instrucțiuni condiționale în Turbo Pascal: if și case.

declarația de condiție dacă

Declarația de condiție if poate lua una dintre următoarele forme:

dacă<условие>apoi<оператор1>

altfel<оператор2>;

dacă<условие>apoi<оператор>;

Declarația de condiție if este executată după cum urmează. În primul rând, se evaluează expresia scrisă în condiție. Ca urmare a evaluării sale, se obține o valoare de tip boolean. În primul caz, dacă valoarea expresiei este True, atunci<оператор1>, precizat după cuvântul atunci. Dacă rezultatul evaluării expresiei din condiție este Fals (fals), atunci<оператор2>. În al doilea caz - dacă rezultatul expresiei Tgue, este executat<оператор>dacă este fals, instrucțiunea imediat următoare instrucțiunii if este executată. Conform regulilor, fiecare dintre ramuri poate conține fie o instrucțiune executată, fie mai multe combinate într-o instrucțiune compusă. Punct virgulă înainte Else nu setat.

declarație de selecție a cazului

Dacă un singur operator dacă poate oferi o alegere între două alternative, apoi operatorul de alegere caz vă permite să alegeți dintr-un număr arbitrar de opțiuni disponibile.

caz<выражение-селектор>de

<список1>: <оператор1>;

<список2>: <оператор2>;

<списокN>: <операторN>;

Declarația de caz funcționează așa. Mai întâi se evaluează valoarea expresiei selectorului, apoi se oferă implementarea operatorului a cărui constantă de selecție este egală cu valoarea curentă a selectorului. Dacă niciuna dintre constante nu este egală cu valoarea curentă a selectorului, se execută instrucțiunea care urmează cuvântului else. Dacă cuvântul else nu este prezent, se activează enunțul care urmează sfârșitul cuvântului, i.e. primul operator în străinătate.

O expresie selector este o variabilă simplă de tip întreg, caracter, enumerat sau boolean, în funcție de valoarea căreia se ia o decizie;

Lista de constante de selecție constă dintr-un număr arbitrar de valori, sau intervale, separate între ele prin virgule. Tipul constantelor trebuie să se potrivească cu tipul selectorului;

Acest format presupune o instrucțiune pentru fiecare alternativă, dar puteți specifica opțional mai multe instrucțiuni grupându-le într-o instrucțiune compusă.

Ramura Altfel este opțională și, spre deosebire de instrucțiunea if, poate fi precedată de punct și virgulă.

Repetă operatori

Dacă programul trebuie să execute în mod repetat unele instrucțiuni, atunci sunt folosite instrucțiuni repetate (buclă). Există trei tipuri de instrucțiuni bucle în Pascal: while, repeat și for.

în timp ce declarația

Instrucțiunea while (while) se numește instrucțiune buclă with Condiție prealabilă pentru faptul că testarea stării de execuţie a corpului ciclului se efectuează chiar la începutul enunţului.

in timp ce<условие продолжения повторений>do

<тело цикла>;

Condiție este o expresie logică. Corpul buclei este un operator simplu sau compus. O instrucțiune compusă este utilizată atunci când corpul buclei este format din 2 sau mai multe instrucțiuni.

Înainte de fiecare execuție a corpului buclei, se evaluează valoarea expresiei condiției. Dacă rezultatul este True, corpul buclei este executat și expresia condiției este evaluată din nou. Dacă rezultatul este Fals, bucla iese și sare la prima instrucțiune imediat după corpul buclei.

repeta afirmatia

Instrucțiunea repeat implementează o buclă cu postcondiție . O buclă cu o postcondiție va fi întotdeauna executată cel puțin o dată.

<оператор1>;

<оператор2>;

<оператор N>;

pana cand<условие окончания цикла>;

Declarațiile cuprinse între cuvintele se repetă și până sunt corpul buclei. Corpul buclei este executat mai întâi, apoi condiția de ieșire a buclei este verificată. Dacă rezultatul expresiei logice este Fals, atunci corpul buclei este activat din nou; dacă rezultatul este True, bucla iese.

pentru operator repetitiv

Acesta este un operator cu un număr cunoscut de repetări. Această instrucțiune de repetare este adesea denumită o instrucțiune de buclă cu un parametru deoarece numărul de repetări este dat de o variabilă numită parametrul ciclului , sau variabila de control .

Declarația for repeat poate fi reprezentată în două formate:

pentru<параметр цикла> := la do<тело цикла>;

pentru<параметр цикла> := jos la do<тело цикла>;

Unde<параметр цикла>este o variabilă de tipuri întregi, caractere, booleene sau enumerate;

SI și S2 - expresii care definesc valorile inițiale și, respectiv, finale ale parametrului ciclului;

pentru ... do - antet ciclu;

Corpul buclei poate fi simplu sau compozit operator. Instrucțiunea for asigură că corpul buclei este executat până când toate valorile parametrului buclei de la început până la sfârșit au fost iterate.

Acțiune de comandă. Parametrului buclă i se atribuie valoarea expresiei S1. Dacă este mai mică sau egală cu valoarea expresiei S2, atunci corpul buclei este executat. După aceea, valoarea parametrului este mărită automat cu unu și este din nou comparată cu valoarea expresiei S2 și așa mai departe. Când valoarea parametrului devine mai mare decât valoarea expresiei S2, se execută următoarea instrucțiune după buclă.

Pasul de schimbare a parametrilor ciclului pentru instrucțiunea for…to…do este +1, iar pentru instrucțiunea for…downto…do este -1.

Întrebări pentru autoexaminare:

    Format operator de atribuire. Este acceptabil să folosiți valori de diferite tipuri într-o expresie aritmetică?

    Care este diferența dintre instrucțiunea de intrare Read și instrucțiunea Readln?

    Specificați formatele de ieșire.

    Ce tipuri de ramuri sunt implementate în Turbo Pascal?

    La ce se folosesc ramurile? Dă exemple.

    Două forme de scriere a operatorului condițional If.

    Format de notație imbricat If.

    Formatul de înregistrare al declarației Case select?

    Când este folosită instrucțiunea compusă Begin...end?

    Cum sunt reprezentați algoritmii de ramificare în diagrame?

    Ce este un ciclu?

    Ce tipuri de bucle sunt implementate în Turbo Pascal?

    Ce este corpul buclei?

    În ce caz, corpul buclei cuprins între paranteze operator începe... se termină?

    Care este diferența dintre operatorii while și repeat?

    Când este mai bine să folosiți operatorul de repetare for for looping? Ce este scris în antetul acestui operator?

    Cum descrie instrucțiunea buclă for direcția în care se schimbă valoarea parametrului buclei?

Se întâmplă ca în programe să fie nevoie să se organizeze ramificarea. În acest caz, procesul de rezolvare a problemei are loc pe baza îndeplinirii sau neîndeplinirii unei anumite condiții.

În limbajul Pascal, alegerea acțiunii, în funcție de o anumită condiție, poate fi implementată folosind construcția

daca... atunci... altfel... daca atunci ...

2. Care este forma completă a operatorului de salt condiționat dacă este în Pascal?

Forma completă a operatorului de ramură condiționată dacă :

dacă condiție apoi operator1 altfel operator2;

Acțiunea operatorului este următoarea: mai întâi se calculează valoarea expresiei condiție . Dacă este adevărat (egal cu TRUE ), atunci instrucțiunea care urmează cuvântului este executată. apoi (operator1). Dacă valoarea este FALSE, atunci instrucțiunea care urmează cuvântului este executată. altfel(operator2 ).

Operatori operator1și operator2 poate fi compus, adică conține mai multe linii de cod. Astfel de operatori sunt luați în paranteze de operator. începe... sfârșit. O astfel de nevoie apare dacă, după cuvintele rezervate apoi sau altfel Trebuie să specificați mai mulți operatori.

În acest caz, forma generală a operatorului de salt condiționat poate fi, de exemplu, următoarea:

dacă condiție apoi ÎNCEPE // operatori multipli ... Sfârşit altfel ÎNCEPE // operatori multipli ... Sfârşit ;

3. Care este forma prescurtată a operatorului de salt condiționat?

Forma scurtată a instrucțiunii de salt condiționat nu conține un bloc altfel si arata ca:

dacă condiție apoi operator;

În acest caz, operatorul funcționează după cum urmează. În primul rând, se evaluează valoarea expresiei logice (booleene). condiție . Dacă rezultatul expresiei logice condiție adevărat (egal ADEVĂRAT), apoi se execută instrucțiunea care urmează cuvântului. apoi. Dacă rezultatul este FALSE, atunci instrucțiunea care urmează instrucțiunii este executată. dacă(în operator daca atunci nu se face nimic).

Dacă mai multe instrucțiuni trebuie executate atunci când condiția este îndeplinită, atunci forma generală a instrucțiunii de tranziție condiționată poate fi următoarea:

dacă condiție apoi ÎNCEPE // doi sau mai mulți operatori ... Sfârşit ;

4. Exemple de utilizare a operatorului de salt condiționat, care are o formă de reprezentare completă.

Exemplul 1 Fragment de program pentru găsirea valorii maxime între două numere reale.

var a,b:real; // a, b - variabile pentru care se caută maximul max:real; // maxim ... ÎNCEPE ... // a, b - sunt date dacă a>b apoi max:=a altfel max:=b; ... Sfârşit ;

Exemplul 2

Fragment codul programului care rezolvă această problemă:

... var x,f:real; ÎNCEPE ... // x - set dacă -5 apoi f:= x*x+8 altfel f:= -x*x*x+2; // în variabila f - rezultatul ... Sfârşit ;

5. Exemple de utilizare a operatorului de salt condiționat, care are o formă de reprezentare prescurtată.

Exemplul 1 Fragment de cod care găsește valoarea minimă dintre două numere reale Xși y .

... var min:real; ... ÎNCEPE ... // x, y - dat min:=x; dacă min apoi min:= y; ... Sfârşit ;

Exemplul 2 Calculul valorii funcției în funcție de condiție. Să fie necesar să găsim valoarea funcției:

var x, f:real; ÎNCEPE ... // x - dat dacă X<-6 apoi f:=3 *x*x-x; dacă (-6 <=x) și(X<=5 ) apoi f:=sqrt(7-x); dacă x>5 apoi f:=8 *x-3; ... Sfârşit ;

Lecția tratează operatorul condiționat în Pascal ( dacă). Explică cum să folosești mai multe condiții într-un singur construct ( ȘIși SAU). Sunt luate în considerare exemple de lucru cu operatorul.

Vă reamintim că acest site nu pretinde a fi o prezentare completă a informațiilor pe această temă. Scopul portalului este de a oferi o oportunitate de asimilare a materialului pe baza exemplelor rezolvate gata făcute pe tema „Limbajul de programare Pascal” cu sarcini practice de consolidare a materialului. Sarcinile Pascal prezentate pe site sunt aranjate secvențial pe măsură ce complexitatea lor crește. Site-ul poate fi folosit de profesori și lectori ca ajutor vizual auxiliar.

Înainte de a lua în considerare acest subiect, au fost utilizați în principal algoritmi liniari în Pascal, care sunt tipici pentru sarcini foarte simple, când acțiunile (operatorii) sunt efectuate secvenţial, una după alta. Algoritmii mai complecși implică utilizarea unui construct de ramificare.

Diagramă pentru declarația condiționată:

Operatorul condiționat în Pascal are următoarea sintaxă:

Versiune prescurtată:

if condiție atunci declarație;

Versiunea completa:

if condition then statement else statement;

Operatorul condiționat în Pascal - if - servește la organizarea cursului sarcinii în așa fel încât succesiunea de execuție a operatorilor să se modifice în funcție de o condiție logică. O condiție logică poate lua una din două valori: fie adevărată (adevărată), fie falsă (falsă), poate fi fie adevărată, fie falsă.

Operator compus

Dacă, într-o condiție adevărată, este necesar să se execute mai multe instrucțiuni, atunci conform regulilor limbajului Pascal, acestea trebuie să fie închise într-un bloc, începând cu cuvântul funcție begin și se termină cu cuvântul funcție end . Un astfel de bloc este numit paranteze operator, și această construcție operator compus:

Paranteze operator și operator compus în Pascal:

dacă expresie booleană, începe declarația1; operator2; end else begin statement1; operator2; Sfârşit;

Traducerea din limba engleză a operatorului de condiție va facilita înțelegerea utilizării acestuia:

DACĂ APOI ALTE
DACĂ APOI IN CAZ CONTRAR


Într-o condiție (într-o expresie logică), se folosesc operatori relaționali.
Luați în considerare o listă de operatori relaționali ai lui Pascal:

  • mai mult >
  • mai mici
  • mai mare sau egal cu în Pascal >=
  • mai mic sau egal cu în Pascal
  • comparație în Pascal =
  • nu este egal în Pascal

Exemplu: găsiți cel mai mare dintre două numere

Opțiunea 1 Opțiunea 2


Înțelegeți munca în detaliu Puteți utiliza operatorul condiționat în Pascal urmărind tutorialul video:

Exemplu: calculați valoarea variabilei y dintr-una din cele două ramuri

Afișați soluția:

varx,y:real; begin writeln("Introduceți x"); citeste(x); dacă x>0 atunci y:=ln(x) altfel y:=exp(x); writeln ("y=", y:6:2) (numărul total va ocupa 6 poziții și va avea 2 zecimale) end.

Observați cum este tipărit y în acest exemplu. Când se deduce variabile de tip în pascal, se pot folosi așa-numitele ieșire formatată, sau notație cu două puncte:
y:6:2
- numărul de după primele două puncte (6) indică câte caractere va lua numărul atunci când este afișat pe ecran
- numărul de după al doilea două puncte (2) indică câte zecimale ale numărului real vor fi afișate

Astfel, utilizarea unei astfel de notații în pascal permite practic rotunjirea la sutimi, miimi etc.

Sarcina 0. Calculați valoarea variabilei y folosind una dintre cele două ramuri:

Sarcina 1. Două numere sunt introduse în computer. Dacă primul este mai mare decât al doilea, calculați suma lor, în caz contrar - produsul. După aceea, computerul ar trebui să imprime rezultatul și textul PROBLEMĂ REzolvată

Sarcina 2. Dragonul crește trei capete în fiecare an, dar după ce împlinește 100 de ani - doar două. Câte capete și ochi are balaurul N ani?

Operații booleene în Pascal (în expresie booleană)

Când trebuie să utilizați o condiție dublă în Pascal, aveți nevoie de operații logice.

  • Operație booleană ȘI (Și), plasat între două condiții, spune că ambele condiții trebuie îndeplinite deodată (trebuie să fie adevărate). Sensul logic al operației este „conjuncție”.
  • Plasat intre doua conditii, semnul SAU (OR) spune că este suficient dacă cel puțin una dintre ele este adevărată (una dintre cele două condiții este adevărată). Sensul logic al operației este „disjuncție”.
  • În Pascal XOR - un semn al unei operații logice, adică „disjuncție strictă” și care indică faptul că este necesar ca una dintre cele două condiții să fie îndeplinită (adevărată), iar cealaltă să nu fie îndeplinită (falsă).
  • Operație booleană NU înaintea unei expresii sau variabile logice, are sensul „negație” sau „inversare” și indică faptul că dacă variabila sau expresia dată este adevărată, atunci negația ei este falsă și invers.

Important: Fiecare dintre condițiile simple trebuie să fie cuprinsă între paranteze.

Exemplu: Luați în considerare exemple de operații logice în expresii logice în Pascal

1 2 3 4 5 6 7 8 varn: întreg ; început:= 6 ; dacă (n>5) și (n<10 ) then writeln ("истина" ) ; if (n>7) sau (n<10 ) then writeln ("истина" ) ; if (n>7)xor(n<10 ) then writeln ("истина" ) ; if not (n>7) apoi writeln("adevărat"); Sfârşit.

varn:intger; început:=6; dacă (n>5) și (n<10) then writeln("истина"); if (n>7) sau (n<10) then writeln("истина"); if (n>7) xor(n<10) then writeln("истина"); if not(n>7) apoi writeln("adevărat"); Sfârşit.

Exemplu: Compania recruteaza angajati intre 25 si 40 de ani inclusiv. Introduceți vârsta persoanei și stabiliți dacă este potrivit pentru această companie (afișați răspunsul „potrivit” sau „nepotrivit”).
Particularitate: trebuie să verificăm dacă două condiții sunt îndeplinite simultan.