Estructuras Repetitivas

8. Fibonacci

8.1. Consigna 1

Mostrar la Sucesión de Fibonacci con bucle while hasta valores menores a un número ingresado por teclado. Para simplificar el ejercicio vamos a asegurar que se ingresa un número entero y no un valor de otro tipo

  • Alternativa 1: While sencillo

limite=int(input('Ingrese el límite de valores de Fibonacci:'))
a ,b = 0, 1 #semillas
print (a)
print (b)
c=0#c en cero para ingresar a while.
#luego c va a tomar ultimo valor generado de la seria
while c < limite:
    c=a+b #genero el proximo valor de la serie.
    print(c)
    a=b #intercambio los valores
    b=c #intercambio los valores

En este caso a y b son las semillas. Con a y b genero c = a + b.

Pero luego para generar el próximo término debo "correrme" o rotar valores de lugar, esto sería que las variables a y b cambian de valores.

a=b # Roto o intercambio  los valores
b=c # Roto o intercambio los valores

Figura 3

  • Alternativa 2: while pero con código mas elaborado y compacto.
Se deja al alumno analizar esta otra solución mas compacta, el desafío es entender el código.


limite=int(input('Ingrese el límite de valores de Fibonacci:'))
a ,b = 0, 1 #semillas
print (a)
while b < limite:
    print(b)
    a,b=b,a+b #intercambio los valores

  • Alternativa 3: While por condición

limite=int(input('Ingrese el límite de valores de Fibonacci:'))
a ,b = 0, 1 #semillas
print (a)
print (b)
while a+b<limite:
    c=a+b
    print(c)
    a,b=b,c #intercambio los valores
Vemos que c o (a+b) es evaluado, y si supera al límite, se finaliza el ciclo while.

  • Alternativa 4: While por condición
limite=int(input('Ingrese el límite de valores de Fibonacci:'))
a ,b = 0, 1 #semillas
print (a)
print (b)
while a+b<limite:
    print(a+b)
    a,b=b,a+b #intercambio los valores

  1. Vemos que hay muchas soluciones, para una consigna tan sencilla, no sabemos si infinitas soluciones pero seguro de que mas de 350 soluciones distintas pueden surgir.
  2. Ver que son 340 alumnos (mas de 350), por lo que es SUGESTIVO que dos alumnos tengan la misma solución (=> copiar )
  3. Notar que cambiar el nombre de las variables sería un cambio cosmético y no un programa distinto, esto suelen hacer algunos alumnos que copian para DISFRAZAR el código que hizo otro y hacerlo pasar como propio.
  4. En este caso es tan culpable el que copia como el que facilita al código para que otro lo copie, en los casos que se detectaron ambos alumnos han sido reprobados.