100% encontró este documento útil (1 voto)
814 vistas47 páginas

Programacion Estructurada PDF

El documento describe los orígenes y principios de la programación estructurada. La programación estructurada utiliza solo tres estructuras de control: secuencia, selección e iteración. Esto hace que los programas sean más fáciles de entender y mantener. Aunque hoy en día se usan técnicas más avanzadas, la programación estructurada sigue siendo útil.

Cargado por

Miguel Dextre
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
814 vistas47 páginas

Programacion Estructurada PDF

El documento describe los orígenes y principios de la programación estructurada. La programación estructurada utiliza solo tres estructuras de control: secuencia, selección e iteración. Esto hace que los programas sean más fáciles de entender y mantener. Aunque hoy en día se usan técnicas más avanzadas, la programación estructurada sigue siendo útil.

Cargado por

Miguel Dextre
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Programacion Estructurada

Programacin estructurada

La programacin estructurada es una forma de escribir programas de ordenador (programacin de computadora) de Para ello utiliza nicamente tres estructuras: secuencia, seleccin e iteracin; siendo innecesario el uso de la i instrucciones detransferencia incondicional (GOTO, EXIT FUNCTION, EXIT SUB o mltiples RETURN).

Hoy en da las aplicaciones informticas son mucho ms ambiciosas que las necesidades de programacin existente 1960, principalmente debido a las aplicaciones grficas, por lo que las tcnicas de programacin estructurada no son Ello ha llevado al desarrollo de nuevas tcnicas, tales como la programacin orientada a objetos y el desarrollo de programacin que facilitan la programacin de grandes aplicaciones.

Orgenes de la programacin estructurada

A finales de los aos 1960 surgi una nueva forma de programar que no solamente daba lugar a programas fiables sino que adems estaban escritos de manera que facilitaba su comprensin posterior.

El teorema del programa estructurado, demostrado por Bhm-Jacopini, demuestra que todo programa pued utilizando nicamente las tres instrucciones de control siguientes:
o o o

Secuencia Instruccin condicional. Iteracin (bucle de instrucciones) con condicin al principio.

Solamente con estas tres estructuras se pueden escribir todos los programas y aplicaciones posibles. Si bien los programacin tienen un mayor repertorio de estructuras de control, stas pueden ser construidas mediante las tres b

Estructura secuencial

Una estructura de programa es secuencial si se ejecutan una tras otra a modo de secuencia, es decir que una instr ejecuta hasta que finaliza la anterior. Ejemplo:
INPUT x INPUT y auxiliar= x x= y y= auxiliar

PRINT x PRINT y o o o o o

Esta secuencia de instrucciones permuta los valores de x e y, con ayuda de una variable auxiliar, intermedia. 1 Guardamos una copia del valor de x en auxiliar. 2 Guardamos el valor de y en x, se pierde el valor anterior de x pero no importa porque tenemos una copia e 3 Guardamos en y el valor de auxiliar, que es el valor inicial de x. El resultado es el intercambio de los valores de x e y, en tres operaciones secuenciales.

Estructura selectiva o de seleccin

La estructura selectiva permite la realizacin de una instruccin u otra segn un criterio, solo una de estas inst ejecutara. Ejemplo:
IF a > b THEN PRINT a ; "es mayor que" ; b ELSE PRINT a ; "no es mayor que" ; b END IF

Esta instruccin selectiva puede presentar dos mensajes, uno a es mayor que b, y el otro a no es mayor que b, solo ser presentado, segn el resultado de la comparacin de a y b, si el resultado de a > b es cierto, se presenta el prime es falso el segundo, las palabras IF, THEN, ELSE, END IF; son propias de la instruccin (palabra reservadas) q significado en el lenguaje, sirven de separadores, y el usuario no debe utilizarlas salvo para este fin.
o o o o

IF seala el comienzo de la instruccin condicional, y se espera que despus est la condicin de c instruccin. THEN seala el fin de la condicin, y despus estar la instruccin a realizar si la condicin es cierta. ELSE separa la instruccin que se ejecutar si la condicin es cierta de la que se ejecutar si es falsa. END IF indica que la instruccin condicional finaliza y el programa seguir su curso.

Ampliemos un poco el ejemplo anterior:


IF a > b THEN PRINT a ; "es mayor que" ; b ELSEIF a < b THEN

PRINT a ; "es menor que" ; b ELSE PRINT a ; "es igual que" ; b END IF

Este ejemplo nos permite considerar situaciones en las que tenemos ms de dos alternativas. En este caso hemos tres, pero hay situaciones en las que deben considerarse ms casos y para ellos se puede repetir las veces que quera ELSEIF.

Estructura iterativa

Un bucle iterativo o iteracin de una secuencia de instrucciones, hace que se repitan mientras se cumpla una cond principio el nmero de iteraciones no tiene porque estar determinado. Ejemplo:
a= 0 b= 7

WHILE b > a DO PRINT a a= a + 1 WEND

Esta instruccin tiene tres palabras reservadas WHILE, DO y WEND.


o o o

WHILE: seala el comienzo del bucle y despus de esta palabra se espera la condicin de repeticin, si la cierta se pasa al cuerpo del bucle, si no al final de la instruccin mientras. DO: seala el final de la condicin, lo que est despus ser el cuerpo del bucle. WEND: seala el final del cuerpo del bucle y de la instruccin WHILE.

El bucle mientras, se repite mientras la condicin sea cierta, esta condicin se comprueba al principio por lo que e bucle puede que no se ejecute nunca, cuando la condicin es falsa en un principio, o que se repita tantas vec necesario, mientras la condicin sea cierta. En el ejemplo tenemos dos variables a y b que al iniciarse el bucle tienen los valores a=0 y b=7.

La condicin del bucle es b > a.

Cuando a=0 y b=7. la condicin es cierta, en el cuerpo del bucle se escribe el valor de a en pantalla y se inc una unidad. Entonces a=1 y b=7. ... ... Cuando a=6 y b=7. la condicin es cierta, se escribe el valor de a en pantalla y se incrementa en una unidad. Resultando que a=7 y b=7. Entonces la condicin es falsa y la instruccin WHILE finaliza. La salida por pantalla de este ejemplo seria 0 1 2 3 4 5 6

Anidamiento

El cuerpo de cualquier estructura puede ser una instruccin simple u otra estructura, que a su vez puede anidar a otra Ejemplo:
IF a > b THEN auxiliar= a a= b b= auxiliar ELSE REM nada END IF PRINT a ; b

Ventajas de la programacin estructurada

1. Los programas son ms fciles de entender, ya que pueden ser ledos de forma secuencial, sin necesidad de hacer a saltos de lnea (GOTO) dentro de los bloques de cdigo para entender la lgica. 2. La estructura del programa es clara, puesto que las instrucciones estn ms ligadas o relacionadas entre s.

3. Reduccin del esfuerzo en las pruebas. El seguimiento de los fallos o errores del programa ("debugging") se faci la estructura ms visible, por lo que los errores se pueden detectar y corregir ms fcilmente. 4. Reduccin de los costos de mantenimiento de los programas. 5. Programas ms sencillos y ms rpidos (ya que es ms fcil su optimizacin).

6. Los bloques de cdigo son auto explicativos, lo que facilita la documentacin. 7. Los GOTO se reservan para construir las instrucciones bsicas. Aunque no se usan de forma directa, por estar utilizacin, estn incluidas implcitamente en las instrucciones de seleccin e iteracin.

8. Un programa escrito de acuerdo a estos principios no solamente tendr una mejor estructura sino tambin u presentacin. 9. La programacin estructurada ofrece estos beneficios, pero no se la debe considerar como una panacea ya que el programas es, principalmente, una tarea de dedicacin, esfuerzo y creatividad.

Inconvenientes de la programacin estructurada

El principal inconveniente de este mtodo de programacin es que se obtiene un nico bloque de programa, que cu demasiado grande puede resultar problemtico su manejo; esto se resuelve empleando la programacin modula mdulos interdependientes programados y compilados por separado (en realidad esto no es necesario, pero es r para su mantenimiento y funcionalidad).

En realidad, cuando se programa hoy en da (inicios del siglo XXI) se suelen utilizar, tanto las tcnicas de p estructurada como las de programacin modular, de forma conjunta y por lo tanto es posible que cuando uno haga re programacin estructurada est considerando tambin las tcnicas de modularizacin.

Un mtodo un poco ms sofisticado es la programacin por capas, en la que los mdulos tienen una estructura jer que se pueden definir funciones dentro de funciones o de procedimientos.

Algoritmo

En ciencias de la computacin y disciplinas relacionadas, un algoritmo (del latn, dixit algorithmus y ste a matemtico persaAl Juarismi[1] ) es una lista bien definida, ordenada y finita de operaciones que permite hallar la s problema.[2] Dado un estado inicial y una entrada, a travs de pasos sucesivos y bien definidos se llega a un obteniendo una solucin. Los algoritmos son objeto de estudio de la algoritmia.[1]

En la vida cotidiana se emplean algoritmos en multitud de ocasiones para resolver diversos problemas. Algunos encuentran en los instructivos (manuales de usuario), los cuales muestran algoritmos para usar el aparato en cuesti en las instrucciones que recibe un trabajador por parte de su patrn. Tambin existen ejemplos de ndole matemt algoritmo de la divisin para calcular el cociente de dos nmeros, el algoritmo de Euclides para calcular el m divisor de dos enteros positivos, o elmtodo de Gauss para resolver un Sistema lineal de ecuaciones.

Caractersticas principales y definicin formal

En general, no existe ningn consenso definitivo en cuanto a la definicin formal de algoritmo. Muchos autores

como listas de instrucciones para resolver un problema abstracto, es decir, que un nmero finito de pasos convierten un problema (entrada) en una solucin (salida).[1] [2] [3] [4] [5] [6] Sin embargo cabe notar que algunos al necesariamente tienen que terminar o resolver un problema en particular. Por ejemplo, una versin modificada d Eratstenes que nunca termine de calcular nmeros primos no deja de ser un algoritmo.[7]

A lo largo de la historia varios autores han tratado de definir formalmente a los algoritmos utilizando modelos comomquinas de Turing entre otros.[8] [9] Sin embargo estos modelos estn sujetos a un tipo particular de dato nmeros, smbolos o grficas mientras que, en general, los algoritmos funcionan sobre una basta cantidad de e datos.[3] [1] En general, la parte comn en todas las definiciones se puede resumir en las siguientes tres propiedad cuando no consideremosalgoritmos paralelos:[7]

