Sunteți pe pagina 1din 3

Structuri de control

Considerații teoretice

Clasificare:
 secvenţiale: atribuire, instrucţiunea compusă, apeluri de funcţii sau proceduri;
 alternative: if - then, if – then - else, şi case;
 repetitive: while, repeat, for.

2.Structura alternativă

1. Instrucţiunea if - then are următoarea sintaxă:


IF conditie THEN instructiune;

Funcţionare: se evaluează condiţia iar dacă rezultatul ei este true atunci se


execută instrucţiunea de după then, iar dacă valoarea e false atunci se trece la
următoarea instrucţiune de după if.
OBS: Dacă se vrea să se pună mai multe instrucţiuni după then atunci acestea
se încadrează cu o instrucţiune compusă.

Exemplu:
Citindu-se distanţa parcursă de o maşină şi timpul necesar parcurgerii (valori
întregi) se cere să se determine viteza cu care aceasta se deplasează (numai dacă
timpul este mai mare decat 0).

Program ex_compusa;
Var distanta,timp: integer; viteza:real;
Begin
Write(‘dati timpul:’);
Readln(timp);
Write(‘dati distanta:’);
Readln(distanta);
If timp>0 then begin Viteza:=distanta/timp;
Writeln(‘Viteza masinii este:’,viteza);
End;
Readln;
End.

Obs: Introduceti codul in FreePascal si rulati-l!

2. Instrucţiunea if – then - else are sintaxa:

IF conditie THEN instr1


ELSE instr2;

Funcţionare: se evaluează condiţia iar dacă rezultatul ei este true atunci se


execută instrucţiunea de după then instr1, iar dacă valoarea e false atunci se
execută instrucţiunea de după else instr2, după oricare din cazuri se trece la
instrucţiunile de după if.
Exemplu:
Să se scrie un program care verifică dacă un număr citit de la tastatură este
divizibil cu un număr a dat.

Program divizibil;
Var n,a:integer;
Begin
Write(‘Dati nr.:’);readln(n);
Write(‘Dati posibilul divizor:’);readln(a);
If n mod a=0 then writeln(‘ Numarul ‘,n,’ este divizibil cu ‘,a)
else writeln(‘ Numarul ‘,n,’ nu este divizibil cu ‘,a);
readln;
end.

Obs: Introduceti codul in FreePascal si rulati-l!

3. Instrucţiunea de selectie CASE are sintaxa:

CASE expresie_ordinala OF
C1 : instr1;
C2 : instr2;
………….
Cn : instrn;
[ ELSE instr]
end;

Funcţionare: se evaluează expresia ordinală şi se caută printre c1, c2, . . . , cn


(constante case) o valoare egală cu cea a rezultatului; dacă se gaseşte se execută
instrucţiunea corespunzătoare acesteia, iar dacă nu şi există else atunci se execută
ceea ce este după else, iar dacă nu există se trece la următoarea instrucţiune din
program.

OBS:
– constantele trebuie să aibă acelaşi tip cu expresia ordinală şi să fie distincte;
– pot fi folosite maxim 255 de astfel de constante;

Exemplu:

Se dă un număr şi se cere să se tipărească ziua din săptămâna corespunzătoare


numărului citit.

Program saptamana;
Var n:byte;
Begin
Write(‘Dati numarul: ‘);readln(n);
Case n of
1: writeln(‘Luni’);
2: writeln(‘Marti’);
3: writeln(‘Miercuri’);
4: writeln(‘Joi’);
5: writeln(‘Vineri’);
6: writeln(‘Sambata’);
7: writeln(‘Duminica’)
else writeln(‘Numarul nu corespunde nici unei zile din saptamana’);
end;
readln;
end.

Obs: Introduceti codul in FreePascal si rulati-l!

S-ar putea să vă placă și