Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ingeniera en Telemtica
Primer Semestre
Programa de la asignatura:
Fundamentos de programacin
Clave:
22141102 / 21141102
Ingeniera en Telemtica
Fundamentos de Programacin
Unidad 1. Diseo de algoritmos
ndice
Unidad 1. Infraestructura corporativa ........................................................................................................... 2
Presentacin de la unidad .......................................................................................................................... 2
Propsitos ..................................................................................................................................................... 3
Competencia especfica ............................................................................................................................. 3
1.1. Concepto de algoritmo y caractersticas .......................................................................................... 4
1.2. Representacin de algoritmos ........................................................................................................... 5
1.2.1. Pseudocdigo ................................................................................................................................ 6
1.2.2. Diagrama de flujo .......................................................................................................................... 8
Actividad 1. Representacin de algoritmos ...........................................................................................11
1.3. Estructuras de control .......................................................................................................................11
1.3.1. Estructuras secuenciales ........................................................................................................... 11
1.3.2. Estructuras selectivas ................................................................................................................ 14
Actividad 2. Diseo de un algoritmo con estructuras selectivas. .......................................................18
1.3.3. Estructuras repetitivas................................................................................................................ 18
Actividad 3. Diseo de un algoritmo con estructuras repetitivas .......................................................22
Evidencia de aprendizaje. Planteamiento del problema .....................................................................22
Autorreflexin .............................................................................................................................................22
Cierre de la unidad ....................................................................................................................................23
Para saber ms ..........................................................................................................................................24
Fuentes de consulta ..................................................................................................................................24
Ingeniera en Telemtica
Fundamentos de Programacin
Unidad 1. Diseo de algoritmos
Unidad 1. Infraestructura corporativa
Presentacin de la unidad
El documento con el desarrollo de los temas de cada unidad, pretende servir como un instrumento
de apoyo en la asignatura, para la realizacin de las actividades. En algunas unidades se
recomienda la revisin de recursos externos que se han seleccionado para complementar lo
revisado en el desarrollo de la unidad. Cabe mencionar que puedes consultar materiales distintos
a los recomendados para fortalecer tus aprendizajes o aclarar dudas que te surjan.
Para construir un programa de cmputo, sin lugar a dudas, la fase ms importante es el diseo de
la solucin, ya que es aqu donde se debe crear un modelo que corresponde a los pasos que
llevan a la solucin del problema en cuestin, y se conoce como algoritmo. Para construir esta
solucin se requiere no slo de inteligencia, sino tambin de creatividad, ya que el programador
slo cuenta con la especificacin del problema y su experiencia en resolver problemas de una
forma estructurada.
En este apartado se introduce formalmente el concepto de algoritmo, hablaremos de sus
caractersticas y estudiaremos dos formas de representarlos: una grfica, conocida como
diagramas de flujo; y la otra similar a un lenguaje humano, en este caso espaol, la cual se llama
pseudocdigo. Tambin se describen los tres tipos de estructuras de control: secuenciales,
selectivas y repetitivas, que son las instrucciones con que se cuenta en la programacin
estructurada para disear soluciones.
Para logar nuestro objetivo se introduce el mundo de la ardilla, en el cual se deben solucionar
problemas mediante un conjunto de instrucciones especficas que puede ejecutar una ardilla
sobre un tablero.
Ingeniera en Telemtica
Fundamentos de Programacin
Unidad 1. Diseo de algoritmos
Propsitos
En esta asignatura:
Competencia especfica
Ingeniera en Telemtica
Fundamentos de Programacin
Unidad 1. Diseo de algoritmos
1.1. Concepto de algoritmo y caractersticas
La palabra algoritmo proviene del nombre de un matemtico persa conocido como Mohammad AlKhoWrizmi, nacido alrededor del 780 d.c. en KhoWrizm, de ah el su seudnimo. Se considera
como el padre de la algoritmia porque defini las reglas paso a paso para sumar, restar,
multiplicar y dividir nmeros decimales. La traduccin al latn de Al-Khwrizm es algoritmi, que da
origen a la palabra algoritmo (Joyanes & Zohanero, 2005). Formalmente, un algoritmo se define
como una secuencia finita de instrucciones precisas y eficaces para resolver un problema, que
trabaja a partir de cero o ms datos (entrada) y devuelve un resultado (salida).4
Para ilustrar este concepto se presenta el siguiente escenario ficticio, que hemos llamado:
El mundo de la ardilla
Supongamos que una ardilla ha sido entrenada para realizar las instrucciones que se muestran en
la tabla 1.1, sobre un tablero.
Instruccin
avanza()
giraIzquierda()
Voltea a la izquierda
dejaBellota()
hayBellota()
hayPared()
recogeBellota()
ubicacin actual5
bellotasRecogidas() Dice el nmero de bellotas que tiene en la boca
Tabla 1.1: Lista de instrucciones que puede ejecutar la ardilla
Los parntesis al final de cada instruccin sirven para identificar que se trata de una orden que
puede ejecutar la ardilla. Si observas la lista de instrucciones podrs darte cuenta que, la ardilla
no es capaz de voltear a la derecha y mucho menos de responder a rdenes ms complejas
como mueve una bellota que se encuentra en la primera casilla del tablero al final del mismo. Sin
embargo, podra realizar ambas tareas si se le dan las instrucciones precisas en trminos de las
acciones que sabe hacer. Por ejemplo, para que la ardilla gire a la derecha tendramos que
ordenarle tres veces que girar a la izquierda, es decir, la secuencia de instrucciones que debe
ejecutar es:
giraIzquierda()
giraIzquierda()
giraIzquierda()
4
Esta
5
definicin es una adaptacin de la que aparecen en (Viso & Pelaez, 2007, pg. 3)
La ardilla poseen una bolsa donde almacena cualquier cantidad de bellotas.
Ingeniera en Telemtica
Fundamentos de Programacin
Unidad 1. Diseo de algoritmos
Estos pasos constituyen un algoritmo, el cual soluciona el problema de hacer que la ardilla gire a
la derecha.
Una de las caractersticas principales de los algoritmos es que cada paso debe estar definido de
forma clara y precisa, sin ambigedades, de tal manera que pueda ejecutarse de manera
inequvoca, por ejemplo, en el mundo de la ardilla, la instruccin gira() sera una instruccin
ambigua, ya que la ardilla no sabra si debe girar a la derecha o a la izquierda.
Otra caracterstica de los algoritmos es que siempre terminan, por lo que no puede ser una lista
infinita de pasos. Y tampoco puede contener pasos que sean irrealizables o cuya ejecucin sea
infinita, pues en este caso no sera posible calcular el resultado deseado, si una instruccin est
bien definida y es eficaz se puede asegurar que su ejecucin termina con xito, sin embargo, esto
no garantiza, de ninguna manera, que el algoritmo tambin termine.
Por lo anterior, al disear un algoritmo se debe garantizar que dada cualquier entrada siempre
termine y calcule la respuesta correcta. De tal manera que todo algoritmo debe tener las
siguientes caractersticas:
1. Entrada.
2. Salida.
3. Definido.
4. Eficaz.
5. Terminacin.
Una vez que se ha diseado un algoritmo, se recomienda realizar una prueba de escritorio para
verificar si funciona correctamente, sta consiste en ejecutar el algoritmo utilizando papel y lpiz,
se propone datos de entrada especficos y se realiza cada una de las instrucciones en el orden
establecido, registrando los cambios que se producen despus de la ejecucin de cada
instruccin. De esta manera, se valida que el resultado obtenido en la prueba de escritorio
corresponda al resultado deseado (el correcto).
Ingeniera en Telemtica
Fundamentos de Programacin
Unidad 1. Diseo de algoritmos
son totalmente grficos, lo que hace ms fcil seguir el orden en que se ejecutan las
instrucciones. Es importante mencionar que se puede utilizar cualquiera de las dos
representaciones para disear un algoritmo, pues en cualquiera de los dos se puede expresar
cualquier algoritmo estructurado, de tal manera que la ms conveniente depende de cada
programador. En las siguientes secciones se presenta cada uno de ellos y as podrs decidir cul
prefieres.
1.2.1. Pseudocdigo
El pseudocdigo es un lenguaje de especificacin formal de algoritmos. La solucin de un
problema se representa de manera narrativa utilizando palabras claves, generalmente verbos,
escritos en un lenguaje natural, que en nuestro caso ser espaol. Para ilustrarlo construyamos
un algoritmo que resuelva el siguiente problema.
Problema 1.1: En la figura 1.1.a. se muestra el estado inicial de un tablero, el cual contiene en la
primer casilla (de izquierda a derecha) una bellota, representada por un asterisco (*), y a la ardilla,
representada por una flecha que apunta hacia la direccin que est mirando. El problema consiste
en disear un algoritmo que la ardilla pueda ejecutar para llegar al estado meta representado en
la figura 1.1.b., que implica que la ardilla lleve la bellota a la ltima casilla. Para resolverlo se tiene
la siguiente informacin:
a) El mundo es conocido, es decir, se sabe de antemano que el tablero est cercado por paredes
y slo tiene seis casillas colocadas en lnea.
b) Al inicio la ardilla est en la primera casilla volteando hacia arriba y no tiene ninguna bellota en
la boca.
c) En la primera casilla hay una bellota.
Ingeniera en Telemtica
Fundamentos de Programacin
Unidad 1. Diseo de algoritmos
de la siguiente forma:
Ingeniera en Telemtica
Fundamentos de Programacin
Unidad 1. Diseo de algoritmos
1.2.2. Diagrama de flujo
Los diagramas de flujo son una representacin grfica de un algoritmo que utiliza smbolos para
representar las instrucciones y flechas para unirlas e indicar el orden en que deben ejecutarse llamadas lneas de flujo. Estos smbolos fueron normalizados por el Instituto Norteamericano de
Normalizacin ANSI (American National Standars Institute, por sus siglas en ingls). Los smbolos
ms utilizados se muestran en la siguiente tabla.
Ingeniera en Telemtica
Fundamentos de Programacin
Unidad 1. Diseo de algoritmos
Problema 1.2: Ahora la tarea de la ardilla es que cambie las bellotas que estn en la primera fila
(ver figura 1.2.a) a la segunda y viceversa, dejndolas en la misma columna (ver figura 1.2.b).
Las condiciones de inicio son:
a) El mundo es conocido y sabemos exactamente dnde hay bellotas.
b) La ardilla no tiene ninguna bellota en la boca al inicio.
c) El mundo est encerrado por paredes y si la ardilla choca contra una se considerar un error
garrafal.
d) En este punto los cientficos ya entrenaron a la ardilla para ejecutar la orden giraDerecha(), por
lo tanto, ya puede ser usada en el algoritmo.
Ingeniera en Telemtica
Fundamentos de Programacin
Unidad 1. Diseo de algoritmos
Si la ardilla repite otra vez este bloque de instrucciones, lograr cambiar las siguientes dos
bellotas; al repetirlo nuevamente cambiara las ltimas dos, salvo que cuando la ardilla avance
despus de haber dejado la bellota chocar contra la pared, por lo tanto, antes de que avance
ltima instruccin del bloque tenemos que verificar que no haya pared. La condicin para que la
ardilla repita el bloque de instrucciones es que no haya pared.
De lo anterior tenemos el siguiente algoritmo representado en diagrama de flujo.
Ingeniera en Telemtica
10
Fundamentos de Programacin
Unidad 1. Diseo de algoritmos
Ingeniera en Telemtica
11
Fundamentos de Programacin
Unidad 1. Diseo de algoritmos
Anlisis: Nuevamente el problema planteado es muy sencillo de analizar, la ardilla debe hacer los
movimientos que le permitan recoger la primera bellota, despus ir por la segunda y llegar a la
ltima casilla de la prime fila. Otra posible opcin es que recoja la primera bellota, la lleve a la
primera casilla, regrese por la segunda bellota y tambin la lleve a la primera casilla. Esta ltima
opcin requiere ms esfuerzo por parte de la ardilla, dado que la ardilla no tiene limitado el
nmero de bellotas que puede llevar en la boca, entonces la primera opcin es ms eficiente. El
algoritmo quedara como:
Ingeniera en Telemtica
12
Fundamentos de Programacin
Unidad 1. Diseo de algoritmos
Ingeniera en Telemtica
13
Fundamentos de Programacin
Unidad 1. Diseo de algoritmos
Ingeniera en Telemtica
14
Fundamentos de Programacin
Unidad 1. Diseo de algoritmos
Ingeniera en Telemtica
15
Fundamentos de Programacin
Unidad 1. Diseo de algoritmos
Ingeniera en Telemtica
16
Fundamentos de Programacin
Unidad 1. Diseo de algoritmos
Ingeniera en Telemtica
17
Fundamentos de Programacin
Unidad 1. Diseo de algoritmos
Ingeniera en Telemtica
18
Fundamentos de Programacin
Unidad 1. Diseo de algoritmos
Tipo
Pseudocdigo
Diagrama de flujo
Mientras<condicin>hac
er
Ciclo
Mientras
(while)
e
y se vuelve a repetir l
ciclo.
<instrucciones>
Descripcin
Verifica si la condicin
se
cumple, en tal caso
ejecuta
el conjunto de
instrucciones
Ingeniera en Telemtica
19
Fundamentos de Programacin
Unidad 1. Diseo de algoritmos
Fin_Mientras
Mientr
as
primero
d
ejecuta el conjunto e
despu
instrucciones y
s
verifica que la condicin
se
cumpla, en caso de
ser
verdadera se repite el
ciclo.
A diferencia del
esta estructura
Hacer
Ciclo
Hacer- <instrucciones>
Mientras
(do while)
Mientras <condicin>
Desde
<inicializacin>mientras
Inicializa el
valor
contador, verifica si
la
condicin se cumple y
en
<condicin>,
Ciclo Desde- <incremento/decremento
mientras
(for)
l
a
s
>
tal caso
ejecuta
instrucciones,
increme
posteriormente
nta
variab
o decrementa la
le
contador.
<instrucciones>
Fin_Desde
d
e
l
Ingeniera en Telemtica
20
Fundamentos de Programacin
Unidad 1. Diseo de algoritmos
Ingeniera en Telemtica
21
Fundamentos de Programacin
Unidad 1. Diseo de algoritmos
Autorreflexin
Ingeniera en Telemtica
22
Fundamentos de Programacin
Unidad 1. Diseo de algoritmos
Cierre de la unidad
Los Algoritmos ahora tienen un nuevo significado para ti, ya que sabes que son, como disearlos y
apoyarte de ellos para resolver un problema planteado.
Sabes tambin que mediante representaciones grficas, mediante objetos estandarizados, como
los diagramas de flujo puedes desarrollar una solucin con una secuencia de pasos ordenados y
coherentes, generando un diagrama que pueda ser entendido por todos.
Finalmente, has desarrollado algoritmos que usan sentencias de control y repeticin, permitindote
reducir la cantidad de instrucciones y mostrando la capacidad que tendr nuestra solucin en la
evaluacin de ciertas condiciones que tendr que evaluar durante su ejecucin.
Ingeniera en Telemtica
23
Fundamentos de Programacin
Unidad 1. Diseo de algoritmos
Para saber ms
Puedes encontrar mayor informacin de la evolucin de las telecomunicaciones en los siguientes
vnculos:
Los Hitos de la Historia, que trata sobre el inicio del proceso de transmisin de la voz.
http://www.tudiscovery.com/guia_tecnologia/hitos_tecnologia/telefono/.
Acerca de un recorrido por la evolucin de la telegrafa ptica: http://goo.gl/9nMas.
Mayor informacin de sealizacin SS7 en los siguientes vnculos:
Aqu podrs encontrar un tutorial de sistema de sealizacin nmero 7: www.pt.com
Sobre la sealizacin para el transporte de voz podrs apoyarte en la lectura de: Moreno J.I.; Soto,
I; Larrabeiti, D. (2001). Protocolos de Sealizacin para el transporte de voz sobre redes IP. Tesis.
Universidad Carlos III de Madrid. Madrid: ATI (Asociacin de Tcnicos de Informtica).
Fuentes de consulta
Fuentes bsicas
Bhm, C., & Jacopini, G. (1966). Flow diagrams, Turing machines, and languages only with two
formation rules". Communications of the ACM, 9 (5), 366-371.
Cair,
O. (2005). Metodologa de la programacin: Algoritmos, diagramas de flujo y programas.
Fuentes complementarias
Reyes, A., & Cruz, D. (2009). Notas de clase: Introduccin a la programacin. Mxico, D.F.:
UACM.
Viso, E., & Pelaez, C. (2007). Introduccin a las ciencias de la computacin con Java. Mxico,
D.F.: La prensas de ciencias, Facultad de Ciencias, UNAM.
Fuentes electrnicas
Ingeniera en Telemtica
24
Fundamentos de Programacin
Unidad 1. Diseo de algoritmos
Ingeniera en Telemtica
25