FreeBASIC – do-loop

Dopo aver visto come funziona l’istruzione for-next, oggi facciamo la conoscenza di una seconda struttura di controllo dedicata sempre alla iterazione: l’istruzione do-loop.

Sintassi

do [ { until | while } condizione ]
    [blocco istruzioni]
loop

oppure:

do
    [blocco istruzioni]
loop [ { until | while } condizione ]

Semantica

Le due modalità di scrittura dell’istruzione differiscono nel fatto che, nella seconda tipologia, il blocco di istruzioni viene eseguito almeno una volta.

Utilizzando la parola-chiave until, il ciclo si ripete fino a che (until) la condizione assume valore vero (true), una volta che questo accade si esce dal ciclo.

Con la parola-chiave while, invece, il ciclo si ripete mentre (while) la condizione ha valore vero (true); quando la condizione assume valore falso (false) il ciclo si interrompe.

Esempio

dim c as integer
c = 0
'il ciclo stampa i numeri da 0 a 9
do while c < 10
    print "Il valore della condizione è pari a: "; c
    c += 1 'incrementa di uno
loop

Nel prossimo articolo parleremo dei diversi tipi di files gestiti dal compilatore FreeBASIC.

FreeBASIC – for-next

Dopo aver parlato della struttura di controllo if-then-else utile per gestire le alternative, oggi incontriamo un’altra struttura di controllo che viene utilizzata per l’iterazione (o ciclo): l’istruzione for-next.

Questa è la sua sintassi:

for iteratore [as tipo dati] = valIniz to valFinale [step valPasso]
  [blocco istruzioni]
next iteratore

In pratica all’inizio del ciclo la variabile iteratore assume il valore valIniz, dopodiché il blocco delle istruzioni viene eseguito sino a che il valore della variabile iteratore non raggiunge il valore valFinale procedendo per passi della lunghezza pari a valPasso:

' stampa il valore della variabile i da 0 a 10 con passo 2
for i as integer = 0 to 10 step 2
    print "La variabile iteratore ora vale: "; i
next i

Alcune cose che è bene sapere:

  • la variabile iteratore può anche essere dimensionata all’esterno del ciclo;
  • il passo, oltre a poter assumere valori interi, può anche essere un valore decimale;
  • se il valore del passo non viene specificato, questo assumerà il valore predefinito 1;
  • i valori valIniz e valFinale possono essere anche delle espressioni;
  • il valore valFinale può anche essere minore di valIniz, in questo caso il passo deve avere un valore negativo.

Nel prossimo articolo parleremo di un’altra struttura iterativa, il ciclo do-loop.

FreeBASIC – if-then-else

Nel precedente articolo abbiamo imparato come immettere dati grazie alla istruzione input. Ora che abbiamo questa possibilità e quella di stampare a video delle informazioni, possiamo permetterci di scrivere il nostro primo programma contenente una struttura di controllo: la struttura if-then-else che permette di scegliere tra diverse alternative.

'Programma con struttura di controllo
dim t as string
input "Come ti chiami "; t
if t = "ciuchina" then
    print "Benvenuta "; t
elseif t = "ciuchino" then
    print "Benvenuto "; t
else
    print "Ciao, non ti conosco "; t
end if

Semplice, no? 🙂

Nota anche la presenza di un commento all’inizio del programma.

I commenti sono molto utili per fornire informazioni a chi leggerà il nostro codice, ma anche per noi stessi una volta che andremo a rileggere i nostri programmi a distanza di tempo.

Per inserire un commento su una singola riga basta anteporre il simbolo apice () al testo del nostro commento.

Nel prossimo articolo parleremo di un’altra struttura di controllo adatta a gestire l’ iterazione: l’istruzione for-next.

FreeBASIC – input

Ben ritrovati. 🙂

Dopo aver parlato di come si stampa a video, e aver imparato come si dichiara una variabile, passiamo ora ad analizzare come funziona l’istruzione input.

Questa istruzione permette di leggere una lista di valori immessi da tastiera.

dim as integer a, b
input "Immetti la base e l'altezza separati da una virgola ", a, b
print "L'area del quadrato vale: "; a * b

Se al posto della virgola, subito dopo la frase di richiesta, fosse stato inserito un punto e virgola, allora sarebbe comparso in automatico un punto di domanda alla fine della frase.

Se si immettono meno valori rispetto a quelli attesi, le variabili verranno comunque valorizzate: con zero per le variabili numeriche, e con un testo vuoto nel caso di variabili stringa.

Occorre precisare che la frase è opzionale e la lista delle variabili potrebbe anche ridursi ad una sola variabile:

input a

Immissione di un testo contenente delle virgole

