Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programación en Fortran 3
Programación en Fortran 3
MATERIA
PROGRAMACIÓN
PRESENTA
Ian Gennaro Güitrón Sagaón
DOCENTE DE LA ASIGNATURA
Alberto Vázquez Martínez
ANTECEDENTES ……………………………………………………………………..… 3
Sentencia IF …………………………………….………………………………… 3
Else IF…………………………..…………………………………………………. 4
Loop ……………………………………………………….…………………….... 4
Sentencia Do ………………………………………………………………...…… 4
Mapa Mental: Elementos de un Diagrama de Flujo ……….………………… 5
CONTENIDO ……………………………………………………………………………... 6
Quiz 1.1 …………………………………………………………………………… 6
Quiz 3.2 …………………………………………………………………………… 8
Ejercicios de Fin de Capítulo ………………………………………………….. 11
CONCLUSION ………………………………………………………………………….. 15
BIBLIOGRAFIA …………………………………………………………………………. 16
ANTECEDENTES
Mientras mas avanzamos en la elaboración de códigos de programación, más
complejo se tiende a volver el problema que buscamos resolver por medio de los
códigos, se comienzan a presentar varias posibilidades o condiciones de operación
de los problemas, o simplemente, se necesita repetir ciertas operaciones complejas
pero cambiando únicamente uno o dos valores dentro de una formula ya
establecida.
Para eso, existen las declaraciones lógicas, los ciclos o loops y las construcciones
de control; para poder facilitar la programación y tener códigos más prácticos pero
que requieran un nivel de lógica mayor.
SENTENCIA IF
Esta declaración o herramienta permite ejecutar una instrucción solo cuando una
condición se cumple; su estructura básica es la siguiente:
Si, condición verdadera
Instrucción ejecutable
Fin Si
Para lo cual se maneja la sintaxis siguiente:
IF (expresión lógica) instrucción
Sin embargo, esa es la forma simple de la sentencia if, cuando lo expresamos en
un programa de Fortran esta se divide en bloques, los cuales permiten ejecutar una
serie de instrucciones si una condición se cumple; su estructura es:
Si condición verdadera
Instrucción 1
Instrucción 2
…
Fin si
Y la sintaxis sería la siguiente:
IF (expresión lógica) THEN
Instrucción 1
Instrucción 2
…
END IF
Con respecto a la sintaxis mostrada, las instrucciones ejecutables 1 y 2 solo se
ejecutarán en Fortran si la expresión lógica es cierta. En caso de que la instrucción
sea falsa, Fortran omitirá las instrucciones y reanudará en el fin del ciclo if.
ELSE IF
Como se menciono anteriormente, la sentencia if y el bloque if solo sirven para
determinar cuándo una instrucción lógica es correcta, por lo tanto cuando se desea
especificar un procedimiento cuando una expresión lógica tiene dos o mas posibles
resultados se utiliza la declaración else if; la cual tiene una sintaxis como la
siguiente:
IF (expresión lógica) THEN
Instrucción 1
Instrucción 2
…
ELSE
Instrucción 1
Instrucción 2
…
END IF
Esto permite que en caso de no cumplirse con la declaración inicial del if, se busque
otro posible resultado con la declaración else.
LOOP
Los loops o ciclos en fortran permiten ejecutar una secuencia de declaraciones más
de una vez. Las dos formas básicas de ciclos son los WHILE y los ITERATIVO. La
mayor diferencia entre estos dos tipos de ciclos es el como se controla la repetición
de declaraciones. El código en un ciclo WHILE es repetido un cantidad indefinida
de veces mientras no se cumpla una condición especificada por el usuario; de la
forma contraria, un ciclo iterativo se repite la cantidad de veces que el usuario
decida.
CICLO DO
Una de las utilidades más importantes de un ordenador es su capacidad de hacer
cálculos a alta velocidad. Esto es especialmente importante si se han de ejecutar
las mismas operaciónes un gran número de veces. En Fortran esta tarea se realiza
con los ciclos Do iterativos en los que se cuentan el número de iteraciones que han
de realizarse. La sintaxis para la instrucción es el siguiente:
DO índice = valor_inicial, valor_final, incremento
Instrucción 1
Instrucción 2
END DO
En este ejemplo, el indice es el nombre de una variable de tipo entero, y valor_inical,
valor_final e incremento son constantes, nombres de variables o expresiones
aritméticas enteras.
Indica un
CONTENIDO
QUIZ 3.1
ESCRIBA LAS DECALRACIONES FORTRAN QUE REALICEN LAS SIGUIENTES
FUNCIONES:
1. SI X ES MAYOR O IGUAL A CERO, ENTONCES ASIGNE LA RAIZ
CUADRADA DE X A LA VARIABLE SQRT_X E IMPRIMA EL RESULTADO.
DE LO CONTRARIO, IMPRIMA UN MENSAJE DE ERROR ACERCA DEL
ARGUMENTO DE LA FUNCION DE RAIZ CUADRADA Y ESTABLES QUE
SQRT_X ES CERO.
If (x >= 0.) then
Sqrt_x = sqrt (x)
Write(*,*) ‘la raíz cuadrada de x es’, sqrt_x
Else
Write(*,*) ‘error — x < 0!’
Sqrt_x = 0
End if
QUIZ 3.2
EXAMINE LOS SIGUIENTES CICLOS DO Y DETERMINE CUANTAS VECES
CADA CICLO SERA EJECUTADO. ASUMA QUE TODOS LAS VARIABLES INDEX
MOSTRADRAS SON DE TIPO ENTERO.
1. DO index = 7, 10
El ciclo se repetirá un total de 4 veces.
2. DO j=7, 10, -1
El ciclo do no se repetirá.
3. DO index = 1, 10, 10
Solo habrá una repetición del ciclo do.
4. DO loop_counter = -2, 10, 2
El ciclo do se repetirá 7 veces.
5. DO time = -2, -10, -1
Se repetirá un total de 9 veces el ciclo do.
6. DO i = -10, -7, -3
El ciclo no se repetirá.
EXAMINE LOS SIGUIENTES CICLOS Y DETERMINE LOS VALORES EN ires AL
FINAL DE CADA UNO DE LOS CICLOS. ASUMA QUE irec, incr Y TODOS LOS
INDEX SON VARIALES DE TIPO ENTERO.
7. PRIMER CICLO
Declaración válida.
14. TERCERA DECLARACION
seguirá una ruta de vuelo parabólica. La altura de la pelota a cualquier tiempo (t)
después de que fue lanzada es dada por la siguiente ecuación:
Donde yo es la altura inicial del objeto por encima del suelo, v yo es la velocidad
vertical inicial del objeto, y g es la aceleración causada por la gravedad de la Tierra.
La distancia horizontal (rango) recorrido por la pelota como función del tiempo
después de ser arrojada es dada por la siguiente ecuación:
Donde xo es la posición horizontal inicial de la pelota en el suelo y vxo es la velocidad
horizontal inicial de la pelota.
Si la pelota es arrojada con una velocidad inicial vo a un ángulo de teta grados con
respecto a la superficie de la tierra, entonces la componente horizontal inicial y
vertical de velocidad serían las siguientes:
Asuma que la pelota es inicialmente arrojada desde la posición (x oyo) = (0,0) con
una velocidad inicial v de 20 metros por segundo y a un ángulo inicial de teta grados.
Diseñe, escriba y pruebe un programa que determine la distancia horizontal
recorrida desde el momento que fue lanzada hasta el momento que volvió al suelo.
El programa deberá calcular la distancia a todos los ángulos teta desde 0 hasta 90°
en 1° paso.
Determine el ángulo teta que maximice el mayor rango de la pelota.
CODIGO DEL PROGRAMA “BALL” MODIFICADO
program ball
implicit none
!Declaracion de variables
real :: g =-9.81
integer :: maxg
real :: maxr
real :: rango
real :: radianes
integer :: teta
real :: v0
real, parameter :: grados = 0.01745329
!Variables iniciales
maxr = 0.0
maxg = 0
!Ciclo para las velocidades
!Ciclo para todos los angulos especificados
write (*,*) ' '
write (*,*) '**************************************************************'
write (*,*) " CORRIDA UNO, VELOCIDAD INICIAL DE 10 M/S"
write (*,*) '**************************************************************'
write (*,*) ' '
do teta=0,90
v0=10
!Calcular angulo en radianes
radianes=real (teta)*grados
!Calcular el rango en metros
rango = (-2.0*v0**2/g) * sin(radianes) * cos(radianes)
!Escriba el rango por cada angulo
write (*,*) 'Teta =', teta, 'Grados; Rango =', rango, &
'metros'
!compare los rangos con el previo rango maximo. si este
!rango es mayor, guardelo al igual que el angulo en que ocurrio.
if ( rango> maxr ) then
maxr= rango
maxg= teta
end if
end do
!salte una linea, y entonces escriba el rango maximo y el angulo
!en que ocurrio.
write (*,*) ' '
write (*,*) 'Rango Maximo 1 =', maxr, ' a ',maxg,' grados'
!*************************************************************************
!*************************************************************************
!Ciclo para todos los angulos especificados
write (*,*) ' '
write (*,*) '**************************************************************'
write (*,*) " CORRIDA DOS, VELOCIDAD INICIAL DE 20 M/S"
write (*,*) '**************************************************************'
write (*,*) ' '
do teta=0,90
v0=20
!Calcular angulo en radianes
radianes=real (teta)*grados
!Calcular el rango en metros
rango = (-2.0*v0**2/g) * sin(radianes) * cos(radianes)
!Escriba el rango por cada angulo
write (*,*) 'Teta =', teta, 'Grados; Rango =', rango, &
'metros'
!compare los rangos con el previo rango maximo. si este
!rango es mayor, guardelo al igual que el angulo en que ocurrio.
if ( rango> maxr ) then
maxr= rango
maxg= teta
end if
end do
!salte una linea, y entonces escriba el rango maximo y el angulo
!en que ocurrio.
write (*,*) ' '
write (*,*) 'Rango Maximo 2 =', maxr, ' a ',maxg,' grados'
!*************************************************************************
!*************************************************************************
!Ciclo para todos los angulos especificados
write (*,*) ' '
write (*,*) '**************************************************************'
write (*,*) " CORRIDA TRES, VELOCIDAD INICIAL DE 30 M/S"
write (*,*) '**************************************************************'
write (*,*) ' '
do teta=0,90
v0=30
!Calcular angulo en radianes
radianes=real (teta)*grados
!Calcular el rango en metros
rango = (-2.0*v0**2/g) * sin(radianes) * cos(radianes)
!Escriba el rango por cada angulo
write (*,*) 'Teta =', teta, 'Grados; Rango =', rango, &
'metros'
!compare los rangos con el previo rango maximo. si este
!rango es mayor, guardelo al igual que el angulo en que ocurrio.
if ( rango> maxr ) then
maxr= rango
maxg= teta
end if
end do
!salte una linea, y entonces escriba el rango maximo y el angulo
!en que ocurrio.
write (*,*) ' '
write (*,*) 'Rango Maximo 3 =', maxr, ' a ',maxg,' grados'
stop 'Ya compilo...'
end program ball
Con base en los resultados mostrados y calculados, se puede apreciar que sin
importar la velocidad de lanzamiento de la pelota el ángulo al que la pelota alcanza
la distancia máxima es y siempre será 45 grados; sin embargo, la distancia recorrida
si se verá afectada según la velocidad con la que se arroje la pelota al aire.
CONCLUSION
Los códigos de programas tienden a ser cada vez más complejos y para ello es
importante que nosotros como programadores entendamos cual es el proceso para
poder realizar códigos complejos que contengas las funciones que mencionamos
anteriormente, sentencias lógicas y ciclos de iteraciones donde el numero de
repeticiones que se debe de establecer en base a los criterios para resolver el
problema. Nosotros como ingenieros debemos de estar listos y tener los
conocimientos necesarios para poder llevar a cabo todas estas formas de
operaciones debido a que los problemas a nivel industrial requieren de todo ese tipo
de operaciones, tanto iterativas como lógicas y haciendo uso de los compiladores y
el lenguaje Fortran estos problemas y retos en la industria serán posibles de
superar.
BIBLIOGRAFIA