Download Respuesta

Document related concepts
no text concepts found
Transcript
Concepto de Repetición
...continuación
Recordatorio
while condición:
acción_1
acción_2
acción_3
.
.
.
Recordatorio
While
acción_1
acción_2
acción_3
.
.
condición = false
condición = true
Ejercicio 1
●
Realice la función que calcula la siguiente operación:
–
XY
Respuesta
def XelevadoY(x, y):
r = 1
while y > 0:
r = x * r
y = y – 1
return r
Ejercicio 2
●
Realice una función que dice si un número es primo o no.
Ejercicio 2
●
Un número primo es aquel que sólamente es divisible por la unidad(1) y él mismo.
Ejercicio 2
●
¿Cómo sabemos si un número a es divisible por un número b
–
–
a % b = 0 → a es divisible por b
a % b ≠0 → a no es divisible por b
●
Ej:
–
–
–
4%2 = 0
5%3 = 2
100%4 = 0
Respuesta
def Primo(x):
c = 2
while c < x:
if x % c == 0:
return False
c = c + 1
return True
Ejercicio 2(extensión)
●
Calcule e imprima todos los número primos del 1 al 100
Respuesta
def NumeroPrimos():
c = 1
while c <= 100:
if Primo(c):
print c
c = c + 1
Ejercicio 3
●
Calcule el número е
Ejercicio 3
1 1 1 1
1
e=1    ...
∞!
1! 2! 3! 4!
Respuesta
def e():
e = 1.0
c = 1
while c <= ∞:
e = e + 1.0 / factorial(c)
c = c + 1
return e
Respuesta
def e(n):
e = 1.0
c = 1
while c <= n:
e = e + 1.0 / factorial(c)
c = c + 1
return e
Ejercicio 3(extensión)
●
Calcule еx
Ejercicio 3(extensión)
1
2
3
4
∞
x x x x
x
e=1    ...
∞!
1! 2! 3! 4!
Respuesta
def ex(x, n):
e = 1.0
c = 1
while c <= n:
e = e + XelevadoY(x, c) / factorial(c)
c = c + 1
return e
Ejercicio 4
●
Realice una función que diga si un número es un número perfecto o no.
Ejercicio 4
●
Un número perfecto es un número, donde todos sus divisores sumados excepto él mismo, dan el número.
–
Ej:
●
●
●
6: 1+2+3 = 6
28: 1+2+4+7+14 = 28
496: 1+2+4+8+16+31+62+124+248
Respuesta
def NumeroPerfecto(n):
c = 1
s = 0
while c < n:
if n % c == 0:
s = s + c
c = c + 1
if s == n:
return True
else:
return False
Ejercicio 5(Mundo)
●
●
Realice el programa que rodea el mundo infinítamente.
La posición de la ardilla es aleatoria pero siempre estará pegada al mundo.
Ejercicio 5(Mundo)
Respuesta
def MirarSinPared():
while hasWallInFront():
TURNLEFT()
Respuesta
def VueltaMundo():
while True:
MirarSinPared()
MOVE()
TURNRIGHT()
Ejercicio 5(extensión)
●
●
Rodee sólo 1 vez el mundo
La ardilla posee 1 grano en el estómago
Respuesta
def UnaVueltaMundo():
while not hasFood():
if getMouth() > 0:
putFood()
MirarSinPared()
MOVE()
TURNRIGHT()
Ejercicio 5(extensión)
●
Rodee el mundo en sentido contrario
Respuesta
def MirarSinPared():
while hasWallInFront():
TURNRIGHT()
Respuesta
def VueltaMundo():
while True:
MirarSinPared()
MOVE()
TURNLEFT()
Ejercicio 6(Mundo)
●
La ardilla tiene una hectárea de cultivo, coséchela de la siguiente manera:
–
–
–
Si no hay semilla, plante una.
Si hay una semilla, riégela para que se transforme en una planta.
Si hay una planta, recójala.
Ejercicio 6(Mundo)
●
Especificaciones:
–
–
–
●
●
0 semillas = No hay semilla
1 semilla = Semilla
2 semillas = Planta
Las dimensiones de la hectarea son desconocidas
Usted empieza siempre en la esquina inferior izquierda
Ejercicio 6(Mundo)
●
Vuelva a la posición inicial después de cosechar la hectárea.
Ejercicio 6(Mundo)
Estado Inicial
Ejercicio 6(Mundo)
Estado Final
Respuesta
def ContarSemillas():
c1 = 0
# Cuento cuantas hay
while hasFood():
eat()
c1 = c1 + 1
c2 = 0
# Devuelvo las semillas contadas
while c2 != c1:
putFood()
c2 = c2 + 1
return c1
Respuesta
def Cosechar():
s = ContarSemillas()
if s == 0: # Planto una semilla
putFood()
if s == 1: # Riego la semilla
putFood()
if s == 2: # Recojo la planta
eat()
eat()
Respuesta
def CultivarLinea():
while not hasWallInFront():
Cosechar()
MOVE()
Cosechar() # La última casilla queda faltando por cosechar
Respuesta
def PosicionInicial():
# Vuelta 180º
TURNLEFT()
TURNLEFT()
# Avance hasta el final
while not hasWallInFront():
MOVE()
# Vuelta 90º
TURNRIGHT()
# Avance hasta el final
while not hasWallInFront():
MOVE()
# Vuelta 180º
TURNLEFT()
TURNLEFT()
def CosecharHectarea():
Izquierda = True # Indica hacia donde esta la siguiente línea
Final = False # Indica su estoy en el final de la hectarea
while not Final:
CultivarLinea()
# Gira a la siguiente línea
if Izquierda:
TURNLEFT()
else:
TURNRIGHT()
# Si hay pared es porque estoy al final
if hasWallInFront():
Final = True
# Si no, me muevo a la siguiente línea y cambio el sentido de la siguiente línea
else:
MOVE()
if Izquierda:
TURNLEFT()
Izquierda = False
else:
TURNRIGHT()
Izquierda = True
# Vuelvo a la posición inicial
PosicionInicial()
Ejercicio 7(Mundo)
●
●
●
Sume 2 números de extensión desconocida representados por semillas
Cada fila representa un número
Imprima el resultado bajo la sentencia print
Ejercicio 7(Mundo)
Estado Inicial
+ 43502 8763
Ejercicio 7(Mundo)
52265
Estado Final
Respuesta
def ContarDigito():
c1 = 0
# Cuento el dígito
while hasFood():
eat()
c1 = c1 + 1
c2 = 0
# Devuelvo la comida
while c2 != c1:
putFood()
c2 = c2 + 1
return c1
Respuesta
def HallarNumero():
c = 0 # Unidades, decenas, centenas, etc.
n = 0 # Acumulado del número
# Cuento todos los dígitos y los transformo
while not hasWallInFront():
n = n + ContarDigito() * 10**c
c = c + 1 # Aumento la potencia de 10
MOVE()
return n
Respuesta
def Sumar():
MOVE()
n1 = HallarNumero() # Hallo el primer número
# Bajo la ardilla a la siguiente línea
TURNLEFT()
MOVE()
TURNLEFT()
# Devuelvo la ardilla
while not hasWallInFront():
MOVE()
# Volteo y pongo la ardilla en posición para leer el número
TURNLEFT()
TURNLEFT()
MOVE()
n2 = HallarNumero() # Hallo el segundo número
s = n1 + n2 # Los sumo
print s # Imprimo la suma
Ejercicio 7(extensión)
●
Escriba la suma en la última línea de igual manera a como se escribieron los números a sumar
Ejercicio 7(extensión)
Estado Final
Respuesta
def EscribirNumero(n):
while n > 0:
putFood()
n = n ­ 1
Respuesta
def Sumar2Digitos(r):
n1 = ContarDigito() #Primer Digito
TURNLEFT()
MOVE()
n2 = ContarDigito() # Segundo Digito
MOVE()
s = n1 + n2 + r # Sumelos más el residuo
EscribirNumero(s % 10) # Unidades
return s / 10 # Decenas se acumulan
Respuesta
def Sumar2():
r = 0
# Sume todos las columnas
while not hasWallInFront():
MOVE() # Siguiente columna
r = Sumar2Digitos(r) # Guardo el residuo para la siguiente columna
# Me devuelvo
TURNLEFT()
TURNLEFT()
MOVE()
MOVE()
TURNLEFT()
# Retorno a la posición inicial
TURNLEFT()
TURNLEFT()
while not hasWallInFront():
MOVE()
Ejercicio 8(Mundo)
●
●
La ardilla guarda su comida para el futuro en huecos
Realice el algoritmo que llena los huecos y el algortimo que recoge toda la comida
Ejercicio 8(Mundo)
Estado Incial
Ejercicio 8(Mundo)
Estado Final
Respuesta
def TrabajarHueco(poner):
c = 0 # Profundidad del hueco
while not hasWallInFront():
MOVE()
if poner == True: # Tengo que llenarlo
putFood()
else: # Tengo que vaciarlo
eat()
c = c + 1
TURNLEFT()
TURNLEFT()
while c != 0: # Salgo del Hueco
MOVE()
c = c ­ 1
Respuesta
def LlenarHuecos():
# Tanteo toda la tierra por huecos
while not hasWallInFront():
MOVE()
TURNRIGHT()
if not hasWallInFront(): # Encontré un hueco!
TrabajarHueco(True) # Lo trabajo(lleno)
TURNRIGHT()
else: # No es un hueco, sigo
TURNLEFT()
Ejercicio 8(Mundo)
Estado Incial
Ejercicio 8(Mundo)
Estado Final
Respuesta
def VaciarHuecos():
# Tanteo toda la tierra por huecos
while not hasWallInFront():
MOVE()
TURNRIGHT()
if not hasWallInFront(): # Encontré un hueco!
TrabajarHueco(False) # Lo trabajo(vace)
TURNRIGHT()
else: # No es un hueco, sigo
TURNLEFT()