Se abbiamo necessità di inserire una stringa contenente delle virgole, allora possiamo utilizzare l’istruzione line input:

dim t as string
line input "Inserisci un testo con virgole: ", t
print "Hai inserito il testo: "; t

Ci leggiamo al prossimo articolo dove faremo la conoscenza della nostra prima struttura di controllo adatta a gestire quelle situazioni in cui ci troviamo di fronte ad una alternativa: l’istruzione if-then-else 🙂

FreeBASIC – dim

Dopo aver incontrato l’istruzione print, è arrivato il momento di introdurre il concetto di variabile.

Una variabile è un’etichetta che identifica un ben determinato spazio di memoria che utilizzeremo per archiviare specifici valori.

Data questa definizione si può intuire una cosa molto importante: la tipologia dei valori che vogliamo memorizzare determina la quantità di spazio occorrente.

Ecco allora che risulta evidente che la prima cosa da fare è dichiarare (vedi: lista completa dei tipi di dati standard) il tipo di variabile. Questa dichiarazione dimensiona automaticamente lo spazio in memoria necessario (vedi: limiti dei tipi di dati standard).

In BASIC l’istruzione che fa tutto questo è l’istruzione dim:

dim x as integer, y as integer, t as string

oppure:

dim as integer x, y
dim as string t

Soltanto dopo aver definito un identificativo per la nostra variabile, e la sua tipologia, possiamo assegnargli un valore:

x = 3
y = 5
t = "casa"

Regole per la definizione degli identificativi

Per identificare una variabile – ovvero per darle un nome – occorre rispettare due semplici regole. Regole che valgono non soltanto per le variabili, ma anche per le funzioni e le procedure. Ovvero:

  1. gli identificativi possono contenere soltanto caratteri alfabetici (a-z, A-Z), numeri (0-9), il carattere underscore (_), il punto (.)
  2. il primo simbolo può soltanto essere o un carattere alfabetico o il carattere underscore (_)

Nota: il compilatore FreeBASIC non fa distinzioni tra lettere minuscole e maiuscole. Ciò significa che scrivere pippo equivale a scrivere piPPo.

Bene, siamo ora pronti per passare al prossimo argomento: l’input dei valori tramite tastiera.

FreeBASIC – print

Nel precedente articolo abbiamo imparato ad eseguire un file BASIC compilato.

Ora iniziamo a sperimentare i nostri primi programmi.

Sebbene potremmo sfruttare l’editor di testo che troviamo normalmente di default sul nostro computer, io consiglio di utilizzare sin da subito il semplice editor di testo Geany che, essendo multipiattaforma, possiamo usare indifferentemente in ambienti Windows, Linux, macOS e altri. Inoltre, avendo delle funzioni elementari tipiche di un IDE (ambiente di sviluppo integrato), ci permetterà, per esempio, di compilare e mandare in esecuzione i nostri programmi con più facilità:

  • tasto F8 per compilare il file sorgente .bas
  • tasto F5 per eseguire il file compilato

Bene, cominciamo!

Istruzione print

Quando ci si approccia ad un qualsiasi linguaggio di programmazione non si può evitare di tirare subito in ballo l’istruzione print per la stampa a video.

Nota: il BASIC è un linguaggio di programmazione che non tiene conto se scriviamo le istruzioni con le lettere maiuscole o minuscole.

In FreeBASIC abbiamo due modi per scriverla:

print "Ciao mondo!"

oppure:

? "Ciao mondo!"

Personalmente preferisco il primo modo perché il punto di domanda mi sembra un po’ troppo ambiguo.

Come organizzare la stampa a video

Per separare le parole di un determinato numero di spazi n si utilizza l’istruzione spc():

print "Ci dividono"; spc(4); "4 spazi."

Avrai forse notato l’uso del punto e virgola. Bene, devi sapere che con il punto e virgola si concatenano le parole e che lo stesso risultato lo ottieni utilizzando i segni + e &:

print "Questo"; "testo" + "mi" & "soffoca."

Per incolonnare il testo si utilizza invece la virgola:

print "Fammi", "spazio!"

Per organizzare il testo in maniera tabellare si utilizza l’istruzione tab():

print "Nome"; tab(20); "Data di nascita"; tab(40); "Residenza"
print "ciuchino"; tab(20); "13 dicembre 2018"; tab(40); "Web"

Un’ultima cosetta riguarda la possibilità di stampare direttamente il risultato di una operazione:

print "4 x 3 ="; 4 * 3

Facile, no? 🙂

Per oggi chiudiamo qui. Ci leggiamo al prossimo articolo dove parleremo del dimensionamento o dichiarazione delle variabili.

FreeBASIC – esecuzione

