Semana 3: Diagramas de flujo#

3.1. Diagramas de control de flujo#

Los diagramas de control flujo son las descripciones gráficas de los algoritmos. Se construyen a través de símbolos conectados con flechas, indicando la secuencia de instrucciones que debe seguir el algoritmo. Su principal ventaja es que tienen la capacidad de presentar la información con gran claridad, además de que se necesitan relativamente pocos conocimientos previos para entender los procesos y/o el objeto del modelado.

Reglas de creación de diagrama de flujos:

  • Deben escribirse de arriba hacia abajo, y/o de izquierda a derecha.

  • Se deben utilizar solamente líneas de flujo horizontales o verticales (nunca diagonales).

  • Los símbolos se unen con líneas, las cuales tienen en la punta una flecha que indica la dirección en que fluye la información de los procesos.

  • Se debe tener en cuenta que solo se van a utilizar conectores cuando sea estrictamente necesario.

  • Se debe evitar el cruce de líneas, si quiera separar el diagrama de flujo a un sitio distinto, se puede realizar utilizando los conectores.

Simbología y funciones:

Tipos de estructutas de diagramas de contros de flujo

Los diagramas de control de frujo al igual que los pseudocódigos, presenal los mismos tres tipos de estructuras:

  • Secuencial Las instrucciones se ejecutan en órden sentencia por sentencia, y presenta la siguiente estructura

  • Condicional: Para dar solución a un problema se ejecuta una secuencia de instrucciones si una condición se cumple, y otra secuencia de instrucciones si la condición no se cumple.

  • Iterativa: Se ejecutan múltiples veces una secuencia de instrucciones si una condición se cumple, cáda ciclo evalúa nuevamente éstas secuencias de intrucciones hasta que se deje de cumplir la condición establecida.

3.2. Valores y tipos de datos.#

Uno de los elementos fundamentales para la creación de un programa es el valor, el cual puede tener distintas formas conocidos cómo tipos de datos: datos de caracteres, numéricos y Booleanos.

  • Datos de caracteres: Representa aquellos datos que contienen una ‘cadena’ de texto.

Ejemplo: 'Hola mundo'

  • Datos numéricos: Representa aquellos valores numéricos de distintos tipos. EStos pueden ser: enteros o reales. Los enteros son números sin parte decimal. por su parte, los reales son números que tienen parte decimal diferente de cero.

Ejemplos: 5, 3.14159265358, -10000,

  • Datos Booleanos: Dato que representa el valor de verdad de una condición lógica, el cual puede tener únicamente dos valores:

Verdadero si la condición SÍ se cumple.

Falso si la condición NO se cumple.

3.3. Condicionales y ciclos#

Ya vimos cómo nuestros algoritmos y sus diagramas de flujo pueden requerir la realización de varias veces la misma tarea o de controlas que el algoritmo continúe o haga algo particular de acuerdo a una condición que necesitamos se cumpla.

A contnuación se describe cómo imponer algunas condiciones lógicas y cómo plantear ciclos para las operaciones iterativas.

3.3.1. Condicionales#

Los condicionales nos permiten tomar decisiones dentro de los algoritmos. Estos se plantean de forma binaria, es decir, cada decisión tiene solo 2 posibles alternativas. Esto tiene sentido en cuanto el computador funciona con datos binarios.

La estructura que nos permite establecer condiciones es la estructura: Si, Si no.

Esta estructura nos permite establecer una condición, que de cumplirse se ejecuta una acción. Si no se cumple, se puede ejecutar otra acción completamente diferente. El que se cumpla o no la condición, depende de la operación lógica que se plantee y de su resultado: Se cumple si es VERDADERO y no se cumple si es FALSO.

Su funcionamiento es como sigue, por ejemplo: En un algoritmo para calcular la edad y saber si una persona es mayor de edad, se debe cumplir que su edad sea mayor o igual a 18, para el caso del estado colombiano. Para ello:

