Anda di halaman 1dari 38

Universidad Nacional de San Antonio Abad del Cusco

E.P. INGENIERIA CIVIL

Programacin Digital

CAPITULO I
Comandos Repetitivos

Ing. E. Gladys Cutipa A.


Ing. Inform. y de Sistemas
2017-I
ROTEIRO:
- Comandos Repetitivos
- Comando While
- Breve introduccin a
listas
- Comando For
- Ejemplos con Lazos

2
Comandos Repetitivos

Hasta ahora vimos como escribir programas


capaces de ejecutar comandos de forma lineal.
As, como tomar decisiones con relacin a
ejecutar o no un bloque de instrucciones.

No obstante, as veces es necesario ejecutar un


bloque de instrucciones varias veces para obtener
el resultado esperado.

3
Introduccin
Ejm.: Programa que imprime los nmeros de 1
hasta 5.
Ser que da para hacer con lo que ya sabemos?
print (1)
print (2)
print (3)
print (4)
print (5)
Mas, imaginemos que se nos pide imprimir los nmeros
de 1 a 200.
Utilizaras
lo mismo?

No verdade!
4
Introduccin

Ejm.: Programa que imprime todos los nmeros


de 1 hasta n (n informado por el usuario).
Note que el programa es vlido para n<=100.
print (1)
if (n>=2):
print (2)
if (n>=3):
print (3)
# repite 96 veces la construccin de arriba
if (n>=100):
print(100)

Mais, frente a isso, se tem WHILE


5
Comando While

Estructura:
while (condicin):
comando
O:
while (condicin) {
comandos
}
En cuanto la condicin fuera verdadera (True),
el ejecuta el(los) comando(s).

6
Comando While

Paso 1: Testa condicin. Si condicin fuera verdadera


va para paso 2
Paso 2.1: Ejecuta comandos;
Paso 2.2: Vuelve para el paso 1.
Testa
condicin
Condicin
Verdadera

Comandos

Condicin
Falsa

7
Comando While

Imprimiendo los 100 primeros nmeros enteros:


i =1
while i<=100:
print (i)
i= i+1

Cmo seria para imprimir los n primeros


nmeros enteros?
n = int (input(" Ingrese nmero: "))
i =1
while i<=n:
print (i)
i= i+1

8
Comando While

1. Qu acontece si la condicin fuera falsa en la primera


vez?
while a!=a:
a=a+1

2. Qu acontece si la condicin fuera siempre verdadera?


while a == a :
a = a+1;

9
Comando do While

Estructura:
do
comando;
while (condicin);
O
do{
comandos;
} while (condicin);

Diferencia respecto al while: Primero ejecuta el


comando(s), luego testa la condicional.

10
Comando do While

Paso 1: Ejecuta comandos;


Paso 2: Analiza condicin. Si fuera verdadero, va para
Paso 1.

Comandos

Si fuera
verdadera
Analiza
condicin
Si fuera falsa

11
Comando do While

1. Imprimiendo los 150 primeros nmeros enteros.

i =1;
inicio
do{
escribir (i)
i:= i+1
} while (i<=150)
fin

12
Introduccin a listas
Una lista en Python es una estructura que almacena varios
datos que pueden ser de un mismo tipo o no.
El acceso a un dato especfico de la lista se da por
indicacin de su posicin.
Una lista es creada con la construccin:
[1 , 2 , , ].

>>> a = [1, "Jorge", 24]


>>> type(a)
<class list>
>>> a[0]
1
>>>a[1]
Jorge
>>> a[2]
24
13
El comando for

Estructura:

for variable en lista:


comando(s)
Para cada elemento de la lista, en orden de
ocurrencia, es atribuido este elemento a la variable y
luego es ejecutado el(los) comando(s).

14
El comando for

Paso 1: Si no recurri toda la lista, se atribuye el


prximo elemento de la lista para la variable.
Paso 2.1: Ejecuta comandos.
Paso2.2: Vuelve al paso1.

Atribuye
prox.elto
lista
Si recurri
toda la lista

Comando(s)

15
El comando for

El programa abajo usa el lazo for para imprimir


nmeros de una lista.

a = [1, 2, 3]
for i in a:
print (i)

16
La funcin range

Es comn hacer un lazo for para iterar sobre valores


numricos.
En Python el comando range(n) genera una lista
con los valores de 0 hasta n 1.
El programa abajo imprime los nmeros de 0 hasta
9.

for i in range(10):
print(i)

17
La funcin range

Podemos especificar un intervalo de valores en la


funcin range:
range(i,f): se genera nmeros de i hasta f-1

El programa abajo imprime los nmeros de 5 hasta


9.

for i in range(5,10):
print(i)

18
La funcin range

Podemos especificar un paso a ser considerado en el


intervalo de valores de la funcin range:
range(i, f, p): se genera valores a partir de i con
incremento de p hasta f-1

El programa abajo imprime los nmeros pares entre


0 y menores que 33.

for i in range(0, 33, 2):


print(i)

19
La funcin range

Imprimiendo los n primeros nmeros enteros:

n = int(input(Ingrese nmero:))
for i in range(1, n+1):
print(i)

20
Variable Acumuladora

Veremos algunos ejemplos de problemas que son


resolvidos utilizando lazos.
Hay algunos padrones de solucin que son bien conocidos,
y son tiles en diversas situaciones.
El primer padrn de ellos es el uso de una variable
acumuladora

Problema
Leer un entero positivo n, en seguida leer n nmeros del teclado
y presentar la suma de estos nmeros.

