Algoritmo para Generar la Serie de Fibonacci en PSeInt (Guía 2026)

Nivel: Intermedio Tiempo: ~20 min

La Sucesión de Fibonacci (0, 1, 1, 2, 3, 5, 8…) es mucho más que una curiosidad matemática que aparece en la naturaleza; es el ejercicio definitivo para dominar el concepto de intercambio de variables y acumuladores en programación. En este tutorial de PSeInt, aprenderás a generar los primeros N términos de esta serie. El reto aquí no es solo sumar números, sino lograr que las variables «caminen» hacia adelante en cada iteración del ciclo, actualizando sus valores dinámicamente. Si logras entender cómo A se convierte en B y B en C, habrás desbloqueado un nivel superior en lógica algorítmica.

Conceptos Clave: La Lógica del Desplazamiento

Para programar Fibonacci, no basta con una fórmula. Necesitamos simular el movimiento de la serie:

La Regla de Suma

Cada número nuevo es la suma de los dos anteriores.
Fórmula: C = A + B.
Ejemplo: Para obtener 5, sumamos 2 (A) + 3 (B).

Intercambio de Valores (Swap)

Después de calcular el nuevo número, debemos prepararnos para la siguiente vuelta. El valor que era «el segundo» (B) pasa a ser «el primero» (A), y el nuevo resultado (C) pasa a ser «el segundo» (B).
Lógica: A <- B, luego B <- C.

Análisis del Algoritmo

Desglosemos el problema para generar N términos:

  • ENTRADA Un número entero N que indica cuántos elementos de la serie queremos ver. (Ej: N=7 → 0, 1, 1, 2, 3, 5, 8).
  • PROCESO 1. Inicializar a=0 y b=1.
    2. Usar un ciclo Para desde 1 hasta N.
    3. En cada vuelta: Mostrar a, calcular siguiente (c=a+b), y mover las variables (a=b, b=c).
  • SALIDA La lista secuencial de números separados por coma o espacio.

Código Fuente (Generar N Términos)

Archivo: FibonacciBasico.psc
Algoritmo SerieFibonacci
    // 1. Definición de Variables
    // 'n' es la cantidad de términos a mostrar
    // 'a' y 'b' son los números base, 'c' es el siguiente
    Definir n, a, b, c, i Como Entero;
    
    // 2. Entrada de Datos
    Escribir "=== GENERADOR FIBONACCI ===";
    Escribir "¿Cuántos términos desea generar?";
    Leer n;
    
    // 3. Inicialización de la serie
    // La serie comienza matemáticamente con 0 y 1
    a <- 0;
    b <- 1;
    
    Escribir "La serie es:";
    
    // 4. Ciclo para generar N términos
    Para i <- 1 Hasta n Hacer
        // Paso A: Mostramos el valor actual de 'a' (el más antiguo)
        // Usamos Sin Saltar para que salgan en línea horizontal
        Escribir a, ", " Sin Saltar;
        
        // Paso B: Calculamos el siguiente número (Suma de los dos actuales)
        c <- a + b;
        
        // Paso C: Desplazamiento (Swap)
        // El segundo pasa a ser el primero
        a <- b;
        // El nuevo pasa a ser el segundo
        b <- c;
        
        // PRUEBA DE ESCRITORIO (Iteración 1):
        // Imprime 0. c=0+1=1. a=1, b=1.
        // PRUEBA DE ESCRITORIO (Iteración 2):
        // Imprime 1. c=1+1=2. a=1, b=2.
        // PRUEBA DE ESCRITORIO (Iteración 3):
        // Imprime 1. c=1+2=3. a=2, b=3.
    FinPara
    
    Escribir ""; // Salto de línea final
    Escribir "=== Fin del proceso ===";
    
FinAlgoritmo

Diagrama de Flujo

⚠️ Errores Comunes de Principiantes

Fibonacci es famoso por confundir a los estudiantes en estos puntos:

Perder los primeros números (0 y 1)

Si calculas c = a + b y luego imprimes c directamente, tu serie empezará en 1, 2, 3... omitiendo el 0 y el primer 1. La clave es imprimir 'a' antes de calcular el nuevo valor.

Orden Incorrecto de Asignación

Escribir b <- c y luego a <- b es un error fatal. Al hacer eso, 'a' recibe el valor nuevo de 'c' (porque 'b' ya fue modificado). Debes mover a <- b primero, para salvar el valor antiguo de 'b'.

Variante: Fibonacci hasta un Valor Máximo

A veces el ejercicio no pide "N términos", sino "mostrar la serie mientras sea menor a 100". Aquí usamos el ciclo Mientras.

Algoritmo FibonacciHastaValor
    Definir a, b, c, limite Como Entero;
    
    Escribir "Ingrese el valor límite (ej: 100):";
    Leer limite;
    
    a <- 0;
    b <- 1;
    
    Escribir "Serie menor a ", limite, ":";
    
    // Usamos MIENTRAS porque no sabemos cuántas vueltas serán
    Mientras a <= limite Hacer
        Escribir a, " " Sin Saltar;
        
        c <- a + b;
        a <- b;
        b <- c;
    FinMientras
    
FinAlgoritmo

Preguntas Frecuentes (FAQ)

¿Cuál es la diferencia entre "N términos" y "hasta N"?
"N términos" significa generar una cantidad fija (ej: 5 números -> 0, 1, 1, 2, 3). "Hasta N" significa detenerse cuando el valor del número supere a N (ej: límite 5 -> 0, 1, 1, 2, 3, 5).
¿Puedo hacerlo con Recursividad en PSeInt?
Sí, PSeInt soporta subprocesos recursivos. La función sería Fib(n) = Fib(n-1) + Fib(n-2), pero para principiantes, el método de bucle (iterativo) mostrado aquí es más eficiente y fácil de entender.
¿Qué pasa con números grandes?
Fibonacci crece exponencialmente. El término 50 ya es 12,586,269,025. Si usas Entero, PSeInt podría desbordarse. Para series largas, es mejor usar variables Real (aunque pierdan precisión en decimales) o lenguajes que soporten BigInt.
¿Por qué se usa en entrevistas de trabajo?
Porque demuestra si el candidato entiende el control de flujo, la asignación de variables y la optimización básica (iteración vs recursión) sin necesitar librerías complejas.

¿Listo para el siguiente nivel?

Domina la lógica de programación con nuestra colección completa.

Ver Más Ejercicios Resueltos

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *