- Supongamos el siguiente problema: Un cohete es lanzado desde una altura inicial HGHT0 con velocidad inicial VELOC0 y una aceleración vertical ACCEL. Entonces la altura y velocidad en el instante TIME después del lanzamiento vienen dados por las ecuaciones:
HGHT = 0.5 * ACCEL * TIME ** 2 + VELOCO * TIME + HGHT0
VELOC = ACCEL * TIME + VELOC0
- El siguiente programa asigna el valor 9.807 (m/s**2) a ACCEL, 150.0 (m) a HGHT0, 100.0 (m/s) a VELOC0 y 5.0 (sec) a TIME, calculando los valores de HGHT y VELOC:
PROGRAM PROJEC ************************************************************************ * This program calculates the velocity and height of a projectile * * given its initial height, initial velocity, and constant * * acceleration. Variables used are: * * HGHT0 : initial height * * HGHT : height at any time * * VELOC0 : initial vertical velocity * * VELOC : vertical velocity at any time * * ACCEL : vertical acceleration * * TIME : time elapsed since projectile was launched * * * * Input: none * * Output: none * ************************************************************************ REAL HGHT0, HGHT, VELOC0, VELOC, ACCEL, TIME ACCEL = -9.807 HGHT0 = 150.0 VELOC0 = 100.0 TIME = 5.0 HGHT = 0.5 * ACCEL * TIME ** 2 + VELOC0 * TIME + HGHT0 VELOC = ACCEL * TIME + VELOC0 END |
- Los valores de HGHT y VELOC son calculados como queríamos, pero son almacenados internamente y no son visualizados por el usuario. Más aun, si queremos realizar el cálculo con otra altura inicial y/o velocidad inicial, entonces hemos de reescribir el programa y volverlo a compilar y a ejecutar.
- Vamos a dar un método para visualizar la información elaborada por el programa (output) y para variar la información inicial (input) sin tener que modificar el programa cada vez.
- FORTRAN tiene dos tipos de instrucciones input/output.
- El programador debe explicitar el formato por el que los datos son leidos y/o visualizados.
- El compilador usa automáticamente ciertos formatos de lectura y escritura.
- Veamos la instrucción más sencilla para la escritura (output) con formato automático:
|
- Así, para mostrar en nuestro programa el valor de HGHT y VELOC debemos de incluir las líneas:
PROGRAM PROJEC ************************************************************************ * This program calculates the velocity and height of a projectile * * given its initial height, initial velocity, and constant * * acceleration. Variables used are: * * HGHT0 : initial height * * HGHT : height at any time * * VELOC0 : initial vertical velocity * * VELOC : vertical velocity at any time * * ACCEL : vertical acceleration * * TIME : time elapsed since projectile was launched * * * * Input: HGHT0, VELOC0, TIME * * Output: VELOC, HGHT * ************************************************************************ REAL HGHT0, HGHT, VELOC0, VELOC, ACCEL, TIME ACCEL = -9.807 READ *, HGHT0, VELOC0, TIME HGHT = 0.5 * ACCEL * TIME ** 2 + VELOC0 * TIME + HGHT0 VELOC = ACCEL * TIME + VELOC0 PRINT *, 'AT TIME ', TIME, ' THE VERTICAL VELOCITY IS ', VELOC PRINT *, 'AND THE HEIGHT IS ', HGHT END |
- La forma más sencilla de introducir en el programa los datos iniciales es mediante la instrucción read:
|
- Nuestro programa puede cambiarse para leer desde el teclado HGHT0, VELOC0 y TIME:
PROGRAM PROJEC ************************************************************************ * This program calculates the velocity and height of a projectile * * given its initial height, initial velocity, and constant * * acceleration. Variables used are: * * HGHT0 : initial height * * HGHT : height at any time * * VELOC0 : initial vertical velocity * * VELOC : vertical velocity at any time * * ACCEL : vertical acceleration * * TIME : time elapsed since projectile was launched * * * * Input: HGHT0, VELOC0, TIME * * Output: VELOC, HGHT * ************************************************************************ REAL HGHT0, HGHT, VELOC0, VELOC, ACCEL, TIME ACCEL = -9.807 READ *, HGHT0, VELOC0, TIME HGHT = 0.5 * ACCEL * TIME ** 2 + VELOC0 * TIME + HGHT0 VELOC = ACCEL * TIME + VELOC0 PRINT *, 'AT TIME ', TIME, ' THE VERTICAL VELOCITY IS ', VELOC PRINT *, 'AND THE HEIGHT IS ', HGHT END |
- Esta es una forma interactiva de operar. En este caso, cuando un READ se encuentra en el programa, la ejecución de éste se suspende hasta que el usuario entra todos los valores de las variables de la lista.
- Es una buena práctica escribir en la pantalla los valores que el programa espera leer:
PROGRAM PROJEC ************************************************************************ * This program calculates the velocity and height of a projectile * * given its initial height, initial velocity, and constant * * acceleration. Variables used are: * * HGHT0 : initial height * * HGHT : height at any time * * VELOC0 : initial vertical velocity * * VELOC : vertical velocity at any time * * ACCEL : vertical acceleration * * TIME : time elapsed since projectile was launched * * * * Input: HGHT0, VELOC0, TIME * * Output: VELOC, HGHT * ************************************************************************ REAL HGHT0, HGHT, VELOC0, VELOC, ACCEL, TIME ACCEL = -9.807 PRINT *, 'ENTER THE INITIAL HEIGHT AND VELOCITY:' READ *, HGHT0, VELOC0 PRINT *, 'ENTER TIME AT WHICH TO CALCULATE HEIGHT AND VELOCITY:' READ *, TIME HGHT = 0.5 * ACCEL * TIME ** 2 + VELOC0 * TIME + HGHT0 VELOC = ACCEL * TIME + VELOC0 PRINT *, 'AT TIME ', TIME, ' THE VERTICAL VELOCITY IS ', VELOC PRINT *, 'AND THE HEIGHT IS ', HGHT END |
Ahora ir a ejercicios y trabaja sobre todos estos aspectos.
| Programas | Variables | Operaciones Aritméticas | Input y Output | Bucles en Programas | Vectores en Programas | Decisiones | Subprogramas y funciones | |