You are on page 1of 3

PROGRAMACION ESTRUCTURADA.

Hasta ahora se han desarrollado algoritmos para resolver problemas sencillos en una computadora. Los algoritmos hasta ahora desarrollados en clase siguen un modelo estndar: entrada de datos, conjunto de clculos y salida de resultados. Sin embargo, mucha de la potencia real de una computadora procede de su capacidad de tomar decisiones y terminar acciones a realizar en tiempo de ejecucin, basada en el valor de determinados datos ledos de algn dispositivo de entrada o en el resultado de algunos clculos. Ahora se estudiarn dos conceptos de programacin que se requieren para conseguir potencia de decisin: 1.-La capacidad para seleccionar una accin de un conjunto de alternativas especificadas (estructuras selectivas). 2.-La capacidad para repetir una serie de acciones (estructuras repetitivas). Ya hemos visto pequeos ejemplos, tanto con Diagramas de Flujo como en programas escritos en C de las dos capacidades mencionadas; pero ahora las estudiaremos mas a fondo. REGLAS DE PROGRAMACION. Desde que las ideas de Knuth, Dijkstra y Wirth se han ido consolidando en la informtica, las reglas para la construccin de programas han ido variando, y de igual forma los lenguajes de programacin, en general, se han ido adaptando a estas reglas o tcnicas. Las reglas bsicas para efectuar una buena programacin son las siguientes: i. Disear algoritmos en etapas yendo de los conceptos generales a los conceptos de detalle mediante el mtodo descendente (top-down). ii. Dividir un algoritmo en partes independientes (mdulos) y tratar cada mdulo independientemente. iii. Establecer y utilizar para la resolucin de problemas las tcnicas de programacin estructurada. iv. Dar importancia relevante a las estructuras de datos. v. Describir completa y claramente cada algoritmo (documentacin). vi. Verificar y validar el programa con datos significativos. Este conjunto de reglas bsicas ya los hemos visto en el curso mediante ejemplos, incluido algunos esbozos de la programacin estructurada, por ello lo estudiaremos con mas detalle a continuacin. PROGRAMACION ESTRUCTURADA. La programacin estructurada es el conjunto de tcnicas para desarrollar programas fciles de escribir, verificar, leer (legibles por el usuario) y mantener (modificables). Se puede concretar mas la definicin afirmando que la programacin estructurada es el conjunto de tcnicas de programacin que incluye: Un nmero limitado de estructuras de control. Diseo descendente (top-down). Descomposicin modular, con independencia de los mdulos.

Por su importancia nos enfocaremos ahora en el estudio de las estructuras de control. El Teorema de Bhm y Jacopini (1966) establece que un programa propio puede ser escrito usando solo tres tipos de estructuras de control: 1.-Secuenciales. 2.-Selectivas. 3.-Repetitivas.

Pgina: 1

Un programa se define como propio si cumple con las siguientes caractersticas: Posee un solo punto de entrada y otro de salida para el control del programa. Existen caminos desde la entrada hasta la salida que se pueden seguir y que pasan por todas las partes del programa. Todas las instrucciones son ejecutables y no existen lazos o bucles infinitos.

Un programa estructurado se puede escribir slo con estos tres tipos de estructuras de control citadas. Las estructuras se llaman de control debido a que realmente controlan cmo se ejecuta un programa. Las estructuras de control tienen slo un punto de entrada y un punto de salida, lo que har los programas estructurados ms fciles de leer y de depurar (corregir o poner a punto). DEPURAR no significa nicamente la correccin de errores y bugs (errores lgicos), sino tambin el mejoramiento del programa para incrementar su desempeo o que solucione mejor un problema, o incluso otro tipo de problemas relacionados. 1.-ESTRUCTURAS SECUENCIALES. La estructura secuencial es aquella en que una accin sigue a otra en secuencia (no hay saltos sin razn). La accin B se ejecuta despus de la accin A y ninguna accin puede ejecutarse entre ellas. La accin C sigue a la accin B, y as sucesivamente. 2.-ESTRUCTURAS SELECTIVAS. La estructura selectiva o de decisin se usan para tomar decisiones lgicas. Se clasifican en los siguientes tipos: De alternativa simple o nica (si-entonces, if-then). De alternativa doble (si-entonces-sino, if-then-else). De alternativa mltiple (en-caso o segn-sea, case).

