You are on page 1of 18

INTRODUCCIN A LOS LENGUAJES DE PROGRAMACIN

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

INTRODUCCIN A LA PROGRAMACIN ESTRUCTURADA ................................................................... 4


OBJETIVOS ESPECFICOS ...................................................................................................................... 4
INTRODUCCIN ...................................................................................................................................... 4
1. EL PARADIGMA DE LA PROGRAMACIN ESTRUCTURADA.......................................................... 5
1.1. CARACTERSTICAS FUNDAMENTALES ................................................................................. 5
1.1.1. ESTRUCTURAS DE CONTROL ....................................................................................... 5
1.2. FUNCIONALIDAD Y POTENCIALIDADES ............................................................................... 8
1.3. VENTAJAS Y DESVENTAJAS .................................................................................................. 8
2. HERRAMIENTAS BSICAS DE LA PROGRAMACIN ESTRUCTURADA .......................................... 9
2.1. LENGUAJE DE PROGRAMACIN .......................................................................................... 9
2.2. ALGORITMO ...................................................................................................................... 11
2.3. DIAGRAMA DE FLUJO ........................................................................................................ 12
2.4. PSEUDOCDIGO ................................................................................................................ 13
2.5. GOTO ................................................................................................................................. 14
2.6. CDIGO ESPAGUETI .......................................................................................................... 14
COMENTARIO FINAL.......................................................................................................................... 16
REFERENCIAS........................................................................................................................................ 17

3
ESTE DOCUMENTO CONTIENE LA SEMANA 1
INTRODUCCIN A LA PROGRAMACIN ESTRUCTURADA

OBJETIVOS ESPECFICOS

Comprender y analizar el paradigma de la programacin estructurada distinguiendo sus


elementos fundamentales.
Analizar y aplicar las diversas herramientas bsicas de la programacin estructurada al
interior de diversas problemticas.

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.

Para lograr este objetivo se debe dominar un paradigma fundamental, el de la programacin


estructurada. Esta asignatura comenzar con la introduccin de ciertos conceptos fundamentales
para la programacin, para luego profundizar en este tema.

Durante las 9 semanas de estudio correspondientes a esta asignatura se utilizar el lenguaje de


programacin PHP. Si bien en teora esta asignatura puede ser completada utilizando nada ms
que un bloc de notas, se sugiere la utilizacin de un ambiente de desarrollo como
WriteCodeOnline, el cual facilitar la produccin de cdigo.

4
ESTE DOCUMENTO CONTIENE LA SEMANA 1
1. EL PARADIGMA DE LA PROGRAMACIN ESTRUCTURADA
1.1. CARACTERSTICAS FUNDAMENTALES

La programacin estructurada se basa en el conocido Teorema de la Estructura, tambin conocido


como Teorema del Programa Estructurado o Teorema Bhm-Jacopini, en honor de Corrado Bhn y
Giuseppe Jacopini sus autores. Dicho teorema postula esencialmente que:

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.

1.1.1. ESTRUCTURAS DE CONTROL

Un programa es un conjunto de instrucciones construidas para indicar al computador las


operaciones a realizar sobre los datos de entrada. Para dar una definicin ms completa, se puede
decir que un programa incluye o est conformado por estructuras de datos, operaciones primitivas
y estructuras de control.

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.

Por ejemplo, se necesita solicitar a un programa que, si la edad de un trabajador es superior a 65


aos, entonces calcule su salario final como tres veces su salario base, y si el trabajador tiene 65
aos o menos, entonces que su sueldo final sea calculado como dos veces su salario base.

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.

A continuacin se detallan cada una de ellas:

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

La secuenciacin es lo que permite que primero se ejecute X=10 y luego 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

Es la posibilidad que tiene el programador de indicar qu instrucciones u operaciones se


ejecutarn cuando se den ciertas condiciones, bifurcando el accionar de un programa luego de
evaluar dichas condicionantes.

Ejemplo: si la temperatura es igual o superior a 20 C, entonces debe prender el aire


acondicionado. La accin de "prender el aire acondicionado" se ejecuta si y solo si la temperatura
es igual o superior a 20 C.

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.

Ejemplo: ejecutar 50 veces la operacin X=X+1

Pseudocdigo:

PARA I=1 HASTA 50


X = X+1
PRXIMO I

7
ESTE DOCUMENTO CONTIENE LA SEMANA 1
1.2. FUNCIONALIDAD Y POTENCIALIDADES

La programacin estructurada (PE) es una tcnica de programacin que se basa en construir


programas que sean fciles de comprender. Es muy til cuando se necesita corregir o modificar un
programa despus de haberlo concluido. Al utilizar la programacin estructurada, es mucho ms
sencillo comprender la lgica del programa, ya que el desarrollo se habr realizado en diferentes
secciones.

Una forma de representar grficamente la programacin estructurada es a travs de diagramas de


flujo, los cuales representan el algoritmo con sus entradas, procesos y salidas. Esto presenta una
gran ventaja pues facilita enormemente su comprensin incluso para personas no tcnicas.

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.

La forma de aplicar toda la potencialidad de la PE para la solucin de un problema en particular es


iniciar considerando las funciones que tiene que cumplir el programa en general y despus
subdividiendo estas funciones en subfunciones ms simples hasta llegar a una situacin en donde
ya no se pueda subdividir en casos ms simples. Una vez que ya se tiene el problema subdividido
de lo complejo a lo ms simple, es momento de comenzar a programar estas funciones simples, las
cuales reutilizaremos en la construccin de estructuras ms complejas y as sucesivamente.

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.

1.3. VENTAJAS Y DESVENTAJAS

La programacin estructurada (PE) presenta una serie de ventajas si se compara con la forma de
programar existente hasta su formalizacin:

Al estar debidamente estructurados, los programas son naturalmente ms fciles de


comprender, ya que pueden ser ledos de forma secuencial y sin necesidad de hacer
engorrosos seguimientos en saltos de lneas (GOTO) dentro del cdigo para intentar
entender la lgica.

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.

Entre las desventajas de la programacin estructurada se puede mencionar:

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.

2. HERRAMIENTAS BSICAS DE LA PROGRAMACIN


ESTRUCTURADA

A continuacin se explicitan algunas definiciones fundamentales para la programacin


estructurada.

2.1. LENGUAJE DE PROGRAMACIN

Cuando se escribe un programa, lo que en realidad se est haciendo es escribir un conjunto de


instrucciones que un computador ejecuta. Obviamente, estas instrucciones deben estar escritas
de forma que una mquina pueda interpretarlas. Para que un computador pueda procesar estas
instrucciones, deben estar escritas con cierta sintaxis y utilizando letras o palabras que el
computador entienda.

En sentido amplio, se puede decir que el lenguaje de programacin es un sistema de reglas de


sintaxis y de smbolos, que operados en conjunto permiten la creacin de programas.

Estos programas pueden tener distintas funciones o realizar distintas operaciones como desplegar
imgenes, generar msica, procesar texto, etc.

Un lenguaje de programacin debe especificar al menos:

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.

Algunos de los lenguajes de programacin ms conocidos son:

1. Java
2. C
3. C++
4. .Net
5. PHP

Fuente: material elaborado para este curso, 2015.

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

En trminos simples un algoritmo es un mtodo para solucionar un problema. Corresponde a una


serie de pasos que se deben seguir para lograr un objetivo. Los algoritmos toman valores de
entradas y producen uno o ms resultados.

El trmino algoritmo proviene de la traduccin del nombre de un clebre astrnomo y matemtico


persa llamado Al-Juarismi (al-Khwarizmi), famoso por escribir un tratado sobre manipulacin de
nmeros y ecuaciones, durante el siglo IX (www.definicion.de, s.f). El trmino algoritmo se acepta
como sinnimo de la descripcin de la ejecucin de una serie de acciones ordenadas y finitas
tendientes a resolver un problema de orden especfico.

Este proceso se utiliza para resolver un problema en trminos de:

Las operaciones o procesos a realizarse.


El orden o secuencia en que ellos deben ejecutarse.

Un ejemplo de algoritmo es la conversin de metros a pies:

1) Ingrese la distancia en metros.


2) Multiplique por 0.3048.
3) Entregue resultado en pies.

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.

Un ejemplo de un DDF se aprecia a continuacin.

Fuente imagen: http://goo.gl/DwFRGW

1
http://goo.gl/wd89Q

12
ESTE DOCUMENTO CONTIENE LA SEMANA 1
2.4. PSEUDOCDIGO

El pseudocdigo es en realidad una mezcla entre lenguaje de programacin y lenguaje natural,


empleado en la programacin lgico-secuencial o estructurada, para iniciar el diseo formal de un
programa. Anlogo a la utilizacin de los algoritmos como una forma de describir una secuencia
ordenada de pasos para resolver un problema, el pseudocdigo es la forma de iniciar el diseo de
un programa de una manera secuencial y lgicamente ordenada, ya que representa las
especificaciones, en forma narrativa, de un algoritmo. El pseudocdigo es la descripcin de un
programa, usando palabras que indican el o los procesos que se deben realizar.

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.

El pseudocdigo obliga a la utilizacin de ciertos smbolos que tienen significados precisos y


establecidos, conocidos como palabras clave. Requiere tambin la existencia de una palabra clave
para cada tipo de operacin a realizar con los datos, tales como: seleccin, iteracin, instrucciones
adicionales y estructuras de control.

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.

2.6. CDIGO ESPAGUETI

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.

Un interesante ejercicio sera intentar encontrar un error en un programa en el cual, al examinar el


cdigo, apareciera una instruccin que dijera siga leyendo en la lnea 1000, que el programador
fuera a esa lnea y despus de leer un poco ms encontrara nuevamente otra instruccin que
dijera siga leyendo en la lnea 758, y as sucesivamente.

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

Formation Rules. New York: Comunications of teh ACM.

Doyle, M. (2009). Beginning PHP. First Edition. Wrox Publishing.

Linger, R.; Mills, H. & Witt, B. (1979). Structured programming - theory and practice. The systems

programming series. Miami: Addison-Wesley Longman Publishing Co.

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.

www.definicin.de (s.f). Definicin de Algoritmo. Recuperado de: http://definicion.de/algoritmo/

PARA REFERENCIAR ESTE DOCUMENTO, CONSIDERE:

IACC (2015). Introduccin a la Programacin Estructurada. Introduccin a los Lenguajes de

Programacin. Semana 1.

17
ESTE DOCUMENTO CONTIENE LA SEMANA 1
18
ESTE DOCUMENTO CONTIENE LA SEMANA 1

You might also like