Iata si versiiunea fortran 90.
Am folosit un compilator vechi si free. (
http://gcc.gnu.org/fortran/ ) . Intel da o luna ifort-ul free.
Ar trebui sa fie usor de urmarit diferenta de sintaxa intre acest limbaj "verbose" si cele C-like.
trapeze_int putea fi o functie dar am pus-o ca subrutine pentru a arata diferenta intre functii si subrutine in fortran.
In C++ o subrutina ar fi o functie void.
Poate cineva pentru comparatie sa ne arate cum ar fi acest cod in defunctul fortran 77? Sintaxa lui fortran77 e total diferita de fortran90.
De fapt fortranul a murit si supravietuit in acelasi timp cu tranzitia de la fortran 77 catre fortran 90.
-------------------------------------------
module operatii
implicit none;
public :: f;
public :: trapeze_int;
contains
real(8 ) function f(x)
real(8 ) x
f = x*x*x
end function f
subroutine trapeze_int(a,b,n, int)
real(8 ) , intent(IN) :: a,b
integer, intent(IN) :: n
real(8 ) , intent(OUT) :: int
real(8 ) s0,step,x
integer i;
step = (b-a)/dble(n);
s0 = (f(a)+f(b))*0.5d0;
x=a;
do i=1,n-1
x=x+step;
s0=s0 + f(x)
enddo
int = s0*step
end subroutine trapeze_int
end module operatii
program main
use operatii, only : trapeze_int
implicit none
real(8 ) integrala
call trapeze_int(2.0d0,4.0d0,1000, integrala)
print*,'int = ',integrala;
end program main;