1. 2.3 DEFINICIÓN DE LENGUAJES ALGORÍTMICOS METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS
2. Elementos y reglas de la representación gráfica y manuscrita de los algoritmos Características de los algoritmos Las características fundamentales que debe cumplir todo algoritmo son: Un algoritmo debe ser preciso e indicar el orden de realización de cada paso. Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez. Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algún momento; o sea debe tener un número finito de pasos. La definición de un algoritmo debe describir tres partes: Entrada, Proceso y Salida.
3. Elementos y reglas de la representación gráfica y manuscrita de los algoritmos Ejemplo 4: En un algoritmo de receta de cocina se tiene que: Entrada: Ingredientes y utensilios empleados. Proceso: Elaboración de la receta de cocina. Salida: Terminación del platillo, por ejemplo enchiladas. Fin del ejemplo 4
4. Elementos y reglas de la representación gráfica y manuscrita de los algoritmos Ejemplo 5: Un cliente ejecuta un pedido a una fábrica. La fábrica examina en su base de datos la ficha del cliente, si el cliente es solvente entonces la empresa acepta el pedido; en caso contrario, rechazará el pedido. Redactar el algoritmo correspondiente. Solución: Los pasos del algoritmo son: Inicio Leer el pedido Examinar la ficha del cliente Si el cliente es solvente, aceptar pedido; en caso contrario, rechazar pedido. Fin Fin del ejemplo 5.
5. Elementos y reglas de la representación gráfica y manuscrita de los algoritmos Ejemplo 6 Se desea diseñar un algoritmo para saber si un número es primo o no. Un número es primo si sólo puede dividirse entre sí mismo y entre la unidad, es decir, no tiene más divisores que él mismo y la unidad. Por ejemplo, 9, 8 6, 4, 12, 16, 20 no son primos, ya que son divisibles pro números distintos a ellos mismos y a la unidad. El 9 es divisible entre 3, el 8 es divisible entre 2 y entre 4, etc. Solución: Inicio Hacer X igual a 2 (X = 2, X variable que representa a los divisores del número N que se busca) Dividir N entre X (N/X) Si el resultado de N/X es entero, entonces N no es un número primo y continuar con el paso 7; en caso contrario, continuar con el siguiente paso. Sumar 1 a X (X = X+1) Si X es igual a N, entonces N es un número primo; en caso contrario, continuar con el paso 3. Fin. Fin del ejemplo 6.
6. Elementos y reglas de la representación gráfica y manuscrita de los algoritmos Diseño de un algoritmo Una computadora no tiene capacidad para solucionar problemas a menos de que se le proporcionen los pasos sucesivos a realizar. Estos pasos sucesivos que indican las instrucciones a ejecutar constituyen, como ya se mencionó, el algoritmo. La información proporcionada al algoritmo constituye su entrada y la información producida por el algoritmo constituye su salida. Los problemas complejos pueden resolverse más eficazmente con la computadora cuando se divide en subproblemas que sean más fáciles de solucionar que el problema original. Este método suele denominarse “divide y vencerás”, y consiste en dividir el problema complejo en otros más simples.
7. Elementos y reglas de la representación gráfica y manuscrita de los algoritmos Ejemplo 7: Un problema que pretende encontrar el perímetro y el área de un círculo puede dividirse en tres problemas más simples, como se muestra en la siguiente figura:
8. Elementos y reglas de la representación gráfica y manuscrita de los algoritmos La descomposición del problema original en subproblemas más simples y a continuación dividir estos subproblemas en otros más simples que pueden implementarse para su solución en la computadora se denomina diseño descendente (top-downdesign). Normalmente los pasos diseñados en el primer esbozo del algoritmo son incompletos e indican sólo unos pocos pasos (un máximo de doce). Tras esta primera descripción, estos se amplían en una descripción más detallada con más pasos específicos. Este proceso se denomina refinamiento del algoritmo (stepwiserefinement). Para problemas complejos se necesitan con frecuencia diferentes niveles de refinamiento antes de que se pueda obtener un algoritmo claro, preciso y completo. El problema de cálculo del perímetro y área del círculo se puede descomponer en subproblemas más simples: Leer datos de entrada Calcular el perímetro y área del círculo Escribir resultados (datos de salida)
11. La comprobación del problema se puede verificar fácilmente. Tras los pasos anteriores (diseño descendente y refinamiento sucesivo por pasos) es preciso representar el algoritmo mediante una determinada herramienta de programación: diagrama de flujo, pseudocódigo o diagrama N-S.
12. Elementos y reglas de la representación gráfica y manuscrita de los algoritmos Diagramas de flujo Un diagrama de flujo (flowchart) es una de las técnicas de representación del algoritmo más antigua y a la vez más utilizada, aunque su empleo ha disminuido considerablemente, sobre todo desde la aparición de lenguajes de programación estructurados. Símbolos de diagramas de flujo
13. Elementos y reglas de la representación gráfica y manuscrita de los algoritmos Símbolos de diagramas de flujo
14.
15. Elementos y reglas de la representación gráfica y manuscrita de los algoritmos Diagrama de flujo Fin del ejemplo 8
16. Elementos y reglas de la representación gráfica y manuscrita de los algoritmos Pseudocódigo El pseudocódigo es en lenguaje de especificación de algoritmos. El uso de tal lenguaje hace el paso de codificación final (esto es, la traducción a un lenguaje de programación) relativamente fácil. El pseudocódigo nació como un lenguaje similar al inglés y era un medio de representar básicamente las estructuras de control de programación estructurada. El pseudocódigo original utiliza para representar las acciones sucesivas palabras reservadas en inglés, similares a sus homónimos en lenguajes de programación, tales como start, end, stop, if-then-else, repeat-until, etc. La escritura de pseudocódigo exige normalmente la indentación (sangría en el margen izquierdo) de diferentes líneas.
17. Elementos y reglas de la representación gráfica y manuscrita de los algoritmos Pseudocódigo Ejemplo 9: El pseudocódigo correspondiente al diagrama de flujo del ejemplo 2.3.3 es el siguiente: Start / cálculo de impuesto y salarios read HORAS, PRECIO_HORA, NOMBRE if HORAS >= 40 then SALARIO= HORAS * PRECIO_HORA else SALARIO=40*PRECIO_HORA + 1.5*PRECIO_HORA*(HORAS –40) endif Write SALARIO end fin del ejemplo 9.
18. Elementos y reglas de la representación gráfica y manuscrita de los algoritmos Pseudocódigo El algoritmo comienza con la palabra start y finaliza con la palabra end, en inglés (en español, inicio, fin). Entre estas palabras, sólo se escribe una instrucción o acción por línea. La línea precedida por // se denomina comentario. Es una información para el lector del programa y no realiza ninguna instrucción ejecutable, sólo tiene efecto de documentación interna del programa.
19. Elementos y reglas de la representación gráfica y manuscrita de los algoritmos Diagramas de Nassi-Scheneiderman (N-S) El diagrama N-S de Nassi-Schneiderman, también conocido como diagrama de Chapin, es como un diagrama de flujo en el que se omiten las flechas de unión y las cajas son contiguas. Las acciones sucesivas se escriben en cajas sucesivas y, como en los diagramas de flujo, se pueden escribir diferentes acciones en una misma caja. Un algoritmo se representa con un rectángulo en el que cada banda es una acción a realizar:
20. Elementos y reglas de la representación gráfica y manuscrita de los algoritmos Ejemplo 10:
21. Elementos y reglas de la representación gráfica y manuscrita de los algoritmos Otro ejemplo es la representación de la estructura condicional:
22. Elementos y reglas de la representación gráfica y manuscrita de los algoritmos Implementación de algoritmos secuenciales En un algoritmo secuencial se ejecutan las sentencias en orden secuencial, es decir, cuando termina la ejecución de una sentencia comienza la que está inmediatamente después.