Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Estructuras de control
Introduccin
Los algoritmos vistos hasta el momento han consistido en simples secuencias de instrucciones; sin embargo, existen tareas ms complejas que no pueden ser resueltas empleando un esquema tan sencillo, en ocasiones es necesario repetir una misma accin un nmero determinado de veces o evaluar una expresin y realizar acciones diferentes en base al resultado de dicha evaluacin. Para resolver estas situaciones existen las denominadas estructuras de control que poseen las siguientes caractersticas: Una estructura de control tiene un nico punto de entrada y un nico punto de salida. Una estructura de control se compone de sentencias o de otras estructuras de control.
Tales caractersticas permiten desarrollar de forma muy flexible todo tipo de algoritmos an cuando slo existen tres tipos fundamentales de estructuras de control: Secuencial. Alternativa. Repetitiva.
A lo largo de esta leccin se presentarn las distintas estructuras de control, la forma de representarlas en la notacin algortmica y las correspondientes sentencias FORTRAN para poder utilizarlas en nuestros programas.
Estructura secuencial
La estructura secuencial es la ms sencilla de todas, simplemente indica al procesador que debe ejecutar de forma consecutiva una lista de acciones (que pueden ser, a su vez, otras estructuras de control); para construir una secuencia de acciones basta con escribir cada accin en una linea diferente. A continuacin se muestra una composicin secuencial de acciones en notacin algortmica y su equivalente FORTRAN.
leer a leer b c ! a + b escribir c read *, a read *, b c = a + b print *, c Punto de entrada
Accin 1
Accin 2 ...
Existe una forma alternativa de expresar una estructura secuencial escribiendo varias acciones en la misma lnea pero utilizando el punto y coma, ;, como separador. Sin embargo, esta ltima notacin es desaconsejable puesto que puede llegar a hacer el cdigo bastante difcil de leer.
leer a; leer b c ! a + b; escribir c read *, a; read *, b c = a + b; print *, c
Accin n
Por ltimo, es necesario sealar un aspecto importante de la composicin secuencial y es que no es conmutativa.
Punto de salida
Estructura alternativa
La estructura alternativa permite bifurcar el flujo del programa en funcin de una expresin lgica; disponemos de tres estructuras alternativas diferentes: alternativa simple, alternativa doble y alternativa mltiple.
Punto de entrada
VERDADERO
Expresin lgica
FALSO
Accin
Punto de salida
Punto de entrada
VERDADERO
Expresin lgica
FALSO
Accin
Accin
Punto de salida
En el siguiente ejemplo se calcula la longitud de una circunferencia si el radio es positivo no nulo y, en caso contrario, se proporciona un mensaje de error:
Estructura multialternativa
Esta estructura evala una expresin que pueda tomar n valores (enteros, caracteres y lgicos pero nunca reales) y ejecuta una accin o grupo de acciones diferente en funcin del valor tomado por la expresin selectora. La sintaxis de esta estructura es la siguiente:
segun expresin caso valor1: accin 1 caso valor2: accin 2 ... caso valorN: accin n otro caso: accin fin segn select case (expresin) case (valor1) accin 1 case (valor2) accin 2 ... case (valorn) accin n case default accin end select
Punto de entrada
Expresin selectora
Valor 1 Valor 2 Valor N Resto valores
Accin 1
Accin 2
...
Accin N
Accin
Punto de salida
Estructura repetitiva
La estructura repetitiva o iterativa permite, como su propio nombre indica, repetir una accin (o grupo de acciones); dicha repeticin puede llevarse a cabo un nmero prefijado de veces o depender de la evaluacin de una expresin lgica. Existen tres tipos de estructuras repetitivas: desde-hasta, mientras y repetir-hasta.
Estructura desde-hasta
Esta estructura permite repetir la ejecucin de una accin o de un grupo de acciones un nmero determinado de veces; la sintxis es la siguiente:
desde indice!inicio hasta fin [con paso valor] hacer accin fin desde do indice=inicio, fin, paso accin end do
El funcionamiento de la estructura es el siguiente: En primer lugar, se asigna a la variable indice el valor de inicio. El bucle se ejecuta mientras indice no alcance el valor de fin. En cada iteracin el valor de indice es incrementado segn el paso indicado y se ejecuta la accin o grupo de acciones encerrados en el bucle. En caso de que no se indique ningn paso el que se emplear sera +1.
El bucle anterior no se ejecuta nunca puesto que no se puede alcanzar 1 comenzando en 10 y avanzando con paso +1; atencin! Un error frecuente es pensar que el bucle se ejecuta de forma infinita.
desde n!10 hasta 1 con paso 2 hacer escribir n fin desde do n=10, 1, -2 print *, n end do
Estructura mientras
Esta estructura repite una accin o grupo de acciones mientras una expresin lgica sea cierta; la sintxis en la notacin algortmica y en FORTRAN es la siguiente:
mientras expresin lgica hacer accin fin desde do while (expresin lgica) accin end do
Punto de entrada
VERDADERO
Expresin lgica
FALSO
Un aspecto muy importante de la presente estructura de control es que si la expresin lgica es inicialmente falsa el bucle no se ejecuta ni una sola vez; es decir, la estructura mientras supone que el bucle iterar 0 ms veces. A continuacin se muestra un ejemplo que solicita al usuario el radio de una circunferencia mientras el radio introducido sea incorrecto:
mientras radio<0 hacer escribir Radio? leer radio fin desde do while (radio<0) print *, Radio? read *, radio end do
Accin
Punto de salida
Estructura repetir-hasta
Esta estructura repite una accin o grupo de acciones hasta que una expresin lgica sea cierta; la sintxis en la notacin algortmica es la siguiente (no existe equivalente en FORTRAN pero s en otros lenguajes de programacin):
repetir accin hasta expresin lgica
Un aspecto muy importante de la presente estructura de control es que la expresin lgica no se evala hasta el final con lo cual el bucle se ejecuta al menos una vez por contraposicin a la estructura anterior que poda no ejecutarse ninguna.
Punto de entrada
Accin
Expresin lgica
VERDADERO
FALSO
Punto de salida
Resumen
1. 2. Las estructuras de control permiten alterar el flujo secuencial de los algoritmos que hemos visto hasta el momento. Una estructura de control: 3. 4. 5. Tiene un nico punto de entrada y un nico punto de salida. Se compone de sentencias o de otras estructuras de control. Secuencial. Alternativa. Repetitiva.
La estructura secuencial es una lista consecutiva de acciones donde el orden de aparicin indica el orden de ejecucin. La estructura alternativa se presenta en tres formas: Simple. Doble. Multialternativa.
6. 7. 8.
La estructura alternativa simple permite evaluar una expresin lgica y ejecutar una accin si dicha expresin es cierta. La estructura alternativa doble permite evaluar una expresin lgica y ejecutar una accin si dicha expresin es cierta y otra accin si dicha expresin es falsa. La estructura multialternativa consiste en una expresin selectora que puede tomar n valores diferentes y ejecuta una accin diferente por cada posible valor de la expresin selectora.
9.
La estructura repetitiva se presenta en tres formas: Estructura desde-hasta Estructura mientras Estructura repetir-hasta
10. La estructura desde-hasta permite repetir la ejecucin de una accin un nmero determinado de veces. 11. La estructura mientras repite una accin mientras una expresin lgica sea cierta; esta estructura puede ejecutarse 0 ms veces. 12. La estructura repetir-hasta repite una accin hasta que una expresin lgica sea cierta; esta estructura siempres se ejecuta 1 vez al menos y no existe en el lenguaje FORTRAN aunque aparece en otros lenguajes de programacin.
Punto de entrada
Punto de entrada
Punto de entrada
Accin 1
VERDADERO
Expresin lgica
FALSO
VERDADERO
Expresin lgica
FALSO
Accin 2 ...
Accin
Accin
Accin
Accin n
Punto de salida
Punto de salida
Punto de salida
Estructura secuencial
Punto de entrada
Punto de entrada
Punto de entrada
Expresin selectora
Valor 1 Valor 2 Valor N Resto valores
VERDADERO
Expresin lgica
FALSO
Accin
Accin 1
Accin 2
...
Accin N
Accin
Accin
Expresin lgica
VERDADERO
FALSO
Punto de salida
Punto de salida
Punto de salida
Estructura mientras
Estructura repetir-hasta