Diseño Estructurado de Algoritmos

10,980 views

Published on

En estas diapositivas encontras, el material correspondiente a los conceptos básicos de la materia Diseño Estructurado de Algoritmos.

1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total views
10,980
On SlideShare
0
From Embeds
0
Number of Embeds
138
Actions
Shares
0
Downloads
334
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Diseño Estructurado de Algoritmos

  1. 1. SESIÓN 1DISEÑO ESTRUCTURADO DE ALGORITMOS<br />L.I. María de los Ángeles Martínez Morales.<br />
  2. 2. TEMARIO<br />Conceptos básicos<br />1.1. Introducción<br />1.2. Definición de lenguaje, algoritmo y lenguajes algorítmicos<br />1.3. Metodología para la solución de problemas por medio de computadoras.<br />1.4. Entidades primitivas para el diseño de instrucciones.<br />1.5. Técnicas para la formulación de algoritmos.<br />
  3. 3. TEMARIO<br />Estructuras algorítmicas secuenciales<br />2.1. Asignación<br />2.2. Entrada<br />2.3. Salida<br />2.4. Solución de problemas<br />Rutas algorítmicas condicionales<br />3.1. Si entonces<br />3.2. Si entonces sino<br />3.2. En caso de<br />3.4. Solución de problemas<br />
  4. 4. TEMARIO<br />Estructuras algorítmicas repetitivas<br />4.1. Mientras hacer<br />4.2. Hacer mientras<br />4.3. Hacer para<br />4.4. Solución de problemas<br />
  5. 5. 1. Conceptos básicos<br />INTRODUCCIÓN<br />La escritura de un programa de computadora consiste normalmente en implementar un método de resolución de un problema, que se ha diseñado previamente. Con frecuencia este método es independiente de la computadora utilizada: es igualmente válido para muchas de ellas. En cualquier caso es el método, no el programa, el que debe estudiarse para comprender cómo está siendo abordado el problema. <br />
  6. 6. 1. Conceptos básicos<br />El objetivo del diseño estructurado de algoritmos es obtener la estructura modular y los detalles de proceso de un algoritmo. No se trata solamente de desarrollar un programa que “funcione”, sino que también sea fácil de mantener, que mejore su reutilización y se pueda probar y entender fácilmente.<br />
  7. 7. 1.2. Definición de lenguaje, algoritmo y lenguajes algorítmicos<br />Un Lenguaje de Programaciónes aquél que es  utilizado para escribir programas de computadoras que puedan ser entendidos por ellas. Estos lenguajes se clasifican en tres grandes categorías <br />Lenguajes de máquina<br />Lenguajes de bajo nivel<br />Lenguajes de alto nivel<br />
  8. 8. 1.2. Definición de lenguaje, algoritmo y lenguajes algorítmicos<br />Un algoritmo establece, de manera genérica e informal, la secuencia de pasos o acciones que resuelve un determinado problema. Los algoritmos constituyen la documentación principal que se necesita para poder iniciar la fase de codificación y, para representarlos, se utiliza, fundamentalmente, dos tipos de notación: pseudocódigo y diagramas de flujo. El diseño de un algoritmo es independiente del lenguaje que después se vaya a utilizar para codificarlo.<br />
  9. 9. 1.2. Definición de lenguaje, algoritmo y lenguajes algorítmicos<br />ALGORITMO: Conjunto de instrucciones que especifican la secuencia ordenada de operaciones a realizar para resolver un problema. En otras palabras, un algoritmo es un método o fórmula para la resolución de un problema. Un algoritmo es independiente tanto del lenguaje de programación en que se exprese como del ordenador en el que se ejecute.<br />
  10. 10. 1.2. Definición de lenguaje, algoritmo y lenguajes algorítmicos<br />ALGORITMO<br />Un algoritmo es un conjunto ordenado y finito de pasos usados en la solución de un problema o realización de una tarea. <br />
  11. 11. CURIOSIDAD: <br />El término algoritmo es muy anterior a la era informática: proviene de Mohammed al-Khowārizmī(apellido que se tradujo al latín empleando la palabra “algoritmus”), matemático persa del siglo IX que enunció paso a paso las reglas para sumar, restar, multiplicar y dividir números decimales.<br />
  12. 12. Características de un algoritmo<br />
  13. 13. 1.2. Definición de lenguaje, algoritmo y lenguajes algorítmicos<br />Un algoritmo esta compuesto por:<br />La etapa de entrada indica los datos que son necesarios para la solución del problema en cuestión. <br />En la etapa de proceso o procesamiento, es donde se realizan las operaciones que tienen que ver con la solución del problema.<br />La etapa de salida es donde se mostrarán los resultados obtenidos en el procesamiento. <br />
  14. 14. Algoritmos Cotidianos<br />Se refiere a todos aquéllos algoritmos que nos ayudan a resolver problemas diarios, y que los hacemos casi sin darnos cuenta de que estamos siguiendo una metodología para resolverlos.<br />
  15. 15. 1.2. Definición de lenguaje, algoritmo y lenguajes algorítmicos<br />Los lenguajes algorítmicos nos proporcionan metodologías que permiten representar cualquier problema (o casi cualquiera) para posteriormente expresarlo en un lenguaje de computadora. De lo anterior podemos concluir que, expresando correctamente un problema mediante un algoritmo, podemos representarlo en cualquier lenguaje de programación.<br />
  16. 16. 1.2. Definición de lenguaje, algoritmo y lenguajes algorítmicos<br />Los algoritmos pueden describirse utilizando diversos lenguajes. Cada uno de estos lenguajes permiten describir los pasos con mayor o menor detalle.<br />La clasificación de los lenguajes para algoritmos puede enunciarse de la siguiente manera :<br />Lenguaje Natural<br />Lenguaje de Diagramas de flujo<br />Lenguaje Natural de Programación.<br />Lenguaje de Programación de Algoritmos.<br />
  17. 17. 1.2. Definición de lenguaje, algoritmo y lenguajes algorítmicos<br />Lenguaje Natural<br />Es aquél que describe en español, para nuestro caso, los pasos a seguir utilizando un vocabulario cotidiano. Se le conoce  como lenguaje  jerga cuando se utilizan términos especializados de una determinada ciencia, profesión o grupo.<br />
  18. 18. 1.2. Definición de lenguaje, algoritmo y lenguajes algorítmicos<br />Lenguaje de Diagramas de flujo<br />Es aquél que se vale de diversos símbolos para representar las ideas o acciones a desarrollar. Es útil para organizar las acciones o pasos de un algoritmo pero requiere de etapas posteriores para implementarse en un sistema de cómputo.<br />
  19. 19. 1.2. Definición de lenguaje, algoritmo y lenguajes algorítmicos<br />Lenguaje Natural de Programación.<br />Son aquéllos que están orientados a la solución de problemas que se definen de una manera precisa. Generalmente son aplicados para la elaboración de fórmulas o métodos científicos.<br />Tiene las siguientes características :      <br />Evita la ambigüedad (algo confuso que se puede interpretar de varias maneras).<br />Son precisos y bien definidos.<br />Utilizan términos familiares al sentido común.<br />Elimina instrucciones innecesarias.<br />
  20. 20. 1.2. Definición de lenguaje, algoritmo y lenguajes algorítmicos<br />Lenguaje de Programación de Algoritmos.<br />Es aquél que se utiliza para introducir en la computadora un algoritmo específico. Se les conoce también como Lenguaje de Programación.<br />
  21. 21. 1.3. Metodología para la solución de problemas por medio de computadoras.<br />A fin de resolver un problema utilizando sistemas de cómputo, debe seguirse una serie de pasos que permiten avanzar por etapas bien definidas hacia la solución:<br />Definición de Problema<br />Análisis de los Datos<br />Diseño de la Solución<br />Codificación<br />Prueba y Depuración<br />Documentación<br />Mantenimiento<br />
  22. 22. Definición del problema<br />Está dada en sí por el enunciado del problema, el cual debe ser claro y complejo. Es importante que conozcamos exactamente "que se desea obtener al final del proceso" ; mientras esto no se comprenda no puede pasarse a la siguiente etapa.<br />
  23. 23. Análisis de los datos<br />Para poder definir con precisión el problema se requiere que las especificaciones de entrada y salida sean descritas con detalle ya que esto es un requisito para lograr una solución eficaz. <br />Una vez que el problema ha sido definido y comprendido, deben analizarse los siguientes aspectos :<br />
  24. 24. Análisis de los datos<br />Los resultados esperados.<br />Los datos de entrada disponibles.<br />Herramientas a nuestro alcance para manipular los datos y alcanzar un resultado (fórmulas, tablas, accesorios diversos).<br />
  25. 25. Diseño de la solución<br />Una computadora no tiene capacidad para solucionar problemas más que cuando se le proporcionan los sucesivos pasos a realizar, esto se refiere a la obtención de un algoritmo que resuelva adecuadamente el problema. En caso de obtenerse varios algoritmos, seleccionar uno de ellos utilizando criterios ya conocidos.<br />Esta etapa incluye la descripción del algoritmo resultante en un lenguaje natural, de diagrama de flujo o natural de programación.<br />Como puede verse, solo se establece la metodología para alcanzar la solución en forma conceptual, es decir ; sin alcanzar la implementación en el sistema de cómputo.<br />
  26. 26. Codificación<br />Se refiere a la obtención de un programa definitivo que pueda ser comprensible para la máquina. Incluye una etapa que se reconoce como compilación.<br />Si la codificación original se realizó en papel, previo a la compilación deberá existir un paso conocido como transcripción.<br />
  27. 27. Prueba y depuración<br />Una vez que se ha obtenido el programa ejecutable, este es sometido a prueba a fin de determinar si resuelve o no el problema planteado en forma satisfactoria.<br />Las pruebas que se le aplican son de diversa índole y generalmente dependen del tipo de problema que se está resolviendo. Comúnmente se inicia la prueba de un programa introduciendo datos válidos, inválidos e incongruentes y observando como reacciona en cada ocasión.<br />El proceso de depuración consiste en localizar los errores y corregirlos en caso de que estos existan. Si no existen errores, puede entenderse la depuración como una etapa de refinamiento en la que se ajustan detalles para optimizar el desempeño del programa.<br />
  28. 28. Documentación<br />Debido a que el programa resultante en esta etapa se encuentra totalmente depurado (sin errores), se procede a la utilización para resolver problemas del tipo que dio origen a su diseño.<br /> <br />En vista de que esta utilización no podrá ser supervisada en todas las ocasiones por el programador, debe crearse un manual o guía de operación que indique los pasos a seguir para utilizar el programa.<br />
  29. 29. Mantenimiento<br />Se refiere a las actualizaciones que deban aplicarse al programa cuando las circunstancias así lo requieran. Este programa deberá ser susceptible de ser modificado para adecuarlo a nuevas condiciones de operación.<br />Cualquier actualización o cambio en el programa deberá reflejarse en su documentación.<br />
  30. 30. 1.4. Entidades primitivas para el diseño de instrucciones.<br />Tipos de Datos<br />Operadores y operandos<br />Expresiones<br />
  31. 31. Tipos de Datos<br />Un dato se define como la expresión general que describe los objetos con los cuales opera una computadora. Los datos de entrada se transforman por el programa, después de las etapas intermedias, en datos de salida.<br />
  32. 32. Tipos de Datos<br />Los datos se clasifican en diversas categorías, según el tipo de máquina o del lenguaje en uso. Generalmente podemos encontrar las siguientes categorías :<br />Numéricos<br />Lógicos<br />Cadenas<br />
  33. 33. Datos numéricos<br />Son aquéllos que representan una cantidad o valor determinado. <br /> Su representación se lleva a cabo en los formatos ya conocidos (enteros, punto y fracciones decimales si estas existen). <br />Tipo entero<br />(Integer)<br />Tipo Real<br />
  34. 34. Tipo de Dato Cadena o Carácter<br />Son los datos que representan información textual (palabras, frases, símbolos, etc).<br />Pueden distinguirse porque son delimitados por apóstrofes o comillas. <br />No representan valor alguno para efectos numéricos. <br />Datos de Tipo Carácter (Char)<br />Datos de Tipo Cadena (String)<br />
  35. 35. Tipos de Datos Lógicos<br />Booleano<br />Falso<br />Verdadero<br />Se utiliza para representar las alternativas (si/no) a determinadas condiciones. Por ejemplo, cuando se pide si un valor entero sea primo, la respuesta será verdadera o falsa, según sea.<br />
  36. 36. Datos Simples y Compuestos<br />Un dato simple es indivisible (atómico), es decir, no se puede descomponer.<br />Ejemplo 1: Un año es un dato simple.Año...:2006Un año se expresa con un número entero, el cual no se puede descomponer. <br />
  37. 37. Datos Simples y Compuestos<br />Un dato compuesto está formado por otros datos.Ejemplo 2: una fecha es un dato compuesto por tres datos simples (día, mes, año).   Fecha:      día...: 30      mes...: 11      año...: 2006<br />
  38. 38. Constantes y variables<br />Una Constante es aquélla que no cambia de valor durante la ejecución de un programa (o comprobación de un algoritmo en este  caso).  Se representa en la forma descrita para cada categoría.<br />Las Variables son aquéllas que pueden modificar su valor durante la ejecución de un programa (idem).<br />Su representación se da a través de letras y símbolos generalmente numéricos a los que se les asigna un valor.<br />
  39. 39. Operadores y Operandos  <br />OPERADORES<br />Un operador es el símbolo que determina el tipo de operación o relación que habrá de establecerse entre los operandos para alcanzar un resultado.<br />
  40. 40. Operadores y Operandos  <br />Los operadores se clasifican en tres grupos: <br />Aritméticos<br />Relacionales<br />Lógicos<br />
  41. 41. Operadores Aritméticos<br />Son aquéllos que permiten la realización de cálculos aritméticos. Utilizan operandos numéricos y proporcionan resultados numéricos.<br />
  42. 42. Operadores Relacionales<br />Permiten realizar comparaciones de valores de tipo numérico o carácter. Estos operadores sirven para expresar las condiciones en los algoritmos. Proporcionan resultados lógicos.<br />
  43. 43. Operadores Lógicos<br />Son aquéllos que permiten la combinación de condiciones para formar una sola expresión lógica. Utilizan operandos lógicos y proporcionan resultados lógicos también.<br />
  44. 44. Prioridad de los operadores aritméticos<br />
  45. 45. Prioridad de los operadores lógicos y relacionales<br />
  46. 46. Asignación<br />Una instrucción de asignación (o simplemente asignación) consiste en asignar el resultado de la evaluación de una expresión a una variable.<br />Ejemplo 1: Dadas las declaraciones   PI = 3.141592   realarea, longitud, radio = 5.78 <br />
  47. 47. Entrada<br />Una instrucción de entrada (o simplemente entrada) consiste en asignar a una o más variables, uno o más valores (datos) recibidos desde el exterior. Normalmente, los datos son recogidos desde la entrada estándar (el teclado), pero, también existen otros dispositivos de entrada (el ratón, el escáner,...).<br />
  48. 48. Entrada<br />leer( <nombre_de_la_variable_1>,         <nombre_de_la_variable_2>,          ...,         <nombre_de_la_variable_n>)<br />leer( <lista_de_variables> )<br />
  49. 49. Salida<br />Una instrucción de salida (o simplemente salida) consiste en llevar hacia el exterior los valores (datos) obtenidos de la evaluación de una lista de expresiones. Normalmente, los datos son enviados a la salida estándar (la pantalla), pero, también existen otros dispositivos de salida (la impresora, el plotter,...).<br />
  50. 50. Salida<br />escribir( <expresión_1>, ..., <expresión_n> )<br />escribir( <lista_de_expresiones> )<br />
  51. 51. Expresiones<br />Las expresiones son combinaciones de constantes, variables, símbolos de operadores, paréntesis y nombres de funciones especiales. Las mismas ideas son utilizadas en notación matemática tradicional ; por ejemplo :<br />a + b ( b+2)     Aquí los paréntesis indican el orden de cálculo.<br />
  52. 52. 1.5. Técnicas para la formulación de algoritmos.<br />Las tres técnicas de formulación de algoritmos más populares son :<br />Diagrama de flujo<br />Pseudocódigo<br />Diagrama estructurado<br />
  53. 53. REFERENCIAS<br />CASTILLO, Víctor. Lenguajes algorítmicos. Recuperado el 10 de Julio de 2011 de http://docente.ucol.mx/abolio/tareas/Lenguaje.pdf<br />INSTITUTO TECNOLOGICO DE LA PAZ. Tutorial de diseño estructruturado de algoritmos, recuperado el 10 de Julio de 2011 de http://sistemas.itlp.edu.mx/tutoriales/algoritmos/<br />RODRÍGUEZ, Sala Jesús. (2003). Introducción a la programación: teoría y práctica. Recuperado el 10 de Julio de 2011 de http://books.google.com.mx/books?id=nLMJsInMyBwC&pg=PA38&dq=introduccion+al+dise%C3%B1o+estructurado+de+algoritmos&hl=es&ei=llMaToORKoLUtQOG_czDDQ&sa=X&oi=book_result&ct=result&resnum=1&ved=0CCgQ6AEwAA#v=onepage&q&f=false<br />UNIVERSIDAD NACIONAL DE COLOMBIA, Diseño estructurado de algoritmos, recuperado el 10 de Julio de 2011 de http://www.virtual.unal.edu.co/cursos/ingenieria/2001839/modulo1/cap_02/leccion_1.htm<br />

×