Tiempo secuencial. Un algoritmo funciona en tiempo discretizado paso a paso, definiendo as una estados "computacionales" por cada entrada vlida (la entrada son los datos que se le suministran al algori comenzar). Estado abstracto. Cada estado computacional puede ser descrito formalmente utilizando una estructura de pr cada algoritmo es independiente de su implementacin (los algoritmos son objetos abstractos) de maner algoritmo las estructuras de primer orden son invariantes bajo isomorfismo. Exploracin acotada. La transicin de un estado al siguiente queda completamente determinada por una des y finita; es decir, entre cada estado y el siguiente solamente se puede tomar en cuenta una cantidad fija y trminos del estado actual.

En resumen, un algoritmo es cualquier cosa que funcione paso a paso, donde cada paso se pueda describir sin ambi hacer referencia a una computadora en particular, y adems tiene un lmite fijo en cuanto a la cantidad de datos qu leer/escribir en un solo paso. Esta amplia definicin abarca tanto a algoritmos prcticos como aquellos que solo f teora, por ejemplo elmtodo de Newton y la eliminacin de Gauss-Jordan funcionan, al menos en principio, con precisin infinita; sin embargo no es posible programar la precisin infinita en una computadora, y no por ello algoritmos.[10] En particular es posible considerar una cuarta propiedad que puede ser usada para validar la tesis Turing de que toda funcin calculable se puede programar en una mquina de Turing (o equivalentemente, en un programacin suficientemente general):[10] Aritmetizabilidad. Solamente operaciones innegablemente calculables estn disponibles en el paso inicial.

Medios de expresin de un algoritmo [editar]

Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocdigo, d flujo y lenguajes de programacin entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y exte pseudocdigo y diagramas de flujo evita muchas ambigedades del lenguaje natural. Dichas expresiones son estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programacin La descripcin de un algoritmo usualmente se hace en tres niveles:

1. Descripcin de alto nivel. Se establece el problema, se selecciona un modelo matemtico y se explica el manera verbal, posiblemente con ilustraciones y omitiendo detalles. 2. Descripcin formal. Se usa pseudocdigo para describir la secuencia de pasos que encuentran la solucin. 3. Implementacin. Se muestra el algoritmo expresado en un lenguaje de programacin especfico o algn obj

llevar a cabo instrucciones.

Tambin es posible incluir un teorema que demuestre que el algoritmo es correcto, un anlisis de complejidad o amb

Diagrama de flujo
Diagrama de flujo que expresa un algoritmo para calcular la raz cuadrada de un nmero x
Artculo principal: Diagrama de flujo

Los diagramas de flujo son descripciones grficas de algoritmos; usan smbolos conectados con flechas para indicar de instrucciones y estn regidos por ISO.

Los diagramas de flujo son usados para representar algoritmos pequeos, ya que abarcan mucho espacio y su con laboriosa. Por su facilidad de lectura son usados como introduccin a los algoritmos, descripcin de un lenguaje y de procesos a personas ajenas a la computacin.

Pseudocdigo
Artculo principal: Pseudocdigo

Pseudocdigo es la descripcin de un algoritmo que asemeja a un lenguaje de programacin pero con algunas conv lenguaje natural (de ah que tenga el prefijo pseudo, que significa falso). Tiene varias ventajas con respecto a los d flujo, entre las que se destaca el poco espacio que se requiere para representar instrucciones complejas. El pseudoc regido por ningn estndar.

Sistemas formales

La teora de autmatas y la teora de funciones recursivas proveen modelos matemticos que formalizan de algoritmo. Los modelos ms comunes son la mquina de Turing, mquina de registro y funciones -recur modelos son tan precisos como unlenguaje mquina, careciendo de expresiones coloquiales o ambigedad, sin mantienen independientes de cualquier computadora y de cualquier implementacin.

Implementacin

Muchos algoritmos son ideados para implementarse en un programa. Sin embargo, los algoritmos pueden ser imple otros medios, como una red neuronal, un circuito elctrico o un aparato mecnico y elctrico. Algunos algoritmos disean especialmente para implementarse usando lpiz y papel. El algoritmo de multiplicacin tradicional, el Euclides, la criba de Eratstenes y muchas formas de resolver la raz cuadrada son slo algunos ejemplos.

Algoritmos como funciones


Artculo principal: Teora de la computabilidad

Esquemtica de un algoritmo solucionando un problema de ciclo hamiltoniano.

Un algoritmo se puede concebir como una funcin que transforma los datos de un problema (entrada) en los d solucin (salida). Ms an, los datos se pueden representar a su vez como secuencias de bits, y en general, cualesquiera.[1] [9] [11]Como cada secuencia de bits representa a un nmero natural (vase Sistema binario), algoritmos son en esencia funciones de los nmeros naturales en los nmeros naturales que s se pueden calcular. todo algoritmo calcula una funcin donde cada nmero natural es la codificacin de un problem solucin.

En ocasiones los algoritmos son susceptibles de nunca terminar, por ejemplo, cuando entran a un bucle infinito. ocurre, el algoritmo nunca devuelve ningn valor de salida, y podemos decir que la funcin queda indefinida para entrada. Por esta razn se considera que los algoritmos son funciones parciales, es decir, no necesariamente defin su dominio de definicin.

Cuando una funcin puede ser calculada por medios algortmicos, sin importar la cantidad de memoria que ocupe que se tarde, se dice que dicha funcin es computable. No todas las funciones entre secuencias datos son c El problema de la parada es un ejemplo.

Anlisis de algoritmos
Artculo principal: Anlisis de algoritmos

Como medida de la eficiencia de un algoritmo, se suelen estudiar los recursos (memoria y tiempo) que consume el a anlisis de algoritmos se ha desarrollado para obtener valores que de alguna forma indiquen (o especifiquen) la e gasto de tiempo y memoria en funcin del tamao de los valores de entrada.

El anlisis y estudio de los algoritmos es una disciplina de las ciencias de la computacin y, en la mayora de estudio es completamente abstracto sin usar ningn tipo de lenguaje de programacin ni cualquier otra implementac en ese sentido, comparte las caractersticas de las disciplinas matemticas. As, el anlisis de los algoritmos se c principios bsicos del algoritmo, no en los de la implementacin particular. Una forma de plasmar (o algunas veces un algoritmo es escribirlo enpseudocdigo o utilizar un lenguaje muy simple tal como Lxico, cuyos cdigos puede idioma del programador.

Algunos escritores restringen la definicin de algoritmo a procedimientos que deben acabar en algn momento, otros consideran procedimientos que podran ejecutarse eternamente sin pararse, suponiendo el caso en el q algn dispositivo fsico que fuera capaz de funcionar eternamente. En este ltimo caso, la finalizacin con xito d no se podra definir como la terminacin de ste con una salida satisfactoria, sino que el xito estara definido en fu secuencias de salidas dadas durante un periodo de vida de la ejecucin del algoritmo. Por ejemplo, un algoritmo que hay ms ceros que unos en una secuenciabinaria infinita debe ejecutarse siempre para que pueda devolver un val implementa correctamente, el valor devuelto por el algoritmo ser vlido, hasta que evale el siguiente dgito bin forma, mientras evala la siguiente secuencia podrn leerse dos tipos de seales: una seal positiva (en el caso de q de ceros sea mayor que el de unos) y una negativa en caso contrario. Finalmente, la salida de este algoritmo se de devolucin de valores exclusivamente positivos si hay ms ceros que unos en la secuencia y, en cualquier otro cas una mezcla de seales positivas y negativas.

Ejemplo de algoritmo

El problema consiste en encontrar el mximo de un conjunto de nmeros. Para un ejemplo ms complejo vase A Euclides.

Descripcin de alto nivel

Dado un conjunto finito C de nmeros, se tiene el problema de encontrar el nmero ms grande. Sin prdida de ge puede asumir que dicho conjunto no es vaco y que sus elementos estn numerados como . Es decir, dado un conjunto conjunto C. se pide encontrar m tal que

para todo elemento x que

Para encontrar el elemento mximo, se asume que el primer elemento (c0) es el mximo; luego, se recorre el c compara cada valor con el valor del mximo nmero encontrado hasta ese momento. En el caso que un elemento se el mximo, se asigna su valor al mximo. Cuando se termina de recorrer la lista, el mximo nmero que se ha enc mximo de todo el conjunto.

Tipos de algoritmos segn su funcin


o o o

Algoritmo de ordenamiento Algoritmo de bsqueda

Tcnicas de diseo de algoritmos


o o o o o

o o o

Algoritmos voraces (greedy): seleccionan los elementos ms prometedores del conjunto de candidatos ha una solucin. En la mayora de los casos la solucin no es ptima. Algoritmos paralelos: permiten la divisin de un problema en subproblemas de forma que se puedan ejecu simultnea en varios procesadores. Algoritmos probabilsticos: algunos de los pasos de este tipo de algoritmos estn en funcin de valores pseud Algoritmos determinsticos: El comportamiento del algoritmo es lineal: cada paso del algoritmo tiene n paso sucesor y otro ancesor. Algoritmos no determinsticos: El comportamiento del algoritmo tiene forma de rbol y a cada paso del algo bifurcarse a cualquier nmero de pasos inmediatamente posteriores, adems todas las ramas simultneamente. Divide y vencers: dividen el problema en subconjuntos disjuntos obteniendo una solucin de cada uno d despus unirlas, logrando as la solucin al problema completo. Metaheursticas: encuentran soluciones aproximadas (no ptimas) a problemas basndose en un conocimien veces llamado experiencia) de los mismos. Programacin dinmica: intenta resolver problemas disminuyendo su coste computacional aumentando el co

o o

Ramificacin y acotacin: se basa en la construccin de las soluciones al problema mediante un rbol imp recorre de forma controlada encontrando las mejores soluciones. Vuelta Atrs (Backtracking): se construye el espacio de soluciones del problema en un rbol que completamente, almacenando las soluciones menos costosas.

Diseo estructurado

En programacin y diseo de algoritmos, el diseo estructurado persigue elaborar algoritmos que cumplan l de modularidad, para ello, dado un problema que se pretende resolver mediante la elaboracin de un programa de o busca dividir dicho programa en mdulos siguiendo los principios de diseo de Descomposicin por refinamiento creacin de una Jerarqua modular y elaboracin de mdulos Independientes.