21
Suma de nmeros

Como n no es definido a priori, no podemos crear n


variables y despus sumarlas.
La idea es crear una variable acumulador que a cada
iteracin de un lazo acumula la suma de todos los nmeros
ledos hasta entonces.

acumulador = 0 # inicialmente no sumamos nada


repita n veces
lea un nmero aux
acumulador = acumulador +aux

22
Suma de nmeros

Podemos usar cualquier estructura de lazo para esta


solucin.
Abajo tenemos una solucin utilizando el comando for.

n = int(input(Ingrese el valor de n:))


acu = 0
for i in range(n):
aux = int(input())
acu = acu + aux
print (La suma es: + str(acu))

23
Calculando potencias de 3

Problema
Lea un entero positivo n, e imprima las potencias: 30 , 31 , 32 , , 3

Usamos una variable acumuladora que en el inicio de la


i-sima iteracin de un lazo, posee el valor 3
Imprimimos este valor y actualizamos el acumulador
para la prxima iteracin, multiplicando esta variable
por 3.
acumulador = 1 # Corresponde a 3^0
para i=0 hasta n hacer:
imprima acumulador
acumulador = acumulador*3

24
Calculando potencias de 3

Problema
Lea un entero positivo n, e imprima las potencias: 30 , 31 , 32 , , 3

El repetir de 0 hasta n puede ser realizado con un lazo


for:
for i in range(n+1):
comando(s)

Mas vamos realizar este ejemplo utilizando el comando


while.

25
Calculando potencias de 3

Problema
Lea un entero positivo n, e imprima las potencias: 30 , 31 , 32 , , 3

En Python:
n = int(input(Ingrese el valor de n: ))
i=0
acu = 1 # corresponde a 3^0
while i <= n:
print(3^+str(i)+ = +str(acu))
i = i+1
acu = acu*3

26
Calculando el valor de n!

Problema
Escribir un programa que lee un valor entero positivo n y calcula el
valor de n!

Recuerde que n! = n*(n-1)*(n-2)*2*1.

27
Calculando el valor de n!

Creamos una variable acumuladora que en el inicio de la


i-sima iteracin de un lazo almacena el valor de (i-1)!
Durante la i-sima iteracin actualizamos la variable
acumuladora multiplicado esta por i obteniendo i!
Al final del lazo, despus de n iteraciones, tendremos en
el acumulador el valor de n!.

acumulador =1 # corresponde a 0!
para i =1 hasta n hacer:
acumulador = acumulador*i
i=i+1

28
Calculando el valor de n!

En Python:

n = int(input("Ingrese el valor de n:"))


acu = 1 #corresponde a 0!
for i in range(1,n+1):
acu = acu * i

print(" El factorial es: " +str(acu))

29
Ejercicio

1. Realice un programa que dado un nmero X, imprima el


mayor nmero de X nmeros ingresados.
x = int(input(Ingrese nmero : ))
i=0
nmayor = 0
while i < x:
numero = int(input(Ingrese un nmero :))
if numero >nmayor:
nmayor = numero
else:
nmayor = nmayor
i=i+1
Print (El mayor nmero digitado fue :, nmayor)

30
Lazos y el comando break

El comando break hace con que la ejecucin de un lazo sea


terminada, pasando la ejecucin para el prximo comando
despus del final del lazo.

for i in range (1, 11):


if (i >= 5):
break
print(i)
print (Finalizo el lazo))

O qu vai dar o programa?

31
Lazos y el comando break

Rpta: Los nmeros de 1


hasta 4 y despus la frase
Finalizo el lazo

for i in range (1, 11):


if (i >= 5):
break
print(i)
print (Finalizo el lazo)

32
Lazos y el comando break

As como la condicin en lazos, el comando break es


utilizado en situaciones de parada de un lazo.
i=1
while true:
if (i>10):
break
print (i)
i=i+1
Es equivalente a:
i=1
while i<=10:
print(i)
i=i+1

33
Lazos y el comando continue

El comando continue hace con que la ejecucin de un


lazo sea alterada para final del lazo.
i=1
while i<=10:
if(i==5):
i=i+1
continue
print(i)
i=i+1
print(Termino el lazo)

O qu ser impresso?

34
Lazos y el comando continue

Rpta: Los nmeros de 1


hasta 10, excepto el nmero 5,
y despus la frase Finalizo
el lazo
s fazer correr a mo o
programa.

i=1
while i<=10:
if(i==5):
i=i+1
continue
print(i)
i=i+1
print(Termino el lazo)
35
Lazos y el comando continue
Continue es utilizado en situaciones donde comandos
dentro del lazo slo deben ser ejecutados caso alguna
condicin sea satisfecha.
Imprimiendo rea de un circulo, si el radio fuera par (y
entre 1 y 10).
for r in range (1,11):
if (r%2 !=0): # si el nmero fuera impar pulamos
continue
area=3.1415*r*r
print(area)
Mais, s se tem esse metodo?
No, podramos escribir algo mas simple:
for r in range(2,11,2):
area=3.1415*r*r
print(area)
36
Perguntas?

Dvidas?

37
Hora da diverso Homework

1. Escribir un programa que permita sumar los nmeros


impares de la secuencia de enteros contenidos en el
intervalo [x,y], para x<y.
2. Escriba un programa que lee un nmero n e imprima los
mltiplos de 3 menores que n.
3. Escriba un programa que permita el clculo de:
-1+2-3+4-5+6++n
Tudo de bom para vocs!
38