Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática Fundamentos de la informática 2. Algoritmos, diagramas de flujo y pseudocódigo Contenido Algoritmos Diagramas de flujo Pseudocódigo Tipos de datos Control del flujo Estructuras repetitivas Operadores aritméticos, lógicos y relacionales Arrays y vectores Funciones Algoritmos, diagramas de flujo y pseudocódigo 2 Algoritmos Algoritmos y programas Un algoritmo es un conjunto ordenado y finito de operaciones que permite hallar la solución de un problema (Diccionario RAE) Para programar de forma eficaz es necesario aprender a resolver problemas de una forma sistemática y rigurosa. Sólo se puede llegar a realizar un buen programa si previamente se ha diseñado un algoritmo Un algoritmo puede ser utilizado programas en distintos lenguajes Algoritmos, diagramas de flujo y pseudocódigo para codificar 3 Algoritmos Algoritmos y programas Los algoritmos son independientes de los lenguajes de programación. Un lenguaje de programación permite expresar un algoritmo para que sea ejecutado por un ordenador Un algoritmo describe los datos de entrada, el proceso y los datos de salida 1. Entrada: Datos que utiliza el algoritmo para su ejecución 2. Proceso: Reglas y operaciones del algoritmo para resolver un problema 3. Salida: Resultados del proceso Algoritmos, diagramas de flujo y pseudocódigo 4 Algoritmos Algoritmos y programas Un algoritmo debe ser claro y preciso, debe especificar las acciones a realizar y el orden de realización Un algoritmo debe tener un número finito de pasos y, cada vez que se realice con los mismos datos de entrada, debe dar el mismo resultado Algoritmos, diagramas de flujo y pseudocódigo 5 Algoritmos Las fases de desarrollo de un programa 1. Análisis. Consiste en entender el problema que se quiere resolver ¿Qué debemos hacer? 2. Diseño. Plan para resolver el problema ¿Cómo hacer? 3. Programación. Traducción de un algoritmo programa Java o de cualquier otro lenguaje en un 4. Validación del programa. Evaluación de los resultados del programa Algoritmos, diagramas de flujo y pseudocódigo 6 Algoritmos Constantes y variables Las constantes y las variables son valores almacenados en una dirección de memoria. El valor almacenado debe tener un tipo de dato: entero, decimal, carácter, etc. El nombre que se utiliza para hacer referencia a una constante o una variable se denomina identificador El valor de una constante no cambia durante la ejecución de un programa. Por ejemplo pi = 3,1416 Las variables almacenan los datos utilizados por los programas. El valor de una variable puede cambiar durante la ejecución de un programa Algoritmos, diagramas de flujo y pseudocódigo 7 Algoritmos Identificadores Representan las variables de un programa e identifican la dirección de memoria donde se almacena una variable El identificador de una variable debe comenzar con una letra. Después de la primera letra pueden aparecer más letras o números Un identificador no puede tener espacios en blanco a1 es un identificador válido 1a no es un identificador válido Algoritmos, diagramas de flujo y pseudocódigo 8 Algoritmos Herramientas para diseño de algoritmos Para diseñar un algoritmo se dispone de dos herramientas: los diagramas de flujo y el pseudocódigo Un diagrama de flujo representa gráficamente un algoritmo. Muestra la secuencia de operaciones a realizar para resolver un problema. Cada símbolo de un diagrama de flujo representa una acción El pseudocódigo es un lenguaje que describe algoritmos con una sintaxis similar a un lenguaje de programación. Normalmente se escribe en inglés o en español. La traducción de pseudocódigo a un lenguaje de programación es muy sencilla Algoritmos, diagramas de flujo y pseudocódigo 9 Diagramas de flujo Diagramas de flujo y procesos Un diagrama de flujo muestra las actividades y las decisiones que definen un proceso Un diagrama de flujo tiene un punto de inicio y un número finito de puntos de finalización. Puede dividirse en “carriles” para identificar a los responsables de realizar cada actividad Un diagrama de flujo es una herramienta útil en las fases de análisis y diseño de software Algoritmos, diagramas de flujo y pseudocódigo 10 Diagramas de flujo Simbología El inicio y el final de un diagrama de flujo se representa con un rectángulo con los bordes redondeados Los procesos se representan con rectángulos Algoritmos, diagramas de flujo y pseudocódigo 11 Diagramas de flujo Simbología Los controles del flujo se representan con rombos. Dentro del rombo se indica la condición o expresión lógica a evaluar Actividad 1 Sí condición Actividad 2 No Actividad Algoritmos, diagramas de flujo y pseudocódigo 3 12 Diagramas de flujo Simbología Para indicar un punto de unión de dos o más flujos se utiliza un conector La entrada y salida de datos se representa con el símbolo Algoritmos, diagramas de flujo y pseudocódigo 13 Diagramas de flujo Simbología Para indicar un punto de unión dos o más flujos de ejecución se utiliza el flujo se utiliza un “join”. El flujo no continua hasta que todos los flujos de entrada hayan finalizado Para iniciar dos o más flujos en paralelo se utiliza un “fork” Algoritmos, diagramas de flujo y pseudocódigo 14 Diagramas de flujo Flujo secuencial Actividad 1 Flujo condicionado Actividad 1 Sí Actividad 2 condición Actividad 2 Actividad 4 No Actividad Actividad 3 4 En este caso se ejecutan las actividades 1, 2, 3 y 4, de forma ordenada Algoritmos, diagramas de flujo y pseudocódigo Actividad 3 En este caso se ejecuta siempre la actividad 1. Si la condición es verdadera, entonces se ejecuta la actividad 2, en caso contrario se realiza la actividad 3. Finalmente, se ejecuta la actividad 4 15 Pseudocódigo Se denomina pseudocódigo a un lenguaje basado en normas léxicas y gramaticales similares a las utilizadas por los lenguajes de programación El pseudocódigo combina lenguaje coloquial con las normas gramaticales de los lenguajes de programación Es una herramienta útil en las fases de análisis y diseño de software Algoritmos, diagramas de flujo y pseudocódigo 16 Pseudocódigo El pseudocódigo permite diseñar algoritmos utilizando frases en lenguaje común, instrucciones de programación y palabras clave para definir las estructuras básicas de control Los algoritmos escritos en pseudocódigo se puede convertir fácilmente a cualquier lenguaje de programación Algoritmos, diagramas de flujo y pseudocódigo 17 Pseudocódigo El pseudocódigo es una herramienta muy útil 1. Facilita la comprensión y la verificación del algoritmo a desarrollar 2. Permite representar repetitivas complejas de forma fácil operaciones 3. Facilita la traducción a un lenguaje de programación 4. Permite observar claramente los distintos niveles de la estructura de un programa Algoritmos, diagramas de flujo y pseudocódigo 18 Pseudocódigo Pseudocódigo y algoritmos 1. El algoritmo tiene un único punto de inicio 2. El algoritmo tiene un número finito de posibles puntos de finalización 3. Es necesario que exista un número finito de caminos, entre el punto de inicio y los posibles puntos de finalización Algoritmos, diagramas de flujo y pseudocódigo 19 Pseudocódigo Tipos de datos Los tipos de datos básicos utilizados en pseudocódigo son: char, int, float, boolean char int float boolean carácter número entero número real admite un valor falso o verdadero Las variables se declaran como se indica a continuación: <tipo de dato1> variable1 = valor <tipo de dato2> variable2, variable3, ... , variablen Algoritmos, diagramas de flujo y pseudocódigo 20 Pseudocódigo Instrucciones Conjunto de instrucciones que secuencialmente, en su orden natural se ejecutan La ejecución del programa comienza por la primera instrucción y continua sucesivamente con las siguientes en orden secuencial: Instrucción1 Instrucción2 … … Instrucciónn Algoritmos, diagramas de flujo y pseudocódigo 21 Pseudocódigo Control del flujo y decisiones Para tomar decisiones y controlar el flujo de un algoritmo se puede tomar una decisión simple o múltiple La decisión simple puede tomar dos caminos, en función de que la condición sea verdadera o falsa La decisión múltiple puede tomar muchos caminos, no necesariamente excluyentes entre sí Algoritmos, diagramas de flujo y pseudocódigo 22 Pseudocódigo Control del flujo y decisiones Flujo “simple” if (expresión lógica) Conjunto de instrucciones1 else Conjunto de instrucciones2 end if Algoritmos, diagramas de flujo y pseudocódigo 23 Pseudocódigo Control del flujo y decisiones Flujo “múltiple” switch (expresión lógica) <valor1>: Conjunto de instrucciones1 <valor2>: Conjunto de instrucciones2 <valor3>: Conjunto de instrucciones3 … <valorn>: Conjunto de instruccionesn default: end switch Conjunto de instrucciones alternativas Algoritmos, diagramas de flujo y pseudocódigo 24 Pseucocódigo Estructuras iterativas Para repetir un conjunto de instrucciones un número determinado de veces es necesario utilizar una estructura iterativa Existen tres tipos de estructuras iterativas for while do while Algoritmos, diagramas de flujo y pseudocódigo 25 Pseucocódigo Estructuras iterativas for (inicio; expresion lógica; incremento) Conjunto de instrucciones end for while (expresión lógica) Conjunto de instrucciones end while do while (expresión lógica) Conjunto de instrucciones end do Algoritmos, diagramas de flujo y pseudocódigo 26 Pseudocódigo Operadores aritméticos + * / ^ Div Mod Sqr Sqrt suma resta producto división potencia división entera (cociente) division entera (residuo) cuadrado raíz cuadrada Algoritmos, diagramas de flujo y pseudocódigo 27 Pseudocódigo Operadores relacionales Los operadores relacionales evalúan una expresión y devuelven un valor falso o verdadero < > <= >= <> menor que mayor que menor o igual que mayor o igual que diferente de Algoritmos, diagramas de flujo y pseudocódigo 28 Pseudocódigo Operadores lógicos Los operadores lógicos evalúan una expresión lógica devuelven un valor falso o verdadero AND OR NOT A AND B es verdadero si A y B son verdaderos A OR B es verdadero si A o B son verdaderos negación del operando A, es decir, verdadero si A es falso, falso si A es verdadero Algoritmos, diagramas de flujo y pseudocódigo 29 Pseudocódigo Arrays y vectores Un conjunto de datos del mismo tipo se almacena en un “array” o tabla <tipo de dato> nombre variable[d1, ..., dn] En este caso, d1, ..., dn representan las dimensiones del array. Cada dimensión tiene un número de localidades determinadas Un array de una dimensión se denomina vector Algoritmos, diagramas de flujo y pseudocódigo 30 Pseudocódigo Funciones Una función es un conjunto de instrucciones que tienen por objeto realizar un cálculo. Una función siempre devuelve un resultado El uso de funciones facilita la estructura y organización de un programa Algoritmos, diagramas de flujo y pseudocódigo 31 Pseudocódigo Funciones <tipo de dato> function <nombre de la funcion> (lista de parámetros) begin Conjunto de instrucciones return (valor de la funcion) end function donde: lista de parámetros: < tipo de dato> variable1… valor de la función: variable | valor Algoritmos, diagramas de flujo y pseudocódigo 32 Pseudocódigo Funciones Existen funciones que se especifican a partir de su propia definición. Este tipo de funciones se denominan “recurrentes” o “recursivas” Una función recursiva se define en términos de sí misma, siempre que exista una solución simple conocida El factorial de un número es un ejemplo de una definición recursiva Factorial(n)= { Si n=0, entonces Factorial(0) = 1 Si n>0, entonces Factorial(n) = n * Factorial(n-1) Algoritmos, diagramas de flujo y pseudocódigo 33