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!!! ^_^

1 comentario: