lunes, 8 de noviembre de 2010

FORTRAN - Ejemplos

Lenguajes de Programacón - PUNTOS EXTRA

MÁXIMO COMÚN DIVISOR

Este programa calcula el máximo común divisor de una pareja de números utilizando el Algoritmo de Euclides. Como sabemos el algoritmo de Euclides se fundamenta en que el máximo común divisor de la pareja de números a,b es el mismo que el de b,r, siendo r el residuo de la division anterior, por ello intercambiamos los valores de a por r a lo largo de la ejecucion del programa mientras el numero menor no sea igual a 0.

Para compilar: gfortran -o mcd mcd.f
Ejecutar con: ./mcd

Codigo
C ****** PROGRAMA QUE CALCULA EL ******
C ******* MAXIMO COMUN DIVISOR ********
C =====================================
PROGRAM mcd
REAL m, n, r, aux
PRINT*, 'Dame M: '
READ(*,*) m
PRINT*, 'Dame N: '
READ(*,*) n
PRINT*, 'Maximo Comun Divisor de:'
PRINT*, m, n
IF (m.LT.n) THEN
aux = m
m = n
n = aux
ENDIF
DO WHILE (r.NE.0)
r = MOD(m,n)
m = n
n = r
ENDDO
PRINT*, 'es',m
STOP
END


EJECUCION


Para verificar que los resultados son correctos, pueden hacerlo en esta página o calcular el MCD ustedes mismos Calcular MCD

DESCARGA: mcd.f

CALCULO DE LA FUERZA MAGNETICA APLICADA A SUS TRES VARIANTES

Como lo dice el tÍtulo, este algoritmo calcula la fuerza magnetica aplicada ya sea a una particula en movimiento, generada en un conductor o en un solenoide.
Tuve un pequeno problema con el calculo del angulo ya que fortran lo pedia en radianes, aplicando una formula de conversion resolvi el problema :)

Para compilar: gfortran -o fisica fisica.f
Para ejecutar: ./fisica

Codigo
C ******** PROGRAMA QUE CALCULA ************
C ******** LA FUERZA MAGNETICA *************
C ******** EN SUS TRES CASOS **************
C ==========================================
PROGRAM fisica

REAL x, q, v, b, i, l, n, o, theta, fb, a
PRINT*, 'Calcular la magnitud de la fuerza magnetica para: '
PRINT*, '1. Particulas en movimiento'
PRINT*, '2. Conductores'
PRINT*, '3. Solenoides'
PRINT*, '4+. Salir'
READ(*,*) x
IF (x.EQ.1) THEN
PRINT*, 'Dame la carga de la particula (Columb) '
READ(*,*) q
PRINT*, 'Dame la velocidad de la particula (Metros x seg.)'
READ(*,*) v
PRINT*, 'Dame la magnitud del campo magnetico (Teslas) '
READ(*,*) b
PRINT*, 'Dame el angulo de los vectores V X B (grados)'
READ(*,*) o
theta = ( o * 3.14159 ) / 180
fb = abs(q)*v*b*sin(theta)
PRINT*, 'La fueza magnetica para esta particula es',fb,'N'
ENDIF
IF (x.EQ.2) THEN
PRINT*, 'Dame la intensidad de la corriente (Amperes)'
READ(*,*) i
PRINT*, 'Dame la longitud del conductor (metros)'
READ(*,*) l
PRINT*, 'Dame la magnitud del campo magnetico (Teslas)'
READ(*,*) b
PRINT*, 'Dame el angulo de los vectores I X B (Grados)'
READ(*,*) o
theta = ( o * 3.14159 ) / 180
fb = i*l*b*sin(theta)
PRINT*, 'La fuerza magnetica para este conductor es',fb,'N'
ENDIF
IF (x.EQ.3) THEN
PRINT*, 'Dame el numero de vueltas del solenoide'
READ(*,*) n
PRINT*, 'Dame la intensidad de la corriente (Amperes)'
READ(*,*) i
PRINT*, 'Dame el area del solenoide (metros cuadrados)'
READ(*,*) a
PRINT*, 'Dame la magnitud del campo magnetico (Teslas)'
READ(*,*) b
PRINT*, 'Dame el angulo de los vectores V X B (Grados)'
READ(*,*) o
theta = ( o * 3.14159 ) / 180
fb = n*i*a*b*(sin(theta))
PRINT*, 'La fuerza magnetica para este solenoide es',fb,'N'
ENDIF
IF (x.GT.3) THEN
PRINT*, 'Saliendo . . . . .'
ENDIF
STOP
END


EJECUCION


DESCARGA: fisica.f



SALUDOS!!! ^_^

No hay comentarios:

Publicar un comentario