Sei sulla pagina 1di 12

Estructuras de Control - Diagrama de Flujo

Estructuras de Control - Diagrama de Flujo

Programación Estructurada
Una estructura se define como un esquema con cierta distribución y orden que permite
representar una idea de forma simplificada.

La programación estructurada promueve diseñar y codificar de acuerdo a las siguientes reglas:

 Se codifica utilizando tres estructuras bá sicas de control bá sicas: secuencial,
condicional y repetitiva.

 Diseño modular.

 Los módulos son diseñados de modo descendente (Top-Down).

El termino programación estructurada hace referencia a un conjunto de técnicas que aumentan


considerablemente la productividad del programa reduciendo significativamente el tiempo
necesario para escribir, verificar, depurar y mantener los programas. Al utilizar un número
limitado de estructuras de control se minimiza la complejidad de los programas y por
consiguiente se reducen los errores.

La vision clásica de la programación estructurada se refiere al control de ejecución, aspecto


fundamental a tener en cuenta al diseñar y codificar un programa en un lenguaje de alto nivel.
La regla general establece que las instrucciones se ejecuten sucesivamente una tras otra,
algunas de ellas se ejecutan o no dependiendo de que se cumpla alguna condicio´n y otras
instrucciones (los bucles) deben ejecutarse varias veces, ya sea en número fijo o hasta que se
cumpla una condición determinada. Algunos lenguajes de programación más antiguos se
apoyaban en una sola instrucción para modificar la secuencia de ejecución de las instrucciones:
la instrucción goto, del ingles “go to”que significa ir a, la cual provocaba una transferencia
incondicional del control a alguna sentencia en particular. Estas transferencias arbitrarias del
flujo de la ejecución hacen los programas muy poco legibles y difíciles de comprender. A finales
de los años sesenta, surgió una nueva forma de programar que reduce a la mínima expression o
elimina el uso de la instrucción goto y la sustituye por otras más comprensibles.

Esta metodología de programar se basa en un famoso teorema, desarrollado por Edsger


Dijkstra, que demuestra que todo programa puede escribirse utilizando u´nicamente tres
estructuras básicas de control: la secuencia, el condicional y la repetición o iteración.

Estructuras de Control Básicas

Una estructura de control tiene un ú nico punto de entrada y un único punto de salida y se
compone de sentencias o de otras estructuras de control. Las estructuras bá sicas son:

 Secuencial: Es aquella que ejecuta las acciones sucesivamente, una a continuación de


otra sin posibilidad de omitir ninguna, y naturalmente, sin bifurcaciones. Es la más
sencilla de todas las estructuras, simplemente le 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 una acción a
continuación de la otra o, en algunos casos, se utiliza un operador al final de cada
sentencia.
Estructuras de Control - Diagrama de Flujo

Estructura secuencial

Pseudocódigo de un algoritmo que calcule la media de tres números:

Leer (n1);
Leer (n2);
Leer (n3);
suma = n1 + n2 + n3;
media = suma / 3;
escribir (media);

El orden en el que se realizan las operaciones es importante: no puede calcularse la media


sin antes haber leído los números.

 Condicional o Alternativa (si, si no): La estructura alternativa permite bifurcar el


“flujo”del algoritmo en función de una expresión lógica. Se utilizan cuando en el
desarrollo de la soluciónn de un problema se debe tomar una decisión para establecer un
proceso o un camino alternativo a seguir. Esta toma de decisió n se basa en la
evaluación de una o má s condiciones que señalan alternativas o consecuencias, es
decir, el camino (rama) a seguir.

Estructura selectiva o condicional

El formato de esta estructura es el siguiente:

si (se cumple la condición)


inicio
conjunto de acciones;
fin sino
inicio
conjunto de acciones;
fin

Es decir, primero se examina la condición: si resulta verdadera, se ejecutan


las acciones asociadas al si, en caso contrario se ejecutan las acciones asociadas
al sino.

La instrucción si no no es obligatoria en una estructura condicional (si no


queremos hacer nada en caso que la condición sea falsa).
Estructuras de Control - Diagrama de Flujo

Algoritmo que calcula la media de 3 nº y devuelve su raíz cuadrada.


Leer (n1);
Leer (n2);
Leer (n3);
suma = n1 + n2 + n3;
media = suma / 3; Antes de hallar la raíz cuadrada hay que ver
si (media >= 0) que la media no es negativa:
inicio
Raíz = raíz Cuadrada (media);
escribir (raíz);
fin
si no
escribir ("No se puede hallar la raíz cuadrada");
La estructura condicional permite anidar unas instrucciones en otras. Supongamos que
queremos calcular la nota media de la siguiente forma:
 Si teoría >= 5 y practica < 5: media = 0.4 x teoría + 0.6 x práctica
 Si practica >= 5 y teoría < 5: media = 0.6 x teoría + 0.4 x práctica
