Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Investigacin 1
Cynthia Rossibel Landaverry Ponce
201345870
Ingenieria Industrial
Introduccin
INVESTIGACIN 1
Introduccin
Introduccin
Programacin modular
La programacin modular es un paradigma de
programacin que consiste en dividir un programa en
mdulos o subprogramas con el fin de hacerlo ms
legible y manejable.
Se presenta histricamente como una evolucin de la
programacin estructurada para solucionar problemas de
programacin ms grandes y complejos de lo que sta
puede resolver.
Al aplicar la programacin modular, un problema
complejo debe ser dividido en varios subproblemas ms simples, y estos a su vez en otros
subproblemas ms simples. Esto debe hacerse hasta obtener subproblemas lo
suficientemente simples como para poder ser resueltos fcilmente con algn lenguaje de
programacin. sta tcnica se llama refinamiento sucesivo, divide y vencers anlisis
descendente (Top-Down).
Un 'mdulo' es cada una de las partes de un programa que resuelve uno de los
subproblemas en que se divide el problema complejo original. Cada uno de estos mdulos
tiene una tarea bien definida y algunos necesitan de otros para poder operar. En caso de que
un mdulo necesite de otro, puede comunicarse con ste mediante una interfaz de
comunicacin que tambin debe estar bien definida.
Si bien un mdulo puede entenderse como una parte de un programa en cualquiera de sus
formas y variados contextos, en la prctica se los suele tomar como sinnimos de
procedimientos y funciones. Pero no necesaria ni estrictamente un mdulo es una funcin o
un procedimiento, ya que el mismo puede contener muchos de ellos. No debe confundirse
el trmino "mdulo" (en el sentido de programacin modular) con trminos como "funcin"
o "procedimiento", propios del lenguaje que lo soporte.1
1
3
https://es.wikipedia.org/wiki/Programaci%C3%B3n_modular
INVESTIGACIN 1
Programacin estructurada
La programacin estructurada es un paradigma de programacin orientado a mejorar la
claridad, calidad y tiempo de desarrollo de un programa de computadora, utilizando
nicamente subrutinas y tres estructuras: secuencia, seleccin (if y switch) e iteracin
(bucles for y while), considerando innecesario y contraproducente el uso de la instruccin
de transferencia incondicional (GOTO), que podra conducir a "cdigo espagueti", que es
mucho ms difcil de seguir y de mantener, y era la causa de muchos errores de
programacin.
Surgi en la dcada de 1960, particularmente del trabajo de Bhm y Jacopini,1 y una
famosa carta, La sentencia goto considerada perjudicial, de Edsger Dijkstra en 19682
y fue reforzado tericamente por el teorema del programa estructurado, y prcticamente por
la aparicin de lenguajes como ALGOL con adecuadas y ricas estructuras de control.
Secuencia
Instruccin condicional.
Solamente con estas tres estructuras se pueden escribir todos los programas y aplicaciones
posibles. Si bien los lenguajes de programacin tienen un mayor repertorio de estructuras
de control, estas pueden ser construidas mediante las tres bsicas citadas.
Historia
Fundamentacin terica
4
2
https://es.wikipedia.org/wiki/Programaci%C3%B3n_estructurada
INVESTIGACIN 1
El teorema del programa estructurado proporciona la base terica de la programacin
estructurada. Seala que tres maneras de combinar programas son suficientes para expresar
cualquier funcin computable: secuencia, seleccin e iteracin. Esta observacin no se
origin con el movimiento de la programacin estructurada. Estas estructuras son
suficientes para describir el ciclo de instruccin de una unidad central de procesamiento, as
como el funcionamiento de una mquina de Turing. Por lo tanto un procesador siempre est
ejecutando un "programa estructurado" en este sentido, incluso si las instrucciones que lee
de la memoria no son parte de un programa estructurado. Sin embargo, los autores
usualmente acreditan el resultado a un documento escrito en 1966 por Bhm y Jacopini,
posiblemente porque Dijkstra haba citado este escrito. El teorema del programa
estructurado no responde a cmo escribir y analizar un programa estructurado de manera
til. Estos temas fueron abordados durante la dcada de 1960 y principio de los aos 1970,
con importantes contribuciones de Dijkstra, Robert W. Floyd, Tony Hoarey y David Gries.
Los programas son ms fciles de entender, pueden ser ledos de forma secuencial y
no hay necesidad de hacer engorrosos seguimientos en saltos de lneas (GOTO)
dentro de los bloques de cdigo para intentar entender la lgica.
https://es.wikipedia.org/wiki/Programaci%C3%B3n_estructurada
INVESTIGACIN 1
Representaciones grficas de los tres patrones bsicos. En diagrama NS cajas azules y sus
equivalentes en diagramas de flujo de control
Un lenguaje es descrito como estructurado en bloques cuando tiene una sintaxis para
encerrar estructuras entre palabras clave tipo corchete, como una sentencia if..fi en ALGOL
68, o una seccin de cdigo entre corchetes BEGIN..END, como en PL/I o la de llaves
{...} de C y muchos otros lenguajes posteriores.
6
2
https://es.wikipedia.org/wiki/Programaci%C3%B3n_estructurada
Top-down y bottom-up
Top-down (de arriba abajo) y bottom-up (de abajo arriba) son estrategias de
procesamiento de informacin caractersticas de las ciencias de la informacin,
especialmente en lo relativo al software. Por extensin se aplican tambin a otras ciencias
sociales y exactas.
En el modelo top-down se formula un resumen del sistema, sin especificar detalles. Cada
parte del sistema se refina diseando con mayor detalle. Cada parte nueva es entonces
redefinida, cada vez con mayor detalle, hasta que la especificacin completa es lo
suficientemente detallada para validar el modelo. El modelo top-down se disea con
frecuencia con la ayuda de "cajas negras" que hacen ms fcil cumplir requisitos aunque
estas cajas negras no expliquen en detalle los componentes individuales.
En contraste, en el diseo bottom-up las partes individuales se disean con detalle y luego
se enlazan para formar componentes ms grandes, que a su vez se enlazan hasta que se
forma el sistema completo. Las estrategias basadas en el flujo de informacin "bottom-up"
se antojan potencialmente necesarias y suficientes porque se basan en el conocimiento de
todas las variables que pueden afectar los elementos del sistema.
Ciencias de la computacin
En el proceso de desarrollo de software, los enfoques top-down y bottom-up juegan un
papel crucial.
El diseo top-down fue promovido en la dcada de 1970 por los investigadores de IBM
Harlan Mills y Niklaus Wirth. Mills desarroll los conceptos de programacin estructurada
para usos prcticos y los prob en un proyecto en 1969 para automatizar el ndice de la
morgue del New York Times. El xito administrativo e ingenieril del proyecto hicieron que
el enfoque top-down se esparciera por IBM y por el resto de la industria de los
computadores. Niklaus Wirth, que entre sus logros est el desarrollo del lenguaje de
programacin Pascal, escribi el artculo Program Development by Stepwise Refinement,
que tuvo mucha influencia.
Los mtodos top-down fueron favorecidos en la ingeniera de software hasta que lleg la
programacin orientada a objetos a finales de los 1980s.
El enfoque top-down enfatiza la planificacin y conocimiento completo del sistema. Se
entiende que la codificacin no puede comenzar hasta que no se haya alcanzado un nivel de
detalle suficiente, al menos en alguna parte del sistema. Esto retrasa las pruebas de las
unidades funcionales del sistema hasta que gran parte del diseo se ha completado.
Bottom-up hace nfasis en la programacin y pruebas tempranas, que pueden comenzar tan
pronto se ha especificado el primer mdulo. Este enfoque tiene el riesgo de programar
7
3
https://es.wikipedia.org/wiki/Top-down_y_bottom-up
cosas sin saber como se van a conectar al resto del sistema, y esta conexin puede no ser
tan fcil como se crey al comienzo. La reutilizacin del cdigo es uno de los mayores
beneficios del enfoque bottom-up.
El desarrollo de software moderno usualmente combina tanto top-down como bottom-up.
Aunque un conocimiento completo del sistema se considera usualmente necesario para un
buen diseo, haciendo que tericamente sea un enfoque top-down, la mayora de proyectos
de desarrollo de software tratan de usar cdigo existente en algn grado. El uso de mdulos
existentes le dan al diseo un sabor bottom-up. Algunos enfoques usan un enfoque en el que
un sistema parcialmente funcional es diseado y programado completamente, y este sistema
se va expandiendo para llenar los requisitos del proyecto.
8
3
https://es.wikipedia.org/wiki/Top-down_y_bottom-up
Estructuras de control
En lenguajes de programacin, las estructuras de control permiten modificar el flujo de
ejecucin de las instrucciones de un programa. Con las estructuras de control se puede:
Todas las estructuras de control tienen un nico punto de entrada. Las estructuras de control
se puede clasificar en: secuenciales, iterativas y de control avanzadas. Esto es una de las
cosas que permite que la programacin se rija por los principios de la programacin
estructurada. Los lenguajes de programacin modernos tienen estructuras de control
similares. Bsicamente lo que vara entre las estructuras de control de los diferentes
lenguajes es su sintaxis, cada lenguaje tiene una sintaxis propia para expresar la estructura.
Otros lenguajes ofrecen estructuras diferentes, como por ejemplo los comandos guardados.
Antecedentes
El trmino "estructuras de control", viene del campo de la ciencia computacional. Cuando
se presentan implementaciones de Java para las estructuras de control, nos referimos a ellas
con la terminologa de la Especificacin del lenguaje Java, que se refiera a ella como
instrucciones modernas.
Ejecucin secuencial
Pero por lo general las instrucciones se ejecutan una despus de la otra, en el orden en que
estn escritas, es decir, en secuencia. Este proceso se conoce como ejecucin secuencial.
Transferencia de control
9
4
https://es.wikipedia.org/wiki/Estructuras_de_control
De seleccin
Las estructuras de control de seleccin, ejecutan un bloque de instrucciones u otro, o saltan
a un subprograma o subrutina segn se cumpla o no una condicin.
Estructura de control
Las estructuras de control, denominadas tambin sentencias de control, permiten tomar
decisiones y realizar un proceso repetidas veces. Se trata de estructuras muy importantes,
ya que son las encargadas de controlar el flujo de un programa, segn los requerimientos
del mismo.
Seleccin if simple
Se trata de una estructura de control que permite redirigir un curso de accin segn la
evaluacin de una condicin simple, sea falsa o verdadera. Si la condicin es verdadera, se
ejecuta el bloque de sentencias 1, de lo contrario, se ejecuta el bloque de sentencias 2.
IF (Condicin) THEN
(Bloque de sentencias 1)
ELSE
(Bloque de sentencias 2)
END IF
Select-Case
10
4
https://es.wikipedia.org/wiki/Estructuras_de_control
Esta sentencia permite ejecutar una de entre varias acciones en funcin del valor de una
expresin. Es una alternativa a if then else cuando se compara la misma expresin con
diferentes valores.
Select (Expresin)
Case Valor1
(Bloque de sentencias
Case Valor2
(Bloque de sentencias
Case Valor n
(Bloque de sentencias
Case Else
(Bloque de sentencias
End Select
1)
2)
n)
"Else")
Do-Until
11
4
https://es.wikipedia.org/wiki/Estructuras_de_control
For-Next
La sentencia For da lugar a un lazo o bucle, y permite ejecutar un conjunto de sentencias
cierto nmero de veces.
La variable del bucle recorrer los valores desde el nmero dado por la expresin 1
hasta el nmero dado por la expresin 2.
El bloque de sentencias se ejecutar en cada uno de los valores que tome la variable
del bucle.
Estructuras anidadas
Las estructuras de control bsicas pueden anidarse, es decir pueden ponerse una dentro de
otra.
https://es.wikipedia.org/wiki/Estructuras_de_control
Do While A > 0
For X = 1 to 10
(Bloque de instrucciones)
Next
A = A - 1
Loop
13
4
https://es.wikipedia.org/wiki/Estructuras_de_control
Conclusin
Como puede verse, existen lenguajes especficos para cada tarea diferente.
Muchos de ellos (Lenguajes de Programacin) ya no se usan, mientras que las nociones de
otros han sido incorporadas a otros lenguajes. Los lenguajes y las Tcnicas de
Programacin son importantes para la utilizacin de la computadora como una herramienta
para resolver problemas. En computacin, un Problema consiste en la necesidad de
transformar un grupo de datos iniciales en un grupo diferente de datos finales (resultados).
De este modo, una computadora podr resolver un problema si alguien desarrolla un
programa que contenga las instrucciones adecuadas que permitan transformar los datos.
Los lenguajes deben ser confiables, comprensibles, eficientes en trminos de tiempo de
ejecucin y consumo de espacio, y deben satisfacer las necesidades de una comunidad, ya
sean cientficos, hombres de negocios o usuarios no tcnicos. Cada uno estos grupos estn
acostumbrados a un vocabulario particular y una manera de ver las cosas; de este modo,
existe una gran variedad de lenguajes y muy probablemente esto continuar siendo as.
14
Conclusin