INFORMATICA - BASIC: I DATI E LE PRIME ISTRUZIONI

LE COSTANTI

Le costanti sono dati che non variano durante l'elaborazione e mantengono sempre il valore che rappresentano.
Si possono utilizzare costanti numeriche ed alfanumeriche.
Le costanti alfanumeriche, o stringhe, possono comprendere qualsiasi carattere e vengono racchiuse tra virgolette.
Se si definisce un numero tra virgolette ("1.500") viene considerato una stringa e non può essere utilizzato in operazioni aritmetiche.
Le costanti numeriche sono di vari tipi, come le variabili: numeri interi, numeri reali espressi con la notazione decimale e numeri in formato esponenziale (una mantissa, anche col punto decimale e una parte frazionaria, la lettera E e un esponente con segno).
E' possibile definire costanti in virgola mobile in doppia precisione sostituendo la lettera D alla lettera E.
Ci sono poi le costanti esadecimali, cioè numeri nel sistema di numerazione a base 16; queste costanti iniziano con il simbolo &H.

LA DEFINIZIONE DI COSTANTI SIMBOLICHE

E' possibile associare un nome a una costante in modo che nel corso del programma si possa far riferimento alla costante mediante il nome anziché mediante il suo valore, numero o stringa.

CONSTnome = espressione

La definizione di costanti simboliche risulta utile soprattutto nel caso in cui si debba successivamente variare il valore della costante nel programma. Basterà variare il valore nell'istruzione di definizione perché risulti modificato in tutte le istruzioni che la utilizzano.

LE COSTANTI NUMERICHE: I NUMERI REALI

Per le costanti numeriche in singola precisione vengono prese in considerazione al massimo 6 cifre; in doppia precisione vengono considerate al massimo 16 cifre.
Una costante numerica di 8 cifre viene interpretata come una costante in doppia precisione; per definire una costante in doppia precisione si può anche utilizzare il formato esponenziale con la lettera D o far terminare il numero con il simbolo #.
Le costanti in singola precisione invece hanno meno di 7 cifre, il formato esponenziale con la E, o terminano con un !.

LA DEFINIZIONE DELLE VARIABILI