Etapas del Diseo estructurado


Descomposicin
Por qu descomponer un problema en partes? Experimentalmente est comprobado que:
o o

Un problema complejo cuesta ms de resolver que otro ms sencillo (de Perogrullo). La complejidad de un problema global es mayor que el valor de las complejidades de cada una de su separado.

Segn esto, merece la pena el esfuerzo de dividir un problema grande en subproblemas ms pequeos. Si el objetiv un programa para resolver dicho problema grande, cada subproblema (menos complejo) podr ser resuelto po (subalgoritmo) relativamente fcil de implementar (ms que el programa global No dividido). Ahora la cuesti realizar la descomposicin?; realizando un estudio descendente Top-Down que nos lleve desde la concepcin d (programa o algoritmo) global hasta identificar sus partes (mdulos). Esta tcnica se repite aplicando una estrategi refinamiento sucesivo propuesta por el experto en Ciencias de la Computacin Niklaus Wirth, que consiste prec volver a aplicar el estudio descendente Top-Down a cada subproblema una y otra vez hasta obtener s suficientemente pequeos, que puedan ser resueltos por mdulos que cumplan, en la medida de lo posible, las c deseables en un mdulo en el mbito de la programacin. En palabras del propio Niklaus Wirth:
o

En cada paso (del refinamiento), una o varias instrucciones del programa dado, se descomponen en instru detalladas. Esta descomposicin sucesiva o refinamiento de especificaciones termina cuanto todas las instruc expresadas en trminos de la computadora usada o del lenguaje de programacin...

Conforme se refinan las tareas, tambin los datos pueden ser refinados, descompuestos o estructurados, sien refinar las especificaciones del programa y de los datos en paralelo.

Cada paso de refinamiento implica algunas decisiones de diseo. Es importante que el programador sea cons criterios subyacentes (en las decisiones de diseo adoptadas) y de la existencia de soluciones alternativas...

Problema del refinamiento sucesivo

Cundo parar el refinamiento?. Un refinamiento excesivo podra dar lugar a un nmero tan grande de mdulos qu prctica la descomposicin. Se tendrn en cuenta estos criterios para dejar de descomponer:
o o

Cuando no haya tareas bien definidas. Cuando la interfaz de un mdulo sea tan complicada como el propio mdulo

Jerarqua de mdulos

sta es una consecuencia directa de la descomposicin del problema mediante refinamientos sucesivos, el resul conjunto de mdulos estratificados en capas a modo de pirmide donde en la cima habr un nico mdulo que re programa global y en los niveles inferiores aparecern los mdulos resultantes de las sucesivas divisiones.

Al final, debe obtenerse una estructura piramidal donde los mdulos de los niveles superiores se encargan de coordinacin, lgica de la aplicacin y manipulacin de los mdulos inferiores; estos otros debern realizar tarea tratamiento y entrada/salida de informacin.

Independencia

Mdulo

En programacin un mdulo es una parte de un programa de ordenador. De las varias tareas que debe realizar un pr cumplir con su funcin u objetivos, un mdulo realizar una de dichas tareas (o quiz varias en algn caso).

En un caso general (no necesariamente relacionado con la programacin), un mdulo recibir como entrada la sal proporcionado un mdulo anterior o los datos de entrada al sistema (programa) si se trata del mdulo inicia proporcionar una salida que ser utilizada como entrada de un mdulo posterior o que ser la salida final (programa) si se tratase del mdulo final.

Particularmente, en el caso de la programacin, los mdulos suelen estar organizados jerrquicamente en niveles, d hay un mdulo superior que realiza las llamadas oportunas a los mdulos del nivel inferior. Cuando un mdulo recibe como entrada los datos proporcionados por el mdulo de nivel superior que ha hecho la llamada, realiza su ta este mdulo puede llamar a otro u otros mdulos de nivel inferior si fuera necesario; cuando finaliza su tarea, devu pertinente al mdulo superior que lo llamo inicialmente, y es este mdulo superior el que contina con la e programa.

Caractersticas de un mdulo
Cada uno de los mdulo de un programa idealmente debera cumplir las siguientes caractersticas:

o o

Tamao pequeo.- Facilita aislar el impacto que pueda tener la realizacin de un cambio en el program corregir un error, bien por rediseo del algoritmo correspondiente. Independencia modular.- Cuanto ms independientes son los mdulos entre s ms fcilmente se trabajar co implica que para desarrollar un mdulo no es necesario conocer detalles internos de otros mdulos. Como c de laindependencia modular un mdulo cumplir:

Caractersticas de caja negra, es decir abstraccin (ver abstraccin en programacin orientada a o

Aislamiento de los detalles mediante encapsulamiento (ver encapsulamiento en programacin objetos).

Evaluando el diseo

Para evaluar o determinar como de bueno es un diseo estructurado se utilizan los conceptos de acoplamiento y co estn muy relacionados entre s, tanto que difcilmente se puede variar uno sin que eso afecte al otro. Tambin ca estos conceptos no son medidas que se puedan cuantificar numricamente, son ms bien magnitudes cualitativas. tienen en consideracin los conceptos de fan-in y fan-out.

Acoplamiento

Se define como el grado de interdependencia que hay entre los distintos mdulos de un programa; lo deseable interdependencia sea lo menor posible, es decir, un bajo acoplamiento. Los niveles de acoplamiento, ordenados de deseable) a mayor (menos deseable) son:
o

Acoplamiento normal.- Un mdulo llama a otro de un nivel inferior y tan solo intercambian datos (pa entrada/salida). Dentro de este tipo de acoplamiento podemos encontrarnos 3 subtipos, dependiendo de l intercambien los mdulos: o Acoplamiento de datos: Los mdulos se comunican mediante parmetros. o Acoplamiento de marca o por estampado: Los mdulos se pasan datos con estructura de registro deseable si el mdulo receptor slo requiere parte de los datos que se le pasan. o Acoplamiento de control: Los datos que se intercambian entre los mdulos son controles. Debido a subtipo un mdulo controla la ejecucin del otro, no es un buen acoplamiento, ya que impide que sea independientes. Acoplamiento Comn.- Dos mdulos acceden a un mismo recurso comn, tpicamente memoria com variable global o un fichero. Una variante de este tipo de acoplamiento es el acoplamiento externo: o Acoplamiento externo.- Los mdulos estn ligados a componentes externos. Por ejemplo, disposit protocolos de comunicaciones... etc. Acoplamiento de contenido.- Ocurre cuando un mdulo necesita acceder a una parte de otro mdulo.

Cohesin

Se define como la medida de fuerza o relacin funcional existente entre las sentencias o grupos de sentencias d mdulo. Un mdulo coherente ejecutar una nica tarea sencilla interactuando muy poco o nada con el resto de programa. Se persigue que los mdulos tengan una alta cohesin.

En el diseo estructurado podemos encontrarnos con los siguientes 7 tipos de cohesin (de la mejor o ms deseabl recomendable):
o o

o o

o o o

Cohesin funcional: Los elementos del mdulo estn relacionados en el desarrollo de una nica funcin. Cohesin secuencial: Un mdulo realiza distintas tareas en secuencia, de forma que las entradas de cada salidas de la tarea anterior. No es una mala cohesin si las tareas implicadas no son muy complejas y req lneas de cdigo. Cohesin comunicacional: El mdulo realiza actividades paralelas usando los mismos datos de entrada y s en el caso anterior, tampoco se trata de un mal tipo de cohesin si las tareas son relativamente sencillas. Cohesin procedimental: El mdulo tiene una serie de funciones relacionadas por un procedimiento efec cdigo (a modo de librera). Es similar a la secuencial, pero puede incluir el paso de controles. Ser dese funciones estn relacionadas o realicen tareas dentro del mismo mbito (p.e. la librera string.h de funciones para operar con cadenas de caracteres). Cohesin temporal: Los elementos del mdulo estn implicados en actividades relacionadas con el tiempo. Cohesin lgica: Las actividades que realiza el mdulo tienen la misma categora. Esto es, es como si se tu independientes dentro del mismo mdulo. Cohesin casual o coincidente: Los elementos del mdulo contribuyen a las actividades relacionndose mu una manera poco significativa. Este tipo de cohesin viola el principio de independencia y de caja negra de l

Fan-In y Fan-Out

Adems de los dos conceptos anteriores, se deben tener en cuenta el grado de absorcin (fan-in) y la disem control (fan-out) de los mdulos para garantizar la calidad del diseo.
o

Fan-In: Tambin llamado grado de absorcin. Es el nmero de superordinados inmediatos que tiene e cuestin. Es conveniente maximizar el fan-in durante el proceso de diseo, ya que cada instancia de fan indica que se ha evitado la duplicacin de cdigo. Fan-Out: Tambin llamado diseminacin del control. Es el nmero de subordinados inmediatos que tiene e cuestin. Conviene no tener un fan-out ni muy alto ni muy bajo, ya que eso es un posible indicador de un d Si no es posible evitarlo, es preferible un fan-out bajo antes que uno alto.

Diagrama de flujo
Diagrama de flujo sencillo con los pasos a seguir si una lmpara no funciona.

Un diagrama de flujo es una forma de representar grficamente los detalles algortmicos de un proceso multifactori principalmente en programacin, economa y procesos industriales, pasando tambin a partir de estas disciplinas a fundamental de otras, como la psicologa cognitiva. Estos diagramas utilizan una serie de smbolos con significados son larepresentacin grfica de los pasos de un proceso. En computacin, son modelos tecnolgicos utilizados para los rudimentos de la programacin secuencial

Definicin

Es la representacin grfica de flujo de un algoritmo o de secuencias rutinarias. Se basan en la utilizacin de diver

para representar operaciones especficas. Se les llama diagramas de flujo porque los smbolos utilizados se conecta de flechas para indicar la secuencia de la operacin.

Smbolos utilizados

Los smbolos que se utilizan para diseo se someten a una normalizacin, es decir, se hicieron smbolos casi univers en un principio cada usuario podra tener sus propios smbolos para representar sus procesos en forma de Diagra Esto trajo como consecuencia que slo aquel que conoca sus smbolos, los poda interpretar. La simbologa util elaboracin de diagramas de flujo es variable y debe ajustarse a las normas preestablecidas universalmente para dich o datos.

