Sunday, November 12, 2017

Implementarea structurilor fundamentale de control


Structurile fundamentale sunt:

  • structura liniară în care instrucțiunile se execută una după cealaltă;
  • structura alternativă în care se produce o selecție funcție de care se execută una sau alta dintre instrucțiuni, după care se revine la execuție în secvență:
  • structura repetitivă în care o anumită secvență de instrucțiuni se execută de mai multe ori, fie că numărul de repetări este cunoscut, fie până când o condiție este îndeplinită și numărul de repetări nu este cunoscut de dinainte;
  • structura alternativă multiplă care presupune selectarea dintre mai multe secvențe de instrucțiuni a uneia care se execută la un moment dat, după care se revine la execuția în secvență a altor instrucțiuni.

De la limbaj la limbaj există diferite implementări ale acestor structuri de control și am mari dubii că sunt prea multe limbajele în care să nu existe instrucțiunea IF() THEN....ELSE.
Limbajul de asamblare conține tot felul de implementări și încă libere ale structurilor de control. Dacă în FORTRAN nu sunt permise intersecțiile de domenii în secvențele de program scrise în limbaj de asamblare așa ceva este permis. În limbajele de asamblare însă se construiesc secvențele pas cu pas, prin evaluări de expresii, comparări și salturi necondiționate cât îi poftește inima programatorului. Chiar dacă există instrucțiunea LOOP programatorul o gestionează chiar cum vrea el sau o ignoră construind repetitivitatea după pofta inimii cu evaluări, comparări și salturi condiționate combinate cu salturi necondiționate.
Limbajul FORTRAN implementează structurile fundamentale de control destul de ușor și simplu. Pentru structura alternativă implementarea este  prin:
IF(expresie) eticheta1,eticheta2,eticheta3
unde:
eticheta- dirijează execuția spre o secvență dacă expreia evaluată este mai mică decât  zero;
eticheta- dirijează execuția spre o secvență dacă expreia evaluată este egală cu zero;
eticheta3 - dirijează execuția spre o secvență dacă expreia evaluată este mai mare ca zero.
Structura repetitivă este implementată cu construcția:
                 DO eticheta  variabila_control = valoare_inițială, valoare_finală, rație
                 ......................
eticheta    ultima_instrucțiune_repetată
unde:
eticheta  - delimitează sfârșitul secvenței de repetat care începe după instrucțiunea DO;
variabila_control  - variabila cu care se gestionează numărul repetărilor, căci nivelul este între valoarea inițială și valoarea finală;
valoare_inițială - valoarea de start a variabilei de control;
valoare_finală - este valoarea limită superioară care nu este depășită de variabila de control; în caz de depășire repetarea este întrerultă;
rație - este o constantă sau o variabilă care arată cu cât se modifică variabila de control la iterația următoare.
Astructura alternativă multiplă este implementată în acest limbaj cu ceea ce se numea GO TO calculat, o construcție de forma:
GO TO (eticheta1, eticheta2, eticheta3,...., etichetan), variabilă_control
în care:
etichetai  -  arata la ce instrucțiune se face saltul dacă variabila_control este egală cu i:
variabila_control - este variavila care are valori cuprinse între 1 și n.
Acest limbaj nu are structura repetitivă condiționată anterior DO-WHILE și nici pe dea condiționată posterior, DO-UNTIL. Acestea se simulează folosind IF() și o întrețesere de instrucțiuni GO TO, ceea ce programarea structurată implementată forțat pentru FORTRAN IV se străduia să facă greoi, aproape imposibil de acceptat.
Limbajul C dispune de tot tacâmul de construcții pentru a implementa toate structurile de control fără mari probleme și tocmai de aceea a fost acceptat ca fiind un limbaj complet, ușor și prietenos.
Structura liniară este implementată folosind expresii aritmetice, expresii de atribuire dar și apeluri de funcții.
Structura alternativă este implementată folosind construcția:
if (expresie) {
                      secventa1;
                     }
                      else
                     {
                      secventa2;
                      }
dacă după evaluarea expresiei se obține că este adevărată se execută secventa1, În caz contrar se execută secventa2. Se observă că lipsește then pentru a selecta secventa1, lucru nenecesar, ci presupus, că nu tot ceea ce este în vorbirea curentă trebuie preluat în limbaj.
        

În lucru acum
(13 noiembrie 2017)

No comments:

Post a Comment