3.-ESTRUCTURAS REPETITIVAS. Una tcnica muy potente, fundamental en toda programacin, es la construccin y uso de bucles o lazos para implementar acciones que se deben ejecutar repetidamente. La base de esta tcnica es ejecutar una u otra vez un conjunto de instrucciones evitando la necesidad de copias sucesivas de las mismas. Las tres estructuras repetitivas o iterativas mas importantes son: desde (for). mientras (while). repetir (repeat).

En los bucles existe una regla bsica de iteracin: si se tienen varias instrucciones que necesitan ser repetidas, la decisin de detener el proceso repetitivo tiene que estar situada o bien al principio de todas las instrucciones del bucle o al final de ellas. En el for y el while repiten la ejecucin de instrucciones revisando la o las condiciones de repeticin en lo alto del bucle, con ello incluso puede no haber ni siquiera ejecucin del bucle. En el repeat la o las condiciones de repeticin se sitan al final del bucle, esto provoca que al menos una vez se ejecuten las instrucciones del cuerpo del bucle. En el lenguaje C el repeat se conoce como bucle do-while. Existen tres bucles especiales que pueden ayudar al programador: 1.-El bucle vaco. Es aquel bucle que consta de cero instrucciones a repetir, su utilidad reside en ya sea provocar retardos en la ejecucin del programa, o que la o las condiciones de evaluacin sirvan adems para procesar informacin y por ello no se necesiten instrucciones en el cuerpo del bucle.

Pgina: 2

2.-El bucle que no se ejecuta. Parecera intil un bucle que no se ejecute pues no producira efecto alguno; pero en ocasiones es necesario para provocar alguna accin deseada; o incluso evitarla. 3.-El bucle infnito. Se presenta cuando un bucle se repite indefinidamente y se debe a un error de diseo de la o las condiciones de repeticin. Los bucles infinitos no intencionales son muy perjudiciales en la programacin y se deben evitar. Pero tambin existen los bucles infinitos intencionales que por necesidad de programacin son necesarios; pero no todos los lenguajes de programacin dan soporte para su manejo. Aunque un bucle est diseado para controlarse desde el lugar donde estn la o las condiciones de repeticin, en ocasiones en programacin se necesita terminar un bucle desde el interior del mismo, esto es, en un punto intermedio; pero este recurso no est disponible en todos los lenguajes de programacin y se le conoce como salir-si. En el lenguaje C existen dos instrucciones especiales para alterar el funcionamiento de un bucle: break: provoca la inmediata terminacin de un bucle y transfiere la ejecucin del programa a la siguiente instruccin posterior al bucle. continue: provoca un salto inmediato desde algn punto intermedio de un bucle al sitio donde se evalan la o las condiciones de repeticin; este salto provoca no ejecutar el resto del cuerpo del bucle. CONTROL GOTO ir-a-. El flujo de control de un algoritmo es siempre secuencial, excepto cuando las estructuras de control que acabamos de ver se usan. En ocasiones se podra necesitar bifurcaciones incondicionales; para ello se recurre al ir-a. Pero este recurso siempre ha causado polmica y personales como Dijkstra lo ha calificado como nefasta y perjudicial y no recomienda su uso. El lenguaje Pascal no lo contempla en sus palabras clave. Aunque casi todos los lenguajes de programacin lo tienen, lenguajes como BASIC y FORTRAN lo usan mas. En general no hay necesidad de usar ir-a, pues su uso hace ms difcil la lectura del cdigo de un programa. En muy pocas ocasiones es til el uso de ir-a, como en los bucles y cuando un error u otra condicin de terminacin se encuentra. La instruccin ir-a se usa mediante una etiqueta que rompe la secuencia de ejecucin de un programa.

Pgina: 3

You might also like