1
resposta

Resolução Fibonacci com while e display na tela

Segue solução com impressão dos valores em tela:

CREATE OR REPLACE PROCEDURE NUMEROS_FIBONACCI_WHILE(
    p_INDICE IN FLOAT
)

IS
    v_N1        FLOAT := 0;
    v_N2        FLOAT := 1;
    v_RESP      FLOAT := 0;
    v_COUNT     FLOAT := 1;
    v_INDICE    FLOAT := p_INDICE;
    
BEGIN
    CASE 
        WHEN v_INDICE <= 0 THEN RETURN; -- ÍNDICE COMEÇA EM 1
        WHEN v_INDICE = 1 THEN
            DBMS_OUTPUT.PUT_LINE(v_N1); -- NÚM IGUAL A 0
        WHEN v_INDICE > 1 THEN
            DBMS_OUTPUT.PUT_LINE(v_N1); -- NÚM IGUAL A 0
            DBMS_OUTPUT.PUT_LINE(v_N2); -- NÚM IGUAL A 1
    ELSE
        DBMS_OUTPUT.PUT_LINE(v_N1);
        DBMS_OUTPUT.PUT_LINE(v_N2);
    END CASE;
    WHILE v_COUNT < v_INDICE LOOP
        v_RESP := v_N1 + v_N2;
        v_N1 := v_N2;
        v_N2 := v_RESP;
        v_COUNT := v_COUNT + 1;
        DBMS_OUTPUT.PUT_LINE(v_RESP);
    END LOOP;
END;
SET SERVEROUTPUT ON;
EXECUTE NUMEROS_VIBONACCI_WHILE(45);
1 resposta

Olá, Diogenes! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de CASE para tratar condições iniciais, utilizou muito bem o WHILE LOOP para gerar a sequência e ainda compreendeu a importância do DBMS_OUTPUT.PUT_LINE para imprimir os valores em tela.

Uma correção necessária é ajustar o nome da procedure na execução para evitar erros de chamada. Assim:

SET SERVEROUTPUT ON;
EXECUTE NUMEROS_FIBONACCI_WHILE(45);

Isso faz com que o código rode corretamente sem problemas de referência ao nome da procedure.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!