Ho appena aggiunto un nuovo programmino di esempio a TinyBASICBlazor, il mio ambiente web Tiny BASIC interattivo sperimentale: si tratta del classico calcolo della successione di Fibonacci.
Il programma è una versione semplificata (l’implementazione originale determina anche se gli elementi della successione siano numeri primi) e adattata per Tiny BASIC dell’esempio 4.18 del libro Programmare in BASIC (seconda edizione) di Byron S. Gottfried:
01 REM BASED ON EXAMPLE 4.18 FROM PROGRAMMING WITH BASIC BOOK BY BYRON S. GOTTFRIED
02 REM ADAPTED TO TINY BASIC BY MARCO'S RETROBITS
03 REM HTTPS://RETROBITS.ALTERVISTA.ORG (ENGLISH)
04 REM HTTPS://SOMEBITSOFME.ALTERVISTA.ORG (ITALIAN)
05 REM HTTPS://RETROBITS.ITCH.IO
10 REM GENERATION OF FIBONACCI NUMBERS
20 PRINT "N= (3<=N<=23)";
30 INPUT N
35 IF N < 3 THEN GOTO 20
36 IF N > 23 THEN GOTO 20
40 PRINT
50 PRINT "GENERATION OF FIBONACCI NUMBERS"
60 PRINT
70 LET G=1
80 LET H=1
90 PRINT "I= ";1,"F= ";1
100 PRINT "I= ";2,"F= ";1
110 LET I=3
120 LET F=G+H
200 PRINT "I= ";I,"F= ";F
210 LET H=G
220 LET G=F
230 LET I=I+1
235 IF I<=N THEN GOTO 120
240 END
Nel listato è evidente l’assenza del ciclo FOR, sostituito da meno eleganti IF e GOTO. Inoltre, la serie generata è limitata a un massimo di 23 elementi a causa della precisione limitata (16 bit) del tipo di dato numerico in questa implementazione dell’interprete.
Riporto di seguito l’output della generazione dei primi 20 numeri di Fibonacci:
N= (3<=N<=23)? 20
GENERATION OF FIBONACCI NUMBERS
I= 1 F= 1
I= 2 F= 1
I= 3 F= 2
I= 4 F= 3
I= 5 F= 5
I= 6 F= 8
I= 7 F= 13
I= 8 F= 21
I= 9 F= 34
I= 10 F= 55
I= 11 F= 89
I= 12 F= 144
I= 13 F= 233
I= 14 F= 377
I= 15 F= 610
I= 16 F= 987
I= 17 F= 1597
I= 18 F= 2584
I= 19 F= 4181
I= 20 F= 6765
:
Ho deciso di aggiungere questo programma per puro sentimento nostalgico, in quanto mi ricorda con piacere le esercitazioni di informatica ai tempi della scuola, tanti anni fa.
Puoi eseguire il programma “Fibonacci” in TinyBASICBlazor semplicementa navigando a questo indirizzo: retrobits.altervista.org/tinybasicblazor?p=fibonacci.