Termes les plus recherchés
[PDF](+60👁️) Télécharger BASIC – Corso di programmazione dei microcalcolatori pdf
"BASIC – Corso di programmazione dei microcalcolatori", supplemento alla rivista "CHIP – Mensile di micro e personal computer" n° 2/84.
Versione originale: Alain Checroun, "BASIC: programmation des microordinateurs", 1980.Traduzione di Bruno Tincani, (c) 1982 Tecniche Nuove.
Télécharger gratuit BASIC – Corso di programmazione dei microcalcolatori pdf
chip BASIC
corso di programmazione
per microcalcolatori
tecniche nuove
L
Supplemento a CHIP n. 2/84 periodico mensile
CHIP
Mensile di micro e personal computer
ISSN 0392 9353
Dire llorr rrspnnsabilr: ( liuseppc Sardella Dire il ore «tuonale: I n/M maglione Redattore capo: Richard kerler Redazione: Gior
gio Panttcri Maicsa ( olccchia Redazione libri: I eti/in Caccia bui Inchieste: < arlo Gianola ( oordimeniu tecnico: Roberto Alba¬
nesi Mario Modici Lucia Maiandi ì olografia: Ezio Gcndetii Pubblicità: Cesare Gnocchi • C oordinamrnlo annunci: Carla Zoia
Abbonamenti: l ia Giaceherini. Daniela Conti • Amministrazione: Bianca Pcra/zint. Giorgio Monianari - Consegni: I ucuna Vogo-
gna C HIP c pubhlu aia in lingua italiana - tedesca - spagnola • Tribunale di Milano n 120 12.3.83 • Registro Nazionale della Slam¬
pa ii 630 v.7 f.233 16.12 M2 Ranche: Banca d’America c d'Iiulia Agenzia I Milano Distributore: Messaggerie Periodici ME.PE
Via G. ( arcano, 32 20141 Milano Slampa: Grafiche Jodicc Rissale fotocomposizione: ( italica Quadrifoglio S.r !.. P. zza Princi¬
pessa C loiildc, IO 20121 Milano Tel 02 6599936 per la Germania VOGEI VERI AG Wur/burg per l'Italia TECNICHE
NI '( IVI Milani» l a casa editrice non si assume responsabilità per i manoscritti inviali. Per gli articoli firmati o siglali da collabora-
lori eilerni la redazione si assume soliamo la responsabilità prevista dalle leggi sulla stampa, (di articoli pubblicali in questa rivista so¬
no proietti in conformità alle leggi sui diritti d'auiore. Sono permesse, solo dietro espressa autorizzazione della cava editrice, traduzio¬
ni. ristampe, riproduzioni e memorizzazioni in elaboratori di daii. Non si assumono responsabilità per quanto riguarda errori nel le¬
sto. negli schemi, nei programmi, negli schizzi per il montaggio ecc. lune le pubblicazioni su CHIP avvengono senza eventuali proie¬
zioni di brevetti d’inven/ionc, inoltre, i nomi delle merci coperti da eventuale marchio registrato vengono utilizzati senza tenerne con¬
io tdilorr: TECNICMt NUOVI Milano Direzione. Redazione Ammintsirazione. Pubblicità, Abbonamenti: Editrice Tecniche
Nuove. \ ta Moscovu 46 9 20121 Milano Tel. 02 6590351 (8 lincei - Telex 334647 TECHS I Pubblicità e piccoli annunci: Milano
\ ta Moscova. 46 9 • Tel. 02/6590351 - Torino ( .so M. D'Azeglio, 60 - Td. Oli 682604-651674 Vicenza Corso Padova. 17 19
lei 0444 <12238 Padova - Via PdH/zo, 14 I - Td. 049/772370-Bologna - Via Imola, 13 A • Td. 051/324311 - Abbonamenli: Ita¬
lia I il. 30.000 annue I stero I.ii. 4$.(KM) (Europa). 1 il. 80.000 (Oltremare) fascicolo: Ut. 3.000 (arretrato Lil. 5.000). - Per abbo¬
narsi a ( HIP c «ufficiente versare l'importo sul conti* corrente postale n. 30754204 oppure a mezzo vaglia »» assegno bancario intestati
alla ( ava Editrice Tecniche Nume S.r I Via Moscova, 46 9 - 20121 Milano, (ili abbonamenti decorrono dal mese successivo al ricevi¬
mento dd pagamento. Spedizione m abbonamento postale Gruppo III 70 t .S.P.L Associata all'Unione Slampa Periodica Italiana
A.1.1. Associazione Italiana Editori • ( HIP ha richioio il conir 4k» A l». Accertamenti Diffusione Stampa.
■os8
s
Z< “51
§113 ola
W$|S §8;
s5ls S?S
BASIC
Alain Checroun
BASIC
corso di programmazione
dei microcalcolatori
tecniche nuove
BASIC
Edizione originale
A. Checroun «Basic: programmatimi dcs microordinateurs»
19X0 Bordas, Parigi
Edizione italiana
Traduzione dal francese di Bruno Timoni
19X2 Tecniche Nuove, via Moscova 46 9A, 20121 Milano,
tei. (02) 6590351 - telex 334647 TECHS I
ISBN 88 7081 149 2
Tulli i diritti sono riservati. Nessuna parte del libro può essere riprodotta o
trasmessa con un mezzo qualsiasi, fotocopie, microfilm o altro, senza il per¬
messo scritto dell'editore.
All rights reserved. No pari of ibis hook shall be rcprodueed, slored in a
retrieval System, or transmitted by anv means. electronic, meehanieal,
photoeopying, rccording, or otherwise, withoul writlen permission troni thè
publisher.
Fotocomposizione: Grafica Quadrifoglio, Milano
Stampa: Arti Grafiche F.lli Jodice - Rosale (MI)
Finito di stampare nel mese di febbraio 1984
BASIC
INDICE
Introduzione 1
Capitolo 1. 1 microcalcolatori 3
1.1. Dai calcolatori ai microcalcolatori 3
..2. Struttura di un microcalcolatore 4
1.3. Principio di funzionamento 5
1.4. I differenti livelli del linguaggio 11
Capitolo 2. Il Basic 15
2.1. Primi concetti del linguaggio 15
2.2. Immissione dei dati e presentazione dei risultati 20
2.3. Istruzioni di test o salto condizionale 22
2.4. Le iterazioni di programma 25
2.5. Le variabili indicizzate 26
2.6. Le iterazioni multiple. Variabili a più indici 29
2.7. Ripetizione di una stessa istruzione. Funzioni 33
2.8. Ripetizione di uno stesso programma.
Concetto di sottoprogramma 35
2.9. Sottoprogrammi indipendenti 37
2.10. Elaborazione di caratteri alfanumerici. Stringhe 39
Capitolo 3. Le estensioni del Basic 41
3.1. Le variabili 41
3.2. Operazioni sulle stringhe di caratteri 42
3.3. Le interruzioni di sequenza 47
3.4. Le iterazioni di programma 50
3.5. Gli operatori logici 51
3.6. Sottoprogrammi di correzione (programmabile) degli errori 53
3.7. Complementi alle istruzioni utili 54
Capitolo 4. Gli archivi 57
4.1. Concetto di archivio 57
4.2. Apertura e chiusura di un archivio 57
4.3. Gli archivi sotto forma ASCI I 59
4.4. Gli archivi d'ingresso-uscita per registrazioni 61
4.5. Gli archivi in memoria virtuale 67
BASIC
Capitolo S. Problemi applicativi 69
5.1. Un metodo di selezione 69
5.2. Catalogazione di dati statistici 72
5.3. Tracciato di un istogramma 72
5.4. Soluzione di un sistema lineare 74
5.5. Calcolo dell’interesse composto 77
5.6. Recupero di spazio in memoria. Iterazioni 77
5.7. Calcolo dcH’imposia 78
5.8. Soluzione di un’equazione con il metodo Newton 78
5.9. Calcolo di un integrale 79
5.10. Piano risparmio edilizio 80
5.11. Ricerca di una sequenza di caratteri predefiniti 81
5.12. 11 gioco della dama: programmazione non numerica 81
5.13. Metodo per generare dei numeri primi della serie di Fibonacci 82
5.14. Funzione fattoriale. Permutazioni e combinazioni 83
5.15. Simulazione del gioco del lotto 85
Appendice 1. Riepilogo delle istruzioni Basic 87
Appendice 2. Le funzioni biblioteca 89
Bibliografia 90
BASIC
INTRODUZIONE
La microinformatica è una scienza applicabile alla nostra vita quotidiana sia
professionale sia familiare. La dimensione ridotta, l’affidabilità, la facilita
d’uso e il modesto costo mettono i piccoli calcolatori alla portata di tutti.
Abbiamo voluto spiegare il più chiaramente possibile questo fenomeno tecni¬
co che provocherà senza dubbio un rinnovamento sociale importante a breve
scadenza. Questo libro è dunque dedicato al lettore che non conosce o che co¬
nosce poco i calcolatori e che un giorno o l’altro si troverà nella condizione di
doverli utilizzare.
Dopo un breve richiamo storico, definiamo gli elementi che costituiscono un
sistema informatico costruito su un microcalcolatore, oltre ai rispettivi ruoli.
Descriviamo in modo semplificato il principio di funzionamento e i principali
concetti da ricordare, in particolare il concetto di linguaggio di programma¬
zione e i differenti livelli di linguaggio applicabili.
Al momento attuale tutti i personal computer, oltre a molti calcolatori di gros¬
se dimensioni, sono programmabili nel linguaggio Basic. Il capitolo 2 è dedi¬
calo alla spiegazione di questo linguaggio nella sua forma più corrente. 1 capi¬
toli 3 e 4 sono utili al lettore che, avendo assimilato i concetti elementari, in¬
tendesse approfondirli.
Il capitolo 3 è dedicalo alla descrizione di istruzioni più complesse, tipiche di
alcune macchine. Abbiamo deciso di descrivere uno dei linguaggi più diffusi,
il Basic Plus della Digital, ma molte istruzioni sono valide anche per altri co¬
struttori.
Il capitolo 4 affronta il concetto di archivio e il modo di trattarlo con il Basic
della Digital.
Tengo particolarmente a ringraziare Marc Podgrodski per la sua partecipazio¬
ne alla stesura degli ultimi due capitoli, oltre che Pierre Duricux e Anioine Te
mime che hanno voluto rivedere e correggere taluni esercizi.
L ’A more
1
BASIC
CAPITOLO 1
I MICROCALCOLATORI
1.1. DAI CALCOLATORI Al MICROCALCOLATORI
Come è noto, il calcolatore è costituito da elementi a base di componenti elet¬
tronici. Dagli anni cinquanta, in cui si fabbricavano calcolatori a tubi elettro¬
nici il cui elemento principale era l’Unità Centrale (aritmetica e logica) che ri¬
chiedeva potenti sistemi di condizionamento e locali appositamente attre//ati
fino ai nostri giorni, in cui l'unità di elaborazione è trascurabile in volume e in
prezzo rispetto agli altri elementi del sistema, questi componenti hanno subito
una progressiva miniaturizzazione.
Pur non entrando nel merito della tecnologia della miniaturizzazione, cerche¬
remo semplicemente di dare un'idea del progresso compiuto citando i risultali
ottenuti nei periodi che hanno segnato maggiormente l’evoluzione dei calcola¬
tori. In primo luogo due precursori:
— 1944. Aiken ad Harvard completa il «MARK I»; combinando tubi e relais
effettua un’operazione di somma in 0.25 s e una di moltiplicazione in 4 s,
— 1946. Hckert e Mauchly all’Università di Pennsylvania mettono a punto il
primo calcolatore completamente elettronico: l’ENIAC (I lectronic Numcric
Integrator and Automatic Calculator). Pesa diverse decine di tonnellate, con¬
suma l’energia elettrica di un treno e richiede un grosso impianto di condi/io-
namento.
Duecento persone debbono sorvegliare il suo funzionamento... un guasto ogni
dieci minuti... però esegue 5 mila somme al secondo.
— 1948. Dopo lo studio teorico d’importanza capitale compiuto da Von Ncu-
man, esce l’EDVAC (Electronic Discrete Variable Automatic Calculator). La
codifica binaria dell’inlorinazione diventa preponderante.
— 1952. Descrizione deH’effelto di campo da parte di Shockley.
— 1956 - 1968. Sostituzione dei tubi catodici con transistori. Introduzione
di grosse memorie a ferrite. Linguaggi di programmazione. Da qui maggiore
affidabilità, velocità, flessibilità d'uso. Dischi magnetici, grosse stampanti.
— 1965 1970. Circuiti integrati, console di visualizzazione. Melodi eonver-
sazionali. Reti, elaborazione a distanza. I e prestazioni sono moltiplicate per
100, i prezzi divisi pei 10.
— 1970 1980. Progresso considerevole nella miniaturizzazione dei compo¬
nenti e dei circuiti il calcolatore in una scatola. Le prestazioni sono ancora
moltiplicate e i puzzi divisi per 10.
3
BASIC
Oggi si può trovare sul mercato un’unità centrale di 32 Kbyte munita di video,
di tastiera, di due diselli flessibili da 180000 byte, di stampante, per una spesa
attorno ai 5 milioni di lire e tale da occupare un volume equivalente a tre cas¬
setti di scrivania.
È l’inizio dell’era dei microcalcolatori la cui unità centrale è realizzata con un
circuito microprocessore in un’unica scatola contenente componenti LSI (Lar-
ge Scale Integration). In una pasticca di silicio di qualche millimetro di lato si
possono includere l'ino a 5(XXM) transistori e le loro connessioni.
1.2. STRUTTURA DI UN MICROCALCOLATORI;
Come lutti i calcolatori, i microcalcolatori debbono svolgere tre funzioni prin¬
cipali:
— una di commutazione (o elaborazione)
— una di memorizzazione
— una di scambio.
Queste tre funzioni sono realizzate da tre tipi di elementi che sono alla base
della struttura del calcolatore:
— l’unità centrale (CPU o Central Processor Unii): ha la funzione di eseguire
le elaborazioni indicate dalle istruzioni che essa ha trovato nella sua memoria
(registri);
— la memoria centrale : serve a memorizzare i programmi (insieme di istruzio¬
ni) e i dati;
— le apparecchiature di ingresso/uscita (I/O o Input/Output): permettono la
comunicazione con il mondo esterno. Ad esempio, una tastiera permette d’im¬
mettere i dati, una stampante di far uscire i risultati.
Riassumiamo queste definizioni fondamentali schematizzando i quattro ele¬
menti funzionali di ogni calcolatore:
(CPU)
Unità di controllo
Ingressi |—K
(I/O I) \~V
(ALU)
Unità aritmetica e logica
Uscite
(I/O 2)
Unità aritmetica e logie
1 > . 3
MEMORIA
Kig. 1
4
BASIC
t isicamente un microcalcolatore è costituito da due o tre schede logiche e da
un’alimentazione per la CPU (la memoria è compresa in questa). I terminali
d’ingresso/uscita più diffusi sono costituiti da una tastiera c da un video. La
tastiera (tipo macchina da scrivere) permetterà d’immettere dei caratteri alfa¬
numerici e grafici (un carattere per tasto) codificati in binario; sul video saran¬
no visualizzati i caratteri generati in uscita dal microcalcolatore.
Naturalmente potranno essere collegati dei terminali di tipo diverso in funzio¬
ne dell’utilizzazione desiderata. Ad esempio, l’uscita su stampante sarà spesso
utile per conservare traccia di certi risultati, stabilire la situazione, preparare
la corrispondenza. In ingresso è facile intuire l’utilità degli organi che permet¬
tono la lettura rapida d’un gran numero d’informazioni: unità mini-disco
(floppy) e bande magnetiche (minicassette).
I terminali previsti potranno essere collegati al microcalcolatore grazie ai ca¬
nali (BUS). Questi sono le vie di comunicazione tra l’unità centrale e i diffe¬
renti organi ad essa collegati. Un canale è un insieme di linee raggruppate per
funzione.
Si trova generalmente:
— un canale dati
— un canale indirizzi
— un canale di controllo.
1.3. PRINCIPIO DI FUNZIONAMENTO
1.3.1. Rappresentazione delle informazioni
È bene ricordare che un microcalcolatore è una macchina destinata a manipo¬
lare informazioni di natura diversa.
Queste potranno essere:
— dei dati o elementi che definiscono il problema da risolvere. 1 gruppi di da¬
ti della stessa natura costituiscono gli archivi;
— delle istruzioni o indicazioni sulle elaborazioni da effettuare. La sequenza
di istruzioni che conduce a una.certa elaborazione costituisce un programma.
In tutti i casi queste informazioni saranno ricondotte a una rappresentazione
binaria all’interno della macchina. Questa limitazione è legata alla natura fisi¬
ca dei supporti utilizzati. Al momento della progettazione il costruttore com¬
pie una scelta che definisce la struttura dell’informazione e che corrisponde ai
circuiti cablati e/o microprogrammi previsti. È cosi che egli definirà l’insieme
delle operazioni elementari possibili e il volume globale disponibile.
L’unità elementare d’informazione è il bit (contrazione di binary digit), ma
ciascuna macchina sarà caratterizzata dalla più piccola quantità d’informazio¬
ne accessibile direttamente (indirizzabile), ossia un insieme di bit definito pa¬
rola. La maggior parte dei microcalcolatori sono macchine a parole di 8 bit,
ma ne esistono anche con parole di 16 bit e di 32 bit.
5
BASIC
C on parole di 8 bil si disporrà di un vocabolario potenziale di 2' = 256 parole
differenti. Si comprende quindi l’interesse di disporre di macchine a parole di
.12 hit, se non si è condizionati dal volume o dal costo,
fissata la lunghezza delle parole, il costruttore definisce la struttura di
un'istruzione. Si avrà ad esempio, nel migliore dei casi:
un codice
un indirizzo
un indirizzo
un indirizzo
operazione
operando 1
operando 2
risultato
8 bit
8 bit
8 bit
8 bit
quindi un’istruzione a tre indirizzi che richiede 32 bit. Poiché il codice opera¬
zione è di 8 bit, si disporrà al massimo di 256 operazioni differenti. Questo è
più di quanto serve.
L’insieme dei codici operazione costituisce il vocabolario della macchina, ad
esempio:
00010100
significherà sommare.
D'altra parte il costruttore definisce la capacità di memorizzazione della sua
macchina prevedendo i supporti fisici corrispondenti. In generale, la memoria
del calcolatore potrà contenere molle decine di migliaia di parole. Per questo
motivo si è definita la macrounità di capacità che corrisponde a 1024 parole e
che viene designata con K (per kilo). Si dirà, ad esempio, che si dispone di una
memoria di 32 kparole (condizione normale). 1 microcalcolatori correnti pos¬
sono disporre di memorie di 64 o di 128 Kparole in versione commerciale.
1.3.2. Organizzazione della memoria
Se si schematizza la memoria con un rettangolo che contiene delle caselle nu¬
merate, si segneranno tante caselle quante sono le parole previste in questa
memoria. Ad esempio, 32768 per una memoria di 32 Kparole.
Una parte di questa memoria conterrà dei programmi preregistrati dal costrut¬
tore, in particolare il programma capace d’interpretare le istruzioni dell'utiliz-
zatore (programma di gestione). Un’altra parte conterrà il programma
dell’utilizzalore.
Infine essa permette di memorizzare tutti i dati necessari.
Come s’é detto precedentemente, tutte le informazioni memorizzate sono ri¬
condotte a parole (ad esempio di 8 bit, cioè dei byte) e a ciascuna di queste pa¬
role è assegnato un indirizzo; nel nostro esempio la prima casella avrà indiriz¬
zo 0, l’ultima indirizzo 255. Questi indirizzi si scriveranno in binario:
(KHXKXXH) e Illuni
(numero massimo esprimibile con 8 bit).
6
BASIC
( )r ologio |
Hg. 2
Kìr. 3
\ota. l e tecnologie utilizzate nei microcalcolatori sono diverse e l’utilizzatore
è chiamato a confrontarsi con sigle che e opportuno impari sin dall’inizio.
Sono utilizzali due tipi principali di memoria:
— le K.O.M. (Read Only Memory) o memorie a »ola lettura destinate alla
memorizzazione dei programmi che non saranno modificati. È il caso, ad
esempio, del programma di controllo;
— le R.A.M. (Random Access Memory) o memorie ad accesso casuale.
Possono essere senile o Ielle, ma presentano l’inconveniente d’essere volatili,
cioè il loro contenuto si perde quando la tensione d’alimentazione viene inter¬
rotta.
Sarà quindi necessario che l'utilizzatore provveda a salvare le informazioni
utili su un altro supporto prima di spegnere la macchina.
1.3.3. Esempio di funzionamento
Per comprendere il principio di funzionamento di un calcolatore descriveremo
una configurazione semplificata, ma contenente gli elementi essenziali per
trattare l’informazione. Essa è riassunta dallo schema di fig. 3.
/ ’orologio (clock ) è un contatore elettronico che invia impulsi regolarmen¬
te spaziati permettendo cosi di sincronizzare le azioni della CPU.
7
BASIC
— La memoria è un insieme di 256 parole di 12 bit; a ciascuna parola è asse¬
gnato un indirizzo (da 0 a 255) (v. fig. 2).
— // registro R è un gruppo di elementi elettronici che possono prendere due
stati stabili, definiti 0 e 1. Vi sono in totale 12 bistabili in questo registro. Cioè
esso permetterà di ricopiare integralmente una parola dalla memoria.
12 1
— Il registro contatore è un gru ppo di 8 bit . Esso permette di rappresentare
numeri binari che vanno fino a | 11111111~| , cioè 255; esso conterrà l’indi¬
rizzo della parola da prendere in conto in memoria.
— I terminali 1 e 2 sono, ad esempio, una tastiera che consente d’immettere le
informazioni e una stampante che consente di stampare i risultati.
— L'unità di calcolo (CPU), sotto l’azione dell’orologio e seguendo un pro¬
gramma d’azione preregistrato o cablato, può accedere:
— allo stato d’una parola di memoria
— allo stato di R
— allo stato del registro contatore
— a tutte le informazioni provenienti dai terminali d’ingresso
Essa può anche modificare il contenuto di R e del contatore, oltre che coman¬
dare la stampa di caratteri sul terminale d’uscita.
Ipotesi di funzionamento
Con la messa in tensione viene lanciato automaticamente un certo numero
d’azioni elementari:
Azione I: il contenuto del registro contatore assume il valore 32
Azione 2: lettura del contenuto del registro contatore
Azione 3: lettura della parola il cui indirizzo c dato dal registro contato¬
re
Azione 4: realizzazione dell’elaborazione che dipende dal contenuto del¬
la parola di memoria appena letta
Azione 5: il contenuto del contatore è aumentato di uno; si ritorna al
primo passo
D'altra parte il costruttore ha anche definito l’insieme delle istruzioni possibili
(cablate o microprogrammate) riassunte nella tabella seguente:
8
BASIC
CONTENUTO DU I A
CASI ILA PUNÌ Al A
DAI CON rATORL
Azione risultante
1010 aaaaaaaa
Ricopiare nel registro K il contenuto della parola d’indiriz/o
A.
Notazione simbolica (A) — R
1011 aaaaaaaa
Ricopiare nella parola d'indirizzo A il contenuto di R.
(R) - A
1000 aaaaaaaa
Sottrarre il contenuto di R dal contenuto della parola d'indi¬
rizzo A e trascrivere il risultato in A.
(A) - (R) - A
1101 aaaaaaaa
Somma del contenuto di R al contenuto della parola d’indi¬
rizzo A e trascrizione del risultato nella stessa parola.
(R) + (A) - A
1100 aaaaaaaa
Sottrazione di 1 dal contenuto della parola d’indirizzo A e
copia del risultato nella stessa parola.
(A) - 1 - A
0001 aaaaaaaa
Iscrizione della quantità A nel reeisiro contatore.
A - CO
0101 aaaaaaaa
Iscrizione della quantità A nel registro contatore nel caso in
cui la parola all’indirizzo 1 contenga 0, altrimenti nessuna
azione
Sì: A - CO
U) - U
no: nessuna azione
011100000001
Uscita del numero contenuto nel registro R sul terminale 1.
011000000010
Attesa della battuta di un tasto sul terminale 2 e, quando
questo avviene, iscrizione in R del codice binario corrispon¬
dente a questo tasto.
000000000000
Arresto della macchina (interruzione delle comunicazioni
tra orologio e unità di calcolo).
Kìr. 4
Si noterà che ciascuna istruzione è costituita da un codice operazione di 4 bit e
da un indirizzo di 8 bit.
Per sintetizzare la spiegazione, si è seguita la convenzione seguente: n rappre¬
senta l’indirizzo ed (zi) il contenuto della parola di indirizzo n.
La freccia — significa «ricopiare in».
Supponiamo inoltre di aver registrato in memoria la sequenza di istruzioni se¬
guente:
9
BASIC
Indirizzo
Comenulo della parola
16
0000 (XXX) (XXX)
32
01 IO (XXXI ODIO
33
1011 (XXXI (XXII
34
1010 (XXII 1 KM)
35
Idi 1 (XXX) (K)l(l
36
0101 (XIIO l(XX)
37
011(1 (XXX) (XIIO
3K
noi (xxxi (xno
39
1100 (XXXKXKIl
40
(XXII (XIIO (XII1
41
1010 (XXX) 0010
42
Olii (XXX) (XX)1
43
(XXX) (XXX) (XXXI
HK.5
N. caselle
indicate da
Azioni
L fletto sul contenuto
delle caselle n. 16, 1 e 2
e dei recisi ri R e R.C.
R.C. 16 1 2
R
32
Attesa del 1 carattere (qui 2)
2 - R
32
0
2
33
(RI - 1
33
0
■>
•}
2
34
(16) - R
34
0
“>
•ì
0
35
(R) - 2
35
0
2
0
0
36
Tesi di (1) : (1) * 0
Nessuna azione
36
0
2
0
0
37
Attesa di un caratlere (qui 4)
4 - R
37
0
0
4
38
(R) + (21- 2
38
0
2
4
4
39
(1) - 1 - 1
39
0
1
4
4
40
35 - C O
35
0
1
4
4
36
Test di (1) : (1) * 0
Nessuna azione
36
0
1
4
4
37
Attesa di un carattere (qui 5)
5 - R
37
0
1
4
5
38
(R) + (2)- 2
38
0
1
9
5
39
(1) - 1 - 1
39
0
0
9
5
40
35 - CO
35
0
0
9
5
36
Test di ( 1 ) : ( 1 ) 0
da cui
40 - CO
40
0
0
9
5
41
(2) - R
41
0
0
9
9
42
Stampa di R: la telescrivente
stampa il carattere 9
42
0
0
9
9
43
Fine delle operazioni
l i». 6
10
BASIC
Se si battono sulla tastiera i numeri sueeessivi:
2, 4 e 5
si vedrà apparire sulla stampante: 9.
Analisi del funzionamento (si veda la figura 6)
Con la disposi/ione della figura 5 in memoria, se Putente avesse battuto 3-2-1-
4 il calcolatore avrebbe stampato 7. In modo generale il calcolatore calcolerà
la somma di un numero qualunque di cifre. La prima cifra n che l’operatore
batte sul terminale rappresenta il numero di queste cifre, e le cifre seguenti so¬
no quelle sulle quali viene calcolata la somma. La macchina stampa il risultato
quando sono state sommate n cifre. La disposizione binaria della figura 5 co¬
stituisce il programma della macchina. Scriverlo sul calcolatore significa pro¬
grammarlo.
In effetti la sequenza delle azioni precedenti si traduce in:
— registrazione nella casella 1 (contatore) del numero n
— azzeramento della casella 2 (totalizzatore)
— fintanto che il contatore non contiene zero, lettura della cifra seguente, ag¬
giunta di questa cifra al totalizzatore (operazione della casella 38), sottrazione
di uno al contenuto del contatore
— stampa del contenuto del totalizzatore (casella 2). quando il contatore (ca
sella 1) contiene zero (le n cifre sono state sommate).
1.4. I DIFFERENTI LIVELLI DI LINGUAGGIO
1.4.1. Il linguaggio macchina
Come abbiamo avuto modo di dire a proposito delle descrizioni precedenti,
tutti i calcolatori posseggono un vocabolario elementare definito dal suo co¬
struttore e riconducibile a qualche decina di parole binarie corrispondenti
all’insieme delle azioni che la macchina è in grado di compiere.
La combinazione di queste parole secondo una data regola di scrittura, ugual¬
mente definita dal costruttore, costituisce un programma. Ad esempio, la fi¬
gura 5 è un programma in linguaggio macchina (caratteristico della macchina
semplificata descritta precedentemente). Ciascuna macchina ha il suo linguag¬
gio, e un programma scrìtto per l’una non potrà essere utilizzato per un’altra.
1.4.2. I linguaggi d'assemblaggio
È evidente che lu manipolazione da parte dell'uomo di un tale linguaggio non
11
BASIC
è cosa molto pratica. Per rendere il linguaggio meno ostico e più mnemonico
si è in primo luogo immaginato di designare:
— ciascun codice operazione
— ciascuna casella di lavoro
— ciascuna variabile
con gruppi di caratteri costituenti un codice mnemonico. Si avrà ad esempio:
Codice binario
Codice mnemonico
Significato
1010
LEGO
(A) - R
1011
SCRI
(R) - A
1000
SOTT
(A) - (R) - A
1101
ADDI
(R) + (A) - A
1100
DECR
(A) — 1 — A
0001
SALT
salto incondizionato
0101
SAZE
salto se zero
Olii
USCI
uscita
0110
INGR
ingresso
(XXX)
FINE
arresto
Kig. 7
Il programma della figura 5 diventerebbe, ad esempio, quello di fig. 8.
Questa presentazione è sotto forma di archivio. È esattamente ciò che s’im¬
metterà in macchina e che verrà tradotto &M'assemblatore. Questo assembla¬
tore è un programma già caricato in memoria e che tradurrà questo archiv io in
linguaggio binario (in questo caso otterrà il programma descritto nella finora
5).
L’assemblatore analizzerà la sequenza di caratteri dell'archivio di figura 8 nel
modo seguente.
— VARIA: assegnazione delle caselle 1.2, ... ai gruppi di caratteri specificati
nel paragrafo VARIA.
— CONST: assegnazione delle caselle 16, 17 ai gruppi di caratteri specificati
nel paragrafo COST e scrittura dei valori di queste costanti (indicate in terza
colonna) nelle caselle corrispondenti.
— OPER: scrittura del programma propriamente detto in binario a partire
dalla casella 32.
Questo implica per ciascuna linea (ciascuna istruzione):
• Se vi sono caratteri sulla prima colonna (caratteri diversi dalla spaziatura),
assegnare a questo gruppo di caratteri l’indirizzo della casella di memoria do¬
ve l’assemblatore scriverà il codice binario dell’operazione corrispondente alla
linea.
12
BASIC
1 ‘ Colonna
2* Colonna
3“ Colonna
PROCjR
SOMMA
VARIA
COMPÌ
TOTAI
COSSI
ZI R(>
0
OPI R
tNTR
*>
1 C RI
COMPÌ
URI
ZIRO
IC RI
TOTAL
POI ( LI
SO/I
MNALCi
1 SIR
A
ADDM
TOI M
DI-OR
C OMI'I
SM T
BOI C I 1
1 INAI Ci
URI
TOI Al
SOR !
1
1 ISI
FIN \
Dichiarative
Dati
Costanti
l
Operazioni
Kìr. 8
• Tradurre i caratteri della seconda colonna nel codice binario dell’operazio¬
ne corrispondente e scrivere questo codice all’inizio della parola di memoria
(bit 12-9).
• Tradurre i caratteri della terza colonna:
- se sono cifre, tradurre il numero in codice binario e trascriverlo nei bit
8 - 1 .
- Se questo gruppo di caratteri corrisponde al nome di una variabile, di una
costante o di una casella d’operazione (in tutti i casi ciò che è scritto in prima
13
BASIC
colonna), tradurre l'indirizzo di registrazione corrispondente al codice binario
e scriverlo nei bit 8-1.
— FINA: interrompere l’assemblaggio, l’archivio è terminato.
Nell’esempio precedente abbiamo presentato un linguaggio Assembler e le
azioni del programma d’assemblaggio corrispondenti. Si può già constatare
un miglioramento nella comprensione del programma da parte deH’utilizzato-
re del calcolatore. 1 codici operazione scritti in forma mnemonica (LEGG,
1NGR, ecc) e i nomi delle caselle di memoria (variabili, costanti o indirizzi di
programma) sono molto più espliciti.
1.4.3. Linguaggio avanzato
Si suole rendere il programma ancora più facile da manipolare scrivendolo in
un linguaggio che ricordi il più possibile la lingua naturale (inglese, francese,
italiano...).
Il linguaggio Basic è un esempio di tale linguaggio: se si vuole tradurre in Basic
il programma che è servito d’esempio fino ad ora si ottiene:
IO INPUT C
20 LET T = 0
30 FOR I = I TO C
40 INPUT N
50 LET T = T + N
60 NEXT I
70 PRINT T
80 STOP
90 END
cioè:
10 Immissione di C (coniatore)
20 Azzeramento di T (totale)
30 I = 1 prima dell’ingresso nel ciclo iterativo, se 1 >U si esce dalla ite¬
razione e si va al numero 70.
40 Immissione della prima cifra N
50 Somma a T
60 Incremento di I e salto all’inizio della iterazione se 1<C
70 Uscita di T (totale)
80 Codice di fine
90 Codice di fine archivio
Per ottenere tale programma in linguaggio macchina è necessario tradurlo per
mezzo di un programma speciale definito compilatore ; questo analizza ciascu¬
na istruzione, segnala gli eventuali errori di sintassi con dei messaggi di errore
e scrive in memoria il corrispondente piogramma binario.
14
BASIC
CAPITOLO 2
IL BASIC
Al fine di rendere più efficace la presentazione di questo capitolo, abbiamo
adottato un approccio a spirale, cioè partiamo da esempi elementari e proce¬
diamo verso un ampliamento del linguaggio ricorrendo a esempi di complessi¬
tà crescente. Questo obbliga il lettore a rivedere più volte gli stessi concetti.
2.1. PRIMI CONCETTI DEL LINGUAGGIO
Istruzioni, Programma. Variabile. Dato
Battere sulla tastiera
PRINT 23-9
Premere il tasto RETURN
Si ottiene sullo schermo (o sulla stampante)
14
READY
Si era scritta un 'istruzione (o ordine BASIC) che è stata interpretata ed esegui¬
ta dal compilatore immediatamente dopo che il tasto RETURN c stato premu¬
to. Si tratta di un’istruzione detta ordine diretto. Ciò illustra Pimportantc
vantaggio offerto dal Basic come linguaggio conversazionale: ogni volta che
viene premuto il tasto RETURN, l’insieme dei caratteri battuti sulla tastiera è
considerato un’istruzione e interpretata. Se questa interpretazione è positiva
(non vi sono errori) e se nessun’altra informazione risulta necessaria, l’istru¬
zione viene eseguita. Sarà cosi ogni volta che si vorrà eseguire una sola istru¬
zione. Però i problemi piu semplici richiedono molte istruzioni e i più com¬
plessi possono arrivare a migliaia di istruzioni. L’insieme delle istruzioni ne¬
cessarie alla risoluzione di un dato problema costituirà un programma. Esami¬
niamo un esempio semplice.
Problema 1
Calcolare il quadralo e il cubo dei primi numeri interi:
15
BASIC
Programma I:
1» READ N
20 LHT C = N * N
30 LET K = C * N
40 PRINT N.C.K
50 GOTO IO
60 DATA 1,2,3.9
70 END
RUN
Commenti:
— questo programma consiste in sette lince numerate di 10 in 10. Ciascuna li¬
nea rappresenta un'istruzione e i numeri di linea servono a precisare l'ordine
in cui le istruzioni debbono essere eseguite (si può arrivare fino a 99999).
Cosi si sarebbe potuto scrivere senza variare il programma:
10 READ N
60 DATA 1,2,3.9
40 PRINT N,C,K
20 l.ET C = N * N
EvUdentemente si possono numerare le linee in ordine progressivo, però la nu¬
merazione di 10 in 10 permette una maggiore flessibilità e quindi di inserire in
ogni momento istruzioni dimenticate o modifiche dei programmi. Ad esem¬
pio:
65 DATA 10,11,12.19
permette di aggiungere una sequenza di numeri al di là di quanto previsto nel
programma originale.
— ciascuna istruzione comincia con un ordine che è rappresentalo da una pa¬
rola inglese che indica il tipo di azione che dev’essere eseguita.
— i caratteri che seguono questo ordine Basic sono simboli che rappresentano
dei dati , delle variabili o degli operatori.
Cosi nell'istruzione:
30 LET K = C * N
30 è il numero dell'istruzione
LET è l’ordine Basic
K,C e N sono delle variabili
= e * sono degli operatori aritmetici
— gli spazi tra i differenti caratteri d'una linea non sono presi in considera¬
zione dal compilatore e servono solo a facilitare la lettura del programma. Si
può scrivere ad esempio:
16
BASIC
10READN
20LETC = N*N
Tra i 5 tipi di istruzioni che figurano nell’esempio precedente, alcuni meritano
qualche commento particolare.
I .'ordine READ (istruzione 10) è un ordine di lettura e dev’essere sempre ac¬
compagnato da istruzioni DATA. Queste sono in effetti degli archivi di dati
creati al momento della compilazione e consultati sequenzialmente, cioè il cal¬
colatore quando incontra l’ordine READ preleverà il primo valore dall'archi¬
vio e lo assegnerà alla variabile N. Nel seguito del programma si avrà dunque
N = 1 fintanto che non vi sia un nuovo ordine READ o un’istruzione LE I N
= (si veda oltre).
L'ordine LET (istruzioni 20 e 30) permette d’effettuare operazioni aritmetiche
e d'inviare il risultato nella casella di memoria il cui simbolo è rappresentato
dal simbolo situato a sinistra di = . Ad esempio, l’istruzione 20 effettua il pro¬
dotto (*) di N per N ed assegna il risultalo alla variabile C. Evidentemente non
vi potrà essere che una sola variabile alla sinistra del segno uguale.
Vediamo apparire qui il concetto di «variabile», cioè l’utilizzazione di simboli
che sono interpretati dal compilatore come indirizzi di memoria.
É sul contenuto di questi indirizzi che si applicano tutte le operazioni previste
nel programma. In Basic una variabile è rappresentata da una sola lettera se¬
guita da una sola cifra, ad esempio: N.X.02 (lettera O), Y5.
Cili operatori aritmetici usuali sono rappresentati in Basic dai simboli seguen¬
ti:
Parentesi
( >
Elevazione
alla potenza
I
(stesso peso) [ Quozien.c
/
( P rodono
•
(stesso peso) i Differen/a
—
( Somma
4
Li abbiamo elencati in ordine di peso decrescente. Cioè in una espressione
aritmetica sono le parentesi più interne ad essere calcolate per prime.
All’interno delle parentesi, si effettuano le potenze, poi i quozienti e i prodot¬
ti, quindi le somme e le differenze. Nel casq in cui 2 operatori, in una data pa¬
rentesi, hanno lo stesso peso, si comincia da quello situato più a sinistra.
Esempio: se si deve esprimere in Basic:
c • f
si ha:
20 LET H = ( (A + B)/( (C — D)/(E — F) ) ) * (X + Y) I 3
17
BASIC
Può meravigliare il numero di parentesi utilizzale in Basic in confronto a quel¬
lo dell'espressione data. Questo dipende dal fatto che nel primo caso utilizzia¬
mo una rappresentazione a due dimensioni (la posizione dei simboli nel piano
li informa dell’ordine in cui si debbono applicare gli operatori), mentre la
scrittura Basic deve rispettare la natura unidimensionale dell'informazione
che dev’essere presentata al compilatore. Abbiamo aggiunto delle frecce per
precisare come le parentesi debbano essere appaiate. In effetti non si crea con¬
fusione se si decide di accoppiare la prima parentesi chiusa con la prima pa¬
rentesi aperta che la precede. Una volta eseguilo il contenuto della parentesi,
si cancella la parentesi e si passa alla seguente per la quale si procede nello stes¬
so modo. Il compilatore utilizza un algoritmo di questo genere per la traduzio¬
ne dell’espressione, cioè al momento della scomposizione dcll’isiruzione Basic
in istruzione elementare binaria.
Sole
— È spesso possibile utilizzare meno parentesi grazie alla convenzione della
priorità delle operazioni. Nell’esempio precedente si poteva scrivere:
20 LET H = (A + B) * E * F/(C — D) * (X + Y) I 3
— Si può anche risparmiare sul numero delle operazioni da effettuare in una
espressione, modificando semplicemente l’ordine in cui si scrivono le opera¬
zioni (quando la permutazione è possibile).
— E bene verificare ogni volta che vi sia lo stesso numero di parentesi aperte e
chiuse.
Insistiamo sul fatto che il valore del risultato dell’espressione aritmetica si¬
tuala a destra del segno = è assegnata alla \ariabile che si trova alla sinistra.
C osi un'espressione del tipo:
50 LET I = I + N
e perfettamente ammessa. Essa realizza l’incremento della variabile I di N uni¬
tà. Se I avesse il valore 30e N il valore 6, dopo l’esecuzione dell’istruzione 50 I
avrebbe il valore 36.
— La maggior parte dei compilatori Basic permette di utilizzare indifferente¬
mente le istruzioni aritmetiche con l'ordine LET o senza quest’ordine. Nel se¬
guito scriveremo semplicemente, ad esempio:
50 I = I + N
L’ordine LET è sottinteso.
L 'ordine PRINT (istruzione 40) non avrebbe bisogno di commenti: permette
di stampare i valori assunti dai simboli N.C e K all’istante considerato. Vedre¬
mo nel seguilo come è possibile prevedere rimpaginazione dei risultati.
18
BASIC
L'ordine GOTO (istruzione 50) rinvia alla linea IO, cioè alla lettura del dato
seguente: N che prenderà successivamente il valore 2, 3, 4
Lire la suite
- 23.12 MB
- 15
Vous recherchez le terme ""

60

72