En cualquier otro caso se calculara su media normalmente.
Leer (teoría); Leer (practica); Otra posible solución sería:
si (teoría >= 5) Leer (teoría); Leer (practica);
inicio media = (teoría + practica) / 2;
si (practica < 5) si (teoría >= 5)
media = 0.4 * teoría + 0.6 * practica; inicio
si no si (practica < 5)
media = (teoría + practica) / 2; inicio
fin media = 0.4 * teoría + 0.6 * practica;
si no fin
inicio fin
si (practica >= 5) si no
media = 0.6 * teoría + 0.4 * practica; inicio
si no si (practica >= 5)
media = (teoría + practica) / 2; media = 0.6 * teoría + 0.4 * practica;
fin fin
escribir("La media es ", media); escribir("La media es ", media);
Estructuras de Control - Diagrama de Flujo

Otra forma de resolverlo es usando el operador y en las condiciones. Este


operador permite combinar dos condiciones de manera que solo será verdad si
ambas condiciones se cumplen:

Leer (teoría); Leer (practica);


si (teoría >= 5 y practica < 5)
media = 0.4 * teoría + 0.6 * practica;
si no
inicio
si (practica >= 5 y teoría < 5)
media = 0.6 * teoría + 0.4 * practica;
si no
media = (teoría + practica) / 2;
fin
escribir("La media es ", media);

Además del operador y también existe el operador o el cual permite ejecutar una acción
determinada si se verifica una de las condiciones.

Leer (edad); Leer (edad);


