Anda di halaman 1dari 11

1er

Introduccin a la Programacin

semestre de 2012

Introduccin a la Programacin

Prctica 3  Ciclos
Versin del 28 de marzo de 2012

1.

Ciclos
Una de las cosas para las cuales suelen usarse las computadoras es para la automatizacin

de tareas repetitivas. Repetir tareas idnticas o similares sin cometer errores es algo que las
computadoras hacen muy bien y las personas no.
Este tipo de repeticin se llama

iteracin, y Python provee algunas herramientas del lenguaje

que simplican la escritura de programas iterativos.


Las dos herramientas que vamos a ver son las sentencias

1.1.

while(mientras)

for(para).

La sentencia while (mientras)

Usando una sentencia

while,

podemos escribir un programa que haga una cuenta regresiva:

n = int(input("Ingrese un valor para la cuenta regresiva"))


while n > 0:
print(n)
n = n-1
print("Despegue!")
while se puede leer casi como si estuviese en castellano1 . Lo que signica, Mientras
n es mayor que cero, continuar imprimiendo el valor de n y reduciendo el valor de n en 1. Cuando
Una sentencia

llegue a cero, imprimir la palabra `Despegue!' .


Ms formalmente, el ujo de ejecucin para una sentencia
1. Evaluar la condicin entre parntesis produciendo
2. Si la condicin es falsa, salir de la sentencia

true

while

while
o

es el siguiente:

false.

y continuar la ejecucin en la siguiente

sentencia.
3. Si la condicin es verdadera, ejecutar cada una de las sentencias que estn tabuladas a
continuacin.
A este tipo de ujos se los llama

ciclos porque el tercer paso arma un ciclo al volver al paso

1. Not que si la condicin es falsa la primera vez, las sentencias dentro del ciclo no se ejecutan
nunca. Las sentencias dentro del ciclo son usualmente llamadas el

cuerpo del ciclo.

El cuerpo del ciclo debe cambiar el valor de una o ms variables para que, eventualmente,
la condicin se haga falsa y el ciclo termine. Si no, el ciclo se repetir por siempre, lo cual es
conocido como un ciclo

innito.

En el caso de nuestra cuenta regresiva, podemos probar que el ciclo terminar ya que sabemos
que el valor de

es nito, y podemos ver que el valor de

cada vez que pasa por el ciclo (en cada

toma valores cada vez ms pequeos

iteracin), con lo cual eventualmente llegaremos a cero.

En otros casos no es tan sencillo de ver:

N.d.T.: la palabra while signica mientras en castellano.

Pgina 1 de 11

1er

Introduccin a la Programacin

semestre de 2012

n = int(input("Ingrese un numero mayor a cero"))


while n != 1:
print n,
if n % 2 == 0:
# n es par
n = n / 2
else:
# n es impar
n = n * 3 + 1
La condicin de este ciclo es

n != 1,

as que el ciclo continuar hasta que

sea 1, lo que har

falsa la condicin.
En cada iteracin, el programa imprime el valor de
par, el valor de

y luego verica si es par o impar. Si es

se divide por dos. Si es impar, el valor se reemplaza por

si el valor inicial (el argumento pasado a

secuencia)

3n + 1.

Por ejemplo,

es 3, la secuencia resultante es 3, 10, 5, 16,

8, 4, 2, 1.
Como

a veces aumenta y a veces disminuye, no hay una demostracin obvia de que

alcance alguna vez 1, o de que el programa vaya a terminar. Para algunos valores particulares de

n,

podemos probar que termina. Por ejemplo, si el valor inicial es una potencia de dos, entonces

el valor de

ser par cada vez que pase por el ciclo hasta llegar a valer 1. El ejemplo anterior

termina con una secuencia que empieza en 16.


Dejando de lado los valores particulares, la pregunta interesante es si podemos demostrar que
este programa termina para

todo

valor de n. Hasta ahora, nadie fue capaz de demostrarlo o de

refutarlo!

1.2.

La funcin range()

Esta funcin de Python nos da un rango de valores y es ideal para iterar con la sentencia

for

que veremos a continuacin.


Se puede utilizar con diferente cantidad de parmetros, en su versin completa, toma 3
parmetros, los cuales deben ser siempre enteros, y tiene la siguiente estructura:

range(INICIO, FIN, PASO)


representa un rango entre INICIO hasta FIN (sin incluirlo), con saltos de tamao PASO.
Si se omite el parmetro PASO, su valor por defecto es 1. Si se omiten los parmetros INICIO
y PASO, range asume que INICIO es 0 y PASO es 1.
Por ejemplo:

range(0, 10, 1)
representa el rango que incluye a los valores: 0, 1, 2, 3, 4, 5, 6, 7, 8 y 9.

range(4, 12, 2)
representa el rango que incluye a los valores: 4, 6, 8 y 10.

range(5)
representa el rango que incluye a los valores: 0, 1, 2, 3 y 4.

range(-2, 2)
representa el rango que incluye a los valores: -2, -1, 0 y 1.
En caso de que usemos un PASO negativo, el rango ser decreciente, es decir, de mayor a
menor.
Ejemplo:

range(10, 1, -1)
representa el rango que incluye a los valores: 10, 9, 8, 7, 6, 5, 4, 3 y 2.

Pgina 2 de 11

1er

Introduccin a la Programacin

1.3.

semestre de 2012

Ciclos for (para)

Los ciclos que hemos escrito hasta ahora tienen una cierta cantidad de elementos en comn.
Todos ellos comienzan inicializando una variable; tienen una condicin, o test, que depende de
esa variable; y dentro del ciclo hacen algo con esa variable, como incrementarla.
Otra forma de escribir ciclos de forma ms concisa es utilizando la sentencia

for

(para).

for VARIABLE in CONJUNTO:


CUERPO
Por ejemplo, si quisieramos hacer un programa que cuente desde 1 hasta 100 con un

for:

for i in range(1,101):
print(i)
esto se lee: Para i desde 1 hasta 101, mostrar i.

range() para obtener un conjunto de valores.


i se la denomina variable de control y no es necesario que le asignemos

Aqu usamos a la funcin


En este caso, la variable

los valores del rango. Estos valores se le van asignando automticamente en cada iteracin.
Como cualquier otra sentencia
con una sentencia

for.

while, la cuenta regresiva que hicimos antes se puede escribir

Esta se vera de la siguiente manera:

n = int(input("Ingrese un numero mayor a cero"))


for i in range(n,0,-1):
print(i)
print("Despegue!")
Este programa produce el mismo resultado que su versin con la sentencia
bargo, veamos que en este caso no es necesario re-asignar la variable

1.4.

while.

Sin em-

en cada iteracin.

Acumuladores

Los acumuladores son variables que suelen utilizarse en los ciclos para ir guardando el resultado parcial de algn clculo.
Por ejemplo, si quisieramos hacer un programa que calcule la suma de los primeros
naturales, podramos hacerlo de la siguiente manera con una sentencia

for:

n nmeros

n = int(input("Ingrese un numero natural"))


suma = 0;
for i in range(1,n):
suma = suma + i
print("La suma de los primeros", n ,"numeros naturales es", suma)
En este caso, la variable

suma

es inicializada en 0 y en cada iteracin se le va asignando

su valor calculado hasta el momento ms el valor de la variable


variable
nombre

2.

suma acumula
de acumulador

i.

Debera quedar claro que la

el resultado de la suma realizada hasta el momento y por eso lleva el

Cadenas
Hasta ahora hemos dicho que las cadenas sirven para guardar texto en variables. Cualquier

cosa que escribamos entre comillas es una cadena. Algo que no dijimos es que las cadenas estn
hechas de piezas ms pequeas: los caracteres. Un caracter es simplemente una letra o smbolo.

Pgina 3 de 11

1er

Introduccin a la Programacin

2.1.

semestre de 2012

Longitud

La funcin

len

devuelve la cantidad de caracteres de una cadena. Por ejemplo:

fruta = "banana"
longitud = len(fruta)
print(longitud)
Esto muestra un 6.

2.2.

Recorrido

Algo comn para hacer con una cadena es comenzar desde el principio, seleccionar cada
caracter por vez, hacer algo con l, y continuar hasta el n. Este patrn de procesamiento se
llama

recorrido. Una forma natural de codicar un recorrido es mediante una sentencia for:

for char in fruta:


print(char)
Este ciclo recorre la cadena e imprime cada letra en lneas separadas. Cada vez que recorremos
el ciclo, se asigna a la variable

char

el siguiente caracter de la cadena. El bucle contina hasta

que no quedan ms caracteres.


Como ejercicio, escrib un programa que tome una cadena como parmetro y que imprima
solo las consonantes de la cadena, en lneas separadas.

Pgina 4 de 11

1er

Introduccin a la Programacin

semestre de 2012

Notas preliminares
Los ejercicios marcados con el smbolo

constituyen un subconjunto mnimo

de ejercitacin. Sin embargo, aconsejamos fuertemente hacer todos los ejercicios.


Los ejercicios marcados con el smbolo

presentan una mayor dicultad que el

resto.

Parte 1  Programas que muestran nmeros

Ejercicio 1 F
a) Hacer un programa que muestre, mediante un ciclo, los primeros 5 nmeros naturales

(1, 2, 3, 4

5).

b) Hacer un programa que permita al usuario elegir un nmero

primeros

nmeros naturales

y luego muestre los

(1, 2, , n).

Ejercicio 2 F
a) Hacer un programa que muestre, mediante un ciclo, los nmeros desde el 4 hasta el
7

(4, 5, 6

7).
m y un n y luego
n (m, m + 1, m + 2, , n 1, n). Qu pasa

b) Hacer un programa que permita al usuario elegir un nmero


muestre todos los naturales entre
si

es menor que

m?

Ejercicio 3 F
a) Hacer un programa que muestre, mediante un ciclo, los 5 nmeros naturales que le
siguen al 10

(11, 12, , 15).

n y luego muestre los


n (n + 1, n + 2, , n + 5).
Hacer un programa que permita al usuario elegir un nmero n y un nmero c, y
luego muestre los c nmeros naturales que le siguen a n (n + 1, n + 2, , n + c).

b) Hacer un programa que permita al usuario elegir un nmero


5 nmeros naturales que le siguen a

c)

Ejercicio 4 F
a) Hacer un programa que muestre, mediante un ciclo, los nmeros desde el 5 hasta el
11 salteando de a 2 elementos

(5, 7, 9

11)

b) Hacer un programa que permita al usuario elegir un nmero


muestre todos los naturales entre

n,

y un

y luego

pero salteando de a 3. Por ejemplo, si el

usuario ingresara un n igual a 2 y un m igual a 14, el programa deber mostrar

2, 5, 8, 11, 14.
c) Hacer un programa que permita al usuario elegir un nmero
luego muestre todos los naturales entre

n,

n,

pero salteando de a

un

y un

nmeros. Por

ejemplo, si el usuario ingresara un n igual a 2 y un m igual a 14, y un p igual a 4,


el programa deber mostrar

2, 6, 10, 14.

Pgina 5 de 11

1er

Introduccin a la Programacin

semestre de 2012

Ejercicio 5 F
a) Hacer un programa que muestre, mediante un ciclo, los nmeros desde el 8 hasta el
3

(8, 7, 6, 5, 4, 3).

Ejercicio 6 F
a) Hacer un programa que muestre, mediante un ciclo, los nmeros desde el 15 hasta
el 6 pero salteando de a tres

(15, 12, 9, 6).

Ejercicio 7 F
Hacer todos los ejercicios anteriores de nuevo, pero esta vez utilizando la sentencia
lugar de

for. De haberlos hecho con while, rehacerlos utilizando for.

while en

Ejercicio 8
a) Hacer un programa que reciba un nmero
menores a

n.

y muestre todas las potencias de 2

20,

Por ejemplo, si el usuario ingresa

el programa mostrar: 1 2 4 8

16. Ayuda: pensar primero si sera ms prctico utilizar la sentencia

while o for.

n (n > 0) y muestre las n primeras


ingresa 6, el programa mostrar: 1 2 4 8

b) Hacer un programa que reciba un nmero


potencias de 2. Por ejemplo, si el usuario
16 32.

c) Hacer un programa que reciba un nmero

n. Por ejemplo,
1 2 3 4
decir, 1 2 3 4 .

potencias de

256.

Es

n (n > 0) y muestre las n primeras


4, el programa mostrar: 1 4 27

si el usuario ingresa

Ejercicio 9
a) Hacer un programa que permita al usuario elegir un nmero positivo
muestre en pantalla todos los divisores de

b) Hacer un programa que permita al usuario elegir un nmero positivo


c) Hacer un programa que permita al usuario elegir un nmero positivo
muestre en pantalla la cantidad de divisores de
muestre en pantalla la suma de los divisores de
divisores de

y luego

y luego

divisores de

c y n y luego

n.

f ) Hacer un programa que permita al usuario elegir dos nmeros positivos

y luego

n.

e) Hacer un programa que permita al usuario elegir dos nmeros positivos

muestre en pantalla los ltimos

n.

d) Hacer un programa que permita al usuario elegir un nmero positivo

y luego

n.

muestre en pantalla todos los divisores pares de

muestre en pantalla los primeros

n.

n.

Pgina 6 de 11

c y n y luego

1er

Introduccin a la Programacin

semestre de 2012

Ejercicio 10
a) Hacer un programa que permita al usuario elegir un nmero positivo
muestre en pantalla los

primeros trminos de la sucesin

an = 2n.

y luego

Es decir

2, 4,

6...
b) Idem anterior para la sucesin
c) Idem anterior para la sucesin
d) Idem anterior para la sucesin
e) Idem anterior para la sucesin

an
an
an
an

= 2n 1.
= n2 .
= n3 n2 .
= n12 .

Ejercicio 11
n y luego
muestre en pantalla las n primeras sumas parciales de la sucesin an = 2n. Es decir,
2 6 12 20...
2
Idem anterior para la sucesin an = n .
3
2
Idem anterior para la sucesin an = n n .
1
Idem anterior para la sucesin an = 2 .
n

a) Hacer un programa que permita al usuario elegir un nmero positivo

b)
c)
d)

Ejercicio 12
n y luego
n primeras sumas parciales de la sucesin an = 2n. Es decir,

a) Hacer un programa que permita al usuario elegir un nmero positivo


muestre en pantalla las

2 6 12 20...
b) Idem anterior para la sucesin
c) Idem anterior para la sucesin
d) Idem anterior para la sucesin

an = n2 .
an = n3 n2 .
an = n12 .

e) A qu valor se va a cercando la suma del inciso anterior a medida que utilizamos


un valor alto de

n?

Ejercicio 13 F
El logaritmo natural de

2 (ln 2)

se puede aproximar de la siguiente manera:

ln 2 = 1

1 1 1 1
+ + ...
2 3 4 5

Escribir un programa que le pregunte al usuario la cantidad de trminos a sumar y que muestre
la aproximacin de

ln 2

con esa cantidad de trminos.

a) A partir de cuntos trminos el valor alcanzado est a menos de 0.1 del valor que
da la calculadora?
b) A partir de cuntos trminos el valor alcanzado est a menos de 0.01 del valor que
da la calculadora?
c) Modicar el programa para que en lugar de pedir la cantidad de trminos a sumar,
pida al usuario un nmero decimal

y calcule la suma hasta que el valor actual

menos el valor con un trmino ms sea menor que

Pgina 7 de 11

||

1er

Introduccin a la Programacin

semestre de 2012

Ejercicio 14 F
El nmero

se puede aproximar de la siguiente manera:

1
1 1 1 1
1
1
1
=1 + +
+

4
3 5 7 9 11 13 15
Escribir un programa que le pregunte al usuario la cantidad de trminos a sumar y que muestre
la aproximacin de

con esa cantidad de trminos.

a) A partir de cuntos trminos el valor alcanzado est a menos de 0.1 del valor que
da la calculadora?
b) A partir de cuntos trminos el valor alcanzado est a menos de 0.01 del valor que
da la calculadora?
c) Modicar el programa para que en lugar de pedir la cantidad de trminos a sumar,
pida al usuario un nmero decimal

y calcule la suma hasta que el valor actual

menos el valor con un trmino ms sea menor que

||

Ejercicio 15 F
Escribir un programa que solicite al usuario un nmero positivo y aproxime el valor del nmero

de la siguiente manera: (ejemplo para 7 trminos)

1
1
1
1
1
1
1
+ + + + + +
0! 1! 2! 3! 4! 5! 6!
a) A partir de cuntos trminos el valor alcanzado est a menos de 0.1 del valor que
da la calculadora?
b) A partir de cuntos trminos el valor alcanzado est a menos de 0.01 del valor que
da la calculadora?
c) Modicar el programa para que en lugar de pedir la cantidad de trminos a sumar,
pida al usuario un nmero decimal

y calcule la suma hasta que el valor actual

menos el valor con un trmino ms sea menor que

||

Ejercicio 16
Hacer un programa que permita al usuario elegir un nmero positivo
pantalla el producto (es decir, la multiplicacin) de los numeros entre

n y
n.

luego muestre en

Ejercicio 17
Hacer un programa que reciba un nmero m y determine el primer n para el cual la suma
1+2+...+n > m. Por ejemplo, si el usuario ingresa 11 se deber retornar 5 ya que 1+2+3+4 =
10 < 11 y 1 + 2 + 3 + 4 + 5 = 15 > 11

Pgina 8 de 11

1er

Introduccin a la Programacin

semestre de 2012

Ejercicio 18
m y un n y muestre
(m, n)(m + 1, n 1)(m + 2, n 2) . . . (n
ingresa 5 y 10, 5 ser el complementario de

a) Hacer un programa que permita al usuario elegir un nmero


pares de numeros complementarios, o sea

1, m + 1)(n, m). Por ejemplo, el usuario


10, 6 el de 9 y 7 el de 8, y deber mostrarse:

5 10
6 9
7 8
8 7
9 6
10 5
b) dem anterior pero deber frenarse cuando el lado izquierdo pase a ser ms grande
que el derecho.

Ejercicio 19 F
a) Escribir un programa que permita al usuario elegir un nmero

y un

y muestre

todos los pares de numeros que se pueden formar con los nmeros que estn entre
ellos. Por ej. si el usuario ingresara 4 y 6, el programa deber mostrar

4
4
4
5
5
5
6
6
6

4
5
6
4
5
6
4
5
6

b) Cambiar el programa para que use slo un ciclo en vez de dos.

Ejercicio 20
a) Escribir un programa que permita al usuario elegir un nmero

y un

y muestre

todos los pares de numeros que se pueden formar con los nmeros que estn entre
ellos, pero esta vez que lo haga sin repetir inversos. Por ej. si el usuario ingresara 4
y 6, el programa deber mostrar

4
4
4
5
5
6

4
5
6
5
6
6

b) Cambiar el programa para que use slo un ciclo en vez de dos.

Pgina 9 de 11

1er

Introduccin a la Programacin

semestre de 2012

Ejercicio 21 F
Hacer un programa que permita al usuario jugar al piedra, papel o tijera contra la computadora. Se debe jugar al mejor de 5, es decir, si uno de los participantes consigue 3 victorias el
juego termina.

Parte 2  Cadenas

Ejercicio 22 F
a) Escribir un programa que pida al usuario un nmero
asteriscos. Ejemplo, para

n = 8,

y muestre una lnea de

el programa deber mostrar:

********
n y muestre n lneas de
n = 5, el programa deber

b) Escribir un programa que pida al usuario un nmero

1, 2, 3, ...n

asteriscos respectivamente. Ejemplo, para

mostrar:

*
**
***
****
*****
c) Escribir un programa que pida al usuario un nmero
asteriscos respectivamente. Ejemplo, para

n = 5,

n y muestre n lneas de 2n 1

el programa deber mostrar:

*
***
*****
*******
*********

Ejercicio 23 F
a) Sabiendo que la pantalla de la consola tiene 80 caracteres de ancho, hacer una
programa que, dada una palabra, la escriba en el centro de la pantalla.
b) Hacer una programa que, dada una palabra, la escriba pegada a la derecha de la
pantalla.

Ejercicio 24 F
Hacer una programa que, dada una palabra, la escriba recuadrada por asteriscos. Por ejemplo,
si la palabra es "Ganaste", el programa debera escribir:

***********
* Ganaste *
***********

Pgina 10 de 11

1er

Introduccin a la Programacin

semestre de 2012

Ejercicio 25
Hacer un programa que dada una palabra y una letra, imprima la cantidad de apariciones de
esa letra.

Ejercicio 26
Escribir un programa que pida al usuario dos cadenas e imprima la menor en orden alfabtico,
o son iguales si corresponde. Ayuda: probar si funciona el operador

Pgina 11 de 11

<

para cadenas.

Anda mungkin juga menyukai