Dopo aver imparato come installare il compilatore FreeBASIC, vediamo adesso insieme la semplice procedura, in due soli passi, per compilare un file sorgente contenente il nostro codice BASIC e quindi eseguire il file compilato.

Ambienti Windows

  • Aprire un semplice editor di testo e scrivere la seguente istruzione:
print "Ciao mondo!"
  • Salvare il file con il nome: ciao.bas
  • Spostarsi nella cartella dove si è salvato il file ciao.bas e compilare il file con il seguente comando:
fbc ciao.bas
  • Se il compilatore non segnala errori – nel qual caso occorrerà correggerli – troveremo nella stessa cartella un file eseguibile denominato ciao.exe che possiamo lanciare semplicemente con il comando:
ciao

Ambienti Linux

  • Aprire un semplice editor di testo e scrivere la seguente istruzione:
print "Ciao mondo!"
  • Salvare il file con il nome: ciao.bas
  • Spostarsi nella cartella dove si è salvato il file ciao.bas e compilare il file con il seguente comando:
fbc ciao.bas
  • Se il compilatore non segnala errori – nel qual caso occorrerà correggerli – troveremo nella stessa cartella un file eseguibile denominato semplicemente ciao che possiamo lanciare con il comando:
./ciao

Bene! Ora siamo pronti per sperimentare dal prossimo articolo la programmazione in FreeBASIC. Cominceremo a farlo con l’istruzione print. 🙂

FreeBASIC – installazione

Installare il compilatore FreeBASIC è un gioco da ragazzi.

Procedura per i sistemi Windows

  1. Accedere al sito ufficiale FreeBASIC e premere sul pulsante verde in evidenza con la scritta Get FreeBASIC che rimanda alla piattaforma Web di condivisione del codice SourceForge.
  2. Scegliere la cartella della versione desiderata e poi cliccare sul link Binaries-Windows.
  3. Cliccare sul link FreeBASIC-x.xx.x-win32.zip (oppure FreeBASIC-x.xx.x-win64.zip per i sistemi a 64 bit) e attendere il download del file. Meglio evitare di scaricare il file eseguibile .exe.
  4. Decomprimere il file in una cartella a piacimento ricordandosi di fare in modo che il percorso completo sia composto da nomi di cartelle contenenti soltanto caratteri alfanumerici privi di lettere accentate e spazi.
  5. A questo punto è utile far conoscere alla nostra macchina il percorso per arrivare al compilatore da qualsiasi altra cartella dove potremo salvare i nostri file contenenti il codice sorgente da compilare. Per fare questo occorre impostare la variabile di sistema PATH.
  6. Per disinstallare il compilatore sarà sufficiente eliminare la cartella dove lo abbiamo decompresso.

Procedura per i sistemi Linux

  1. Accedere al sito ufficiale FreeBASIC e premere sul pulsante verde in evidenza con la scritta Get FreeBASIC che rimanda alla piattaforma Web di condivisione del codice SourceForge.
  2. Scegliere la cartella della versione desiderata e poi cliccare sul link Binaries-Linux.
  3. Cliccare sul link FreeBASIC-x.xx.x-linux-x86.tar.gz (oppure FreeBASIC-x.xx.x-linux-x86_64.tar.gz per i sistemi a 64 bit) e attendere il download del file.
  4. A questo punto apriamo una finestra Terminale, spostiamoci nella cartella dove è stato decompresso il file .tar.gz e digitiamo il comando riportato a seguire che installerà automaticamente il nostro compilatore nella cartella di sistema /usr/local permettendoci quindi di lanciarlo da qualsiasi altra cartella:
    1. sudo ./install.sh -i
  5. Per disinstallare il compilatore sarà sufficiente lanciare questo comando:
    1. sudo ./install.sh -u
  6. Ora, in base al proprio sistema Linux, occorre installare dei pacchetti aggiuntivi che sono necessari per far funzionare correttamente il compilatore FreeBASIC. Per farlo ricordatevi di anteporre il comando sudo apt-get install … ad ogni nome di pacchetto:
Pacchetti per sistemi Debian/Ubuntu:
  gcc
  libncurses5-dev
  libtinfo5
  libffi-dev
  libgl1-mesa-dev
  libx11-dev libxext-dev libxrender-dev libxrandr-dev libxpm-dev
Pacchetti per sistemi Fedora:
  gcc
  ncurses-devel
  libffi-devel
  mesa-libGL-devel
  libX11-devel libXext-devel libXrender-devel libXrandr-devel libXpm-devel
Pacchetti per sistemi OpenSUSE:
  gcc
  ncurses-devel
  libffi46-devel
  xorg-x11-devel

Nel prossimo articolo vedremo come utilizzare il compilatore FreeBASIC ed eseguire i nostri primi programmi BASIC. 🙂