Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Codigos Fortran
Codigos Fortran
program ejemplo
implicit none
integer::a,b,c
real::e,f,g
a=2
b=3
c=a+b
e=1.5
f=2.5
g=e+f
print *, "hola, suma:",c,g
pause
end program
program ejemplo
implicit none
integer::a,b,c
real::e,f,g
character(len=10)::elmer
character(5)::elmer1
character(10)::elmer2(3),nomb(2)
write(*,*)"escribir 3 nombres"
read(*,*)elmer
read(*,*)elmer1
read(*,*)elmer2
read(*,*)nomb
a=2
b=3
c=a+b
e=1.5
f=2.5
g=e+f
print *, "hola, suma:",c,g
pause
write(*,*)"los nombres son escritos"
write(*,*)elmer
write(*,*)elmer1
write(*,*)elmer2
write(*,*)nomb
end program
program ejemplo
implicit none
integer::cont,fact, num
write(*,*)"ingresa un numero"
read(*,*)num
cont=1
fact=1
10 if(cont<=num) then
fact=fact*cont
cont=cont+1
goto 10
end if
write(*,*)"el factorial es",fact
pause
end program
program ejemplo
implicit none
integer::cont,fact, num
write(*,*)"ingresa un numero"
read(*,*)num
fact=1
do cont=1,num,1
fact=fact*cont
end do
write(*,*)"el factorial es",fact
pause
end program
program ejemplo
implicit none
! My first Fortran 90 program!
! Greetings!
character NAME*10
print*, 'What is your name?'
read*, NAME
print*, 'Hi there, ', NAME
end program
program Newton
! Square rooting with Newton
implicit none
real A ! number to be square rooted
integer I ! iteration counter
real X ! approximate square root of A
write( *, 10, ADVANCE = 'NO' ) ' Enter number to be square rooted: '
10 format( A )
¡Permite la entrada del dato en la misma línea del aviso
read*, A
print*
X=1 ! initial guess (why not?)
do I = 1, 6
X = (X + A / X) / 2
print*, X
end do
print*
print*, 'Fortran 90''s value:', sqrt( A ) ¡es el valor que calcula el programa fortran 90
end
program Proyectil
implicit none
program test_time_and_date
character(10) :: date
character(15) :: time
character(15) :: hora
!integer,dimension(8) :: values
! using keyword arguments
call date_and_time(date,time) ¡ llama dato y tiempo
print*, date
print*, time
print*,'entrar a'
read*,a
print*,'entrar b'
read*,b
print*,'entrar c'
read*,c
if (a==0) then
if (b==0) then
if (c==0) then
print*,'solucion indeterminada'
else
print*,'No hay solucion'
end if
else
x=-c/b
print*,'Unicamente una raiz, es lineal la ecuacion',x
end if
else
x1 = (-b + sqrt(b*b - 4*a*c)) / (2*a)
end if
end program
program EQ2
implicit none
real a, b, c
real discriminante
real parte_real, parte_imag
real x1, x2
write(*,*) "Entrar los coeficientes cuadratica"
read(*,*) a, b, c
discriminante = b**2 - 4 * a * c
x1 = ( -b + sqrt(discriminante) ) / (2 * a )
x2 = ( -b - sqrt(discriminante) ) / ( 2 * a )
x1 = ( -b ) / ( 2 * a )
write (*,*) 'Esta ecuacion tiene dos raices reales:'
write (*, *) 'XI = X2 = ', x1
else
parte_real = ( -b ) / ( 2 * a )
parte_imag = sqrt (abs(discriminante)) / (2 * a)
end program
v = vo - g*t
ts = vo / g
tv = (vo + sqrt(vo**2 + 2*g*yo)) / g
Hmax = (vo ** 2) / (2*g)
if ( (t < 0 ) ) then
print*, 'No exite tiempo negativo'
stop
end if
end program
EJEMPLO 15: Movimiento vertical de una partícula ascendente: write (), format ().
program MVA
implicit none
write(*,100)
100 format(' Estudiar el movimiento ascendente de una '&
'particula',/,' Hacia arriba es +y y y = 0 a Tierra',/,' Ingresar:')
write(*,110)
110 format(' 1--La posicion inicial, yo, m:')
read*, yo
write(*,120)
120 format(' 2--La velocidad inicial, vo, m/s:')
read*, vo
write(*,130)
130 format(' 3--El tiempo, t, seg:')
read*,t
v = vo - g*t
ts = vo / g
tv = (vo + sqrt(vo**2 + 2*g*yo)) / g
Hmax = (vo ** 2) / (2*g)
if ( (t < 0 ) ) then
print*, 'No exite tiempo negativo'
stop
end if
end program
EJEMPLO 16: Ajuste de mínimos cuadrados de los datos de un archivo, por ejemplo,
“input.txt”
Se crea un archivo texto usando el block de notas, en su interior se encuentra los
pares de datos.
program MinimosCuadrados
implicit none
write (*,1000)
1000 format (1X,'Este programa ejecuta un ajuste minimos cuadrados de un ',/, &
1X,'conjunto de datos ingresados a una linea recta. Entrar el nombre',/ &
1X,'del archivo que contiene la entrada de los pares (x,y): ' )
!Decir usuario
write (*, 1030 ) slope, y_int, n
1030 format ('0','Coeficientes de regresion para la linea de minimos cuadraticos:',&
/,1X,' slope (m) = ', F12.3, &
/,1X,' Intercept (b) = ', F12.3, &
/,1X,' No of points = ', I12 )
program Raiz2_3
implicit none
integer j
real, dimension(tamano_max):: valor
real, dimension(tamano_max):: raiz2
real, dimension(tamano_max):: raiz3
do j = 1, tamano_max
valor(j) = real(j)
raiz2(j) = sqrt(valor (j))
raiz3(j) = valor(j)**(1./3.)
end do
write (*,100)
100 format ('0',20X,'Tabla de las raices cuadradas y cubicas',/,&
4X,' Numero Raiz cuadrada Raiz cubica', &
3X,' Numero Raiz cuadrada Raiz cubica',/,&
4X,' ====== ============= ===========',&
3X,' ====== ============= ===========')
write (*,110) (valor(j), raiz2(j), raiz3(j), j = 1, tamano_max)
110 format (2(4X,F6.0,9X,F6.4,9X,F6.4))
end program
program RaizNewton
implicit none
if (Converged) then
print*, 'Newton converged'
else
print*, 'Newton diverged'
end if
contains
function F(X)
! problem is to solve f(x) = 0
real F, X
F = X ** 3 + X - 3
end function F
function DF(X)
! first derivative of f(x)
real DF, X
DF = 3 * X ** 2 + 1
end function DF
end program
program Ordenar
implicit none
! Abrir el archivo de datos de entrada. El estado es OLD porque los datos de entrada deben
! ya existir
open ( UNIT=9, FILE=filename, STATUS='OLD', ACTION='READ', &
IOSTAT=status )
! El archivo se abrió correctamente, así que lea los datos para ordenar
! a partir de él, clasifique los datos y escriba los resultados.
! Primera lectura en datos.
do
read (9, *, IOSTAT=status) temp ! Obtener valor
if ( status /= 0 ) exit ! Salida al final de los datos
nvals = nvals + 1 ! Recuento de cuentas
a(nvals) = temp !guardar valor en matriz
end do
iptr = i
inner: do j = i+1, nvals
minval: if ( a(j) < a(iptr) ) then
iptr = j
end if minval
end do inner
! iptr ahora apunta al valor mínimo, así que cambie a (iptr) con
! a (i) si i / = iptr.
else fileopen
EJEMPLO 20: