Está en la página 1de 14

INVESTIGACIN 1

Universidad de San Carlos de Guatemala


Centro Universitario de Oriente CUNORIFacultad de Ingeniera
Programacin de Computadoras 2
Ing. Hendrick Caldern

Investigacin 1
Cynthia Rossibel Landaverry Ponce
201345870
Ingenieria Industrial

Chiquimula 28 de Julio de 2015

Introduccin

INVESTIGACIN 1

Introduccin

La programacin, es el proceso de disear, codificar, depurar y mantener el


cdigo fuente de programas computacionales. El cdigo es escrito en un
lenguaje de programacin. El propsito de la programacin es crear
programas que exhiban un comportamiento deseado. El proceso de escribir
cdigos requiere frecuentemente conocimientos en varias reas distintas,
adems del dominio del lenguaje a utilizar, algoritmos especializados y lgica
formal. Programar no involucra necesariamente otras tareas tales como el
anlisis y diseo de la aplicacin (pero s el diseo del cdigo), aunque s
suelen estar fusionadas en el desarrollo de pequeas aplicaciones.
Del proceso de programacin surge lo que comnmente se conoce como
software (conjunto de programas), aunque estrictamente esta ltima abarca
mucho ms que slo la programacin. La presente investigacin muestra
especficamente dos tipos de programacin incluyendo su evolucin en la
historia, ventajas, desventajas y la forma en como hoy en da se utiliza cada
una y en qu reas.

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.

Orgenes de la programacin estructurada


A finales de los aos 1970 surgi una nueva forma de programar que no solamente daba
lugar a programas fiables y eficientes, sino que adems estaban escritos de manera que
facilitaba su mejor comprensin, no slo proveyendo ventajas durante la fase de desarrollo,
sino tambin posibilitando una ms sencilla modificacin posterior.
El teorema del programa estructurado, propuesto por Bhm-Jacopini, demuestra que todo
programa puede escribirse utilizando nicamente las tres instrucciones de control
siguientes:

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 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.

Ventajas de la programacin estructurada


Ventajas de la programacin estructurada comparada con el modelo anterior (hoy llamado
despectivamente cdigo espagueti).

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.

La estructura de los programas es clara, puesto que las instrucciones estn ms


ligadas o relacionadas entre s.

Reduccin del esfuerzo en las pruebas y depuracin. El seguimiento de los fallos o


errores del programa (debugging) se facilita debido a su estructura ms sencilla y
comprensible, por lo que los errores se pueden detectar y corregir ms fcilmente.

Reduccin de los costos de mantenimiento. Anlogamente a la depuracin, durante


la fase de mantenimiento, modificar o extender los programas resulta ms fcil.

Los programas son ms sencillos y ms rpidos de confeccionar.

Se incrementa el rendimiento de los programadores, comparado con la forma


anterior que utiliza GOTO.

Programacin estructurada de bajo nivel


En un bajo nivel, los programas estructurados con frecuencia estn compuestos de simples
estructuras de flujo de programa jerrquicas. Estas son secuencia, seleccin y repeticin:

"Secuencia" se refiere a una ejecucin ordenada de instrucciones.


5

https://es.wikipedia.org/wiki/Programaci%C3%B3n_estructurada

INVESTIGACIN 1

En "seleccin", una de una serie de sentencias es ejecutada dependiendo del estado


del programa. Esto es usualmente expresado con palabras clave como
if..then..else..endif, switch, o case. En algunos lenguajes las palabras clave no se
puede escribir textualmente, pero debe ser delimitada (stropped).

En la "repeticin" se ejecuta una sentencia hasta que el programa alcance un estado


determinado, o las operaciones han sido aplicadas a cada elemento de una
coleccin. Esto es usualmente expresado con palabras clave como while, repeat, for
o do..until. A menudo se recomienda que cada bucle slo debe tener un punto de
entrada (y en la programacin estructural original, tambin slo un punto de salida,
y pocos lenguajes refuerzan esto).

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.

Lenguajes de programacin estructurada


Es posible hacer la programacin estructurada en cualquier lenguaje de programacin,
aunque es preferible usar algo como un lenguaje de programacin procedimental. Algunos
de los lenguajes utilizados inicialmente para programacin estructurada incluyen: ALGOL,
Pascal, PL/I y Ada pero la mayora de los nuevos lenguajes de programacin
procedimentales desde entonces han incluido caractersticas para fomentar la programacin
estructurada y a veces deliberadamente omiten caractersticas, 4 en un esfuerzo para hacer
ms difcil la programacin no estructurada.

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:

De acuerdo a una condicin, ejecutar un grupo u otro de sentencias (If-Then-Else)

De acuerdo al valor de una variable, ejecutar un grupo u otro de sentencias (SelectCase)

Ejecutar un grupo de sentencias mientras se cumpla una condicin (Do-While)

Ejecutar un grupo de sentencias hasta que se cumpla una condicin (Do-Until)

Ejecutar un grupo de sentencias un nmero determinado de veces (For-Next)

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.

Tipos de estructura de control


Algunas estructuras de control en el lenguaje Java

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

En Java, como en otros lenguajes de programacin por excelencia como C y C++, el


programador puede especificar que las siguientes instrucciones a ejecutarse tal vez no sea la
siguiente en secuencia. Esto se conoce como transferencia de control. Hay que tener en
cuenta que la instruccin goto es una palabra reservada pero no se utiliza ni se recomienda.
Un programa bien estructurado no necesita de esta instruccin.1

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

Se pueden plantear mltiples condiciones simultneamente, si se cumple la (Condicin 1),


se ejecuta (Bloque de sentencias 1) en caso contrario se comprueba la (Condicin 2), si es
cierta se ejecuta (Bloque de sentencias 2), y as sucesivamente hasta n condiciones, si
ninguna de ellas es cumple se ejecuta (Bloque de sentencias else).
IF (Condicin 1) THEN
(Bloque de sentencias 1)
ELSEIF (Condicin 2) THEN
(Bloque de sentencias 2)
.....
ELSEIF (Condicin n) THEN
(Bloque de sentencias n)
ELSE
(Bloque de sentencias else)
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.

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 valores.

Es necesario que coincidan todos sus valores.

Cuando se encuentra la primera coincidencia, se ejecuta el bloque de sentencias


correspondiente y se sale de la estructura Select-Case.

Si no se encuentra ninguna coincidencia con ningn valor, se ejecuta el bloque de


sentencias de la seccin "Case Else".

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")

Estructuras de control iterativas


Las estructuras de control iterativas o de repeticin, inician o repiten un bloque de
instrucciones si se cumple una condicin o mientras se cumple una condicin.
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
11
4

https://es.wikipedia.org/wiki/Estructuras_de_control

Se ejecuta el bloque de sentencias, hasta que la condicin sea verdadera


Do
(Bloque de sentencias)
Loop Until (Condicin)

For-Next
La sentencia For da lugar a un lazo o bucle, y permite ejecutar un conjunto de sentencias
cierto nmero de veces.

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 dado por la 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.

Estructura For-Next dentro de una estructura If-Then-Else


IF A > B THEN
FOR X = 1 To 5
(Bloque de sentencias 1)
NEXT
ELSE
(Bloque de instrucciones 2)
END IF

Estructura If-Then-Else dentro de estructura For-Next


FOR x = 10 TO 20 step 2
IF A == C THEN
(Bloque de instrucciones)
ELSE
(Bloque de instrucciones)
END IF
NEXT

Estructura For-Next que est dentro de estructura Do-While


12
4

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

También podría gustarte