Ejemplo: Determinar si una persona puede sacar su credencial o cédula.

  1. Año de nacimiento, entero AÑO

  2. Año actual, entero AÑO ACTUAL

  3. Leer AÑO

  4. Leer AÑO ACTUAL

  5. Calcular EDAD, EDAD = AÑO ACTUAL - AÑO

  6. Si EDAD \(\geq\) 18, Imprimir, "Credencial autorizada" Si no, Imprimir "Credencial no autorizada"

  7. Fin

Y su diagrama de flujo podría verse de la siguiente manera:

from IPython.display import YouTubeVideo
YouTubeVideo('ZG0bIfy_C9E')

3.3.2. Ciclos#

Los ciclos o bucles son estructuras que nos permiten realizar operaciones de forma iterativa, es decir, realizar una operación muchas veces sin necesidad de dar la instrucción cada vez que se necesite ejecutar. De esta forma, son dos las principales estructuras de bucles,

  • Bucle mientras (while)

Este tipo de bucle permite que una operación se realice mientras se satisface una condición lógica. Si dicha condición no se satisface, el bucle se puede ejecutar “infinitas” veces. REalmente se ejecuta hasta que los recursos de memoria y procesamiento del computador se agoten.

Ejemplo: Calcular el mínimo valor del número entero \(k\) para el cual \(m>2^k\).

La entrada del problema es el número \(m\) y la salida es el número entero \(k\). La idea es incrementar en una variable \(k\) iniciada con el valor \(0\) hasta que la variable \(m\) sea más grande qué \(2^k\). El pseudocódigo es:

  1. Real m

  2. Entero positivo k

  3. Leer m

  4. k = 0

  5. mientras (2^k) < m hacer

  6. k = k+1

  7. Fin mientras

  8. Imprimir k

  • Bucle para (for)

Los bucles para nos permiten realizar una operación una cantidad dada de veces, es decir, se debe indicar cuántas veces se deben realizar las operaciones.

Ejemplo: Obtener todos los valores de la fucnión trigonométrica \(sin(\pi k)\), donde \(k\) es un valor de entrada que va desde \(0\). El pseudocódigo es:

  1. Real a, Funcion

  2. Entero positivo k, i

  3. Leer a

  4. Leer k

  5. Para cada i de 0 hasta k

  6. Funcion = sin(pi * i )

  7. Escribir Función

  8. Fin

from IPython.display import YouTubeVideo
YouTubeVideo('ZhH1O6-TxtQ')

3.4. Ejercicios#

  1. Elabore un algoritmo que dado dos números \(n\) y \(m\), haga las operaciones suma, resta, multiplicación y división.

  2. Elabore un algoritmo que calcule el promedio de \(5\) valores ingresados por el usuario.

  3. Elabore un algoritmo que calcule el perímetro y el área de un polígono regular de \(n\) lados.

  4. Elabore un algoritmo que lea una temperatura en grados Fahrenheit y la convierta a grados centígrados y a grados Kelvin.

  5. Elabore un algoritmo que lea el valor de un ángulo en radianes y lo convierta a grados.

  6. Elabore un algoritmo que lea el nombre y apellido de una persona e imprima su correo institucional en el formato nombre.apellido@udea.edu.co.

  7. Escriba un programa que lea el nombre y la edad de una persona, así como el año actual y muestre un mensaje en el que se informe el año en que la persona cumplirá 100 años.

  8. Elabore un algoritmo que lea la altura en metros de una persona y su peso en kilogramos y calcule el índice de masa corporal.

  9. Elabore un algoritmo que lea un número y un porcentaje y muestre el valor correspondiente al porcentaje solicitado.

  10. Elabore un algoritmo que lea el radio de una esfera y calcule el volumen y el área superficial de la misma.

  11. Haga un diagrama de flujo para todos los ejercicios anteriores.

  12. En el taller se trabajará sobre bloques de Blockpy. A continuación encontrará una grabación con la respectiva explicación.

YouTubeVideo('GKNm4uXH3Mw')