Caractersticas que debe cumplir un diagrama de flujo


En los diagramas de flujo se presuponen los siguientes aspectos:
o o o

Existe siempre un camino que permite llegar a una solucin (finalizacin del algoritmo). Existe un nico inicio del proceso. Existe un nico punto de fin para el proceso de flujo (salvo del rombo que indica una comparacin con posibles).

Desarrollo del diagrama de flujo Las siguientes son acciones previas a la realizacin del diagrama de flujo:
o

o o o o

Identificar las ideas principales a ser incluidas en el diagrama de flujo. Deben estar presentes el dueo o res proceso, los dueos o responsables del proceso anterior y posterior y de otros procesos interrelacionados, interesadas. Definir qu se espera obtener del diagrama de flujo. Identificar quin lo emplear y cmo. Establecer el nivel de detalle requerido. Determinar los lmites del proceso a describir.

Los pasos a seguir para construir el diagrama de flujo son :


o o o o o o

Establecer el alcance del proceso a describir. De esta manera quedar fijado el comienzo y el final d Frecuentemente el comienzo es la salida del proceso previo y el final la entrada al proceso siguiente. Identificar y listar las principales actividades/subprocesos que estn incluidos en el proceso a describir cronolgico. Si el nivel de detalle definido incluye actividades menores, listarlas tambin. Identificar y listar los puntos de decisin. Construir el diagrama respetando la secuencia cronolgica y asignando los correspondientes smbolos. Asignar un ttulo al diagrama y verificar que est completo y describa con exactitud el proceso elegido.

Diagramas Bsicos de Flujo Gramas

Estructuras de control
Con las estructuras de control se puede:
o o o o o

En lenguajes de programacin, las estructuras de control permiten modificar el flujo de ejecucin de las inst un programa.

De acuerdo a una condicin, ejecutar un grupo u otro de sentencias (If-Then-Else y Select-Case) Ejecutar un grupo de sentencias mientras exista una condicin (Do-While) Ejecutar un grupo de sentencias hasta que exista una condicin (Do-Until) Ejecutar un grupo de sentencias un nmero determinado de veces (For-Next) Etc

Todas las estructuras de control tienen un nico punto de entrada y un nico punto de salida. Las estructuras de con clasificar en : secuenciales, iterativas y de control avanzadas. Esto es una de las cosas que permite que la program por los principios de la programacin estructurada.

Los lenguajes de programacin modernos tienen estructuras de control similares. Bsicamente lo que vara entre la de control de los diferentes lenguajes es su sintaxis, cada lenguaje tiene una sintaxis propia para expresar la estructu Otros lenguajes ofrecen estructuras diferentes, como por ejemplo los comandos guardados.

Tipos de estructura de control


Antecendentes

El trmino "estructuras de control", viene del campo de la ciencia computacional. Cuando se presentan impleme Java para las estructuras de control, nos referimos a ellas con la terminologa de la Especificacin del lenguaje refiera a ella como instrucciones.

Ejecucin secuencial

Pero por lo general las instrucciones se ejecutan una despus de la otra, en el orden en que estn escritas, es decir, e Este proceso se conoce como ejecucin secuencial.

Transferencia de control

En lenguajes de programacin por excelencia como C y/o C++, el programador puede especificar que la instrucciones a ejecutarse tal vez no sea la siguiente en secuencia. Esto se conoce como transferencia de control. H en cuenta que la instruccin goto es una palabra reservada pero no se utiliza ni se recomienda. Un programa bien no necesita de esta instruccin. Si sabes programar no utilizaras goto.

Estructura de control: seleccin if simple

Se trata de una estructura de control que permite redirigir un curso de accin segn la evaluacin de una condicin falsa o verdadera. Por ejemplo: Escribir un programa en Java que compare dos nmeros e indique si cul es m mayor y/o igual, menor y/o igual, o si son iguales:
String strComparacion = "";

...
if( numero1 == numero2 ) strComparacion += numero1 + " == " + numero2; if( numero1 > numero2 ) strComparacion += numero1 + " > " + numero2; if( numero1 < numero2 ) strComparacion += numero1 + " < " + numero2; if( numero1 >= numero2 ) strComparacion += numero1 + " >= " + numero2; if( numero1 <= numero2 ) strComparacion += numero1 + " <= " + numero2; [Link](strComparacion);

...

If-Then-Else

La estructura selectiva permite la realizacin de una instruccin u otra segn un criterio, solo una de estas inst ejecutara. Ejemplo:
IF a > b THEN PRINT a ; "es mayor que" ; b ELSE PRINT a ; "no es mayor que" ; b

END IF

Esta instruccin selectiva puede presentar dos mensajes, uno a es mayor que b, y el otro a no es mayor que b, solo ser presentado, segn el resultado de la comparacin de a y b, si el resultado de a > b es cierto, se presenta el prime es falso el segundo, las palabras IF, THEN, ELSE, END IF; son propias de la instruccin (palabra reservadas) q significado en el lenguaje, sirven de separadores, y el usuario no debe utilizarlas salvo para este fin.
o o o o

IF seala el comienzo de la instruccin condicional, y se espera que despus est la condicin de c instruccin. THEN seala el fin de la condicin, y despus estar la instruccin a realizar si la condicin es cierta. ELSE separa la instruccin que se ejecutar si la condicin es cierta de la que se ejecutar si es falsa. END IF indica que la instruccin condicional finaliza y el programa seguir su curso.

Ampliemos un poco el ejemplo anterior:


IF a > b THEN PRINT a ; "es mayor que" ; b ELSEIF a < b THEN PRINT a ; "es menor que" ; b ELSE PRINT a ; "es igual que" ; b END IF

Este ejemplo nos permite considerar situaciones en las que tenemos ms de dos alternativas. En este caso hemos tres, pero hay situaciones en las que deben considerarse ms casos y para ellos se puede repetir las veces que quera ELSEIF.

Si la condicin es verdadera, se ejecuta el bloque de sentencias 1, de lo contrario, se ejecuta el bloque de sentencias


IF (Condicin) THEN (Bloque de sentencias 1) ELSE (Bloque de sentencias 2) END IF

Select-Case
o o o o o

Se evala la expresin, dando como resultado un nmero. Luego, se recorren los "Case" dentro de la estructura buscando que el nmero coincida con uno de los valore Es necesario que coincidan todos sus valores. Cuando se encuentra la primera coincidencia, se ejecuta el bloque de sentencias correspondiente y se sale de Select-Case. Si no se encuentra ninguna coincidencia con ningn valor, se ejecuta el bloque de sentencias de la seccin "C

SELECT (Expresin) CASE Valor1 (Bloque de sentencias 1) CASE Valor2 (Bloque de sentencias 2) CASE Valor n (Bloque de sentencias n) CASE ELSE (Bloque de sentencias "Else") END SELECT

Do-While
Mientras la condicin sea verdadera, se ejecutarn las sentencias del bloque.
DO WHILE (Condicin) (Bloque de sentencias) LOOP

que tambin puede expresarse:


WHILE (Condicin) (Bloque de sentencias) WEND

Do-Until
Se ejecuta el bloque de sentencias, hasta que la condicin sea verdadera
DO (Bloque de sentencias) LOOP UNTIL (Condicin)

For-Next
o o o

Primero, se evalan las expresiones 1 y 2, dando como resultado dos nmeros. La variable del bucle recorrer los valores desde el nmero dado por la expresin 1 hasta el nmero expresin 2. El bloque de sentencias se ejecutar en cada uno de los valores que tome la variable del bucle.

FOR (Variable) = (Expresin1) TO (Expresin2) STEP (Salto) (Bloque de sentencias) NEXT

Estructuras anidadas
Las estructuras de control bsicas pueden anidarse, es decir pueden ponerse una dentro de otra.

Ejercicios: Operaciones Aritmticas Bsicas (+, -, *, /) Operaciones de Comparacin( <, >, <>, <=, >=, etc.) Operaciones Aritmticas complejas (Mod, \, ^,) Operaciones de Relacin (And, Or, Not)

Operador lgico

Los operadores lgicos son utilizados por la lgica proposicional para admitir o rechazar proposiciones. En prog

ordenadores se utilizan para combinar valores lgicos (Verdadero/Falso) y obtener nuevos valores lgicos que d flujo de control de un algoritmo o programa.

Tablas de Verdad

El comportamiento de un operador lgico suele definirse mediante su correspondiente tabla de verdad, en ella s resultado que produce la aplicacin de un determinado operador a uno o dos valores lgicos. Las operaciones usuales son:

NO lgico (NOT) o negacin:

Operador unario (aplicado a un nico operando). Cambia el valor de verdad de verdadero (V) a falso (F) y v p NOT p V F F V

O lgica (OR) o disyuncin: Operador n-ario (aplicado a 2 o ms operandos). Si todos los operandos son F devuelve F; si hay sea V devuelve V. p q p OR q V V V V F V F V V F F F

Y lgica (AND) o conjuncin: Operador n-ario . Si todos los operandos son V devuelve V; si hay alguno que sea F devuelve F. p q p AND q V V V V F F F V F F F F

O-eXclusiva lgica (XOR):

Operador binario (aplicado a dos operandos). Devuelve V cuando ambos operandos son distintos y F cuando p q p XOR q V V F V F V F V V F F F

Los 16 operadores lgicos binarios pueden ser definidos a travs de la siguiente Tabla de Verdad : p q T ~p ~q q p T T T F T F T F T F T F T F T T F T T F F T T F F T T F F T F T T T T T F F F F T T T T F F F T T T T T T T T F F F F F

F T F F

T F F F

Donde:
o o o o o o o

T : tautologa : negacin alternativa, incompatibilidad, no ambos, exclusin, "NAND" : condicional, implicacin (simple), "IMP" ~ : negacin, "NOT" : implicacin inversa : bicondicional, implicacin doble, equivalencia, "EQV", "XNOR" : negacin conjunta, "NOR"

o o o o o o

: disyuncin, "", "OR" : disyuncin exclusiva, con "XOR" : negacin del condicional i : negacin del condicional : conjuncin, "Y", "AND" F : contradiccin

Bienvenidos Futuros Programadores estars apunto de dar tus primeros pasos en la amplia rama de la programacin ordenadores, ser un camino largo as que agarra fuerzas y no te rindas..... Empecemos ya.

