Escolar Documentos
Profissional Documentos
Cultura Documentos
SEMANA 1
Introduccin a la
Programacin Estructurada
Todos los derechos de autor son de la exclusiva propiedad de IACC o de los otorgantes de sus licencias. No est
permitido copiar, reproducir, reeditar, descargar, publicar, emitir, difundir, poner a disposicin del pblico ni 1
ESTE
utilizarDOCUMENTO
los contenidos paraCONTIENE LAdeSEMANA
fines comerciales 1
ninguna clase.
2
ESTE DOCUMENTO CONTIENE LA SEMANA 1
NDICE
3
ESTE DOCUMENTO CONTIENE LA SEMANA 1
INTRODUCCIN A LA PROGRAMACIN ESTRUCTURADA
OBJETIVOS ESPECFICOS
INTRODUCCIN
Una de las preguntas fundamentales del siglo XXI tiene que ver con la importancia de aprender a
programar, debido al avance de la tecnologa y al gran nivel de insercin que esta tiene en nuestra
vida. Programar es una habilidad fundamental que toda persona debiera aprender (o al menos
tener nociones bsicas).
Sin embargo, existen aquellos que afirman que debido al nivel de abstraccin que requiere
aprender a programar no todo el mundo est capacitado para aplicar este conocimiento. Algunos
autores, como Rushkoff (2010) sugieren que cuando se programa se est manipulando las
abstracciones propias para darles una forma lgica, la cual tendr algn efecto en el mundo fsico.
Es este ltimo punto el motivo fundamental por el cual es relevante aprender a programar,
porque al programar se resuelve un problema que tiene un efecto positivo en el ambiente.
4
ESTE DOCUMENTO CONTIENE LA SEMANA 1
1. EL PARADIGMA DE LA PROGRAMACIN ESTRUCTURADA
1.1. CARACTERSTICAS FUNDAMENTALES
Todo algoritmo propio puede ser expresado en trmino de solo tres de estructuras:
secuencial, condicional y repetitiva (Bhm & Jacopini, 1966, pp. 366-371),
Esto significa bsicamente que mediante el uso de estas tres estructuras, o de una combinacin de
ellas, es posible escribir cualquier programa de computacin funcionalmente apto.
Es cierto que los actuales lenguajes de programacin poseen un repertorio bastante ms amplio
de estructuras de control, agrupadas muchas de ellas en funciones prediseadas, pero tambin es
cierto que cualquiera de ellas puede ser construida a partir de estas tres estructuras bsicas, si se
generan mdulos de trabajo lo suficientemente pequeos al descomponer un problema, como
para resolver problemas ms simples. Esta tcnica se denomina refinamiento sucesivo, anlisis
descendente o estrategia de divide y vencers.
Las estructuras de control son mecanismos que tienen los programas para seleccionar, en un
momento determinado, qu operaciones ejecutar sobre las estructuras de datos. Dicho flujo
estar determinado por el programador.
Para que estas condiciones sean correctamente evaluadas por el programa, se debe dirigir el flujo
de las acciones a tomar por l, para que ejecute lo indicado en el orden correspondiente y se
obtenga el resultado esperado. Esto se hace a travs de las estructuras de control.
5
ESTE DOCUMENTO CONTIENE LA SEMANA 1
Por lo tanto, el programador a travs de estas herramientas, puede determinar el orden y la
secuencia en que sern ejecutadas las instrucciones de un programa de computador.
Las estructuras de control, de acuerdo al Teorema del Programa Estructurado, son de 3 tipos:
Secuenciacin
Seleccin
Repeticin
Cada una de ellas apunta a trabajar con diferentes tipos de manejo del flujo de un programa,
dependiendo del tipo de informacin tratada y del resultado esperado en la evaluacin de las
secuencias de programacin elaboradas.
SECUENCIACIN
La secuenciacin es la forma que tiene un programa de ejecutar sus instrucciones una tras otra, es
decir, en forma secuencial.
Ejemplo:
X=10
Y=X+10
En rigor, todos los programas utilizan esta estructura de control a lo largo de su codificacin.
Siempre habr sentencias que se ejecuten primero que otras; por ejemplo, primero se inicializan
variables y se asignan constantes, luego se ejecutan sentencias, funciones, iteraciones, etctera,
que trabajan con las estructuras de datos y los datos que estas contienen aplicando operadores de
algn tipo y, finalmente, podra pedrsele a un programa que imprima el resultado, ya sea por
pantalla o una impresora.
Todas estas acciones estarn escritas y se ejecutarn en una determinada secuencia, por lo
tanto, y en trminos generales, la secuenciacin es inherente a todo programa computacional.
6
ESTE DOCUMENTO CONTIENE LA SEMANA 1
SELECCIN
Pseudocdigo:
LEER (temperatura) SI
Temperatura es mayor a 20
ENTONCES
Prender al aire acondicionado
EN CASO CONTRARIO
No hacer nada
FIN SI
REPETICIN
Es la posibilidad de hacer que se repita una o ms veces una misma accin o grupo de acciones
mientras cierta condicin no cambie o se mantenga.
Pseudocdigo:
7
ESTE DOCUMENTO CONTIENE LA SEMANA 1
1.2. FUNCIONALIDAD Y POTENCIALIDADES
Entre los fundamentos de la PE est el proponerse dividir los procesos en estructuras simples o
bsicas. Estas estructuras se conocen como secuencia, seleccin y repeticin, las que son tan
poderosas que se encuentran en todos los lenguajes modernos en forma de sentencias.
Combinando estas estructuras simples se puede llegar a construir sistemas complejos pero de fcil
entendimiento.
Al utilizar la PE, se tiene la posibilidad de lograr que la modificacin de los mdulos sea ms fcil
ya que al modificar una de nuestras secuencias bsicas modificamos todas las estructuras que
hacen uso de ella.
La programacin estructurada (PE) presenta una serie de ventajas si se compara con la forma de
programar existente hasta su formalizacin:
8
ESTE DOCUMENTO CONTIENE LA SEMANA 1
Al utilizar esta tcnica se reduce el esfuerzo en encontrar errores dentro del cdigo. Esto,
ya que debido a su estructura ms simple y comprensible, los errores se pueden detectar y
corregir ms fcilmente.
Debido a la razn anterior, al ser ms fcil encontrar los errores, se necesitan menos horas
hombre para solucionar un problema, haciendo la mantencin del cdigo ms econmica.
Los programas son ms sencillos y ms rpidos de escribir.
Los programadores son capaces de escribir ms cdigo en menor tiempo que cuando se
utilizaba la secuencia GOTO.
Al no existir la sentencia GOTO, la estructura del programa debe ser planeada de forma
meticulosa.
Un cambio en alguna seccin del cdigo puede requerir cambios en varias partes de este si
se modificado una estructura de datos.
Estos programas pueden tener distintas funciones o realizar distintas operaciones como desplegar
imgenes, generar msica, procesar texto, etc.
9
ESTE DOCUMENTO CONTIENE LA SEMANA 1
Un conjunto de palabras y smbolos que se puede usar.
Una serie de reglas gramaticales necesarias para construir en forma correcta, tanto
sintctica como semnticamente, sus sentencias o instrucciones.
1. Java
2. C
3. C++
4. .Net
5. PHP
10
ESTE DOCUMENTO CONTIENE LA SEMANA 1
Figura 1: Lenguajes de programacin ms populares.
Fuente: http://www.exelweiss.com/blog/521/lenguajes-de-programacion-mas-populares-2008/
2.2. ALGORITMO
11
ESTE DOCUMENTO CONTIENE LA SEMANA 1
2.3. DIAGRAMA DE FLUJO
As como es posible expresar un algoritmo con palabras, tambin se puede hacer de forma grfica.
Representar los algoritmos a travs de un diagrama de flujo tiene la ventaja de permitir ver la
secuencia lgica de las operaciones durante el proceso.
Toda la simbologa utilizada en los diagramas de flujo se encuentra normalizada por la ANSI
(Instituto Norteamericano de Normalizacin1).
La utilizacin de los diagramas de flujo se reserva para describir pequeos algoritmos. Dada su
naturaleza grfica y laboriosa construccin, realizar correcciones a un diagrama de flujo (DDF) no
es simple.
1
http://goo.gl/wd89Q
12
ESTE DOCUMENTO CONTIENE LA SEMANA 1
2.4. PSEUDOCDIGO
El pseudocdigo naci como una forma de superar dos problemas fundamentales que tiene la
anterior herramienta vista, los diagramas de flujo. Esos problemas dicen relacin con la lentitud en
su creacin y su difcil modificacin sin tener que redibujar lo hecho, en caso de detectarse errores
o agregarse nuevos procesos al flujo de un programa.
Como se puede apreciar, la principal ventaja del pseudocdigo es la facilidad que brinda al usar un
lenguaje natural ms prximo al ser humano.
Un ejemplo de pseudocdigo que imprima los nmeros del uno al cien se detalla a continuacin:
PROGRAMA contador1
ENTORNO:
c <- 0
ALGORITMO:
Borrar_pantalla( )
MIENTRAS c < 101 HACER
ESCRIBIR c
c <- c + 1
FINMIENTRAS
FIN PROGRAMA
13
ESTE DOCUMENTO CONTIENE LA SEMANA 1
2.5. GOTO
Desde los inicios de la programacin, los computadores lean las instrucciones desde cintas de
papel, sin embargo, debido a las necesidades de cada programa, se haca necesario en algunas
ocasiones ejecutar programas paralelos para poder proseguir con la ejecucin del programa
actual. De esta forma surgieron computadores con ms de una unidad de cinta y una instruccin
que permita traspasar el control a otra unidad de cinta.
Esto llev al desarrollo de una instruccin dentro de un programa que permita el salto hacia otra
seccin de este. En poco tiempo surgi formalmente la expresin GOTO. Los desarrolladores
rpidamente se dieron cuenta del poder de esta instruccin, la cual permita desarrollar subrutinas
para incorporar dentro de un programa.
Pero este poder descontrolado para saltar a cualquier seccin del cdigo pronto empez a generar
ms problemas.
Una de las causas que haca tan difcil el encontrar y resolver errores en el cdigo era la utilizacin
de la sentencia GOTO. Esta sentencia bsicamente permita saltar y transferir el control a otra
lnea del programa para que se continuara la ejecucin desde ese punto.
A este tipo de cdigo se le conoce como cdigo espagueti, pues debido a todos los saltos que
provocaba el uso de la instruccin GOTO, muchos programadores comparaban leer estos cdigos
con desenredar un plato de espagueti.
14
ESTE DOCUMENTO CONTIENE LA SEMANA 1
Fuente imagen: http://www.instructables.com/id/Command-Line-Assembly-Language-Programming-for-Ard-
3/step5/Macros/
El diagrama anterior tiene como objetivo poner en forma grfica cmo poda llegar a ser el
ejercicio de intentar seguir el flujo de un programa.
Si bien era de conocimiento comn este tipo de problemas, ningn programador de esa poca se
poda imaginar un cdigo sin sentencias GOTO. Por este motivo, la aparicin de la PE gener cierto
recelo entre los desarrolladores, quienes no miraban este nuevo paradigma de forma seria hasta
que fuera validado por la industria. Sin embargo, gradualmente la PE se fue posicionando como la
forma correcta de programar.
Pasaran varios aos ms hasta que en 1972 se completara el primer proyecto de gran escala
escrito utilizando programacin estructurada. El famoso Proyecto New York Times fue
desarrollado a lo largo de 22 meses, con 83.000 lneas de cdigo y requiri 11 aos/horas hombre
de esfuerzo. Fue sometido a ms de una semana continua de pruebas sin encontrarse ningn error
y corri por 20 meses hasta que el primer error fue detectado. Adems, fue entregado sin
sobrepasar el presupuesto en tiempo ni en recursos (Albey, s. f.).
15
ESTE DOCUMENTO CONTIENE LA SEMANA 1
COMENTARIO FINAL
Esta semana se han introducido algunos conceptos bsicos que ser necesario dominar durante el
resto de la asignatura, como tambin un fragmento de la historia de la programacin estructurada
y qu problemas vino a resolver.
Es importante comprender los fundamentos de las estructuras de control estudiados, pues son las
herramientas bsicas con las que se deber trabajar da a da. Si bien estas sern cubiertas con
mayor detalle en semanas posteriores es relevante que el estudiante se familiarice con ellas a la
brevedad.
16
ESTE DOCUMENTO CONTIENE LA SEMANA 1
REFERENCIAS
Albey, J. (s. f.). Structured Programming. Recuperado de:
http://users.csc.calpoly.edu/~jdalbey/308/Resources/StructuredProgramming.pdf
Bhm, C. & Jacopini, G. (1966). Flow diagrams, Turing Machines and Languages with only Two
Linger, R.; Mills, H. & Witt, B. (1979). Structured programming - theory and practice. The systems
Rushkoff, D. (2010). Program or be Programmed ten Ccommands for a Digital Age. New York: OR
Books.
Tatroe, K.; MacIntire, P. & Lerdof, R. (2013). Programming PHP. Third Edition. O'Reilly Media.
Programacin. Semana 1.
17
ESTE DOCUMENTO CONTIENE LA SEMANA 1
18
ESTE DOCUMENTO CONTIENE LA SEMANA 1