Está en la página 1de 7

UNIVERSIDAD LUTERANA SALVADOREA

FACULTAD DE CIENCIAS DEL HOMBRE Y LA NATURALEZA


LICENCIATURA EN CIENCIAS DE LA COMPUTACIN
CICLO: II-2015

GUA DE LABORATORIO BUCLE FOR, WHILE


MATERIA:

PROGRAMACIN I

CATEDRTICO:

LIC. JOS LUIS ALVARADO

LUGAR DE EJECUCIN:

CENTRO DE COMPUTO

TIEMPO ESTIMADO:

3 HORAS

OBJETIVOS
QUE

EL ESTUDIANTE SEA CAPAZ DE:


Aprender el concepto del Bucle FOR
Comprender qu son los contadores y acumuladores
Comprender qu son los bucles anidados

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

La variable i toma los valores de 0 a 3 y la variable j toma los valores de 0 a i, por


lo que cada vez el bucle interno se ejecuta un nmero diferente de veces:
Cuando i vale 0, range(i) devuelve una lista vaca, y por tanto el bucle
interno no se ejecuta ninguna vez y el programa no escribe que i vale 0.
Cuando i vale 1, range(i) devuelve la lista [0] y por tanto el bucle interno se
ejecuta una sola vez y el programa escribe una sola lnea en la que i vale 1
(y j vale 0).
Cuando i vale 2, range(i) devuelve la lista [0, 1] y por tanto el bucle interno
se ejecuta dos veces y el programa escribe dos lneas en la que i vale 2 (y j
vale 0 o 1 en cada una de ellas).
Cuando i vale 3, range(i) devuelve la lista [0, 1, 2] y por tanto el bucle
interno se ejecuta tres veces y el programa escribe tres lneas en la que i
vale 3 (y j vale 0, 1 o 2 en cada una de ellas).
En Python puedes utilizar la misma variable en los dos bucles anidados porque
Python las trata como si fueran independientes. El programa:
for i in range(3):
for i in range(2):
print "i vale", i,
escribira:
i
i
i
i
i
i

vale
vale
vale
vale
vale
vale

0
1
0
1
0
1

An as, es mejor utilizar siempre nombres de variables distintas.

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.

Comprobamos entonces si lo que escribi el usuario fue adios , en cuyo caso se


ejecuta la orden break o si era cualquier otra cosa, en cuyo caso se imprime en
pantalla lo que el usuario escribi.
La palabra clave break (romper) sale del bucle en el que estamos. Este bucle se
podra haber escrito tambin, no obstante, de la siguiente forma:
salir = False
while not salir:
entrada = raw_input()
if entrada == adios:
salir = True
else:
print entrada
Pero nos ha servido para ver cmo funciona break . Otra palabra clave que nos
podemos encontrar dentro de los bucles es continue (continuar). Como habris
adivinado no hace otra cosa que pasar directamente a la siguiente iteracin del
bucle.
edad = 0
while edad < 18:
edad = edad + 1
if edad % 2 == 0:
continue
print Felicidades, tienes + str(edad)
Como veis esta es una pequea modificacin de nuestro programa de
felicitaciones. En esta ocasin hemos aadido un if que comprueba si la edad es
par, en cuyo caso saltamos a la prxima iteracin en lugar de imprimir el
mensaje. Es decir, con esta modificacin el programa slo imprimira felicitaciones
cuando la edad fuera impar.

LISTA DE EJERCICIOS PARA RESOLVER


1. Realizar un Programa que imprima los 25 primeros nmeros naturales
2. Realizar un Programa que Imprima los nmeros impares desde el 1 al 25, incluyendo a
ambos.
3. Programa que Imprima los nmeros pares desde el 30 hasta el 70, ambos inclusive
4. Imprimir los nmeros desde el 40 al 120 de 4 en cuatro (40, 44, 48, 52, 56, , 120)
5. Calcular e imprimir la suma 1+2+3+4+5++50
6. Calcular e imprimir la suma 1+2+3+4+5++50
7. Calcular e imprimir el producto 1*2*3*4*5**20
8. Calcular e imprimir la suma 50+48+46+44++20
9. Programa que imprima los nmeros impares desde el 100 hasta la unidad y calcule su
suman = 100
10. Introducir un nmero por teclado y decir si es par o impar
11. Imprimir los nmeros del 1 al 100 y calcular la suma de todos los nmeros pares por
un lado, y por otro, la de los impares.
12. Introducir dos nmeros por teclado. Imprimir los nmeros que hay entre ellos
comenzando por el mas pequeo. Contar cuantos hay y cuantos de ellos son pares.
Calcular la suma de los pares
13. Imprimir y contar los nmeros mltiplos de 3 que hay entre 1 y 100.
14. Imprimir, sumar y contar los nmeros que son a la vez mltiplos de 2 y de 3, que hay
entre la unidad y un determinado numero introducido por el teclado.
15. Introducir dos valores A y B, Si A>=B, calcular e imprimir la suma 10+14+18++50
Si A/B<=30, calcular e imprimir el valor de (A^2+B^2)
16. Introducir los valores A, B y C, Si A/B>30, calcular e imprimir A/C * B^3 Si A/B<=30,
calcular e imprimir 2^2+4^2+6^2++30^2

También podría gustarte