Programacin estructurada

La programacin estructurada es una forma de escribir programas de ordenador (programacin de computadora) de Para ello utiliza nicamente tres estructuras: secuencia, seleccin e iteracin; siendo innecesario el uso de la i instrucciones detransferencia incondicional (GOTO, EXIT FUNCTION, EXIT SUB o mltiples RETURN).

Hoy en da las aplicaciones informticas son mucho ms ambiciosas que las necesidades de programacin existente 1960, principalmente debido a las aplicaciones grficas, por lo que las tcnicas de programacin estructurada no son Ello ha llevado al desarrollo de nuevas tcnicas, tales como la programacin orientada a objetos y el desarrollo de programacin que facilitan la programacin de grandes aplicaciones.

Orgenes de la programacin estructurada

A finales de los aos 1960 surgi una nueva forma de programar que no solamente daba lugar a programas fiables sino que adems estaban escritos de manera que facilitaba su comprensin posterior.

El teorema del programa estructurado, demostrado por Bhm-Jacopini, demuestra que todo programa pued utilizando nicamente las tres instrucciones de control siguientes:
o o o

Secuencia Instruccin condicional. Iteracin (bucle de instrucciones) con condicin al principio.

Solamente con estas tres estructuras se pueden escribir todos los programas y aplicaciones posibles. Si bien los programacin tienen un mayor repertorio de estructuras de control, stas pueden ser construidas mediante las tres b

Estructura secuencial

Una estructura de programa es secuencial si se ejecutan una tras otra a modo de secuencia, es decir que una instr ejecuta hasta que finaliza la anterior. Ejemplo:
INPUT x INPUT y auxiliar= x x= y y= auxiliar PRINT x PRINT y o o o o o

Esta secuencia de instrucciones permuta los valores de x e y, con ayuda de una variable auxiliar, intermedia. 1 Guardamos una copia del valor de x en auxiliar. 2 Guardamos el valor de y en x, se pierde el valor anterior de x pero no importa porque tenemos una copia e 3 Guardamos en y el valor de auxiliar, que es el valor inicial de x. El resultado es el intercambio de los valores de x e y, en tres operaciones secuenciales.

Estructura selectiva o de seleccin

La estructura selectiva permite la realizacin de una instruccin u otra segn un criterio, solo una de estas inst ejecutara. Ejemplo:
IF a > b THEN PRINT a ; "es mayor que" ; b ELSE PRINT a ; "no es mayor que" ; b END IF

Esta instruccin selectiva puede presentar dos mensajes, uno a es mayor que b, y el otro a no es mayor que b, solo ser presentado, segn el resultado de la comparacin de a y b, si el resultado de a > b es cierto, se presenta el prime es falso el segundo, las palabras IF, THEN, ELSE, END IF; son propias de la instruccin (palabra reservadas) q significado en el lenguaje, sirven de separadores, y el usuario no debe utilizarlas salvo para este fin.
o o o o

IF seala el comienzo de la instruccin condicional, y se espera que despus est la condicin de c instruccin. THEN seala el fin de la condicin, y despus estar la instruccin a realizar si la condicin es cierta. ELSE separa la instruccin que se ejecutar si la condicin es cierta de la que se ejecutar si es falsa. END IF indica que la instruccin condicional finaliza y el programa seguir su curso.

Ampliemos un poco el ejemplo anterior:


IF a > b THEN PRINT a ; "es mayor que" ; b ELSEIF a < b THEN PRINT a ; "es menor que" ; b ELSE PRINT a ; "es igual que" ; b END IF

Este ejemplo nos permite considerar situaciones en las que tenemos ms de dos alternativas. En este caso hemos tres, pero hay situaciones en las que deben considerarse ms casos y para ellos se puede repetir las veces que quera ELSEIF.

Estructura iterativa

Un bucle iterativo o iteracin de una secuencia de instrucciones, hace que se repitan mientras se cumpla una cond principio el nmero de iteraciones no tiene porque estar determinado. Ejemplo:
a= 0 b= 7

WHILE b > a DO

PRINT a a= a + 1 WEND

Esta instruccin tiene tres palabras reservadas WHILE, DO y WEND.


o o o

WHILE: seala el comienzo del bucle y despus de esta palabra se espera la condicin de repeticin, si la cierta se pasa al cuerpo del bucle, si no al final de la instruccin mientras. DO: seala el final de la condicin, lo que est despus ser el cuerpo del bucle. WEND: seala el final del cuerpo del bucle y de la instruccin WHILE.

El bucle mientras, se repite mientras la condicin sea cierta, esta condicin se comprueba al principio por lo que e bucle puede que no se ejecute nunca, cuando la condicin es falsa en un principio, o que se repita tantas vec necesario, mientras la condicin sea cierta. En el ejemplo tenemos dos variables a y b que al iniciarse el bucle tienen los valores a=0 y b=7. La condicin del bucle es b > a.

Cuando a=0 y b=7. la condicin es cierta, en el cuerpo del bucle se escribe el valor de a en pantalla y se inc una unidad. Entonces a=1 y b=7. ... ... Cuando a=6 y b=7. la condicin es cierta, se escribe el valor de a en pantalla y se incrementa en una unidad. Resultando que a=7 y b=7. Entonces la condicin es falsa y la instruccin WHILE finaliza. La salida por pantalla de este ejemplo seria 0 1 2 3 4 5 6

Anidamiento

El cuerpo de cualquier estructura puede ser una instruccin simple u otra estructura, que a su vez puede anidar a otra Ejemplo:
IF a > b THEN auxiliar= a a= b b= auxiliar ELSE REM nada

END IF PRINT a ; b

Ventajas de la programacin estructurada

1. Los programas son ms fciles de entender, ya que pueden ser ledos de forma secuencial, sin necesidad de hacer a saltos de lnea (GOTO) dentro de los bloques de cdigo para entender la lgica. 2. La estructura del programa es clara, puesto que las instrucciones estn ms ligadas o relacionadas entre s.

3. Reduccin del esfuerzo en las pruebas. El seguimiento de los fallos o errores del programa ("debugging") se faci la estructura ms visible, por lo que los errores se pueden detectar y corregir ms fcilmente. 4. Reduccin de los costos de mantenimiento de los programas. 5. Programas ms sencillos y ms rpidos (ya que es ms fcil su optimizacin). 6. Los bloques de cdigo son auto explicativos, lo que facilita la documentacin. 7. Los GOTO se reservan para construir las instrucciones bsicas. Aunque no se usan de forma directa, por estar utilizacin, estn incluidas implcitamente en las instrucciones de seleccin e iteracin.

8. Un programa escrito de acuerdo a estos principios no solamente tendr una mejor estructura sino tambin u presentacin. 9. La programacin estructurada ofrece estos beneficios, pero no se la debe considerar como una panacea ya que el programas es, principalmente, una tarea de dedicacin, esfuerzo y creatividad.

Inconvenientes de la programacin estructurada

El principal inconveniente de este mtodo de programacin es que se obtiene un nico bloque de programa, que cu demasiado grande puede resultar problemtico su manejo; esto se resuelve empleando la programacin modula mdulos interdependientes programados y compilados por separado (en realidad esto no es necesario, pero es re para su mantenimiento y funcionalidad).

En realidad, cuando se programa hoy en da (inicios del siglo XXI) se suelen utilizar, tanto las tcnicas de p estructurada como las de programacin modular, de forma conjunta y por lo tanto es posible que cuando uno haga re programacin estructurada est considerando tambin las tcnicas de modularizacin.

Un mtodo un poco ms sofisticado es la programacin por capas, en la que los mdulos tienen una estructura jer que se pueden definir funciones dentro de funciones o de procedimientos.

Algoritmo

En ciencias de la computacin y disciplinas relacionadas, un algoritmo (del latn, dixit algorithmus y ste a matemtico persaAl Juarismi[1] ) es una lista bien definida, ordenada y finita de operaciones que permite hallar la s problema.[2] Dado un estado inicial y una entrada, a travs de pasos sucesivos y bien definidos se llega a un obteniendo una solucin. Los algoritmos son objeto de estudio de la algoritmia.[1]

En la vida cotidiana se emplean algoritmos en multitud de ocasiones para resolver diversos problemas. Algunos encuentran en los instructivos (manuales de usuario), los cuales muestran algoritmos para usar el aparato en cuesti en las instrucciones que recibe un trabajador por parte de su patrn. Tambin existen ejemplos de ndole matemt algoritmo de la divisin para calcular el cociente de dos nmeros, el algoritmo de Euclides para calcular el m divisor de dos enteros positivos, o elmtodo de Gauss para resolver un Sistema lineal de ecuaciones.

Caractersticas principales y definicin formal

En general, no existe ningn consenso definitivo en cuanto a la definicin formal de algoritmo. Muchos autores como listas de instrucciones para resolver un problema abstracto, es decir, que un nmero finito de pasos convierten un problema (entrada) en una solucin (salida).[1] [2] [3] [4] [5] [6] Sin embargo cabe notar que algunos al necesariamente tienen que terminar o resolver un problema en particular. Por ejemplo, una versin modificada d Eratstenes que nunca termine de calcular nmeros primos no deja de ser un algoritmo.[7]

A lo largo de la historia varios autores han tratado de definir formalmente a los algoritmos utilizando modelos comomquinas de Turing entre otros.[8] [9] Sin embargo estos modelos estn sujetos a un tipo particular de dato nmeros, smbolos o grficas mientras que, en general, los algoritmos funcionan sobre una basta cantidad de e datos.[3] [1] En general, la parte comn en todas las definiciones se puede resumir en las siguientes tres propiedad cuando no consideremosalgoritmos paralelos:[7]

Tiempo secuencial. Un algoritmo funciona en tiempo discretizado paso a paso, definiendo as una estados "computacionales" por cada entrada vlida (la entrada son los datos que se le suministran al algori comenzar). Estado abstracto. Cada estado computacional puede ser descrito formalmente utilizando una estructura de pr cada algoritmo es independiente de su implementacin (los algoritmos son objetos abstractos) de maner algoritmo las estructuras de primer orden son invariantes bajo isomorfismo. Exploracin acotada. La transicin de un estado al siguiente queda completamente determinada por una des y finita; es decir, entre cada estado y el siguiente solamente se puede tomar en cuenta una cantidad fija y trminos del estado actual.

