Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


La Programmazione in linguaggio BASIC, Dispense di Elementi di Informatica

La Programmazione in linguaggio BASIC

Tipologia: Dispense

2018/2019

Caricato il 16/11/2019

pasquale-gargiulo
pasquale-gargiulo 🇮🇹

5

(1)

7 documenti

1 / 67

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
La
progmmmazione
in linguaggio
n BASIC
del
sistema AMICO
2000
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43

Anteprima parziale del testo

Scarica La Programmazione in linguaggio BASIC e più Dispense in PDF di Elementi di Informatica solo su Docsity!

La progmmmazione

in linguaggio

n BASIC del sistema AMICO 2000

n

BASIC

del sistema
AOVANCED MICROCOMPUTER SYSTEM

1

INTRODUZIONE

Prima che un computer possa fare qualcosa di utile, bisogna "dirgli" cosa fare. Sfortunatamente, oggi come oggi, i computer non sono in gra- do di capirel'italiano,nessun altro linguaggio Humano". Questo perché il nostro linguaggio é pieno di ambiguità e sottointesi. AI compu- ter bisogna invece dere delle istruzioni precise e l'ordine esatto in cui eseguirle per ottenere il risultato desiderato. Perciò, per facilitare le co- municazioni uomo-macchina, sono stati sviluppati dei linguaggi di pro- gra(!1mazione. /I BASIC é I.jn linguaggio di programmazione facile da capire e sempli- ce da usare. E un ottimo strumento per applicazioni in campi quali l'eco- nomia, le scienze e l'insegnamento. Dopo aver usato il BASIC solo po- che ore, vi accorgerete di essere già in grado di scrivere programmi con una facilità che pochi altri linguaggi di programmazione permettono. Sviluppato inizia/mente all'Università di Dartmouth, il BASIC ha trova- to ampio consenso nel mondo dei computer. Benché sia uno dei lin- guaggi piu facili da usare, é molto potente. /I BASIC usa un ristretto gruppo di normali parole inglesi come "comandi". Essendo progettato come linguaggio interattivo gli potete dare un comando come "PRINT 2

  • 2" ed il BASIC vi risponderà immediatamente "4". Non é necessario fargli leggere il vostro programma perforato su un pacco di schede e poi aspettare il risultato per ore. AI contrario; avrete tutta /a potenza del computer "sulla punta delle dita". Speriamo che appreziate il BASIC e che riusciate a risolvere i vostri problemi di programmazione.

PRIMO APPROCCIO AL BASIC

Questo capitolo non intende essere una spiegazione dettagiata della programmazione in BASIC. Servirà piuttosto da introduzione a coloro i quali non hanno familiarità col linguaggio. Consigliamo di provare ogni esempio di questo capitolo cosi come è presentanto. Questo migliorerà la vostra "sensibilità" per il BASIC e per il suo uso. Nella tabella 2~ 1 sono elencati tutti i comandi del BASIC. Una volta entrati nel BASIC, ogni volta che il computer visualizza OK si può battere uno statement in BASIC. Tutti i comandi impartifi al BASIC devom no terminare con il carattere di ritorno al carrello (CR). Il ritorno carrello dice al BASIC che avete finito di battere il coman- do. Se fate un errore di battitura, battete CTRL H per cancellare l'ultimo carattere. L'uso ripetuto di CTRL H elimina i caratteri precedenti. L'at-sign (@) cancella tutta la riga, e CTRL L cancella tutto lo scher- mo.

Par. 2- COMANDI DIRETTI

Cominciamo a battere: PRINT 10-4 (terminate con il ritorno del carrello) Il BASIC stamperà immedIatamente: 6 OK Il comando di stampa è stato eseguito appena avete premuto il tasto di ritorno del carrello. Questo si chiama un comando diretto. Il BASIC ha calcolato la formula dopo il "PRINT" e poi stamperà il suo valore, in que- sto caso "6". Ora provate a battere: PRINT 1/2,3 • 10 ("." significa moltiplicato, "l" significa diviso) Il BASIC stamperà: .5 30 Come potete vedere, il BASIC può moltiplicare e dividere oltre che sot- trarre. Notate come una "," (virgola) sia stata usata nel comando di stampa per far stampare due valori invece che uno solo. Il comando divide la riga di 64 caratteri in 4 colonne, larghe 16 caratte- ri. La "," segnala al BASIC di posizionare il carrello del terminale all'ini- zio del successivo gruppo di 16 caratteri, dove viene stampato il valore

COMANDI INDIRETTI C'è un altro tlpo di comando, chiamato comando indiretto. Ogni co- mando indiretto comincia con un numero di riga. Un Numero di Riga è un qualSiasi intiero tra O e 63999. Provate a battere queste righe: 10 PRINT 2+ 3 20 PRINT 2- Una sequenza di comandi indiretti si chiama un "programma". Invece di eseguire gli statements indiretti subito, il BASIC li memorizza. Quan- do battete RUN, il BASIC eseguirà dapprima lo statement indiretto col numero di riga piu basso, poi quello subito piu alto ecc., fino ad avere esaurito gli statements memorizzati.. Nell'esempio precedente, abbiamo battuto prima la riga 10 e poi la ri- ga 20. In ogni modo, non importa in quale ordine vengono battuti gli sta- tements. Il BASIC li mette sempre nell'ordine giusto secondo il numero di riga. Immaginate di battere: RUN Il BASIC stamperà:

5

Par. 2·

Nel paragrafo 2-2 abbiamo memorizzato un programma di 2 righe. Ve· diamo ora come si può usare il BASIC per operare su una o entrambe le righe.

STAMPA DEL PROGRAMMA

Se vogliamo la stampa di tutto il programma attualmente in memoria, basta battere: LlST Il BASIC risponderà: 10 PRINT 2+ 20 PRINT 2-

CANCELLAZIONE" DI UNA RIGA

Qualche volta sorge la necessità di cancellare una riga di programma. Si ottiene questo battendo il Numero di Riga della riga da cancellare se- guito dal ritorno del carrello. Battete: 10 LlST Il BASIC vi risponderà: 20 PRINT 2- Abbiamo cosi cdhcellato la riga 10 del programma.

SOSTITUZIONE DI UNA RIGA_

È possibile sostituire la riga 10, invece che cancellarla, battendo la nuova riga 10 seguita dal ritorno del carrello. Battendo: 10 PRINT 3- LlST Il BASIC risponderà: 10 PRINT 3- 20 PRINT 2- Sconsigliamo di dare alle righe numeri consecutivi. Potrebbe diventa- re necessario inserire una riga nuova tra due già esistenti. Un incremen- to di 10 tra numeri di riga è generalmente sufficiente.

lO

Par. 2-

FORMATO DEI NUMERI

Questa breve digressione per spiegare il formato dei numeri del BA- SIC. I numeri vengono memorizzati interamente con piu di nove cifre di precisione. Quando un numero viene stampato, vengono stampate solo nove cifre. Ogni numero può anche avere un esponente (una potenza di dieci per quale è moltiplicato). Il numero piu grande che può essere rap- presentato dal BASIC è 1.70141 * 10 38, mentre il piu piccolo numero posi- tivo è 2.93874 * 10-39•

  1. Se il numero è negativo, viene stampato un segno (-). Se il numero è positivo viene stampato uno spazio.
  2. Se il valore assoluto del numero è un intero compreso tra lo O e 999999999, viene stampato come intero.
  3. Se il valore assoluto del numero è minore o uguale a 999999999, viene stampato in notazione a punto decimale fisso, senza esponente.
  4. Se il numero non rientra nella categoria 2 o 3, viene usata la notazione scientifica.

La notazione scientifica è cosi formata:

SX.XXX XXX XXE STT (ogni X è un intero tra O e 9). La prima "S" è il segno del numero: uno spazio per i numeri positivi, e un "-" per quelli negativi. Una cifra diversa da zero viene stampata prima del punto decimale. Questa è seguita dal punto decimale e poi dalle altre otto cifre della mantissa. Segue una "Eli (che sta per esponente), seguita dal segno dell'esponente (S) dalle due cifre (TT) dell'esponente stesso. Gli zeri nelle posizioni piu significative non vengono mai stampati: la cifra a sinistra del punto decimale non è mai zero. Anche gli zeri super- flui a destra non vengono stampati. Se resta una sola cifra da stampare dopo che sono stati eliminati tutti gli zeri non significativi, non viene stampato il punto decimale. Il segno dell'esponente è" +" per gli espo- nenti positivi, e "_" per quelli negativi. Vengono sempre stampate due cifre per l'esponente; gli zeri non ven- gono soppressi nel campo dell'esponente. Il valore di ogni numero è per- ciò il numero alla sinistra della "E" moltiplicato per dieci elevato alla po- tenza indicata dal numero alla destra della "Eli. Qualsiasi formato venga usato, viene sempre stampato uno spazio

. dopo il numero.. Il BASIC controlla per vedere se tutto il numero ci sta nella riga attua- le. Se non ci sta, viene eseguito un "a capo" prima di stampare il nume- ro.

Ecco gli esempi di vari numeri e il formato d'uscita in cui il BASIC li stamperà:

NUMERI

6523 -23. 1E -12.3456E- 1.234567E- 1000000000

NUMERI 999999999 . . .

FORMATO D'USCITA 1

6523 -23. 1E+ -1.23456E. 1.23457- 1E+

FORMATO D'USCITA 999999999 . 01 1.23E-

Un numero introdotto dal terminale o una costante numerica usata in un programma BASIC può avere quante cifre si vuole, fino alla lunghez- za di una riga (64 caratteri). Comunque solo le prime 10 cifre sono sipnifi- cative, e la decima viene arrotondata. PRINT 1.

Qualsiasi carattere alfanumerico dopo ì primi due viene ignorato. Ecco gli esempi di nomi di variabili validi e non:

VALIDI A

Z

TP

PSTGS COUNT

NON VALIDI % (i I 1 carattere deve essere alfa- betico) ZIABCD (nome di variabile troppo lungo) TO (i nomi di variabili non possono essere parole riservate)

AGOTO (i nomi di variabili non possono contenere parole riserva- te).

ASSEGNAZIONE DI VALORI CON STATEMENT "LET". Oltre ad assegnare i valori alle variabili con uno statement di ingres- so, è possibile farlo con un LET o statement di assegnazione. Provate i I seguente esempio: A = PAINT A,A* 5 10 LET Z::; 7 PRINT Z,Z - A 7 2

Come noterete dagli esempi, il "LET" è opzionale in uno statement di assegnazione. Il BASIC "ricorda" i valori che sono stati assegnati alle variabili usando questo tipo di statement. Questo "ricordarsi" adopera spazio di memo Q ria per mettervi i dati. I valori delle variabili vengono persi e lo spazio loro riservato in memo- ria viene rilasciato quando si verifica una delle seguenti situazioni.

  • viene battuta una nuova riga nel programma o ne viene cancellata una vecchia
  • viene dato un comando di CLEAR
  • viene dato un comando di RUN
  • viene battuto N EW

Un altro fatto importante è che se una variabile viene incontrata in una formula prima che le venga assegnato un valore, le viene automatica- mente assegnato il valore zero. Questo zero viene poi sostituito come valore della variabile nella for- muta stessa. Ad esempio: PRINT Q; Q + 2;Q* O 2 O

PAROLE RISERVATE Le parole usate come statements del BASIC sono "riservate" per sco- pi specifici. Non è permesso usare queste parole come nomi di variabili o all'interno di nomi. di variabili. Per esempio "FENOli non è valido per· chè "END" è una parola riservata.

  • La tabella 2-6.1 è la lista delle parole riservate dal BASIC:

TABELLA 2-6.1 PAROLE RISERVATE DEL BASIC.

ABS FN (^) LlST PRINT SPC ANO FOR LOAD POS SQR ATN FRE LOG READ STEP ASC GET MIO$ REM STOP CHR$ GOSUB NEW RESTORE STR$ CLEAR GOSUB NEXT^ RETURN^ TAB CONT IF NOT RIGHT$^ TAN cas INPUT^ NULL^ RNO^ THEN DATA ~NT ON RUN TO OEF LEFT$ OR SAVE USR OIM LEN PEEK SGN VAL END LET PGR SIN WAIT EXP POKE

COMMENTI

Lo statement REM (abbreviazione di "remark", commento) viene usa- ta per inserire commenti o note in un programma. Quando il BASIC In- contra lo statement REM, il resto della riga viene ignorato. Questo serve soprattutto come aiuto per il programmatore e non ha al- cuna influenza sul funzionamento del programma nel risolvere un parti- colare problema.

Adesso provate il seguente programma che confronta due numeri:

10 INPUT A,B 20 IF A < = B THEN 50 30 PRINT "A È MAGGIORE" 40 GOTO 10 50 IF A < B THEN 80 60 PRINT "SONO UGUALI" 70 GOTO 10 80 PRINT "B È MAGGIORE" 90 GOTO 10

Quando viene fatto girare questo programma, la riga 10 accetterà due numeri dal terminale. Alla riga 20, se A è maggiore di B, A < = B è falso. Questo f.a eseguire lo statement successivo che stampa "A È MAGGIO- RE", e poi la riga 40 rimanda il programma indietro alla riga 10 a ricomin- ciare. Alla riga 20, se A ha lo stesso valore di B, A < = B è vero, perciò si pas- sa alla riga 50. Alla riga 50, poiché A ha lo stesso valore di B, A < B è fal- so; perciò si passa allo statement successivo e viene stampato "SONO UGUALI". Infine la riga 70 rimanda "esecuzione all'inizio.

Alla riga 20, se A è piu piccolo di B, A < =B è vero, perciò si passa alla

riga 50. Alla riga 50, A < B è pure vero, perciò si passa alla riga 80, dove viene stampato "B È MAGGIORE" e poi si ritorna all'inizio. Provate gli ultimi due programmi un po' di volte. Vi sarà piu facile ca- pire se provate a scrivere un vostro programma usando lo statement I F- THEN. In effetti provare programmi propri è la maniera piu facile e velo- ce per capire come funziona il BASIC. Ricordatevi che per terminare l'esecuzione di questi programmi è suf- ficiente battere un ritorno carrello come risposta allo statement di in- gresso.

Par. 2·

ANELLI

Uno dei vantaggi dei computer è la loro abilità nell'eseguire compiti ri- petitivi, vediamo come esempio un programma che esegue la radice quadrata. Immaginate di volere una tabella delle radici quadrate dei numeri da 1 a 9. La funzione del BASIC che calcola la radice quadrata è "SOR". Vie- ne usata nella forma "SQR (XY', dove X è il numero di cui si vuole la radi- ce. Potremo scrivere il programma così:

10 PRINT 1; SOR (1) 20 PRINT 2; SOR (2) 30 PRINT 3; SOR (3) 40 PRINT 4; SOR (4) 50 PRINT 5; SQR (5) 60 PRINT 6; SOR (6) 70 PRINT 7; SOR(7) 80 PRINT 8; SQR (8) 90 PRINT 9; SOR (9)

Questo programma otterrebbe lo scopo, ma sarebbe molto poco effi- ciente. Potremmo migliorare considerevolmente il programma usando lo statement IF appena introdotto:

10 N = 1 20 PRINT N; SOR (N) 30N=N+l 40 I F N < = 9 TH EN 20

Ouando viene fatto girare questo programma, la sua uscita sarà esat- tamente uguale a quella del programma precedente. Il programma fun- ziona così: la riga 10 è uno stratement LET che inizializza il valore di N = a 1. La riga 20 stampa N e la radice quadrata di N, usandone il valore attuale. Perciò equivale a 20 PRINT 1; SQR (1), e il risultato di questi calcoli viene stam- pato. Alla riga 30 c'è uno statement LET apparentemente molto strano.

. Matematicamente scrivere N = N + 1 è senza senso. D'altra parte è importante ricordare che nello statement LET il simbolo Il =" non signi- fica uguaglianza. In Questo caso" =" significa "sostituisci con". Tutto quellO che fa Questo statement è aggiungere 1 al valore attuale di N. Per- ciò dopo la prima esecuzione della riga 30, N vale 2. Alla riga 40, poichè adesso N vale 2, N < 9 è vero, pertanto la parte TH EN fa riprendere l'esecuzione alla riga 20, con N che vale 2. " risultato è che vengono ripetute le righe dalla 20 alla 40, ogni volta incrementando di 1 il valore di N. Finalmente Quando N alla riga 20 vale 9, la riga 30 lo incrementa a 10.

Questo dice al BASIC di incrementare N di 2 ogni volta, invece che di

  1. Se nello statement "FaR" non è specificato lo "STEP", il BASIC ag- giunge 1 ogni volta. Lo "STEP" può essere una espressione qualunque. Supponete ora di voler contare aWindietro, da 10 a 1. Ecco un pro- gramma adatto allo scopo:

10 I = 10 20 PRINT l 30 I = 1- 40 IF 1 > = I THEN 20

Notate che ora il confronto viene fatto per vedere se 1 è maggiore o uguale al valore finale. La ragione è che stiamo contando all'indietro. Nell'esempio precedente invece era il contrario, controllavamo che la variabile fosse minore o uguale al valore finale. Lo "STEP" può essere usato anche con numeri negativi per ottenere lo stesso scopo. Questo può essere ottenuto usando gli stessi state- ments di prima:

10 FaR I = 10 TO 1 STEP - 20 PRINT I 30 NEXT I

Gli anelli ottenuti con i "FaR" possono venire anche messi all'interno di altri anelli: per esempio:

  1. FaR I = T 20 FOR J = T 30 PRINT I,J 40 NEXT J 50 NEXT I

Notate che "NEXT J" procede "NEXT l'', perchè l'anello di J è dentro l'anello di I. Il programma che segue invece è sbagliato, provate a farlo girare e vedrete cosa succede;

10 FOR 1=1 T 20 FaR J ::; 1 T 30 PRINT I,J 40 NEXT I 50 NEXT J

Non funziona perché quando viene incontrato "NEXT l'', viene persa l'informazione relativa all'anello di J. Questo perché l'anello di J è interno'a quello di I.

Par. 2·

OPERAZIONI SU MATRICI

Spesso è necessario poter scegliere un elemento qualsiasi in una ta- bella di numeri. Il BASIC permette questo mediante l'uso di matrici. Una matrice è una tabella di numeri. Il nome di questa tabella (nome della matrice) é un qualsiasi nome valido di variabile, per esempio "A". Il nome di matrice "A" è distinto e separato dal nome di variabile semplice "A", ed è permesso usare entrabi in uno stesso programma. Per scegliere un elemento della tabella, diamo un indice ad "A": per scegliere l'I-esimo elemento, ad "A" facciamo seguire I chiuso tra pa- rentesi (I). Perciò, Il A(I)" è l'I-esimo elemento della matrice "A". "AfI)" è solo un elemento della matrice "A", e al BASIC bisogna dire quanto spazio allocare per tutta la matrice. A questo scopo esiste lo sta- tement "DIM". Per esempio, "DIM A (15)" significa riservare abbastanza spazio perché ''l'' possa variare tra O e 15. Gli indici delle matrici partono sempre da O; perciò nell'esempiò precedente, abbiamo predisposto spa- zio per 16 numeri per la matrice A. Se "A (I)" viene usata in un programma prima di essere dimensionata, il BASIC le riserva spazio per 11 elementi (da O a 10). Come esempio dell'uso di matrici, provate il seguente esempio per or- dinare una lista di 8 numeri, nel quale voi date i numeri da ordinare:

10 DIM A (8) 20 FOR I = 1 TO 8 30 INPUT A (I) 50 NEXT I 70 F=O 80 FOR I = 1 TO 7 90 IF A(l) < = A(I + 1) THEN 140

100 T =A (I)
110 A(I) =A(I + 1)

120 A(I + 1) = T

130 F = 1

140 NEXT 1 150 I F I = 1 TO 8 160 FOR 1=1 THEN 70 170 PRINT A(I) 180 NEXT I

Quando viene eseguita la riga 10, il BASIC riserva spazio per 9 numeri, da A(O) a A(8). Le righe dalla 20 alla 50 prendono la lista non ordinata dall'utente. L'ordinamento stesso viene ottenuto percorrendo la lista e scambiando le coppie che non sono in ordine. IlF" viene usato per indicare se é stato