GW-BASIC
Per lanciare l’interprete in windows PC-BASIC
Sintassi:
REM [ commento ]
' [ commento ]
Commenti:
Le REM istruzioni non vengono eseguite, ma vengono utilizzate solo per commentare il codice.
Quando l’interprete incontra un REM o la sua abbreviazione, un apostrofo (‘), il programma ignora
tutto il resto fino a quando non incontra il numero di riga successivo o la fine del programma.
Le REM istruzioni possono essere ramificate da GOTO o GOSUB un'istruzione e l'esecuzione
continua con la prima istruzione eseguibile dopo l’istruzione REM. Tuttavia, il programma viene
eseguito più velocemente se viene eseguito il salto alla prima istruzione.
Le osservazioni possono essere aggiunte alla fine di una riga precedendo l'osservazione con un
apostrofo ( ' ) invece di REM .
PRINT
Scopo:
Visualizza caratteri sullo schermo.
Sintassi:
PRINT [ elenco di espressioni ][;]
Commenti:
Se l' elenco delle espressioni viene omesso, viene visualizzata una riga vuota.
Se elenco di espressioni è incluso un , vengono visualizzati i valori delle espressioni. Le espressioni
nell'elenco possono essere espressioni numeriche e/o stringa, separate da virgole, spazi o punto e
virgola. Le costanti stringa nell'elenco devono essere racchiuse tra virgolette doppie.
Posizioni di stampa
GW-BASIC divide la riga in zone di stampa di 14 spazi. La posizione di ogni elemento stampato è
determinata dalla punteggiatura utilizzata per separare gli elementi nell'elenco:
Separatore Posizione di stampa
, Inizio della prossima zona
; Subito dopo l'ultimo valore
spazio/i Subito dopo l'ultimo valore
Se una virgola, un punto e virgola o una funzione SPC o TAB termina un elenco di espressioni, l'
successiva PRINT istruzione inizia a essere stampata sulla stessa riga, spaziata di conseguenza. Se
l'elenco delle espressioni termina senza una virgola, un punto e virgola o una funzione SPC o TAB ,
viene inserito un ritorno a capo alla fine delle righe (GW-BASIC posiziona il cursore all'inizio della
riga successiva).
Quando i numeri sono stampati sullo schermo, i numeri sono sempre seguiti da uno spazio. I numeri
positivi sono preceduti da uno spazio. I numeri negativi sono preceduti da un meno ( - segno ). I
numeri a precisione singola sono rappresentati con sette o meno cifre in un formato a virgola fissa o
intero.
Esempi:
10 X$= STRING$(10,45) ‘45 è l’eq. decimale del simbolo ASCII per il meno.
20 PRINT X$"RAPPORTO MENSILE" X$
RUN
----------RAPPORTO MENSILE----------
INPUT
Scopo:
Richiedere l’inserimento dal terminale durante l'esecuzione del programma.
Sintassi:
INPUT [;][ stringa di prompt ;] elenco di variabili
INPUT [;][ stringa di prompt ,] elenco di variabili
Commenti:
la stringa prompt è una richiesta di dati da fornire durante l'esecuzione del programma.
L'elenco delle variabili contiene le variabili che memorizzano i dati nella stringa di prompt.
Ciascun dato nella stringa del prompt deve essere racchiuso tra virgolette doppie, seguite da punto e
virgola o virgola e dal nome della variabile a cui verrà assegnato. Se più di una variabile viene
fornita , gli elementi dei dati devono essere separati da virgole.
I dati inseriti vengono assegnati alla lista delle variabili. Il numero di elementi dati forniti deve
essere uguale al numero di variabili nell'elenco.
I nomi delle variabili nell'elenco possono essere nomi di variabili numeriche o stringa (incluse le
variabili con indice). Il tipo di ogni input dell'elemento dati deve concordare con il tipo specificato
dal nome della variabile.
Troppi o troppo pochi elementi di dati, o il tipo errato di valori (ad esempio, numerico invece di
stringa), provoca la del messaggio "?Redo from start" . Non viene eseguita alcuna assegnazione di
valori di input fino a quando non viene fornita una risposta accettabile.
È possibile utilizzare una virgola al posto del punto e virgola dopo la stringa di richiesta per
eliminare il punto interrogativo. Ad esempio, la riga seguente stampa il prompt senza punto
interrogativo:
INPUT "INSERIRE DATA DI NASCITA",B$
Esempio 1:
Per trovare il quadrato di un numero:
10 INPUT X
20 PRINT X "QUADRATO È" X^2
30 END
RUN
?
Esempio 2:
Per trovare l'area di un cerchio quando il raggio è noto:
10 PI=3.14
10 PI=3.14
20 INPUT "QUAL’E’ il RAGGIO?"; R
30 A=PI*R^2
40 PRINT "L’AREA DEL CERCHIO E’"; A
50 PRINT
60 GOTO 20
RUN
QUAL’E’ il RAGGIO? 7.4
L’AREA DEL CERCHIO E’ 171.9464
Sintassi:
IF espressione [,] THEN dichiarazione(i) [,][ ELSE dichiarazione(i) ]
IF espressione [,] GOTO numero riga [[,] ELSE istruzione/i ]
Commenti:
Se il risultato dell'espressione è diverso da zero (vero logico), THEN o GOTO viene eseguito il
numero di riga .
Se il risultato dell'espressione è zero (false), il THEN o GOTO numero di riga viene ignorato e
ELSE viene eseguito il numero di riga , se presente. In caso contrario, l'esecuzione continua con
l'istruzione eseguibile successiva. È consentita una virgola prima di THEN e ELSE .
GOTO è sempre seguito da un numero di riga.
Se l'istruzione non contiene lo stesso numero di numero di di ELSE e THEN riga , ogni ELSE viene
abbinato al senza corrispondenza più vicino THEN . Per esempio:
IF A=B THEN IF B=C THEN PRINT "A=C" ELSE PRINT "A < > C"
Testare l'uguaglianza
Quando si utilizza IF per verificare l'uguaglianza per un valore che è il risultato di un calcolo a
virgola mobile, ricordare che la rappresentazione interna del valore potrebbe non essere esatta.
Pertanto, eseguire il test rispetto all'intervallo entro il quale l'accuratezza del valore può variare.
Ad esempio, per testare una variabile calcolata A rispetto al valore 1.0, utilizzare la seguente
istruzione:
IF ABS (A-1.0)<1.0E-6 THEN ...
Questo test restituisce vero se il valore di A è 1.0 con un errore relativo inferiore a 1.0E-6.
Esempi:
La seguente istruzione ottiene il numero di record N, se N non è zero.
200 IF N THEN GET#1, N
Sintassi:
GOTO numero di linea
Commenti:
numero di riga è qualsiasi numero di riga valido all'interno del programma.
Se il numero di riga è un'istruzione eseguibile, tale istruzione e quelle successive vengono eseguite.
Se si tratta di un'istruzione non eseguibile, l'esecuzione procede alla prima istruzione eseguibile
incontrata dopo il numero di riga .
Esempi:
10 READ R
20 PRINT "R ="; R;
30 A = 3.14*R^2
40 PRINT "AREA ="; A
50 GOTO 10
60 DATA 5, 7, 12
RUN
R = 5 AREA = 78.5
R = 7 AREA = 153.86
R = 12 AREA = 452.16
Out of data in 10
L’errore "out of data" viene generato quando il programma tenta di leggere la quarta DATA
istruzione (che non esiste) nella riga 60.
FOR ... NEXT
Scopo:
Per eseguire una serie di istruzioni un numero specificato di volte in un ciclo.
Sintassi:
FOR variabile = x TO y [ STEP z ]
.
.
.
NEXT [ variabile ][, variabile ...]
Commenti:
variabile viene utilizzata come contatore.
x , y e z sono espressioni numeriche.
STEP z specifica l'incremento del contatore per ogni ciclo.
La prima espressione numerica ( x ) è il valore iniziale del contatore. La seconda espressione
numerica ( y ) è il valore finale del contatore.
Le righe di programma che seguono l'istruzione FOR vengono eseguite fino a quando l'istruzione
NEXT non viene incontrata. Quindi, il contatore viene incrementato del valore specificato da
STEP .
Se STEP non è specificato, si presume che l'incremento sia 1.
Viene eseguito un controllo per vedere se il valore del contatore è ora maggiore del valore finale (y).
Se non è maggiore, GW-BASIC torna all'istruzione dopo l'istruzione FOR e il processo viene
ripetuto. Se è maggiore, l'esecuzione continua con l'istruzione che segue l'istruzione NEXT.. Questo
è un ciclo FOR-NEXT.
Il blocco del ciclo viene saltato se il valore iniziale del ciclo moltiplicato per il segno del passo
supera il valore finale moltiplicato per il segno del passo.
Se STEP è negativo, il valore finale del contatore è impostato per essere inferiore al valore iniziale.
Il contatore viene decrementato ogni volta durante il ciclo e il ciclo viene eseguito finché il
contatore non è inferiore al valore finale.
Cicli nidificati:
I FOR-NEXT cicli possono essere annidati; cioè, un ciclo FOR-NEXT può essere inserito nel
contesto di un altro ciclo FOR-NEXT. Quando i loop sono annidati, ogni loop deve avere un nome
di variabile univoco come contatore.
L' istruzione NEXT per il ciclo interno deve apparire prima di quella per il ciclo esterno.
Esempi:
L'esempio seguente stampa i valori interi della variabile I% da 1 a 10 in passi di z . Per
un'esecuzione più rapida, I viene dichiarato come numero intero dal segno %.
10 K=10
20 FOR I%=1 TO K STEP 2
30 PRINT I%
40 NEXT
RUN
1
3
5
7
9
Nell'esempio seguente, il ciclo non viene eseguito perché il valore iniziale del ciclo supera il valore
finale. Nulla viene stampato da questo esempio.
10 R=0
20 FOR S=1 TO R
30 PRINT S
40 NEXT S
Nel prossimo esempio, il ciclo viene eseguito 10 volte. Il valore finale per la variabile di ciclo viene
sempre impostato prima del valore iniziale.
10 S=5
20 FOR S=1 TO S+5
30 PRINT S;
40 NEXT
RUN
1 2 3 4 5 6 7 8 9 10
SCREEN
Scopo:
Permette il passaggio da Modo Testo in uno dei modi di grafica. È possibile inoltre abilitare o
disabilitare il colore e selezionare la pagina attiva e la pagina da visualizzare (in Modo Testo).
Sintassi:
SCREEN [mode][,[burst][,[apage][,vpage]]]
Commenti:
Esempi :
10 SCREEN 0,1,0,0
Seleziona il Modo Testo a colori, sia la pagina attiva che quella
visiva sono poste uguale a O.
20 SCREEN , 1,2
L parametri mode e burst rimangono invariati, la pagina attiva è
posta a 1, mentre quella visiva è posta a 2.
30 SCREEN 2
Viene selezionato il Modo Grafica ad Alta Risoluzione.
40 SCREEN 1,1
Viene selezionato il Modo Grafica a Media Risoluzione a colori.
PSET
Scopo:
Illumina un punto su video con un dato colore (solo modo grafica).
Sintassi:
PSET [STEP] (x,y) [,color]
Note:
La prima forma seleziona un punto facendo riferimento al punto corrente. La seconda forma
seleziona un punto specificando le sue coordinate assolute facendo riferimento al sistema di
coordinate in vigore.
Esempio 1
PSET(10,10) forma assoluta
PSET(O,O) origine
Esempio 2
In questo esempio si traccia un segmento diretto dal punto (0,0) al punto (100,100):
10 FOR l =0 TO 100
20 PSET (1,1)
30 NEXT
quindi viene cancellato il segmento diretto rendendo invisibile ogni suo punto:
40 FOR l= 100 TO O STEP -1
50 PSET (1 ,1),0
60 NEXT
LINE
Scopo:
Traccia una linea, un rettangolo o un rettangolo colorato (solo modo grafica).
Sintassi:
LINE [[STEP] (x 1, y1)]· [STEP] (x2,y2) [,[co/or] [,B[F]][,style]]
Note:
L'esempio che segue traccia una linea dall'ultimo punto a cui si è fatto riferimento al punto
specificato (x2,y2). Poiché non viene specificato nessun colore, viene preso il colore di primo piano
di default per le figure.
LINE·-(x2,y2)
Gli esempi seguenti specificano i punti iniziali e finali, espressi iri coordinate assolute.
LINE (10,10)·(319,199) 'traccia sul video una linea diagonale
L'opzione B consente una programmazione più semplice per tracciare un rettangolo che altrimenti
richiederebbe l'uso di quattro istruzioni:
LINE (x1,y1)·(X2,y1)
LINE (x1,y1)·(x1,y2)
LINE (x2,y1)·(x2,y2)
LINE (x1,y2)·(x2,y2)
Gli angoli devono essere misurati in radianti. Se gli angoli sono misurati in gradi devono essere
convertiti in radianti prima dell'esecuzione dell'istruzione CIRCLE. Per convertire la misura degli
angoli da gradi in radianti si deve moltiplicare per 0.0174532.