si (edad < 16 o edad >= 65) escribir("No
si (edad >= 16 y edad < 65)
puedes trabajar");
escribir("Puedes trabajar");
si no
escribir("Puedes trabajar"); si no
escribir("No Puedes trabajar");

Es decir, solo trabajan los que tengan 16 o más años y menos de 65.

 Repetición o Iteración (mientras, repetir, para): La estructura repetitiva o iterativa


permite, como su nombre lo indica, repetir una acció n (o grupo de acciones) un
nú mero prefijado de veces o depender de la evaluación de una expresió n ló gica.
El formato de esta estructura es el siguiente:

mientras (se cumpla la condición)


inicio
conjunto de acciones;
fin
Estructuras de Control - Diagrama de Flujo

Es decir, primero se examina la condición: si resulta falsa, se pasa directamente a la


instrucción que haya tras el fin, de manera que nos saltamos todas las instrucciones
que haya dentro del bucle.
Estructura repetir … mientras

Esta estructura evalúa la condición una vez realizada la acción. Por tanto, las
instrucciones que están dentro se ejecutan al menos una vez.
El formato de esta estructura es el siguiente:

repetir
inicio
conjunto de acciones;
fin
mientras (se cumpla la condición);

Ej: algoritmo que lee por teclado unos números (hasta que
introduzcamos un número negativo) y calcula su media.

suma = 0; n = 0;
escribir("Dame un nº no negativo"); leer (numero);
mientras (numero >= 0)
inicio
suma = suma + numero;
n = n + 1;
escribir("Dame un nº no negativo"); leer (numero);
fin
si (n > 0)
inicio
media = suma / n;
escribir("La media es ", media);
fin
si no
escribir ("La media es 0");
Estructuras de Control - Diagrama de Flujo

Ej: Algoritmo anterior usando el repetir

suma = 0; n = 0;
repetir
inicio
escribir("Dame un nº no negativo"); leer (numero);
si (numero >= 0)
inicio
suma = suma + numero;
n = n + 1;
fin
fin
mientras (numero >= 0);
si (n > 0)
inicio
media = suma / n;
escribir("La media es ", media);
fin
si no
escribir("La media es 0");

Estructura para
Permite realizar una acción un número determinado de veces. El
formato de esta estructura es el siguiente:

para variable de inicio a fin


inicio
conjunto de acciones;

fin

En cada iteración del bucle variable va tomando distintos valores comprendidos


entre inicio y fin. En la primera iteración toma el valor inicio, en la segunda
inicio+1, y así sucesivamente hasta el valor fin.
Estructuras de Control - Diagrama de Flujo

Ej: Algoritmo que pide 20 números por teclado y calcula su media.

suma = 0;
para n de 1 a 20
inicio
escribir("Introduzca nº", n); leer (numero);
suma = suma + numero;
fin
media = suma / (n-1); escribir("La
media es ", media);

Restamos 1 a n ya que se sale del bucle para cuando la variable n sobrepasa


el valor 20.
La estructura para puede sustituirse por mientras o por repetir:

suma = 0;
n = 0;
mientras (n < 20)
inicio
escribir("Introduzca nº", n+1); leer (numero);
suma = suma + numero;
n = n + 1;
fin
media = suma / n;
escribir(" La media es ", media);
Estructuras de Control - Diagrama de Flujo

¿Cual de las tres variantes usar ante un determinado problema?:


si (el bucle tiene que ejecutarse un numero fijo de veces) Utilizar
la estructura para;
si no
inicio
si (el bucle debe ejecutarse como mínimo una vez) Utilizar la
estructura repetir...mientras;
si no
Utilizar la estructura mientras;
fin

Un error muy común con las estructuras de repetición consiste en poner mal la
condición de finalización u olvidarse de incrementar el contador, dando lugar a
bucles infinitos (bucles que no acaban nunca).

suma = 0;
n = 1;
repetir
inicio Este bucle nunca finaliza ya que
leer (numero); olvidamos incrementar la variable n.
suma = suma + numero;
fin
mientras (n <= 20);
media = suma / (n-1);

suma = 0;
n = 1;
repetir
En este caso, la n siempre es menor de
inicio
20, ya que la decrementamos en vez de
leer (numero); incrementarla.
suma = suma + numero;
n = n - 1;
fin
mientras (n <= 20);
media = suma / (n-1);
Estructuras de Control - Diagrama de Flujo

Ej: Calcular la media de una serie de nº positivos dados por teclado. Un valor de 0,
como entrada, indicará el final de la serie de números.

Pseudocódigo

contador = 0;
suma = 0; leer(numero);
mientras (numero <> 0)
inicio
suma = suma + numero;
contador = contador + 1;
leer(numero);
fin
si (contador <> 0)
media = suma / contador;
sino
media = 0;
escribir(media);

Ej: Calcular la suma de los N primeros números impares, siendo N un nº dado por
teclado.

suma= 0;
suma = 0; impar = 1;
c = 1;
impar = 1; leer (n);
leer (n); para c de 1 a n

mientras (c <= n) inicio


suma = suma + impar; impar =
inicio
suma = suma + impar; impar = impar + 2;
impar + 2; fin
escribir(suma);

c = c + 1;
fin
escribir (suma);
Estructuras de Control - Diagrama de Flujo

Lenguajes Algorítmicos
En esta instancia el objeto de estudio se basa en los mé todos de resolución de
problemas, es decir, los algoritmos y no los programas, o sea, sus implementaciones
concretas usando diferentes lenguajes de programación. El desarrollo de algoritmos es
un tema fundamental e importante en el diseño de programas, aplicaciones de
cómputo y soluciones informá ticas.

Los algoritmos pueden describirse, en mayor o menor detalle, utilizando diversos


lenguajes: Lenguajes Algorítmicos. Consisten de una serie de símbolos y reglas que se
utilizan para especificar un proceso en forma precisa. Considerando la forma en que
describen un proceso, se pueden categorizar en:

 Lenguaje Gráfico: Es la representación grá fica de las operaciones que realiza


un algoritmo (diagrama de flujo).

 Lenguaje No Gráfico: Representa en forma descriptiva las operaciones que


debe realizar un algoritmo. Son lenguajes algorı́tmicos: Lenguaje Natural,
Diagrama de Flujo, Lenguaje de Programación de Algoritmos.

Diagrama de Flujo
Toda representació n grá fica, de cualquier tipo que sea, se caracteriza por:

Sencillez. Un método gráfico de diseño de algoritmo debe permitir la construcción de


estos de manera fácil y sencilla.

Claridad. Cuando un algoritmo es representado por un mé todo grá fico debe estar lo
suficientemente claro para un fá cil reconocimiento de todos los elementos por parte de
otra persona distinta de la que lo diseñ ó.

Normalización. Tanto los diseñadores de programas como los usuarios que necesitan
la documentación de estos deben reconocer y utilizar las mismas normas de
documentació n.

Flexibilidad. Todo mé todo grá fico de representación debe permitir, sin grandes
dificultades, posteriores modificaciones de algunas partes de un algoritmo y la inserció n
de alguna nueva.

Un diagrama de flujo es la representación gráfica de un algoritmo. Es la representación


detallada en forma gráfica de cómo debe realizar los pasos, por ejemplo, una computadora
para producir resultados. Esta representación gráfica se da cuando varios símbolos (que
indican diferentes procesos), se relacionan entre si mediante líneas que indican el
orden en que se deben ejecutar los procesos. Los símbolos utilizados han sido
normalizados por el Instituto Norteamericano de Normalización (ANSI):

Figura 1: Simbología de Diagramas de Flujo


Estructuras de Control - Diagrama de Flujo

El diagrama de flujo goza de ventajas como el ser altamente intuitivo, fácil de leer, claro y
preciso. Representa una herramienta muy potente de cara a comenzar a programar ya
que su contenido gráfico lo hace menos a´rido que el algoritmo expresado en lenguaje
natural (pseudocódigo). Las limitaciones principales de los diagramas de flujo derivan
precisamente de su carácter de dibujo. No resultan tan fáciles de crear o de mantener
como el texto del pseudoco´ digo. Un diagrama de flujo tiene un u´ nico punto de entrada
y un u´ nico punto de salida y la simbolog´ıa para representar a las diferentes estructuras
de control es:

 Secuencia

Figura 2: Representación de la Secuenci

 Selección

Figura 3: Representación de la Selecció n

 Iteración o Repetició n

Figura 4: Representación de la Iteración


Estructuras de Control - Diagrama de Flujo

BIBLIOGRAFÍA:

dirinfo.unsl.edu.ar/servicios/abm/assets/.../71f05estructura_de_control_y_df.pdf

www.uhu.es/04004/material/Transparencias2.pdf

Potrebbero piacerti anche