Tuesday, December 19, 2017

Variabilitate în FORMAT

De cele mai multe ori beneficiarul dorea și încă dorește ca datele lui să arate într-un anume fel, ceea ce se realizează prin modul în care apar descriptorii de format. Beneficiarii vor:
- precizie mai mare sau mai mică, adică variație în numărul de zecimale;
- anumite texte explicative în fața numerelor sau după ele;
- ornamente în desenarea tabelelor și a liniilor care fac separări;
- scrierea cu caractere mici sau cu caractere mari a mesajelor.
Procare dintre noi programatorii am simțit nevoia de a nu mai face mentenanță prin a tot modifica instrucțiunea FORMAT schimbând cifrele care indicau numărul de zecimale sau șirurile de caractere care se tipăreau, lucru ce presupunea și schimbarea lungimii șirului. Lucrurile nu au fost deloc simple până la introducerea în instrucțiunile FORMAT a elementelor de variabilitate, adică a unor variabile care aveau darul să flexibilizeze întreaga abordare și să reducă efortul doar printr-o inițializare bine controlată. În limbajele C sau C++ acest lucru este ceva foarte obișnuit și programatorii îl folosesc ca pe un lucru de-a dreptul banal:
- definind o variabilă de tip șir de caractere;
- inițializând adecvat acea variabilă oricând e nevoie;
- introducând variabila în instrucțiunea de format printre desriptori.
Și în programele FORTRAN se realizează multe flexibilități care scutesc pe cei ce fac mentenanță de eforturi inutile. Era o facilitate care se numea object times de aaduce elemente de flexibilitate în zona factorilor de multiplicitate dar și în instrucțiunile FORMAT.
Variabilitatea în instrucțiunea FORMAT a limbajului FORTRAN a fost un mod clar de a crește nivelul de mentenabilitate. Folosind o varietate de perechi READ - FORMAT sau WRITE - FORMAT și o instrucțiune GO TO se obține acea flexibilitate atât de necesară în raport cu exigențele beneficiarului.
Cu secvența de mai jos se modifică leker numărul de zecimale. El doar trebuie specificat prin variabila LI.
           READ (5,10) LI
10       FORMAT(I2)
           GOTO (20,40,60,80), LI
20       READ (5,30)A,B,C
30       FORMAT(F5.1,F7.1,F6.1)
           GOTO 100
40       READ (5,50)A,B,C
50       FORMAT(F5.2,F7.2,F6.2)
           GOTO 100
60       READ (5,70)A,B,C
70       FORMAT(F5.3,F7.3,F6.3)
           GOTO 100
80       READ (5,90)A,B,C
90       FORMAT(F5.4,F7.4,F6.4)
100     CONTINUE
Mai sunt și alte artificii care atunci erau salutare, dar care azi fac obiectul unor ironii, din moment în limbajul C++ se lucrează orice cu orice, deci nu mai există restricții.



(19 decembrie 2017)

No comments:

Post a Comment