![Page 1: Fortran ``in pillole'': seconda lezioneFortran “in pillole”: seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi](https://reader035.vdocuments.mx/reader035/viewer/2022062417/6127f7c28ef4650ea765ee41/html5/thumbnails/1.jpg)
Fortran “in pillole”: seconda lezione
Annamaria Mazzia
Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate
Corso di Metodi Numerici per l’Ingegneria
![Page 2: Fortran ``in pillole'': seconda lezioneFortran “in pillole”: seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi](https://reader035.vdocuments.mx/reader035/viewer/2022062417/6127f7c28ef4650ea765ee41/html5/thumbnails/2.jpg)
I predicati
Riprendiamo l’algoritmo della Regula Falsi.Quale controllo veniva fatto?Fino a quandon ≤ itmax e (|xn+1 − xn| > tol o |yn+1 − yn| > tol) allora
n = n + 1si applica l’algoritmo della Regula Falsi.
L’espressione n ≤ itmax e (|xn+1 − xn| > tol o|yn+1 − yn| > tol) e un’espressione logica il cui risultato puoessere solamente o vero o falso.
A. Mazzia (DMMMSA) Fortran a.a. 2007/2008 2 / 29
![Page 3: Fortran ``in pillole'': seconda lezioneFortran “in pillole”: seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi](https://reader035.vdocuments.mx/reader035/viewer/2022062417/6127f7c28ef4650ea765ee41/html5/thumbnails/3.jpg)
Operatori di confronto
Operatore Significato Esempio Valore.GT. > (a.gt.b) Vero se a > b
Falso se a ≤ b.GE. >= (a.ge.b) Vero se a ≥ b
Falso se a < b.LT. < (a.lt.b) Vero se a < b
Falso se a ≥ b.LE. <= (a.le.b) Vero se a ≤ b
Falso se a > b.EQ. == (a.eq.b) Vero se a = b
Falso se a 6= b.NE. ∼= (a.ne.b) Vero se a 6= b
Falso se a = b
A. Mazzia (DMMMSA) Fortran a.a. 2007/2008 3 / 29
![Page 4: Fortran ``in pillole'': seconda lezioneFortran “in pillole”: seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi](https://reader035.vdocuments.mx/reader035/viewer/2022062417/6127f7c28ef4650ea765ee41/html5/thumbnails/4.jpg)
Operatori logici
Un predicato “composto” - come quello visto per laRegula Falsi - e composto da predicati semplici messiinsieme da operatori logici del tipo “e”, “oppure”, “non”.Si haOperatore Significato Esempio
.NOT. negazione .not.(P)∼
.AND. congiunzione (P1).and.(P2)&
.OR. disgiunzione (P1).or.(P2)inclusiva|
A. Mazzia (DMMMSA) Fortran a.a. 2007/2008 4 / 29
![Page 5: Fortran ``in pillole'': seconda lezioneFortran “in pillole”: seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi](https://reader035.vdocuments.mx/reader035/viewer/2022062417/6127f7c28ef4650ea765ee41/html5/thumbnails/5.jpg)
Operatore Esempio Valore.NOT. .not.(P)
P vero =⇒ .not.(P) falsoP falso=⇒ .not.(P) vero
.AND. (P1).and.(P2)P1 e P2 veri=⇒ (P1).and.(P2) veroP1 o P2 falsi =⇒ (P1).and.(P2) falso
.OR. (P1).or.(P2)o P1 o P2 veri =⇒ (P1).or.(P2) veroP1 e P2 falsi =⇒ (P1).or.(P2) falso
Ci sono delle priorita sull’ordine con cui vengono presi glioperatori in FORTRAN. Comunque conviene sempre usarele parentesi tonde.
A. Mazzia (DMMMSA) Fortran a.a. 2007/2008 5 / 29
![Page 6: Fortran ``in pillole'': seconda lezioneFortran “in pillole”: seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi](https://reader035.vdocuments.mx/reader035/viewer/2022062417/6127f7c28ef4650ea765ee41/html5/thumbnails/6.jpg)
Esempio
Traduciamo in FORTRAN il predicaton ≤ itmax e (|xn+1 − xn| > tol o |yn+1 − yn| > tol)
Introduciamo le variabili iter, itmax, scartixscartiy, tol.Si ha((iter.le.itmax).and.((scartix.gt.tol)
.or.(scartiy.gt.tol)) )
Perche mettiamo .or. nel predicato che riguarda gliscarti?
A. Mazzia (DMMMSA) Fortran a.a. 2007/2008 6 / 29
![Page 7: Fortran ``in pillole'': seconda lezioneFortran “in pillole”: seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi](https://reader035.vdocuments.mx/reader035/viewer/2022062417/6127f7c28ef4650ea765ee41/html5/thumbnails/7.jpg)
La struttura alternativa
struttura condizionalestruttura whileif logico
A. Mazzia (DMMMSA) Fortran a.a. 2007/2008 7 / 29
![Page 8: Fortran ``in pillole'': seconda lezioneFortran “in pillole”: seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi](https://reader035.vdocuments.mx/reader035/viewer/2022062417/6127f7c28ef4650ea765ee41/html5/thumbnails/8.jpg)
Ciclo if
if (espressione logica) then{ istruzione 1a }{ istruzione 2a }...
else{ istruzione 1b}{ istruzione 2b}...
endif
Se e vera l’espressione logica allora si eseguono leistruzioni 1a, 2a, . . . . Altrimenti - cioe se e falsa l’espressionelogica - allora si eseguono le istruzioni 1b, 2b, . . .
A. Mazzia (DMMMSA) Fortran a.a. 2007/2008 8 / 29
![Page 9: Fortran ``in pillole'': seconda lezioneFortran “in pillole”: seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi](https://reader035.vdocuments.mx/reader035/viewer/2022062417/6127f7c28ef4650ea765ee41/html5/thumbnails/9.jpg)
if (espressione logica) then{ istruzione 1a }{ istruzione 2a }...
endifSe e vera l’espressione logica allora si eseguono leistruzioni 1a, 2a, . . . , altrimenti non si fa nulla.
A. Mazzia (DMMMSA) Fortran a.a. 2007/2008 9 / 29
![Page 10: Fortran ``in pillole'': seconda lezioneFortran “in pillole”: seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi](https://reader035.vdocuments.mx/reader035/viewer/2022062417/6127f7c28ef4650ea765ee41/html5/thumbnails/10.jpg)
if (espressione logica1) then{ istruzione 1a }{ istruzione 2a }...
elseif (espressione logica2)then
{ istruzione 1b}...
elseif (espressione logica3)then
{ istruzione 1c}. . .
...else
{ istruzione 1z}. . .
endif
Esempioif ((-0.5d0.le.x).and.(x.gt.0.5d0)) then
a=10.0d0fun=a*dsin(x)
elseif ((0.5d0.le.x).and.(x.gt.1.5d0)) then
a=0.5d0fun=a*dcos(x)
elsefun=1.0d0
endif
A. Mazzia (DMMMSA) Fortran a.a. 2007/2008 10 / 29
![Page 11: Fortran ``in pillole'': seconda lezioneFortran “in pillole”: seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi](https://reader035.vdocuments.mx/reader035/viewer/2022062417/6127f7c28ef4650ea765ee41/html5/thumbnails/11.jpg)
Ciclo whileDo while (espressione logica)
{ istruzione 1 }{ istruzione 2 }...{ istruzione n }
end doFintantoche e vera l’espressione logica allora eseguiistruzione 1, 2, . . . , n.Le istruzioni 1, 2, . . . vengono ripetute ciclicamente (nonuna volta sola come nel ciclo if).Quando si esegue l’ultima istruzione posta all’interno delciclo, si torna all’espressione logica e si controlla se e verao falsa. Se e vera, si eseguono di nuovo le istruzioni 1, 2,. . . ,n. Se non e vera, si esce dal ciclo while.Attenzione a non creare cicli infiniti!
A. Mazzia (DMMMSA) Fortran a.a. 2007/2008 11 / 29
![Page 12: Fortran ``in pillole'': seconda lezioneFortran “in pillole”: seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi](https://reader035.vdocuments.mx/reader035/viewer/2022062417/6127f7c28ef4650ea765ee41/html5/thumbnails/12.jpg)
Esempio
Riprendiamo il ciclo della regula falsi. Il controllo su unnumero massimo di iterazioni che possono essereeffettuate, permette di uscire dal ciclo se non si arriva aconvergenza (e quindi gli scarti su x e su y rimangonosempre maggiori della tolleranza).do while((iter.le.itmax).and.((scartix.gt.tol).or.(scartiy.gt.tol)))
iter = iter +1...
end do
A. Mazzia (DMMMSA) Fortran a.a. 2007/2008 12 / 29
![Page 13: Fortran ``in pillole'': seconda lezioneFortran “in pillole”: seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi](https://reader035.vdocuments.mx/reader035/viewer/2022062417/6127f7c28ef4650ea765ee41/html5/thumbnails/13.jpg)
If logico
If (espressione logica) { istruzione }
Se l’espressione logica e vera, allora esegui solo questasingola istruzione.
A. Mazzia (DMMMSA) Fortran a.a. 2007/2008 13 / 29
![Page 14: Fortran ``in pillole'': seconda lezioneFortran “in pillole”: seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi](https://reader035.vdocuments.mx/reader035/viewer/2022062417/6127f7c28ef4650ea765ee41/html5/thumbnails/14.jpg)
I sottoprogrammiQuando l’algoritmo e il problema su cui stiamo lavorandosono complicati, conviene spezzare il problema insottoproblemi in modo da semplificare laprogrammazione.Analogamente, al posto di avere un unico programma inFORTRAN, conviene scrivere il programma facendo uso disottoprogrammi.Si hanno due tipi di sottoprogrammi in FORTRAN:
subroutinesfunctions
In tal modo un programma FORTRAN puo risultarecomposto da:
programma principaleuna o piu subroutinesuna o piu functions
A. Mazzia (DMMMSA) Fortran a.a. 2007/2008 14 / 29
![Page 15: Fortran ``in pillole'': seconda lezioneFortran “in pillole”: seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi](https://reader035.vdocuments.mx/reader035/viewer/2022062417/6127f7c28ef4650ea765ee41/html5/thumbnails/15.jpg)
Esempio di subroutineModifichiamo il programma gradirad.f ingradirad sub.f
la subroutine e chiamata nel programma principaletramite l’istruzionecall nome subroutine(parametri)la subroutine e scritta dopo la end del programmaprincipalela subroutine incomincia consubroutine nome subroutine(parametri)il “corpo” della subroutine e analogo a quello di unprogramma principale (implicit none, dichiarazionedelle variabili, istruzioni, cicli. . . )la subroutine si chiude con le istruzionireturnend
A. Mazzia (DMMMSA) Fortran a.a. 2007/2008 15 / 29
![Page 16: Fortran ``in pillole'': seconda lezioneFortran “in pillole”: seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi](https://reader035.vdocuments.mx/reader035/viewer/2022062417/6127f7c28ef4650ea765ee41/html5/thumbnails/16.jpg)
Il fatto che noi chiamiamo una subroutine nelprogramma principale (call) dice che la subroutinenon e un programma a se stante. Quando terminal’esecuzione di cio che e scritto all’interno dellasubroutine si torna indietro nel programma principalee si continua l’elaborazione da quel punto. L’istruzionereturn fa tornare al programma principale.Le variabili non devono avere necessariamente lostesso nome nel programma principale e nellasubroutinecall datin(xgradi, xprimi, xsecondi)⇐= nel
programma principalesubroutine datin(xg,xp,xs)⇐= nella subroutine
ma devono avere lo stesso significato e devono esseremesse nello stesso ordine: xg deve avere lo stessosignificato di xgrado e deve essere dello stesso tiponella dichiarazione delle variabili. Lo stesso dicasi perxp- xprimi e xs- xsecondi.
A. Mazzia (DMMMSA) Fortran a.a. 2007/2008 16 / 29
![Page 17: Fortran ``in pillole'': seconda lezioneFortran “in pillole”: seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi](https://reader035.vdocuments.mx/reader035/viewer/2022062417/6127f7c28ef4650ea765ee41/html5/thumbnails/17.jpg)
All’interno della subroutine si possono utilizzare altrevariabili oltre a quelle che sono presenti tra i parametridella stessa. L’importante e dichiararle nella subroutine.Tali variabili non passano nel programma principale masono usate solo nella subroutine.Esempio: un programma per calcolare gli zeri di unafunzione in una variabile mediante il metodo della RegulaFalsi (regfalsi sub.f).
A. Mazzia (DMMMSA) Fortran a.a. 2007/2008 17 / 29
![Page 18: Fortran ``in pillole'': seconda lezioneFortran “in pillole”: seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi](https://reader035.vdocuments.mx/reader035/viewer/2022062417/6127f7c28ef4650ea765ee41/html5/thumbnails/18.jpg)
Le functions
Dover scrivere ogni volta tutta l’espressione della funzionedi cui cercare lo zero puo portare facilmente a degli errorie inoltre rende piu difficile la lettura del programma.Modifichiamo il codice, introducendo una function per laf e una function per la derivata prima - anche se questaviene usata solo una volta all’interno del programma.Vediamo il codice modificato (regfalsi subfun.f).
A. Mazzia (DMMMSA) Fortran a.a. 2007/2008 18 / 29
![Page 19: Fortran ``in pillole'': seconda lezioneFortran “in pillole”: seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi](https://reader035.vdocuments.mx/reader035/viewer/2022062417/6127f7c28ef4650ea765ee41/html5/thumbnails/19.jpg)
Osservazioni
Una function viene chiamata nel programma (o nellesubroutine) direttamente - senza la call come avvieneper le subroutine.x1new = xold - f(xold)/df(xold)
La function restituisce un valore ben preciso - il valoreassunto dalla funzione stessa in funzione dei parametri.Percio deve essere dichiarato il tipo della function(integer, real, real*8, . . . )La function restituisce un solo valore:f= exp(2*x ...)
La function puo avere uno o piu parametri in ingresso.Come per le subroutine, si usa l’istruzione implicitnone, la dichiarazione delle variabili usate, tutte leistruzioni, e infine return, end.
A. Mazzia (DMMMSA) Fortran a.a. 2007/2008 19 / 29
![Page 20: Fortran ``in pillole'': seconda lezioneFortran “in pillole”: seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi](https://reader035.vdocuments.mx/reader035/viewer/2022062417/6127f7c28ef4650ea765ee41/html5/thumbnails/20.jpg)
Il formato
Abbiamo stampato i dati che interessano sul terminale.Per avere un output elegante e ordinato, conviene usarel’istruzione format.Vediamo il programma regfalsi format.f.
A. Mazzia (DMMMSA) Fortran a.a. 2007/2008 20 / 29
![Page 21: Fortran ``in pillole'': seconda lezioneFortran “in pillole”: seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi](https://reader035.vdocuments.mx/reader035/viewer/2022062417/6127f7c28ef4650ea765ee41/html5/thumbnails/21.jpg)
Osservazioni
Usare il formato mediante l’istruzione format piuttostoche all’interno della write.Un numero (etichetta) all’interno della write ecollegato al formato che viene usato per quellastampa.
formato Significatoi formato interoe esponenzialef fissoa alfanumericox spazi bianchi
A. Mazzia (DMMMSA) Fortran a.a. 2007/2008 21 / 29
![Page 22: Fortran ``in pillole'': seconda lezioneFortran “in pillole”: seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi](https://reader035.vdocuments.mx/reader035/viewer/2022062417/6127f7c28ef4650ea765ee41/html5/thumbnails/22.jpg)
formato Esempioi i5 - 5 caratteri per un interoe e14.6 - 14 caratteri - 6 per la mantissa
e14.6 - 14 caratteri - 6 per la mantissae18.10 - 18 caratteri - 10 per la mantissa
f f14.6 - 14 caratteri - 6 per le cifre decimalif f15.12 - 15 caratteri - 12 per le cifre decimalia a5 - una stringa di al piu 5 caratterix 1x - 1 carattere bianco
3x - 3 caratteri bianchiSpecificando il formato, occorre prestare attenzione alfatto che non tutti i numeri possono essere stampaticorrettamente. Per esempio se un intero ha piu di 5caratteri (per esempio 100150) ma il formato per esso e i5,vengono stampati degli * o altri caratteri a seconda delcompilatore. Se si hanno strani risultati in output usando unformato: togliere il formato, compilare e rieseguire ilprogramma per verificare se l’errore dipende dal formato!
A. Mazzia (DMMMSA) Fortran a.a. 2007/2008 22 / 29
![Page 23: Fortran ``in pillole'': seconda lezioneFortran “in pillole”: seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi](https://reader035.vdocuments.mx/reader035/viewer/2022062417/6127f7c28ef4650ea765ee41/html5/thumbnails/23.jpg)
Files di dati
La stampa dei risultati piu che stamparla sul video delcomputer conviene salvarla in un file di dati, in modo dapoterlo utilizzare in seguito (per esempio per fare i grafici)Le istruzioni piu semplici per ottenere questo risultato sono:
aprire un file all’interno del programma principaleassociando ad esso un numero (label).le istruzioni di write saranno poi associate a quellalabel e scritte su quel file.chiudiamo il file con l’istruzione close.
Vediamo un esempio in regfalsi subfunformfile.f
A. Mazzia (DMMMSA) Fortran a.a. 2007/2008 23 / 29
![Page 24: Fortran ``in pillole'': seconda lezioneFortran “in pillole”: seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi](https://reader035.vdocuments.mx/reader035/viewer/2022062417/6127f7c28ef4650ea765ee41/html5/thumbnails/24.jpg)
Sulla lettura dei dati di input
Un file di dati puo essere usato, alla stessa maniera perleggere i dati di input.Modifichiamo a tal proposito il programma sullaconversione gradi-radianti gradirad fileinp.f
A. Mazzia (DMMMSA) Fortran a.a. 2007/2008 24 / 29
![Page 25: Fortran ``in pillole'': seconda lezioneFortran “in pillole”: seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi](https://reader035.vdocuments.mx/reader035/viewer/2022062417/6127f7c28ef4650ea765ee41/html5/thumbnails/25.jpg)
Vettori e matrici
Supponiamo ora di dover lavorare con vettori.Come memorizzarli? Come lavorare con i vettori?Scriviamo un programma che legge due vettori edesegue il prodotto scalare tra essi in prodscal.f
A. Mazzia (DMMMSA) Fortran a.a. 2007/2008 25 / 29
![Page 26: Fortran ``in pillole'': seconda lezioneFortran “in pillole”: seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi](https://reader035.vdocuments.mx/reader035/viewer/2022062417/6127f7c28ef4650ea765ee41/html5/thumbnails/26.jpg)
Osservazioni
in FORTRAN 77 ai vettori (e alle matrici) occorre dareuna dimensione massima, come effetto della lorolocazione di memoria statica. Percio usiamo ilparametro nmax (e abbiamo introdotto l’istruzioneparameter).Ci sono due modi equivalenti per leggere i dati da file- il cosiddetto do implicito e il do esplicito.Il do esplicito viene usato anche successivamenteper fare il prodotto scalare tra i due vettori.Il ciclo do i=1,n e equivalente ad un ciclo do while(i.le.n) con i che varia da 1 a n con incremento 1.Per fare il prodotto scalare, abbiamo introdotto unavariabile di accumulo
A. Mazzia (DMMMSA) Fortran a.a. 2007/2008 26 / 29
![Page 27: Fortran ``in pillole'': seconda lezioneFortran “in pillole”: seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi](https://reader035.vdocuments.mx/reader035/viewer/2022062417/6127f7c28ef4650ea765ee41/html5/thumbnails/27.jpg)
Sul ciclo do
In genere, nel ciclo do si puo avere anche un incrementodiverso da 1.Si ha, in generale:do indice = indiceinizio, indicefine, incr
istruzioniend doLa variabile intera indice parte da indiceinizio e vieneincrementata della quantita incr, fino ad arrivare aindicefine.
A. Mazzia (DMMMSA) Fortran a.a. 2007/2008 27 / 29
![Page 28: Fortran ``in pillole'': seconda lezioneFortran “in pillole”: seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi](https://reader035.vdocuments.mx/reader035/viewer/2022062417/6127f7c28ef4650ea765ee41/html5/thumbnails/28.jpg)
Cenni sulle matrici
Una matrice viene dichiarata, ad esempio, comereal*8 A(nmax,nmax)
Nel file di dati, si scrive la matrice come siamo abituatia vederla, in modo che la lettura possa essere fattacon le istruzioni:do i=1,n
read(10,*) (A(i,j), j=1,n)end do
I cicli do si usano sia per l’indice di riga che per l’indicedi colonna.Perche solo dei cenni? Perche quando lavoreremocon le matrici, le memorizzeremo in modo particolareutilizzando dei vettori.
A. Mazzia (DMMMSA) Fortran a.a. 2007/2008 28 / 29
![Page 29: Fortran ``in pillole'': seconda lezioneFortran “in pillole”: seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi](https://reader035.vdocuments.mx/reader035/viewer/2022062417/6127f7c28ef4650ea765ee41/html5/thumbnails/29.jpg)
Vettori e matrici nei sottoprogrammi
Per le matrici occorre sempre dichiarare la dimensionemassima sulle righe quando una matrice e unparametro di un sottoprogramma. Ad esempioreal*8 A(nmax,nmax) nel programma principalereal*8 A(nmax,n) nel sottoprogramma
Quindi se A viene usata in un sottoprogramma,bisogna scrivere tra i parametri del sottoprogrammasia A sia nmax, oltre che n.Per i vettori, basta dichiarare la dimensione effettivanei sottoprogrammi e quindi passare solo n tra iparametri. Ad esempioreal*8 x(nmax) nel programma principalereal*8 x(n) nel sottoprogramma .
A. Mazzia (DMMMSA) Fortran a.a. 2007/2008 29 / 29