Thursday, December 21, 2017

Inițializarea unei matrice în FORTRAN

Există diferite modalități prin care se produce inițializarea unei matrice, dar de fiecare dată trebuie cântărită cu mare atenție pe care dintre secvențe o adoptăm când scriem programe, pentru a face lucruri de apreciat și nu lucruri despre care râde toată lumea.
Am văzut inițializarea cu zero a elementelor unei matrice cu 5 linii și 5 coloane într-o secvență delirantă de Gâgă, pe care n-aș fi crezut s-o văd vreodată. Iat-o:
           DIMENSION A(5,5)
           A(1,1)=0.
           A(1,2)=0.
           A(1,3)=0.
           A(1,4)=0.
           A(1,5)=0.
           A(2,1)=0.
           A(2,2)=0.
           A(2,3)=0.
           A(2,4)=0.
           A(2,5)=0.
           A(3,1)=0.
           A(3,2)=0.
           A(3,3)=0.
           A(3,4)=0.
           A(3,5)=0.
           A(4,1)=0.
           A(4,2)=0.
           A(4,3)=0.
           A(4,4)=0.
           A(4,5)=0.
           A(5,1)=0.
           A(5,2)=0.
           A(5,3)=0.
           A(5,4)=0.
           A(5,5)=0.
Respectivul programator are a se lăuda cu un program cu multe instrucțiuni, dar complexitatea secvenței este zero căci diversitatea operatorilor și operanzilor este 1 iar logaritm în baza 2 din 1 este 0, știe tot poporul cu televizorul.
Cine lucreaza în FORTRAN IV știa de instrucțiunea DATA și toată secveța de mai sus s-ar fi scris cu mult mai elegant astfel:
           DIMENSION A(5,5)/25*0./
Dacă cineva își dorește să apară totuși instrucțiuni de atribuire, secvența ar arăta astfel:
           DIMENSION A(5,5)
           ...................
           DO 10 I=1,5
           DO 10 J=1,5
10       A(I,J)=0
           ..................
Lucrurile se complică atunci când elementele matricei au valori care trebuie să îndeplinească o serie de condiții, drept care și inițializarea se va face de fiecare dată în așa fel încât programul să fie bine scris, iar alți programatori să-l aprecieze pe cel care a scris programul.
Secvența:
           DIMENSION A(5,5)
           ...................
           READ(5,10) ((A(I,J), I=1,5), J=1,5)
10       FORMAT(5*F6.3)
           .....................
permite inițializarea linie de linie, cu date de pe cartele a matricei A(5,5). În cazul în care matricea se inițializează cu niște constante care nu diferă de la o rulare la alta, acele valori vor fi date într-o listă construită de forma:
DIMENSION A(5,5)/1.,4.,6.1,4.8,6.,1.,4.,6.5,-.4,6.,1.,4.,7.1,4.4,6.,1.,4.,6.1,-4.4,6.,1.,4.,9.1,4.4,-6.,/
Despre cum se face o inițializare a unei matrice se va scrie cel puțin un tratat, fără a fi epuizată problema, căci fiecare program are un ce al lui și una este să se inițializeze o matrice linie de linie și cu totul altfel stau lucrurile când inițializarea se face pe blocuri.
         



(21 decembrie 2017)

No comments:

Post a Comment