program subroutinesAndFunctions !////////////////////////////////////////////////////////// !/ Este programa ejemplifica el uso de subrutinas / !/ y funciones. La funcion externa fun_cosineAngleVectors / !/ esta en la carpeta fortran/subs (en introcomp-files) / !////////////////////////////////////////////////////////// real :: x1,y1,z1 real :: x2,y2,z2 real :: absoluteValue , cosine x1 = 1.0 y1 = 2.8 z1 = 5.6 x2 = 1.0 y2 = 3.1 z2 = 8.0 call sub_absoluteValueVector(x1,y1,z1,absoluteValue) write(*,*),"el modulo es",absoluteValue absoluteValue = fun_absoluteValueVector(x1,y1,z1) write(*,*),"el modulo es",absoluteValue cosine = fun_cosineAngleVectors(x1,y1,z1,x2,y2,z2) write(*,*),"el coseno del angulo entre los vectores es:",cosine ! ============ SUBRUTINAS Y FUNCIONES =============================== contains subroutine sub_absoluteValueVector(xcoord,ycoord,zcoord,value) ! --- DECLARACIONES --- ! Declaraciones de Entrada real , intent(in) :: xcoord,ycoord,zcoord ! Declaraciones de Salida real , intent(out) :: value ! --- FIN DECLARACIONES --- value = sqrt(xcoord**2+ycoord**2+zcoord**2) end subroutine sub_absoluteValueVector ! --------------------------------------------------------------------- real function fun_absoluteValueVector(xcoord,ycoord,zcoord) fun_absoluteValueVector = sqrt(xcoord**2+ycoord**2+zcoord**2) end function fun_absoluteValueVector ! --------------------------------------------------------------------- end program subroutinesAndFunctions