Diagrama de Flujo
Un diagrama de flujo representa la esquematización gráfica de un algoritmo. En realidad muestra gráficamente los pasos o procesos a seguir para alcanzar la solución de un problema. Su correcta construcción es sumamente importante porque a partir del mismo se escribe un programa en algún lenguaje de programación. Si el diagrama de flujo está completo y correcto, el paso del mismo a un lenguaje de programación es relativamente simple y sencillo.
Un diagrama de flujo debe ilustrar gráficamente los pasos o procesos a seguir para alcanzar la solución de un problema. Los símbolos presentados, colocados adecuadamente, permiten crear una estructura gráfica flexible que ilustra los pasos a seguir para alcanzar un resultado específico. El diagrama de flujo facilitará más tarde la escritura del programa en algún lenguaje de programación.
Símbolo | Descripción |
---|---|
Símbolo utilizado para marcar el inicio y el fin del diagrama de flujo. |
|
Símbolo utilizado para introducir los datos de entrada. Expresa lectura. |
|
Símbolo utilizado para representar un proceso. En su interior se expresan asignaciones, operaciones aritméticas, cambios de valor de celdas en memoria, etc. |
|
Símbolo utilizado para representar una decisión. En su interior se almacena una condición, y dependiendo del resultado de la misma se sigue por una de las ramas o caminos alternativos. Este símbolo se utiliza en la estructura selectiva si entonces y en las estructuras repetitivas repetir y mientras. |
|
Símbolo utilizado para representar la estructura selectiva doble si entonces/sino. En su interior se almacena una condición. Si el resultado es verdadero se continúa por el camino de la izquierda, y si es falso por el camino de la derecha. |
|
Símbolo utilizado para representar una decisión múltiple. En su interior se almacena un selector, y dependiendo del valor de dicho selector se sigue por una de las ramas o caminos alternativos. Este símbolo se utiliza en la estructura selectiva si múltiple. |
|
Símbolo utilizado para representar la impresión de un resultado. Expresa escritura. |
|
Símbolos utilizados para expresar la dirección del flujo del diagrama. |
|
Símbolo utilizado para expresar conexión dentro de una misma página. |
|
Símbolo utilizado para expresar conexión entre páginas diferentes. |
|
Símbolo utilizado para expresar un módulo de un problema. En realidad expresa que para continuar con el flujo normal del diagrama deberemos primero resolver el subproblema que enuncia su interior. |
Reglas para armar un diagrama de flujo:
- Todo diagrama de flujo debe tener un inicio y un fin.
- Las líneas utilizadas para indicar la dirección del flujo del diagrama deben ser rectas verticales y horizontales.
- Todas las líneas utilizadas para indicar la dirección del flujo del diagrama deben estar conectadas. La conexión puede ser a un símbolo que exprese lectura, proceso, decisión, impresión, conexión o fin de diagrama.
- El diagrama de flujo debe ser construido de arriba hacia abajo y de izquierda a derecha.
- La notación utilizada en el diagrama de flujo debe ser independiente del lenguaje de programación. La solución presentada en el diagrama puede escribirse posterior y fácilmente en algún lenguaje de programación.
- Es conveniente cuando realizamos una tarea compleja poner comentarios que expresen o ayuden a entender lo que hicimos.
- Si el diagrama de flujo requiriera más de una hoja para su construcción, debemos utilizar los conectores adecuados y numerar las páginas.
- No puede llegar más de una línea a un símbolo.
Ejercicios
Ejercicio 1. Realice el diagrama de flujo de un algoritmo que convierta su edad en segundos. El algoritmo debe recibir como datos de entrada los años, meses y días de su edad y calcular la cantidad de segundos que usted haya vivido.
Ejercicio 2. Realice el diagrama de flujo de un algoritmo que calcule la distancia entre dos puntos, tomando como datos de entrada las coordenadas de los puntos P1 y P2.
Ejercicio 3. Realizar el diagrama de flujo de un algoritmo que calcule el promedio de las 5 calificaciones de un alumno.
Ejercicio 4. Realizar un diagrama de flujo del algoritmo que resuelve una ecuación de segundo grado mediante la fórmula general.
Estructura Condicional
Las estructuras lógicas selectivas se encuentran en la solución algorítmica de casi todo tipo de problemas. Las utilizamos cuando en el desarrollo de la solución de un problema debemos tomar una decisión, para establecer un proceso o señalar un camino alternativo a seguir.
Esta toma de decisión se basa en la evaluación de una o más condiciones que nos señalarán como alternativa o consecuencia, la rama a seguir.
Hay situaciones en las que la toma de decisiones se realiza en cascada. Es decir, se toma una decisión, se marca la rama correspondiente a seguir, se vuelve a tomar otra decisión y así sucesivamente. Por lo que para alcanzar la solución de un problema o subproblema debemos aplicar prácticamente un árbol de decisión.
La estructura si entonces
permite que el flujo del diagrama siga un camino específico si se cumple una condición o un conjunto
de condiciones. Si al evaluar la condición el resultado es verdadero se ejecuta(n) cierta(s) operación(es). Esta estructura se dice que
es binaria dado que solo tiene dos posibles respuestas: si
o no
.
Ejercicio
Ejercicio 5. Realizar un diagrama de flujo de un algoritmo que solicite un número al usuario y determine si este número es positivo, negativo o cero.
Estructura Condicional Múltiple
La estructura selectiva permite que el flujo del diagrama se bifurque por varias ramas en el punto de la toma de decisión(es), esto en función del valor que tome el selector. El selector múltiple, a diferencia del selector simple, no es binario sino que tiene 3 o más posibles ramas para la decisión.
Este tipo de selector permite elegir entre un número determinado de posibilidades, un número discreto (finito) de ellas. Por esta razón es que si se necesita evaluar un conjunto contínuo (infinito) de posibles valores, este tipo de selector no es apropiado para ello.
Ejericio
Ejercicio 6. Realice un diagrama de flujo que solicite dos números cualesquiera, luego debe pedirse un número que seleccionará alguna operación aritmética. Si introduce 1 los números se deben sumar, si introduce 2 los números se deben restar, si es 3 los números se multiplican y si introduce 4 los números se dividen. Independientemente de la selección, imprima el resultado.
Estructuras Algorítmicas Repetitivas
En la construcción de algoritmos para resolver un problema específico es muy común encontrarse con la necesidad de repetir alguna operación
para la realización de esa tarea. En dicha repetición, que a partir de ahora llamaremos iteración
, puede ser necesario resolver
alguna(s) operación(es) aritmética(s) o la evaluación de alguna decisión. En cualquier caso se necesitan de las estructuras algorítmicas repetitivas.
Todo ciclo debe terminar de ejcutarse luego de un número finito de iteraciones, por lo que es necesario verificar la(s) condición(es) en cada iteración para determinar si se debe continuar la ejecución o detenerse.
De esta forma todos los ciclos tienen estos tres elementos:
- Condición Inicial: Es el punto de partida del ciclo, debe ser una condición verdadera para que el ciclo pueda iniciar.
- Condición Final: Establece el punto final del ciclo, una vez que se cumpla la condición el ciclo deberá terminar.
- Incremento/Decremento/Cambio: Es el cambio de las variables que controlan el ciclo. El cambio puede ser un incremento, decremento o alguna otra condición.
-
Estructura Repetitiva
repetir
La estructura
repetir
conocida comúnmente comofor
, es la estructura algorítmica cuya característica principal es que se sabe de antemano el número de iteraciones que ocurrirán. Este tipo de estrcutura está presente en todos los lenguajes de programación.El diagrama de flujo de la estructura
repetir
es el siguiente:Para utilizar este ciclo se debe establecer un punto de partida, un fin y como se progresará desde el inicio al final; es decir, una condición incial, una condición final y un cambio. Como se sabe toda esta información de antemano, por lo tanto se sabe el número de iteraciones que realizará el ciclo. El control de las iteraciónes lo realiza una
variable de control
.Para comenzar el ciclo, la variable de control toma el valor establecido en la condición inicial y se evalúa contra la condición final, y si el resultado de dicha evaluación es verdadero se realiza una iteración del ciclo. Dentro del ciclo hay una o muchas operaciones que se pueden llevar a cabo, y al final de todas ellas debe ocurrir un incremento, decremento o un cambio en la variable que controla el ciclo.
Por ejemplo, considere que existe una
operación X
que necesita ser realizada 10 veces. Debemos definir la variable de control del ciclo, digamosi
. Dicha variablei
deberá contar el número de iteraciones, es decir, deberá comenzar con un valor de 1 y terminará cuando valga 10. Por lo tanto, la condición inicial esi=1
, la condición finali=10
y el cambio de la variable es un incremento en 1.El diagrama de flujo correspondiente es el siguiente:
Observe que la condición final se estableció como
i<=10
siendo quizás la manera más obviai!=10
, para entender el porque considere lo siguiente. Dado que la variablei
comienza en1
y el incremento también es en1
, todos los valores que tomará la variablei
dentro del ciclo son menores o iguales que10
, razón por la cual se establece de esa forma.Considere además que si pusieramos como condición
i!=10
el ciclo funcionaría de manera idéntica para este ejemplo, pero si por alguna razón en algún momento de la ejecución del ciclo la variablei
tomara un valor distinto a los esperados, no tendríamos forma de saberlo y esto ocasionaría que el ciclo se comportara de maneras inesperadas. Este tipo de situaciones son comunes sobre todo cuando los algoritmos son más complejos y existen más operaciones dentro del ciclo. Por esta razón es más conveniente optar por esta convención ya que nos evitará problemas en el futuro. -
Estructura Repetitiva
Mientras
La estructura
mientras
conocida comúnmente comowhile
, es la estructura algorímtica cuya característica principal es que no se sabe de antemano el número de iteraciones que ocurrirán. Esta estructura también se encuentra presente en todos los lenguajes de programación.El diagrama de flujo de la estructura
mientras
es el siguiente:Para utilizar este ciclo se debe establecer un punto de partida y un final; es decir, una condición incial y una condición final. El control de las iteraciónes lo realiza una
variable de control
. Para comenzar el ciclo la variable de control toma el valor de la condición inicial y en cada iteración se evalúa esta variable de control contra la condición final. El ciclo realizará iteraciones mientras tal evaluación sea verdadera.A diferencia de
repetir
, en el ciclomientras
no se sabe necesariamente con exactitud como cambia la variable de control, lo que si se debe saber con precisión es donde comienza el ciclo y donde termina. Por lo tanto, como no se sabe toda esa información, tampoco se sabe el número de iteraciones que realizará el ciclo.
Ejericios
Ejercicio 7. Realice un diagrama de flujo del algoritmo que suma los primeros 100 números enteros.
Ejercicio 8. Construya un diagrama de flujo de un algoritmo que solicita números al usuario y haga la suma de todos ellos. El algoritmo debe solicitar números siempre y cuando el número ingresado sea positivo, si el usuario ingresa un número no positivo el algoritmo debe terminar e imprimir la suma de los números positivos.