En resumen, un algoritmo es cualquier cosa que funcione paso a paso, donde cada paso se pueda describir sin ambi hacer referencia a una computadora en particular, y adems tiene un lmite fijo en cuanto a la cantidad de datos qu leer/escribir en un solo paso. Esta amplia definicin abarca tanto a algoritmos prcticos como aquellos que solo teora, por ejemplo elmtodo de Newton y la eliminacin de Gauss-Jordan funcionan, al menos en principio, con

precisin infinita; sin embargo no es posible programar la precisin infinita en una computadora, y no por ello algoritmos.[10] En particular es posible considerar una cuarta propiedad que puede ser usada para validar la tesis Turing de que toda funcin calculable se puede programar en una mquina de Turing (o equivalentemente, en un programacin suficientemente general):[10] Aritmetizabilidad. Solamente operaciones innegablemente calculables estn disponibles en el paso inicial.

Medios de expresin de un algoritmo

Los algoritmos pueden ser expresados de muchas maneras, incluyendo al lenguaje natural, pseudocdigo, d flujo y lenguajes de programacin entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y exte pseudocdigo y diagramas de flujo evita muchas ambigedades del lenguaje natural. Dichas expresiones son estructuradas para representar algoritmos; no obstante, se mantienen independientes de un lenguaje de programacin La descripcin de un algoritmo usualmente se hace en tres niveles:

1. Descripcin de alto nivel. Se establece el problema, se selecciona un modelo matemtico y se explica el manera verbal, posiblemente con ilustraciones y omitiendo detalles. 2. Descripcin formal. Se usa pseudocdigo para describir la secuencia de pasos que encuentran la solucin. 3. Implementacin. Se muestra el algoritmo expresado en un lenguaje de programacin especfico o algn obj llevar a cabo instrucciones.

Tambin es posible incluir un teorema que demuestre que el algoritmo es correcto, un anlisis de complejidad o amb

Diagrama de flujo

Diagrama de flujo que expresa un algoritmo para calcular la raz cuadrada de un nmero x
Artculo principal: Diagrama de flujo

Los diagramas de flujo son descripciones grficas de algoritmos; usan smbolos conectados con flechas para indicar de instrucciones y estn regidos por ISO.

Los diagramas de flujo son usados para representar algoritmos pequeos, ya que abarcan mucho espacio y su con laboriosa. Por su facilidad de lectura son usados como introduccin a los algoritmos, descripcin de un lenguaje y de procesos a personas ajenas a la computacin.

Pseudocdigo
Artculo principal: Pseudocdigo

Pseudocdigo es la descripcin de un algoritmo que asemeja a un lenguaje de programacin pero con algunas conv lenguaje natural (de ah que tenga el prefijo pseudo, que significa falso). Tiene varias ventajas con respecto a los d flujo, entre las que se destaca el poco espacio que se requiere para representar instrucciones complejas. El pseudoc regido por ningn estndar.

Sistemas formales

La teora de autmatas y la teora de funciones recursivas proveen modelos matemticos que formalizan de algoritmo. Los modelos ms comunes son la mquina de Turing, mquina de registro y funciones -recur modelos son tan precisos como unlenguaje mquina, careciendo de expresiones coloquiales o ambigedad, sin mantienen independientes de cualquier computadora y de cualquier implementacin.

Implementacin

Muchos algoritmos son ideados para implementarse en un programa. Sin embargo, los algoritmos pueden ser imple otros medios, como una red neuronal, un circuito elctrico o un aparato mecnico y elctrico. Algunos algoritmos disean especialmente para implementarse usando lpiz y papel. El algoritmo de multiplicacin tradicional, el Euclides, la criba de Eratstenes y muchas formas de resolver la raz cuadrada son slo algunos ejemplos.

Algoritmos como funciones


Artculo principal: Teora de la computabilidad

Esquemtica de un algoritmo solucionando un problema de ciclo hamiltoniano.

Un algoritmo se puede concebir como una funcin que transforma los datos de un problema (entrada) en los d solucin (salida). Ms an, los datos se pueden representar a su vez como secuencias de bits, y en general, cualesquiera.[1] [9] [11]Como cada secuencia de bits representa a un nmero natural (vase Sistema binario), algoritmos son en esencia funciones de los nmeros naturales en los nmeros naturales que s se pueden calcular. todo algoritmo calcula una funcin donde cada nmero natural es la codificacin de un problem solucin.

En ocasiones los algoritmos son susceptibles de nunca terminar, por ejemplo, cuando entran a un bucle infinito. ocurre, el algoritmo nunca devuelve ningn valor de salida, y podemos decir que la funcin queda indefinida para entrada. Por esta razn se considera que los algoritmos son funciones parciales, es decir, no necesariamente defin su dominio de definicin.

Cuando una funcin puede ser calculada por medios algortmicos, sin importar la cantidad de memoria que ocupe que se tarde, se dice que dicha funcin es computable. No todas las funciones entre secuencias datos son c El problema de la parada es un ejemplo.

Anlisis de algoritmos
Artculo principal: Anlisis de algoritmos

Como medida de la eficiencia de un algoritmo, se suelen estudiar los recursos (memoria y tiempo) que consume el a anlisis de algoritmos se ha desarrollado para obtener valores que de alguna forma indiquen (o especifiquen) la e gasto de tiempo y memoria en funcin del tamao de los valores de entrada.

El anlisis y estudio de los algoritmos es una disciplina de las ciencias de la computacin y, en la mayora de estudio es completamente abstracto sin usar ningn tipo de lenguaje de programacin ni cualquier otra implementac en ese sentido, comparte las caractersticas de las disciplinas matemticas. As, el anlisis de los algoritmos se c principios bsicos del algoritmo, no en los de la implementacin particular. Una forma de plasmar (o algunas veces un algoritmo es escribirlo enpseudocdigo o utilizar un lenguaje muy simple tal como Lxico, cuyos cdigos puede idioma del programador.

Algunos escritores restringen la definicin de algoritmo a procedimientos que deben acabar en algn momento, otros consideran procedimientos que podran ejecutarse eternamente sin pararse, suponiendo el caso en el q algn dispositivo fsico que fuera capaz de funcionar eternamente. En este ltimo caso, la finalizacin con xito d no se podra definir como la terminacin de ste con una salida satisfactoria, sino que el xito estara definido en fu secuencias de salidas dadas durante un periodo de vida de la ejecucin del algoritmo. Por ejemplo, un algoritmo que hay ms ceros que unos en una secuenciabinaria infinita debe ejecutarse siempre para que pueda devolver un val implementa correctamente, el valor devuelto por el algoritmo ser vlido, hasta que evale el siguiente dgito bin forma, mientras evala la siguiente secuencia podrn leerse dos tipos de seales: una seal positiva (en el caso de q de ceros sea mayor que el de unos) y una negativa en caso contrario. Finalmente, la salida de este algoritmo se de devolucin de valores exclusivamente positivos si hay ms ceros que unos en la secuencia y, en cualquier otro cas una mezcla de seales positivas y negativas.

Ejemplo de algoritmo

El problema consiste en encontrar el mximo de un conjunto de nmeros. Para un ejemplo ms complejo vase A Euclides.

Descripcin de alto nivel

Dado un conjunto finito C de nmeros, se tiene el problema de encontrar el nmero ms grande. Sin prdida de ge puede asumir que dicho conjunto no es vaco y que sus elementos estn numerados como . Es decir, dado un conjunto conjunto C. se pide encontrar m tal que

para todo elemento x que

Para encontrar el elemento mximo, se asume que el primer elemento (c0) es el mximo; luego, se recorre el c compara cada valor con el valor del mximo nmero encontrado hasta ese momento. En el caso que un elemento se el mximo, se asigna su valor al mximo. Cuando se termina de recorrer la lista, el mximo nmero que se ha enc mximo de todo el conjunto.

Descripcin formal
El algoritmo escrito de una manera ms formal, esto es, en pseudocdigo tendra el siguiente aspecto: Algoritmo Encontrar el mximo de un conjunto funcin //C es un conjunto no vaco de nmeros// // | C | es el nmero de elementos de C// para si devolver Sobre la notacin:
o o

hasta hacer entonces

" " representa la asignacin entre dos objetos. Por ejemplo, significa que el objeto m cambia su de x "devolver" termina el algoritmo y devuelve el valor a su derecha (en este caso, el mximo de C)

Tipos de algoritmos segn su funcin


o o o

Algoritmo de ordenamiento Algoritmo de bsqueda

Tcnicas de diseo de algoritmos


o o o o o

o o o o o

Algoritmos voraces (greedy): seleccionan los elementos ms prometedores del conjunto de candidatos ha una solucin. En la mayora de los casos la solucin no es ptima. Algoritmos paralelos: permiten la divisin de un problema en subproblemas de forma que se puedan ejecu simultnea en varios procesadores. Algoritmos probabilsticos: algunos de los pasos de este tipo de algoritmos estn en funcin de valores pseud Algoritmos determinsticos: El comportamiento del algoritmo es lineal: cada paso del algoritmo tiene n paso sucesor y otro ancesor. Algoritmos no determinsticos: El comportamiento del algoritmo tiene forma de rbol y a cada paso del algo bifurcarse a cualquier nmero de pasos inmediatamente posteriores, adems todas las ramas simultneamente. Divide y vencers: dividen el problema en subconjuntos disjuntos obteniendo una solucin de cada uno d despus unirlas, logrando as la solucin al problema completo. Metaheursticas: encuentran soluciones aproximadas (no ptimas) a problemas basndose en un conocimien veces llamado experiencia) de los mismos. Programacin dinmica: intenta resolver problemas disminuyendo su coste computacional aumentando el co Ramificacin y acotacin: se basa en la construccin de las soluciones al problema mediante un rbol imp recorre de forma controlada encontrando las mejores soluciones. Vuelta Atrs (Backtracking): se construye el espacio de soluciones del problema en un rbol que completamente, almacenando las soluciones menos costosas.

Diseo estructurado

En programacin y diseo de algoritmos, el diseo estructurado persigue elaborar algoritmos que cumplan l de modularidad, para ello, dado un problema que se pretende resolver mediante la elaboracin de un programa de o busca dividir dicho programa en mdulos siguiendo los principios de diseo de Descomposicin por refinamiento creacin de una Jerarqua modular y elaboracin de mdulos Independientes.

Etapas del Diseo estructurado


