In questa lezione svilupperemo un algoritmo per la successione di Fibonacci in C. La successione di Fibonacci è un classico esempio di sequenza numerica che si basa sulla somma dei due numeri precedenti. Iniziamo con una breve spiegazione di cosa sia la successione di Fibonacci e poi procediamo a sviluppare un programma in linguaggio C che chieda all’utente il numero di termini della successione che desidera visualizzare e poi li mostri a video.
Ricordiamo che la successione di Fibonacci è una sequenza di numeri interi positivi in cui ciascun numero, a partire dal terzo, è la somma dei due numeri precedenti. I primi due numeri della successione sono 1, 1. Quindi, la sequenza procede come segue: 1, 1, 2, 3, 5, 8, 13, 21, 34 e così via.
La successione di Fibonacci in C
#include <stdio.h>
int main() {
int i, N, primo = 1, secondo = 1, terzo;
// Chiediamo all'utente quanti numeri della successione desidera visualizzare
printf("Quanti numeri della successione vuoi visualizzare? ");
scanf("%d", &N);
// Se N è minore o uguale a 0, non c'è nulla da visualizzare
if (N <= 0) {
printf("N deve essere un numero positivo maggiore di zero.\n");
return 1; // Segnaliamo un errore al sistema operativo
}
// Visualizziamo i primi due numeri della successione (se N >= 1)
if (N >= 1)
printf("%d\n", primo);
if (N >= 2)
printf("%d\n", secondo);
// Calcoliamo e visualizziamo i restanti numeri della successione
for (i = 2; i < N; i++) {
terzo = primo + secondo;
primo = secondo;
secondo = terzo;
printf("%d\n", terzo);
}
return 0;
}
In questo programma, chiediamo all’utente di inserire il numero di termini della successione di Fibonacci che desidera visualizzare. Successivamente, utilizziamo un ciclo for
per calcolare e visualizzare i numeri della successione fino al termine desiderato. Da notare anche che abbiamo aggiunto controlli per gestire casi speciali, come quando l’utente inserisce un valore non valido per N.
Spiegazione passo passo dell’algoritmo:
Forniamo adesso una spiegazione passo-passo dell’algoritmo implementato per generare i primi N numeri della successione di Fibonacci:
- Inizializzazione delle variabili: All’inizio del programma, dichiariamo le variabili necessarie per gestire il programma. Queste includono
i
(un contatore per il ciclo),N
(il numero di termini della successione da visualizzare),primo
esecondo
(i primi due numeri della successione), eterzo
(il terzo numero della successione). - Input dell’utente: Chiediamo all’utente quanti numeri della successione desidera visualizzare e memorizziamo questa informazione nella variabile
N
utilizzando la funzionescanf()
. - Gestione dei casi speciali: Verifichiamo se il valore inserito dall’utente per
N
è valido. SeN
è minore o uguale a 0, stampiamo un messaggio di errore e terminiamo il programma restituendo un codice di errore al sistema operativo. Questo garantisce che l’algoritmo gestisca correttamente casi in cui l’utente inserisce un valore non valido. - Visualizzazione dei primi due numeri della successione: Utilizziamo due istruzioni
printf()
per visualizzare i primi due numeri della successione di Fibonacci (primo
esecondo
). Questo è fatto indipendentemente dal valore diN
. SeN
è uguale a 1, visualizziamo solo il primo numero; seN
è uguale a 2, visualizziamo entrambi. - Calcolo dei restanti numeri della successione: Utilizziamo un ciclo
for
per calcolare e visualizzare i restanti numeri della successione. Iniziamo dai = 2
, poiché abbiamo già visualizzato i primi due numeri. Il ciclo continua fino a quandoi
è inferiore aN
. Ad ogni iterazione del ciclo, calcoliamo il valore del successivo numero di Fibonacciterzo
sommando i valori diprimo
esecondo
. Quindi aggiorniamoprimo
esecondo
con i valori correnti disecondo
eterzo
rispettivamente. Infine, stampiamo il valore diterzo
. - Conclusione del programma: Terminiamo il programma restituendo 0, indicando che il programma è stato eseguito correttamente.
La successione di Fibonacci in C – versione con il while
Possiamo utilizzare anche un ciclo while per sviluppare l’algoritmo sulla successione di Fibonacci.
Ecco dunque una possibile soluzione:
#include <stdio.h>
int main() {
int i = 2, N, primo = 1, secondo = 1, terzo;
// Chiediamo all'utente quanti numeri della successione vuole visualizzare
printf("Quanti numeri della successione vuoi visualizzare? ");
scanf("%d", &N);
// Controllo dei casi speciali
if (N <= 0) {
printf("N deve essere un numero positivo maggiore di zero.\n");
return 1; // Segnaliamo un errore al sistema operativo
}
// Visualizziamo i primi due numeri della successione
printf("%d\n", primo);
printf("%d\n", secondo);
// Calcoliamo e visualizziamo i restanti numeri della successione
while (i < N) {
terzo = primo + secondo;
primo = secondo;
secondo = terzo;
printf("%d\n", terzo);
i++;
}
return 0;
}
In questa versione, utilizziamo un ciclo while
per calcolare e visualizzare i numeri della successione di Fibonacci. L’approccio è simile a quello utilizzato con il ciclo for
, l’algoritmo continua ad eseguire il ciclo while
finché i
è minore di N
, e ad ogni iterazione calcola visualizza il successivo numero di Fibonacci.
Questo approccio è altrettanto valido e produce lo stesso risultato dell’algoritmo basato su for
, offrendo una diversa prospettiva sulla gestione dei cicli in C.
Conclusioni
In questa lezione, abbiamo sviluppato un semplice programma in linguaggio C per visualizzare i primi N numeri della successione di Fibonacci. Questo esempio illustra come sia possibile utilizzare il concetto di sequenza di Fibonacci in un contesto pratico di programmazione. Implementare algoritmi classici come questo può aiutare a migliorare la comprensione dei concetti di base della programmazione e delle strutture dei dati.