Una variabile è un'area di memoria. In essa vengono memorizzati i valori che via via vengono assegnati alla variabile; ogni variabile è definita di un particolare tipo, cioè può contenere solo valori di quel tipo.
I nomi delle variabili devono cominciare con una lettera e possono essere al massimo di 40 caratteri; ciò significa che, se due nomi sono lunghi 41 caratteri e differiscono solo per l'ultimo, vengono considerati come se si riferissero alla stessa variabile; 40 caratteri sono comunque molti e in genere non sorgono problemi.
Conviene usare nomi non troppo lunghi per facilitare la scrittura del programma, ma neanche troppo corti, in modo che possano essere significativi. (L'abitudine, ancora oggi diffusa, di usare nomi molto brevi, di uno o due caratteri, deriva dal fatto che i primi interpreti distinguevano soltanto i primi due caratteri).
Il tipo della variabile viene definito da un suffisso, cioè un carattere posto in fondo al nome della variabile.
I suffissi possibili sono:
! o niente: variabile numerica reale in precisione semplice;
% : variabile numerica intera;
$ : variabile alfanumerica, detta anche stringa;
# : variabile numerica reale in precisione doppia;
& : variabile numerica intera long.

VALORI AMMESSI PER I DIVERSI TIPI DI VARIABILI

I numeri interi validi sono quelli contenuti nell'intervallo -32768/32767.
Per la rappresentazione vengono utilizzati 2 byte.
Gli interi LONG possono variare tra -2.147.483.648 e 2.147.483.647.
Per la rappresentazione vengono utilizzati 4 byte.
I numeri reali in precisione semplice possono variare tra -3.402823E+38 e 3.402823E+38; esiste comunque un intervallo dello 0 in cui non sono definiti valori; il più grande numero negativo valido è -2.802597E-45; il più piccolo numero positivo valido è 2.802597E-45.
I numeri rappresentabili sono soltanto quelli con 7 cifre di precisione, perciò ci sono molti valori che non sono rappresentabili anche nell'intervallo di definizione dei valori.
Per la rappresentazione vengono utilizzati 4 byte.
I numeri reali in doppia precisione possono variare tra -1.79769313486231D+308 e 1.79769313486231D+308; esiste anche in questo caso un intervallo dello 0 in cui non sono definiti valori; il più grande numero negativo valido è -4.940656458412465D-324; il più piccolo numero positivo valido è 4.940656458412465D-324; i numeri possono avere al massimo 16 cifre di precisione.
Per la rappresentazione vengono utilizzati 8 byte.
Le stringhe possono contenere da 0 a 32.767 caratteri.
Una stringa occupa tanti byte quanti sono i caratteri della stringa più altri tre byte in ogni caso.

LE ISTRUZIONI DEF

Per semplificare la definizione dei tipi di variabili è possibile stabilire che tutti i nomi che iniziano con una certa lettera (o certe lettere) siano di uno stesso tipo.
Le istruzioni che impostano il tipo di dati predefinito per le variabili sono:
DEFINT per le variabili numeriche intere;
DEFLNG per le variabili numeriche intere LONG;
DEFSNG per le variabili numeriche reali in singola precisione;
DEFDBL per le variabili numeriche reali in doppia precisione;
DEFSTR per le variabili alfanumeriche o stringhe.
E' consigliabile riunire le istruzioni di definizione di tipo all'inizio del programma.
Una variabile per cui non sia precisato in nessun modo il tipo, né con le istruzioni di definizione di tipo né con un suffisso, viene considerata numerica reale in singola precisione.

ESEMPI
Con le istruzioni DEF è possibile stabilire che tutte le variabili che cominciano con le lettere indicate siano di un certo tipo.
L'istruzione
DEFINT N
stabilisce che tutti i nomi che iniziano con la lettera N definiscono variabili numeriche intere.
Però, nonostante questa definizione, NUMERO! è una variabile numerica reale in singola precisione; il suffisso infatti ha sempre la priorità sulle altre definizioni.

L'istruzione
DEFSTR A-C,H-L
stabilisce che tutti i nomi che iniziano con letter A, B, C, H, I, L definiscono variabili alfanumeriche.

IL COMANDO CLEAR

CLEAR di solito viene utilizzato come comando in modo diretto, ma può comparire anche come istruzione all'interno del programma; il suo compito è di pulire l'area di memoria usata per le variabili, impostando a 0 le variabili numeriche e a spazi le variabili alfanumeriche.

PROGRAMMA 1
Questo programma serve a dimostrare quali sono i valori ammessi per le variabili numeriche intere.

Descrizione delle variabili


+----------------------------------------------------------------+
¦   NOME    ¦    TIPO     ¦      I/O         ¦    SIGNIFICATO    ¦
+-----------+-------------+------------------+-------------------¦
¦  NUMERO   ¦numero intero¦   input/output   ¦numero da stampare ¦
+----------------------------------------------------------------+

Flow chart Programma 1


Pseudocodifica (vedi Figura)


  1   inizio
  2        emissione richiesta numero
  3        lettura NUMERO
  4        emissione NUMERO
  5   fine

 2  Messaggio di richiesta del dato
 3  Istruzione di lettura del dato; il programma si arresta e l'utente deve inserire un numero intero.
 4  Stampa del numero inserito dall'utente.

Programma in Basic

  10      REM Dimostrazione dell'uso di variabili numeriche intere
  20        PRINT "Inserire un numero intero"
  30        INPUT NUMERO%
  40     PRINT "Il numero inserito è: "; NUMERO%
  50   END

30 Istruzione per la lettura del numero; la variabile è numerica intera poiché termina con il simbolo %. I numeri validi sono quelli compresi tra -32768 e 32767.
40 La stampa del numero inserito è preceduta da un messaggio esplicativo.


+----------------------------------------------------------------+
¦ Esempi di esecuzione                                           ¦
¦                                                                ¦
¦ Inserire un numero intero                                      ¦
¦ ? 1524                                                         ¦
¦ Il numero inserito è:  1524                                    ¦
¦                                                                ¦
¦ Inserire un numero intero                                      ¦
¦ ? 56780                                                        ¦
¦                                                                ¦
¦ Overflow                                                       ¦
¦ Ricominciare da capo                                           ¦
¦ ?                                                              ¦
¦                                                                ¦
¦ Inserire un numero intero                                      ¦
¦ ? 3.7                                                          ¦
¦ Il numero inserito è:  4                                       ¦
¦                                                                ¦
¦ Inserire un numero intero                                      ¦
¦ ? q                                                            ¦
¦                                                                ¦
¦ Ricominciare da capo                                           ¦
+----------------------------------------------------------------+

Commenti
Se la variabile è definita di tipo numerico intero vengono accettati tutti i numeri interi compresi nell'intervallo di definizione.
Se il numero intero non è compreso tra i limiti (-32768 e 32767) si verifica un errore di esecuzione.
Se il numero non è intero viene arrotondato.
Se il dato inserito non è numerico si verifica un errore di esecuzione.

PROGRAMMA 2
Questo programma serve a dimostrare quali sono i valori ammessi per le variabili numeriche reali.

Descrizione delle variabili


+----------------------------------------------------------------+
¦   NOME    ¦    TIPO     ¦      I/O         ¦    SIGNIFICATO    ¦
+-----------+-------------+------------------+-------------------¦
¦  NUMERO   ¦numero reale ¦   input/output   ¦numero da stampare ¦
+----------------------------------------------------------------+

Flow chart Programma 2


Pseudocodifica (vedi Figura)


  1   inizio
  2        emissione richiesta numero
  3        lettura NUMERO
  4        emissione NUMERO
  5   fine

3 Istruzione di lettura del dato; il programma si arresta e l'utente deve inserire un numero reale.

Programma in Basic


  10   REM Dimostrazione dell'uso di variabili numeriche reali
  20        PRINT "Inserire un numero"
  30        INPUT NUMERO
  40          PRINT "Il numero inserito è: "; NUMERO
  50   END

30 Istruzione per la lettura del numero; la variabile è numerica reale poiché non ha suffisso. I valori possono essee inseriti in notazione decimale o esponenziale.


+----------------------------------------------------------------+
¦ Esempi di esecuzione                                           ¦
¦                                                                ¦
¦ Inserire il numero                                             ¦
¦ ? 5670.34                                                      ¦
¦ Il numero inserito è:  5670.34                                 ¦
¦                                                                ¦
¦ Inserire il numero                                             ¦
¦ ? 123E15                                                       ¦
¦ Il numero inserito è:  1.23E+17                                ¦
¦                                                                ¦
¦ Inserire il numero                                             ¦
¦ ? 10E38                                                        ¦
¦ Overflow                                                       ¦
¦ Ricominciare da capo                                           ¦
¦ ?                                                              ¦
¦                                                                ¦
¦ Inserire il numero                                             ¦
¦ ? 0.123456789                                                  ¦
¦ Il numero inserito è:  0.1234568                               ¦
¦                                                                ¦
¦ Inserire il numero                                             ¦
¦ ? f                                                            ¦
¦                                                                ¦
¦ Ricominciare da capo                                           ¦
+----------------------------------------------------------------+

Commenti
Il numero reale può essere espresso nella notazione con il punto decimale o nella notazione esponenziale.
Se il numero non è compreso tra i limiti di grandezza (10-38 e 1037) si verifica un errore di esecuzione.
Se il numero ha più cifre significative di quelle ammesse dalla precisione disponibile, le cifre in eccesso vengono troncate o arrotondate.
Se il dato inserito non è numerico si verifica un errore di esecuzione.

PROGRAMMA 3
Questo programma serve a dimostrare quali sono i valori ammessi per le variabili alfanumeriche.

Descrizione delle variabili


+----------------------------------------------------------------+
¦   NOME    ¦    TIPO     ¦      I/O         ¦    SIGNIFICATO    ¦
+-----------+-------------+------------------+-------------------¦
¦  FRASE $  ¦ alfanumerico¦   input/output   ¦ frase da stampare ¦
+----------------------------------------------------------------+

Flow chart Programma 3


Pseudocodifica (vedi Figura)


  1   inizio
  2        emissione richiesta frase
  3        lettura FRASE
  4        emissione FRASE
  5   fine

3 Istruzione di lettura del dato; il programma si arresta e l'utente deve inserire una frase.

Programma in Basic


  10      REM Dimostrazione dell'uso di variabili stringa
  20        PRINT "Inserire una frase"
  30        INPUT FRASE$
  40        PRINT "La frase inserita è: "; FRASE$
  50   END

30 Istruzione per la lettura del numero; la variabile è alfanumerica poiché termina con il simbolo $.


+----------------------------------------------------------------+
¦ Esempi di esecuzione                                           ¦
¦                                                                ¦
¦ Inserire una frase                                             ¦
¦ ? ciao a tutti                                                 ¦
¦ La frase inserita è: ciao a tutti                              ¦
¦ Inserire la frase                                              ¦
¦ ? 789.1002                                                     ¦
¦ La frase inserita è: 789.1002                                  ¦
+----------------------------------------------------------------+

Commenti
Qualsiasi stringa di caratteri viene riportata come inserita.
Anche un numero viene interpretato come una stringa di caratteri.

GLI OPERATORI ARITMETICI

Gli operatori permettono di combinare insieme costanti e variabili per formare espressioni che, una volta valutate, danno come risultato un valore singolo.
Gli operatori aritmetici sono quelli che permettono di definire le comuni operazioni aritmetiche:

+ addizione
- sottrazione
* moltiplicazione
/ divisione tra numeri reali
\ divisione tra numeri interi
^ elevamento a potenza

L'ordine con cui questi operatori vengono valutati in una espressione è:
- elevamento a potenza;
- moltiplicazione e divisione;
- addizione e sottrazione.
L'ordine di valutazione può essere modificato con l'uso delle parentesi tonde.

Un altro operatore disponibile è MOD che dà il resto della divisione tra due numeri interi; se i numeri che vengono specificati non sono interi vengono arrotondati prima di applicare l'operatore.

ESEMPI
L'operatore MOD fornisce il resto della divisione tra due numeri (se i numeri non sono interi vengono arrotondati.

L'OPERATORE DI CONCATENAZIONE DI STRINGHE

L'operatore + può essere utilizzato tra operandi di tipo stringa; in questo caso assume il significato di concatenare le stringhe, cioè di unire la seconda stringa alla prima.

ESEMPI
L'operatore + è l'operatore di concatenazione di stringhe.

Date le variabili NOME$ e COGNOME$, l'espressione NOME$ + " " = COGNOME$ dà una stringa contenente il nome e il cognome separati da uno spazio.
Se NOME$ = "MARIO" e COGNOME$ = "ROSSI"
NOME$ + " " COGNOME$ dà "MARIO ROSSI"

OVERFLOW E UNDERFLOW

Se il risultato di un'espressione produce un valore troppo grande, esterno all'intervallo di definizione, si verifica una eccedenza o "overflow" che causa l'arresto dell'esecuzione con una segnalazione di errore; la stessa cosa si verifica se il valore diventa troppo piccolo (underflow).

LE ISTRUZIONI

Le istruzioni del Basic di solito vengono numerate progressivamente e alcune istruzioni fanno riferimento al numero di altre; i numeri in genere sono progressivi ma l'incremento non è di 1 in 1 ma di 10 in 10 in modo da lasciare dei numeri inutilizzati per eventuali inserimenti di altre istruzioni tra quelle già presenti.
La numerazione delle istruzioni serviva soprattutto per istruzioni come GOTO (il salto ad un'altra istruzione) e GOSUB (il salto all'inizio di un sottoprogramma) che fanno riferimento a un numero di riga.
Nella versione del Basic che stiamo esaminando ci sono delle istruzioni che possono sostituire la GOTO e la GOSUB e che conviene sicuramente usare al loro posto; queste istruzioni, come si vedrà, non fanno riferimento a numeri di riga. Diventa così inutile numerare le istruzioni del programma. La numerazione delle righe in questa versione di Basic è quindi facoltativa.
Per la scrittura delle istruzioni è possibile scrivere una istruzione per riga o anche più istruzioni sulla stessa riga, separate dal simbolo ":" per rendere più compatto il programma. Conviene comunque non perdere mai di vista un obiettivo importante: la leggibilità del programma.
Le istruzioni vanno quindi scritte in modo che il programma sia facilmente leggibile, curando anche l'indentazione delle istruzioni di controllo, in modo che la struttura del programma risulti evidente e facile da capire.

LE ISTRUZIONI DI COMMENTO

Perché il programma risulti facile da rivedere è opportuno inserire molti commenti per spiegare il significato delle variabili e delle istruzioni.
L'istruzione per inserire un commento è REM (da remark che significa nota, appunto); invece di REM si può usare l'apice ('); tutto quello che viene scritto dopo viene ignorato dall'interprete; quindi si può scrivere qualsiasi cosa e serve soltanto al programmatore per annotare le informazioni necessarie a comprendere meglio il programma.
Si può inserire un commento anche su una riga che contiene già altre istruzioni facendolo precedere dall'apice o da :REM.

L'USO DELLE ISTRUZIONI DI COMMENTO

Si consiglia di usare sempre molti commenti nel programma. Conviene però non inserirne all'interno dei cicli: anche se l'interprete appena riconosce che si tratta di un'istruzione REM prosegue senza processarla, impiega comunque un pò di tempo a riconoscerla. Se si ricorda il funzionamento di un interprete (esamina ogni istruzione che incontra, la traduce e la esegue, ma senza conservare nulla del lavoro fatto su ciascuna istruzione) si capisce che le istruzioni di un ciclo vengono esaminate da capo ogni volta che il ciclo viene percorso.

L'ISTRUZIONE END

Ogni programma termina con l'istruzione END che fa ritornare il controllo all'ambiente di sviluppo dell'interprete.

LE ISTRUZIONI PER L'OUTPUT DEL PROGRAMMA

Perché il programma comunichi qualcosa all'utente bisogna utilizzare delle istruzioni di stampa.
La stampa può avvenire a video o su stampante
Le istruzioni per la stampa sono:
PRINT per la stampa sul video;
LPRINT per la stampa su stampante.

PRINT [elencoespressioni] [{;|,}]
LPRINT [elencoespressioni] [{;|,}]

Le istruzioni PRINT e LPRINT non seguite da nessuna espressione producono una riga vuota; servono quindi per saltare delle righe.

La lista di espressioni può contenere variabili o costanti sia di tipo numerico che alfanumerico; le costanti alfanumeriche vanno sempre racchiuse tra virgolette.
Le espressioni nella lista possono essere separate da virgole o punti e virgola.
La posizione di stampa di ogni valore dipende dalla punteggiatura specificata.
Se non c'è punteggiatura i valori vengono stampati uno dopo l'altro e poi si va a capo.
Se c'è un punto e virgola il valore successivo viene stampato immediatamente dopo l'ultimo; se il punto e virgola viene messo al termine dell'istruzione, l'istruzione PRINT successiva inizia la stampa sulla stessa riga, dopo l'ultimo valore stampato.
Se c'è una virgola il valore successivo viene stampato all'inizio di una nuova zona; ogni riga è divisa in zone di 14 spazi ciascuna. Se l'istruzione termina con una virgola la successiva istruzione PRINT riparte sulla stessa riga, da una nuova zona.
Se i dati da visualizzare occupano più dell'ampiezza di una riga la stampa prosegue sulla riga successiva.
Si può quindi predisporre una stampa curata a piacere, scegliendo opportunamente la punteggiatura nelle istruzioni PRINT.

ESEMPI
L'uso della punteggiatura nelle istruzioni PRINT permette di ottenere l'output nella forma voluta.

Dati i valori:
A = 1500
B = -123.54
C$ = "FINE"

Le istruzioni:
PRINT A
PRINT B
PRINT C
producono:
1500
-123.54
FINE

Ogni istruzione causa un ritorno a capo.

Le istruzioni:
PRINT A B;
PRINT C
producono:
1500 -123.54 FINE
B viene stampato immediatamente dopo A (ma dopo ogni numero viene sempre saltato uno spazio); il punto e virgola dopo l'istruzione fa rimanere il cursore subito dopo il valore di B, e qui l'istruzione successiva stampa C.

L'istruzione:
PRINT A, B, C
produce:
1500 -123.54 FINE
Ogni valore occupa una zona di 14 spazi.

L'istruzione LPRINT manda l'output alla stampante; se la stampante non è pronta per la stampa (se è spenta, o non attiva o manca la carta ecc.) si verifica un errore segnalato con un messaggio.
L'istruzione LPRINT serve anche per inviare comandi alla stampante, come la selezione del set di caratteri o l'avanzamento di pagina. Queste funzioni sono controllate da codici specifici per ogni stampante e bisogna quindi consultare la documentazione della stampante che si usa per reperirli.
La forma è comunque del tipo:
LPRINT CHR$(n) dove n è il numero di codice.

Il formato di stampa può essere perfezionato ancora meglio con le istruzioni PRINT USING e LPRINT USING.

PRINT USING stringaformato$; elencoespressioni [{;|,}]

LPRINT USING stringaformato$; elencoespressioni [{;|,}]

La stringa rappresentata da stringaformato$ è una costante o una variabile di tipo stringa che contiene dei caratteri speciali che permettono di definire il formato voluto per la stampa dei valori.
I caratteri di formattazione si utilizzano in genere per ottenere formati particolari per la stampa dei numeri.
I caratteri per i campi numerici che possono servire di più sono:

# si utilizza questo simbolo per rappresentare la posizione di ciascuna cifra; se il numero è formato da meno cifre viene allineato a destra e preceduto da tanti spazi quanti ne sono necessari per completare il numero di posizioni specificato.

. indica la posizione del punto decimale; si può utilizzare, per esempio, per forzare la stampa dello zero prima del punto decimale che normalmente non viene stampato.

+ fa stampare il segno + per i numeri positivi che normalmente non viene stampato.

¦ una sottolineatura fa stampare come costante il carattere seguente.

Se il numero da stampare è più grande del formato definito viene stampato preceduto da un simbolo di percentuale.

ESEMPI
L'istruzione PRINT USING permette di definire il formato di stampa desiderato.

Le istruzioni:
PRINT USING "
#.
"; 15.3
PRINT USING "
#.
"; .42
PRINT USING "
#.
"; 324.9
PRINT USING "
#.
"; 1.4567
producono:
15.3
0.42
324.9
1.45

I numeri risultano incolonnati al punto decimale.
Le istruzioni:
PRINT USING "+
#"; -25
PRINT USING "+
#"; 91
producono:
-25
+91

Si ottiene la stampa del segno anche per i numeri positivi.

L'istruzione:
PRINT USING "_L_.
#"; 15000
produce:
L.15000

Con il simbolo di sottolineatura si possono specificare caratteri costanti.

LA STAMPA DEI NUMERI

I numeri stampati sono sempre seguiti da uno spazio, e preceduti da uno spazio se positivi o dal segno meno se negativi. I numeri reali vengono stampati nel formato esponenziale; vengono però stampati come numeri interi o con la notazione decimale se possono essere stampati con meno di 6 cifre per i numeri in singola precisione e con meno di 16 cifre per i numeri in doppia precisione.
Per esempio 1E-6 viene stampato come .000001 ma 1E-7 rimane invariato.

LE FUNZIONI PER IL POSIZIONAMENTO DELL'OUTPUT

Per la preparazione del formato di stampa possono essere utili anche le funzioni TAB e SPC. (Delle funzioni si parlerà estesamente nel prossimo capitolo).

TAB(colonna%) sposta il cursore alla colonna indicata. Se il cursore si trova già oltre la colonna indicata il posizionamento viene fatto sulla riga successiva.

SPC(n%) salta n spazi dall'ultima posizione di stampa. Il numero di spazi deve essere un valore compreso tra 0 e 32767.

Se TAB o SPC sono specificate alla fine di una istruzione PRINT sopprimono il ritorno a capo, come se l'istruzione terminasse con un punto e virgola.

ESEMPI
Posizionamenti dell'output ottenuti con le funzioni TAB e SPC.

L'istruzione:
PRINT 24 TAB(6) 35
produce:
24 35

Dopo la stampa del primo numero si ha un posizionamento alla sesta colonna.

L'istruzione:
PRINT "INIZIO" SPC(10) "FINE"
produce:
INIZIO FINE

Dopo la stampa della prima stringa vengono saltati dieci spazi.

L'ISTRUZIONE WIDTH

L'istruzione WIDTH permette di impostare l'ampiezza della riga di stampa.
WIDTH dimensione

Per il video
WIDTH "SCRN:" dimensione
definisce il numero di caratteri che si possono visualizzare su una riga dello schermo; la dimensione può essere di 40 o 80 caratteri.

L'istruzione LPRINT normalmente considera la riga di stampa di 80 caratteri (come per le stampanti standard) e inserisce quindi in modo automatico un ritorno a capo dopo 80 caratteri.
L'istruzione
WIDTH LPRINT colonne%
permette di definire il numero di caratteri che si possono stampare su una riga.

LA PULIZIA DEL VIDEO

L'output del programma a video viene mandato sullo schermo dei comandi DOS; su questo schermo vengono occupate le righe che occorrono e quando lo schermo risulta pieno si ha uno scorrimento verso l'alto delle righe. Quindi se sullo schermo è già presente qualcosa, l'output del programma comicia dalla prima riga libera, dopo il prompt del DOS.
L'istruzione CLS, usata in modo diretto o inserita all'inizio di un programma permette di ripulire lo schermo dal contenuto precedente.

LE ISTRUZIONI DI INPUT

Per la lettura di un dato si usa l'istruzione INPUT.

INPUT [;] ["prompt" {;|,}] elencovariabili

Quando incontra questa istruzione il programma si arresta e compare un punto di domanda (?). L'interprete resta in attesa dell'inserimento del dato e riprende l'esecuzione soltanto dopo che l'utente ha confermato il dato inserito con il tasto di invio.
Dopo un'istruzione INPUT normalmente si ha un ritorno a capo; il punto e virgola dopo INPUT mantiene il cursore sulla riga dopo che i dati sono stati accettati, alla pressione del tasto di invio.
"prompt" è una scritta che si può far comparire prima che il programma rimanga in attesa dei dati; se si usa il punto e virgola viene seguita dal punto interrogativo, mentre se si usa la virgola il punto interrogativo non viene mostrato.

L'INSERIMENTO DEI DATI

I dati inseriti alla richiesta, se sono più di uno, devono essere separati da virgole e vengono assegnati ordinatamente alle variabili specificate nell'elenco.
Le variabili dell'elenco possono essere numeriche o alfanumeriche; i dati inseriti devono corrispondere per numero e tipo alle variabili specificate; se il numero di dati è maggiore o minore del necessario, o il valore inserito non è accettabile per il tipo di variabile, il programma si blocca e l'interprete chiede di ricominciare da capo.
I dati alfanumerici possono essere scritti senza virgolette; queste sono necessarie se il messaggio deve contenere delle virgole o degli spazi iniziali o finali che altrimenti sono in generale eliminati; restano invece gli spazi intermedi.
I dati digitati compaiono sullo schermo e possono essere modificati finché non si preme il tasto di invio.

ESEMPI
L'istruzione INPUT richiede l'inserimento di dati da parte dell'utente.

Se il programma contiene l'istruzione:
INPUT A, B, C
si devono inserire tre numeri separati da virgole come:
25,76.2,8.165

Se il programma contiene l'istruzione:
INPUT NOME$, COGNOME$
il nome e il cognome vanno inseriti ancora separati da virgole, come:
MARIO,ROSSI

Invece si potrebbe inserire
MARIO ROSSI
senza virgole, se l'istruzione fosse:
INPUT NOMINATIVO$

Se si vuole inserire l'indirizzo VIA ROMA, 27
quando il programma incontra l'istruzione:
INPUT INDIRIZZO$
si deve scrivere:
"VIA ROMA, 27"

ALTRE ISTRUZIONI DI INPUT

Per l'input di dati si possono utilizzare anche le istruzioni LINE INPUT e INKEY$.

LINE INPUT [:] ["prompt" {;|,}] variabile$

L'istruzione LINE INPUT legge una stringa dalla tastiera e la assegna alla variabile specificata; i caratteri possono essere al massimo 255 e vengono considerati finché si incontra un carattere di ritorno a capo.
La funzione INKEY$ legge un carattere dalla tastiera, o meglio dal buffer della tastiera.
Il suo funzionamento è particolare rispetto a INPUT; infatti non rimane in attesa che venga premuto un tasto, ma prende un carattere dal buffer; se non c'è nessun carattere restituisce una stringa nulla, altrimenti prende un carattere dal buffer.
Per i tasti standard dà una stringa di 1 byte col carattere; per i tasti estesi, cioè quelli relativi al movimento del cursore o alle combinazioni con Shift, Ctrl e Alt, dà 2 byte : un carattere nullo (ASCII 0) più il codice di espansione della tastiera.
INKEY$, a differenza di INPUT non visualizza sullo schermo il carattere inserito da tastiera.

L'ISTRUZIONE DI ASSEGNAZIONE

L'istruzione per eseguire un'assegnazione è LET.

LETvariabile = espressione

La parola LET non è indispensabile e si può sempre scrivere una assegnazione come:

variabile = espressione

dove espressione può essere una costante, una variabile o un'espressione composta da variabili, costanti e operatori, ma comunque dello stesso tipo della variabile ricevente e che, al momento dell'assegnazione, deve avere un valore preciso; dopo l'assegnazione la variabile indicata alla sinistra del simbolo uguale viene posta uguale a questo valore.
Per esempio si può fare in modo che:
- una variabile numerica sia posta uguale a un numero dato;
- una variabile numerica sia posta uguale ad un'altra variabile numerica oppure al risultato di un'operazione aritmetica o algebrica fra due o più variabili o costanti;
- una variabile numerica sia posta uguale al suo valore aumentato o diminuito di una certa quantità (o di un'altra variabile) oppure al suo valore iniziale moltiplicato, diviso, sommato ecc. a numeri o ad altre variabili;
- una variabile alfanumerica sia posta uguale ad un insieme di lettere, cifre e simboli;
- una variabile alfanumerica sia posta uguale ad un'altra variabile alfanumerica, oppure a più variabili alfanumeriche scritte una dopo l'altra, oppure a se stessa con aggiunta di altre variabili o costanti alfanumeriche.

ESEMPI
Assegnazioni; la parola LET può essere omessa.

LET A% = 15
LET B! = C! + D!
LET B% = B% + 1
LET NOME$ = MARIANGELA
LET NOMES$ = NOME$ + COGNOME$

L'ISTRUZIONE SWAP

L'istruzione SWAP permette di scambiare il valore di due variabili senza usarne una di comodo.

SWAP var1, var2

Le variabili possono essere di qualsiasi tipo, purché entrambe siano dello stesso.

PROGRAMMA 4 - LETTERA DI INVITO
Questo programma permette di scrivere agli amici una lettera di invito ad una festa, specificando il giorno e l'ora di inizio della festa.
Il testo della lettera è fisso mentre è possibile specificare al momento dell'esecuzione del programma il nome di chi dà la festa e il giorno con l'ora di inizio, e il nome dell'invitato a cui è diretta la lettera. Questi dati devono perciò essere inseriti in variabili.
Per cambiare il testo della lettera bisogna scrivere un nuovo programma.

Descrizione delle variabili


+----------------------------------------------------------------+
¦   NOME    ¦    TIPO     ¦      I/O         ¦    SIGNIFICATO    ¦
+-----------+-------------+------------------+-------------------¦
¦ NOMEAMICO ¦alfanumerico ¦   input/output   ¦nome dell'invitato ¦
¦   NOME    ¦alfanumerico ¦   input/output   ¦nome di chi dà la  ¦
¦           ¦             ¦                  ¦festa              ¦
¦  COGNOME  ¦alfanumerico ¦   input/output   ¦cognome di chi dà  ¦
¦           ¦             ¦                  ¦la festa           ¦
¦   DATA    ¦alfanumerico ¦   input/output   ¦data della festa   ¦
¦   ORA     ¦alfanumerico ¦   input/output   ¦ora di inizio della¦
¦           ¦             ¦                  ¦festa              ¦
+----------------------------------------------------------------+

Flow chart Programma 4


Pseudocodifica (vedi Figura)


  1   inizio
  2       emissione richiesta nome dell'invitato
  3       lettura NOMEAMICO
  4       emissione richiesta nome del festeggiato
  5       lettura NOME
  6       emissione richiesta cognome del festeggiato
  7       lettura COGNOME
  8       emissione richiesta data della festa
  9       lettura DATA
 10      emissione richiesta ora di inizio della festa
 11      lettura ORA
 12      emissione "Caro, " NOMEAMICO
 13    emissione "sei invitato alla mia festa che si terrà"
 14        emissione "il giorno " DATA " alle ore " ORA
 15        emissione "Ti aspetto!"
 16       emissione "Il tuo amico " NOME " "COGNOME
 17   fine

2 Viene stampato il messaggio di richiesta del nome da inserire ...
3 ... e poi letto il nome;
4-5 6-7 e così via per gli altri dati: nome e cognome di chi dà la festa e ...
8-9 10-11 ... data e ora della festa.
La data e l'ora non devono essere inseriti in un formato particolare, ma come si vuole, dato che verranno inseriti in variabili alfanumeriche e poi soltanto stampati.
Per esempio per la data si potrebbe scrivere:
18-4 oppure 18 Aprile oppure 18 c.m.
e per l'ora:
16.30 o 4.30 o 4 e 30 o 4 e mezza
scegliendo in modo assolutamente libero.
da 12 a 17 Stampa del testo della lettera; le scritte tra virgolette sono costanti, gli altri dati sono variabili.

Programma in Basic


  10   REM Stampa di una lettera di invito
  20    PRINT "LETTERA DI INVITO ALLA FESTA"
   30        PRINT
   40        PRINT "Inserisci il nome dell'amico"
   50        INPUT NOMEAMICO$
   60        PRINT "Inserisci il tuo nome"
   70        INPUT NOME$
   80        PRINT "Inserisci il cognome"
   90        INPUT COGNOME$
 100        PRINT "Inserisci la data della festa"
 110        INPUT DATA$
 120        PRINT "Inserisci l'ora di inizio"
 130        INPUT ORA$
 140        LPRINT "Caro "; NOMEAMICO$; " ,"
 150        LPRINT "sei invitato alla mia festa che si terrà ";
 160         LPRINT "il giorno "; DATA$; " alle ore "; ORA$
 170        LPRINT "Ti aspetto!"
 180             LPRINT TAB(20); "Il tuo amico "; NOME$; " ";
                 COGNOME$
 190   END

10 Questa riga è un commento con il titolo del programma per ricordarsi a cosa serve il programma scritto; questa istruzione non viene eseguita e quindi non si vede quando si adopera il programma per scrivere una lettera; serve quando si va a rivedere il programma, per esempio per fare qualche modifica.
Si potrebbero aggiungere molte altre righe di commento con una spiegazione dettagliata del funzionamento del programma e del significato delle variabili.
20 Questa intestazione invece viene stampata a video e ricorda all'utene che cosa fa il programma. Anche in questo caso si potrebbero aggiungere molte righe dello stesso tipo con le istruzioni da seguire per utilizzare il programma.
30 L'istruzione PRINT senza nessun dato fa saltare una riga.
40-60-80-100-120 Questi sono i messaggi di richiesta dei dati. Provocano soltanto la stampa della scritta tra virgolette.
50-70-90-110-130 Ogni messaggio è seguito dall'istruzione di lettura del dato; compare il punto interrogativo e il programma rimane in attesa del dato; l'utente deve scrivere il dato e premere il tasto di invio perché il programma lo accetti e possa proseguire.
140-180 Questa è la stampa della lettera vera e propria. La stampa viene mandata alla stampante e non su video, poiché si usa l'istruzione LPRINT.
Le scritte tra virgolette vengono stampate così come sono poiché sono costanti; dove compare il nome di una variabile viene scritto il contenuto della variabile (inserito dall'utente all'inizio del programma).
I punti e virgola dopo ogni scritta e ogni variabile servono per continuare a stampare subito dopo l'ultimo l'ultimo carattere già stampato. Gli spazi bianchi dove servono devono essere previsti, come le scritte, tra virgolette.
190 Istruzione di fine programma.


+----------------------------------------------------------------+
¦ Esempi di esecuzione                                           ¦
¦                                                                ¦
¦ A video compaiono le richieste di inserimento dei dati:        ¦
¦                                                                ¦
¦ LETTERA DI INVITO ALLA FESTA                                   ¦
¦ Inserisci il nome dell'amico                                   ¦
¦ ? Giulio                                                       ¦
¦ Inserisci il tuo nome                                          ¦
¦ ? Marco                                                        ¦
¦ Inserisci il tuo cognome                                       ¦
¦ ? Nerini                                                       ¦
¦ Inserisci la data della festa                                  ¦
¦ ? 12 Dicembre                                                  ¦
¦ Inserisci l'ora di inizio                                      ¦
¦ ? 16.30                                                        ¦
+----------------------------------------------------------------+

Commenti

Il testo della lettera è scritto nelle istruzioni del programma e quindi per modificarlo bisogna modificare il programma stesso. Perciò può cambiare il testo soltanto qualcuno che sa programmare in Basic.
Se il testo della lettera non contiene variabili e si intende modificare soltanto il nome della persona a cui inviarla, il problema si può risolvere facilmente con l'uso di un file.
Si scrive un programma che richiede di inserire il testo della lettera e lo memorizza in un file.
Si scrive poi un altro programma che richieda i dati del destinatario (o anche del mittente) e li stampi insieme al testo della lettera recuperato dal file che lo contiene.
In realtà non è conveniente scrivere un programma del genere; è molto più semplice usare un pacchetto integrato con un word processor per scrivere la lettera e un data base per conservare i nomi di tutte le persone a cui inviare la lettera.
Con semplici comandi si può così ottenere la stampa di tutte le lettere che servono, indirizzandole alle persone volute.

Chiudi

Outlet Offerte Sconti Promozioni Risparmiare sugli Acquisti di prodotti e Servizi in Internet

Gigacenter Store-Vente privee-Show room prive-La ruota della fortuna-Outlet Più Style-Offerte Outlet Store-Sconti Outlet Offerte-Spartoo Shoes-Private Outlet-Saldi Privati-Sold Outlet-Offerte del GiornoBuoni sconto-Saldi Sconti-Offerte Viaggio-Acquisti + Guadagni

 

eXTReMe Tracker

Shiny Stat

free counters