Descomposicin
Por qu descomponer un problema en partes? Experimentalmente est comprobado que:
o o

Un problema complejo cuesta ms de resolver que otro ms sencillo (de Perogrullo). La complejidad de un problema global es mayor que el valor de las complejidades de cada una de su

separado.

Segn esto, merece la pena el esfuerzo de dividir un problema grande en subproblemas ms pequeos. Si el objetiv un programa para resolver dicho problema grande, cada subproblema (menos complejo) podr ser resuelto po (subalgoritmo) relativamente fcil de implementar (ms que el programa global No dividido). Ahora la cuesti realizar la descomposicin?; realizando un estudio descendente Top-Down que nos lleve desde la concepcin d (programa o algoritmo) global hasta identificar sus partes (mdulos). Esta tcnica se repite aplicando una estrategi refinamiento sucesivo propuesta por el experto en Ciencias de la Computacin Niklaus Wirth, que consiste prec volver a aplicar el estudio descendente Top-Down a cada subproblema una y otra vez hasta obtener s suficientemente pequeos, que puedan ser resueltos por mdulos que cumplan, en la medida de lo posible, las c deseables en un mdulo en el mbito de la programacin. En palabras del propio Niklaus Wirth:
o

En cada paso (del refinamiento), una o varias instrucciones del programa dado, se descomponen en instru detalladas. Esta descomposicin sucesiva o refinamiento de especificaciones termina cuanto todas las instruc expresadas en trminos de la computadora usada o del lenguaje de programacin...

Conforme se refinan las tareas, tambin los datos pueden ser refinados, descompuestos o estructurados, sien refinar las especificaciones del programa y de los datos en paralelo.

Cada paso de refinamiento implica algunas decisiones de diseo. Es importante que el programador sea cons criterios subyacentes (en las decisiones de diseo adoptadas) y de la existencia de soluciones alternativas...

Problema del refinamiento sucesivo

Cundo parar el refinamiento?. Un refinamiento excesivo podra dar lugar a un nmero tan grande de mdulos qu prctica la descomposicin. Se tendrn en cuenta estos criterios para dejar de descomponer:
o o

Cuando no haya tareas bien definidas. Cuando la interfaz de un mdulo sea tan complicada como el propio mdulo

Jerarqua de mdulos

sta es una consecuencia directa de la descomposicin del problema mediante refinamientos sucesivos, el resul conjunto de mdulos estratificados en capas a modo de pirmide donde en la cima habr un nico mdulo que re programa global y en los niveles inferiores aparecern los mdulos resultantes de las sucesivas divisiones.

Al final, debe obtenerse una estructura piramidal donde los mdulos de los niveles superiores se encargan de coordinacin, lgica de la aplicacin y manipulacin de los mdulos inferiores; estos otros debern realizar tarea tratamiento y entrada/salida de informacin.

Independencia

Mdulo

En programacin un mdulo es una parte de un programa de ordenador. De las varias tareas que debe realizar un pr cumplir con su funcin u objetivos, un mdulo realizar una de dichas tareas (o quiz varias en algn caso).

En un caso general (no necesariamente relacionado con la programacin), un mdulo recibir como entrada la sal proporcionado un mdulo anterior o los datos de entrada al sistema (programa) si se trata del mdulo inicia proporcionar una salida que ser utilizada como entrada de un mdulo posterior o que ser la salida final (programa) si se tratase del mdulo final.

Particularmente, en el caso de la programacin, los mdulos suelen estar organizados jerrquicamente en niveles, d hay un mdulo superior que realiza las llamadas oportunas a los mdulos del nivel inferior. Cuando un mdulo recibe como entrada los datos proporcionados por el mdulo de nivel superior que ha hecho la llamada, realiza su ta este mdulo puede llamar a otro u otros mdulos de nivel inferior si fuera necesario; cuando finaliza su tarea, devue pertinente al mdulo superior que lo llamo inicialmente, y es este mdulo superior el que contina con la e programa.

Caractersticas de un mdulo
Cada uno de los mdulo de un programa idealmente debera cumplir las siguientes caractersticas:
o o

Tamao pequeo.- Facilita aislar el impacto que pueda tener la realizacin de un cambio en el program corregir un error, bien por rediseo del algoritmo correspondiente. Independencia modular.- Cuanto ms independientes son los mdulos entre s ms fcilmente se trabajar co implica que para desarrollar un mdulo no es necesario conocer detalles internos de otros mdulos. Como c de laindependencia modular un mdulo cumplir:

Caractersticas de caja negra, es decir abstraccin (ver abstraccin en programacin orientada a o

Aislamiento de los detalles mediante encapsulamiento (ver encapsulamiento en programacin objetos).

Evaluando el diseo

Para evaluar o determinar como de bueno es un diseo estructurado se utilizan los conceptos de acoplamiento y co estn muy relacionados entre s, tanto que difcilmente se puede variar uno sin que eso afecte al otro. Tambin ca estos conceptos no son medidas que se puedan cuantificar numricamente, son ms bien magnitudes cualitativas. tienen en consideracin los conceptos de fan-in y fan-out.

Acoplamiento

Se define como el grado de interdependencia que hay entre los distintos mdulos de un programa; lo deseable interdependencia sea lo menor posible, es decir, un bajo acoplamiento. Los niveles de acoplamiento, ordenados de deseable) a mayor (menos deseable) son:
o

Acoplamiento normal.- Un mdulo llama a otro de un nivel inferior y tan solo intercambian datos (pa

entrada/salida). Dentro de este tipo de acoplamiento podemos encontrarnos 3 subtipos, dependiendo de l intercambien los mdulos: o Acoplamiento de datos: Los mdulos se comunican mediante parmetros. o Acoplamiento de marca o por estampado: Los mdulos se pasan datos con estructura de registro deseable si el mdulo receptor slo requiere parte de los datos que se le pasan. o Acoplamiento de control: Los datos que se intercambian entre los mdulos son controles. Debido a subtipo un mdulo controla la ejecucin del otro, no es un buen acoplamiento, ya que impide que sea independientes. Acoplamiento Comn.- Dos mdulos acceden a un mismo recurso comn, tpicamente memoria com variable global o un fichero. Una variante de este tipo de acoplamiento es el acoplamiento externo: o Acoplamiento externo.- Los mdulos estn ligados a componentes externos. Por ejemplo, disposit protocolos de comunicaciones... etc. Acoplamiento de contenido.- Ocurre cuando un mdulo necesita acceder a una parte de otro mdulo.

Cohesin

Se define como la medida de fuerza o relacin funcional existente entre las sentencias o grupos de sentencias d mdulo. Un mdulo coherente ejecutar una nica tarea sencilla interactuando muy poco o nada con el resto de programa. Se persigue que los mdulos tengan una alta cohesin.

En el diseo estructurado podemos encontrarnos con los siguientes 7 tipos de cohesin (de la mejor o ms deseabl recomendable):
o o

o o

o o o

Cohesin funcional: Los elementos del mdulo estn relacionados en el desarrollo de una nica funcin. Cohesin secuencial: Un mdulo realiza distintas tareas en secuencia, de forma que las entradas de cada salidas de la tarea anterior. No es una mala cohesin si las tareas implicadas no son muy complejas y req lneas de cdigo. Cohesin comunicacional: El mdulo realiza actividades paralelas usando los mismos datos de entrada y s en el caso anterior, tampoco se trata de un mal tipo de cohesin si las tareas son relativamente sencillas. Cohesin procedimental: El mdulo tiene una serie de funciones relacionadas por un procedimiento efec cdigo (a modo de librera). Es similar a la secuencial, pero puede incluir el paso de controles. Ser dese funciones estn relacionadas o realicen tareas dentro del mismo mbito (p.e. la librera string.h de funciones para operar con cadenas de caracteres). Cohesin temporal: Los elementos del mdulo estn implicados en actividades relacionadas con el tiempo. Cohesin lgica: Las actividades que realiza el mdulo tienen la misma categora. Esto es, es como si se tu independientes dentro del mismo mdulo. Cohesin casual o coincidente: Los elementos del mdulo contribuyen a las actividades relacionndose mu una manera poco significativa. Este tipo de cohesin viola el principio de independencia y de caja negra de l

Fan-In y Fan-Out

Adems de los dos conceptos anteriores, se deben tener en cuenta el grado de absorcin (fan-in) y la disem control (fan-out) de los mdulos para garantizar la calidad del diseo.
o

Fan-In: Tambin llamado grado de absorcin. Es el nmero de superordinados inmediatos que tiene e

cuestin. Es conveniente maximizar el fan-in durante el proceso de diseo, ya que cada instancia de fan indica que se ha evitado la duplicacin de cdigo. Fan-Out: Tambin llamado diseminacin del control. Es el nmero de subordinados inmediatos que tiene e cuestin. Conviene no tener un fan-out ni muy alto ni muy bajo, ya que eso es un posible indicador de un d Si no es posible evitarlo, es preferible un fan-out bajo antes que uno alto.

Diagrama de flujo
Diagrama de flujo sencillo con los pasos a seguir si una lmpara no funciona.

Un diagrama de flujo es una forma de representar grficamente los detalles algortmicos de un proceso multifactori principalmente en programacin, economa y procesos industriales, pasando tambin a partir de estas disciplinas a fundamental de otras, como la psicologa cognitiva. Estos diagramas utilizan una serie de smbolos con significados son larepresentacin grfica de los pasos de un proceso. En computacin, son modelos tecnolgicos utilizados para los rudimentos de la programacin secuencial

Definicin

Es la representacin grfica de flujo de un algoritmo o de secuencias rutinarias. Se basan en la utilizacin de diver para representar operaciones especficas. Se les llama diagramas de flujo porque los smbolos utilizados se conecta de flechas para indicar la secuencia de la operacin.

Smbolos utilizados

Los smbolos que se utilizan para diseo se someten a una normalizacin, es decir, se hicieron smbolos casi univers en un principio cada usuario podra tener sus propios smbolos para representar sus procesos en forma de Diagra Esto trajo como consecuencia que slo aquel que conoca sus smbolos, los poda interpretar. La simbologa util elaboracin de diagramas de flujo es variable y debe ajustarse a las normas preestablecidas universalmente para dic o datos.

Caractersticas que debe cumplir un diagrama de flujo


En los diagramas de flujo se presuponen los siguientes aspectos:
o o o

