Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PROGRAMACIN I
CATEDRTICO:
LUGAR DE EJECUCIN:
CENTRO DE COMPUTO
TIEMPO ESTIMADO:
3 HORAS
OBJETIVOS
QUE
DESARROLLO
EL BUCLE FOR
En general, un bucle es una estructura de control que repite un bloque de
instrucciones. Un bucle for es un bucle que repite el bloque de instrucciones un
nmero prederminado de veces. El bloque de instrucciones que se repite se suele
llamar cuerpo del bucle y cada repeticin se suele llamar iteracin.
La sintaxis de un bucle for es la siguiente:
for variable in lista (o cadena) :
cuerpo del bucle
El cuerpo del bucle se ejecuta tantas veces como elementos tenga la lista que
utilices (o caracteres tenga la cadena que utilices). Por ejemplo, el programa
for i in [0,1,2,3,4] :
print "Hola",
produce el resultado siguiente:
Hola Hola Hola Hola Hola
Este programa tambin dara el mismo resultado
for i in "amigo" :
print "Hola",
La lista se puede a su vez generar con una funcin range(). El programa anterior
se puede escribir as:
for i in range(5):
print "Hola",
Cambiando el argumento de la funcin range, puedes hacer que el programa
salude muchas ms veces.
for i in range(20):
print "Hola",
Ahora el programa produce el resultado siguiente:
Hola Hola Hola Hola Hola Hola Hola Hola Hola Hola Hola Hola Hola Hola Hola Hola
Hola Hola Hola Hola
Un bucle for se limita a repetir el bloque de instrucciones, pero adems, en cada
iteracin, la variable va tomando cada uno de los valores de la lista. Por ejemplo,
el programa:
for i in range(5):
print "Hola. Ahora i vale",i,"y su cuadrado", i**2
produce el resultado siguiente:
Hola. Ahora i vale 0 y su cuadrado 0
Hola. Ahora i vale 1 y su cuadrado 1
Hola. Ahora i vale 2 y su cuadrado 4
Hola. Ahora i vale 3 y su cuadrado 9
Hola. Ahora i vale 4 y su cuadrado 16
La lista puede contener cualquier tipo de elementos, no slo nmeros. El bucle se
repetir siempre tantas veces como elementos tenga la lista y la variable ir
tomando los valores de uno en uno. Por ejemplo, el programa:
for i in ['Alba', 'Benito', 'Carmen', 27]:
print "Hola. Ahora i vale",i,". Adios."
produce el resultado siguiente:
Hola. Ahora i vale Alba . Adios.
Hola. Ahora i vale Benito . Adios.
Hola. Ahora i vale Carmen . Adios.
Hola. Ahora i vale 27 . Adios.
CONTADORES Y ACUMULADORES
En muchos programas necesitars utilizar variables que cuenten cuntas veces
ha ocurrido algo (contadores) o que acumulen valores (acumuladores). Las
situaciones pueden ser muy diversas, por lo que simplemente hay aqu un par de
ejemplos para que veas cul es la idea.
ACUMULADOR
Este es un ejemplo de programa con acumulador:
suma = 0
for i in range(10):
suma = suma + i
print "La suma de los nmeros de 0 a 10 es", suma
En cada iteracin, el valor de i se aade a la variable suma. Es muy importante
que antes del bucle definas el valor inicial del acumulador (en este caso, la
variable suma).
CONTADOR
Este es un ejemplo de programa con contador:
cuenta = 0
for i in range(1000):
if i%7 == 0:
cuenta = cuenta + 1
print "Entre 0 y 1000 hay", cuenta, "mltiplos de 7"
En cada iteracin, el programa comprueba si i es mltiplo de 7. Si lo es, la
variable cuenta aumenta una unidad. Es muy importante que antes del bucle
definas el valor inicial del contador (en este caso, la variable cuenta).
BUCLES ANIDADOS
Un bucle anidado es un bucle situado en el cuerpo de otro bucle. Por ejemplo el
programa:
for i in range(3):
for j in range(2):
print "i vale", i, "y j vale", j
escribira:
i
i
i
i
i
i
vale
vale
vale
vale
vale
vale
0
0
1
1
2
2
y
y
y
y
y
y
j
j
j
j
j
j
vale
vale
vale
vale
vale
vale
0
1
0
1
0
1
Es decir que el bucle interno se ejecuta en este caso 3 veces y la instruccin print
6 veces (2 veces por bucle interno = 3 x 2 = 6 veces).
Puedes tener tantos bucles anidados como desees.
Puedes utilizar la variable del bucle externo para controlar el bucle interno. Por
ejemplo, el programa:
for i in range(4):
for j in range(i):
print "i vale", i, "y j vale", j
escribira:
i
i
i
i
i
i
vale
vale
vale
vale
vale
vale
1
2
2
3
3
3
y
y
y
y
y
y
j
j
j
j
j
j
vale
vale
vale
vale
vale
vale
0
0
1
0
1
2
vale
vale
vale
vale
vale
vale
0
1
0
1
0
1
BUCLE WHILE
El bucle while (mientras) ejecuta un fragmento de cdigo mientras se cumpla una
condicin.
edad = 0
while edad < 18:
edad = edad + 1
print Felicidades, tienes + str(edad)
La variable edad comienza valiendo 0. Como la condicin de que edad es menor
que 18 es cierta (0 es menor que 18), se entra en el bucle.
Se aumenta edad en 1 y se imprime el mensaje informando de que el usuario ha
cumplido un ao. Recordad que el operador + para las cadenas funciona
concatenando ambas cadenas. Es necesario utilizar la funcin str (de string,
cadena) para crear una cadena a partir del nmero, dado que no podemos
concatenar nmeros y cadenas.
Ahora se vuelve a evaluar la condicin, y 1 sigue siendo menor que 18, por lo que
se vuelve a ejecutar el cdigo que aumenta la edad en un ao e imprime la edad
en la pantalla. El bucle continuar ejecutndose hasta que edad sea igual a 18,
momento en el cual la condicin dejar de cumplirse y el programa continuara
ejecutando las instrucciones siguientes al bucle.
Ahora imaginemos que se nos olvidara escribir la instruccin que aumenta la
edad. En ese caso nunca se llegara a la condicin de que edad fuese igual o
mayor que 18, siempre sera 0, y el bucle continuara indefinidamente escribiendo
en pantalla Has cumplido 0 .
Esto es lo que se conoce como un bucle infinito.
Sin embargo hay situaciones en las que un bucle infinito es til. Por ejemplo,
veamos un pequeo programa que repite todo lo que el usuario diga hasta que
escriba adios .
while True:
entrada = raw_input(> )
if entrada == adios:
break
else:
print entrada
Para obtener lo que el usuario escriba en pantalla utilizamos la funcin raw_input .
No es necesario que sepais qu es una funcin ni cmo funciona exactamente,
simplemente aceptad por ahora que en cada iteracin del bucle la variable
entrada contendr lo que el usuario escribi hasta pulsar Enter.