Source: https://www.scribd.com/doc/103179615/Notas
Timestamp: 2018-03-21 16:59:48+00:00

Document:
Elementos de la Programación Estructurada: Algoritmos, Pseudo Código y Diagramas de Flujo
Huajuapan de León Oaxaca Septiembre 2006
Contenido ..............................................................................................................................ii Índice de Ilustraciones ........................................................................................................iii Índice de Tablas...................................................................................................................iv Elementos de la Programación Estructurada: Algoritmos, Pseudo código y Diagramas de Flujo .................................................................................................................................. 1
1 2 Introducción. ........................................................................................................................ 1 Programación Estructurada: panorama general. ............................................................. 1
2.1 Teorema de Böhm y Jacopini. .................................................................................................... 2 2.2 Estructuras de control. ................................................................................................................ 3 2.2.1 Estructuras secuenciales......................................................................................................... 3 2.2.2 Estructuras de selección......................................................................................................... 3 2.2.3 Estructuras de repetición........................................................................................................ 4
Algoritmos............................................................................................................................. 4
3.1 3.2 3.3 3.4 3.5 Concepto de algoritmo................................................................................................................ 4 Uso de la computadora en la resolución de problemas. .............................................................. 6 Cinco importantes condiciones de un algoritmo......................................................................... 7 Estructura de un algoritmo.......................................................................................................... 8 Pruebas de algoritmos............................................................................................................... 10
Diagramas de Flujo. ........................................................................................................... 10
4.1 Estructuras de control. .............................................................................................................. 11 4.1.1 Estructura secuencial. .......................................................................................................... 11 4.1.2 Estructuras de selección....................................................................................................... 11 4.1.3 Estructuras de repetición...................................................................................................... 12 4.2 Diagrama de flujo del algoritmo de Euclides. .......................................................................... 13
Pseudo código ..................................................................................................................... 13
5.1 Estructuras de control. .............................................................................................................. 14 5.1.1 Estructura secuencial. .......................................................................................................... 14 5.1.2 Estructuras de selección....................................................................................................... 14 5.1.3 Estructuras de repetición...................................................................................................... 15 5.2 Pseudo código del algoritmo de Euclides. ................................................................................ 16
Diseño básico de programas estructurados. .................................................................... 16
6.1 Reglas para la formación de algoritmos estructurados. ............................................................ 17
Conclusiones. ...................................................................................................................... 19 Bibliografía. ........................................................................................................................ 20
.................................................................. b) doble y c) múltiple.............................. .......................... .............................................. 11 Ilustración 2 Estructura secuencial en diagrama de flujo........................................ .............. 17 Ilustración 7 Aplicación de las reglas 1 y 2.......... 18 ............ .................... 18 Ilustración 8 Aplicación de la regla 3.................................................................................. ................. 13 Ilustración 6 Diagrama de flujo NO estructurado......... 12 Ilustración 5 Diagrama de flujo para el algoritmo de Euclides........................ 11 Ilustración 3 Estructuras de selección en diagrama de flujo a) simple............................................ .......................... 12 Ilustración 4 Estructuras de repetición en diagrama de flujo a) hacer mientras (while) y b) repetir hasta (do-while)...............................iii Índice de Ilustraciones Ilustración 1 Símbolos y su significado en los diagramas de flujo......................
.......................................................................... ...................................................iv Índice de Tablas Tabla 1 Proceso general de resolución de problemas con la computadora................................................................ 6 Tabla 2 Cinco condiciones con las que debe cumplir un algoritmo........................... 14 Tabla 5 Estructura de selección simple en pseudo código............... 15 Tabla 7 Estructura de selección múltiple en pseudo código............. Estructura de repetición hacer mientras (while)... 15 Tabla 9 Estructura de repetición repetir hasta (do-while)........................... 17 ...... ................ 9 Tabla 4 Estructura secuencial en pseudo código.......................... ................ 16 Tabla 11 Reglas para la formación de algoritmos estructurados...... 15 Tabla 10 Algoritmo de Euclides en pseudo código....... 15 Tabla 8................................................................................................................................................ 15 Tabla 6 Estructura de selección doble en pseudo código................ 8 Tabla 3 Estructura general de un algoritmo...................................................................................................... .....................................
grosso modo. con el objetivo de proporcionar un marco de referencia propicio para los conceptos a desarrollar. la presentación de los mismos de manera asilada no se consideró como la mejor opción. Ejecución y validación del programa Cada uno de estos pasos es de significativa importancia. por lo que estas etapas son con toda seguridad. se refiere al proceso que consiste en partir de la descripción de un problema (habitualmente en lenguaje natural. Ricardo Ruiz Rodríguez . Transformación del algoritmo en un programa (codificación) 5. Análisis del problema 3.Elementos de la programación estructurada: algoritmos. pseudo código y diagramas de flujo. y desarrollar un programa de computadora que resuelva dicho problema. Este proceso exige. que es en las etapas 2 y 3 en donde el estudiante presenta mayores dificultades. pseudo código y diagramas de flujo 1 Elementos de la Programación Estructurada: Algoritmos. la modesta experiencia en la enseñanza del paradigma de la programación estructurada indica. Pseudo código y Diagramas de Flujo 1 Introducción Aunque este documento tiene como finalidad principal la presentación y desarrollo de tres temas: algoritmos. Diseño o desarrollo de un algoritmo 4. para después presentar y desarrollar los temas que constituyen la parte central de este trabajo y que ya fueron mencionados con anterioridad. 2 Programación Estructurada: panorama general La resolución de un problema mediante una computadora. y expresado en términos propios del dominio del problema). dos de las más importantes en este proceso. sin embargo. por lo que si bien no se desarrollarán de manera exhaustiva. los siguientes pasos o etapas: 1. Se comenzará definiendo algunos conceptos básicos dentro del contexto de la programación estructurada. Comprensión del problema 2. se presentarán los conceptos relacionados con el paradigma de la programación estructurada.
No se trata de escribir programas que solamente su creador entienda.1 Teorema de Böhm y Jacopini El teorema de Böhm y Jacopini establece. la meta de la programación estructurada es la de hacer programas que sean fáciles de diseñar.Elementos de la programación estructurada: algoritmos. sería imposible tratar de analizar un problema que ni siquiera se ha comprendido en su contexto más general. ya que una vez que el problema se ha comprendido. así por ejemplo. estructuras de selección y estructuras de repetición. el flujo lógico de ejecución se gobierna por tres estructuras de control básicas: secuenciales. que un programa propio puede ser escrito utilizando únicamente tres tipos de estructuras de control: estructuras secuenciales. su transformación a un programa de computadora es una tarea de simple traducción. Para que la programación sea estructurada. En un programa estructurado. depurar y susceptibles de ser entendidos por personas diferentes a las que escribieron el programa. se trata de algo más que eso. compuestos por similares todavía más pequeños. por lo que se mencionan y describen con más detalle en secciones posteriores. Un programa se define como propio si cumple las siguientes condiciones: Ricardo Ruiz Rodríguez . en donde los componentes finales tienden a consistir de unas cuantas sentencias. y obtenido un algoritmo que lo resuelve. un programa puede ser visto como un sistema en el que sus componentes son programas más pequeños. Estas estructuras constituyen una de las partes medulares de la programación estructurada. los programas han de ser propios. que si bien requiere del conocimiento de la sintaxis del lenguaje elegido para ello. Probablemente la etapa más sencilla de todas sea la número cuatro: la codificación. 2. y así sucesivamente hasta un nivel razonable. ya que cada una de ellas supone la adecuada terminación de la anterior. Ahora bien. Según Jeffrey Ullman [Ullman76]. y ni qué decir entonces de la elaboración de un algoritmo. selectivas y repetitivas. pseudo código y diagramas de flujo 2 El orden en el que se presentan estas etapas no es aleatorio. y a su vez estos componentes pueden ser vistos como otros. analizado. Los programas escritos en esta forma se denominan programas estructurados [Ullman76]. la parte intelectual y de raciocinio queda expresada en el algoritmo.
Es importante mencionar que la condición que rige el control del flujo puede ser tan elaborada como la naturaleza del problema lo requiera. dependiendo de si se cumple o no una determinada condición. pero se deberá tener la garantía de que el valor final de la condición podrá ser evaluado como un valor booleano. Ricardo Ruiz Rodríguez .2 Estructuras de selección Como su mismo nombre lo indica. antes de comenzar con una descripción más detallada de los algoritmos. los algoritmos. serán propios. Finalmente. puede decirse que en esencia es todo lo que hay que saber respecto al control y flujo de los algoritmos. si los algoritmos se diseñan empleando exclusivamente dichas estructuras de control. esto es.2. pseudo código y diagramas de flujo 3 • • Si tiene un solo punto de entrada y un solo punto de salida Si todas las sentencias del algoritmo son alcanzables.2. el flujo del algoritmo coincide con el orden físico en el que se han puesto las sentencias del algoritmo. Su importancia es tal. 2. esto es. 2. este tipo de estructuras realizan una selección de las acciones o sentencias a ejecutar. pero esto es muy dependiente del problema a resolver. se caracterizan porque una acción o sentencia se ejecuta detrás de otra. y por consecuencia los programas derivados de ellos.2 Estructuras de control Las estructuras secuenciales. existe al menos un camino que va desde el inicio hasta el fin del algoritmo • Si no posee ciclos infinitos De este teorema se deduce que. un determinado grupo de sentencias. que una vez que se entienda su estructura y funcionamiento.Elementos de la programación estructurada: algoritmos. esto es. se describirán muy brevemente estas tres estructuras de control. 2. selectivas y repetitivas se denominan estructuras de control porque son las que controlan el modo o flujo de ejecución del algoritmo.1 Estructuras secuenciales Las estructuras secuenciales son las más simples de las tres. se ejecutan o no. pero lo maravilloso de esto es que el mismo nombre de la estructura identifica su objetivo y utilidad. Otro aspecto importante consiste en saber en dónde utilizarlas. es decir.
dobles o múltiples. pseudo código y diagramas de flujo 4 como verdadero o falso. pueden visualizarse más fácilmente al observar sus representaciones en diagrama de flujo (página 11) o en pseudo código (página 14). 1 Utilizados cuando se conoce de antemano el número de repeticiones que el ciclo ejecutará. se muestran las notaciones algorítmicas utilizadas para las estructuras de repetición (páginas 12 y 15). esto es. multiplicar y dividir números decimales. 3 3. y trata aquellos aspectos para los cuales existe una solución constructivista. los enunciados del cuerpo del ciclo se repiten mientras se cumpla una determinada condición.2. La matemática discreta y en particular la matemática constructivista. 2. pero estos detalles han sido pospuestos para secciones posteriores. 3 El término algoritmo es muy anterior a la era de la computación: proviene de Mohammed al-Khowârizmî (cuyo apellido se tradujo al latín en la palabra algoritmus). esto viola una de las características más importantes de un algoritmo (véase la página 7). ya que de lo contrario la condición tendrá ambigüedad y. son tan antiguas como la propia matemática. Más adelante en el texto. En este tipo de estructuras. restar. quien era un matemático persa del siglo IX que enunció paso a paso las reglas para sumar. sino que se pregunta cómo encontrar dicha solución [Abellanas91]. es frecuente el uso de contadores1 o centinelas2 para controlar el número de repeticiones de un ciclo. En este mismo contexto también debe recordarse el algoritmo de Euclides obtenido 300 a.Elementos de la programación estructurada: algoritmos. Los flujos que se siguen. Ricardo Ruiz Rodríguez .C.1 Algoritmos Concepto de algoritmo El concepto de algoritmo3 forma parte esencial de los fundamentos de la computación. 2 Utilizados cuando no se sabe con certeza cuantas repeticiones habrá antes de que el ciclo termine. como se verá más adelante.3 Estructuras de repetición En las estructuras de repetición. Las estructuras de selección pueden ser simples. dependiendo de la evaluación de la condición. no se conforma con demostrar la existencia de solución. misma que deberá seguir los mismos lineamientos descritos para la estructura de selección descrita con anterioridad.
Llevar a cabo la sentencia correspondiente Esto significa que para que un algoritmo pueda ser correctamente ejecutado. Entender lo que significa cada paso 2. cada uno de sus pasos debe estar expresado de tal forma que el procesador sea capaz de entenderlos y ejecutarlos adecuadamente. Se dice que el procesador es capaz de interpretar el algoritmo. esto es. La ejecución de un algoritmo requiere la ejecución de cada uno de los pasos o instrucciones que lo constituyen. por lo que es importante mencionar que el contexto en el que se aplicará en este texto es en el de la programación. Un procesador realiza un proceso siguiendo o ejecutando el algoritmo correspondiente. el de utilizar a la computadora como herramienta para la resolución de problemas. 4 Un lenguaje de programación es lenguaje artificial que se utiliza para expresar programas de computadora. Un algoritmo debe estar expresado de tal forma que el procesador lo entienda para poder ejecutarlo. si el procesador puede realizar lo siguiente: 1. el algoritmo debe estar expresado en forma de un programa. pseudo código y diagramas de flujo 5 En términos generales puede definirse un algoritmo como el método para resolver un determinado problema. las partituras musicales. En el contexto que nos compete. El ejecutor de las instrucciones que realiza la tarea correspondiente se llama procesador. Existen algoritmos que describen toda clase de procesos. Ricardo Ruiz Rodríguez . etc. el término de algoritmo puede tener diferentes connotaciones dependiendo del contexto en el que se hable. En base a lo anterior. el cual se escribe en un lenguaje de programación4. si el procesador del algoritmo es una computadora. por ejemplo: las recetas de cocina. se definirá un algoritmo como un conjunto finito de instrucciones que especifican la secuencia ordenada de operaciones a realizar para resolver un problema. Ahora bien. A la actividad de expresar un algoritmo en un lenguaje de programación determinado se le denomina programar.Elementos de la programación estructurada: algoritmos.
Elementos de la programación estructurada: algoritmos. a un conjunto de Ricardo Ruiz Rodríguez . En el diagrama mostrado en la Tabla 1. por lo que un programa consiste en una secuencia de instrucciones en donde cada una de las cuales especifica ciertas operaciones a realizar por la computadora. debido a que los lenguajes de este tipo proporcionan un mayor nivel de abstracción y familiarización con el lenguaje natural (inglés). por lo que es conveniente mencionar el proceso general de resolución de problemas. desde que se dispone de un algoritmo. El proceso mostrado en la Tabla 1. Además. los algoritmos tendrán como finalidad ser traducidos en programas. como lo que interesa es resolver problemas utilizando la computadora. hasta que la computadora lo ejecuta.2 Uso de la computadora en la resolución de problemas En general. pseudo código y diagramas de flujo 6 Cada paso del algoritmo se expresa mediante una instrucción o sentencia en el programa. 3. se ha escogido la representación en un lenguaje de alto nivel. ha sido adaptado de [Abellanas91]. se escriben algoritmos para resolver problemas que no son tan fáciles de resolver a primera vista. Aquí también es importante recordar que las computadoras tienen su propio lenguaje (binario). Tabla 1 Proceso general de resolución de problemas con la computadora Algoritmo ↓ Programación ↓ Programa en lenguaje de alto nivel ↓ Traducción ↓ Programa en código de máquina ↓ Ejecución Existen diferentes formas de traducir un algoritmo a un programa. por lo que es necesario un proceso de traducción (realizado por el compilador) para que se traduzca el conjunto de sentencias escritas en un lenguaje de programación de alto nivel (código fuente). y de los que necesitamos especificar el conjunto de acciones que se llevarán a cabo para su resolución.
por lo que.. ya que el diseño de buenos algoritmos requiere creatividad e ingenio. Otro aspecto muy importante dentro de los algoritmos. ya que sin algoritmo no puede haber programas. Ricardo Ruiz Rodríguez . el resultado de este proceso será la ejecución del programa basado en el algoritmo. como de la computadora en la que se ejecute. etc. deben cumplir con cinco importantes condiciones [Abellanas91] mismas que son descritas en la Tabla 2.Elementos de la programación estructurada: algoritmos. tales como “añádase una pizca de sal”. y sin programas. El análisis y diseño formal de algoritmos es una actividad intelectual considerable y no trivial en general. y no existen reglas para diseñar algoritmos en general. reducen significativamente el espectro tan amplio que hasta ahora se ha manejado como algoritmo. es el del análisis y diseño de algoritmos. “batir suavemente”. debería ser claro que el papel del algoritmo es fundamental. invalidando con ello la formalidad de un algoritmo dentro del contexto que nos interesa. 3. Finalmente. Teniendo en consideración lo anterior. aunque es importante mencionarlo y tenerlo en cuenta. aunque una receta de cocina podría considerarse como un algoritmo. pseudo código y diagramas de flujo 7 instrucciones que sean compresibles para la computadora (código de máquina). un algoritmo es independiente tanto del lenguaje de programación en que se exprese. Las cinco condiciones mostradas en la Tabla 2. no hay nada que ejecutar en la computadora. si todo está bien. esto es. todavía no existe un algoritmo para diseñar algoritmos y que además éstos sean buenos. no se cubrirá en este texto la parte relacionada al análisis y diseño de algoritmos. es común encontrar expresiones imprecisas en ella que dan lugar a ambigüedad (violando la condición 2). y aunque el proceso involucrado es más complejo que lo que aquí se ha descrito. además de ser un conjunto finito de reglas que dan lugar a una secuencia de operaciones para resolver un tipo específico de problemas. Es importante mencionar y enfatizar también que. por lo que no deberían ser diseñados en función de ello. Así por ejemplo.3 Cinco importantes condiciones de un algoritmo Los algoritmos.
Efectividad: Un algoritmo debe ser efectivo. (Un procedimiento que tiene todas las características de un algoritmo salvo que posiblemente falla en su finitud. 5 Véase [Abellanas91]. [Ullman76].) 2. 4. debe existir una salida asociada que constituye la solución al problema particular determinado por dicha entrada. cada uno tiene formas diferentes aunque esencialmente iguales de representar un algoritmo Ricardo Ruiz Rodríguez . Conjunto de salidas: Debe existir un número especificado de objetos. 3.4 Estructura de un algoritmo Aunque no existe una única forma de representar un algoritmo5. y en un lapso de tiempo finito por el procesador que ejecute el algoritmo. A este conjunto se le denomina conjunto de salidas del algoritmo. Esto significa que todas las operaciones a realizar por el algoritmo deben ser lo bastante básicas para poder ser efectuadas de modo exacto. [Wirth86]. Finitud: Un algoritmo tiene que acabar siempre tras un número finito de pasos. Para cada entrada del algoritmo. [Joyanes93]. Conjunto de entradas: Debe existir un conjunto especificado de objetos. 5. las acciones a realizar han de estar especificadas para cada caso rigurosamente y sin ambigüedad. pseudo código y diagramas de flujo Tabla 2 Cinco condiciones con las que debe cumplir un algoritmo 8 1. [Deitel95]. se conoce como método de cálculo. etc. A este conjunto se le denomina conjunto de entradas del algoritmo. 3. Definibilidad: Cada paso de un algoritmo debe definirse de modo preciso.Elementos de la programación estructurada: algoritmos. cada uno de los cuales constituye la salida o respuesta que debe obtener el algoritmo para los diferentes casos particulares del problema. la estructura general de un algoritmo debería ser como la mostrada en la Tabla 3. cada uno de los cuales constituye los datos iniciales de un caso particular del problema que resuelve el algoritmo.
El ejemplo anterior ilustra el proceso de resolución que se debería seguir para resolver un problema. la idea será entonces ir particularizando cada parte en un refinamiento progresivo. Definición del problema Dados dos números enteros positivos m y n. se determine la entrada. habrá que hacer intercambio de valores y continuar con el proceso. pseudo código y diagramas de flujo Tabla 3 Estructura general de un algoritmo 9 Algoritmo <nombre_del_algoritmo> Inicio definición de constantes declaración de variables Sentencia 1 Sentencia 2 . si no. hasta llegar a un algoritmo más Ricardo Ruiz Rodríguez . partiendo de la descripción del problema y de un análisis inicial. encontrar su máximo común divisor (MCD). A continuación se menciona un ejemplo clásico (el algoritmo de Euclides) con la finalidad de ilustrar el proceso descrito. La solución está basada en el residuo de la división de los operandos m y n. la salida y el proceso general de solución del algoritmo.Elementos de la programación estructurada: algoritmos. Salida: Proceso: Un número que representa el MCD (Máximo Común Divisor) de m y n. el mayor entero positivo que divide a la vez a m y a n. Si el residuo es 0 entonces hemos terminado. ya que partiendo de este análisis inicial. es decir. se considera recomendable que. . Entrada: Dos números enteros positivos: m y n. Sentencia n Fin Aunado a la estructura general del algoritmo propuesta en la Tabla 3. .
pseudo código y diagramas de flujo 10 refinado y funcional. Un diagrama de flujo es una herramienta gráfica de descripción de algoritmos que se caracteriza por utilizar un conjunto de símbolos gráficos y expresar de forma clara los flujos de control o el orden lógico en el que se realizan las acciones de un algoritmo. La fase de prueba de los algoritmos es una parte fundamental dentro del diseño del mismo. una de las partes más importantes dentro de su diseño es la referente a las pruebas. pero ese aspecto no es lo que se quiere comentar en esta sección. Una vez que se tiene una solución algorítmica de un problema. es suficiente saber que es conveniente realizar algunas pruebas sobre los algoritmo desarrollados. es construir un algoritmo aparte que se encargue de validar que los datos de entrada sean los correctos. y se recomienda ampliamente adoptarlo como práctica habitual. Las técnicas y métodos formales de pruebas están fuera de los alcances de este trabajo introductorio al paradigma de la programación estructurada. y un principio esencial de Ingeniería de Software. Un libro ampliamente recomendable en cuanto a técnicas básicas de pruebas y estilo de programación es [Kernighan00]. En el diseño del algoritmo se deben considerar al menos algunos casos de prueba. no se debería suponer o creer que funcionará bien siempre.5 Pruebas de algoritmos Una vez que se ha generado un algoritmo que parece correcto.Elementos de la programación estructurada: algoritmos. ya que es una importante técnica de programación. 4 Diagramas de Flujo Un diagrama de flujo es un tipo de notación gráfica algorítmica. Ricardo Ruiz Rodríguez . La parte de la validación de los datos de entrada al algoritmo es también un aspecto importante. Es habitual que el domino de trabajo de un algoritmo sea un conjunto de elementos y entonces sería bueno saber por ejemplo ¿Cómo se comporta el algoritmo en los límites del conjunto? ¿Dado un mismo dato de entrada obtengo siempre la salida esperada? entre otras preguntas. En las secciones posteriores se continuará trabajando con este ejemplo modelando el algoritmo en su notación de diagrama de flujo y de pseudo código. 3. pero a este nivel. aunque normalmente lo que se hace.
1 Estructuras de control Esta sección muestra los diagramas de flujo de las estructuras de control.2 Estructuras de selección La Ilustración 3 muestra los diagramas de flujo de las estructuras de selección. pseudo código y diagramas de flujo 11 Aunque existe en la literatura una amplia variedad de representaciones para los símbolos utilizados en los diagramas de flujo. en este texto se adoptaran sólo cinco. mismos que se presentan en la Ilustración 1. Ilustración 1 Símbolos y su significado en los diagramas de flujo 4. refiérase a la página 3. para más detalles al respecto.Elementos de la programación estructurada: algoritmos.1. Ilustración 2 Estructura secuencial en diagrama de flujo. 4. 4.1 Estructura secuencial La Ilustración 2 muestra el diagrama de flujo que representa a la estructura de control secuencial. Ricardo Ruiz Rodríguez .1.
en caso contrario. excepto el primero y el último. de un tipo de datos en el que cada uno de los elementos que constituyen el tipo. Por último. pseudo código y diagramas de flujo 12 Ilustración 3 Estructuras de selección en diagrama de flujo a) simple. cuando la condición es verdadera.1.3 Estructuras de repetición La Ilustración 4 muestra las estructuras de repetición básicas. Se considera que dicho resultado ha de ser de tipo ordinal. 4. se ejecuta un determinado grupo de sentencias. en la estructura de selección múltiple se ejecutarán unas sentencias u otras según sea el valor que se obtenga al evaluar una expresión representada por el indicador. y si ésta es verdadera.Elementos de la programación estructurada: algoritmos. Ilustración 4 Estructuras de repetición en diagrama de flujo a) hacer mientras (while) y b) repetir hasta (do-while). es decir. se ejecutará un determinado grupo de sentencias. b) doble y c) múltiple Puede observarse en la Ilustración 3 que en la estructura de selección simple se evalúa la condición. En la estructura de selección doble. las sentencias son ignoradas. tiene un único predecesor y un único sucesor. Ricardo Ruiz Rodríguez . y si es falsa se procesará otro grupo diferente de sentencias.
En la estructura de repetición “repetir hasta”.2 Diagrama de flujo del algoritmo de Euclides La Ilustración 5 muestra el diagrama de flujo para el problema propuesto en la sección 3. además del algoritmo. El pseudo código es un lenguaje artificial de especificación de algoritmos caracterizado por: Ricardo Ruiz Rodríguez . las sentencias del interior del ciclo se ejecutan una vez y continúan repitiéndose hasta que la condición sea falsa. de donde se deduce que las sentencias se podrán ejecutar de 0 a N veces. 5 Pseudo código El pseudo código es otro tipo de notación algorítmica textual. del proceso de salida y del proceso general de solución. La verificación de la condición se realiza al final del ciclo. además de que se pregunta por la condición al principio. es que los enunciados del cuerpo del ciclo se realizan cuando la condición es verdadera.4. 4.Elementos de la programación estructurada: algoritmos. se ha indicado en recuadros de menor intensidad las especificaciones del proceso de entrada.4. pseudo código y diagramas de flujo 13 Lo que caracteriza a la estructura de repetición “hacer mientras”. por lo que se deduce que las sentencias se ejecutarán al menos una vez y hasta un máximo de N. Ilustración 5 Diagrama de flujo para el algoritmo de Euclides Para ser congruentes con la propuesta de solución realizada en la sección 3. La solución al problema está determinada por el algoritmo de Euclides.
Tabla 4 Estructura secuencial en pseudo código <Sentencia 1> <Sentencia 2> . por lo que en esta sección la descripción de las mismas sólo se limita a su presentación.1.1 Estructura secuencial La Tabla 4 ilustra la representación en pseudo código de la estructura secuencial. El pseudo código se concibió para superar las dos principales desventajas del diagrama de flujo: lento de crear y difícil de modificar sin un nuevo diagrama.1. doble y compuesta se muestran respectivamente en la Tabla 5. • Disponer de un conjunto pequeño y completo de palabras reservadas que permitan expresar: las acciones elementales. Es una herramienta muy buena para el seguimiento de la lógica de un algoritmo.1 Estructuras de control A continuación se muestran las principales estructuras selectivas y de repetición en su representación en pseudo código.2 Estructuras de selección Las estructuras de selección simple. <Sentencia n> 5. y la definición de acciones con nombre. pseudo código y diagramas de flujo 14 • Mantener una identación o sangría adecuada para la fácil identificación de los elementos que lo componen. . . • Permitir la declaración de los datos (constantes y/o variables) manipulados por el algoritmo. Tabla 6 y la Tabla 7. 5. y para transformar con facilidad los algoritmos a programas escritos en un lenguaje de programación específico.Elementos de la programación estructurada: algoritmos. 5. las primitivas de composición de acciones. Ricardo Ruiz Rodríguez . Todas las estructuras siguen las mismas características descritas con anterioridad (véanse las páginas 3 y 11).
.1. . pseudo código y diagramas de flujo Tabla 5 Estructura de selección simple en pseudo código 15 if <condición> then <Sentencia(s)> Tabla 6 Estructura de selección doble en pseudo código if <condición> then <Sentencia(s) 1> else <Sentencia(s) 2> Tabla 7 Estructura de selección múltiple en pseudo código if <condición 1> then <Sentencia(s) 1> else if <condición 2> then <Sentencia(s) 2> .3 Estructuras de repetición Las estructuras de repetición “hacer mientras” y “repetir hasta” son presentadas en la Tabla 8 y la Tabla 9 respectivamente. <valor n-1> : <Sentencia(s) n-1> <else> : <Sentencia(s) n> end case 5. Tabla 8. .Elementos de la programación estructurada: algoritmos. else <Sentencia(s) n> case <indicador> of <valor 1> : <Sentencia(s) 1> <valor 2> : <Sentencia(s) 2> . Estructura de repetición hacer mientras (while) while <condición> do <Sentencia(s)> end while Tabla 9 Estructura de repetición repetir hasta (do-while) do <Sentencia(s)> while <condición> Ricardo Ruiz Rodríguez . .
4. Así mismo.Elementos de la programación estructurada: algoritmos. está basado principalmente en las reglas para la formación de programas estructurados propuestas en el libro de Deitel [Deitel95]. Ricardo Ruiz Rodríguez . con el diagrama de flujo de la Ilustración 5. Se recomienda comparar el algoritmo propuesto en la Tabla 10. la presentación de esta sección se basa principalmente en ellos. puede incurrir en diagramas de flujo no estructurados (véase la Ilustración 6). esta sección presenta el pseudo código para el problema propuesto en la sección 3. y por consiguiente en programas no estructurados. n) r = m mod n while (r ≠ 0) do m=n n=r r = m mod n end while imprimir (n) Fin 6 Diseño básico de programas estructurados La esencia del análisis mostrado a continuación.2 Pseudo código del algoritmo de Euclides Finalmente. n. Tabla 10 Algoritmo de Euclides en pseudo código Algoritmo MCD Inicio variables m. La idea entonces es. pero sin perder de vista que los conceptos también son aplicables al pseudo código. r de tipo entero obtener (m. es importante también hacer mención de que. El conectar de forma arbitraria y/o poco cuidadosa símbolos individuales de diagramas de flujo. pseudo código y diagramas de flujo 16 5. debido a la mejor visualización proporcionada por los diagramas de flujo. gracias a sus representaciones gráficas.
Tabla 11 Reglas para la formación de algoritmos estructurados 1. independientemente de la sentencia(s) que haya(n) sido seleccionada(s). sentencia. 4. sólo es procesada una de ellas y que.1 Reglas para la formación de algoritmos estructurados En la Tabla 11 se muestran las reglas para la construcción de algoritmos estructurados (adaptadas de [Deitel95]). etc. Aplicar de manera sucesiva las reglas 2 y 3 6 Las estructuras mostradas en las secciones anteriores cumplen con esto y antes de continuar se debería estar convencido de ello. Estas reglas bien podrían denominarse “Algoritmo para la construcción de algoritmos estructurados”. Esta es la regla de apilamiento. Ilustración 6 Diagrama de flujo NO estructurado 6. Cualquier rectángulo (acción. su salida converge a un punto de salida común representado por el conector.) puede ser reemplazado por dos rectángulos de manera secuencial.Elementos de la programación estructurada: algoritmos. Obsérvese que. aunque la estructura se selección múltiple mostrada en la Ilustración 3 c) parece tener más de una salida. Esta es la regla de anidamiento. de tal manera que sólo haya una forma de entrar y una de salir de la estructura de control. Empiece con el diagrama de flujo más simple. pseudo código y diagramas de flujo 17 utilizar estructuras de control de una entrada y una salida6. 3. Ricardo Ruiz Rodríguez . Cualquier rectángulo puede ser reemplazado por cualquier estructura de control. 2.
constituyen el conjunto de todos los diagramas de flujo estructurados. los diagramas de flujo que resultan de aplicar las reglas de Tabla 11. Obsérvese que la regla 1 es perfectamente consistente con el proceso general de resolución de algoritmos propuesto en la sección 3. siempre resulta en un diagrama de flujo estructurado con una apariencia nítida y de bloques constructivos [Deitel95]. Ilustración 7 Aplicación de las reglas 1 y 2 La aplicación de las reglas de la Tabla 11. es importante resaltar que la regla 4 genera estructuras más grandes. pseudo código y diagramas de flujo 18 La Ilustración 7 muestra la regla 1 y la aplicación repetida de la regla 2. también el conjunto de todos los posibles programas estructurados [Deitel95]. Ricardo Ruiz Rodríguez . Ilustración 8 Aplicación de la regla 3 Por último.4. y ya para finalizar con la presentación de los temas. Los bloques han sido substituidos por estructuras de selección doble y de repetición.Elementos de la programación estructurada: algoritmos. más complejas y más profundamente anidadas. Además. La Ilustración 8 muestra la aplicación de la regla de anidamiento al más simple diagrama de flujo. y por lo tanto.
el estudio y conocimiento de técnicas y algoritmos previos a la fase de implementación. esto es. antes de enfrentarse en una lucha encarnizada contra la computadora.Elementos de la programación estructurada: algoritmos. Ricardo Ruiz Rodríguez . 7 La ejecución de programas implementados dentro del paradigma de la programación estructurada. antes de pasar a la implementación. y realizar un conjunto de pruebas representativas. si lo que se quiere es llevar a buen fin los proyectos de programación. como la programación de sistemas. hacer un análisis concienzudo del problema a resolver. sino que es imprescindible saberlo como parte de la formación integral dentro del campo de la computación no sólo por su enfoque. especificar gradualmente dicho plan. elaborar un plan de solución general. hace que los programas sean más veloces que aquellos realizados dentro del paradigma de la programación orientada a objetos por ejemplo. con el lenguaje de programación como arma. pseudo código y diagramas de flujo 19 7 Conclusiones La programación estructurada es un paradigma que no sólo vale la pena conocer. sino porque sigue siendo ampliamente utilizado por su misma naturaleza7 dentro de diversas áreas y disciplinas. esto debido a las características inherentes de los paradigmas. se recomienda como una buena práctica de programación y como principio esencial de la Ingeniería de Software. se debería. Por otro lado. no debe confundirse a la programación estructurada con el conocimiento de un lenguaje de programación. sistemas de tiempo real. la programación estructurada es un modelo de programación. y evitar dolores de cabeza innecesarios. y es independiente del lenguaje que se utilice para su implementación. etc. Finalmente.
nist. D. Fundamental Concepts of Programming Systems. Algoritmos y Estructuras de Datos. Algoritmos y Programación Estructurada. 1976. [Kernighan00] Kernighan. B. [Abellanas91] [Deitel95] Deitel. Dictionary of Algorithms and Data Structures. y Deitel. Addison-Wesley Publishing Company Inc. Metodología de la Programación: Diagramas de flujo. 1995. y Pike R. Prentice Hall 2000 [Nist03] Nist. Prentice Hall. Jeffrey. Niklaus. 1986. Prentice Hall. J.gov/dads/ Septiembre 2003. http://www. pseudo código y diagramas de flujo 20 8 Bibliografía Abellanas. M. Mc Graw Hill. La práctica de la Programación. Ricardo Ruiz Rodríguez . H. [Joyanes93] Joyanes. Aguilar L. Cómo programar en C / C++. 1993. y Lodares D.W.Elementos de la programación estructurada: algoritmos. 1991. P. M. Macrobit ra-ma. [Wirth86] Wirth. Análisis de Algoritmos y Teoría de Grafos. [Ullman76] Ullman.
Documents Similar To Virus Hack - Elementos de la Programación Estructurada
11 - 07 Representacion de Algoritmos 01

References: resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución