c dichiarazioni:
parameter(nmax=10)
c Esempio di common-block che mette
in comune i valori del
c vettore c(nmax) con la funzione
f(x)
common
/coeff/ c(nmax)
real a, b, c, x, y, dx, sum, segno
integer n, i, nc
c tipi di dati:
c integer, real, double precision,
logical, character, parameter
c apertura files di dati e risultati
finali
open(10,file='coefficienti.dat')
open(20,file='grafico.dat')
c sintassi:
c open([unit=]numero,file='nome'[,status=new/old,form=formatted/unformatted])
c tra parentesi quadra ciò
che può essere tralasciato.
c lettura files di dati
read(10,*)
n
c l'asterisco indica la lettura (scrittura)
con nessuna particolare
c formattazione del testo
if(n.gt.nmax)
stop 'N. coeff. > 10'
c altri operatori logici:
c ge, eq, ne, lt, le
c ciclo do-enddo
do
i=1,n
read(10,*) c(i)
enddo
c chiusura dell'unità 10 dove
si era aperto il file 'coefficienti.dat'
close(10)
c inizializzazione variabili
c ciclo do-continue (equivalente a
do-endo)
do
5 i=n+1,nmax
c(i) = 0.0
5
continue
sum = 0.0
c unit 6 = standard output (schermo)
c unit 5 = standard input (tastiera)
write(6,*)
'estremi intervallo:'
write(6,*) 'a = ?'
read (5,*) a
write(6,*) 'b = ?'
read (5,*) b
c esempio di if-then-elseif-else-endif
if(a.gt.b) then
call swap(a,b)
segno = -1.0
elseif(a.eq.b) then
write(6,*) 'Integrale tra a e b di f(x) = 0.0'
y = f(a)
write(6,*) 'f(a) = f(b) =',y
stop
else
segno = 1.0
endif
write(6,*) 'numero di campionamenti del polinomio'
write(6,*) 'compresi gli estremi ?'
write(6,*) 'N = ?'
read (5,*) nc
x = a
dx = (b-a)/float(nc-1)
do i=1, nc-1
y = f(x)
write(20,*) x, y
sum = sum + dx * y
x = x + dx
enddo
y = f(x)
write(20,*) x, y
close(20)
sum = sum * segno
write(6,*) 'Integrale tra a e b di f(x) =', sum
stop
end
c234567
c Esempio di funzione;
c osservare che va dichiarato il tipo
di dato che la
c funzione ritorna
real function f(x)
parameter(nmax=10)
common /coeff/ c(nmax)
real c, x
f = c(1) + x * ( c(2) + x * ( c(3) + x * ( c(4) +
+ x * ( c(5) + x * ( c(6) + x * ( c(7) + x * ( c(8) +
+ x * ( c(9) + x * c(10) ))))))))
return
end
c Esempio di subroutine
subroutine swap(a,b)
real a, b, tmp
tmp = a
a = b
b = tmp
return
end