INSTRUCŢIUNILE DE BAZĂ ALE LIMBAJULUI PASCAL
INSTRUCŢIUNILE DE BAZĂ ALE LIMBAJULUI PASCAL
Limbajul PASCAL a fost conceput special pentru scrierea programelor structurate. Limbajul are o sintaxă riguroasă (totuşi, uneori, rigidă) şi mari posibilităţi de extindere a tipurilor de date.
INSTRUCŢIUNEA VIDĂ
nu execută nimic, dar există cazuri în care avem nevoie de ea;
dacă apare simbolul ';' în faţa cuvântului 'END' avem o instrucţiune vidă;
ex: un anumit rezultat întreg r dorim să îl corectăm după următoarea regulă:
"DACĂ r>0 şi impar ATUNCI r:= r+1 ALTFEL r:= r-1; SF_DACĂ"
{ODD este o funcţie booleană care stabileşte dacă un număr este par sau impar. Această determinare se poate face şi astfel: r mod 2 = 0 pentru. numere pare sau r mod 2 <>0 pentru. numere impare.}
Secvenţă greşită Secvenţă corectă
IF r>0 THEN
IF ODD(r) THEN r:= r+1
ELSE r:= r-1;
Este interpretată:
IF r>0 THEN
IF ODD(r) THEN r:= r+1
ELSE r:= r-1; IF r>0 THEN
IF ODD(r) THEN r:= r+1
ELSE{instrucţiune vidă}
ELSE r:= r-1;
INSTRUCŢIUNEA DE ATRIBUIRE
are următoarea sintaxă: var:= expresie
unde: var reprezintă numele variabilei căreia i se va atribui valoarea dată de expresie;
principiul de execuţie:
• se evaluează expresia;
• se dă variabilei var valoarea găsită;
REGULĂ: 'var' şi 'expresie' trebuie să aibă acelaşi tip deoarece în caz contrar se semnalează eroare, cu excepţia a patru situaţii, enumerate în cele ce urmează:
{notăm te tipul expresie şi tv tipul variabilei}
• te = INTEGER şi tv = REAL se converteşte te, valoarea întreagă a expresiei, într-o valoare reală care se atribuie apoi variabilei;
• te şi tv sunt tipuri enumerare sau subdomeniu, cu acelaşi tip de bază şi valoarea expresiei aparţine tipului tv, această valoare se atribuie variabilei;
• dacă te şi tv sunt mulţimi şi unul sau ambele tipuri sunt subdomeniu ale aceluiaşi tip ordinal. În acest caz, atribuirea este permisă dacă valorile din mulţimea rezultat sunt incluse în tipul variabilei aflată în stânga operatorului de atribuire;
• referitor la tipul STRING, te şi tv nu pot fi tipuri STING diferite.
INSTRUCŢIUNEA IF
este o instrucţiune alternativă;
corespunde structurii alternative DACĂ din pseudocod;
are următoarea sintaxă:
IF expresie logică (condiţie) THEN instrucţiune;
sau
IF expresie logică (condiţie) THEN instrucţiune1;
ELSE instrucţiune 2;
principiul de execuţie:
• se evaluează expresia logică;
• dacă aceasta are valoarea TRUE atunci se execută secvenţa prezentată în cadrul instrucţiune1 iar în caz contrar se execută secvenţa prezentată în cadrul instrucţiune2;
atât după THEN cât şi după ELSE avem voie să introducem numai o singură instrucţiune.
INSTRUCŢIUNEA COMPUSĂ
are următoarea sintaxă:
begin
i1;
i2;
...
in;
end;
unde i1, i2, ... in reprezintă instrucţiunile din corpul instrucţiunii compuse;
se foloseşte pentru a putea scrie mai multe instrucţiuni care să fie interpretate de compilator ca una singură.
INSTRUCŢIUNEA CASE
este o instrucţiune alternativă;
corespunde structurii alternative SELECTEAZĂ din pseudocod;
permite selectarea unei instrucţiuni dintr-o listă de instrucţiuni marcate, în funcţie de valoarea unui selector;
are următoarea sintaxă:
CASE expresie de tip ordinal OF
Lista de constante1: instrucţiune1;
Lista de constante2: instrucţiune2;
.......................................................
Lista de constanten: instrucţiunen;}
[ELSE instrucţiune(n+1)]
end;
principiul de execuţie:
• se evaluează expresia de tip ordinal;
se obţine o valoare v care reprezintă valoarea selectorului. Apoi se caută în lista de constante, constanta egală cu valoarea evaluată. Dacă se localizează această constantă într-una dintre liste se execută instrucţiunea asociată acestei liste.
• dacă nu există nici o instrucţiune care să conţină eticheta v, atunci dacă este prezent cuvântul 'ELSE' se execută instrucţiunea care urmează după acesta.
INSTRUCŢIUNEA WHILE
este o instrucţiune repetitivă;
corespunde structurii repetitive CÂT_TIMP din pseudocod;
are următoarea sintaxă:
WHILE condiţie DO instrucţiune;
principiul de execuţie:
• se evaluează condiţia care este o expresie logică;
• dacă rezultatul evaluării este TRUE atunci se execută instrucţiunea, altfel se încheie execuţia şi se părăseşte bucla;
instrucţiunea cere execuţia repetată a unei instrucţiuni PASCAL în funcţie de valoarea de adevăr a expresiei logice. Dacă valoarea iniţială este FALSE, instrucţiunea din bucla WHILE nu se execută nici o dată.
INSTRUCŢIUNEA REPEAT
este o instrucţiune repetitivă;
corespunde structurii repetitive REPETĂ din pseudocod;
are următoarea sintaxă:
REPEAT
secvenţa;
UNTIL condiţie;
unde secvenţa reprezintă instrucţiunile din corpul instrucţiunii REPEAT;
principiul de execuţie:
• se execută secvenţă de instrucţiuni;
• se evaluează expresia logică;
• dacă rezultatul evaluării este FALSE atunci se execută din nou secvenţa de instrucţiuni, în caz contrar se trece mai departe;
secvenţă de instrucţiuni se execută cel puţin o dată, după care se pune problema reluării sau nu a execuţiei, după evaluarea expresiei logice.
INSTRUCŢIUNEA FOR
este o instrucţiune repetitivă;
corespunde structurii repetitive PENTRU din pseudocod;
permite execuţia repetată a unei instrucţiuni în funcţie de valoarea unui contor;
are următoarea sintaxă:
FOR variabilă:=expresie1 TO expresie2 DO expresie3;
unde: variabila este o variabilă de orice tip ordinal, iar expresie1 şi expresie2 sunt expresii de acelaşi tip cu variabila dată.
principiul de execuţie:
• se evaluează cele două expresii;
dacă valoarea obţinută în urma evaluării expresiei1 este strict mai mare decât valoarea obţinută în urma evaluării expresiei2 atunci execuţia instrucţiunii FOR este încheiată;
dacă valoarea obţinută în urma evaluării expresiei1 este egală cu valoarea obţinută în urma evaluării expresiei2, se atribuie variabilei de ciclare valoarea obţinută în urma evaluării expresiei1, se execută instrucţiunea abordată şi execuţia buclei FOR este încheiată;
dacă valoarea obţinută în urma evaluării expresiei1 este strict mai mică decât valoarea obţinută în urma evaluării expresiei2, se atribuie variabilei de ciclare valoarea obţinută în urma evaluării expresiei1 şi se trece la pasul următor;
• se execută instrucţiunea subordonată;
•
dacă valoarea reţinută de variabila de ciclare este strict mai mică decât valoarea obţinută în urma evaluării expresiei2, (evaluare efectuată la început) se adună 1 variabilei de ciclare şi se trece la executarea instrucţiunii subordonate;
dacă valoarea reţinută de variabila de ciclare este egală cu valoarea obţinută în urma evaluării expresiei2, execuţia instrucţiunii FOR se încheie.
Limbajul PASCAL a fost conceput special pentru scrierea programelor structurate. Limbajul are o sintaxă riguroasă (totuşi, uneori, rigidă) şi mari posibilităţi de extindere a tipurilor de date.
INSTRUCŢIUNEA VIDĂ
nu execută nimic, dar există cazuri în care avem nevoie de ea;
dacă apare simbolul ';' în faţa cuvântului 'END' avem o instrucţiune vidă;
ex: un anumit rezultat întreg r dorim să îl corectăm după următoarea regulă:
"DACĂ r>0 şi impar ATUNCI r:= r+1 ALTFEL r:= r-1; SF_DACĂ"
{ODD este o funcţie booleană care stabileşte dacă un număr este par sau impar. Această determinare se poate face şi astfel: r mod 2 = 0 pentru. numere pare sau r mod 2 <>0 pentru. numere impare.}
Secvenţă greşită Secvenţă corectă
IF r>0 THEN
IF ODD(r) THEN r:= r+1
ELSE r:= r-1;
Este interpretată:
IF r>0 THEN
IF ODD(r) THEN r:= r+1
ELSE r:= r-1; IF r>0 THEN
IF ODD(r) THEN r:= r+1
ELSE{instrucţiune vidă}
ELSE r:= r-1;
INSTRUCŢIUNEA DE ATRIBUIRE
are următoarea sintaxă: var:= expresie
unde: var reprezintă numele variabilei căreia i se va atribui valoarea dată de expresie;
principiul de execuţie:
• se evaluează expresia;
• se dă variabilei var valoarea găsită;
REGULĂ: 'var' şi 'expresie' trebuie să aibă acelaşi tip deoarece în caz contrar se semnalează eroare, cu excepţia a patru situaţii, enumerate în cele ce urmează:
{notăm te tipul expresie şi tv tipul variabilei}
• te = INTEGER şi tv = REAL se converteşte te, valoarea întreagă a expresiei, într-o valoare reală care se atribuie apoi variabilei;
• te şi tv sunt tipuri enumerare sau subdomeniu, cu acelaşi tip de bază şi valoarea expresiei aparţine tipului tv, această valoare se atribuie variabilei;
• dacă te şi tv sunt mulţimi şi unul sau ambele tipuri sunt subdomeniu ale aceluiaşi tip ordinal. În acest caz, atribuirea este permisă dacă valorile din mulţimea rezultat sunt incluse în tipul variabilei aflată în stânga operatorului de atribuire;
• referitor la tipul STRING, te şi tv nu pot fi tipuri STING diferite.
INSTRUCŢIUNEA IF
este o instrucţiune alternativă;
corespunde structurii alternative DACĂ din pseudocod;
are următoarea sintaxă:
IF expresie logică (condiţie) THEN instrucţiune;
sau
IF expresie logică (condiţie) THEN instrucţiune1;
ELSE instrucţiune 2;
principiul de execuţie:
• se evaluează expresia logică;
• dacă aceasta are valoarea TRUE atunci se execută secvenţa prezentată în cadrul instrucţiune1 iar în caz contrar se execută secvenţa prezentată în cadrul instrucţiune2;
atât după THEN cât şi după ELSE avem voie să introducem numai o singură instrucţiune.
INSTRUCŢIUNEA COMPUSĂ
are următoarea sintaxă:
begin
i1;
i2;
...
in;
end;
unde i1, i2, ... in reprezintă instrucţiunile din corpul instrucţiunii compuse;
se foloseşte pentru a putea scrie mai multe instrucţiuni care să fie interpretate de compilator ca una singură.
INSTRUCŢIUNEA CASE
este o instrucţiune alternativă;
corespunde structurii alternative SELECTEAZĂ din pseudocod;
permite selectarea unei instrucţiuni dintr-o listă de instrucţiuni marcate, în funcţie de valoarea unui selector;
are următoarea sintaxă:
CASE expresie de tip ordinal OF
Lista de constante1: instrucţiune1;
Lista de constante2: instrucţiune2;
.......................................................
Lista de constanten: instrucţiunen;}
[ELSE instrucţiune(n+1)]
end;
principiul de execuţie:
• se evaluează expresia de tip ordinal;
se obţine o valoare v care reprezintă valoarea selectorului. Apoi se caută în lista de constante, constanta egală cu valoarea evaluată. Dacă se localizează această constantă într-una dintre liste se execută instrucţiunea asociată acestei liste.
• dacă nu există nici o instrucţiune care să conţină eticheta v, atunci dacă este prezent cuvântul 'ELSE' se execută instrucţiunea care urmează după acesta.
INSTRUCŢIUNEA WHILE
este o instrucţiune repetitivă;
corespunde structurii repetitive CÂT_TIMP din pseudocod;
are următoarea sintaxă:
WHILE condiţie DO instrucţiune;
principiul de execuţie:
• se evaluează condiţia care este o expresie logică;
• dacă rezultatul evaluării este TRUE atunci se execută instrucţiunea, altfel se încheie execuţia şi se părăseşte bucla;
instrucţiunea cere execuţia repetată a unei instrucţiuni PASCAL în funcţie de valoarea de adevăr a expresiei logice. Dacă valoarea iniţială este FALSE, instrucţiunea din bucla WHILE nu se execută nici o dată.
INSTRUCŢIUNEA REPEAT
este o instrucţiune repetitivă;
corespunde structurii repetitive REPETĂ din pseudocod;
are următoarea sintaxă:
REPEAT
secvenţa;
UNTIL condiţie;
unde secvenţa reprezintă instrucţiunile din corpul instrucţiunii REPEAT;
principiul de execuţie:
• se execută secvenţă de instrucţiuni;
• se evaluează expresia logică;
• dacă rezultatul evaluării este FALSE atunci se execută din nou secvenţa de instrucţiuni, în caz contrar se trece mai departe;
secvenţă de instrucţiuni se execută cel puţin o dată, după care se pune problema reluării sau nu a execuţiei, după evaluarea expresiei logice.
INSTRUCŢIUNEA FOR
este o instrucţiune repetitivă;
corespunde structurii repetitive PENTRU din pseudocod;
permite execuţia repetată a unei instrucţiuni în funcţie de valoarea unui contor;
are următoarea sintaxă:
FOR variabilă:=expresie1 TO expresie2 DO expresie3;
unde: variabila este o variabilă de orice tip ordinal, iar expresie1 şi expresie2 sunt expresii de acelaşi tip cu variabila dată.
principiul de execuţie:
• se evaluează cele două expresii;
dacă valoarea obţinută în urma evaluării expresiei1 este strict mai mare decât valoarea obţinută în urma evaluării expresiei2 atunci execuţia instrucţiunii FOR este încheiată;
dacă valoarea obţinută în urma evaluării expresiei1 este egală cu valoarea obţinută în urma evaluării expresiei2, se atribuie variabilei de ciclare valoarea obţinută în urma evaluării expresiei1, se execută instrucţiunea abordată şi execuţia buclei FOR este încheiată;
dacă valoarea obţinută în urma evaluării expresiei1 este strict mai mică decât valoarea obţinută în urma evaluării expresiei2, se atribuie variabilei de ciclare valoarea obţinută în urma evaluării expresiei1 şi se trece la pasul următor;
• se execută instrucţiunea subordonată;
•
dacă valoarea reţinută de variabila de ciclare este strict mai mică decât valoarea obţinută în urma evaluării expresiei2, (evaluare efectuată la început) se adună 1 variabilei de ciclare şi se trece la executarea instrucţiunii subordonate;
dacă valoarea reţinută de variabila de ciclare este egală cu valoarea obţinută în urma evaluării expresiei2, execuţia instrucţiunii FOR se încheie.
Comentarii
Trimiteți un comentariu