Documentos de Académico
Documentos de Profesional
Documentos de Cultura
T
AF
DR
Teotihuacan (”Lugar donde los hombres se convierten en dioses”) es el nombre que se da a la que fue una
de las mayores ciudades prehispánicas de Mesoamérica. El nombre es de origen náhuatl y fue empleado
por los mexicas para identificar a esta ciudad construida por una civilización anterior a ellos y que ya se
encontraba en ruinas cuando los mexicas la vieron por primera vez. A la fecha se desconoce el nombre que le
daban sus habitantes originales. Los restos de la ciudad se encuentran al noreste del valle de México, en los
municipios de Teotihuacan y San Martı́n de las Pirámides, aproximadamente a 45 kilómetros de distancia
del centro de la Ciudad de México. La zona de monumentos arqueológicos fue declarada Patrimonio de la
Humanidad por Unesco en 1987. (http://es.wikipedia.org/wiki/Teotihuacan).
palabra palabra
Autor: Jorge Luis Zapotecatl López
Correo electrónico: jzapotecatl@gmail.com
Url: www.pensamientocomputacional.org
2
D.R.
2014
c por Insituto Nacional de Astrofı́sica, Óptica y Electrónica
Luis Enrique Erro 1, Tonantzintla, Puebla, México
C.P. 72840
Teléfono: (222) 247.29.40
Contacto: emorales@inaoep.mx
T
AF
DR
Índice general
Índice general 3
1. Algoritmos 5
1.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
T
1.2. Algoritmos en la computación . . . . . . . . . . . . . . . . . . 7
1.3. Representación de algoritmos . . . . . . . . . . . . . . . . . . 8
AF
1.3.1. Diagramas de flujo . . . . . . . . . . . . . . . . . . . . 9
1.3.2. Seudocódigo . . . . . . . . . . . . . . . . . . . . . . . . 11
1.4. Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.4.1. Contadores . . . . . . . . . . . . . . . . . . . . . . . . 12
1.4.2. Acumuladores . . . . . . . . . . . . . . . . . . . . . . . 14
DR
1.4.3. Banderas . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.5. Estructuras de control . . . . . . . . . . . . . . . . . . . . . . 15
1.5.1. Estructura de secuencia . . . . . . . . . . . . . . . . . 15
1.5.2. Estructura de selección . . . . . . . . . . . . . . . . . . 17
1.5.3. Estructura de repetición . . . . . . . . . . . . . . . . . 22
1.6. Apilamiento y Anidamiento . . . . . . . . . . . . . . . . . . . 27
1.7. Enfoque descendente . . . . . . . . . . . . . . . . . . . . . . . 28
1.7.1. Nivel 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
1.7.2. Nivel 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.8. Aplicando los Algoritmos . . . . . . . . . . . . . . . . . . . . . 32
Bibliografı́a 33
3
palabra
T
AF
DR
Capı́tulo 1
Algoritmos
“Si quieres construir un barco, no empieces por buscar madera, cortar tablas
T
o distribuir el trabajo. Evoca primero en los hombres y mujeres el anhelo del
mar libre y ancho”
-Antoine de Saint-Exupéry
AF
1.1. Introducción
Cuando se escucha la palabra algoritmo, las personas frecuentemente con-
DR
5
6 CAPÍTULO 1. ALGORITMOS
2. Moler los chiles, los ajos y el chocolate, hasta formar una pasta.
T
AF
DR
Figura 1.1: -Kukulkán- El resultado de aplicar el algoritmo anterior es un exquisito mole poblano.
El mole poblano es un tı́pico platillo mexicano que está compuesto principalmente de una salsa creada
a partir de una gran variedad de ingredientes vertida sobre piezas de guajolote (nombre que se le da en
México al pavo doméstico).
T
AF
1.2. Algoritmos en la computación
Los algoritmos son ampliamente utilizados en las ciencias de la compu-
tación y representan las soluciones a nivel conceptual de determinados pro-
DR
Figura 1.2: Los video juegos y las animaciones en 3D son ejemplos de algoritmos implementados en
computadoras por medio de lenguajes de programación
T
AF
DR
Figura 1.3: -Paat- GameCoder Studios es un estudio independiente de video juegos mexicano ubicado
en la ciudad colonial de Guanajuato, México. En el 2010 dicho estudio desarrolló el motor GC, un motor
gráfico de video juegos 3D. Algunas de las técnicas de representación utilizadas en el motor GC fueron in-
novadoras y se presentaron en el SIGGRAPH 2011. En el 2011 el estudio desarrolló el video juego Attractio
basado en el motor GC. Para mayor información puede consultar el enlace: www.gamecoderstudios.com
T
se muestran los sı́mbolos básicos de los diagramas de flujo.
AF
DR
T
AF
DR
1.3.2. Seudocódigo
El seudocódigo es una descripción informal de alto nivel de un algoritmo
que utiliza las convenciones de un lenguaje de programación real. Sin em-
bargo, está diseñado para que el algoritmo sea leı́do por un humano. Por lo
tanto, el seudocódigo se complementa, donde sea conveniente, con descrip-
ciones detalladas en lenguaje natural, o con notación matemática compacta.
Además, omite detalles que no son esenciales para su comprensión, tales co-
mo especificar el tipo de variables, código especı́fico del sistema y algunas
funciones (subrutinas).
Para el seudocódigo no existe una sintáxis estándar y por lo general,
no obedece a las reglas de sintáxis de ningún lenguaje de programación en
particular. Dependiendo del diseñador, el seudocódigo puede diferir en su
estilo, desde acercarse a una descripción en lenguaje natural (en prosa) por
T
un extremo hasta una imitación casi exacta de un lenguaje de programación
real por el otro. El algoritmo 1, representado por medio de un seudocódigo,
computa el número mayor o igual entre A y B.
AF
Algorithm 1 Número mayor o igual
1: imprimir(0 Introduzca los valores0 );
2: introducir(A, B); . Desde el teclado
DR
3: if A ≥ B then
4: imprimir(A, 0 Es mayor o igual0 );
5: else
6: imprimir(B, 0 Es mayor0 );
7: end if
1.4. Variables
Una variable es un sı́mbolo que designa una cantidad susceptible de to-
mar distintos valores y que almacena información durante la ejecución de
un algoritmo. En los algoritmos, cada diseñador utiliza sus respectivas con-
venciones. Por ejemplo, la instrucción “asignar el valor de la variable x a la
variable y”puede representarse como:
x←y
T
x=y
x := y
Las operaciones usualmente se representan de manera matemática com-
AF
pacta.
2
volumen ← πr√ h
hipotenusa ← a2 + b2
resultado ← sin(a)
DR
1.4.1. Contadores
Los contadores son variables que cuentan el número de eventos eje-
cutados dentro de un algoritmo. Un contador incrementa o decrementa su
contenido en un valor constante. El conteo inicia generalmente en 0 o 1. Las
operaciones necesarias que se llevan a cabo con un contador son:
1.4. VARIABLES 13
Suponga que un evento ocurre tres veces, el contador adquirirá los valores
como se indica en la siguiente tabla.
T
contador = contador+ 1
AF
1 0 1
2 1 1
3 2 1
1.4.2. Acumuladores
Los acumuladores incrementan o decrementa su contenido en un valor
variable. La acumulación inicia generalmente en 0 o 1.
La operación básica que se debe realizar con ellos es:
T
Suponga el calculo de la nomina de un empleado, el acumulador adqui-
rirá los valores como se indica en la siguiente tabla.
AF
nomina = nomina+ sueldo
1200 0 1200
1700 1200 500
3200 1700 1500
DR
1.4.3. Banderas
Las banderas son variables que adquieren determinados valores con la
finalidad de interrumpir o seleccionar la ejecución de determinadas instruc-
ciones en un algoritmo.
Por ejemplo, para inidar que se presionó el botón de start en el control
de tu consola favorita o para indicar que el juego a terminado (game over ),
la bandera adquirirá el valor como se indica en la siguiente tabla.
T
Investigaciones realizadas en la década de los 70 por C. Böh y G. Jaco-
pini demostraron que algoritmos estructurados pueden codificarse utilizando
sólo tres estructuras de control: la estructura de secuencia, la estructura de
AF
selección y la estructura de repetición. Antes de dichas investigaciones, se
utilizaba de manera excesiva el uso de la instrucción de transferencia incon-
dicional (GOTO), que producia “código espagueti”, que es mucho más difı́cil
de seguir, mantener y era la causa de muchos errores. Por lo tanto, sur-
DR
1: instruccion1 ;
2: instruccion2 ;
3: instruccion3 ;
4: ...
5: instruccionn ;
La instrucción1 se ejecuta primero (renglón número 1), posteriormente
se ejecuta la instrucción2 , y de manera sucesiva se ejecutan las demás ins-
16 CAPÍTULO 1. ALGORITMOS
T
AF
Figura 1.8: Diagrama de flujo que muestra el funcionamiento de la estructura de secuencia.
1: levantarse;
2: quitarse la pijama;
3: tomar un baño;
4: vestirse;
5: desayunar;
6: tomar el transporte hacia el trabajo;
El algoritmo anterior consigue que el empleado se presente al trabajo en
tiempo y forma al realizar acciones de manera sucesiva. Ahora, suponga que
las mismas instrucciones del algoritmo “asistir al trabajo”se ejecutan en un
orden ligeramente diferente:
1: levantarse;
2: quitarse la pijama;
3: vestirse;
1.5. ESTRUCTURAS DE CONTROL 17
4: tomar un baño;
5: desayunar;
6: tomar el transporte hacia el trabajo;
En este caso, el empleado llegará mojado al trabajo (ver figura 1.9). El
ejemplo anterior muestra la importancia de especificar el orden correcto en
que se ejecutan las instrucciones para obtener el resultado deseado.
T
AF
Figura 1.9: El orden en que las instrucciones son ejecutadas determina el resultado correcto de un
DR
Seleccionar simple
La estructura seleccionar simple decide que instrucciones deben ejecutar-
se dependiendo del cumplimiento de una condición, donde la condición es
18 CAPÍTULO 1. ALGORITMOS
Figura 1.10: Las decisiones se toman dependiendo de que actividades se desean realizar. Por ejemplo,
una chica decidirá la forma de vestirse de acuerdo al tipo de fiesta al que asistirá.
T
una expresión booleana, es decir, el valor de la condición es verdadero o falso
(1 o 0). Considera el siguiente bloque de instrucciones.
AF
1: if condicion1 then
2: instrucciones1 ;
3: end if
Si la condicion1 es evaluada como verdadera (especificada en el renglón 1),
DR
Figura 1.11: Diagrama de flujo que muestra el funcionamiento de la estructura seleccionar simple.
1.5. ESTRUCTURAS DE CONTROL 19
Por ejemplo, suponga que una joven, en sus vacaciones, ha decido asistir
a un curso de natación unicamente si el horario de las sesiones es mayor a
las 7:00 hrs. El bloque de instrucciones mediante la estructura de selección
simple se representa a continuación.
1: if horario sesión > 7 then
2: Asistir al curso de natación;
3: end if
Seleccionar doble
T
La estructura seleccionar doble decide que instrucciones deben ejecutarse
entre dos posibles opciones dependiendo del cumplimiento de una condición.
AF
Al igual que en la estructura seleccionar simple, la condición es una expresión
booleana. Considera el siguiente bloque de instrucciones.
1: if condicion1 then
DR
2: instrucciones1 ;
3: else
4: instrucciones2 ;
5: end if
Si la condicion1 es evaluada como verdadera (especificada en el renglón 1),
entonces se ejecutan las instrucciones1 que se encuentran dentro del primer
bloque de la estructura. Por otro lado, si la condición es falsa se ejecutan las
instrucciones2 que se encuentran dentro del segundo bloque de la estructura.
El bloque anterior representado por un diagrama de flujo se muestra en 1.12.
La estructura seleccionar doble se utiliza cuando:
Figura 1.12: Diagrama de flujo que muestra el funcionamiento de la estructura seleccionar doble.
a sus alumnos, pero no le queda otra opción que hacerlo. El bloque de instruc-
T
ciones mediante la estructura de selección doble se representa a continuación.
AF
1: if calif icación ≥ 6,0 then
2: aprobar a estudiante;
3: else
4: reprobar a estudiante;
DR
5: end if
Seleccionar múltiple
1: if condición1 then
2: instrucciones1 ;
3: else if condición2 then
4: instrucciones2 ;
1.5. ESTRUCTURAS DE CONTROL 21
5: ...
6: else if condiciónn then
7: instruccionesn ;
8: else
9: instruccionesomision ;
10: end if
Si la condición1 es evaluada como verdadera (especificada en el renglón 1),
entonces se ejecutan las instrucciones1 que se encuentran dentro del primer
bloque de la estructura. En caso contrario, se procede a verificar la condición2
(especificada en el renglón 3), si es evaluada como verdadera, entonces se
ejecutan las instrucciones2 dentro del segundo bloque de la estructura. El
proceso continua hasta que no quedan más opciones. Si ninguna condición es
cumplida, se ejecuta por omisión las instruccionesomision . El bloque anterior
representado por un diagrama de flujo se muestra en 1.12.
T
AF
DR
Figura 1.13: Diagrama de flujo que muestra el funcionamiento de la estructura seleccionar múltiple.
Imagina que Tukkul desea obsequiarle un regalo a Paat con el que mani-
fieste sus sentimientos, pero sólo cuenta con $200 pesos. Por lo que seleccio-
nará un regalo que tenga un costo igual o menor que 200 pesos. Si ningún
regalo cumple con dicha condición, entonces le escribirá un poema :3.
T
6: Comprar dicho disco;
7: ...
AF
8: else
9: Escribir un P oema;
10: end if
Repetir mientras
La estructura repetir mientras permite repetir determinadas instrucciones
mientras su condición permanezca verdadera. Considera el siguiente bloque
de instrucciones.
while condicion1 do
instrucciones1 ;
1.5. ESTRUCTURAS DE CONTROL 23
Figura 1.14: Hay actividades que son repetidas continuamente. Por ejemplo, cuando tocas las cuerdas
de una guitarra.
T
end while
Si la condicion1 es evaluada como verdadera (especificada en el renglón
AF
1), entonces se ejecutan las instrucciones1 que se encuentran dentro del cuer-
po de la estructura. Posteriormente el proceso anterior se repite, se evalúa la
condicion1 , si es verdadera se ejecutan las instrucciones1 . Finalmente, cuan-
do la condición es falsa la repetición termina. El bloque anterior representado
por un diagrama de flujo se muestra en 1.15.
DR
Figura 1.15: Diagrama de flujo que muestra el funcionamiento de la estructura repetir mientras.
T
Repetir hasta
La estructura repetir hasta permite repetir determinadas instrucciones
AF
hasta que su condición sea falsa. Considera el siguiente bloque de instruccio-
nes.
1: repeat
DR
2: instrucciones1 ;
3: until condicion1
Las instrucciones1 dentro del cuerpo de la estructura son ejecutadas pri-
mero, por lo que dichas instrucciones se ejecutan por lo menos una vez.
Posteriormente la condicion1 es evaluada (especificada en el renglón 3). Si
la condicion1 es verdadera, nuevamente se ejecutan las instrucciones1 den-
tro del cuerpo de la estructura y posteriormente se vuelve a verificar la
condicion1 . El proceso anterior se repite hasta que la condición es falsa y
por lo tanto la repetición termina. El bloque anterior representado por un
diagrama de flujo se muestra en 1.15.
La estructura repetir hasta se utiliza cuando:
Figura 1.16: Diagrama de flujo que muestra el funcionamiento de la estructura repetir hasta.
T
Por ejemplo, suponga que un jugador debe lanzar dos dados hasta obte-
ner como suma un valor mayor que 10. Probablemente en el primer intento lo
AF
consiga o hasta después de n intentos. No obstante, tiene que lanzar los dados
por lo menos una vez para constatar la condición. El bloque de instrucciones
mediante la estructura de repetir hasta se representa a continuación.
DR
1: repeat
2: suma = valor de los dados lanzados;
3: until suma ≥ 10
Repetir para
La estructura de repetir para permite repetir instrucciones un determina-
do número de veces. Es utilizada cuando se conoce el número de repeticiones
que se deben realizar y cuando se desea iterar por cada uno de los elemen-
tos de una estructura de datos. Considere el siguiente bloque de instrucciones.
T
AF
Figura 1.17:
DR
1: if condicion1 then
2: instrucciones1 ;
3: end if
4: while condicion2 do
5: instrucciones2 ;
6: end while
El anidamiento se refiere a colocar una estructura de control dentro de
otra. Cualquier instrucción puede ser sustituida por una estructura de con-
T
trol. En la misma manera en la que bloques de plástico interconectables son
apilados y anidados para crear diversas estructuras (ver figura 1.18).
AF
DR
Figura 1.18: Un bloque puede ser anidado en lugar de otros bloques, el bloque magenta fue sustituido
por los tres bloques apilados.
1: if condicion1 then
2: while condicion2 do
3: instrucciones1 ;
4: end while
5: end if
28 CAPÍTULO 1. ALGORITMOS
1: while condicion2 do
2: if condicion1 then
3: instrucciones1 ;
4: end if
5: end while
Cuando las estructuras de control son apiladas y anidadas forman algo-
ritmos de mayor complejidad. En la misma manera que al apilar y anidar
bloques de plástico nos permite crear estructuras más complejas (ver figura
1.19).
T
AF
DR
Figura 1.19: Los bloques de plástico interconectables son apilados y anidados para crear diversas
estructuras.
T
La descripción anterior es una instrucción individual que contiene la función
general del programa. Sin embargo, contiene muy pocos detalles como para
AF
escribir un programa.
1.7.1. Nivel 1
A partir de una descripción general, usualmente muchos algoritmos se
DR
1.7.2. Nivel 2
En este ejemplo, necesitamos una variable para recibir el valor de cada
calificación conforme el usuario la introduce que denominamos calif icacion,
una variable para almacenar la suma de las calificaciones denominada total,
una variable que cuente el número de calificaciones denominada n y una
variable para almacenar el promedio calculado denominada promedio. Las
T
instrucciones en un nivel de abstracción inferior para la primera instrucción
Inicializar las variables; son las siguientes:
AF
1: total = 0;
2: n = 0;
Observe que sólo las variables total y n deben inicializarse antes de que
DR
1: if n 6= 0 then
2: propmedio = total/n;
3: else
4: N o hay calif icaciones;
5: end if
Observe que cuando se realiza una división entre una expresión cuyo valor
pudiera ser cero, se debe evaluar de manera explicita esta posibilidad y ha-
cerse cargo de ella de manera apropiada dentro del algoritmo (por ejemplo,
despliegue un mensaje de error), en lugar de permitir que ocurra un error
T
fatal.
Un algoritmo en seudocódigo utilizando el enfoque descendente es termi-
AF
nado cuando esté especificado con suficientes detalles como para convertirlo
en código de un lenguaje de programación. El algoritmo en seudcódigo 2
resuelve un problema general de promedios. Este algoritmo se desarrolló des-
pués de sólo dos niveles de refinamiento. Para algoritmos más complejos se
requerirá más niveles de refinamiento y subdividirlos en más tareas.
DR
T
el concepto de decisión o el concepto de repetición.
Promueva su pensamiento lógico y algorı́tmico desde las actividades que
tiene que realizar para preparase y asistir a la escuela o al trabajo, hasta
AF
para resolver un problema matemático complejo, o en la toma de decisiones
que realiza en su lugar de trabajo. Con el tiempo, usted tendrá la habilidad
para resolver complejos problemas a partir de ideas estructuradas.
DR
Bibliografı́a
T
Garcia, D., Algoritmos, Beauty and Joy of Computing, Fecha de consulta 25
de noviembre 2014 de: bjc.berkeley.edu, University of California, Berkeley.
AF
Wing, J.M. (2006), Computational thinking, Comm of ACM, 49 (3), (pp.
33-35).
Cormen, T. H., Leiserson C. E., Rivest R. L. y Stein C. (1996), Introduction
to Algorithms (2nd edición), MIT Press and McGraw-Hill.
DR
33