Existe siempre un camino que permite llegar a una solucin (finalizacin del algoritmo). Existe un nico inicio del proceso. Existe un nico punto de fin para el proceso de flujo (salvo del rombo que indica una comparacin con posibles).

Desarrollo del diagrama de flujo

Las siguientes son acciones previas a la realizacin del diagrama de flujo:


o

o o o o

Identificar las ideas principales a ser incluidas en el diagrama de flujo. Deben estar presentes el dueo o res proceso, los dueos o responsables del proceso anterior y posterior y de otros procesos interrelacionados, interesadas. Definir qu se espera obtener del diagrama de flujo. Identificar quin lo emplear y cmo. Establecer el nivel de detalle requerido. Determinar los lmites del proceso a describir.

Los pasos a seguir para construir el diagrama de flujo son :


o o o o o o

Establecer el alcance del proceso a describir. De esta manera quedar fijado el comienzo y el final d Frecuentemente el comienzo es la salida del proceso previo y el final la entrada al proceso siguiente. Identificar y listar las principales actividades/subprocesos que estn incluidos en el proceso a describir cronolgico. Si el nivel de detalle definido incluye actividades menores, listarlas tambin. Identificar y listar los puntos de decisin. Construir el diagrama respetando la secuencia cronolgica y asignando los correspondientes smbolos. Asignar un ttulo al diagrama y verificar que est completo y describa con exactitud el proceso elegido.

Diagramas Bsicos de Flujo Gramas

Inicio o fin del programa

Pasos, procesos o lneas de instruccion de programa de computo

Operaciones de entrada y salida

Toma de desicines y Ramificacin

Conector para unir el flujo a otra parte del diagrama

Cinta magntica

Disco magntico

Conector de pagina

Lneas de flujo

Anotacin

Display, para mostrar datos

Enva datos a la impresora

Estructuras de control
Con las estructuras de control se puede:
o o o o o

En lenguajes de programacin, las estructuras de control permiten modificar el flujo de ejecucin de las inst un programa.

De acuerdo a una condicin, ejecutar un grupo u otro de sentencias (If-Then-Else y Select-Case) Ejecutar un grupo de sentencias mientras exista una condicin (Do-While) Ejecutar un grupo de sentencias hasta que exista una condicin (Do-Until) Ejecutar un grupo de sentencias un nmero determinado de veces (For-Next) Etc

Todas las estructuras de control tienen un nico punto de entrada y un nico punto de salida. Las estructuras de con clasificar en : secuenciales, iterativas y de control avanzadas. Esto es una de las cosas que permite que la program por los principios de la programacin estructurada.

Los lenguajes de programacin modernos tienen estructuras de control similares. Bsicamente lo que vara entre la de control de los diferentes lenguajes es su sintaxis, cada lenguaje tiene una sintaxis propia para expresar la estructu Otros lenguajes ofrecen estructuras diferentes, como por ejemplo los comandos guardados.

Tipos de estructura de control


Antecendentes

El trmino "estructuras de control", viene del campo de la ciencia computacional. Cuando se presentan impleme Java para las estructuras de control, nos referimos a ellas con la terminologa de la Especificacin del lenguaje refiera a ella como instrucciones.

Ejecucin secuencial

Pero por lo general las instrucciones se ejecutan una despus de la otra, en el orden en que estn escritas, es decir, e

Este proceso se conoce como ejecucin secuencial.

Transferencia de control

En lenguajes de programacin por excelencia como C y/o C++, el programador puede especificar que la instrucciones a ejecutarse tal vez no sea la siguiente en secuencia. Esto se conoce como transferencia de control. H en cuenta que la instruccin goto es una palabra reservada pero no se utiliza ni se recomienda. Un programa bien no necesita de esta instruccin. Si sabes programar no utilizaras goto.

Estructura de control: seleccin if simple

Se trata de una estructura de control que permite redirigir un curso de accin segn la evaluacin de una condicin falsa o verdadera. Por ejemplo: Escribir un programa en Java que compare dos nmeros e indique si cul es m mayor y/o igual, menor y/o igual, o si son iguales:
String strComparacion = "";

...
if( numero1 == numero2 ) strComparacion += numero1 + " == " + numero2; if( numero1 > numero2 ) strComparacion += numero1 + " > " + numero2; if( numero1 < numero2 ) strComparacion += numero1 + " < " + numero2; if( numero1 >= numero2 ) strComparacion += numero1 + " >= " + numero2; if( numero1 <= numero2 ) strComparacion += numero1 + " <= " + numero2; [Link](strComparacion);

...

If-Then-Else

La estructura selectiva permite la realizacin de una instruccin u otra segn un criterio, solo una de estas inst ejecutara.

Ejemplo:
IF a > b THEN PRINT a ; "es mayor que" ; b ELSE PRINT a ; "no es mayor que" ; b END IF

Esta instruccin selectiva puede presentar dos mensajes, uno a es mayor que b, y el otro a no es mayor que b, solo ser presentado, segn el resultado de la comparacin de a y b, si el resultado de a > b es cierto, se presenta el prime es falso el segundo, las palabras IF, THEN, ELSE, END IF; son propias de la instruccin (palabra reservadas) q significado en el lenguaje, sirven de separadores, y el usuario no debe utilizarlas salvo para este fin.
o o o o

IF seala el comienzo de la instruccin condicional, y se espera que despus est la condicin de c instruccin. THEN seala el fin de la condicin, y despus estar la instruccin a realizar si la condicin es cierta. ELSE separa la instruccin que se ejecutar si la condicin es cierta de la que se ejecutar si es falsa. END IF indica que la instruccin condicional finaliza y el programa seguir su curso.

Ampliemos un poco el ejemplo anterior:


IF a > b THEN PRINT a ; "es mayor que" ; b ELSEIF a < b THEN PRINT a ; "es menor que" ; b ELSE PRINT a ; "es igual que" ; b END IF

Este ejemplo nos permite considerar situaciones en las que tenemos ms de dos alternativas. En este caso hemos tres, pero hay situaciones en las que deben considerarse ms casos y para ellos se puede repetir las veces que quera ELSEIF.

Si la condicin es verdadera, se ejecuta el bloque de sentencias 1, de lo contrario, se ejecuta el bloque de sentencias

IF (Condicin) THEN (Bloque de sentencias 1) ELSE (Bloque de sentencias 2) END IF

Select-Case
o o o o o

Se evala la expresin, dando como resultado un nmero. Luego, se recorren los "Case" dentro de la estructura buscando que el nmero coincida con uno de los valore Es necesario que coincidan todos sus valores. Cuando se encuentra la primera coincidencia, se ejecuta el bloque de sentencias correspondiente y se sale de Select-Case. Si no se encuentra ninguna coincidencia con ningn valor, se ejecuta el bloque de sentencias de la seccin "C

SELECT (Expresin) CASE Valor1 (Bloque de sentencias 1) CASE Valor2 (Bloque de sentencias 2) CASE Valor n (Bloque de sentencias n) CASE ELSE (Bloque de sentencias "Else") END SELECT

Do-While
Mientras la condicin sea verdadera, se ejecutarn las sentencias del bloque.
DO WHILE (Condicin) (Bloque de sentencias) LOOP

que tambin puede expresarse:


WHILE (Condicin) (Bloque de sentencias) WEND

Do-Until
Se ejecuta el bloque de sentencias, hasta que la condicin sea verdadera
DO (Bloque de sentencias) LOOP UNTIL (Condicin)

For-Next
o o o

Primero, se evalan las expresiones 1 y 2, dando como resultado dos nmeros. La variable del bucle recorrer los valores desde el nmero dado por la expresin 1 hasta el nmero expresin 2. El bloque de sentencias se ejecutar en cada uno de los valores que tome la variable del bucle.

FOR (Variable) = (Expresin1) TO (Expresin2) STEP (Salto) (Bloque de sentencias) NEXT

Estructuras anidadas
Las estructuras de control bsicas pueden anidarse, es decir pueden ponerse una dentro de otra.

Ejercicios: Operaciones Aritmticas Bsicas (+, -, *, /)

Operaciones de Comparacin( <, >, <>, <=, >=, etc.) Operaciones Aritmticas complejas (Mod, \, ^,) Operaciones de Relacin (And, Or, Not)

Operador lgico

Los operadores lgicos son utilizados por la lgica proposicional para admitir o rechazar proposiciones. En prog ordenadores se utilizan para combinar valores lgicos (Verdadero/Falso) y obtener nuevos valores lgicos que d flujo de control de un algoritmo o programa.

Tablas de Verdad

El comportamiento de un operador lgico suele definirse mediante su correspondiente tabla de verdad, en ella s resultado que produce la aplicacin de un determinado operador a uno o dos valores lgicos. Las operaciones usuales son:

NO lgico (NOT) o negacin:

Operador unario (aplicado a un nico operando). Cambia el valor de verdad de verdadero (V) a falso (F) y v p NOT p V F F V

O lgica (OR) o disyuncin: Operador n-ario (aplicado a 2 o ms operandos). Si todos los operandos son F devuelve F; si hay sea V devuelve V.

p q p OR q V V V V F V F V V F F F

Y lgica (AND) o conjuncin: Operador n-ario . Si todos los operandos son V devuelve V; si hay alguno que sea F devuelve F. p q p AND q V V V V F F F V F F F F

O-eXclusiva lgica (XOR):

Operador binario (aplicado a dos operandos). Devuelve V cuando ambos operandos son distintos y F cuando p q p XOR q V V F V F V F V V

F F F

Los 16 operadores lgicos binarios pueden ser definidos a travs de la siguiente Tabla de Verdad : p q T ~p ~q q p T T T F T F T F T F T F T F T T F T T F F T T F F T T F F T F T T T T T F F F F T T T T F F F T T T T T T T T F F F F F

F T F F

T F F F

Donde:
o o o o o o o

T : tautologa : negacin alternativa, incompatibilidad, no ambos, exclusin, "NAND" : condicional, implicacin (simple), "IMP" ~ : negacin, "NOT" : implicacin inversa : bicondicional, implicacin doble, equivalencia, "EQV", "XNOR" : negacin conjunta, "NOR"

o o o o o o

: disyuncin, "", "OR" : disyuncin exclusiva, con "XOR" : negacin del condicional i : negacin del condicional : conjuncin, "Y", "AND" F : contradiccin

También podría gustarte