Programación Para Newbies: Fortran 3: Estructuras de Control Condicionales

Antes de empezar con lo nuevo, vamos a empezar con un pequeño repaso de lo que ya deberíamos haber aprendido.

Nuestros programas ya deben hacer tareas básicas como sumar, restar, multiplicar, mostrar textos, todo de manera secuencial, un claro ejemplo de esto es el ya conocido ¡Hola Mundo!, que ya explicamos, por si olvidaron como se hacía, aquí está el código fuente:

program hola
print*,'¡Hola Mundo!'
end program hola

o también nos pueden saludar:

program saludo
character*10::nombre
print*,'Ingrese por teclado su nombre:'
read*,nombre
print*,'Hola ',nombre
end program

¿notaron que después del tipo de la variable nombre va un * seguido del número 10? eso es para denotar que las variables del tipo character declaradas en esta línea tienen un largo de 10 caracteres, si este indicador se omite se considera que la cadena de texto es de largo 1. Y así combinando las distintas sentencias y variables, podemos crear programas sencillos con distintas finalidades, ¿pero que pasa si queremos que el programa ejecute distintas opciones dependiendo de lo que pase con las variables?

Para eso existen las estructuras de control condicionales, el if y el case, muy distintas entre si. El nombre estructuras de control designa a distintos bucles en la programación que permiten modificar como se ejecuta el programa, dependiendo de las condiciones u orden de repetición que se le indique al programa.

Estas funcionan de la siguiente manera, se activan cuando la condición que se les impone resulta ser verdadera, en caso contrario, se ejecuta una alternativa o se sigue adelante con el resto del programa.

Empecemos por la principal y más simple, el if:

if significa “si es que”, por lo tanto es bien intuitivo su uso; analiza una expresión, si resulta ser verdadera, entonces ejecuta este curso de acciones, en caso contrario, este otro curso. La sintaxis más básica para esta estructura es la siguiente:

if (condición) then
lo que queremos que ocurra
end if

Donde dice condición, va una sentencia lógica, esta debe ir siempre entre paréntesis. La forma más simple de mostrar esto es con un ejemplo e ir explicándolo:

program ejemplo_if
integer::seleccion
character*10::nombre
print*,'¿es tu nombre Pablo?  [1=si, 2=no]'
read*,seleccion
if (seleccion==1) then
print*,'¡Hola Pablo!'
end if
if (seleccion==2) then
print*,'bah, ¿Cuál es tu nombre?'
read*,nombre
print*,'¡Hola ',nombre,'!'
end if
end program

Este simple programa nos pregunta si nuestro nombre es Pablo, si le respondemos que no, entonces nos pregunta cual es nuestro nombre y después nos saluda.El == es el operador logico de equivalencia, aquí quiere decir si seleccion es igual a 1 o a 2 se ejecuten las distintas secuencias. También existe una opción para los entornos if, el else, este ejecuta una serie de acciones que nosotros determinamos si es que la condición original es falsa. Este va así:

if (condición) then
lo que queremos que ocurra si la condición es verdadera
else
lo que queremos que ocurra en caso contrario

end if

usando el mismo ejemplo anterior:

program ejemplo_if
integer::seleccion
character*10::nombre
print*,'¿es tu nombre Pablo?  [1=si, cualquier otro valor entero=no]'
read*,seleccion
if (seleccion==1) then
print*,'¡Hola Pablo!'
else
print*,'bah, ¿Cuál es tu nombre?'
read*,nombre
print*,'¡Hola ',nombre,'!'
end if
end program

reduce mucho el código.

Si queremos realizar distintas acciones dependiendo de lo que se de en el programa, podemos anidar varios if’s dentro de otros, o también podemos usar la estructura case, la sintaxis de esta es un poco distinta pero igual es simple:

select case (variable a analizar)
case (valor1)
acciones a ejecutarse si la variable toma el valor1
case (valor2)
acciones a ejecutarse si la variable toma el valor2
... así cuantas acciones queramos
case default
acciones que se ejecutan en caso de que la variable no haya tomado ninguno de los valores antes especificados
end select

Tiene una trampa eso si, no se pueden usar variables del tipo real o complex para analizar con un case, deben ser o integer, o logical o character. Aquí tienen un ejemplo:

PRINT*,'¿Desea seguir analizando el polinomio dado? [1=Si, 2=No].'
READ*,n
SELECT CASE (n)
CASE (1)
PRINT*,'OK, sigo trabajando.'
flag3=.FALSE.
CASE (2)
PRINT*,'OK, nos vemos :D'
flag4=.FALSE.
flag3=.FALSE.
CASE default
PRINT*,'¡ERROR!, ha ingresado un valor no válido.'
flag3=.TRUE.
END SELECT

Aquí n es una variable entera. No les puedo dejar el programa completo ya que es muy extenso (créanme, muy extenso) y usa muchas cosas que todavía no les muestro.

Para la próxima vez veremos otras estructuras, las repetitivas.

One thought on “Programación Para Newbies: Fortran 3: Estructuras de Control Condicionales

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s