Sei sulla pagina 1di 172

Carlo Sintini e Costantino Mustacchio

A scuola con
· il Commodore 64
Il piacere del computer

I Tom Rugg e Phil Feldman 32 programmi con il PET


2 Rich Didday Intervista sul persona! computer, hardware
3 Tom Rugg e Phil Feldman 32 programmi con !'Appie
4 Ken Knecht Microsoft Basic
5 Pouf M . Chirlian Pascal
6 Tom Rugg e Phil Feldman 32 programmi con il TRS-80
7 Rich Didday Intervista sul persona! computer, software
8 Herbert D. Peckham Imparate il Basic con il PET /C BM
9 Kart Townsend e Meri Miller Il persona! computer come professione
IO Karen Billings e David Moursund Te ne intendi di computer?
11 Thomas Dwyer e Margot Critchfield Il Basic e il persona! computer,
uno: introduzione
12 Don Inman e Kurt Inman Imparate il linguaggio dell' Appie
13 Thomas Dwyer e Margot Critchfield Il Basic e il persona! computer,
due : applicazioni
14 Luigi Pierro Il manuale del CP/ M
15 Carlo Sintini A scuola con il PET/ C BM
16 David Johnson-Davies Il manuale dell 'Atom
17 David E. Schu/tz Il libro del Commodore VIC 20
18 Jim Huffman e Robert Bruce Il " debug" nei persona! computer
19 John M . Nevison Programmazione in Basic per l'uomo d'affari
20 Mark Harrison Imparate il Basic con lo ZX8 I
21 Ronald W. Anderson Dal Basic al Pascal
22 Herbert D. Peckham Imparate il Basic con il Texas TI 99/ 44
23 Sergio Borsoni A scuola con il Texas TI 99/ 4A
24 Jerry Willis e Deborrah Willis Come usare il Commodore 64
25 Mark Harrison Imparate il Basic con lo Spectrum
26 Carlo Sintini e Costantino Mustacchio A scuola con il Commodore 64
27 David A. Lien Imparate il Basic con l' IBM PC
28 Ken Tracton Introduzione al Lisp
29 Fabio Mavaracchio Programmi in Basic per l'elettronica
Pagina mancante
(frontespizio?)
Pagina mancante
(dati editoriali?)
Indice generale

7 La grafica a bassa risoluzione


Tracciamento assi cartesiani Numeri frazionari Tracciamento di
una retta Rette nel piano cartesiano Intersezioni fra rette Parabo-
la e retta
26 La grafica ad alta risoluzione
32 Matematica elementare
Sistemi di numerazione Area e perimetro dei poligoni
50 Ancora matematica
Soluzione delle equazioni algebriche Disposizioni e permutazioni
Calcolo delle probabilità Matematica per i più esperti Calcolo con
le matrici Coniche generiche
81 Fisica
Unità di misura Teoria degli errori Cinematica Balistica Relati-
vità
115 Miscellanea
Frasi inutili Eliza Fratrie
130 Analisi matematica
Integrali definiti Integrali doppi Integrali tripli Calcolo delle aree
con il metodo di Montecarlo
145 Ancora fisica
Analisi di Fourier Resistenze e capacità Polinomio approssimante
156 Per finire
CAPITOLO PRIMO

La grafica a bassa risoluzione

Lo schermo del Commodore 64 è costituito da 1000 quadratini o caselle,


disposti a formare un rettangolo con 25 righe e 40 colonne.
In ciascuno di essi può essere sistemato uno dei caratteri della tastiera
(lettere, numeri o simboli grafici), ed ogni casella corrisponde ad un in-
dirizzo di memoria secondo lo schema indicato nella figura I.
La numerazione comincia con la casella nell'angolo superiore sinistro
(1024) e termina con la casella dell'angolo inferiore destro (2023).
Ogni volta che termina una riga, la numerazione procede con la prima
casella della riga successiva. Si noti che le caselle appartenenti ad una
stessa colonna differiscono fra loro di 40 unità in più o in meno, a se-
conda che si percorra la colonna in verso discendente o ascendente.
I caratteri della tastiera, a loro volta, corrispondono ciascuno ad un nu-
mero compreso fra O e 255, secondo il codice indicato nella figura 2. I
numeri 32 e 96 corrispondono a uno spazio vuoto.
Aggiungendo I 28 ai numeri suddetti, si hanno in corrispondenza gli stes-
si caratteri stampati in REVERSE.
A questo punto siamo in grado di far comparire sullo schermo un carat-
tere qualsiasi su una casella a piacere, per mezzo del comando

POKE A,B

dove A e 8 indicano rispettivamente l' indirizzo corrispondente alla casel-


la e il codice corrispondente al carattere.
00

O 1 2 3 4 5 6 7 8 910111213141516 171819202122232 425262728293031 323334353637383 9

1024 LJ_LJJ_LJ___U_-+-+-+-+-H+++-H+-t-+t-t-H+t-t--ttttltlt1T
1064 UJJJ_LJ___U_-+-+-+-+-W+++-H+-t-+t-t-H+t-t--ttttltlt11
1104 LJ_LJJ_LJ___U_-+-+-+-+-W+++-H+-t-+t-t-H+t-t--ttttltlt11
1144 LJ_lJJ_LJ___U_-+-+-+-+++H-++H-H+t-t-H-ttlttlt11TTTI
1184 UJJJ_jj__ U_--W--+ +-+-+++H +HH+t-t-H -ttttiitt-rlt ll
1224 LJ-LLJ_jj__U_--W--++-+-+++H+HH+t-t-H-ttt tiitt-rl tll
1264 LJ-LLJ_LJ___U_--W--++-+++++-+++-H+t-t-tn-t1 tt1t11rr r1
1304 LJ-LLJ_jj__U_--W--++-+++~H+H-+-++r-t-t-ttrn-rtt-r1111
1344 LJ_j_W---+-+ --+-1--+-+--+- H--t-H-t-TTTl lrr-i
1384 LJ_j___U_---+-+-+--+-+-++++++-++-H-H-t1111111
1424 LLlil~-H-++--++++++-H-HH-H-tl!llM/
1464 -l-----1--+-+-+-t-t --i-t--r-1
1504 LJ-LLJ_LJ___U_-W--H--W+++++++-H+H+t-t11tt1t1tn-
l544 Uill_jj__U _--W--++ -+-+++H+ HH++t-t-t -tttt1ttt-r1 rn
1584 UJJJ_jj__ U_--W--+ +-+-+++H +HH+t-t-t -t-tttt1ttt-r 1rn
1624 LJ_LJJ_LJ___U_--W--++-+-+++++H-H+t-t-H-ttlttlt11TTTI
1664 LJ-LLJ_jj__U_--W--++-+-+++H+H+-t+t-t-t-tttt1ttt-r1rn !;:'.
o
1704 LJ-LLJ_jj__U_--W--++-+-+++H+HH+t-t-t-t-tttt1ttt-r1rn :xi
1744 ?;;
(i
>
>
:~~: H 1111111111111 1 111111111111111111 l I I I I I I t:ll
1864 >
~
>
~
cn
::: ti I I I I I I I I I 1111 1 1111111111111111111111111 ot'"'
1984 e:
N
o
z
Figura 1. Schermo del Commodore 64. m
LA GRAFICA A BASSA RISOLUZIONE 9

0=1! 1=A 2=B 3=C 4=D 5=E 6=F 7=G


S=H 9=! 10=J 11:::1< 12=L 13=M 14=N 15=0
16=P 17=Q 18=R 19=S 20=T 21=U 22=V 23=W
24=X 25='r' 26=2 27=( 28=E 29=] 30=t 31=~
32= 33=! 34=" 35=# 36=$ 37=% 38=.~ 39="
40=< 41=) 42=* 43=+ 44=1 45=- 46=. 47=/
48=0 49=1 50=2 51=3 52=4 53=5 54=6 55=7
56=8 57=9 58= : 59=.; 60=( 61== 62=) 63=?
64=- 65=41 66=1 67=- 68=- 69=- 7'0=- 71=1
72= I 73:::. ., 74= \ 75= ... 76=L 77=' 78=/ ?9=r
80=1 81=• 82=- 83=• 84=1 85: I 86=X 87=0
88=+ 89= I 90=• 91=+ 92=l 93= I 94=1T 95=....
96= 97=1 98=· 99=- 100=_ 101=1 102=m 103= I
104=~ 105=" 106= I 107= ~ 108= I 109: L 110=, 111=-
112= r 113=.J. 114="T 115=-i 116=1 117=1 118= I 119=-
120=- 121=. 122=J 123=1 124=. 125=.J 126=· 127=..
Figura 2

Per esempio il comando

POKE 1024,83

farà comparire il cuoricino nell'angolo superiore sinistro dello schermo,


mentre

POKE 1025,211

farà comparire il cuoricino in reverse (83 + 128 = 211) nella casella im-
mediatamente successiva. Questo metodo per stampare i caratteri sul vi-
deo può all'inizio sembrare macchinoso , ma è estremamente utile per
realizzare programmi che prevedano il tracciamento di grafici.
In un'altra regione della memoria esistono altri indirizzi che immagazzi-
nano il colore con cui deve essere visualizzato il carattere in ciascun qua-
dratino dello schermo .
Questi indirizzi vanno dal 55296 al 56295 e sono ripartiti in 25 righe e 40
colonne con lo stesso criterio visto per i caratteri.
I colori possono essere scelti con il comando

POKE n,c

dove n è il numero corrispondente al quadratino cui ci si vuole riferire, e


e uno dei 16 colori disponibili nel Commodore 64, con il criterio seguen-
te:
IO LA GRAFICA A BASSA RISOLUZION E

o nero 8 arancio
1 bianco 9 = marrone
2 rosso 10 = rosa
3 ciano 11 = grigio I
4 = viola 12 = grigio 2
5 = verde 13 = verde chiaro
6 blu 14 = celeste
7 = giallo 15 = grigio 3
Quindi per ogni casella dello schermo esistono due ind irizzi di memoria :
uno (1024-2023) per stabilire quale carattere deve apparire, ed un altro
(55296-56295) per stabilirne il colore.
Per esempio, con il comando

POKE 55296,2

il cuoricino nell 'angolo superiore sinistro dello schermo diverrà rosso,


mentre con il comando

POKE 55297 ,5

lo sfondo del cuo ricino in reverse diventerà verde.


Talvolta per brevità si può omettere la POKE del colore (ed è ciò che fa-
remo nel presente capitolo): il carattere apparirà celeste su fondo blu .
Può avvenire , se per esempio si è cambiato il colore dello sfondo, che il
carattere non sia visibile perché del suo stesso colore: in tal caso è suffi-
ciente posizionarsi con il cursore sul carattere per rendersi conto se sia
effettivamente nel posto giusto.
I colo ri dello sfondo e della cornice possono essere modificati a piacere
con i comandi:

POKE 53280,c per la cornice


POKE 53281 ,c per lo sfondo

dove e è uno dei sedici colori visti precedentemen te.


Proseguiamo ora il discorso della grafica con le POKE tralasciando le
POKE del colore (55296-56295) e occupiamoci soltanto di quelle dei ca-
ratteri (1024-2023).
Prendiamo in considerazione una casella qualsiasi, per esempio la I 523
che si trova all'incirca in mezzo allo schermo, e battiamo sul C-64 il ci-
clo seguente

10 FOR K = O TO 39
20 POKE 1523+ K,42
30 NEXT K
LA GRAFICA A BASSA RISOLUZIONE 11

casella 1523
d'inizio!
~

• • •• • • •• • • • • • • • • • • • • • •
• • • • • • • • • • •• • • • • • •
' casell~_J2§..2_
finale

Figura 3

Sul video compariranno, a partire dalla casella 1523, quaranta asterischi


allineati che procedo no verso destra .
Alla fine della riga la serie di asterischi si interrompe e riprende all' inizio
della riga successiva (figura 3).
Sostituendo la linea 20 con

20 POKE 1523-K,42

si ottiene una serie di asterischi che partono dalla stessa casella , ma pro-
cedono in verso contrario (figura 4).
Proviamo ora a battere il ciclo

10 FOR K = O TO 12
20 POKE 1523 + 40*K,42
30 NEXT K

Ogni volta che K viene incrementato di una unità, l'indirizzo aumenta di


40 e quindi gli asterischi procederanno verso il basso lungo la stessa co-
lonna {figura 5).
Contrariamente a quanto avveniva per gli spostamenti orizzontali, se K
aumentasse oltre il valore 12 gli asterischi no n continuerebbero a scorre-
re lungo la colonna adiacente .
12 LA GRAFIC A A BASSA RISOLUZIONE

I
casella 1484
fin ale

' • • • • •• • • • • • • • • • •• • • ••
• • •• • • • • • • • • •• • • • .·- r-. casella ~g.J_
d ' inizio

Figura 4

casella 1523 '


d'inizio-
!'-..







••
casella

2003

•I
fin ale ,
.. •

Figura 5
LA GRAFICA A BASSA RISOLUZIONE 13

1~ •

I 11 LI V1 •
casella 1043 •
finale •









,, jl

casella 15 23
d' inizio

Figura 6

Per l' uso che faremo dell e "poke grafiche" dovremo quindi fare a tten-
zione a non supera re gli indirizzi che compaiono nella figura I.
Infine , con il ciclo

10 FOR K = O TO 12
20 POKE 1523- 40"K
30 NEXT K

si avrà una colonna di asterischi che procede verso l'alto lungo una stes-
sa co lonna.

TRACCIAMENTO ASSI CARTESIANI

Come semplice applicazione iniziale provia mo a ba ttere il programmino


segue nte.

10000 REM LI S TA TO 1
100 10 REM TRACC IAMENTO ASS I CARTES IANI
10020 POkE5328 1 ,3
10022 POKE53280 , 10
101.~24 PF: It-H":G"
14 LA GRAFICA A BASSA RISOLUZIONE

10030 FORK=0T0999
10040 POKE1024+K,46
10050 t~E XT K
10060 FORK=0T024
10070 POKE1043+40*K,11 5
10080 NEl<TK
10090 FORK=0T039
10100 POKE1504+K,114
10110 NEXTK .
101 20 POKE1523,91
101 30 POKE1041,25
10140 POKE1623,24
10150 GOT010150

Dopo la sistemazione dei colori dello schermo, nelle linee 10030-10050


vengono fatti stampare mille punti consecutivi che riempiono tutto il vi-
deo e che costituiscono una specie di "quadrettamento" dello schermo.
Le linee 10060 e 10110 tracciano i due assi coordinati, mentre le linee
10120-10140 stampano rispettivamente l'incrocio dei due assi, e i nomi Y
e X di ciascun asse.
La linea 10150 è un artificio che impedisce al C-64 di stampare il REA-
DY alla fine del programma, finché non viene premuto il tasto STOP.

NUMERI FRAZIONARI

Sospendiamo un attimo il discorso sulle poke grafiche ed elaboriamo


una piccola routine che ci permetta di trasformare un numero razionale
sotto forma di frazione con numeratore e denominatore interi.
Per esempio

3.24 = 324
100
81
= 25

Ci servirà in seguito per alcuni programmi, ed è utile dal punto di vista


didattico perché gli studenti sono abituati a mettere i risultati algebrici
appunto sotto questa forma.
Battete il seguente listato

10 REM LI STATO 2
20 REM TRASFORMAZIONE IN FRAZIONE
30 POKE53281,3
40 POKE53280 .• 10
50 PRINT";:l;"
60 rnPUT";u3ATTI Ut~ NUMERO DECIMALE" ;N
70 GOSUB20000
80 PR INT" !J:::ORR I SPot4DE A "N" r"' O
90 GOT060
20000 REM S UBROUT I t~E O I TRASFOF:MAZ IONE
2~:10 1 0 K=O
LA GRAFICA A BASSA RISOLUZIONE 15

20020 K=K+l
2 0030 T=N*K:IFT-INT(T) C.00001THEN20070
20040 IFK=l00THENPRINT"!JJN MOMENTO •.• "
20050 IFK>300THEND=l:RETURN
20060 GOT020020
20070 N=N*K :D=K :RETURt~

Le linee fino alla 60 non hanno bisogno di particolari commenti. La su-


broutine 20000 esegue la trasformazione richiesta.
Dopo aver azzerato la variabile K, in 20020 è posto un contatore
K = K + 1, che ad ogni passaggio aumenta di una unità. Viene anche
istituita la nuova variabile T moltiplicando N per K.
A questo punto viene presa in esame la differenza tra T e la sua parte
intera .
Se per esempio K = 3 ed N = 3.2 allora T = 9.6 e la parte intera di T è
uguale a 9: la differenza è .6 e il programma salta la condizione posta
nella linea 20030.
Alla linea 20060 si ha un ritorno indietro fino a quando T e INT(T) risul-
tano uguali: in questo caso K è il multiplo che rende intero N e si ha
l'uscita alla linea 20070 dove N e D assumono il significato di numerato-
re e denominatore della frazione finale.
Invece della condizione

IF T-INT(T) O THEN .....

è necessario usare la condizione

IF T- INT(T) >.00001 THEN .....

perché i calcolatori talvolta presentano piccole imprecisioni sulle ultime


cifre decimali.
La linea 20050 è un'uscita necessaria per interrompere il loop quando K
supera 300 (valore fissato ad arbitrio).
La linea 20040 ha l'unico scopo di avvertire l'operatore che il calcolatore
sta ricercando la frazione.
Nel caso in cui si voglia utilizzare questa subroutine in programmi più
complessi, dove il numero decimale in entrata è il risultato di un calcolo,
e quindi può contenere diverse cifre decimali, o essere addirittura irra-
zionale, può essere utile limitare il numero di cifre decimali prima
dell'uscita alla linea 20050 modificando la stessa nel modo seguente:

20050 IF K>300 THEN N=INT(N*100+ .5)/100:D=1:RETURN


16 LA GRAFICA A BASSA RISOLUZIONE

TRACCIAMENTO DI UNA RETI A

Riprendiamo ora la parte grafica ed occupiamoci di una subroutine che


tracci sullo schermo una retta la cui equazione sia nella forma

y = mx+q

La posizione degli assi coordinati sarà ovviamente quella fissata nella


prima routine. I coefficienti m e q rappresentano rispettivamente il coef-
ficiente angolare della retta e il termine noto.

10 REM LISTATO 3
20 REM TRACCIAMEtHO RETTA
30 POKE53281,3
40 POKE53280 .• 10
50 PR ItH" :z;;"
60 INPUT"~::OEFFICIENTE ANGOLARE" ;M
70 It~PUT"W"ERMINE t·KITO" ;Gl
80 PRINT":l" :G0:3U8313000
9(1 INPUT"!}'tNCOF.:A'' .:R$
113(1 IFLEFT$(R$, 1 )= " S" THEt~RUt~
110 EtlD
30000 REM S UBROUTINE
300 10 FORK=0T039
3 0015 )<=1<-19
30020 Y=M*X+Q:Y=INT(Y)
30030 IFY> 120RY<-12THEN30050
30040 POKE1544+1<-Y*40,42
301350 t~E )<TI<
301360 RETURt·l

In 60 e 70 vengono introdotti nel Commodore 64 i valori di m e q, e le


linee 80 e 90 non hanno bisogno di ulteriori spiegazioni. Si noti che la
100 permette di accettare sia la risposta SI per esteso che semplicemente
la S (perché viene considerata solo la prima lettera).
In 30010 viene istituito un ciclo FOR NEXT con K che varia da O a 39, e
viene introdotta una nuova variabile X che varia da -19 a + 20, e tali
valori rappresentano le ascisse dei punti che compariranno sullo scher-
mo.
In 30020 viene ogni volta (per ciascun valore di K e quindi di X) calcola-
ta la corrispondente ordinata.
Essa può essere positiva o negativa, e si noti che viene trasformata in
valore numerico intero. Quando tale ordinata è maggiore di 12 o minore
di - 12, non potendo essere rappresentata sullo schermo (vedi listati rela-
tivi alle figure 5 e 6), la linea 30030 impone un salto che evita la stampa
del punto della retta.
La linea 30040 stampa un asterisco in corrispondenza del punto della
retta.
LA GRAFICA A BASSA RISOLUZIONE 17

L ' indirizzo di memoria iniziale (1544) corrisponde al primo punto a sini-


stra dell'asse delle ascisse. Ad ogni scatto unitario di K viene presa in
considerazione la casella delle ascisse immediatamente successiva, e al
valore così ottenuto viene tolta la quantità (Y*40) se la Y è positiva (in-
fatti se l'ordinata è positiva l'asterisco si deve spostare verso l'alto in di-
rezione verticale). Invece viene aggiunta la quantità (Y*40) se la Y è ne-
gativa (e l'asterisco si sposta in verticale verso il basso).
Quando K ha raggiunto il suo valore massimo si ha il RETURN.
Si noti che il programma non permette di tracciare rette verticali perché
m non può assumere valore infinito, mentre non c'è alcun impedimento
a tracciare rette orizzontali ponendo m = O.

RETIE NEL PIANO CARTESIANO

Applichiamo le semplici routine precedenti al primo programma comple-


to del volume.
Per questo e per i successivi si tenga presente che talvolta sarebbe possi-
bile ottenere gli stessi risultati con variazioni al listato che permettereb-
bero un certo risparmio di memoria o una esecuzione più rapida, ma ho
preferito quasi sempre adottare procedimenti che risultassero maggior-
mente chiari per il lettore alle prime armi.

100 REM COPYRIGHT IN BASIC


110 REM VIA SEZZE 22 LATINA
120 REM TEL 487631
130 CLR : POKE53280, 10 : POKE5328 L 3 : PR I NT "~"
140 PRINTTAB(7)"f~ETTE l~EL PIANO CARTESIANO::"
150 PR I NT" ml QUESTO PROGRAMMA TI PERMETTE DI "
160 PR INT "OTTENERE L ' EQIJAZ IO~lE DI IJl~A RETTA"
170 PRINT"CONOSCENDO LE COORDINATE DI DUE SUOI"
180 PRINT"PUNTLED INFrnE TI MOSTF:ERA' IL GRAFICO "
190 PRINT"DELLA RETTA."
200 PR I NTTAB ( 11> "JlQI( PREMI UN TASTO) "
210 GETR$: IFR$='"'THEN210
220 PRINT"::EOORDINATE PRIMO PUIHO : "
230 INPUT"C<="iX1
240 INPUT"J.h'=";Y1
250 PRINT":.lSECONDO PUNTO : "
260 INPUT":C<="iX2
270 INPUT"J.h'=" ; Y2
280 I FX 1=X2AND'T'1 ='T'2THEN220
290 I FX 1OX2THEN:320
300 PR I NT" LA RETTA E,. l/ERT !CALE"
310 GOT05000
320 IFY1<>Y2THEN350
330 PRINT"LA RETTA E' ORIZZONTALE"
340 GOT05000
350 D=SQR< 0<2-Xl) "t2+<Y2-'T'l) 1'2): M=D
360 GOSUB20000
370 PRINT"llll...A DISTANZA FRA I DUE PUIHI E' : "
380 PRIIHTAB< 10) 11 :al11 N11 /"D
18 LA GRAFICA A BASSA RISOLUZIONE

390 REM CALCOLO DELL ~ EQUAZIONE


400 M=<Y2-Yl>l<X2-Xl) :Q=Yl-<M*Xl)
410 M=INT <M*100+.5 ) /100 :Q=INT <Q*100+.5 )/100
420 PRINT"lL ~ EQUAZIONE DELLA RETTA E·' : "
430 IFSON(Q)(0THEN4S0
440 PRIHTTAB ( S) ":.1'1' ="M" X + "Q : GOT0460
450 PRINTTAB<5)""9f ="M" X "Q
460 INPUT" :11»/UO I IL GRAFI CO" ; R$
470 IFLEFT$(R$,1)="S"THENGOSUB10000:GOSUB30000
5000 REM RICHIESTA DI PROSEGUIMENTO
5010 INPUT" :"lml>IUO I CONTINUARE" ; R$
5020 IFLEFU<R:f:,1)="S"THENRIJH
5030 PRINT"WK - CIAO ! !":END
10000 REM TRACCIAMENTO ASSI CARTESIANI
10010 PRINT":1" :FQRK=0T0999
10020 POKE1024+K,46 :NEXTK
10030 FORK=0T024
10040 POKE1043+40*K,115
10050 NEXTK
10060 FORK=0T039
10070 POKE1504+K,114
10080 NEXTK
10090 POKE1523,91
10100 POKE1041,2S
10110 POKE1623,24
10120 RETURN
20000 REM TRASF. IN FRAZIONE
20010 K=0
20020 K=K+l
20030 T=N•K : IFT-INT<T> <.00001THEN20070
20040 IFK=100THENPRINT"WN MOMENTO ••. "
20050 IFK)300THEND=1 =N=INT<N*100+.5)/100 :RETURN
20060 GOT020020
20070 N=N*K :D=K :RETURN
30000 REM TRACCIAMENTO RETTA
30010 FORK=0T039
30020 X•K-19
30030 Y=M*X+Q :Y=INT<Y>
30040 IFY)120RY<-12THEN30060
30050 POKE1S44+K-Y*40,42
30060 NEXTK
30070 FORK=1T05000 :NEXTK
30080 RETURN

Fino alla linea 270 non occorrono molte spiegazioni: un CLR azzera tut-
te le variabili, viene cancellato il video, appare il titolo del programma e
un breve commento esplicativo.
In 200 il programma si ferma in attesa che venga premuto un tasto, e
poi devono essere battute sulla tastiera le coordinate di due punti della
retta.
In 280, 300, 330 vengono selezionati i casi in cui la retta è indetermina-
ta, orizzontale o verticale e, quando una delle tre situazioni si verifica, si
ha un salto alla parte finale del programma (senza esecuzione del grafi-
co).
In realtà il grafico della retta orizzontale potrebbe essere eseguito senza
difficoltà e, con una semplice modifica, si potrebbe tracciare anche la
LA GRAFICA A BASSA RISOLUZIO NE 19

retta verticale, ma ho preferito considera re banali questi due casi e ren-


dere esecutivo il grafico solo quando la retta non è parallela agli assi
coordina ti.
In 350 viene calcolata la distanza fra i due punti che individua no la ret-
ta; tale distanza (O) viene posta uguale ad N e inviata alla subroutin e
20000 che la trasform a in frazione decimale (se il denomin atore è minore
di 300, altriment i restituisce il numero con la virgola, e due cifre decima-
li). Le linee 370 e 380 stampano il risultato della distanza.
Successiv amente si passa al calcolo dei coefficie nti m e q dell'equa zione
della retta in forma esplicita (linea 400).
Si noti che nel calcolo di m sarebbe necessari o preveder e ed impedire che
il denomin atore X2-X1, possa assumere il valore zero, altriment i il pro-
gramma si fermereb be segnalan do un errore a causa della divisione per
zero.
Avendo però già eliminata la trattazion e delle rette verticali (linea 300),
tale precauzio ne è inutile.
In 410 i valori di m e q vengono limitati a due cifre decimali.
In 440 o 450 viene stampata l'equazio ne della retta in forma esplicita a
seconda del segno del termine noto, verificato nella linea 430.
Dalla linea 5000 in poi c'è la richiesta di prosegui mento.
Le subroutin e 10000, 20000, 30000, sono quelle già viste per il traccia-
mento degli assi cartesian i, per la trasform azione di un numero decimale
in frazione, e per il tracciam ento della retta.
Nella linea 30070 è stato inserito un ciclo di ritardo sufficien temente lun-
go per dare il tempo all'opera tore di osservare la retta prima della ri-
chiesta di prosegui mento.

INTERSEZIONI FRA RETIE

È un arricchim ento del preceden te ed offre la possibilit à di trattare e


tracciare contemp oraneam ente due rette, dopo aver calcolato il loro
punto di intersezio ne.

10 REM COPYRIGHT IN BASIC


15 REM VIA SEZZE 22 LATINA
18 REM TEL. 487€3 1
2e:1 PF.: I m" :'?:"
25 POKE532 80,10 : POKE532 81,3
30 PRHHTA B(9) "l!ll'W:UNTERSEZIOIH FRA RETTE::"
4t1 PR I tH" l![O;!UE:=;TO PROGRAMMA TI PEF:METTE DI OTTEl-IEF:E"
50 PR I tH "LE EQUAZ I Ot~ I DI DUE RETTE , DI CALCOLARE"
60 PR I ~ff" L_E COORD :. NATE DEL LOF.:O PIJHTO DI I t·ITER-"
?t:1 PR It-ff" SEZ IOt~E , ED It-4F !NE TI MOSTRERA ,. IL"
80 PRINT"G RAFICO DELLE DUE RETTE."
90 PR I NTTAB ( 12) ")llJll•J( PREMI UH TASTO ) "
20 LA GRAFICA A BASSA RISOLUZIONE

100 GETA$ : I FA$=" "TH E~l 100


110 CLR
120 PRitH"::T' : FORJ=l T'J2
130 Pf<: I tH" :~l~" J "1r f<:ETTA!!ll!"
140 PF:HlT"'.lDAMMI LE COORDINATE DEL PRIMO PUMTO:"
150 UIPUT"J!l:<l=" ;Xl(J)
1613 INPUT"'T'l=" ; 'T'1 (J)
170 PR I NT" :e.E G!IJELLE DEL SECOt·IDO PUIHO : "
180 It..fPUT"ltJ.2=" ; X2 ( J )
190 INPUT"Y2=" ;Y2CJ)
200 NE:i<TJ
21li:1 PR ItH" ::'lJK - Ut..f ATTI MO DI PAZ I rnzA I "
220 FOF.:J=l T02
2""''"
c.~• REM-FLAGS PER RETTE ORIZZONTALI E VERTICALI
230 I F><l (J) =>::2 (.J HHEt..fFV CJ;t = 1 : PR It..fT "lLA ".J"" F.:ETTA E, VEIH I CALE"
240 IF'T'1 (.J ) ='T'2< J)THEt..fFO ( J ) =1 : PF.:INT":!!LA "J"" RETTA E, ORIZZotHALE"
250 REM-CALCOLO DELLE M E Q
260 IFFVCJ >=0THENMCJ>=CY2 ( J)-Y1(J) ) /CX2(J)-X1(J))
270 IFFVCJ ) =0THENQ CJ) =Yl tJ) - ~ M ( J ) *X1(J))
280 t·IE:~T.J
290 REM-VEI': I FICA DI PAF.'ALLEL I St10 O PERPHID I COLAR I TA ,
295 IFFV(1 ) =10RF0 (1)=10RFVC2)=10RF0(2)=1T HEN1000
3i;:113 I FM ( 1) =M ( 2) THE~IPF.: I tH " :!!LE RETTE SOt..fO PARALLELE FRA LORO" : GOT0:3913
:310 I FM ( 1 ) =-1 /M ( 2) THEt·lF'F.: I tH" :9.LE RETTE ::;Ot·IO PERPEND I COLAF.: I FRA LOF.:O"
32(1 REM-CRLCOLO DELL ' INTERSEZIONE
330 XX=CQ(2)-Q( 1 ))/CMC 1 >-M(2))
34(1 'r''r'=MC 1 >* ><X+G!(1)
350 N=xx : GOSUB20000 =XN=N : XD=D
360 N=YY =GOSIJB20000 =YN=N =YD=D
3713 PRrnT" :l!l...E RETTE SI HICOtHRANO Hl"
38(1 PR I t..fTTAB( 5) ":919.P= ( ":~t·l" / " XD" i "'r't-1" /"YD")"
390 REM-CA~COLO DELLE EQUAZIOMI
4013 FOF.:J=l T02
410 M=MC.J) : GOSUB20000 : NM(J)=M =Dt1(J)=D
420 M=Q(J ): GOSUB20000 : NQCJ)=N : DQCJ)=D
440 PR It..fT ":l!l... ' EQUAZ IOt..fE DELLA "J" • RETTA E··· : "
450 P$="" · IFSGt·I CG!CJ) )=+10RQ(J)=0THEt..fP$="+"
460 PRitHTAB ( 7) "'1r'="NM CJ ) " / "DM(J) ":•: "P$NG! ( J ) "/"DQ(.J)
470 NE:><T J
480 INPUT" :9.?·/IJO I IL GRAF I CO" ; R$
490 IFLEFTSCR$,l)="S"THENGOS IJB10000
495 IFLEFU:CF.'$ .. 1 >O " S"THEN520
500 M=t1(1) : Q=QC1) : GOSUB30000
510 M=M C2):Q=QC2>=F=l: GOSUB30000
520 I t..fPUT " :~NUO I PRQl/Ai:;:E At·ICORA" _ ; R$
331:1 IFLEFT:t. Cl':S , 1 ) ="S"THEtH H3
54[1 PRit..fT"::X1K - CIAO!"
550 END
1000 REM-USC I TA SE Ut..fA F:ETTA E, PAF.:ALLELA AD U~l ASSE
H.11(1 PRit..fT" :~ANALE' Ut~A RETTA E' PARALLELA AD UNO"
1020 PRINT"DEGLI ASSI COORitHlATI."
1030 PR I ~n" :WER FAVORE I MPEC.t·IAM I CON G!UALCOSA DI"
1040 PRINT" PIU'" SERIO! ! " : c.i:n052t1
10000 REM-TRACCIAMENTO ASS I CARTESIANI
rn0rn PRitH"::J" : FORK=1:1T0999: POt<El024+K .. 46 : t~EXn<
10020 FORK=0T024: POKE1043+40*K,115:NEXTK
10030 FORK=0T039 : POKE1504+K,114 : NEXTK
10040 POKE1523,91 =POKE1041.25 =POKE1623. 24
10050 RETURN
20000 REM-TRASFORMAZIONE IN FRAZIONE
2001[1 K=0
20020 K=K+l =T=N*K : IFT-INT CT)( .00001THEN20060
LA GRAFICA A BASSA RISOLUZIONE 21

20040 IFK<100THEN20020
20050 D=t :N=INT ( T*100+.5) /100 :RETURN
20060 N=INT(T) : D=K : RETURN
30000 REM-TRACCIAMENTO RETTA
3001 0 FORK=0T039 : X=K-19
30020 Y=INT<M*X+Q)
30030 IFY>120RY<-12THEN30050
30040 POKl1 544+K-Y*40 ,42
31:::if1Sf1 t·IE>(ff
30055 IFF=0THEN30080
3~1061J GETA:t : I FA$="" THEt·l3l11~l60
30~170 PR I tH ":1"
3~1f180 RETUF.:l·I

Fino alla linea 100 c'è il solito preambolo esplicativo e in 110 un CLR
che azzera tutte le variabili.
Da 120 a 200 viene istituito un ciclo FOR NEXT per introdurre le coordi-
nate di due punti per ciascuna delle due rette (la variabile è J per evitare
confusioni con i cicli FOR NEXT delle subroutine che utilizzano la varia-
bile K).
Nella subroutine 20000, poiché dovrà essere utilizzata diverse volte, è
stato ridotto da 300 a 100 (linea 20040) il valore massimo oltre il quale il
Commodore 64 rinuncia alla trasformazione in frazione.
Così i tempi di esecuzione sono più brevi, ed è possibile eliminare l'av-
vertimento intermedio

UN MOMENTO .....

che verrebbe ripetuto quasi ogni volta che venisse utilizzata la subroutine
in questione.
In compenso è stata introdotta la linea 210. Da 225 a 240 vengono isti-
tuiti due flag ' per ciascuna delle due rette per riconoscere quando esse
sono parallele agli assi coordinati.
Nelle linee 250, 260, 270 vengono calcolati i valori di m (se la retta in
questione non è verticale) e di q.
Quindi, in 280 si chiude il ciclo iniziato in 220. Nella 290 inizia la verifi-
ca di parallelismo o perpendicolarità.
Se una delle rette è orizzontale o verticale si ha un salto alla linea 1000
dove, dopo un breve commento, si torna alla 520 per la richiesta di un
nuovo problema.
Nella 300 viene verificato il parallelismo e, in caso affermativo, viene
saltato il calcolo del punto di intersezione.
In 310 infine viene verificata (o meno) la perpendicolarità.

'Un nag è una variabile usata come "segnale": in corrispondenza di due (o più) situazioni,
il suo valore viene posto per esempio uguale a O o ad 1. Nel seguito del programma, a se-
conda del valore del nag si avrà o meno un salto condizionato.
22 LA GRAFICA A BASSA RISOLUZIONE

Infine in 320 inizia il calcolo delle coordinate del punto di intersezione.


Dopo averle individuate, esse vengono trasformate in frazione (se possi-
bile), e si ha la stampa del risultato.
In 390 inizia il calcolo delle equazioni (uguale a quello del programma
precedente), inserito in un ciclo FOR NEXT che termina alla linea 470.
Ftnalmente si arriva al grafico che viene eseguito col solito procedimen-
to.
Si noti alla fine della subroutine 30000 la piccola modifica finale: nella
linea 500 si ricorre alla subroutine 30000 e poiché la variabile F non è
mai stata finora usata, essa ha valore zero. Quando il Commodore 64
arriva alla linea 30055 (cioé dopo aver tracciato la prima retta) è costret-
to a saltare le linee 30060 e 30070 rispettivamente di attesa e di cancella-
zione dello schermo. Si ha perciò un RETURN ed un passaggio alla linea
510. Qui la variabile F (che è dunque un flag) viene posta uguale ad 1, e
perciò quando il Commodore 64 ha tracciato la seconda retta la linea
30055 viene ignorata ed esso rimarrà in attesa che l'operatore prema un
tasto, dopo di che cancellerà lo schermo e proporrà la continuazione o
meno del programma.

PA~ABOLA E RETIA

10 REM COP'T'I<: I GHT IN BASIC


15 REM VIA SEZZE 22 LATINA
18 REM TEL. 487631
20 CLR : F'R I tH" :·.e"
23 POKE53280,10 : POKE53281,3
25 BB=55296 : TV=1024
30 PRHHTABC 10) "~~l!l,FARABOLA E RETTA:"
40 PR I NT "ml r;JIJESTO PROGRAMMA CALCOLA IL VERTI CE DI "
50 PRINT"UNA PARABOLA DEL TIPO : "
60 PRINTTRB C15 )":fl2"
70 PRINTTAB Cl l ) "Y=AX +BX+C"
80 PRitH"lLE SUE INTERSEZIOt~I CON GLI ASSI , E LE"
90 PR I NT" EVENTUALI I t~TERSEZ I ON I CON UNA RETTA"
100 PR I NT "t~ELLA FORMA : "
110 PRINTTAB( 13 ) "~U=MX+G!"
120 PR INT "l!HIF !NE ESEGUI RW IL GRAFI CO SI A DELLA"
1:3 0 PR I tH" PARABOLA CHE DELLA RETTA. "
140 GOSUB5000
150 PRINT":1DAMMI IL VALORE DEI COEFFICIENTI DELLA"
160 PRINT"PARABOLA : "
170 INPUT":o:i=";A
175 I FA=0THENPR I NT Il WARABOLA DEGENERE! t~ON FARE LO se I occo ! Il : GOTO 170
1813 I MPIJT "l'JB=" ; B
190 It~PUT":O::=";C
200 PR I t-H "J.Il!E G!UELL I DELLA RETTA : "
210 INPUT"ll1=";M
220 I ~-lPUT" :W=" ; Q
230 PRINT":1JK - UN ATTIMO DI PAZIENZA!"
240 REM CALCOLO VERTICE
LA GRAFICA A BASSA RISOLUZIONE 23

250 VX=-B/(2*A>:VY=-CCB*B)-(4*A*C))/(4*A)
260 N=VX : GOSUB20000 : v1=N : v2=D
270 N=VY : GQSUB20000 : V3=N : V4=D
280 PRINT")'lIL VERTICE DELLA PARABOLA HA COORDINATE"
290 PRIMTTRB(8) "°'J./=C "Vl 11 / "V2"; "V3" /"V4")"
300 REM CALCOLO INTERSEZIONI ASSI
310 D=B ..'2-C4*A*C )
320 IFD<0THEt-lPF.:ItH"D'10N TAGLIA L'ASSE X" : GOT0370
330 Xl=C-B-SQR(D))/C2*A):X2=(-B+SQRCD>>l<2*A>
332 N=X 1 : GOSUB20!;J00 : i<3=t·I: >(4=D
334 N=X2 : GOSUB20000 :X5=M: X6=D
:340 I F:,:t=i<2THENPF<:INT"lE '. TANG. ALL'ASSE X IN X=":X:3" /"X4: GOT0370
35~3 PRitH"mAGLIR L ' AS:3E X NEI PUIHI:"
360 PF: INT":tQ( " :X:3 " / ":><4"; 0) "SPC ( 5) " ( "X5" /"X6"; 0) 11
::::70 PR I NT 11 :'1TAGL I A L ' AS:3E 'r' NEL PUl~TO : 11
:380 PRitHTABC10)"~(0 .: "C")"
390 GOSUB5000
4f1f1 PR I NT "::F!NCORA UI~ PO ' DI PAZ I E~1ZA ! 11
405 REM-RICERCA INTERSEZIONI PAR.-RETTA
410 DD=CB-M ) ·t2-4*A;f.(C-Q)
420 IFDD<0THEl·lPRINT"Q(ETTA E PARABOLA NON SI INCOIHRAt~O'': GOT0520
43~3 IFDD=0THEt~GOSUB6000 : GOT0520
440 DD=SQR CDD >= N1= CM-B-DD)/(2*A>=N=Nl:GQSUB20000:It=N =I2=D
450 N2=CM-B+DD)/ C2*A) : N=N2 : GOSUB20000=13=N =I4=D
460 N3=CM*Nl)+Q=N=N3 : GOSUB20000=I5=N:I6=D
470 N4=CM*N2 ) +Q : N=N4 : GOSUB20000 =I7=N:I8=D
480 PF:ItH"4..E INTERSEZIOMI FRA PARABOLA E RETTA"
490 PRINT"HA~ltKt COORDINATE : 11
5f10 PRIIHTAB(5) "Jl.F'l =("I 1 " / " I2" i" I5 11 / 11 I6")"
510 PRitHTAB ( 5) "JIF2=('' I3" / " I4" ; "17" /" 18" ) "
520 rnPUT " :~J.!UO I IL GRAFI CO" ; R$
530 I FLEFT$ ( R$ , 1 ) ::: "S" THEt·lGOSUB 10000 · GOSUB30000: GOSUB40000
540 GETA$ : IFA$=""THEN540
550 IMPUT":J•.llJOI PROl/ARE At~CORA" ; R$
560 IFLEFTS CRl , l)="S"THENRUM
570 PRINT"n.lK - CIAO!"
580 EMD
5000 REM-SUBROIJTINE D' ATTESA
5010 PRINTTABC 12) "J.l<PREMI Ut~ TASTO)"
502f1 GETA$: IFA$=" "THEt~5020
5030 F.:ETIJR~l
6000 F.H1-CALCOLO TANGENZA
6f1t(1 PF:ItH":tF:ETTA E PAF:ABOLA SOt~O TAt~GEt·ffI IN:"
6020 TX= <11-B) I ( 2llEA ) : N=TX: GOSUB200f10 : T 1=t~: T2=D
6030 TY=M*TX+Q : N=TY =GOSUB20000 =T3=N =T4=D
6040 PRINTTAB ( 10) 11 m=c "TI "/"T2" ,; "T3"/"T4") Il
6050 RETURN
10000 REM-TRACCIAM.QUADRO
10010 PF: I ~n 11 :J" : FORK=0T0999 : POKEBB+K, 5 : POKETV+K, 46 : NEXTK
10020 FORK=0T024 =POKEBB+19+40*K,2 =POKETV+19+40*K,115 =NEXTK
10030 FORK=0T039 : POKEBB+480+1C 2 : POKETl/+480+K, 114: NEXTK
10040 POKEBB+499.2 =POKETV+499,91 : POKEBB+17 , 0=POKETV+17 . 25
10045 POKEBB+599,0 =POKETV+599 , 24
1f1050 RETUF.:N
2f1000 REM-TRASFORMAZIONE IN FRAZIONE
20010 K=0
20020 K=K+t : T:::N*K : IFT- I MTCT> < .0001THEN20060
20040 IFKC50THEN20020
2f1050 D= 1 >N= I IH ( ~l* 100+. 5) / 1f1[1 : RETURt·l
20060 N=N*K : D=K:RETURN
30000 REM-TRRCCIAM.RETTA
30010 FORK=0T039 : X=K-19
24 LA GRAFICA A BASSA RISOLUZIONE

30020 Y=INT<M*X+Q)
30~330 I PO 121JRY(-12THEN 30050
30035 POKEBB+480+K -<Y*40),6
30040 POKETV+480+K -CY*40),42
30050 NE:<:TK
3(1060 RETIJRt~
40000 REM-TF;ACC I AM. PARABOLA
40010 FORK=0T039:X= K-19
40020 'T'= INT ( A*ì<-l'2+ B*X+C )
40030 IFY>120RY<-12T HEN40050
4(1035 POKEBB+480+f( -<'T'*40), 6
40040 POKETl/+480+K- <Y*40 :>, 42
40050 ~lEXTK
40060 RETURI~

Fino alla linea 230 viene descritto cosa fa il programma, e sono richiesti
i coefficienti a, b e e di una parabola del tipo

y = ax'+bx+c

e i coefficienti m e q di una retta nella forma

y = mx+q

In 175 viene eliminato il caso in cui a = O (che causerebbe in seguito


una divisione per zero), con la richiesta di un nuovo valore. Si ha poi il
calcolo del vertice della parabola, e le coordinate VX e VY vengono rese
frazionarie (per mezzo della solita s ubroutine 20000) e trasformate in

V1 V3
V2 e V4

In 310 viene calcolato il di scriminante D del secondo membro dell'equa-


zione della parabola. Poi, se D è negativo (e quindi la parabola non ta-
glia l'asse x), si ha un salto in 370 dove si passa al calcolo dell'interse-
zione con l'asse y.
In 330 si determinano le ascisse X1 e X2 dei due punti di intersezione
della parabola con l'asse x, e nelle due linee successive esse vengono ri -
spettivamente trasformate nella forma frazionaria X3/X4 e X5/X6.
In 340, se X1 = X2 (e quindi la parabola è tangente all'asse x), si ha di
nuovo un salto in 370.
Nelle linee 350 e 360 viene dato l'ordine di stampare le coordinate dei
due punti di stinti di intersezione con l'asse x.
In 370 e 380 si ha la stampa delle coordinate del punto di intersezione
della parabola con l'asse y.'

Esso ha coordinate (O:c), e no n ho ritenuto ncces\ario trasformare e in fra1ionc dato che


quasi sempre esso è già in forma intera (almeno nei normali esempi didauici).
LA GRAFICA A BASSA RISOLUZIONE 25

Nella 400 inizia il calcolo dei punti di intersezione fra parabola e retta:
OD è il discriminante dell'equazione di secondo grado in X che si ottiene
confrontando i secondi membri delle equazioni della parabola e della
retta. Se OD è negativo non si hanno intersezioni e si passa alla richiesta
di esecuzione del grafico (linea 520).
Se OD è nullo si ha tangenza fra parabola e retta, salto alla subroutine
6000 per il calcolo del punto di tangenza (dove le coordinate vengono
trasformate in frazione), e salto alla linea 520 per la esecuzione o meno
del grafico.
Se le prime due ipotesi non sono verificate, allora DO è sicuramente po-
sitivo e in 440 OD viene trasformato nella radice quadrata di DO. Poi
vengono calcolate le ascisse delle due intersezioni (N1 e N2) che vengono
immediatamente trasformate in frazioni .
Infine (linee 460 e 470) sono calcolate le corrispondenti ordinate N3 ed
N4, anch'esse sono trasformate in frazioni e sono stampati i risultati.

Alla fine le solite subroutine già note, con l'introduzione della 40000 per
tracciare la parabola dopo il tracciamento della retta 2 •

'Si sarebbe anche potuto usare soltanto la 30000 con un flag ( = O per la reua e = 1 per la
parabola) e con uno sdoppiamento della linea 30040.
CAPITOLO SECONDO

La grafica ad alta risoluzione

Ogni carattere che appare sullo schermo è costituito da una matrice di 8


per 8 puntini o pixel opportunamente accesi o spenti (cioé le stesse di-
mensioni del cursore lampeggiante).
Abbiamo già visto che in condizioni normali lo schermo può contenere
al massimo 1000 caratteri: ciò significa che usando più razionalmente i
pixel che costituiscono lo schermo, abbiamo la possibilità di tracciare
grafici utilizzando I 000 x 64 = 64000 punti.
Dalla guida di riferimento della Commodore si può ricavare la seguente
routine che permette di accedere alla grafica ad alta risoluzione, cioè alla
possibilità di operare con tutti i 64000 punti precedenti. Provate a batte-
re il seguente li stato:

100 BR=1024*8 :POKE53272 ,PEEK(53272)0R8


110 POKE53265,PEEKC53265)0R32
120 FORK=BRTOBA+7999:POKEK,0: NEXT
130 FORK=1024T020~3 :POKEK ,3: NEXT
140 Y=100 :FORX=50T0270
150 B=BA+320*INTCY/8)+8+INT(X/8)+CYRND7)
160 POKEB,PEEK<B>OR2tC7-CXAND7>)
1 70 t·lE:•:T
180 GETA$ : IFA$=""THEM180
190 PF: ItH ":1"
200 POKE53265,PEEKC53265)RND223
210 POKE53272,PEEK<53272)RND247
O X 319

o
BYTE O BYTE 8 BYTE 312
BYTE 1
...... J
......
...... RIGA D
......
······
BYTE 7 BYTE 15 BYTE 319

RIGA 1

RIGA 24

199 BYTE 7999


..___....._ __... '-v-'
COL. O COL. 1 COL. 39

Figura
28 LA GRAFICA AD ALTA RISOLUZIONE

Dando il RUN al programma vedrete lo schermo pieno di segni indeci-


frabili, divenire tutto nero e poi colorarsi gradatamente in colore ciano.
Successivamente verrà tracciato un segmento orizzontale al centro dello
schermo, in alta risoluzione.
A causa della linea 180 il programma si ferma in attesa che venga pre-
muto un tasto : poi viene pulito lo schermo e ristabilite le condizioni ini-
ziali.
Cerchiamo di capire come è organizzata l'alta risoluzione nel Commodo-
re 64.
Ogni pixel dello schermo corrisponde a un bit ( = 1 se acceso, = O se
spento), e perciò un byte conterrà le informazioni riguardanti 8 pixel. Le
informazioni relative a tutti i 64000 pixel dello schermo saranno quindi
memorizzabili in 8000 byte, secondo lo schema illustrato nella figura
precedente.
L'alta risoluzione permette di operare in un rettangolo (di dimensioni
320 x 200) con l'origine nell 'angolo superiore sinistro.
Tornando al listato, nella linea 100, viene indicata con BA la locazione
di memoria a partire dalla quale verranno immagazzinati gli 8000 byte
contenenti le informazioni sui 64000 pixel. La memoria dei caratteri da
stampare sullo schermo viene quindi spostata alla locazione 8192. Le lo-
cazioni 1024 - 2023 accoglieranno invece le informazioni riguardanti il
colore.
Nella linea 110 viene attivata l'alta risoluzione.
In 120 vengono azzerati tutti gli 8000 byte della nuova memoria dei ca-
ratteri, con una operazione analoga al CLEAR di schermo: infatti a que-
sto punto vedremo Io schermo annerirsi gradualmente.
In 130 vengono invece colorate in ciano le 1000 locazioni che regolano il
colore dello schermo. Se si desidera colorare lo schermo con colore dif-
ferente, basta cambiare il secondo argomento della POKE.
Siamo ora in grado di operare con l'alta risoluzione.
Supponiamo di voler accendere un unico pixel con coordinate X, Y:

INT(Y /8) serve per determinare a quale delle 25 righe appartie-


ne il pixel;
INT(X/ 8) per determinare a quale delle 40 colonne appartiene il
pixel;
Y ANO 7 per determinare a quale degli 8 byte (della matrice
quadrata 8 x 8 bit) appartiene il pixel;
7 - (X ANO 7) per determinare a quale bit del byte appartiene il pi-
xel.

Battendo le linee 150 e 160 si otterrà l'accensione del pixel desiderato.


Nella routine precedente è stato inserito un ciclo FOR NEXT con Y fissa
e X variabile, in modo da tracciare un segmento orizzontale.
LA GRAFICA AD ALTA RISOLUZIONE 29

Le ultime linee 200 e 210 ripristinano le condizioni iniziali riattivando la


bassa risoluzione.
Dopo questa breve introduzione sulla grafica ad alta risoluzione, possia-
mo elaborare un programma completo in grado di tracciare grafici di
funzioni con risultati nettamente superiori a quelli ottenibili con i listati
precedenti.

100 REM COPYRIGHT IN BASIC


105 REM VIA SEZZE 22 LATINA
108 REM TEL. 487631
110 CLF:: PRitH":J"
120 FORK=0T01 : POKE53280+K , 3 : NE:>a : PRHIT"f:il"
130 ~J$=" •rmn"
140 FS="r:il~ Qllll !!!! :fllllll:::~ !!!! 91111:::~ !!!! Qllll:::~ !!!! :t!lllll:::~ !!!!
150 G$=":i1:::~ :0 1111 !!!! ;::~ !!:~11111~ !!!! :~11111:::~ !!!!! ;::~ :~11111 !!!! ~ :fllllll !!!!"
160 F:$=" ;J~ :f.11111 !!!! ~ J.11111 !!!! ;::~ :lllllll 01111 !!! I :f.11111~ !!!! ;::~ !!"
170 A$="~~ :lllllll !!! ~ dlll!ll !!!! ;::~ :f.11111 dlllll !!!! ;::~ :01111 !!!! ;::~ !!!!"
18 ~3 I$=" lii~ 01 01 :liii )I.li dli !!"
190 CS=" K~ J'llllll !! )1.11111:::~ !!! :~11111~ !!!! Ulllli:i !!!! :dlllll:::~ !!!!"
200 0$=" ·~ :,.11111 !!!! ~ )'11111 !!!! ~ :01111 !!!! ·~ )'11111 !! ·~ :f.11111 !!!!"
2H) U$:::"::~ !!! :Il 01111 !!! ~ :~11111 !!!! ~ :f.11111 !! ;::~ l'.11111 !!! ;::~ :P.11111 !!!!"
22(1 N$="~;::~ !!!! ~ Jl.11111 !!!I ~ :dlllll !!!! ::~ :01111 !!!! ~ :'11111 !!!! ::~ :l llllll !!!! ::~ !!!!"
230 2$= Il f:il~ !!:lllllll i.i !!!!l'.11111 ·~ !!!! )'11111 ·~ !! )1.11111:::~ !! )11111::~ !!!!"
240 DU=" ::~ !!!I ~ !!:~111111:::~ !!! ~ !! ~ !!:f.111111~ !! ;::~ !!!! :::~ !!:fllllll::~ !!!I ::~ !!"
250 PRINTTAB(4)G$W$RSWSA$WIF$WSIS~t CS W$0$
260 PRIMTTAB ( 17 ) " :slfJ"DI $
27~3 PF: I tHTAB ( 3) "~~!" F$~J$1_1$~Jnm·J$Z$~J$ I $l·1$0$l.J$1~$t·J$ I$
280 PR nn Il r:ooc: I PER I STRUZ I OtH o IJM TA::;TO C!UALS IAS I ) Il
290 GETC!$ : I FQ$=" "THE~l290
3En3 IFOSO" I "THEM660
310 PRHlT"::T.iUAt·m o TE LO CHIEDE:.F.:O''BAT TI LA FUMZlONE:."
320 PRitH"TEt·lENDO PRE SE t~1E CHE L '' ItK:OOH ITA DEVE"
330 PR I tH "ESSEI':E SEMPF:E LA " : FORK= 1T02000 : ~lE>n
34~~1 FORK= 1TO15 : PF~ I NT "l:!f.llll" TAB ( 17 ) " " : FORJ= 1T02[1(1 : NE><T
350 PF: HlT":=i~PJ"TAB ( 17) "r~" : FORJ=1 T0200 : t·lrnT : ND(T
360 PF: ItH":~ SE LA :x: E·" UM AMGOLO ·' LA ItHEt·m rno ·" "
370 PRitH"ESPRESt:A Hl": FOF:l<= l T020ln3 : MEXT
380 FORl-'. =1 T015 : PRINT"~•11!l91~W"TAE: ( 13 )" " : FORJ=l T0200 : tlE::<T
390 PRINT"~lPmtl~l"TAB ( 13 ) "RADIAtHI": FOF:.J=l T020l1 : t·lEXT: ME::<:T : Pi<:ItH
4(n3 FOF:K= 1T04~1 : PR I ~n Il 11'1" .: : t·lE>'.T: PR I tH
41 ~3 PF: I tH Il f:il:f.l C!UA~mo AVF.:O ·' F I t~ I TO IL GRAFI CO .. PF:EM I Il
420 PfdNT" IL TASTO" : PF: INTTAB <12) "~'.F: IJ M - S T O P"
430 PRitH"f:il:~ DAI UN COLPETTO SECCO SUL TASTO"
440 PRINTTAB ( 1 :3 ) ":::~R EST OR E" : PF:I~H
4513 FOF:I(= 1T040 : PF~ ItH" :il"w" .: : ME::<T : PP HH
460 Pf':ItHTAB< 11) "f:il:~l<PREMI Ut·l TASTOì"
470 OETQ$ : IFC!$=""THEM4 70
481) PRitH":J I10PO Al/ERMI DATO LA FUMZ IONE .. DOVRAl"
49~3 PR ItH Il F I S:3ARE LE ASC I s:::E ( MIt-1! Mfl E MA:::s It1A ) "
500 PR IMT" EtHRO CUI l/UO I \IEDEF:E Lf1 FUNZ IOt·lE. "
510 PRIMT" :9J L ' ItHERVALLO SULLE ORDIMATE E' AUTO··"
520 PR I tH "MAT I CO : LE ESAL TERO ,. O F: I DIJRRO ,. I t·l MODO"
53f1 PR IMT "DA OTTEMERE SEMPF:E IL M!OLI OR GF:AF I CO"
540 PF:IMT"POSSI BILE."
550 PRHlT" :~ PEF'. IY" : FOF:l<=l T05i30l1 : ~lD::T : PF:Hn
560 FORI<=! T01 5: PF: HlT"l:lfll!l~lPltl~:[llll!l~"TA:E: ( 10) " " : FOF::J =1 T021::K1 : t·lE>'.1
570 PRHI T "~~00009.1'1f~l"TAB( 10) "ATTEM Z lOt~E ! " : FORJ=l T020(1 : t~ Ei<: T : NE>\T
580 PRitH")'J NELL '"HlTERVALLO CHE DEVO GF:AFICAF:E"
30 LA GRAFICA AD ALTA RISOLUZIONE

590 PF: I t-n" NOt~ CI IIE'./Ot~O ES::;ERE ASI tHOT I \IERT I CALI "
60~3 PRINT"~ GL I ASS I CARTESIANI LI TRACCERO ' "
610 PRINT"AUTOMATICAMENTE NELLA POSIZIONE GIUSTA."
62'i:1 PI::! tH " :L'J SE t·IOt-1 LI './EDRA I \IORRA · · DWE CHE ESSI"
630 PR ltH "NOt·I F.:I ENTRAtKt NEL CAMPO "il S I:E: I LE. "
640 PRitHTAB(9) ":ml:Ll.l<PREMI Ut~ TASTO.J"
651Z1 GETG!:t =IFQ$="" THEN650
660 PR ItH "'.']BATTI LA FIJ~IZ IONE : "
670 I t·IPUT" ~Lll~Jr' = " .; Y$
6813 PR I tH" :Jl!lll1~1?2f1 DEl·"Ft·IA ( )-:; ) =" 'T'$
690 PF.: I MT "GOT0720~"
700 POKE198,3 :FORK=0T02:PQKE631+K,13 :NEXT
710 rnn
720 ItEFFt~A (X)=::...; 'f-2*::;I t·I ( :>()
730 POKE198,0 :D IMY(320)
740 PF.:ItH":1 OK ORA DIMMI LE ASCI::;::;E Mlt~IMA E"
750 PRitH "MAS:3 IMA CHE './UtJI VEDERE SULLO SCHERMO."
760 PRHITTAB< 15) "~tx: MHI = ".; : rnPUTXl : Xl=ItH C>( l)
770 PF: I tHTAB ( 15 ) "'li< MA:X: = ".; : It·WIJl ><2: X2= ItH (1(2)
780 IF:<2<=Xl THEM740
790 PF:ItHTAB<9) " 'Ml!JJt~ ATTIMO DI PAZIEt~ZA'"
800 DX= C>.'.2- Xl )/320
810 FOF.:K=f1T0319
820 >::=>:: 1 + K *Ir::~
830 'r' (I<) =F~lA ( ;:.: )
84'i:1 IFYCK >>MATHENMA=Y CK>
850 IFY (K)(M ITHENMI=Y CK)
860 ~lE ><T
8713 MA=ltH <MA*10 ·t:3+. 5)/10t3
880 M.J:= I tH CM1*101'.3+. 5)/ 1131'3
890 DY= O: MA- Ml )/200
%113 PRINT ":1"
910 IFX1C=0ANDX2> =0JHENAY=INTC320*Xl /CX 1-X2> +.5 ):GQT0930
92f1 F'r'=l
930 IFMA>=0ANDMI C=0THENAX=INTC200*MA/CMA-Ml)+.5):GOT0950
940 FX=l
950 BA=1024*8 =POKE53272,PEEKC53272>0R8
960 POKE53265.PEEKC53265)0R32
970 FORK=BATOBA+ 7999: POKEK,0 =NEXT
98~ FORK=1024T02023=POKEK.3: NEXT
9;90 IFFX= l THEt~le:110
1000 FORX=0T0319=Y =RX:GOSUB1110 :NEXf
1010 IFFY=1THEN103 0
1020 X=AY :FORY=0T0199:GQSUB1110 :NEXT
1030 FORX=0T0319
1040 Y= I NT ( Y(X) / DY+. 5) : I F'1'(- 990RY)99THEt-l 1060
1050 GOSUB 1090
1060 t~E XT
1070 GETA$ : IFA$=" "THEtH070
1080 Et~D
1090 REM ROUTINE DI STAMPA
1100 Y=100-'T'
1110 B=BA+320*INT CY/8) +8*INT CX/8) +(YAND7)
11 20 POKEB , PEEKCB>OR2tC7- CXAND7 ))
1130 RETURN .

Fino alla riga 290 viene visualizzata la scritta GRAFICO DI FUNZIONI e


il programma si arresta in attesa (he venga premuto il tasto I (nel caso
in cui si desiderino le istruzioni), o un tasto qualsiasi per saltare diretta-
LA GRAFICA AD ALTA RISOLUZIONE 31

mente all'introduzione della funzione da presentare graficamente.


In 310 - 650 sono contenute le istruzioni che presentano la particolarità
di far lampeggiare alcune parole per richiamare l'attenzione del lettore.
Nella linea 670 si deve battere la funzione che viene successivamente me-
morizzata nella linea 720 con il metodo seguente.
In 680 viene cancellato e stampata la linea 720; in 690 viene stampata la
scritta GOTO 720 e il cursore è riportato in HOME.
Nella linea 700 vengono forzati tre RETURN automatici che modificano
la linea 720 facendo ripartire il programma da quel punto.
Nelle linee 740 - 780 sono richiesti i valori delle ascisse entro i quali do-
vrà essere visualizzata la funzione. In 800 viene calcolato l'incremento di
ascissa corrispondente a due pixel adiacenti; nelle linee 810 - 880 vengo-
no calcolate tutte le ordinate dei punti da visualizzare, e fra essi vengono
determinati il valore più piccolo e quello più grande. In 890 è calcolato
l'incremento di ordinata corrispondente a due pixel adiacenti. Con que-
sto criterio il grafico verrà automaticamente dilatato o compresso in di-
rezione verticale in maniera da visualizzarlo sempre nel miglior modo
possibile.
Quindi lo schermo viene cancellato e nelle linee 910 - 940 sono istituiti
due flag FX e FY per controllare la presenza o meno degli assi coordinati
nel campo visibile.
Finalmente nelle linee 950 - 1080 si ha la routine per l'alta risoluzione,
già vista nel listato precedente. La subroutine da 1090 alla fine esegue
l'accensione di ogni singolo pixel.
Si noti che abbiamo eliminato quella parte della routine precedente che
ripristina la bassa risoluzione, in quanto con il RESTORE essa viene riat-
tivata automaticamente.
CAPITOLO TERZO

Matematica elementare

Occupiamoci ora di alcuni programmi di matematica elementare che


possono essere utilizzati con profitto anche a livello didattico in una
scuola secondaria inferiore.

MASSIMO COMUN DIVISORE E MINIMO COMUNE MULTIPLO

10 REM COPYR IGHT IN BASIC


12 REM VIA SEZZE 22 LATi tlA
14 REM TEL. 487631
16 CLF: : PRitH"::X:"
18 POKE 53280, 10 : POkE 53281,3
30 DIMF1(50 ), F2C50),F3(50 ), F C50)
40 PR ltHTAB ( 10) ":OO~ll!l::l1RSS IMO COt11Jt~ DI V I SORE!!"
50 PRINTTAB<, 20)" 'lPJ~l!!I "
60 PR I tHTAB ( 1€1) " :Pll'l ~1 I t~ I MO COMUNE MIJL r I PLO!!"
70 PRINT":Pl~Il!l:Pll!l:l!l" : G0:31JB1€10013
:3€1 PF.: JtH" :J1UESTO PROGRAMMA TI SPIEGA COSA SONO IL"
90 PF:ItH"M. C. D. O IL M. C. t1. DI DUE O TRE NUMEF:I."
100 rnPUT" :~M·/UOI TF.:ATTARE 2 O 3 t·IUMERI " .: R
110 IFF.:=3THENF=l
12€1 IFR>3THEt·I ~ 00
130 PF.:HIT":l'.1·/IJOI CALCOLAR~IE IL M.C.D. O IL M.C.t1.?"
1*3 I t·lPIJT "JQBATT I 1 OPPURE 2" .: F:
150 IFFD2THEN140
160 IFR=2THENFF=l
170 rnPUT ":JJUAL ' E,· IL PRIMO t~UMERO" ; tH
180 I t~PIJT" :a:: I L SECOt-WO" ; N2
190 IFF=l THHlit·IPUT":e.:: IL TERZO" i N3
200 IFFF=1THEN1000
MATEMATICA ELEMENTARE 33

205 REM-ROUT INE PER M. C.D.


210 M=Nl : GOSUB11000
220 FORK=1TOT : Fl(K ) =F ~ K ): Fl=T : NE X TK : T=0
230 PR I tH ":1::<11 L. 1" t~Ut1EF:.O!!!! "t~ 1 " HA "F 1 " DI 0.,1 I SOF:. I : " : PR I tH
240 FORK=lTOFl ' PRINTFl CK>; : NEXTK
250 M=N2 : GOSUB11000
260 FURK=l TOT : F2lKJ =F tK>'F2=T : NEXTK : T=0
265 PRitH
270 PF:. HIT"JJ::~IL 2" ~llJMERO!!!! "t~2 " HA "F2" DI VISORI : " : PRHIT
280 FORK=lTOF2 : PRINTF2lK >; : NEXTK
290 IFF=0THEN340
300 M=N3 : GOSUB11000
310 FORK~1TOT : F3 (K) =F < K ): F3=T : NE X T K
3 15 PR itH
320 PF: ItH" :'J~ IL 3" t·IUMERO!!!! "N3" t·IE HA "F3 " : " : PRitH
330 FORK=1TOF3 · PRINTF3 <K>; : NEXTK
340 PRINT : FOR K =1 T 040 : PRIN T" ~' ' ; : NEXTK
350 PR itH " :' .B CF.: IVILI ORDit·IATAMEtHE ::;IJ UN FOGLIO"
360 PR ItH " COME LI VEDI SULLO SCHERMO E •.••• "
370 GC.1:31JB 1000~3
380 PRitH " ::FILCIJtH :lDI "I I SORI!!!! SONO :COMUtH!!!! A TUTTE E"
390 PRHITF+2" LE LISTE. "
400 PRHIT"mL Pru ·· ORAt~DE DI ES:3I E' IL ::~·1ASSIMO!!!!"
410 PRINT"COMIJM DIVI SORE."
420 PRitH" :' Jl DI\IISORI COMUNI :30t40 : " : PRitH
45 0 REM-RICERCA DEL M. C.D.
460 IFF=lTHENFORH=lTOF3
470 FORJ=1TOF2 : FORK=1TOF1
480 IFF=0ANDFl t J >=F2<K> THENP=Fl (J) : PRINTF1 (J);
490 IFF=1ANDF1 CK) =F2 CJ >ANDF2 CJ >=F3 CH) THENP=F1 CK) :PRINTF1 CK);
500 t~E:i<TK: t~E :x: T.J
510 IFF=lTHENNEXTH
520 PF.'. I tH : FORK= 1T04t1 : PR I tH "•"; : t~EXTK
530 PF.:ItH" .' !lIL PILI ' GRAMDE FRA ESSI E" '
540 PF.:ItHTAB ( 16) "~a~"P"::"
550 PR ItH " JUl!l:::HE RAPPF:.ESEtHA APPUNTO IL 11. C. D. "
560 PRINT"CERCATO."
570 I t~PUT" :'J·.I U OI PROVARE A~ICORA" ; R$
58f1 IFLEFU CR$ , 1 >= "S "THEN80
590 PRitH"IIK - CIAO !"
600 END
1000 REl1-ROUTINE PER M.C.11.
1010 PF:. HH":1I PRIMI 5f1 MIJL TIPLI DEI "F+2" NUl1EF:.I"
1020 PR:I NT" ::; Ot~O : "
1025 PRrnT"'1:COPIALI SU Ut~ FOGLIO!!!!"
1030 D=Nl : GOSUB1 2000
rn40 PRrnT" :l!l::~·1UL TIPLI DI "Nl "~" ;
1050 FORK=1T050 : F1 CK> =F<K) : PRINTF1 CK ); : NEXTK
1060 PRI NT : GOSIJB10000 : D=N2 : GOSUB1 2000
107(1 P F:. It.ff " )IJ::~·1UL TIPLI DI " t~2"~" ,;
1080 FORK=1T050 : F2 CK) =F (K): PRINTF2 CK); : NEXTK
1090 IFF=0THEN1130
1100 PRINT : GOSUB10000 : D=N3 : GOSUB12000
11113 PRitH":~l:~·lUL TIPLI DI "N3"~" ;
1120 FORK=1T050 : F3 ( K) =F CK): PRI NTF 3(K); : t-iEXTK
11 30 REM-CALCOLO MULTIPLI COMUNI
1140 PRitH : Go::;IJB1t1000 : PRitH":'J·~ELLE " F+2 " LI STE DI :l1ULTIPLI!!!! CE t~E "
11513 PF: ItH" :30t~O ALCUNI :~OMUMI!!!! . "
1160 PRltH " '1IL PILI ·' PICCOLO DI ESSI E' IL :l1IMIMO~"
1170 PRitH"COMUt·lE MULTIPLO CERCATO :"
1175 PR'. ItH" '1~JN ATTIMO DI PAZIEt~ZR ! !!!!!"
1180 I FF=1THENFORH=1T050
34 MATEMATICA ELEMENTARE

1190 FORJ=1T050·FORK=1T050
1200 IFF=0ANDFl(J)=F2CK>THENP=FlCJ):GOT01250
1210 IFF=lANDFl(K)=F2(J)ANDF2(J)=F3CH)THENP=FlCK):GOT01250
1230 NEXTK:NEXTJ
1240 NE>:.TH
1250 IFP=0THEN1400
1260 F'PHH: FOF.:K=l T040: PRHff"•" _;: NEi<Tf:::
1270 F'Rit·lT::WC( 12) ":~1!!f:t·1. C. M. ="P"::"
1280 PF.:Hn : FOF:l<=l T040 : PRHH"•" _; : t~D<TI<
1290 GOT057a:.:1
1400 PR I tH" :.'l3P I RCEtHE 1 IL t1. C. M. E·' TF:OPPO GRANDE : "
14113 PR I tH" :P.PEF.: 1 R OVAF~LO DO"/F.:EI PREt~DEF.:E I t·l COt·~::; I - "
1420 FPitH"DEF.:AZIOt·lE PIU ' DEI 50 MULTIPLI PEF.:"
1430 PRINT"CIASCUN NUt1ERO."•GOT0570
10f1130 PR I t-HTA:t: ( 12) " :P.l< PF.:Et1 I UN TF1::nc1) Il

1fH310 GETA:t : IFA$=" "THEt~lf10lf1


1a:.:1.;:1213 F.'.ETUF.:t-1
11000 REM-RICERCA DEI DIVISORI
11010 FORJ=MTOlSTEF'-1
11020 D=M/J •DD=INTCD>
11030 IFD=DDTHENT=T+l•F(T)=D
11040 NEXTJ •RETURN
12000 REM-RICERCA DEI MULTIPLI
12010 FORY=1T050
12020 DD=D*Y•FCY>=DD
12030 NEXTY•RETURN

Nella linea 30 vengono dimensionate 3 variabili con indice (una per cia-
scun numero che verrà preso in considerazione), più una quarta variabile
con indice che servirà da variabile provviso ria di lavoro nelle subroutine
11000 e 12000.
In 110 e 160 vengono introdotti due flag (F e FF) per stabilire se i nume-
ri da trattare sono due o tre, e se si deve calcolare il loro massimo co-
mun divisore e il_loro minimo comune multiplo.
Nelle linee 170-200 vengono richiesti i numeri da trattare: nelle linee im-
mediatament e successive si ha il calcolo del massimo comun divisore
mentre (se FF = 1) si ha un salto alla linea 1000 per il ca lcolo del mini-
mo comune multiplo.
Per ciascuno dei numeri da trattare viene adottato per il massimo comun
divisore il procedimento seguent e: il numero viene posto uguale ad M, e
nella subroutine 11000 esso viene di viso successivamente per tutti i nu-
meri interi da M ad 1.
Ogni vo lta che il risultato della divisione è uguale alla propria parte inte-
ra, allora vuol dire ch e tale risultato è un divisore di M. In tal caso la
sua esistenza viene memorizzata per mezzo del contatore T = T + 1, e il
suo valore vie ne immagazzinato nella variabile (ausiliaria) con indice
F(T) .
Dopo il RETURN si ha il trasferimento dei divisori dalla variabile F(T) '

FITJ o F(K) è la 'l''"a co,a: ,,. pc•r c''<'lltpio T = 5 l' K " 5. in l'llllillllbi i c·a,i \l' IT Ù ripl'-
'"110 dalla 111.:moria il 'alorc· co11 i'pomkntc' ad F(5).
MATEMATICA ELEMENTARE 35

alla variabile F1 (K) che memorizza perciò tutti i divisori del numero N1.
Poi T viene trasformato in F1 e viene azzerata la T per il ciclo riguar-
dante il numero successivo N2.
A questo punto (linea 230 e linea 240) possono essere stampati tutti gli
F1 di visor i (F1(1), F1(2) , F1(3), ... ) del numero N1.
Lo stesso avviene per i numeri N2 e (se devono essere trattati tre numeri)
N3.
Dopo alcune righe di spiegazione si arriva in 450 dove si ha la ricerca
d ei divisori comuni e la determinazione del più grande di essi.
Dalla linea 460 alla 510 si hanno tre cicli FOR NEXT annidati uno den-
tro l'altro. li più estremo di essi (va riabile H) agisce solo nel caso che si
debbano trattare tre numeri.
In 480 si effettuano i confronti fra i divisori (per individuare quelli co-
muni) nel caso che i numeri da trattare siano due, mentre in 490 si effet-
tuano i confronti nel caso che i numeri siano tre.
In entrambi i casi ogni volta che si trova un divisore comune, esso viene
posto uguale a P. Alla fine dei cicli automaticamente P corrisponderà
all'ultimo divisore comune, cioè quello con valore più alto .
Passiamo ora alla linea 1000 per la ricerca del minimo comune multiplo.
La subroutine 12000 determina i primi 50 multipli del numero D, imma-
gazzinandoli nella solita variabile (ausiliaria) con indice F(Y). Ogni nu-
mero da trattare viene posto uguale a D, inviato alla subroutine 12000, i
multipli vengono poi trasferiti rispettivamente nelle F1 ( K), F2(K) ed
F3(K) e stampati.
Dopo la stampa di ciascuna lista di multipli, per consentire all'operatore
di osservarli o di copiarli, si ricorre alla subroutine 10000 per fermare il
programma.
Si tratta ora di individuare il più piccolo dei multipli comuni e nelle li-
nee comprese fra la 1180 e la 1240 viene applicato lo stesso procedimen-
to di confronti con tre cicli FOR NEXT uno dentro l'altro.
A differenza di prima, i confronti vengono interrotti con un GOTO 1250
non appena viene trovato il primo multiplo comune, cioè il più piccolo.
Può però accadere che il minimo comune multiplo non venga trovato
perché esso si trova oltre i 50 multipli presi in considerazione per ciascun
numero.
In tal caso P = O e la linea 1250 fa effettuare un salto alla linea 1400
dove si spiega la situazione e si rinvia alla 570 per la richiesta o meno di
continuare.
Mentre la ricerca del massimo comun divisore non presenta alcun pro-
blema di scorrimento, consiglio il lettore di usare la routine per la ricer-
ca del minimo comune multiplo solo per due numeri, oppure per tre nu-
meri piuttosto bassi.
Infatti , malgrado l'apprezzabile velocità operativa del Commodore 64
(come di qualunque home computer), quando vengono eseguiti i con-
36 MATEMATICA ELEMENTARE

fronti con tre cicli di 50 valori ciascuno, il calcolatore deve eseguire ben

50l = 125000

confronti, impiegando un tempo di poco più di un'ora!


Per esempio impiega circa 14 minuti per individuare il minimo comune
multiplo fra i numeri 36, 25 e 90.
Ne impiega invece meno di due per determinare il minimo comune mul-
tiplo fra i numeri 5, 6 e 15. Dal punto di vista didattico questa limitazio-
ne può essere utile per mettere in luce la superiorità logica dell'uomo ri-
spetto alla macchina, straordinariamente veloce ma ottusa.

SISTEMI DI NUMERAZIONE

Permettono di trasformare un qualsiasi numero intero decimale, binario


o esadecimale in una qualsiasi delle altre due basi.
Per evitare all' operatore di premere continuamente il tasto RETURN, ab-
biamo preferito usare l'istruzione GET tutte le volte che era possibile.
Fa eccezione il caso in cui bisogna battere il numero da trasformare,
perché esso può essere costituito da una quantità variabile di cifre, ed è
dunque necessario ricorrere al solito INPUT.

10 REM COPYRIGHT IN BASIC


12 REM VlA SEZZE 22 LATINA
14 REM TEL . 48763 1
16 CLP : PRitff "~X:"
18 POK E 5 328~ . 10 : POKE5 32 8 1,3
25 DlMB <5 0 ), D ~5 0 ) ,B$C5ùJ,D$C 5 0)
::::0 PF: I tHTRB <:::)
":til•J::~:: I STEM l It I NUMERAZ I Ot·IE!I!"
40 PF: I tn" :~I•.F· uo I TF.:t=t:3FOF.:r·1t1F:E Ut·l t·IUMEf.::O I tHERO DA"
::;;c1 PF.: HIT "Ut·l A BASE AD UW ALTF.:A : "
6~3 P:dtH"l'J 1-DA DECIMALE A BHIAF.:Ju"
70 PF.:ltH":P.l 2-DA Blt·IAF.:IO A DECIMHLE"
:::13 PR 1tH" l!J 3-DA DECIMALE AD ESADEC 1MALE"
90 PRitH":ti.l 4-DA ESADECIMALE A DECIMALE"
1i;-:10 PP Hff" :•J ":i-DA BHIAR 1O AD ESADECIMALE"
110 PRitH")J.l 6-DA E:3ADECIMALE A BHIAF.:IO"
120 Pfdt-n" :OJIJALE SCEGLI ') "
1:313 GETA$ · I FAt=" "THEtl 130
140 A=VAL(A$ ) :JFA>6THEN10
150 ONAGOT01000,2000 , 3000,4000 , 5000,6000
16€1 GOT010
200 REM-F.:ICHIEST A DI CONTINUAZIONE
2113 PR I tH" :•1'l_!t·l AL TF:O t·IUMEF:O ? "
220 GETF:t : I FRS=" "THEt·l220
23t1 I FF.:S= "S "THEM 1O
24€1 PRitH":""J:1K - CIAO 1"
250 HID
1000 Rl M-TRASF.DECIMALE- BINAF.:IO
101t1 HlPUT "::'lBATT I IL t·IUMEF:O DECIMA LE" ; t·l
1020 GOSUB10000
MATEMATICA ELEMENTARE 37

1€131i) PR I tH ":l!ll L COF:R I SPOt IDEtHE t~UMEIW BI NRF: I O E ,· : "


1041J PF.:ItHTHI::(5) "l!l"B$
1(150 GOT020[1
2000 REM-TRASF .BINRR IO DECIMALE
2010 I t·WUT ":.1BRTT I IL t·llJM. BI t~AP I O" ; ~l$
2€121:::1 GOSIJB 11 ('.11::.H3
2030 PRINT"~IL CORRISPONDENTE NUMERO DECIMALE E' :"
2040 PF.: I ~HTAB ( 5) ")!J" t~
205€1 GOT0200
3000 REM-TRASF.DECIMALE-ESADECIMALE
3€110 rnPUT":'JBAl TI IL t·lUMERO DECIMALE" ; ~l
3€120 GOSUB 1017'00
3030 NS=BS : GOSUB15000
3040 PR ItlT" m L CORF.: l SP . t·lUMERO ESADEC I Mf~LE E' : "
30~i0 PF: I tHTAB ( 5) ":~l" EES
3€160 GOT0200
4000 REM-TRASF.ESADECIMALE- DECIMALE
4010 INPUT" :.1BATT I IL t·llJM. ESRDEC I MALE"; F.:$
4020 G0'3UB 16000
4030 NS=W$ : GOSUB11000
4041) PRIHT" :~JIL CORRISP . NUMERO DECIMALE E' :"
4050 PF:ItHTAB(5 ) "l!l"N
4 060 GOT0200
5000 REM-TRASF . BINAR IO-ESADECIMALE
51:::1113 I t.wlJT" :.1BAT TI IL t·llJMEF.:O BI NAF.: I O" .: t·l$
5020 GO::::UB 150€10
5fu0 PR un" m L CIJF:R ISP. t~UMERO ESADECIMALE E ,.· : "
5040 PRINT TABC5)" ~"EES
5050 GOTC03[1
6000 REM-TRASF . ESADECI MALE-BINARIO
6010 I t·WUT ":.1BATT I IL t·llJMEPO ESADECIMALE" ; RS
60213 GOSUB l 61X H)
60313 PR ItH" ~IL CORRI SPONDEtHE ~l lJ MER O BHlAF: I O E... : "
604 0 PPINTTABC5 ) "~"W $
61:::150 GOT0200
10000 REM-TRASF.DECI MALE-BINARIO
10010 K=0 : I n i = 1THENBS=" 1 " : RETURt·l
1[1020 t·l=t·l/2
1€1f13i;:1 K=K+ 1
10040 IFN=INT CN>THENB CK>=0:GOT0 10060
10050 BCK)=l
1[1060 t·l= I NT ( ~l )
10070 IFN=1THEN10090
1[1t1f:~I) C10TO 1002€1
10090 FORJ=KT01 STEP-t:BSCJ)=STRSCB( J )): BS(J)=RIGHTS(B$(J),1)
10100 BS=BS+B$CJ) : NEXTJ
HH 11;:1 BS=" 1 " +BS
101213 F~ETURt4
11000 REM-TRASF.BINARIO-DECIMA LE
11010 L=LE '~rn$)
11020 FORK=lTOL
11030 BCK)=2tC L-K >
11040 DS(k)=MlD$( N$,K,1)
11 04 5 I FVRL O: D$ ( f::) :1 ) 1THEt·lPR I tH " :..i~F:F.:O F:E ! ! " : GOT02 ~'.1t1
11050 DO:K)=VAL([l$ (K))
11060 C=BCK>*D<K>
11070 M=N+C
1108 13 t4Ei<TK
11091:'.I RETIJRN
15000 REM- TRASF.BINARIO-ESADECIMRL E
151310 L=LE~l(~l$ )
15011 L l=L/4: L2=1MTt L1) : LL=L1-L2
38 MATEMATICA ELEMENTARE

15012 IFLL=0THENLL=4:L2=L2-1
15014 IFLL=.25THENLL=1
15016 IFLL=.5THENLL=2
1501 8 IFLL=.75THENLL=3
15020 tU= "(n30" +t-U:
15030 FO ~K=0TOL2
15040 B$=MIDSCN$,LL+4*K·4)
15(150 I FB$=" 1::1000" THHff:t= "O" : GOTO 1521 O
15060 I FB$=" 00'~1 l "THEt~E$=" 1 " : 01JT O15210
15070 I FB:t= "001 \~" THHlES==" 2" : GOTO 1521 O
l '.513:::ij I FB$=" 0011 "THEt·lE:t=" :;:: " : GOTO 152113
15139() I FB$= "(1100" THEt·~E :t=" 4" : GOTO 1521 13
15100 IFB$="0101 "THEt·lE:t=="5": GOT01~5210
151113 I F- f::t= "0111::1 11 THEt·lES=" 6" : GOTO 1521 O
l '.5120 I FB:f:::o." (1111"THEt·l E$="7" : GOTO 15211Z1
151 30 IFB$=" 10(10"THENES="t:" : GOT0152113
15140 I FBS=" 11:'.101 "THEt·lE$="9" : GOTOl'.5210
J 5150 11
I FB$=" 101(1"THEt~E$= A" : OOT015210
1~; l 6(1 I FB$"'" 1(111 "THEt·lES=" B" : GO fO 1521 C1
15170 IFBS=" 1113(1" THHlE$="C" : GOTO l 5210
151813 IF:E:$=" 11(11 "THEt·lEJ="D": GIJT015210
15191::1 I FB$= 11 rn" THEt-ff:s= E" : GOT0152 rn
Il Il

15201~1 IFB:t=" 1111 "THEt·lE r:= "F" : GOT015210


15205 PF.: I tH ":~~-EF:F.:OF.:E I I " : GOT020(1
15210 EES=EES+ES
15;;::20 t·irnn::
152313 F.:ETUF:t·l
16000 REM-TF.:ASF.ESADECIMALE-BINAF.:10
16(11(1 L=LEtl<RS>
16132i.'.t FOF.:K= lTOL
16030 PS=MIDS(F.:$,K,1)
1604(1 I FP$=" O" THEtK•S=-" 000(1" : GOTO 162013
16W.30 IFF'S=" 1 "THEtlG'S="00li1": GOT016200
1606(1 I FP$= "2" THHWS=" 001 (i" : GOT016200
16070 I FP:t ~: "3" THEt·lC'S= "01::111 " : GOTO 162CH3
160:::0 I FP$=" 4"THHlC!:t="O10(1" : GOTO 162(:.10
1609(1 I FPS= "5 "THEt·llJ.$=" (1101" : GOTO 162(10
16l(Hj IFP$= 11 6"THHl0$= 11 1::11 JO": GOT0162(10
16110 IFF'S="7"THEt·l0$="01l1": GOT0 162 1::11:.;
161213 I FP:t= " ::; "THEt·lC1$=" 11)(1(1" : GOTO 162(10
16131::1 I FF·:t= "9" THEt·JC!$=" 1(101 " : GOTO 16213i3
16 140 IFPS="A" THEt-10$::::" 1010" : GOT016201::1
16150 IFP$="B"THEt·l0$=" 101 l." : GOT0162Cn::1
16160 I FPS=" C" THEt·W$=" 1100" : GOTO 16;;::0 i~1
1617(1 I FP$= "D '' THEt·l0$=" 1101 " : GOTO 16200
161€:0 IFP$= "E "THEt·l0$=" 111C1": GOT016201:,i
16190 IFP$="F" THHK!S=" 1111" : OOTO 16200
161 95 F'F: I tH" :~JttF.:F:OF.:E ! ' " : GOT0200
16200 l·J f.=l·J$+0$
162 1O tlEi<W
16220 F.:ETUPt·l

In 25 vengono dimensionate con una certa larghezza quattro variabi li


(due numeriche e due di stringa) , poi viene stampato un qu adro in cui
viene assegnato un numero a ciascuna delle sei trasformazioni che è pos-
sibile richiedere operando sulle tre basi di numerazione, e viene posta la
domanda sul! ' opzione desiderata.
MATEMATICA ELEMENTARE 39

La linea 130 costituisce un ciclo che il Commodore 64 percorre conti-


nuamente (dando l'impressione che il programma si fermi), fino a quan-
do non viene premuto un tasto.
In 140 la stringa A$ viene trasformata in variabile numerica e se il suo
valore supera il numero di opzioni possibili si ha un salto in 10 e il pro-
gramma ricomincia da capo .'
Se ciò non avviene, a seconda del valore di A si ha un salto alle linee
1000, 2000 etc .
Esaminiamo anzitutto le subroutine di trasformazione situate dopo la li-
nea 10000.
In 10000 si entra dopo aver battuto il numero decimale N.
Se N = 1, viene posto 8$ = 1 (8 è il numero binario che la subroutine
deve elaborare), e si ha il RETURN.
In caso contrario viene applicato l'algoritmo classico usato per trasfor-
mare in binario un numero decimale: ·quello della divisione successiva
per 2.
Se per esempio il numero decimale da trasformare è N = 13, si avrà

13~
1 6 2

~
Tutti i resti (presi al contrario come indicato dalla freccia), preceduti
dalla cifra 1, costituiscono il numero binario cercato .
Nel nostro caso si avrà 8$ = 1101 . Vediamo ora come questo procedi-
mento è stato tradotto in istruzioni Basic.
No n si può usare un ciclo FOR NEXT perché non si conosce la lunghezza
del numero decimale N. 2
li numero N viene diviso per 2 e il contato re K registrerà via via il nume-
ro di divisioni effettuate .
Poi (linea 10040) vengono confrontati fra loro il risultato della divisione
e la propria parte intera : se sono uguali vuol dire che il resto della divi-
sione è nullo, viene memorizzata la cifra O in 8(K} , e si ha un salto in
10060. In caso contrario c'è resto uno, e viene memorizzata la cifra 1 in
8(K).
Poi viene presa in considerazione solo la parte intera di N (cioè il risulta-

Si noti che a causa del CLR si evita l'errore di rid imensiona mento delle variabili con indi-
ce.
'Si potrebbe però trasformare N in stringa , ma ho preferito seguire l' altra via perché cos i
se il numero N contiene un cara ttere no n n u merico, esso a utomaticamente non viene accet-
tato.
40 MATEMATICA ELEMENTARE

to della divisione) e, se N = 1) si ha un salto in 10090 e le di visioni sono


terminate.
Se invece N è maggiore di uno, si torna indietro in 10020 e si ripete il ci-
clo.
Quando arriviamo in 10090 le divisioni sono terminate e i K valori

8( 1) 8(2) 8(3) ... 8( K)

raccolgono ordinatamente i resti (O o I) di ciascuna divisione nell'ordine


con cui sono state eseguite.
Con un ciclo FOR NEXT che va da K ad 1 questi resti vengono trasfor-
mati in stringa, uno alla volta, e l'istruzione

8$(J) = RIGHT$(8$(J),1)

è necessa ria per fare in modo che ogni stringa sia costituita da un solo
carattere.'
Viene contemporaneamente formata una stringa finale (8$) che contiene
tutti questi resti uno dopo l'altro, ma con ordine invertito.
Nella linea 10110 si ha infine l'aggiunta iniziale della cifra I alla stringa
precedente. Dopo il RETURN 8$ è il numero binario che doveva essere
calcolato.
Passiamo ora alla subroutine 11000 che trasforma un numero binario in
decimale. Anche qui ho usato l'algoritmo classico che consiste nel far
corrispondere a ogni cifra binaria una potenza di 2, nel moltiplicare poi
ogni cifra per la potenza corrispondente, e nell'eseguire infine la somma
dei prodotti così ottenuti.
Per esempio si abbia il numero binario:

numero binario
iniziale o o
potenze
corrispondenti 32 2· 16 2l 8 22 4 2' 2 2°

Il numero decimale è

1·32 + 1·16 +0 ·8+1·4+0·2+1·1 = 53

Applichiamo il metodo alla subroutine 11000: anzitutto viene individua-

Infatti tra,formamlo un numero in 'tringa .:"o r i,uh a pr.:<:.:du10 da uno \p;vio (p.:1
l".:,.:ntuak ,.:gno mrno), <' qu.:,to ..-o,1i1uirl'11b.: un impedimento per l"u ~o ddla \Ubrou 1in.:
ndla 1ra,forma1ion.: di un numero d<·.:imak in l"\<IÒ<'<:imak, <:om.: 'i '.:drà in \<:gui10.
MATEMATICA ELEMENTARE 41

ta la lunghezza L del numero binario N$ battuto in precedenza.


Poi in un ciclo FOR NEXT viene generata la potenza di 2 corrispondente
a ciascuna cifra (linea 11030), ed essa è memorizza ta nella variabile
B(K).
Si noti che l'esponente di 2 è L-K per cui le potenze hanno esponente
decrescente da L-1 a O.
Nella linea 11040 vengono invece memorizzate ordinatamente in D$(K)
tutte le cifre del numero binario N$, una alla volta.
In 11045 vengono rilevati eventuali errori: se la cifra è maggiore di I, il
calcolo si interrompe e si salta alla linea 200 per la richiesta di prosegui-
mento.
Quindi la cifra viene comunque trasformata i_n variabile numerica, e in
11060 la potenza di 2 e la cifra corrispondente (0 o 1) sono moltiplicate
fra loro ed il prodotto è indicato con la variabile C.
Ignoriamo per un attimo la linea 11070: arrivati al NEXT si ricomincia il
ciclo e viene calcolato il prodotto C della seconda potenza con la secon-
da cifra. E così via per tutte le cifre del numero binario.
Ad ogni passaggio per la linea 11070 la variabile N somma, al preceden-
te valore di N, l'ultimo prodotto C calcolato.
Quindi alla fine del ciclo FOR NEXT in N sarà memorizzato il numero
decimale corrispondente al numero binario N$ iniziale.
Passiamo ora alla subroutine 15000 dove N$ rappresenta il numero bina-
rio iniziale che però deve essere trasformato in esadecimale.
Le cifre esadecimali, come è noto, sono

Ol 23456789ABCD EF

corrispondenti ai valori decimali da O a 15.


Ciascuna di esse corrisponde ad un numero binario secondo la seguente
tabella
42 MATEMATICA ELEMENTARE

cifre corrispondente
esadecimali numero binario

o 0000
I 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
A 1010
B 1011
e 1100
D 1101
E 1110
F 1111

Cioè ogni combinazione possibile di quattro cifre binarie corrisponde


sempre a una e una sola cifra esadecimale.
Ora consideriamo un generico numero binario

1011001000

e lo dividiamo in gruppi di quattro cifre a partire da destra

I 0-1100-1000

e completiamo (quando è necessario) il primo gruppo a sinistra con degli


zeri iniziali in modo che anch'esso sia formato da quattro cifre

0010-1100-1000

Allora, sostituendo a ogni gruppo la cifra esadecimale ad esso corrispon-


dente in base alla tabella precedente, si ottiene

2C8

che è il numero esadecimale corrispondente a quello binario.


Ebbene, nella linea 15010 viene indicata con L la lunghezza del numero
binario N$, poi esso viene diviso per quattro e il risultato viene chiamato
L1, mentre la sua parte intera viene chiamata L2.
MATEMATICA ELEMENTARE 43

La differenza fra L 1 ed L2 può essere

o
oppure .25
oppure . 5
oppure .75

ed essa viene indicata con LL.


Ora possiamo dividere il numero binario in gruppi di quattro cifre, ed
L2 rappresenta il numero di gruppi completi, mentre LL (grazie alla tra-
sformazione imposta nelle linee 15012-15018) rappresenta il numero di
cifre del primo gruppo a sinistra.'
In 15020 vengono aggiunti tre zeri iniziali ad N$ allo scopo di poter
completare in ogni caso il primo gruppo quando esso non è completo.
Finalmente da 15030 a 15220, con un ciclo FOR NEXT vengono presi in
considerazione tutti i gruppi di quattro cifre, uno alla volta, e trasfor-
mati nella corrispondente cifra esadecimale.
Se un gruppo contiene altri caratteri che non siano O o I, si arriva in
15205 dove si ha la segnalazione di errore.
In caso contrario le cifre esadecimali E$ vengono sommate una all'altra
in modo da costruire alla fine l'intero numero esadecimale EE$ (linea
15210).
Rimane da esaminare la subroutine 16000.
Dopo aver calcolato la lunghezza L del numero esadecimale R$, con un
ciclo FOR NEXT vengono poste uguale a P$ tutte le sue cifre una dopo
l'altra a partire dalla sinistra.
Con un procedimento di trasformazione contrario al precedente ciascuna
di esse è sostituita da gruppi di quattro cifre binarie, che sono poi som-
mate ordinatamente fino a costituire il numero binario W$ che doveva
essere determinato.
Anche qui (linea 16195) c'è la segnalazione di errore nel caso che al po-
sto della cifra esadecimale ci sia un carattere illegale.
Dopo questa lunga parentesi sulle su broutine possiamo tornare ad esa-
minare le routine 1000, 2000, 5000, 6000, 3000 e 4000.
Per le prime quattro, dopo aver battuto il numero da trasformare si ha
un salto alla subroutine relativa, la stampa del risultato e l' invio alla li-
nea 200 per la richiesta di procedimento (con il solito procedimento del
comando GET).
Per le ultime due invece si ricorre successivamente a due subroutine.
Così nella 3000 il numero decimale viene prima trasformato in binario e
poi da binario in esadecimale.

' Nel caso in cui la differenza L1-L2 = O, dovrebbe essere LL = O, ma ciò provocherebbe
una segnalazione di errore in 15040 quando anche K = O. Ho superato l'ostacolo ponendo
LL = 4 diminuendo di I il numero L2 di gruppi completi.
44 MATEMATICA ELEMENTARE

Per inciso è proprio per quest'ultima trasformazione che le cifre del nu-
mero binario sono state private in precedenza (ultima istruzione della li-
nea 10090) dello spazio vuoto iniziale.
Analogamente nella 4000 il numero esadecimale viene prima trasformato
in binario e poi da binario in decimale.
li programma precedente risu lta abbastanza prolisso perché costituisce
una mera trasposizione degli algoritmi normalmente usati quando si de-
ve operare manualmente un cambiamento di base.
Spesso è invece più conveniente adoperare algoritmi completamente dif-
ferent i, che risultano più adatti alla logica di un calcolatore.
Vediamo come sia possibile ideare una routine per le trasformazioni di
base, molto più rapida, concisa ed efficiente della precedente .
Dall 'algebra è noto che una frazione N I D può essere sempre scritta nella
forma

NI D = Q + R I D

dove N e D rappresentano il numeratore e il denominatore di una fra-


zione o, ciò che è lo stesso, il rapporto tra due numeri. Q è il quoziente
e R il resto. In altre parole ciò equivale a dire, per esempio, che

7/ 2=3+1 / 2

Moltiplichiamo i due membri della prima uguaglianza per D e risolvia-


mo rispetto a R. Si ottiene

R = N-QxD

Ora osserviamo il listato seguente:

10 REM TRASFORMAZIONE DECIM./ESHDEClM.


2~::1 1.:,Li;: : PR I t-H" :.T'
3i;:1 M$= "01 2 345t .7)~: S•A:E:CDEF"
4i;:1 l t·IPUT "t·llJMH:O DECIMALE" , D
'.:•0 A= !Nh D/ 16 J
6[1 H:t=M I [1$ ( t 1$, D+ 1- l 6+:t1, 1 i +H:f:
70 D=A
:3t;:1 I FD>0T HEt1 5 ~1
'.:-40 F'F.:HITH:f
1[1t;:1 F'F.: I ~I r" :mtlCOF.:H .-, "
1 rn CiETO f: : I FC!:f=" "THHll 1i;:1
120 I Fì)$=" S" THEtf.::0

Nella linea 30 vengono definite in una stringa le 16 cifre della numera-


zione esadecimale, e in 40 viene richiesto il numero decimale D da tra-
sfo rmare.
MATEMATICA ELEMENTARE 45

li numero viene diviso per 16 e nella variabile viene immagazzinata la


parte intera della divisione (corrispondente alla lettera N dell ' uguaglian-
za prima ricavata, mentre il di visore D corrisponde ora al numero 16).
Nella linea 60 viene estratta da N$, con il MIO$, la cifra opportuna uti-
lizzando la suddetta uguaglianza.
In 70 e 80 viene continuato il ciclo di divisioni successive, dopo aver
scambiato D con A, fino a quando la variabile A diviene nulla.
In 60 ogni cifra H$ ricavata viene accumulata prima di quelle calcolate
in precedenza.
Alla fine si avrà in 90 la stampa di tutto il numero esadecimale H$.
Si noti che cambiando i due numeri 16 nelle linee 50 e 60 si può utilizza-
re questa stessa routine anche per trasformare un numero decimale in
un'altra base qualsiasi.

AREA E PERIMETRO DEI POLIGONI

Pensiamo anche ai più piccoli (molti lettori avranno figli o nipoti che
frequentano le scuole medie) con un programmino sonoro che non man-
cherà di stupirli.
Il programma permette di calcolare rapidamente area e perimetro di un

&
~t -------- - -- --- - - ---- -- -

~3 - - - - -- - - - --- - --- - --- e

~1 _____ ___ __ __ A
I
I
I
I
I I

~ .. I I
------------~ ---- - - - --:--- -
\ I
I I
I I I
'f. lf IH

Figura 8
46 MATEMATICA ELEMENTARE

qualsiasi poligono (purché non intrecciato), con un qualsiasi numero di


lati.
Basta fornire al Commodore 64 le coordinate di tutti i suoi vertici.
Prima di affrontare il listato analizziamo l'algoritmo usato per il calcolo
dell'area.
Consideriamo per esempio un quadrilatero generico ABCD (figura 8),
del quale conosciamo tutte le coordinate dopo aver fissato arbitraria-
mente un sistema cartesiano di riferimento.
Risultano determinati quattro trapezi rettangoli

ABFE, BCHF, DCHG, ADGE

la cui area, come è noto, è data dalla semisomma delle basi per l'altez-
za.
L'area del quadrilatero può essere ottenuta per mezzo della somma alge-
brica

E facendo i calcoli, si ottiene

Cioè

S = (y. + Y2) (x1 - ·xi) (y2 + y3) (X3 -x2) - (y3 + Y4) (X3 -X4) - (y4 + Y1) (x.-x.)
2

tutti i termini in cui x ed y hanno indici uguali, si elidono fra loro e ri-
sulta

s = X2)'1 +X3Y2 +x.y3 +x1y4- X1Y2-X2)'3- X3y4-X4Y1


2

che può anche essere scritta

S = (X2.Y1 +X3Y2 +X4y3)-(X1Y2 +x2y3 +X3y4) + X1y4-X4Y1


2

Si può facilmente dimostrare che generalizzando si ottiene (per un poli-


gono di n Iati)
MATEMATICA ELEMENTARE 47

n
EK (xk+Yk-1)- EK (Xk-1 +yk)+x1y"-x""'1
2 2
s= 2

formula scarsamente utile per calcoli "a mano", ma molto adatta per
un computer.
1 quattro termini a numeratore possono essere indicati con

"
Ot EK (XK+Yk-t)
2 I
" I
a2 = EK (XK-1 +YK)
l

03 Xt Yn
Q4 = X" Yt

e quindi l'area è data da

Si noti che scambiando le x con le y' si ottiene lo stesso risultato ma con


segno negativo.
Un tale scambio si verifica se consideriamo i vertici del poligono ruotan-
do in verso contrario. Ora possiamo passare all'analisi del listato.

10 REM COP YRIGHT IN BASIC


20 RE. M VIA ~EZZE 22 LATINA
30 REM TEL. 487631
41'.1 1_.LR · PR IHT''~I: ": S=54272
5t1 PIJkE53280, rn: F" Jl<:E5:3281 , 3
6(.1 A$=" f:flF:EA E. PEF: HlETPCI DE I POLI GOtH ::"
7 ~3 FORK== 1T0.32
80 PF: ItH" ;:m,llJ.l" :::Pc ( 5 )M !Il$ (A$ , 1 ' K)
90 GO SUB 1~n30
11~1121 NE:x:TK
11 t1 PR I tH" fl~l DI SEGt·JA SU UN FOGLI O Ut~ PUL I GOt·lO"
12t1 PF: I tH" .WUALS I AS I ( COt·JCAVO O CON VE ::so, PUF.:C.HE ' "
130 PF: IMT"~Kit~ rnTF:ECCIATO;o .. POI TRACCIA UN :3 ISTEMA"
140 PF:INT"DI A:::sr CARTESIANI (ARBITF:ARIO> 'E J::RTT I"
1 5~1 PF: I tH "LE CuORD I t~RTE DE I VEF.:T I e I OF:D I ~JATAMENTE"
I

161:'.l PR I tH "Ut~A DOPO L · AL TRA. "


170 PRINT"~ PER FI~IRE RIBATTI LE COORDINATE DEL"
1:::0 PR Hff "Pfd MO VEF.:TI CE. " : GOSIJB20tn3
260 REM INGRESSO COORD INATE
265 DIMXC1U0) , Y( 100 )
270 l=T+l : IFF=0THEN310
281:l PR I tH" :1'~ I CORDA ! ! PEF.: CHI UDEF:E IL POLI GOt-KI DE'./ I "
290 PF.:It·ff"BATTERE : '· PRINT:;PC(5;o ":~lx: =" :>::0; SPC0:: 20 ) "'r' ="'r't1
31;K1 G0:31JB41:h30
3 10 PR I tH" .l!Iff.;OORD I NATE DEL" T" " PU~ffO : "

Nd '~ll\O di '.:ambiall· gli 11u/ic1 ddk du,· 'ariahili .


48 MATEMATICA ELEMENTARE

320 rnPUT" J!Ix: ="; :<(T): GOSUB30013


330 I t·IPUT" :Plr' ·=" .. 'r' ( T) · GOSUK:0t30
~:41] IFT=lTHENX0=XCl)·Y0=Y( l ): F=l
35 ~:-t REM CONTROLLO CHIUSURA PQLIGONO
360 IFT>1ANDXCTJ=X0ANDYCT)=Y0THEN500
3713 GOT027(1
5~10 REM CALCOLO AREA
5W FORK=2TOT-1
52!Z1 Al=A l+X(K-l)*YC K)
530 A2=A2+Y(K-1)*XCK)
54.;:1 t·IE><TK
5~3~3 R3=>::( T-1 ) * 'r' 1~1
56~1 A4='r'(T-1 )*:x:tì
570 A=ABSCCA1-R2+A3-A4)/2)
600 PF.: I tH" :J:~lP.l. ,. AF.:EA DEL POLIGONO E' : "
61(1 PF.: I t·ff:3PCC13) "ll:t=t ="A
620 PR I tH : GO::;IJB4001Z1
640 REM CALCOLO PERIMETRO
650 FORK=lTOT-1
660 ;>:: 1= C:<U< + 1 ) - ;,-;( K)) ·t'2
67~1 'r'l =('r' •T +l ) -'r' (K)) 1'2
680 L=SQF:0<1 +','1 )
690 PP=f-·P+L
7(113 HE::<;Tf:'.
710 PF: ItH " J!I~E IL SUO PEF: H1ETP.O E' : "
715 PP=INTC PP*100+.5 )/100
720 PRHITSPC( 13) :!9'~P ="PP
11

730 PR I tH : GOSUB4i;:100
740 PR I m ":ii1a:...·uoI PROVARE At~COF:A ? "
750 GET1J$ : I FO$=" "THEH75~1
76(1 I FGI$= s" THEt·IRUt·l
Il

s 1(1 PR r t-n ":;:,l,1P1PJ:1K - c r AO ! 11"


:;i~11-.:1 Et-ID
1000 REM SCALA INI ZIALE
1010 POKES+24. 15
1020 POKES+5,9
1030 POKES+4 ,33
1040 READA :READB
1050 IFB=-1THENRESTORE :GQT01040
1060 POKES+l,A :PQKES,B
1065 FORJ=1T0100 =NEXTJ
1070 POKES+4 ,32:RETURN
1080 DATA1 7, 37, 19,63,21,154, 22,227
1090 DATA25,1 77,28, 214, 32,94, 34 , 175
1100 DATA-1 ,-1
2000 REM ATTESA
2010 PRINTSPCC12 )" ).ll!l(PREMI UH TASTO)"
2020 GETQ$ : I FQ:f:=" "THEN202(1
2030 PR I tH" :1" : RETURN
3000 REM BEEP
3010 POKES+24,15 :PIJKES+23.0
3020 POKES+5,25:POKES+6,68
3030 POKES+1,69 :POKES,99
3040 POKES+4 ,33
3050 FORJ=1T0100 =NEXTJ
3060 POKES+4,0 :POKES+5,0
3070 POKES+6,0 = ~ETURN
4~00 REM BARRA ORIZZONTALE
4010 PRitH"~" : FORK= l T040 : PF.:INT"e" ; : t~E X T : PRINT 11
:
11

4020 RETIJRN
MATEMATICA ELEMENTARE 49

Dando il RUN al programma vedrete comparire il titolo, ma una lettera


alla volta, mentre vengono eseguite delle scale musicali.
Dopo una breve spiegazione si devono battere le coordinate dei vertici
del poligono, e per ciascuna di esse viene emesso un beep sonoro.
Non appena il poligono è chiuso (quando sono ribattute le coordinate
del primo vertice), si ha il calcolo dell'area e del perimetro. Infine si ha
la richiesta di procedere o no per un secondo calcolo e, in caso negativo,
viene visualizzata la solita stringa finale OK-CIAO.
Essendo questo il primo programma contenente delle routines sonore,
analizziamo brevemente i criteri che le regolano.
Nella linea 40 viene memorizzato nella variabile 54272: occupiamoci pri-
ma della subroutine 3000.
Nella linea 3010 con la prima POKE viene regolato al massimo il volume
sonoro, mentre con la seconda POKE si effettua il reset dei controlli di
filtro e di voce.
In 3020 si fissano i parametri (ATT ACK - DECA Y - SUSTAIN - RE-
LEA SE) che costituiscono le caratteristiche dell'onda sonora.
Nella linea 3030 vengono stabilite le frequenze massima e minima (in al-
tre parole la nota) che dovranno essere emesse.
In 3040 viene invece fissata come forma d'onda quella a dente di sega.
In 3050 è introdotto un ciclo di ritardo che costituisce la durata tempo-
rale della nota. Infine il suono viene azzerato e si ha il RETURN.
Nella subroutine 1000 è invece generata la scala musicale che accompa-
gna il titolo: il procedimento di generazione del suono è analogo al pre-
cedent e, con l'unica differenza che i due valori di frequenza (A = alta,
B = bassa) vengono letti ogni volta dai DATA e dopo la lettura dell 'ul-
tima coppia di valori (-1, -1) si ha in 1050 un RESTORE e quindi una
rilettura dei DATA dall'inizio. Ciò permette di eseguire più volte la stes-
sa scala musicale.
Torniamo ora al programma con alcuni rapidi commenti.
In 265 vengono dimensionate le variabili con indice X ed Y e possono es-
sere trattati poligoni con un massimo di I 00 vertici.
Quindi, dopo aver definito A$, in un ciclo FOR NEXT sono prese in
considerazione successivamente le prime K battute di A$, viene emessa
una nota per mezzo della subroutine 1000, e viene cancellato lo scher-
mo.
li calcolo dell'area è ottenuto col procedimento già visto, mentre quello
del perimetro si ottiene semplicemente calcolando per ciascuna coppia di
vertici consecutivi la lunghezza del lato con la formula della distanza fra
due punti. li flag F serve per evitare di stampare le coordinate del primo
punto (linee 280-300) prima che esse vengano battute (sic!).
Infatti ho ritenuto necessario ricordare all'operatore quali sono le coor-
dinate iniziali, perché mi accadeva spesso di dimenticarle e di non riusci-
re quindi a chiudere il poligono.
CAPITOLO QUARTO

Ancora Inateinatic a

Proseguiamo la trattazione di programmi su argomenti matematici con la

SOLUZIONE DELLE EQUAZIONI ALGEBRICHE

Permette di individuare le soluzioni reali (se ce ne sono) di una qualun-


que equazione algebrica razionale intera .
Cioè di tutte quelle equazioni che possono essere poste sotto la forma di
un polinomio uguagliato a zero

f(x) =O
L'algoritmo che useremo rappresenta una variante semplificata del me-
todo di Newton (o delle tangenti), in cui le soluzioni vengono ottenute
attraverso un processo di approssimazioni successive (iterazioni).
Consideriamo una generica funzione algebrica razionale intera

y = f(x)
Le sue (eventuali) intersezioni con l'asse x rappresentano le radici reali
dell'equazione

f(x) =O
ANCORA MATEMATICA 51

Figura 9

Nella curva rappresentata nella figura 8 tali radici sono

x=a
X=~
X = 'Y
Fissiamo a piacere un valore Xo: ad esso corrisponde il punto a della cur-
va con coordinate

La retta tangente alla curva nel punto A ha coefficiente angolare

m = /'(xo)

corrispondente anche alla tangente trigonometrica all'angolo t'J.


Osservando il triangolo rettangolo ABC si ha inoltre che

AB
m = tgi'J = -
CB

e quindi si può scrivere che

AB
/'(xo) = CB
52 ANCORA MATEMATICA

Consideriamo ora il rapporto

f(xo)
f' (xo)

Si ha, per quanto detto,

f(xo) AB
CB
f' (xo) AB
CB

quindi effettuando la differenza fra x 0 e tale rapporto, s1 ottiene x,


(ascissa del punto C)

f(xo)
Xi = Xo- f'(xo)

Ripetiamo il procedimento prendendo il valore x , come nuovo valore di


partenza, e calcoliamo

e cosi via fino ad ottenere una successione di valori

Tale successione converge rapidamente verso una delle soluzioni (nel ca-
so considerato, verso la soluzione a).
li procedimento cade in difetto se il denominatore f' (x) <>i annulla per
uno dei termini della successione.
Può anche accadere che l'equazione considerata non abbia soluzioni rea-
li , oppure (ma molto raramente) che sia necessario un gran numero di
iterazioni.
Ora possiamo passare all'analisi del listato.

10 REM COPYRIGHT IN BASIC


12 REM VIA SEZZE 22 LATINA
14 REM TEL. 48763 1
16 CLF: : PR ItH" ::J:"
18 POKE53280, 10:POKE53281, 3
20 PR I NT "ii SOLUZIONE DE.LLE EClUAZ I ON I ALGEBI'~ I CHE"
30 PF:ItHTft8(7 ) "Y::Ot~ IL METODO DI t·jHffON~"
35 FORI<=! T040 :PRitH"•" ; :HE ~': r :PF: HH":O:"
40 INPUT" ~]UAL ··E' IL GRADO DELL ·'EQUAZIONE" ; G
50 DIMA <G> ,B(G- 1 )
60 PR HH ";:)}K - R I OUC I L'EQUAZ IONE SOTTO FORMA O I "
ANCORA MATEMATICA 53

70 PF:Itff"POLINOMIO UGUAGLIATO A ZEF:O,EO ORDrnA I"


80 PF:INT"TERMitH SECot~DO LE POTEtl ZE DECRESCENTI"
90 PRINT"OELLA l<."
100 PR ItH" mPO I FORNI se IMI I LORO VAL OR I : "
105 PRitff"!l <BATTENDO 0 AL POSTO DEI COEFFICIEtffl"
107 PRINT" EVEtffUAL.MEtffE t1ANCA~ffl)"
108 PRitlT
110 FORK::OTOG
120 PRINTK+l " " COEFFICIENTE =";: INPUTAOO
130 NE><TK
140 REM CALCOLO COEFF . DERIVATA
150 FORK=0TOG-1
160 B(K)=(G-K)*A(K)
170 t~EXTI<
180 PRHff";:J ORA BATTI UN VALORE DELLA X ItHORt~O"
190 PRINT"AL QUALE PRESUMIBILMENTE RITIENI Cl SIA"
200 PR ltff "Ut~A SOLUZIONE <O SE ~mN HA I ALCUNA"
210 PRINT" lt~DICAZIOtlE, UN VALORE ARBITRARIO ) ."
220 I t~PUT" 8<=" .: X
223 PR I tffTAB ( 9) ".ftJJt~ ATTI MO DI PAZ IENZA ! ;:"
224 T=0
225 P=0 :PP=0
230 T=T+l
240 REM CALCOLO VALORE DEL POLINOMIO
250 FORK=O roo
260 P=P+A~K)*X~(G-KJ
265 NEXTK:IFX =0THENP:A(G)
270 REM CALCOLO VALORE DELLA DERIVATA
275 FORK=0TOG-1
280 PP=PP+BCK>*XT~G-K-1)
300 NEXTK:IFX=0THENP P=BCG-1)
310 REM TEST ANNULLAMENTO DERIVATA
320 IFPP=OTHEN400
330 REM NUOVO VALORE PER L'ITERAZIC~E

350 REM TEST SOLUZIONE ESATTA


360 IFX=XXTHEN440
370 ~:;i< X
380 IFT) 100THEN480
390 aon;1225
400 PR ffi T")l}-!0 TROVATO LA DERIVATA t~ULLA PER"
410 PF.:INJi.'':!M'< =";..;
415 PRitff"!l PROVIAMO CON UN ALTRO VALOF:E INIZIALE"
420 INPUT" DELLA >~ ? " ; R$
430 IFLEFT$(R$,l ) ="S"THEN220
440 REM STAMPA RISULTATO
450 PRHff"~;O LU ZlONE l<="l<
460 PRitff"YJF:DINATA t~EL PUtHO ="P
470 PRltfl "lPERIVATA t~EL PUNTO ="PP
475 GOT0530
480 REM S OLUZ I ot-JE NON TROVATA
485 PRINT"::x;30RR't' ! ! "
490 PRitff"!l AL TERMINE DI 100 ITERAZlot-H NON HO"
500 PRINT"TROVATO ALCUNA SOLUZiot~E, MA SOL TANTO : "
510 PRHn "m~: = " )<
520 PRINT"Y:-00 ="P
525 PRitff"§'' (X) ="PP
530 I t~PUT "~ROVO Cot~ UN ALTRO I/ALORE O I ;-<" ; R$
540 IFLEFT$<R$ .• 1 >="S"THEN220
550 INPUT":!l'·/UOI CAMBIARE L'EQUAZiot~E" ;R$
560 I FLEFT$ ( R$, 1 ) =" S" THE~lRUt~
570 PR Itff ";:))K - CIAO "
54 ANCORA MATEMATICA

Nelle linee 40 e 50, dopo aver fissato il grado G dell'equazione, vengono


dimensionate due variabili con indice: la prima per ricevere i valori dei
coefficienti dell'equazione e la seconda per i coefficienti della corrispon-
dente derivata (di 1 grado inferiore e perciò con un coefficiente in
meno). '
Da 110 a 130 vengono richiesti dal C-64 i valori dei coefficienti
dell 'eq uazione. Da 140 a 170 vengono invece calcolati automaticamente i
coefficienti della derivata. Poi il C-64 richiede il valore X dal quale ini-
ziare l'interpolazione, e vengono inizializzate le variabili:

T = serve per contare il numero d ' iterazioni eseguite.


P = serve per memorizzare il valore di /(x) ad ogni iterazione.
PP = serve per memorizzare il corrispondente valore di f (x).

Da 240 a 265 viene calcolato il valore di f(x) ad ogni iterazione: inizial-


mente è P = O, poi a causa del ciclo FOR NEXT vengono calcolati tutti i
termini del polinomio uno dopo l'altro, ed ogni volta sono sommati a P.
Alla fine P corrisponde al va lore dell'intero polinomio f (x).
La condizione dopo il NEXT K della linea 265 è necessaria per il caso in
cui X = O, altrimenti si avrebbe f(x) = O (invece del termine noto).
Da 270 a 300 viene calcolato in modo perfettamente analogo il va lore
PP della derivata.
In 310 e 320 si ha il controllo della derivata e, se questa è nulla, si ha
l'uscita dalla routine con un salto in 400 dove viene richiesto un di verso
valore X di partenza. Nelle linee 330 e 340 viene fi ssato il nuovo valore
XX per l'iterazione successiva.
Se questo valore coincide con il precedente (linee 350 e 360), abbiamo
individuato una soluzione e si ha un salto in 440 per la stampa dei ri sul-
tati.
In 370 si ha il comando di trasformare XX in X per cominciare il nuovo
ciclo iterativo (nel caso che la soluzione non sia stata ancora trovata).
Per fermare le iterazioni quando le sol uzioni reali non esistono (o quan-
do il numero di iterazioni sarebbe troppo alto), si ha in 380 il comando
di saltare alla linea 480 dopo cento iterazioni,' per la stampa dei risultati
raggiunti fino a quel momento, e la richiesta di un nuovo valore di par-
tenza.
Provate a far scorrere il programma con equazioni di cui già conosciate
le soluzioni, oppure con equazioni reciproche (che ammettono sicura-
mente le soluzioni X = 1 oppure X = - 1).
Un altro programma più completo, perc hé fornisce un elenco di tutte le
soluzioni reali e complesse, è il seguente.

Se G r minore o uguale a 10, tale dimcn,ionamcnto può l'''ere diminato.


Ad ogni iterazione la 'ariabik T auml'nta di una unità gra1.ic al l'ontatorc po,to in 230.
ANCORA MATEMATICA 55

10 CLF.:
15 POKE53280,10 : POKE53281 , 3
20 PR Hff" :-JiF.'.AD ICI REALI E COMF'LES:3E DI Ut·l POLINOMIO"
3t1 PR I m" ::.~1,1 OUE::;rn PPOC·F:AMl·1A CALCOLA ~TUTTE!! LE"
41::) PRltH"F::ADICI DI IJt·l POLHlOMIO ESI "F:Es:;o SOTTO"
5€1 PF: I tH" LA FURMA
60 PF.' Hff" il~l!!l ~l N-1 t·l-2"
? e:1 PR HIT " X + A X + A X + •.•• +A = e:1"
:;;0 PF: Uff" 1 2 N"
90 PF::ItH" !l8F.'.t·l . E:. IL PF: IMO COEFF IC IEMTE E' =1 :::"
110 IEFFNACZ>=INT(1000*Z)/10 00
120 ~·R ltH ".,li!UUAL ·"E" IL GPADO DEL POL HlOM IO ? "
130 GEHl$ : IFt·l$=" "THHH3e:1
140 N="/AL Ctlf:)
1~50 PPltH":.".lBATTI I COEFFICIHffI : "
170 FORl=lTOt·l
190 PF: ItH ":~l::. OEFF ICI ENTE A ="
200 PR ltH 'UHHIHHHI" I; : IMPUT 'U fl" , A( I )
210 t·lD<T
220 PPitH":J"
250 IFN<>2THEN490
26e:1 B=A o:. 1 ;o
270 C=AC2)
280 D=B*B-4*'.:;
290 IFD<0THEN370
3C::1C::1 D1=SGtF.: ( D)
310 Rl= C-B+Dl )/2
320 R2=C-B-Dlj/2
330 PF: I tH "~'RAD I CI REAL I : ::"
3c 0 PR I t-nTRB C10 ;• ".111><: = "HlR ( R1)
::::50 PF:HffTAE: ( HD ")'l x: = "Ft~ACF.:2)
360 GOT0470
370 D1=Sl~!F: C-D)
380 IFB=0THEN400
390 IFABSCD1 / B) ( .04THEN440
4C::10 PF: ItH"~~RADICI COMPLESSE : : "
410 PF:HlTTRB( 10 ,o ".l'l.llJ "nlA C-B/2)" + J "FNFHD1/2 )
420 PRltH : PRINTTRB C: 10)Ft·lAC-B/2) " - J " HlA C: Dl /2)
4'.::e:1 GOT04 70
440 PR I tH" ~'W<:AD I CI REAL I : ::"
450 PF:ItHTRB C10) " X = "HIA ( -B/2 )
461:'.1 PPHffTAB ( 1~~1) "Y.: = "FNAC-B/2)
4 70 IFN=2THEN97 0
480 F.:ETURt·l
491!:1 IFN=l THEM970
500 : FA ( N) ()0THEN540
510 PF: I tH" ~~RAD I CE REALE : r:"
515 PRHHTAB< 10) ")!tv.: = "AO·D
520 N=N-1
540 IF CACN-2 >=0 ) * ( Af N-1)=0 >THENP=l :Q=l =GOT0590
550 IFABSCACN-2 ))( . 001THENACN-2 ) =.1
560 P=A(N- 1)/ACN-2)
570 IFP=0THENP=1 / A( N-2 )
580 Q=ACN)/A ( N-2)
590 8(0)=1
600 BC1 ) =A C1 ) -P*BC0 )
610 FORI=2TON
620 BCl ) =A Cl ) -P*B CI -1 ) - Q*BCI-2)
630 NE><T
640 C(0)=1
650 CC1)=BC1>-P*CC0)
660 FORI = 2TO~l-1
56 ANCORA MATEMATICA

670 CCI)=B <I >-P*C<I-1)-Q*CCl -2 )


680 NE:X:T
690 Pl=Crn-2>
7f10 P2=Crn-:,:: ;o
710 P3=C CN- 1)-BCN-1 )
720 P4=P1
731Z1 Fl=Brn-1)
740 F2=BO·D
750 DE=Pl*P4-P2*P3
760 IFDE=0THEN950
770 DP= CFl*P4-P2*F2) / DE
780 DQ= ( Pl*F2-Fl*P3)/DE
790 P=P+DP
800 O=G!+ DG!
810 IF CDP=0>* CDQ=0)THEN830
820 GOT0590
830 REM ITERAZIONE COMPLETATA
84f1 B=P
850 C=Q
860 G0:3UB280
::J70 N=N-2
880 FORI= 1TOt~
890 A(I >=B CD
900 NEXT
910 IFN=lTHEN960
920 IFN=2THENGOSUB260
930 IFN>2THEN540
940 GOT0970
950 PF.:I t-ff " JEQUAZ I mlE SENZA SOLUZ I Orl I " : GOT0970
960 PR I MT " ~l!F.AD I CE REALE : :"
965 PRINTTHB C10 ) :, l•: = "FNA (-A ( 1))
00

970 PR I t-ff" ~t~COF:A ? "


980 GETR$ : I FR$=" "THEr1980
990 I FI':$= "S "THEIH f1
1000 PR I t-ff ":J:•K - CIAO
l0lf1 EMD

Il programma è una libera rielaborazione di un lavoro pubblicato su una


rivista straniera, e funziona egregiamente .
Provate a proporre l'equazione

X I 4 + 19*X 12 - 150 =O
otterrete X = 2.45 e X = -2.45 (al posto dei valori irrazionali ± '16) e
altre due soluzioni immaginarie X = 5i e X = - 5i.
Per l'equazione di quinto grado

X 1 5 - 5*X I 4 + X 1 3 + 13*X I 2 - 2*X - 8 =O


otterrete invece le soluzioni X = 1; X = -1; X = -1; X = 2; X = 3 .99
(al posto del valore esatto X = 4).
ANCORA MATEMATICA 57

DISPOSIZIONI E PERMUTAZIONI

II Commodore 64 può anche essere usato didatticamente per spiegare dei


concetti, per fornire esempi sugli stessi e per proporre esercizi applicativi
controllando poi se la risposta è giusta. Questo programma e il seguente
costituiscono per l'appunto due lezioni che trattano gli argomenti del
calcolo combinatorio e del calcolo delle probabilità.
Analizziamoli rapidamente uno alla volta.

11)(1 REM CuPYRIGHT IN BASIC


102 REM VIA SEZZE 22 LATINA
1(14 F.'.Et-1 fEL. 487631
110 CLF.: : PR I tH" :"J::i"
120 POKE5328(1,J :POKE53281.3
13t1 PRitHTf1B< 10)" 'lP..!~DiLCOLO COME:IMATORIO"
141i:1 PRit-n":~m·~:0 ! 4SIDERIAMO G!UAfTRO ELEMEt-nl t:C• OG-"
150 PI': I tn" GETTI O LETTERE O t·IUMER I ) DI FFEF.:Et-H I • "
161i:1 pr;: IHT w~l3CEGLI 4 S IMBC•LI O t·lUMER I O LETTERE E"
17(1 PF.:ItH"BtiTTILI : "
180 It·ff'UT" ~l3CEGLI IL PRIMO SIMBOLO"; S1$
185 IFLENCS1$)()1THEN180
19t1 I t·ff'UT" :•lI L ::;ECONDO" ; S2$
195 IFLEMCS 2$)()1THEM190
2i::n:1 I t·ff'IJT" :llJI L TERZO" .; S3$
205 IFLEt-l(S3$)()1THEN200
210 IWUT"~E IL C!UARTO";S4:t
215 IFLENCS4$)()1THEM210
22~~1 PF:ItH :.T1~:: - HAI SCELTO I S IMBOLI : " .: S1$" "S2$" "83$" "S4$
11

23(1 Pl':ItH":t'J:1F.:A VEDIAMO It·l C!UAtHI MODI DIVEF:SI E''"


240 PRitH"POSSIBILE RAGGRUPPAf;:LI 3 A 3 • "
250 PP I tH " :~lDIJE RAGGl':UPPAMEIH I SO~IO Cot-IS I DERAT I "
260 PF.:ItH"DIFFEFHffI :::E HmlNO : "
271':1 pi;: I tH" •l 1-AU1EtKJ Ut·I ELEt·1ENTO DI VERSO"
2:30 PR I NT" 2·-ELEMEtH I UGUAL I Mf~ DISPOSTI Cot-1"
290 PF.: I tH" Of<:D I t·lE DI FFEREMTE"
301':1 PI': I tH ":'.!~ITUT TI I l':AGGF.:UPPAMEtH I CHE E, Po:;s I BI LE"
310 pr;: I m "FOf;:MAf;:E SOt·lO I s:EGUEtn I : Il
320 GOSUB2260
:33(1 Pr;:I tH":1"
340 PF.:INTS1SS2$S3$,S1SS2$S4$,S2SS3SS4S,S1SS3$S4$
:350 PRINTS1$S3$S2$,S1$S4SS2$,S2$S4$S3$,Sl$S4$S3$
360 PRINfS2$S1SS3$,S2SS1SS4$,S3SS2$S4$,S3SS1SS4$
370 PRINTS2$S3SSIS,S2$S4$S1$,S3$S4$S2$,S3$S4$S1$
380 PRIMTS3$S ISS2$ ,S4$S1$S2$ ,S4SS2$S3 $, S4$Sl$S3$
390 PRINTS3:tS2SS1S,S4$S2SS1$,S4SS3$82$,S4$S3$S1$
400 pi;, I tn Il :e..EONO 2 4 r;:AGGf;:.IJPPAMErH I • Il
410 PF.: I tH" :l!ESS I VENGIJt-lO CHIAMATI r~D I SPOS I Z I OM I:: DI "
420 pi;:, ItH "4 ELEMEtH I DI CLASSE 3 . 11
430 PF<: I tH ":e.F· I U' I t·l GEt·lERALE SE SI HAt·UIO f:f·I:: ELE - "
44(1 Pf;:ItH"MHITI. TUTTI I PAGGRUPPAMEtHI CHE SI"
450 PRHH"POS80HO OTTENEF.:E PF.:HIDEt~DO OGtH VOLTA"
460 pr;:.ItH"f:t<:i DI ESSI.• SI CHIAMA t~O :"
47(1 PR Hff " :•Jl[I I SPOSI Z IOt·H DI t~ ELEMEtH I DI CLASSE 1<:.:
11

480 GOSUB2260
490 PR I MT ":1! L NUMEr.::O DE I r;:.AOGF.:UPPAMEtH I '•I I Et-lE"
500 Pr;:Uff" IHDICATO BREVEMHHE COM IL SIMBOLO :"
510 pr;:.ItHTAB( 15) "Nl!ID 11
= •••••
520 PF.:I tHTAB< 16 >"t~, K"
58 ANCORA MATEMATICA

53~j PR I t·ff" ~l~l4EL Cft:::O F'F.:ECEDEtHEMEIHE E::;AM I t·ffiTO, ::: I HA"


~540 PRitHTAB( 15)" ~ID :: 24"
'.:15(1 PRHHTABO:: 16) "4, 3"
56~1 PF: I IH" :~m:: I OE ... ' DATI 4 ELEME~n I ' PFHWEl·WOL I A :3 A"
57(1 F'F: HIT" :3 .. E... Po:;:.:: lB I LE C0:3TI TU I F.:E 24 DI:SPOS I - 11
5:::0 PF: I tH "Z I 014 I DI './EF.:::;E. "
5%1 GOSUB2260
60~3 Pf<: IIH "::E:... PO:::::; IE: I LE CALCOLARE IL tKIMEPO DI 11
610 PP I tn" DI ::WOS I Z I Ol·l I DI ~:t·l:: ELEMEIH I DI CLASSE"
620 PF: I IH" r:t<:: (I~. I OE,. PF.:E:3 I I< A f() 'AF'PL I CAl·mo LA"
630 PF: I tH" FOF:MULA :;EGUEMTE : "
640 PF:ItffTAB(5) ":~mn =tH:0·4-1 )*Ct4-2Hnl-:3) ••••• "
65(1 PRitHTffB0::6) "t·l, K"
66~3 PR HHTAB \'.31)" ·..-----·--r-------~·"
67(1 PF.: I IHTAB ( 17) "u~; Ft1TTOR I "
6:::(1 PI': Itff ":Il)_. ULTIMO FHTTOF.:E DEL SECO~mo MEMBRO E ... "
6913 PRI tHTl=tB< 15) " :~l[t·4-(K-1) J"
?0'3 F'F: ItH w~J:HE SI PUIY ANCHE :::CR !'-/E.RE PI l_I" ::H1PLI - "
710 PF:Itn"CEMEMTE"
?2(1 PF:ItHTAB< 15) "JllO·H<+l;."
?30 G0:3UB22613
740 PF: I tn" :1)U nm I Lt=t FORMULti PEF: CALCOLt=tRE IL"
~?5~1 PF: I tH" ~lUMEF:O DI DI :::;po::: I Z I Ol·4 I fl I 1·4 ELEMEIH I"
?6(1 FF:Ilff"DI CLA::'.SE K E·' : "
77(1 PF: P.ffTAB ( 5) ":~.l!'ID =IH' ( M-1 ) :+: <t·l-2) +. •. . +( t·l-f< + 1 ::O"
1:::0 F'F: ItHTliB <6) "l·L ~:"
79(J It·4PUT" :~1·/UOI RI'·/EDEPE OUEST I ULTIMI Pf1SSA 1~iGl" _; F:F.:$
:::013 IFLEFT:t(F:F::t, 1 )::::":3"THEl·B30
:310 PF: I IH" ::'lC: E... SEMPRE MI tK1f<:E DI tl. "
:::20 F'RitH")ll3E Ul'·/ECE K=t·4 (CIOE'. SE Hl CIASCUt·l"
:::3~3 PF: I tn F.:RGGF.:UPPAMEIHO PF:Et·m I t1MO OCil·l I \.'OL TA
Il Il

:34(1 PF.: I tH rnun I GLI t·l ELEMEIH I:: ) I RAGGPIJPPA-


Il I Il

;~50 F'R IIH" MENTI ::nE::::; I PF:Et·Ht0 t·40 IL IKJME DI : "


:::613 PR I t-ffTAB <5) "~J::PEF:MUTAZ I Ul·l I DEGLI 1·4 ELEMEtH I~"
:370 PR I IH " )l.F'O I CHE . f::.=t·l . llELLA FOF:MULA PF:ECEDEtHE"
::::::o F'P I IH "L ... ULTIMO FATTfJF:E E" :::EMPF.:E 1 • "
~::9~3 PF:ItH":~1:iunmr · "
SH30 PF:ItHTAB< lt::1) "P ·=IH'O·l-1 )!Hl·l-2H ••..• *1"
910 PF:IIHTl=tB< 11 >"t·~"
920 PF: I tH" :!!lI L F.: I :.:;UL TATO DI G!UE:::TA ESPF.:E:·.:s I Ol·4E"
930 F'R I IH Il 1'.' I EME AllCHE I 1m I uno COl·l IL :; I MEOLO"
1

94(J PF: I l·ffTAB ( 15) " :~r:t·l t ::"


95(1 F'F: ItH" :~J::HE SI LEGGE f~l FATTTOF.: IRLE::. "
960 GO:::UB2260
970 F'F.: I tH" :'JJl·l CLA:::::: I CO E'.3EMP I O DI F'EF:MUTAZ I Oll I E . . "
9:;::13 PF: I tH "COSTITUITO DAGLI Al·lAGF:f'it1M I DELLE PAF.:OLE"
'.::!'.::!~1 PF: I tH" LE CIJ I LETTEF.:E :.::OIKt TUTTE DI FFEF.:EtH I "
1000 F'F.:IIH"FF.:A LOF:O."
1010 PF: ltH" '!BATTI Ul4A PAF.:OLA COt·l TALI CAF.:fHTEF: I - "
1C03 IMF'UT" :::TICHE"; Z$
1l'..1:30 'r'=LEl·4( Z$)
1040 I=l: t·lF=l
W50 tlF=l·lF* I
10611 I =I+ 1
1070 IFI <=YTHEN1050
10:::~3 PF.: I IH o::: I :;mio t·lF .: "PEPMUTAZ I Otl I
Il Il ; Il

1~~19t::1PF.:I NT"F'OS::;IBI LI."


11 ~;:1 0F'F.: rnr " :~x1F:A TE LE MOSTF.:O •••. Il

1110 IF'r'>5THEl·lPF.:I tH ".~F'EF:O " AT TENZ IOllE : :::0tK1 MOLTE! "


11 20 I F'r')6THEl-4F'F: I IH ":~Jo:: AH I ME · ! ! ::;OMO MOLTI :3:31 ME t t ) "
11 ::::o oo:::ut:2;26(1
1140 F'F.: ItH" :1" : Pf<:I l·HZ$
ANCORA MATEMATICA 59

115t1 .J='r'-l ' 2Z$="**"+Z$


1160 IFJ ( 0THEN1 2~ 0
1170 P(J ) =P C.J ) +l ' IFP(J ))Y- J-1 THENP(J )=0 : J =J - 1 : GOT01160
11 :::o AG$="" : FOF.:J::0 T'O'r'-1 : flG t -=flG$+M I D$ ( ZZ$ .. P ( J )+3 , 1 >
1190 ZZ$=LEFTS (ZZ$ , P ( J) +2) +MI DS CZZf . P ( J )+4 )
1200 NEXTJ : PRINTAGS ,
12113 GOTOl 151)
1220 PF.:HH: PRHff" :,PFUI l 1 ! ! "
123iJ PR ItH : IMPUT "JIJ·."UO I PROVt-=tf':E COt·I uw· flL TRfl PAROLA" .: RF::t:
1240 IF LEFT.$•.. F.:F.:$ , 1 ) =" t; " TH E ~I C LR : GOH.1 9 ;~ 0
125•.3 G!S= " i:i'Il!lPlPI'I'IPIP!P1,!PlP1PI,!l'J"
1260 DATAABC. ACB.. EAC .. BCA .CAB,CBA, HBD, ADB, BAD .. BDA,DAB.. DBA
1270 DATAACD , ADC, CAD, CDA,DAc , DCA , BCD.. BDC, CBD .. CDB .. DBC, DCB
128t1 PR I NT" :'lJCCUP I AMOC I OF.:A DELLE r:t: OMB I NAZ 1Ot·I I:':. "
1290 PR IHT" ~~JHI PRECEDEl·lZA 1-'BB I AMO VI :3TO CHE DATI 4"
1300 PRitH"ELEMEt HI o.' PER ESEMPIO LE 4 LETTERE"
1311:3 PRINT"f:t1 B c D:':), LE DI ::;po::nzrotH III CLA::;::;E 3 "
1320 PF: Hff" sm-m : "
1330 PRitHTAB ( 15) " P,OOD = 24 11
1340 PRINTTAB C16) "4,3"
1350 PR I NT" :lll: I OE ,. SOMO 24 F:AGGRUPPAMEtH I •••. "
1360 GOSUB2260 : GOSUB2290
1371) GOSUB2350
1380 PRINT":.USSERVAt·mo LA Tf'lBELLA PUOI tK1THF:E CHE"
1390 PR I NT" IN CI A S CU~lA COLOt-lt IA COMPAIONO ::H1PRE"
1400 PR I NT "GLI STESS I 3 ELEMEtH I OF:Drn1 n I rn TUTTI"
1411) PRINT"E SEI I MODI pos::;I BILI."
1420 PF:Hff"~IOE " Hl CIASCUt-IA COLOt~NA CI SIJt.IO LE"
1430 PF.: I ~n "f::FEF.:MUTAZ I mi I= DI TF.:E ELEMEtH I ( 3 ! =3+:2+: 1="
1440 PF:Hff"=6) COSTITUITE HPPUtHO DA SEI F:AC.GRUP-"
1450 PF.:ItH"PAMEMTI."
1460 GOSUB2260 : GOSUB2360
1470 PRIMT''IMVECE I 4 RAGGRUPPAMEMTI ALL ' INIZIO DI"
1480 PR I tH "OGt·I I COLONt·IA •••• " : F = 1 : GO::;UB2260
1490 GOSUB2290 : GOSUB2350
1500 PR I NT ":~l:OST I TU I S COt~O LE r:t:OMBI NAZI O~l I:': DE I 4"
1510 PRINT"ELEMEMT I CA,B, C, D> DI CLASSE 3 ."
1520 PRINT":l'LE COMBHIAZIONI DIFFEF: I SCOMO DALLE"
1530 PR I NT "RAGCiF:IJPPAMHH I SONO DIVERSI f::t30LO SE::"
15413 PR I ~n "r:a:OtHHIGOt-10 ALMEt·m UN ELEME~no DI './ER::;o::. "
1550 PR I NT" »lEL ~ms rno CASO LE COMB I ~IAZ I ot·I I COR-"
1560 PRit-IT"RISPONDONO AI 4 RAGGRUPPAMEt-ITI IM"
1570 PRINT"REVERSE." : GIJSUP.22 60 : GOSIJB2360
1581:::1 PR I NT "1}1_1 I ~rn I , os::;ERVAt·mO LA rABC:LLA) LE 4 COM-"
1590 PRINT"BINAZIONI DI CLASSE 3 MOLTIPLICATE PER"
1600 PRINT"LE DISPOS IZIONI DI 3 ELEMEt-ITI CCIOE ' LE"
1610 PRINT"4 COLOMt-IE PER LE 6 RI GHE ), DAt~t~ O IN TO-"
1620 PRINT"TALE LE 24 DI SPOSIZIONI CDI 4 ELEMEMTI"
1630 PRINT"DI CLflSSE 3 ) ." : GOSIJB226(1
1640 PRrnT"::l}IJESTO E' Ut·I i;: I SUL TATO CHE PUIY ESSERE"
1650 PRINT"ANCHE SCRITTO COS I ' : "
1660 PRINT":t!lPI:t-llJM. COMBINAZ. *NUM. PERMUT. =~lUM. DISPOS I Z. ::"
1670 PRINT"l!Ul:I OE' "
1680 PRINTTAB( 12 >":Pl: *3 ! =D"
1690 PRit-ITTABC13 ) "4,3 4 , ._,
'="'
1700 F'RINT"l!lm ANCHE"
1710 PRINTTAB C21 ) "J[I"
1720 PRINTTABC 22) "4 ,. 3"
1730 PF.:rnTTAB(15) "C =--"
1740 PRINTTAB06 ) "4, 3 3 !"
1750 PR I NT" :m rnERAL I Z ZAt~DO , s I HA •••• " : GOSUB2260
1760 PRINT":'J'' : PRitHTAB <21 ) "D"
60 ANCORA MATEMATICA

1770 PF.:rnTTAB<22) "t·L K"


1780 PF.:INTTAB05)"C =--"
17%1 PRINTTAB06)"N,K KI"
1800 PR nn" :~m:HE PEF:METTE DI CALCOU1F.:E IL ~lUMEF.:O DI "
1810 PR nn "COMB HIAZ IONI DI f:f·l:: ELEMEtH I DI CLAS::;E r::t<::"
1820 F'R ItH" !II L R I :3ULTATIJ DEL CALCOLO V I rnE ANCHE"
1830 PRitH"DETTO :=t:OEFFICIEtHE BIMOMIALE:: ED HWI·-"
1840 PRHH"CATO COt·l IL SIMBOLO : "
1850 F'RHlTTAB( 15) 11 :91/ l·J '."
1860 PRitHTAB< 15) "I I"
1870 PR ItHTAB <15 ) " .,., K / "
1:380 PRIMT":OCHE SI LEGGE f:itl SU K::."
1890 GOSUB2260:GOSUB2360
m
19130 PR I Il n·lOL TI PL I CAt·mO t·lUMERATORE E DEtlOM I t·lATOF:E"
1910 PRHH"Dl OUESTA FORMULA PER"
1920 PRitHTAB( 15) " :~J<t·H<) ! "
1930 PR I NT" :t'l3 I OTT I E~lE : "
1940 PR ItHTAB ( 1:3) ":1q/ N ''· t~ 1
1950 PRHHTAB< 13) "I J = ------"
1960 PRitHTAB( 1:3) "'·, K / K ! rn-K) ! "
1970 GOSUB2260:GOSUB2360
1980 PP I NT" :!!.PER COM'./Et~Z IONE SI POt-lE
19%1 F'RltHTAB0::5) 11 :'1./ 0 ·,, / 1 ·., / N ··,,"
2000 PF.'.INTTAB<5) "I I = 1 I = I = 1"
2iz1rn PRHITTAB(5) .. ...,. 0 / '·, 0 / .,, M / "
2(120 GOSUB2260 : I MPUT" :;vuo I RI '·/EDERE G!UEST I IJL TIMI PASSAGGI" ; R$
2030 I FLEFH ( F.'.$, 1 ) =" :; "THEtH 250
213413 PRHff"OK ·- OF:A '·t'EDIAMO SE SAI APPLICARE LA"
2050 PRHff"FOF.:MULA PER OTTEtlEF:E IL t·lUMEF:O DI COM-·"
2060 PRIMT"Bit~AZimlI : "
2070 GOSUB2350:PRIMT
2080 M=IMT(15*RND(l)+l):K=INTC15*PNDC1)+1)
2090 IFM<KTHEN2080
2100 PRIMT"'I~3E t~="N" E K="K
2110 PRINT"l'LIUAtffE SOt~O LE COMBI~IAZI OMI DI "N
2120-f'..RitH"ELEMEtH I DI CLA:3:3E "K "?"
2130 F=N:GOSUB2420 :X=MF
2140 F=K : GOSUB2420 : Y=MF
2150 F=N-K =GOSUB242o : z=MF
2160 R=></ ( 'r';f.Z)
2170 INPU T ":~l,RISULTATO =";PR
2180 IFRR=RTHENGOSUB2360 : PPINT :GIJSUB2480 : GOT02220
2190 GOSUB2360 : GO::;UB25t10 : PF.'.IMT":~LA F:ISPOSTA GIUSTA EF.'.A"
2200 PRINTTAB( 18) 11 :•J"R
22H3 PRHff : GOT02220
2220 I MPUT "'NUO I PFW'·/t1RE ANCOF:A" ; Rt
2230 IFLEFT$ (F.'.$ 1) = Il:;; Il THEt~PR ItH Il :'.l" : PF.: ItH : GOT02.'1-)40
I

:;::240 PRitH":Xll( - CIAO 1"


2250 END
22613 PRitH" :~i<PREMI U~I TASTO)"
2270 GETA$ : I FA$="" THEt~2270
2280 F:ETURN
2290 REM-STAMPA DELLE DISPOSI ZI OMI
2300 f'R ItH Il :'.l" : FORK= 1T04 : PR ItH Il ~Il : For.:.J ::: 1T06
2311:3 Ì"FF= 1ANDJ=l THEt·ll':EADC$ : F-R I~ffTAB (6*1<) "::i" C:t:" ::" : GOT02330
2320 READCS:PRINTTABC6*K)C$
2330 NEXTJ : MEXTK
2340 RESTORE : RETURN
2350 FORK=l T04t1: PF.'.Itff"•" .; : NE>m<: F.:ETURM
2360 REM-CANCELLAZIONE
2370 0$= 11
2380 P-R I tH" i:i8.I~Il'.llll'll!I•ll'J"
ANCORA MATEMATICA 61

2390 FORK=1T015 =PR INTOS ·NEXTK


2400 PR I MT ";il!Il!IP.It!IPnl'I~l"
2410 RETUF:~l
2420 REM-CALC.FATTOR IALI
2430 I=l : t:lF=l
2440 NF=MF*I
2450 I=I+l
2460 IFI<=FTHEN2440
2470 RETURt-1
FORJ=l T010: PRINTG!S"GIUSTO I FOR'r'=l T01(1C~ . HEi<T . PRit·mn -~311_1:; TO ! !!!"
00
2480 Il :

2490 FOR'r'= 1TO10~3 : t·lEXT : PR INTQ$" " : ME:>n : RETURM


2500 FORJ=l T01(1 : PRIMTC!S" SBAGLIATO ! ": FOF~'r'=l T0100 : ~lD'.T: Pl':UlTIJ$" :~;BA GLIATO 1 !!!"
2510 FOF:'r'= 1TO100 : t·lE>(T : PR I MTQ$" " : HEXT : RETURH

In questo programma vengono dapprima spiegati i concetti di disposizio-


ni e di permutazioni.
Dopo che l'operatore ha introdotto quattro simboli (letterali, numerici o
grafici) A$, 8$, C$ e 0$ (linee 160-190), si ha la stampa della tabella
contenente tutte le disposizioni dei 4 elementi di classe 3. Poi viene for-
nita la formula che permette di calcolare il numero di disposizioni di N
elementi di classe K.
Come caso particolare delle disposizioni (quando N = K) si perviene alle
permutazioni e al concetto di fattoriale.
A questo punto, come applicazione, battendo sulla tastiera una qualsiasi
parola, il Commodore 64 fornisce tutti i possibili anagrammi (cioè le
permutazioni) della parola dopo .aver calcolato quanti essi siano.
Per l'elaborazione degli anagrammi (linee 1140-1220) abbiamo usato una
ingegnosa routine ideata da S.H. Binns.'
La parola da anagrammare è Z$.
Essa viene trasformata in una seconda stringa ZZ$ uguale alla precedente
ma preceduta da due asterischi (che hanno lo scopo di impedire che l'ar-
gomento di LEFT$ nella linea 1190 divenga nullo).
La variabile J corrisponde alla lunghezza della parola iniziale, meno
uno.
La variabile P(J) non è dimensionata, e se desiderate anagrammare pa-
role composte da più di IO lettere non avete che da introdurre il dimen-
sionamento.
In 1180 l'anagramma AG$ viene "azzerato" prima di passare all'elabo-
razione dell'anagramma successivo. L'elaborazione termina non appena
la variabile J assume il valore -1.
La trattazione del calcolo combinatorio viene completata in questo
programma con lo studio delle combinazioni.
Questa volta il quadro delle disposizioni viene eseguito con la tecnica dei
DATA, in modo da poterle stampare una volta in modo normale (con

l.: pubblil:ata nella flO'>ta dci lmori ddla rivi<,ta inglc;c Pructirnl <"Ulll/J/lfing (luglio 1980).
62 ANCORA MATEMATICA

due cicli FOR NEXT uno dentro l'altro), ed una seconda volta con i rag-
gruppamenti all'inizio di ogni colonna stampati in reverse per metterli in
evidenza.
Ciò si ottiene con il flag F = 1 nella linea 1480. La parte descrittiva in
cui si spiega come si perviene al calcolo dei coefficienti binomiali, sfrut-
ta la subroutine 2360 nella quale lasciando intatta la metà superiore del-
lo schermo, viene cancellata solo quella inferiore.
Ciò è utile quando, scritta una formula o una tabella, la si vuole com-
mentare in modo che essa rimanga visibile durante il commento. Alla fi-
ne, scelti due numeri (N e K con N~K) a caso, il Commodore 64 propo-
ne all'operatore di calcolare il numero di combinazioni di N elementi di
classe K. Dopo aver controllato se la risposta è giusta o sbagliata, a cau-
sa delle subroutine 2480 e 2500, si ha una conferma lampeggiante.

CALCOLO DELLE PROBABILITÀ

Questa è la seconda e ultima "lezione" sul calcolo delle probabilità.


La considero un completamento della precedente perché spesso il nume-
ro di eventi possibili o favorevoli si ottiene applicando i concetti del cal-
colo combinatorio.
Sarebbe forse stato opportuno , per esaurire l'argomento, sviluppare an-
che un programma che trattasse le disposizioni e combinazioni con ripe-
tizione.
Lascio al lettore volonteroso questo compito del resto non difficile .

10 REM COPYRIGHT IN BAS I C


12 REM VIA SEZZE 22 LATINA
14 REM TEL . 487631
15 CLR · PF.: I t-H ":1'~"
20 POKE53280,10 · POKE5328 1,3
25 PRINT ' '~+:++t+i+++++++ttt+t+t+++t+++++t++++++++t!!"
30 PF.: I tH" :::•·~!! ;:i+.~"
35 PF.: I tH" ;:..!! t#::% Wt<H 'l~: ~;trn= ?#''::::} ~,% #i@ ~t.!!"
40 PF: nn" :::•+:!! :8! ~~ m i!ii m ,,, ,,,,, ·t ~=i ;::: ::it!!"
4 ~; PFntn" ::<l+.!!!! ::>.t ?;,%:t ::::! # m :::::: m m m ::.+!!!"
5 t1 PF.: I Nr '' ::~ "!! r~t.~.s ~ ~~~ m~*~=~~ r~j:;:~~:;:;§ ~~m~.* :;~#*~* ~=~~:;:~:~: \'.-tt: ~ 1

55 PF'.ItH" ::.. !!! ;:U=!!"


6~1 PRitH" ::-i+!!! D E L L E ,,, ;:l-+:11!"
65 F'F: I tH " :::.+!!!!! ::1.t!!"
?0 PR I t·l T '' ~' +:!! !Mf:;f:; ì!m=@ M fo@j iW li ::=:; ~ii
~.@ !i.%M rn@::ii ;:i+: ~ ··
?5 P R Itff " ;:..!! ~ ~::;
% l!ì i!* ~i:: !!: 'i :i;! ~:l ~i: :~ :;:: ?J.: ~:i :~~ ~§ ~o§ ::lt. !!! "
: :0 F'P itff" -~!!!!! i.liM @N.i: m ':il :1 m b@i; ::: m :;:: # ~~' :t :;:::}% ~W!!!! "
8 ~i PF.'. rt·~ r ·· ~~ !! ~= m ~~ ~~~M:~~~= ~:~~a:~ m ~~:;: ~~*l:!: #: :·~s?.:~ ~~~: j;~: F.t~ ;~; :::~ ~ ••
9(1 PR ItH" : r.-+:!!!! ::W!"
95 PF.: Itff" :#.:+++=:+:=+::+:H=+:HH++++.H:++uu:n:=+:+.+::+:+.tHHt!!"
100 PF: I tHTAJ:: ( 11 ) " :u~r~J( F'FH-1 I Utl Tfi'.3 flJ :· ~"
1 i;:15 GE TA$: I FA$::" "THEt·l 105
11 ~3 PR I tH " :.""~'FHlD I AMO IN COMS I DEF:FIZ I OHE Ut·l EVEMTO"
ANCORA MATEMATICA 63

130 PRINT"LA CUI POSSIBILITA / DI AVVENI RE DIPENDA"


14t1 PF.: I tH "E:3CLU::; I '·/AMEtHE DAL CA::;o. "
15~3 PRHH"PER ESEMPIO LA Po::.:3IBILITA-' CHE GETTAt·l-"
160 PF.'. IMT" DO rn AF.: rn UNA MONETA E::;CA TE3Tt1 .• o CHE"
17(l PR I MT" TI F.:At~DO Ut·l DADO E:::CA 5, ECC. "
18t1 Go::;UB6(1tu3(1 : F'R I tH ":J"
1913 PF.: ItH" Hm I CH !AMO COtl ~=t·m: IL NUMt:F.:O DI TUTTI "
200 PF:HH"CiLI E\.'EtHI POSSIBILI <2 NEL CFi::.o DELLA"
2lt1 PF.:ItH"MONETA E 6 tlEL Cff30 DEL Dt1D0) . E Cot-J ~lF:i"
220 PRitH" IL NUMEF.:O DI E"/EtHI FAVOF:EVOLI FF.:A"
230 PF.:ItH"TUTTI G!UELLI P0:::.:3IBILI <F=l :3 IA t·JEL"
24(1 PF.:HH"CRSO DELLA MONETA CHE DEL DADO :.o ." : PRitH
250 Pf': I t·H" ::; I DEF I t·J I SCE :::if·F.:OBAB l LITA·· DI UN EVEtHO::"
26(1 PF.: HH"CIOE ·' LA PF:OBABILI rw CHE ES:;o HA DI"
271~1 Pf': I HT" \IEF.'. I F I CAF.:S I.• IL l':APPORTO"
28~) PHI tH : PF: I tH : PF.:I tH:3PC( 19) "F"
2913 PF.:INViPC( 14 ) "P = - "
3(10 ?F: I t~r::;pc ( 19) "t·J" : PF.: I tH : PF.: I trr
310 PF.:ItH" IL RISULTATO Dl 'TALE f':t1PPOF.:TO E'. UN "
320 PRitH"t·JUMEF.:O CHE f':ISUL m :3EMPF:E COMPRE:30 FRA"
330 Pf': I tH" ZEF.:O ED utm . "
3413 G0:3UBEJ301X1: PF.: I tH "::'J"
350 PF: HH "NEL Pf': IMO CS60 LI t1 ITE ( P=0) AV!·,:Et10 LA"
:360 PRUH"CEF.:TEZZA CHE L"E'·/HHO t·JON POTRA" VEf':I-"
370 PF.: I tH" F I CAf'::; I MA I, MEt-HF.:E t·JELL ·'ALTRO CASO"
380 PF.: I tH" LIMI TE <P= 1 ) L ' EVEtHO flVVEF:F.:A· SI CUF:A-"
39(1 PF.: I tH "MEtHE. "
40(1 PRHH":~E::;EGIJENDO LA DIVI:3IOt~E F/t·J . LE PRIME"
41(1 Pf':Hff"DUE CIFF.:E DOPO LA VIRGOLA F.:APPRE:;EtHAt·JO"
4213 PF.: ItH "LA PF:OBAB I LITA · Hl FH:CEMTIJALE. "
430 Pf': I tH ":8J::E::3EMP I Or:"
4413 PF: I tH" ~l::ALCOL I AMO Lt1 F'F.:O BA:E: IL I TA ' CHE GETTAtJ-"
450 PF.:HH"DO UM DADO E::;CA Ut·J MUMEF:O MAGGIORE DI 4"
4613 PF.:ItHTAB<5) ":8J:iLl E'./EtHI Ffl'•/URE'•/OLI :30t-l0 2"
47~:::1 PF.: ItHTAB< 1(1) " (IL Clt-K!UE E IL SEI)"
4;::(1 PRIMTTAB0::5 ) "ME~HF.:E GLI E'./EMTI POSSIBILI smm 6"
4913 PF:UHTt1E:( HD" (LE :3EI FACCE DEL DADO)"
500 CiCJ:3UB60(100
510 PF.:ItH"::J....fl PF.:OBABILITA '. E' OU it·lDI · "
521:: 1 PF: I tH" :~I~l 2"
530 PR I tH" p::::--- • :~::;:3 3333 ..••. "
540 PF.:ItH" 6"
550 PF: I tH" :8lPJ::: I OE . . p:::3:3;.; (C IRCA)
552 Pf':ItH 11 :8.lHJFATTI LE PF:IME DUE CIFF.:E DOPO LA VIF:-"
554 Pf':HH"GOLA E:3PF.:IMOMO LA PF.:OBflBILITW Hl PEF:-"
556 PF: I tH "CEMTUALE. "
560 PR ItH " :8l~r:!UE:3TA E... LA DEF IMI 1- IOt·JE :~EOF.: I CA:: DI"
57~3 PF.: I tH "F'F:OBAB IL I TA' E F'UO ... Es :;EF.:E CALCOLATA"
580 PF.:ItH"~::t:'F:It1A:: CHE L'T•/EtHO SI vrnIFICHI . Il
590 PF.: I tH ":BRCC I t·lGI AMOC I OF:A A VEF.: I F I Ct1RE SPERI MEM- "
61::.10 PRitH"TALMEtHE QUAmo ABBIAMO ASSEF.:ITO. Il
61 t1 G0:3UB6000t1
620 PR I tH "::'JPREMD I AMO Ut·J DADO E LAMC I flMOLO UN"
6'.;:0 Pf': HH" CERTO t·lUMERO DI './OL TE. "
6413 INPUT" C!UAtHE '·/OL TE LO VUOI LAMC I Af<:E" .: A
65(1 .DIMD<A)
6613 Pf':HJT"JIJ]K - PF:EMI r:t::PACE:: PER LAHCIAF.:E IL DADO"
6713 GETI$: I F I$=" "THEM670
675 F'F:IHT: PRitH: F'F.:ItH
6Sf1 130SUB40020
685 PR I tH" . I t I I t I 1"
690 CiOT0670
64 ANCORA MATEMATICA

700 PRitH" :em'll!l'J-iAI LAt~CIATO IL DADO" .: A.: "VOLTE TOTALIZ - "


7H:J PF: I tH Il ZA~rno I SEGUEtH I F: I SUL TAT I : Il
715 PF:ItH: PRitH
720 FORK=0TOT-2 : PRINTD(K),
723 IFDCKj ) 4THENJ=J+1
724 NE::< TK
'"" •"')C'
( c;. ..J PF:ItH

731:1 GOSUB60000
750 PRitH":"l30tKt ::;TATI E:3EGUITI", A; "LAt~CI , C!UHlDI"
760 PR I tHTAB ( 15 >".~I~J·J="; A
771;:1 PRitH":el,IDEI G!UALI SOL 1 AtHO"; .J; "ERAtm :::UPERIOF:I Il
78(1 PFWH"A 4 , C!UHWI"
790 F'RitHTABO:: l'.:i) ":toll!l:="; .J
:30(1 PF.:Hff":t!leHL RAPPORTO F/N FOl,:tH:::cE COME Rr:;uL TATO"
:::rn l):::.J/A
:::213 PF: HffTAI::< 10) " .~r'F rn)::"; G!
830 PR un Il :,r,r;HE '·il rnE DEF HH TA f:iFREG!UE~CR:: Dl.: ': L- "
84'.!i PF.: I tH "L ,. EVEtHO :3U r:t·J:': PF:O'./E. "
:351:1 GOSUB6f1000
:360 PF.:ItH" 1A PROBABILITA ' (CAL CuLAB ILE f:t='RIMA::"
::;713 PF: I tH" DE I LANCI ) EF.:t1 r:t=·=. :;: :3:3 3333 ~ MEtHF.:E LA "
:38(1 PRHIT"FREtJUENZA DELL ·' E'./EtHO SU"; A; "PROVE "
:::90 PR I m Il (OTTENUTA r::woPo:: I LANCI ) E ' Il
9131:1 PF:ItHTAB( 113 ) "JIF< " ; A; " ':t:::", O
91 13 PF:I~ff" :emJNA LEGGE FmlDAMEtHALE DEL CALCOLO ''
92(1 PF: I tH "DELLE PF:OBAB IL I TA ' ( LE(;GE ItE I GF.:Rt·Ut I "
930 PRitH"NUMEF.:I ) .. AFFERMA CHE : "
940 PR I tH ":eJ:P I U' ALTO !::: ,. IL NUMERO N DI PF:O'./E"
95(1 PRHH"EFFETTUATO E PII.I" LA FF.:EOUEMZA FO·D "
9613 PF: I tH "::;;I A'./V ICI t~A AL './ALOF.:E TEOF: I CO P"
9713 PF: Hff" :,1,r:.,11_10 I F.: I PRO\IAF.:E A L11t-IC IAF.:E IL DADO PER"
9E:i3 PF.: I tH "Ut·j t~UMEl': O MAGGI ORE DI './OL TE.• PEF.: './ERI F I - "
'.:;l'.:::llj rnPUT "CAF:E CHE F d ·D --> P" ; F::$
1000 I FLEFT$ ( RJ:, 1 >::::" :3" TH E t·j CLF~ : GOT0620
1010 GOSUB60000
1(12(1 PR un Il :'FERtY SE IL t·jl_IMEF.:O D1 U1tK I E .· Bfl~;:;o Il
1030 PRHH"t jON CI PtY3SIAMO HSPETTAl-:E CHE F<tD :::IA"
1040 PR ItH" UGUALE O IJUAS I UGUHLE A P. "
1050 PF.: I tH" :,1·/ALE I MOL TRE Utl · AL l f~A I MPOF.:TAtH I % I MA"
106(1 PF.: I tH" LEGGE : r::u L CASO tKJt·j HA MEMORI A ! ! "
1070 PR ItH" ~ PERC I tY At~CHE SE PER l t11X11J './OLTE MOM"
10:313 F'RitH"SOtlO MAI USCITI NUMERI PIU ' AL TI DI 4"
1090 PF.:ItH"LA PROBABILITA' CHE C!tY A'./'./EMGA t·lEL"
1100 F'R I tH" LAMC I O SUCCE'3S I '·/O RESTA SEMPRE"
1110 F'R I ~ffTAB <15) ":e.P::::. 33333:;:3 "
11 20 PF: I tHTAB ( '.;:(1) " :~I~l:::F I t~E!!"
2000 rnD
4€11~11~113 _REM-::;UBROUT I t·l E PER LttHC I O DADO
40020 D=INTCRND(1)*6>+1 : D(T)=D : T=T+l · IFT=A+lTHENGOT0700
40030 ONDGOSUB41540,41 520, 41500 ,4 1530 ,41530 , 41530
40040 ONDGOSIJB41510 , 41540 , 41510 ,4 1540 ,415 10, 41530
40050 ONDGOSUB41540 , 41500 . 41520,4 1530 .. 41530,41530
4€1t;:16i:1 F.:ETUF.:N
415(1(1 PF:IMTTAB( 15) " :::il " : RETUF:N
4151(1 PRHffTABO: 15) " :::~ e " : F:ETUF:N
41521J PF.: ItHTAB<15 ) "::~ e" : F.:ETURN
41530 PRIMTTAB < 15) " ::il e" : F.:ETURt·l
41540 PRINTTAB C 15 ) "~ " : F.:ETURN
60(10(1 PR mT" :11. l( PF.:Er-1! UN TAST(t PER SEGU ITAF.:E) "
60010 GETA$: IFA$=" "THE~lt50010
600213 F.:ETURt·j
ANCORA MATEMATICA 65

Il programma è di facilissima interpretazio ne: la prima parte è descritti-


va, e vengono spiegati i concetti di probabilità teorica e di frequenza
sperimentale .
Alla fine viene preso in considerazio ne un dado e l'operatore deve stabi-
lire quante volte lo vuole lanciare .
Poi il dato viene effettivamen te lanciato (si fa per dire: comunque esso
viene visualizzato sullo schermo) per il numero di volte stabilito, e viene
calcolata la frequenza sperimentale registrata sulla totalità dei lanci .
Si può constatare in questo modo che la frequenza tende alla probabili-
tà, all ' aumentare del numero dei lanci .
La subroutine per la visualizzazione del dato è la 40000.
Prima viene scelto un valore a caso D compreso fra I e 6.
A seconda del valore di D le linee 40030, 40040, 40050 inviano il Com-
modore 64 ad ulteriori subroutine (41500-51540) per formare tre stringhe
(di tre caratteri ciascuno) che stampate una sotto l'altra costituiscon o la
faccia del dado .

MATEMATICA PER I PIÙ ESPERTI

L'intestazion e del paragrafo è forse un po' esagerata: i tre programmi


che seguono sono comunque alla portata di uno studente delle scuole se-
condarie.
Si tratta di un programma sul calcolo con le matrici, di uno sulle coni-
che in fo rma generica, e di uno sulla esecu zione del grafico di una fun-
Zlo ne.
Co n essi si conclude la prima parte di questo volume dedicata alla mate-
matica.

Calcolo con le matrici

Una matrice è una tabella di numeri disposti a rettangolo su un numero


r di righe e un numero e di colonne.
Per esempio

3 -5 o
-1 4 2
7 o
è una matrice con 3 righe e 4 colonne. Ad essa non corrisponde alcun
valore numerico , tranne il caso in cui il numero di righe è uguale a quel-
lo delle colonne, e allora il risultato si chiama determinante e la matrice
viene detta quadrata.
66 ANCORA MATEMATICA

Le matrici possono essere combinate fra loro con operazioni di somma,


sottrazione e prodotto.
Questo programma permette di eseguire le operazioni con le matrici e di
calcolare il determinante delle matrici quadrate fino al quarto ordine.

10 REM COPYRIGHT IN BASIC


12 REM VIA SEZZE 22 LATINA
14 REM TEL. 48763 1
16 POKE53280 , 10:POKE53281.3
2c1 CLR : PR I t·l r" ~X:"
40 e
PF: I t-HTAB ( 8) Il :~T.PJ::~CALCOLO CO~l L.E MA rF.: I I!!!!!"
50 PF: I NT" :t!T.~ECEGL I FF:'.A LE SEGUHH I PO::;::;:: I BILI TA' : "
60 PF: un" .P.l 1-::;oMMA"
70 PR INT" 2-DIFFERENZA"
80 PR IMT" 3-PRODOTTO SCALARE FF:A MATF: ICI"
:;-1c1 PR I t-ff" 4-TF:A:3POS I Z I Ot·lE DI Ut1A MATP I CE"
100 PF:ItH" 5-:30LUZ10NE DI IJt·lA MATF:ICE OUADRATA"
110 PR ItH " :•l~r::o:3 A ::;:;CEIJLI ? "
12f1 GETA$ : I FA$="" THEt-4120
130 A=VALCA$) : IFAC10RA) 5THEN120
140 ONAGOT01000,200 0.3000.4000.5000
1000 REM-SC~MA FRA MATRICI
11::.i 10 GOSIJB 110.;:113
1020 PF.: ItH ":1)1 =~ - LA MATRICE R I SUL TAtHE DALLA SOMMA"
1030 PF.:It-H"E·' : ": PRHH : GOSUB12f100: PRitH: PR itH
1040 FORK=1T OR =FORJ=1TOC
1050 CCK,J>=ACK,JJ+B (K,J)
1060 PRINTC CK,J);
1070 NEXTJ : PRINT : PRINT : NEXTK
10:::::13 PR I ~H : GOSUB 121300 : PR I t·ff : GOTO 130f113
2000 REM-DIFFERENZA FRA MATRICI
2c111:1 GOSUB 110c11:1
2f120 PF:ItH":"l)K - LA MATRICE RISUL TAIHE DALLA DIFFE-"
2030 PRINT"RENZA E' : " :PR INT : GOSUB12000:PRINT : PRINT
2040 FORK=1TOR=FORJ=1TOC
2050 CCK,J)=A(K,J>-BC K,J)
2060 PRINTCCK,J);
2070 NEXTJ:PF.:INT:PRIN T : NEXTK
2080 PRINT : GOSUB12000:PRINT :GOT013000
3000 REM-PRODOTTO SCALARE FRA MATRICI
3f1113 PR I tH ":1~1 • MATRICE!!!!!"
30 15 INPUT" :'-lJUAfHE RIGHE" ; F: 1
3020 INPUT" :OOUAtHE CuLOt1NE " ,; e 1
3025 PR I NT ")!J::~· MATRICE!!!!!"
:3.;:1:30 I t-IPUT" IDUAtHE RIGHE"_; R2
3040 INPUT" »JUAIHE COLON~lE" _; C2
3060 PR nn" :"l)K - ORA BATTI GLI ELEMEMTI : Il
3070 PRINT : GOSUB12000 : PRINT : PRINT
3080 N=R2:IFC 1>R2THENN=C1
3085 DIMR <R 1 ,N>,BCN,C2),CCR 1,C2)
3090 PF.:INT ").l;:H • MATF: I CE!!" : PRHH
3100 R=R1 : C=Ct : H=2=GOSUB 10000
3110 PF.:HH":t!l::~· MATRICE!!!!!" : PF:IIH
3 120 R=R2 : c=c2 : H=1 : GOSUB10000
3 130 PF.:I~H":"l)K - LA MATRICE RI:3UL TANTE E' : " : PRitH : GOSUB12000: PRitH : PRIIH
3140 FORK=1TOR1:FORJ=1TOC2
3150 FORtH = !TON
3160 C(K,J)=CCK,J)+A (K,Nl)+B(Nl,J)
3170 NE>mll
3180 PRINTCCK,J);
ANCORA MATEMATICA 67

3190 NEXTJ :PRINT :PRINT :NEXTK


32013 PR I NT : PR I ~n :GOSUB 12000 : PR I NT : GOTO 130€10
4000 REr-MATRICE TRASPOSTA
40113 INPUT":T!UAHTE RIGHE HA LA MATRICE";R
4020 INPUT" :~E G!UAtHE COLtJt.lt·lE"; C
4030 DIMA(R,C),B(C,R)
4€140 PR I NT" :JJK - BATTI GLI ELEMEtH I : " : PF.: I ~n :GOSUB 1201~10: PI': I tH : PR I tH
4050 H=2:GOSUB113000
4060 PRIMT":JJK - LA MATRICE INVERSA E' : " :PRINT :Go:::UB12000 :PRINT:PRINT
4090 FORK=lTOC : FORJ=lTOR
4100 BCK,J >=A CJ,K)
4110 PRINTBCK,J);
4120 NEXTJ :PRINT:PRINT :NEXTK
4130 PRINT:GOSUB12000 :PRINT :GOT013000
5000 REM-SOLUZ.MATRICE QUADRATA
5010 PF.: I HT "::FOSSO RISOLI/ERE MATRICI QUADRATE FINO"
5~120 PRIMT"AL 4• ORDINE."
5025 DIMAC4, 4)
5030 INPIJT"l!liUALE ORDINE TI INTERESSA" i t~
5~140 I Ft·K20R~l)4 THEMPR I ~ff" '.fl}lot-l ESSERE se I occo ! " : GOT05030
:;~150 PRitH":JJK - OF:A BATTI TUTTI GLI ELEMHITI : " : PRitH : GOSUB12000: PRitH : PRitH
5060 N=INT(N ) -1:0NNGOT06000,7000.8000
6000 R=2 : C=2 :H=2: GOSIJB10000
6010 D=A(1 , 1)*A C2, 2 )-A C1,2>*AC2.1 )
6020 PR I tH "::1I L DETERM I NAMTE E,. : "
6030 PR I NTTAB ( 15) ":'.ooD = D
11

6040 PRINT:PRINT:GOSUB12000 :GOT013000


7000 R=3 :C:3 :H=2 :GOSUB10000
70 10 Dl=A C1,1)*(A(2,2>*AC3,3) -A(2 ,3)*A<3,2 ))
7020 D2=A C1,2)*(A(3,1 )*A C2,3> -AC2 , 1)*A C3 ,3) )
7030 D3=AC1,3 >* <AC2,1 >*A C3,2)-A(3,1 >*A <2, 2) )
70413 D=D1+D2+D3
7050 PRHff"::1IL DETEF:MHlA~ITE E'. : "
7060 PR I tHTAB <15) ":li.MD = "D
7070 PRINT:PRINT:GOSUB12000:GOT013000
8000 R=4 :C=4 :H=2 :GOSUB10000
80 10 Dl=AC2,2)*(A(3,3 )*AC4,4)-A(4,3)* A(3,4))
8020 D2=AC2,3)*(A(3, 2)*A(4,4)-A(4,2)* A<3.4))
8030 D3=A( 2, 4 >* CA(3,2 ) *AC4,3 ) -A(4,2 ) *AC3,3))
8040 D4=AC2,1>* CAC3.3)*A C4,4)-AC4,3)*A(3, 4))
8050 D5=A(2,3>*CAC3 ,1)*A(4,4)-A(4,1)* AC3,4))
8060 D6=A (2, 4 )* CAC3,1)*A C4,3) -AC4 . 1)*A<3,3 ) )
8070 D?=A (l, 1>* CD 1-D2+D3): D8=A ( 1,2) *<D4-D5+D6)
8080 Cl=AC2,1)*CAC3, 2)*AC4,4)-A(4,2)* A<3,4))
8090 C2=AC2.2)*CAC3,1)*AC4.4)-A(4,1)*AC3,4))
8100 C3=A<2.4>*CAC3,1>*AC4,2)-A(4,1)*AC3,2))
8 110 C4=A(2,1>*<AC3,2)*AC4,3)-AC4.2)*AC3.3))
8 120 C5=AC2.2)*CA(3, 1>*AC4,3)-A(4,1)* AC3,3))
8130 C6=AC2 ,3> *<AC3, 1)*AC4,2)-A( 4,1 ) *A C3, 2) )
8140 C7=AC1,3)*CC1-C2+C3) :C8=AC1,4>*<C4-C5+C6)
8150 D=D7-D8+C7-C8
8 160 PRINT"::1IL DETERMINANTE E' : "
:~170 PRitHTAB C15) "'.11.l~lD = "D
8 180 PRINT :PRINT :GOSUB12000:GOT013000
:::21;:10 Et~D
10000 REM-RIEMPIMEN TO MATRICI
10010 FORK=lTOR
10(120 FOF.:J=l TOC
1(n)30 IFH=1 THEt~PRI~n :~l"K • RIGA E" J
11 11 11
• COLONNA" j : INPIJTBCK. J )
113040 I FH=2THE~lPR I NT" )!l" f<"• RIGA E" J 11
• COLONt·lA"; : I NPUTA ( K, J)
10050 NEXTJ :NEXTK:RETURN
11000 REM-SOMMA O SOTTRAZIONE
68 ANCORA MATEMATICA

11010 PRIHT":l.E DUE MATRICI DE'·.IOMO AVERE LO STE:::SO"


11 f12~~1 pi;,· I t.ff "MUMEF.:O DI RI OHE ECOLOl~ME. " : GO SUB 1:2000
1103f1 I t·lPUT Il :PJ:;)IJAMTE so~m LE RIGHE Il i R
l lft40 INF'UT" :PE LE COLOt~HE" i C
11050 DIMA CR,C>,BCR,C),C(R ,C)
11 ~36f1 PF.: I tH "::>:1K - ORA BATTI I VAL OR I DEGLI ELEMEMT I" : GOSIJB 12000
11070 FORH=1T02
11080 PR I t.ff" :PJ:~" H"tr MAH: I CE!I"
11090 CiOSUB10000
111 Of1 NE:x:TH
1111 f1 RETUF.:M
12000 REM-LINEA ORIZZONTALE
12010 A$="•" : FOPT=l T040 : PF:It.ffA$; : t·IE::<TT
12020 F.:ETURH
13000 REM-RICHIESTA DI COMTIMUAZIOME
13ft l 0 PR I t.ff" ;P.UUUO I SEGUI TAl':E ·:·"
1:3~32~3 GETA$ : I FA$=" "THEM 13020
1 3f1~:0 I FA$=" S" THEM 10
1:3ft413 F'F: I MT ":"l)K - CIAO ! ! "

Fino alla linea 140 c'è la descrizione delle opzioni e l'invio alle linee
1000, 2000, 3000, 4000 e 5000 a seconda del calcolo che si vuole fare. li
programma principale finisce alla linea 8200: poi c'è la subroutine 10000
per il riempimento delle matrici, la 11000 per dimensionare e riempire le
matrici nelle operazioni di somma e sottrazione, la 12000 per tracciare le
sbarre orizzontali, ed infine in 13000 c'è la richiesta di continuazione.
Vediamo come si realizza la somma fra matrici (linea 1000).
La 1010 invia il Commodore 64 alla linea 11000 dove bisogna specificare
il numero di righe e colonne delle due matrici (linee 11030 e 11040). Poi
vengono dimensionate tre variabili con doppio indice: A e B che servono
per accogliere gli elementi delle due matrici, più la variabile C che serve
per ricevere i risultati dell'operazione di somma.
Nelle 11070-11100 con un ciclo FOR NEXT vengono trattate prima la
matrice A e poi la matrice B facendo ricorso alla subroutine 10000.
Questa, come già detto, serve a riempire ciascuna matrice con i valori
battuti dall'operatore.
Poi si torna alle 1020 e 1030 (che non hanno bisogno di commento), e
finalmente con un ciclo FOR NEXT viene costituita la matrice C con la
somma dei valori corrispondenti che si trovano in A e B (linea 1050).
Man mano che tali risultati sono calcolati, vengono anche stampati gra-
zie al comando della linea 1060.
li punto e virgola serve per stampare consecutivamente gli elementi di
una stessa riga.
Alla fine si ha il salto in 13000 per la richiesta di proseguimento.
La differenza fra matrici (linea 2000) viene ottenuta con lo stesso identi-
co procedimento. Passiamo al prodotto scalare fra matrici.
Siano date per esempio le due matrici
ANCORA MATEMATICA 69

Il ~ ~
A2,3 1
4 Il

2 o 1 4
Blt4 :::;
3 1 o 2
2 3 4

li risultato del loro prodotto scalare è

cioè una matrice con 2 righe e 4 colonne (tante righe quante sono quelle
del primo fattore e tante colonne quante sono quelle del secondo fatto-
re) i cui elementi si trovano con il procedimento seguente

Blt4

2 o 4
3 1 o 2
1 2 3 4

3
Il 5 4 ~11=11 ~: ' ' ' ~Il'
5 9
6 8
Ai,J C2,4

11:::; 3·2+1·3+2·1
5 :::; 3·0+1·1+2·2
9:::; 3·1+1·0+2·3
22:::; 3·4+1·2+2·4
24 = 5. 2 + 4. 3 + 1 . 1
6 5·0+4·1+1·2
8 5·1+4·0+1 · 3
32 :::; 5·4+4·2+1·4

:--le! nostro esempio il numero di colonne del primo fattore è uguale al


numero di righe del secondo fattore.
Se non lo sono occorre modificare una delle due matrici aggiungendo
una o più linee di zeri.
Questa operazione non gode della proprietà commutativa. '
\ "ediamo ora come questo procedimento viene attuato a partire dalla li-
nea 3000.
\kntrc gode de lla propr ie tà a'>'>OCiati va e di qudla d h tributiva ri~ pc110 alla '> Omma.
70 ANCORA MATEMATICA

Dopo aver introdotto il numero di righe e colonne di ciascuna matrice


(3010-3060), viene indicato con N il più grande dei numeri C1 (colonne
prima matrice) e R2 (righe seconda matrice), nella linea 3080, in modo
che il dimensionamento delle due matrici A e B non è

A(R ,,C,l

ma

A(R ,,N)

Altrimenti si avrebbe una segnalazione di errore nella fase di calcolo del-


la

In 3100 viene posto R = R,, e C = C,, e per mezzo della 10000 si ha il


riempimento della matrice A.
Poi in 3120 viene posto R = R2 e C = C2 e sempre con la 10000 si ha il
riempimento della matrice B.
Si noti il flag H che a seconda del suo valore (1 o 2) serve nella 10000
per riempire alternativamente la matrice A o la B. Infine con due cicli
FOR NEXT uno dentro l'altro (3140-;-3190), vengono eseguiti i prodotti
e le somme per ottenere C. La 3180 stampa gli elementi di C man mano
che sono calcolati.
La matrice trasposta di una data è quella in cui le righe sono invertite
con le colonne, e perciò per esempio la trasposta di

Il ~ ~ ~Il
è la

3 o
2 1
1 2

Nelle linee 4000 e seguenti viene attuata la trasposizione di una matrice:


in 4030 si ha il dimensionamento della matrice A da trasformare, e di
quella B trasposta.
In 4050, dopo aver posto il flag H = 2, si ha il riempimento della matri-
ce A per mezzo della subroutine 10000.
Infine con un doppio ciclo FOR NEXT (4090-4120) avviene la trasposi-
zione e la stampa di B.
ANCORA MATEMATICA
71

Non rimane che esaminare le linee 5000 e seguenti per il calcolo delle
matrici quadrate.
Onestament e debbo ammettere di non essere riuscito a realizzare un pro-
cedimento in Basic che consentisse il calcolo del determinant e di una
matrice quadrata di ordine qualsiasi, nonostante mi ci sia impegnato se-
riamente per un paio di giorni.
Ho quindi dovuto ripiegare sul calcolo delle matrici quadrate fino al
quarto ordine ottenute semplicemente con il primo teorema di Laplace.
In 6010 c'è il calcolo della matrice del secondo ordine, in 7010-7040
quella del terzo ordine e in 8010-8150 quella del quarto ordine.
Non è però difficile calcolare anche le matrici del quinto ordine con il
teorema di Laplace.
Si abbia per esempio la matrice quadrata

2 1 3 5 4
1 2 3 -6 2
3 7 4 5
6 4 13 3 3
9 5 20 6 9

Consideriam o gli elementi della prima riga (2, 1, 3, 5, 4) e i corrispon-


denti minori complementari (cioè le matrici quadrate del quarto ordine
che si ottengono di volta in volta nelle restanti quattro righe, cancellan-
do la colonna cui appartiene l'elemento considerato) .
Il risultato A della matrice di partenza è

2 3 -6 2 3 - 6 2
A= 2· 7 4 5 - 1· 3 7 4 5
+
4 13 3 3 6 13 3 3
5 20 6 9 9 20 6 9

1 2 -6 2 1 2 3 2 1 2 3 -6
+ 3· 3 4 5 -5· 3 7 5 +4· 3 7 4
6 4 3 3 6 4 13 3 6 4 13 3
9 5 6 9 9 5 20 9 9 5 20 6

dove le matrici del quarto ordine possono essere rapidamente calcolate


con il nostro programma. Per la cronaca si dovrà ottenere

A= -72

Si noti che gli elementi della prima riga vanno presi con segni alternati
cominciando con il segno più.
72 ANCORA MATEMATICA

L'applicazione del teorema di Laplace è però lunga e tediosa. Da un ar-


ticolo di Mark Walker su Practical Computing abbiamo però tratto una
interessante routine che permette il calcolo di matrici quadrate di ordine
qualsiasi.

1J0 REM COPYRI~Hl IN BASIC


110 REM VIA ~EZ~~ 22 LATINA
120 REM TEL . 48;o31
1:::ç.1 CLF.: : PF.: I tH "::7:ii"
140 POKE532 ~0. 10 : POKE53281,3
150 PF.:Hff" CALCOLO DETEF.:MHIAtHI DI ORLIIME t-l''
1613 FORK=l T040 : PRIHT"I"-.:"; : t4EXT
1713 HlPU" ":'1'111l)IJALE OF:DINE TI INTEF:ESSA"; ~4
180 DIMA(N+l.N+l)
1913 PR I IH" :''.U K ORA I1AMM I i::.L I ELEMEtH I I1ELLA"
:;::iz113 PRitH"MATRI CE : " : PRIHT
210 REM INuRESSO DATI
220 FORJ=1TON:FORK=1TON
23f1 PF.:Hn : PRitHK F.:IGA E".J
11

11
COU~JMA" .; : IMPUTA O:: .. .n

24t1 NE><Tf::. . .J
250 REM VISUALIZZAZIONE MATRICE
2613 PI': It.ff ":T'
2~0 FORK=lTON ·FORJ=lTON
2:::0 PKIIHrP 1 t ·, PRINT A(K.J);
L~0 NEXTJ ·PR1NT · NEXTK
.;:fHJ PF: I IH ".~lP.NA BENE ? "
3 l 1J GETO$ : I FG!$=" "THEt-l310
:320 I FC!$=" ::; "THEN3513
331;:1 PR I tH" '.P.lU1L.LORA F.: I DAMMI I LtAT l COF.:F.:ETT I "
340 FORK=ll02000 :NEXT:GOT0210
350 REM INI ZIO CALCOLO
361:::1 D=l
370 REM SPOSTHMENTO DEL TERMINE MAX DELLA RIGA K SULLA DIAGONALE
380 FORK=lTON
39f1 R=K : M=A(K. KJ
41;:10 FOF.:J=f<+ 1TON
410 IFA( ~,JJ{ =MTHEN430
4~0 M=A~k . JJ· R=J
4313 t·JE>=:T .J .
440 REM SE E' 0 ALLORA STOP
·+50 IF M=O fHEM D=f1: GOT066~3
46~J I FF.:=KTHEN540
470 REM IL COEFF. MAX NON E' SULLA DIAGONALE, PERCIO ' SCAMBIA LE RIGHE
48[1 FOR.J=l TON
490 M=A(J,K)·A(J,KJ=AlJ,R):A(J,R)~M
5013 NE:,:T.J
510 REM CAMBIO SEGNO DEL DETER. SE LE RIGHE SOMO STATE SCAMBirlTE
52~3 D=·-D
530 REM ELIMit-lAZlONE DEL FATTORE DI SCALA
540 D=D*A OC IO
550 IFl<=tHHEt-466f1
560 REM DIVISIONE PER RENDERE =1 L'ELEMEt-lTO PIVOT
570 FORH=NTUKSTEP- 1
580 ACK . H)=A(k,H)/ACK ,f::.)
59f1 t-JE:x:TH
6[1(1 FOi':H=K+ 1TOM
610 REM GRUPPO DI MOLTIPLICAZIONI PER LA NUOVA RIGA
620 M=-AO::H . I<)
630 FORJ=KTON
640 ACH . J)=ACH,J)+A(K . J) *M
ANCORA MATEMATICA 73

650 tlEXT .r. H, K


66(1 PRHH" ~Jll \IALC1RE DEL DETEF:MHJAt-nE E,.: "D
670 P~: INT"~l=tMCORA ?"
6:::0 GETG!$ : IFC!:t=" " THEM6:3(1
690 I FG!$=" ::. "THEM 130
7(n3 PF:ItH "OK - CI AO!"

Per sommare o sottrarre tra loro due matrici A(k,j) e B(k,j) dello stesso
ordine basta utili zza re la routine seguente:

100 FOR K = 1 TO N
110 FOR J = 1 TO N
120 C(K,Jl = A(K,J) + B(K,J):REM NEL CASO DELLA SOMMA
130 D(K,J) = A (K,J)-B(K,J):REM NEL CASO DELLA DIFFERENZA
140 NEXT J, K

Nel caso del prodotto le due matrici saranno del tipo A(k,r) B(r,j) cioè il
numero di colo nne della prima deve essere uguale al numero di righe
della seconda. Per il calcolo si può applicare la seguente routine:

100 FOR K = 1 TO N
110 FOR J = 1 TO N
120 FOR R = 1 TO N
130 P(K,J) = P(K ,J) + A(K,Rl * B(R,Jl
140 NEXT R,J,K

Ancora, per ottenere la trasposta di una matrice A(k,J), cioè una matrice
uguale alla precedente, ma con righe e colonne scambiate tra loro ,

100 FOR K = 1 TO N
110 FOR J = 1 TO N
120 A(K,J) = A(J , Kl
130 NEXT J , K

Si noti che non è necessario che le matrici trattate siano quadrate (tran-
ne nel caso in cui se ne debba calcolare il determinante).
Per concludere può essere utile un programma (tratto anch'esso da una
routine di Ma rk Walker). Cioè una nuova matrice che moltiplicata per
la precedente dia come risultato la matrice identità (si chiama matrice
identità o matrice unitaria una matrice quadrata con tutti g li elementi
nulli tranne quelli della diagonale principale, che sono tutti uguali ad 1).

1(113 F:EM C1 if-''r'F' I 1JH r I t-1 Bfr3 I G


11O F.:Et1 './I A :::EZZE 22 LATI l·lA
120 REM TEL . 4876~1
74 ANCORA MATEMATICA

CLR : PR I tH "~J:ll"
13t1
140
POkE53280,10=POKE5328 1, 3
PF.: Hff"
15(1 Hl'./EF:S IONE DI UNA MATR 1CE G!UADF.:ATA"
FOF.'K=l f040: PRitH"~" .: : NEi<T
l6t1
I MPUT " .~!!!!!!DUALE OF.:D I t·IE TI I tHEF.:ESSA"; N
17t1
DIMA O·J+ L tH 1 I ·' BOH L tH 1)
180
PF.:ItH"~)) K
19(1 OF:.A Dt=1MMI GLI ELEMEHTI DELLA"
200 PF:.INf"MATF:ICE : " : PRINT
210 REM IMGRESSO DATI
220 FORK=lTON :FORJ=lTON
23t1 PF:.ItH: PPUff.J"" RIGA E"K"" COLOt·1NA" .: : IMPUTA OC .J)
240 ME:X:T.J, K
2513 '<Hl vr:::UALIZZAZIOt·IE MATF.:ICE
2 1.::,~1 PF:. nrr" ::J"
270 FOF.*=lTON : FOR.J=lTON
2:30 PF.:HJTA(.J .•IO.:
290 MEXT.J:PRINT:NEXTK
300 PR I MT" :!!~1·/A BEME ? "
3 H'.I GETG!:t: IFC!$=" "THEN310
32t1 I FC!$=" S " THEt-1:3513
330 PF:.IMTw!!l!!FILLORA F:.IDAMMI I DATI COF.:F<:ETTI"
340 FORK=1T02000:NEXT:GOTQ210
350 REM FORMA LA MATRI CE IDENTITA ' B
360 FORK=1TON:FOR.J=1TON
370 BCK , .J>=l-ABSCSGNCK-.J))
380 t·1E:•:TJ, K
3913 FOPK= 1 TON-1
4(1t1 I FA ( K·' K) =0THEHPR I MT I l :~n t·1Pos:; I BI LE" : GOT0601!:1
41t1 FOF.:.J =K+1TOl1
420 M=AC.J,K)/A(K,K)
4.30 FOF.:H= 1 TON
440 A(J,H)=A(.J,H)-M*A(K,H)
450 BC.J,H)=B(.J,H>-M*B(K,H)
46(1 ME:X:TH , J, K
4 70 REM REl.ROSOSTITUZIONE IN B
480 FORK=NTOlSfEP-1
490 FOF.:H=l TON
FORJ=K+1 TON - - - 500 Fnr;:J 1rr111
510 BCK,H)=B(K,H)-A(K,.J>*B(J,H>
5;~ ('.t NE:,:TJ
530 BCK,HJ=BCK,H)/A(K,K)
540 ME>:;TH, K
550 REM VISUALIZZAZIOtlE MATRICE HNERSA
560 PF:.IMT"J"
570 FORK=lTON=FORJ=lTON
580 PRINTA(J,K);
590 NEXTJ : PRINT : NEXTK
600 PF:. I HT" :'l~FIMCORA ·7-·"
6113 GETC!$ : I FO$=" "THEt-161 (1
620 I FG1J:=" ::;; "THEMF.:Ut~
630 Pf.i:ItH"::J)K - CIAO I I"

CONICHE GENERICHE

Alcuni cenni teorici prima di affrontare il programma.


Un'equazione del tipo ...
ANCORA MATEMATICA 75

ax 2 + bxy + cy2 +dx+ ey + f = O

è sem pre una conica.


Essa è degenere, cioè corrisponde ad una coppia di rette, quando la ma-
trice

a b d
2 2
b e
A
2
e-
2
=o
!!_.!_ f
2 2

Il tipo di conica è determinato dal segno della matrice

b
a
2
B= b
e
2
b2 4ac-b 2
= ac - -
2
=
4

cioè dal segno della quantità b 2-4 ac che (per analogia con la formula ri-
solutiva delle equazioni di secondo grado) viene chiamato discriminante
della conica ed indicato con il simbolo .1.
Quando .1 = b 2-4 ac è positivo la conica è una iperbole, quando .1 = O
la conica è una parabola, e quando .1 è negativo la conica è una ellisse.
In quest ' ultimo caso se avviene che

a c
b =o
allora si ha la particolare ellisse con i due fuochi coincidenti detta anche
circonferenza.
Nel caso delle ellissi e delle iperboli il centro di simmetria della conica
ha coordinate

2 dc-be
x= .1

2 ae-bd
y=
a
mentre in ogni caso i coefficienti angolari degli assi della rnnica si otten-
gono risolvendo l'equazione di secondo grado
76 ANCORA MATEMATICA

bm 2 + 2m (a-c)-b o
in cui l'incognita è m.
Si noti che nel caso della circonferenza tale equazione è identicamente
soddisfatta ed infatti ogni diametro della circonferenza è anche asse di
simmetria.
Nel caso della parabola i coefficienti angolari degli assi sono

m ::; b
2a
2a
m::; - -
b

perpendicolari fra loro, come avviene anche per le ellissi ed iperboli, ma


solo il secondo corrisponde al vero e proprio asse della parabola. La sua
equazione è

2a 2ad+be
y = X- ---
b 2b(a+c)

(l'altro asse è all'infinito).


Il vertice della parabola può essere ottenuto mettendo a sistema l'equa-
zione dell'asse con quella della conica, e risolvendo.
Se la conica è una iperbole con

a = e = O

allora essa corrisponde ad una iperbole equilatera con gli asintoti paral-
leli agli assi coordinati, e viene anche chiamata funzione omografica.
Può essere messa sotto la forma

Y::; -dx-f
bx+e

ed suoi asintoti hanno equazione

X=-
e
b
d
y=-b
Tralascio la trattazione degli asintoti dell'iperbole generica e l'individua-
zione delle rette che costituiscono le coniche degeneri, altrimenti il pro-
gramma diventerebbe troppo lungo.
ANC ORA MATEMATICA 77

10 REM COPYRIGHT IN BASIC


12 REM VIA SEZZE 2 2 LAT I NA
14 REM TEL. 48 76 3 1
20 CLR · PRHH" :-X:"
25 POKE 5 3280 , 10 : POKE 5 3281 , 3
:313 PR I NTTAP. ~ 10) " r~: Ot~ I CHE GEHER I CHE:" : GOSIJB 11 (H.'.10
40 PRINT"UNA GEt~ERI C A EG!IJAZIONE DI 2" GF.'A[IO CON"
50 PRl~H"DUE INC OGt~ITE : "
60 PRHH"~J 2 2"
7(1 PF: HH" Ai< +B>::'T'+CY +DX+EY+F=W'
:3(1 PR I t·n " :u ::ORF.: I SPOt·m E SEMPRE AD Ut·l A CON I CA. " : oo::.IJB 1100i.'.I
90 PRINT"E:ATTI I COEFFICIEtHI ED IO OGM! VOLTA"
11:30 PR HH" TI CALCOLERO ' LE CAF.:ATTEF.: I ST I CHE DELLt 1"
11 O PR I MT "CON I CA CORRI SPIJt·UHHE. "
120 oo:::uB 11::K100
1:::(1 PR HH" :JE:ATTI 0 HL POSTO DE I COEFF ICI EtH I EVEN-"
140 PR I t·H" TUALMEtHE MAMCAtH I • " : GO SUB 11000
150 lt·~PIJT"A=" i A
16 0 IMPUT" :mJ=" i B
170 I t·l PUT ":O:=" ; C
180 INIJUT"l.ID=" i D
190 rnPUT " J!E=" ; E
200 INPUT '"~=" .; F
2 1t1 PRltH " :JJt( - LA COtH CA E '. : "
220 Dl=A*C*F+B*D*E/ 4-CMD*D/4-B*B*F/ 4-A*E*E/ 4
23 0 I FD 1=0THEt~PR I tHTAB ( 15) " ., I•.JDEGEt·l ERE" : GOT05(10
11
2 40 PRINTTAB < 1:3) :~IU·l0t~ DEGEMERE"
250 D2=B•B-4*A*C
260 I FD2)1:HHEt·lPR ItH " :•.ED E ,· UNA I PE F:BOLE. " : GIJT0300
270 IFit2=(1THEt·lPRitH 11 :i!ED E' Ut~A PARABOLA." : G01030€1
2B0 I FA=CANDB=0THHWR I ~n" :•.ED E ... Ut·lA e I RCOt~FEREt~ZA. Il : GOTO 12 013(1
290 PF:ItH" :•.ED E ··· UW' ELLIS:::E."
:300 GOSUB11000 : GOSUB13000
:310 IFD2( 0THEN4000
320 IFD2)0THEN5 000
3~:(1 tJOT06t;.10 0
5 00 REM- RICHIESTA DI CONTINUAZ IONE
510 GOSUBl 1000 : PRHH"VUOI F'F.:OVARE ANCOF.:A ? "
520 GETA$ : IFA$=" "THEH520
5 3 0 IFA$="S"THEN10
5 40 PRIM, ":JJK - CIHtJI I Il
5 50 END
1000 REM- PARABOLA ASSE ORI ZZONTALE
101 0 PRINT" L A PARABOLA HA ASSE ORIZZONTALE."
1020 VY=-E/C2*C ) : VX=-C*VY*VY/ D-E$VY/ D-F/ D
10:30 PRINTTAB C8 ) ":r!N= ( "VX " ; " V'T" ' ) "
1040 DD= <E•E-4*C*F )/C D*D ): FX=CDD-1 )/( 4*CI D): DR= Cl+DD )/C 4*C/D )
11~1 5 (1 PRHHTAB C8) ".l!F= ( 11 F::< 11 .: " V'T'" ) "
106!:1 F' RitH"~l.A DIF:ETTRICE HA EOUAZ . i<= " DR
1(171::1 GtJT0500
2000 REM-PARABOLA ASSE VERTICALE
2~110 PF: ItH"LF'l PAF:ABOLA HA ASSE VEF:TICALE."
2020 VX=-D/C 2*A ): VY=- A*VX*VX/E-D*VX/E-F/E
2t::t:::13 PF.: I tHTflB ( 8 ) "foJ.,1= ( "V:>( " ; 11 './'r' 11 ) 11
2040 DD =< D*D-4*A*F >l< E*E ): FY= CDD-1 )/ (4*A/E ) : DR=Cl+DD )/ (4*AI E)
11
205 0 F'RINTTAP. <:3) :~F= C 11 V::< 11 i "F'1'")"
2 0613 PR IMT" :l!l..A DI F.:ETTR I CE HA ECtURZ. 'y'=" DR
2 1370 tJOTO'.:i00
3 000 REM-FUNZIONE OMOGRAFICA
3 010 PRitH"L ,. IPERBOLE E '. EC!IJILATERA."
:3€120 I FE=i::1THEt~F'R I t·H" J!rn~ ASI tHOTO C•) INCIDE COt·l L ,. ASSE 'T'"
:3(130 IFD=0THEMPRrnT" :•JJN AS itHOTO COINCIDE COM L" ASSE X "
78 ANCORA MATEMATICA

::;:0413 A'./=-E/B : PR I tH" ~EOUAZ. A8 l t-HOTO \IEF: f I Ci:iLE i<=" A'./


:3t150 AO=-D/B · PR I NT" .,E:G!UAZ . AS INTOTO OF.: l ZZONTALE 'T'= " RO
3(1613 PR I NT ":PX;OOF:D I ~lATE CENTRO DI :; I MMETR I A : "
:30713 PF:INTTAB(:3) 11 .9:::=•, "A'./" I "AO" :111
::;:(1:313 GOT0513t:1
4000 REM-ELLI8SI GENERICHE
4010 PRINT:GO~UB15000
4020 PRINT:GOSUB16000
40:::: 0 GOT0500
5000 REM-IPERBOLI GENERICHE
5010 PRINT : GOSUB15000
5020 PRINT:GOSUB16000
51330 GOT05130
6000 REM-PARABOLE GENERICHE
613113 M1=i:. A*[i:+.D+ B*D*E +C'+.E*E) / ( 4* ( A+C :i ·f'2 )
60 ' 5 N2=<2*A*D*E+B*E* E)/C2*Bf. ( H+C)) : t-JM=N1 - N2 +F
6020 DD= ( 2•A*E-B*D) / B : './X=MN/ DD
6€125 M=··2*A/B : Q=- <2*A*D+8*E)/(2*B * <A+C>)
60 ::::1~1 \/'T'=M*'·:'::<+C!
6040 PRHff"L'A::;SE DELLA PAF.:A:E:OLA HA : "
6t150 PF.: I ~ffTAB ( 5) ":PJ1= "M" O=" O
606EI QR I tH ":~LE COOPD I t·lATE DEL '·:'EF:T I CE :30~l0
60?€1 PRINTTABC:3 ) " a,,•=( 11 \1;.; 11 .; "V'r'")"
60:::€1 GOT0500
9999 HlD
10000 REM-ARRESTO PROGRAMMA
rn1::irn PRHIT:::PC(11>" :' l(PREMI UN rASTO)"
10020 GETAS:IFAS=""THE N10020
1130313 F.:ETURt~
11000 REM-LINEA ORIZZONTALE
1 mm A$=" ~-=" : PF.:HH : FORK=l T04t1 : PR itHA$ ; : t~E:x:n:: PF.:IMT : PF.:IMT : F.:ETURN
12000 REM-CIRCONFERENZA
12010 AL=-D/C2*A> : BE=-E/C2*A> · R=SQRCAL*AL+BE* BE-F/A)
12 0 2 0 GOSUB11000
12030 PRINT"LE COORDINATE DEL CENTRO SONO : "
12040 PRIIHTAB<8 ) " 'lPC= C"AL"; "BE" ) "
12€150 PRINT" :Pll!E IL F:AGC:iIO E ' R="R
12060 GOT0500
13000 REM- TEST S ITUAZIONI SIMGOLARI
1:3010 I FA=0At·lDB=OA~lDC=0THEt·lPF: ItH" :~ ·· EC!UAZ I Ot-lE E... U~lH F-~ETfft ! ! " : GOT0500
13020 IFA=0ANDB=0ANDD2 =0THEN1000
13030 IFB=0AMDC=0ANDD2 =0THEN2000
13040 IFA=0AMDC=0ANDB< >0THEN3000
1:31350 RETUF.:~l
15000 REM-CALCOLO CENTRO DI SIMMETRIA
15010 CX=C2*D*C-BtE ) /D2 : CY= C2*A*E - B*D) / D2
151:::120 PF.: I tH" IL CEMTF.:O DI SI MMETRIA HA COOF:D I tfflTE : "
15~330 f'F: I t·ffTAB ( t :) ".,l:;= C"C:>:: "; "C'r'")"
15040 F.:ETURN
16000 REM-CALCOLO COEFF.ANGOLARI ASSl
16€110 PR I NT" I COEFF. AMGOLAF.' I DEIJL I ASS I ::;ot~O : "
16€120 I FE=0THEMPF.: I ~lTTAB ( 8) ":n1== I t·l F I t·l I TO M=0" : RETUF.:t·l
16030 Ml=CC-A+SQF.: CA*A-2tAtC+C*CtB *B ) J/ B
160413 M2= ( C-A-::;OF.: ( t='t*A-2*A*C+C*C+ B+B ::O ) /B
16050 PRINTTAB< 3 >"ml="M1" M2 ="M2
16136€1 F.:ETUF.: t~

Fino alla linea 200 c'è la parte descrittiva iniziale (la subroutine 10000
serve a bloccare il programma in attesa che venga battuto un tasto qual-
siasi) .
ANCORA MATEMATICA 79

Ricevuti i valori dei sei coefficienti a, b, e, d, e, f, in 220 viene calcolato


il determinante A (indicato con la variabile 01) per stabilire se la conica
è degenere o non degenere, e in quest ' ultimo caso si salta in 500 per la
richiesta di continuazione. Se invece la conica non è degenere, in 250
viene calcolato il suo discriminante tl. (indicato con la variabile 02).
Nelle linee 260-290 viene stabilito il tipo di conica a seconda del segno di
02, e nel caso sia una circonferenza si va nella subroutine 12000 dove,
dopo la determinazione delle coordinate del centro e del raggio, si ritor-
na in 500 per la richiesta di proseguimento.
La subroutine 11000 serve a stampare le barre orizzontali che delimitano
le caratteristiche calcolate per ogni conica.
Dopo la determinazione del tipo, la subroutine 13000 effettua un test
per controllare se la conica è di tipo particolare.
E precisamente:
Linea 13020 = la conica è del tipo

cyi e f
X - - - - y- -
d d d

cioè è una parabola con asse orizzontale.


Linea 13030 = la conica è del tipo

y
_ax 2 _dx_ f_
e e e

cioè è una parabola con asse verticale.


Linea 13040 = la conica è del tipo

-dx-f
y
bx+e

e quindi, come si è visto, è una funzione omografica.


In tali casi il programma salta rispettivamente alle linee 1000, 2000,
3000, dove, determinate le caratteristiche salienti, si ha il rinvio alla li-
nea 500 per la solita richiesta di continuazione.
Se non ci sono situazioni singolari, nella 13050 si ha il RETURN, con re-
lativo salto indietro alla linea 300.
A questo punto, a seconda del valore del discriminante 02 si ha lo smi-
stamento in 4000 (ellissi generiche), in 5000 (iperboli generiche) o in
6000 (parabole generiche).
Sia per le ellissi che per le iperboli viene prima calcolato il centro di sim-
metria (subroutine 15000) e poi il coefficiente angolare degli assi (su-
broutine 16000).
Nella linea 16020 viene preso in considerazione il caso particolare in cui
80 ANCORA MATEMATICA

il coefficiente b della conica è nullo, perché altrimenti nelle linee succes-


sive si avrebbe una divisione per zero. Infine in 6000-6080 si ha il calco-
lo dell'asse della parabola e del suo vertice.
CAPITOLO QUINTO

Fisica

Nel primo capitolo abbiamo toccato con una rapida carrellata alcuni ar-
gomenti di matematica.
Essi costituiscono solo un esempio di come un persona! computer possa
essere utilizzato anche per scopi didattici.
Purtroppo la scuola italiana ignora completamente nei propri program-
mi l'esistenza teorica (e tanto meno pratica) degli elaboratori come sussi-
di didattici.
Il massimo sforzo innovativo fu compiuto anni fa con il progetto di ri-
forma delle scuole secondarie, in cui si prevedeva per l'indirizzo scienti-
fico nientemeno che la trattazione dei sistemi di numerazione binaria ed
esadecimale.
Ma anche questa rivoluzionaria modernizzazione è naufragata nel nulla
e, come è ben noto, la proposta è rimasta tale ed è stata riposta in un
cassetto.
Un persona! costa più o meno come un galvanometro, ed anche il mode-
sto bilancio di una scuola potrebbe prevederne l'acquisto.
Esso, come vedremo, può essere utilizzato come sussidio anche per altre
discipline oltre la matematica.
So per esperienza personale che gli studenti (almeno la maggior parte di
essi) giudicherebbe stimolante ed interessante la possibilità di imparare il
linguaggio Basic (o il Pascal), e di lavorare ogni tanto con un computer.
Alcuni argomenti di studio potrebbero essere ulteriormente approfonditi
realizzando collettivamente un programma applicativo dell'argomento
studiato.
82 FISICA

Occupiamoci ora di alcuni programmi aventi per oggetto la fisica.

UNITÀ DI MISURA

10 REM COPYRIGHT IN BASI C


12 REM VIA SEZZE 22 LATINA
14 REM TEL. 48763 1
16 POKE 53280,10 : POKE 53281.3
20 CLR : PF.: ItH ":'I:"
:30 PRINT")ll~J rffRASFORMAZIONE DELLE UIHTW DI m::;URA::"
40 PRINT: PRitH : FORK=l T040 : PRltH""•" ,; : t·IE>m:.:
50 PR I NT ":~OCHE TI PO DI TRASFORMAZ I Clt-IE TI ItHEF:Es::.. fl: "
6€1 PF; I NT" :t!ll - r~:!Jt·KlHE ZZ f'1"
70 PRHIT"2- !ff~MPO"
8€1 PF: I tH "3- ri./~LOC I TA ' "
90 PRINT"4- r~~1_: ELERAZIONE"
100 PR I tH" 5- r~~JRZA"
110 PR ItH" 6- !:E~·lERG IA ( O LAVORO ) "
120 PRltH"7- fF:=]TE~lZA"
130 PR un Il :,I'1':iBATT I IL NUMEF.:O SCELTO:':"
140 GETA$ : IFR$=" "THEtH40
150 R=VALCR$ ) - IFA>7THEN140
160 ONAGOT01000. 2000 ,3000,4000 , 5000.6000.7000
170 GOT0140
100~1 REM-LUt4GHEZZE
1010 DIMLC7 , 7)
1020 FORK=1T07 =FORJ=1T07
1030 READLO( , n
1040 NEXTJ : NEXTK
1050 GOSUB10000
1060 PRIHT"ll~J 1-METF.:I"
1070 PRINT" 2-MIGLIA"
rna0 PRINT" 3-POLLICI ( rnCHES ) Il
1090 PRHIT" 4-PIEDI ffEET>"
1100 PRINT" 5-YARDE"
1110 PRHIT" 6-MIGLIA MARINE"
1120 PRINT" 7-RNNI LUCE"
1130 GO SUB HH 00
1160 GO SUB 1€1200
1170 R=D*L<A , B>
1180 PRINT"~IL RISULTATO E' ="R
1190 GO SUB 113300
1200 GOT01050
2000 F:EM-TEMPI
2005 FORH=1T049 :READZ : NEXTH
2010 DIMTC5 , 5)
2020 FORK=1T05 =FORJ=1T05
2€130 READH K, J)
2040 NEXTJ : NEXTK
2050 GOSIJB10000
2060 PR nn Il )!00 1-SECOt{!.J I "
2070 PRitH" 2-MrnUTI 11
208€1 PR I NT" ::::-OF:E 11
209C1 PR I tH" 4-G I OF:N I "
2100 PRitH" 5-ANt4I"
2110 GOSUB10100
2120 GOSUB10200
213€1 R=It*T(A, B)
2140 PRINT"~IL RISULTATO E' ="R
FISICA 83

2150 GOSUB10300
2160 GOT0205 ~J
3000 REM-VELOCITA '
3010 FORH=1T074 :READZ :NEXTH
3(12(1 DIMV(4, 4)
3030 FORK=1T04 :FORJ=1T04
3040 REAill/ (K, J)
3050 NEXTJ :NEXTK
3060 GO SUB 100t10
3070 PRINT"~~ 1-CM/SEC"
3080 PRINT" 2-M/SEC"
3090 PRINT" .3-KM/H"
3100 PRINT" 4-NODI"
3110 GOSIJB 11;:t 10(1
3120 GO SUB 1(120121
31313 R=D*l/<A , B)
3140 PRINT"~IL RISULTAro E' ="R
3150 GO SUB 11.Bt113
3160 GOT03060
4000 REM-ACCELERRZIONI
4010 FORH=1T090 :READZ :NEXTH
4020 Dil1'H3, 3 )
4030 FORK=1T03:FORJ=1T03
4040 READAOC J)
4050 NEXTJ:NEXTK
4t16(1 GOSUB 101::1t10
4070 PR I tH llt~J 1-M/SEC PER SECO~mo
Il Il

4080 PRINT" 2-KM/H PER ORA"


4090 F'Rlt-IT" 3-KM/ H PER SECOt·IDO''
4100 GOSUB1010t1
4110 GOSUB10200
412€1 R=D*R(A . B)
4130 F'R It-n '' m L RI SULTATO E· =="i;::
4140 GOSUB 11::t:::o0
415€1 GOT04t160
5(100 F:EM-FORZE
5010 FORH=lT099:READZ :NEXl H
5020 DIMF(5,5)
5030 FORK=lT05 :FORJ=lT05
5040 READF o'.K .• J)
5050 NEXTJ :NEXTK
50613 GOSUB 100013
5070 PR INT" :~OO 1-[1 I t·lR"
508(1 PR I t~T" 2-t·lBJTON"
5090 PR I tH" :3-KG (PESO) "
5100 PRINT" 4-LIBBRA"
5110 PRINT" 5-0NCIR"
5120 GOSUB1011::10
5130 GOSUB10200
5140 R=D*F(A,B >
5150 PRitH"llIL RISULTATO E'. ="R
5160 GOSUB 103013
5170 GOT05060
6000 REM-ENERGIA
6010 FORH=1T0124:READZ:NEXTH
6020 [l!ME<6, 6)
6030 FORK=1T06 :FORJ=1T06
6040 REA DE ( K .• .J )
6050 NEXTJ :NEXTK
6060 GOSUB10000
6070 PR I ~IT ''liti'.! 1-ERG"
84 FISICA

6080 PRINT" 2-JOULE"


6090 PF:.ItH" 3- KILOGRAMMETRI"
6100 PRINT" 4-CALORIA"
6110 PRINT" 5-K ILOWATTORA"
6120 PRitH" 6-ELETTRON'./OL T"
6130 GOSUB10100
6140 GOSUB 10200
6150 R=D*E <A, B)
6160 PRINT"~IL RISULTATO E' ="R
6170 GOSUB10300
6180 GOT06060
7000 REM-POTEt~ZA
7010 FORH=1T0160 :READZ: NEXTH
7020 Dlt1P(4 , 4 )
7030 FORK=1T04 :FORJ=1T04
7040 READP ( K, .J )
7050 t~EXT J : ~iEXT K
7060 GOSUB10000
7070 PRI NT"ml 1-ERG/SEC"
7080 PRINT" 2-WATT"
7090 PRINT" 3-HP "
7100 PRIHT" 4-CAL/ SEC"
7110 GOSUB10100
7120 GOSUB10200
7130 F:=D'f.P(A, B)
7140 PRitH"~IL RI SULTATO E' ="R
7150 GOSUB10300
7160 GOT07060
8000 E t~D
10000 PRitH":JSOt~O DISPONIBILI LE SEGUENTI UtHTA-' : " : RETUF:N
10100 PRINT":OOBATTI IL NUMERO CORRI SPONDENTE ALL'UNI-"
10110 PRINT"TA' DI PRF:TEMZA - ) ";
10120 GETA$ : IFA$= THEt-H0120
1111

10125 PRitHA$
10130 PR INT" JIE QUELLO CORRI SPmHtENTE ALL ,. Ut.U TA ,. AL - "
10140 PRINT"LR QUALE DESIDERI RF:RI VARE - ) " i
10150 GETB$ : IFB$=""THEN10150
10155 PRINTB$
10160 A='./AL CA$ ) : B=VAL CB$ >
10165 IFA)70RB>7THENGOT01 000
10170 RETURN
10200 REM-R I CHIESTA DATO DA TRRSFORMAF:E
10210 INPUT" J!lDATO DA TRASFORMARE =" .; D
H:t220 RETURt~
10300 REM-RICHIESTA DI CONTINUAZIONE
10310 PR IHT ":Q=!NCOF:A ? "
10320 GETA$ : I FA$= THEN10320
1111

10330 IFA$=" S "THEt~ R ETURN


10340 PRltH"CAMBIO TIPO DI TRASFORMAZIONE ? "
10350 GETA$ : IFA$=" "THEN10350
10360 IFA$="S "THEN10
10370 PRitH"::IIK - CIAO ! !"
10375 EMD
10380 END
20000 DATA1 , 6.2E- 4 ,39.4 , 3.28, 1.094 , 5.4E-4,1.06E-16,1 609,1,6.37E6 , 5291
20010 DATA1764,.87 , 1. 7E-13 , .025 , 1.57E-7, 1, 8. 3E-2.2 . 8E- 2, 7 . 7E-5 , 2 . 7E-1 8
20020 DATA. 305 , 1.89E-4 , 12,1 , . 333, 1. 64E-4 ,3. 2E-1 ? ,.914 , 5.67E-4 ,36,3 , 1
20030 DATA4.93E-4 , 9.6E- 17, 1853, 1.1494, 1. 3E4 .6098,2027, 1, 1.96E-1 3,9.4E15
20040 DATA5. 8E1 2,3 . 7E1 7, 3.1E16, 1E1 6, 5.1E1 2, 1, 1, .01 6667,2 . 78E-4 ,1 .1 6E-5
20050 DATA3.1 7E-8 , 60 , 1, .016, 6.9E-4 , 1. 9E-6 ,3600 , 60,1 , .0417, 1.14E-4 , 86400
20060 DATA1440,24,1 •. 00274 , 3.1 5E-7, 5.26E-5,8760,365, 1, 1, . 01 , . 036 , .0194 , 100
20070 DATAl , 3.6, 1.94,27.78,.278 , 1 • . 5397, 51.48 • . 515 , 1. 853, 1, 1, 12960 ,3. 6
FISICA 85

20080 DATA7.7E-5.1 ,2 .78E-4 •• 278,3600,1,1,1E-5 , 1.02E-6, 2.25E-6 ,3 .61E- 5


20090 DATA1E5,1 •• 102 •. 225,3.61,9.8E5,9.8.1.2.2,35.34,4.45E5,4.45,.454.1
20100 DATA16.04,2.77E4 •. 277.28.3E-3,.0623.1,1,1E-7,1.02E-8 ,2 . 39E-8
20110 DATA2. 78E- 14.6.29E11 ,1E7 , 1 •. 102 •. 239.2. 78E-7 , 6. 28E- 18,9 .8E7
20120 DATA9.8,1.2.343.2.72E-6,6.2E19,4.19E7 , 4.19 •. 4265.1.1.16E- 6,2.6E19
201 30 DATA3.6E16, 3.6E6,3 .67E5 , 8.6E5,1.2. 3E25, 1.59E-12, 1. 59E-19,1.62E-20
20140 DATA3.8E-20 , 4.4E-26, 1,1 . 1E-7 , 1.36E-10,2.39E-8, 1E7. 1,1. 36E- 3 • . 239
20150 DATA7.36E9, 735 . 5, 1.178, 4.19E7,4.19,5.62E-3.1

Quasi tutte le richieste impiegano l' istruzione GET invece dell'INPUT, in


modo da eliminare l' uso del tasto di RETURN e rendere più pratico lo
scorrimento del programma.
Fino alla linea 140 si ha la stampa del " menù" disponibile, consistente
in sette diversi tipi di trasformazione.
In ciascuna delle sette scelte possibili il programma segue sempre lo stes-
so criterio, ed è quindi sufficiente analizzarne una sola: per le altre tutto
va allo stesso modo .
Le tabelle di trasformazione che ho utilizzato sono le seguenti:

LUNGHEZZE

miglio anno
metro miglio inch foot yard
marino luce

metro 6,2 · lo-4 39,4 3,28 1,094 5,4 · lo-4 1,06·10-16

miglio 1609 6,37·106 5291 1764 0,87 1,7·10"13

inch 0,0254 1,57·10·7 8,3·10-2 2,8·10·2 7,7 · 10·5 2,7·10· 18

foot 0,305 1,89 · lo-4 12 0,333 1,64·10-4 3,2·10- 17

yard 0,914 5,67 · lo-4 36 3 4,93·10-4 9,6· 10·17

miglio
1853 1,149 l,3 · 104 6098 2027 1,96·10· 13
marino

anno
9,4 · lOIS 5,8 · 1012 3,l · 1017 3,l · 10 16 1()16 5,1·1012
luce
86 FISICA

TEMPI

secondi minuti ore giorni anni

secondi 1,6 · 10-2 2, 78 · lo-4 1,16 · 10"5 3,17·10"8

minuti 60 1,6 -10-2 6,9·10"4 l,9 · 10-6

ore 3600 60 0,0417 l,14·10-4

giorni 86400 1440 24 2,74·10-3

anni 3,15·10'7 5,26 · 10"5 8760 365

VELOCITÀ

cm/sec / sec km/ h nodi

cm/ sec 10-2 0,036 1,94 -10·2

m/ sec 102 3,6 1,94

km/h 27,78 0,2778 0,5397

nodi 51,48 0,5148 1,853

ACCELERAZIO NI

km/ h
m/ sec2 km/ h2
per sec.

m/ sec2 12960 3,6

km/ h 2 7,7 -10-5 2,78·10-4

km/ h
per sec. 0,278 3600
FISICA 87

FORZE

dina newton Kgp libbra oncia

dina 10. -s 1,02·10"6 2,25·10·6 3,61 · lO·S

newton lOS 0,102 0,225 3,61

Kgp 9,8 · lOS 9,8 2,2 35,34

libbra 4,45 · lOS 4,45 0,454 16,04

oncia 2,77 · 10" 0,277 28,3 · 10-3 6,23·10- 2

ENERGIA

erg joule kgm ca! kWh eV

erg 10-7 1,02·10"8 2,39·10"8 2,78-10"14 6,29·10"11

joule 101 0,102 0,239 2,78·10" 7 6,28·10"18

kgm 9,8 -107 9,8 2,343 2,72-10"6 6,2 . JOl9

Ca! 4, 19-107 4,19 0,4265 l,16·1<t6 2,6· 1019

kWh 3,6 · 1013 3,6·106 3,63 · lOs 8,6 · lOS 2,3·102S

eV 1,59 - 10- 12 1,59 -10· 19 1,62 · J0· 20 3, 7 · J0·20 4,4. 1(}26

POTENZA

erg/ sec w Hp Cal/sec

erg/ sec 10-1 1,36 -10-10 2,39·10" 8

w 10-1 l,36·10- 3 0,239

Hp 7,355·1<>9 735,5 178

Cal/sec 4, 19 ·IO 7 4,19 5,62·10"3


88 FISICA

I fattori di trasformazione contenuti nelle tabelle sono stati ordinata-


mente riportati nei DATA alle linee 20000-20150. Nelle linee 150-220, a
seconda del tasto premuto si ha l'invio alle zone di programma interes-
sate.
Se per errore si preme un tasto diverso da quelli previsti, il GOTO 140
riporta indietro il programma che in questo modo accetta solo le rispo-
ste previste.
Analizziamo per esempio la routine 5000 riguardante le forze.
Nella linea 5010 vengono letti i primi 99 DATA e immagazzinati nella
variabile Z (che non verrà utilizzata ed ha il solo scopo di eliminare i
DATA precedenti a quelli che interessano).
Poi in 5020 c'è il dimensionamen to della variabile con due indici corri-
spondente alla matrice quadrata dei valori contenuti nella tabella di tra-
sformazione delle forze.
Le variabili con indici sono dimensionate una alla volta in ciascuna rou-
tine, anziché tutte insieme all'inizio del programma, perché in questo
modo si ha un consistente risparmio di memoria.
Nelle linee 5030-5050 si ha il riempimento della matrice F con i valori
dei DATA, con due cicli FOR NEXT uno dentro l'altro (K è l'indice di
colonna e J quello di riga). Si passa poi alla subroutine 10000 che stam-
pa semplicemente una stringa esplicativa.
Le linee 5070-5110 stampano quindi i nomi delle unità che è possibile
trasformare, e le subroutine 10100 e 10200 richiedono all'operatore qual
è l'unità di misura di partenza e quale quella di arrivo.
Anche questi dati vengono accettati con l'istruzione GET, e corrispondo-
no rispettivamente ad A$ e B$.
Prima del RETURN esse vengono trasformate in A e B (variabili numeri-
che e non più di stringa).
Individuate le posizioni A e B della tabella, a questo punto la variabile
F(A,B) corrisponde al fattore di conversione che deve essere impiegato.
Nella linea 10210, in precedenza, era stato anche richiesto' il valore D
del dato che deve essere trasformato.
Siamo ora alla linea 5140 che calcola il risultato R cercato, con una sem-
plice moltiplicazione.
Nella linea successiva viene stampato il risultato, e si ha l'invio alla su-
broutine 10300 per la richiesta di continuazione. Di qui se si vuole conti-
nuare nello stesso tipo di trasformazione , si ha il RETURN e poi dalla
5170 il rinvio alla 5060 dove si ripete il procedimento.
Se non si vuole continuare, viene proposto il cambiamento di tipo di tra-
sformazione e, in caso di risposta affermativa, si ha il ritorno alla linea
10 dove il CRL impedisce il ridimensioname nto eventuale di una variabi-

'Con una istruzione INPUT, altrimenti il dato da trasformare dovrebbe essere costituito da
un solo carattere.
FISICA 89

le con indice già usata, ed evita la necessità di ordinare un RESTORE


per rimemorizzare i DATA.
Come già accennato, le altre routine funzionano allo stesso modo.

TEORIA DEGLI ERRORI

5 REM CJPYRIGHT IN BASIC


6 REM VIA SEZZE 22 LATINA
7 REM TEL. 487631
8 CLR : PRINT"'.'J:ll"
9 POKE53280.t0 : POKE53281,3
10 DIMA(60 ) ,B(60)
11 PRINTTABU0)"TEORIA DEGLI EF.:fWF.'.HJ"
12 FORK=1T040: PRIHT"•";: ~IEXT
20 PRINT"::lil'.EFFETTUAHDO DIVERSE VOLTE LA MISURA DI"
:30 PRINT"UNO STESSO FEMOMENO FISICO CON UNO"
40 PRINT"STRUMEIHO SUFFICIEIHEMENTE SENSIBILE,"
50 PF.:INT"Sl OTTIEME U~IA SERIE DI VALORI NUMERICI"
60 PRINT"GENERALMENTE DIVERSI FRA LORO."
70 PRHIT")IEIJPPONIAMO DI ESEGUIRE 50 LETTURE CONSE"
80 PR I NT "CUTI VE r~ELLA DUF:ATA:I DI Ut·IO STESSO FENO-"
90 PRHH"MENO CON U~I CRONOMETRO MOLTO SENSIBILE."
100 PR I ~n" J.tlF.:A ELABORERO ,. CASUAU1ENTE TALE SERI E"
1 Hi PRINT"DI LETTURE."
12(1 GOSUB 1f10fl0
14(1 PIU m Il r:ll.JN ATT It10 DI PAZIENZA:: Il
150 PRHIT : FORK=0T059
160 A<K>=RND<TI) : A(K)=INT(ACK)*l000):A(K)=A(K)/1000:NEXTK
170 FORK=0T059STEP4
18(1 FORJ=0T03 : PRINTA<K+J); "SEC",
190 NEXT J : ~IEXTK
200 GOSUB 1(1000
2 1(1 PRHIT"E ' IMPOSSIBILE STABILIRE G!UALE DI TALI"
220 PR IIH "LETTURE SI A G!UELLA ESATTA <AMMESSO CHE"
230 PRIIH"CI SIA)."
240 PF: I NT ")!IDEL RESTO L ' INSIEME DELLE 60 LETTURE H
250 PR INT "E ' ::H~Z ' ALTRO P IU ' SIGNIFICATI 'v'O DI UNA"
260 PRIIH"LETTURR SINGOLA."
270 PF: IIH Il :~II L VALORE p I IJ" PFWBAB I LE J p Ili / VI e mo A Il
280 PRIIH"QUELLO I/ERO E'' LA fS·1EDIA ARITMETICAt:"
290 PRIIH"CHE SI OTTIENE SOMMANDO LE 60 LETTURE"
:300 PRIIH"E DIVIDENDO IL RISULTATO PER 60"
3 H3 F'F.'.IIH":d~ELL '. ISTAIHE IN CUI PREMI UN TASTO, 10"
320 PRIIH"CON COMODITA' MI CALCOLERO'. IL VALORE"
330 F'RINT"DI TALE MEDIA."
340 GOSUB10000
:350 PRINT"LA MEDIA ARITMETICA E': "
360 FORK=0T059
:370 M=M+A<K)
.380 ~lEXTK
385 R=t1/60 : R=INT<R*10000) : R=R/1000~
390 PRINTTAB < 10) "f8I~J1EDIA="; R
400 PRHIT" :'1m=..E DIFFERENZE FRA QUESTA MEDIA ED OGNI"
410 PRINT",SINGOLA LETTURA VENGONO DETTE"
420 PRINTTAB<9> ":t•J~CARTI DALLA MEDIA:"
430 PRINT" :•.IroRA CALCOLO TUTTI GLI SCARTI : "
440 GOSIJB10000
470 FORK=0T059STEP4
90 FISICA

480 FORJ=0T03:BCK+J)=R-A(K+J):B(K+J)=!NTCBCK+J)*10000)
485 BCK+J)=BCK+J)/10000
49e PRINTBCK+J) , :NEXTJ:NEXTK
500 PR ItH" :OORA SIJDD I V IIIO L ·' ItHERVALLO Fl':A LO"
510 PR ItH" SCARTO P IU / BASSO E QUELLO P IU' ALTO I W
520 PRINT"DIECI PARTI.E CONTO QUANTI SCARTI CI"
530 PRINT"SONO IN CIASCUN INTERVALLO."
540 GOSUB 10(11;,0
560 PRitH"~~TTrnDERE, PREGO::" : FORK=0T059
570 IFBCK) (- .8ANDBCK) ) -1THENNC0)=NC0)+1
580 IFBCK)(- , 6ANDBCK) ) -.8THENNC1)=NC1)+1
590 IFBCK) ( -.4ANDBCK))-.6THENN(2)=NC2)+1
600 IFBCK) ( -.2ANDB<K>>-.4THENNC3>=NC3)+1
610 IFBCK> <0ANDBCK) ) -.2THENNC4)=NC4)+1
620 IFBCK) (.2ANDBCK>>0THENN(5)=NC5>+1
630 IFBCK) {. 4ANDBCK)).2THENNC6)~NC6)+1
640 IFBCK){.6ANDBCK>>.4THENNC7>=NC7)+1
650 IFBCK)<.SANDBCK)).6THENNC8>=NC8)+1
660 IFBCK><1ANDB CK)) .8THENN C9>=NC9)+1
6713 NEXTK
681) PRitH" :llFRA -1 E -. 8 CI SONO".; t·lC0) i "SCARTI"
69(1 PF:HH"FRA -. 8 E -. 6 CE NE SOi-iO" i N< 1)
71:11:1 PI': ItH" FRA - • 6 E - • 4 CE t·lE SOMO" .; t-H 2)
7113 PRitH"FRA -. 4 E -. 2 CE t~E SONO" i Mo'.3)
720 PRUff"FRA -. 2 E (1 CE t·lE SONO" i ~lC4)
7:30 PRINT"FF.:A O E • 2 CE t~E ::;Ot~O"; t-1(5)
740 PRitH"FRA • 2 E • 4 CE t·lE SO~lO" .; ~1(6)
750 PRitH"FRA • 4 E • 6 CE NE SO~IO" i N(7)
761.::1 PRIMT"FRA • 6 E • :;i CE ~lE S@O" i NC8)
?713 PF:ItH"FRA • 8 E 1 CE NE SONO"; t·l C9)
780 PRHH" :O::OME PUOI HOTARE GLI SCARTI NOtl SOt·IO"
790 PR nn" DI STR IE:U 1T I A CASO I MA s I ADDrn::;A~lO Il
800 PR I t·ff" I tHOF.:t·lO ALLO SCAF.:TO NULLO, COF.:R I SPOM-"
810 PRitlT"DEtHE ALLA MEDIA ARITMETICA."
820 PRitH"E / PEI': 1JUESTA RAGIONE CHE LA MEDIA"
83(1 PF:ItH"'./IEt-lE CONSIDERATA IL VALORE PIU ' "
:::40 PR ItH" PROBAB I LMEtHE VI e mo flL './ERO [I I TUTTA"
:35€1 PF: ItH"LA SER IE DI MIS;UF:E."
860 GO SUB 10fHX1
88(1 PF:HIT"L'. ISTOGF:AMMA CON I DATI FIMOF.:A"
890 PF:ItH"ELABORATI E'. IL SEGUEtHE: "
920 oo::;uB 1 i::11x10
925 PRitHTAB <2fO "flt·HJM. ::;CARTI•"
930 FORK=1T030 :POKE5618(1+K,0
935 POKE1908+K,114:NEXTK
940 FORK=OT09 : IFN(K) =0THEN970
945 FORJ=0TON(K)
950 POKE56141+3 *K-401J,10
955 POKE1869+31K- 40*J,1132
960 ~lE:=<TJ
97(1 ~lE i<TI<
98€1 PF: I m" :~r,r~1~r.~~r~m~r~r~x~m~r~r~rl!l~t1.I~r~r,:csc. t·IEGAT. -t f::f1.ARITM.:: : ;c.Po:;IT.•".:
985 FORK=1T020 : POKE56195-401K,0
987 ~JKE19 23-40 *K ,115:NEX TK
990 PRHIT"~";
11300 GOSUB 1002[1
1010 PPHIT"LA CURVA Ht1 EUUAZIOt·IE : "
1(1213 PR IMTTAB cn " 'l~J 2 2"
1030 PPINTTABC9)" -H X"
1040 ~RINTTAB(9)" H E"
1050 PPINTTABC?)" 'r'=-
1060 PRINTTABC9)" ·~·
. . ,..-11"
FISICA 91

1070 PF: HITTAB <9 ) " rr"


108€1 GO SUB 1i.;:11j00
1100 PRHff"DO'·/E >; E 'r' ::;m10 GLI ASSI CHE COMPAIONO"
1110 PRHff"NELL ' ISTOGRAMMA, ED H Ut·I PARAMETRO CHE"
11 2 0 PRINT''INDICA DI QUANTO E' SCHIACCIATA LA CURVA"
1 t:;:i.;:1 PRitH" ItHOR~IO AL VALORE MEDIO."
11 :35 PRitH":to:H VIEt-IE DETTA r~: OSTAtHE DI PRECISIOt~E::."
1140 PRHff":t'PIU ' AL TO E' H, PIIJ ' SOTTILE E' LA CAMPAMA,"
1150 PRIHT"E F'IU ' PICCOLO E'. L ' EF:RORE ESISTENTE FRA"
1160 PRitH"LA MEDIA E IL VALORE I/ERO !!ELLA MISURA"
1170 PRitH"CHE SI VOLEVA ESEGUIRE."
11 72 PF.:Hff"~BE IL tlUMERO DI LETTURE FOSSE ::;TATO"
1174 PF.:ItH"MOLTO PIU ·' ELEVATO DI 6(1 .. LA CURI/A A"
11 76 PRHff"CAMPAMA SAREBBE STATA MOLTO PILI ' NETTA"
1178 PRINT"E REGOLARE."
1180 PF.: ItH ":t!LA CUF:VA SI CH IAMR r:it:::UR\IA DI GAUSS::"
1191:'.1 (~0'3 1JE: 1000(1
1W0 PI<' I tH "VUOI RIVEDERE L ·· ISTOGRAMMA ? "
1210 GETA$ : IFA:t:=" "THE~H 2 10
1220 IFA$=" S"THEMPRitH " :.1" : GOT0925
12.31:1 PF: ItH " :~J·/UO I RI './EDERE TUTTO IL PROGRAMMfl ? "
1240 GETA$ : I FR:t:=" "THEt-11 2 40
1250 IFAS="S"THEN5
1260 PR l tH " :lfl:~.nK - e IflO I ! Il
1265 Et-ID
1270 END
10000 REM-ATTESA
10011~1 PRINTTAB ( 11 ) " .l!l<PREMI Ut-1 TASTO )"
10020 GETA$ : JFAS= ""THEN10020
1(1030 PF:INT":.1" : RETURtl

La trattazione didattica della teoria degli errori, pur non essendo sempli-
cissima, non è neanche troppo complicata.
Questo programma potrebbe ottimamente servire come sussidio in grado
di fornire dei validi esempi applicativi.
Dopo una breve introduzione esplicativa, alla linea 160 vengono elabora-
ti 60 valori casuali compresi tra O ed I.
Nella stessa linea ciascuno di tali valori A(K) viene moltiplicato per mil-
le, e dopo aver considerato la sola parte intera il risultato viene ancora
diviso per mille.
In questo modo vengono eliminate tutte le cifre decimali oltre la terza.
Questi 60 valori casuali A(K) così generati, rappresentano la simulazione
della lettura di un intervallo di tempo effettuata 60 volte consecuti va-
mente.
Il programma si propone di mostrare come un certo numero di letture
fornisca molte più informazioni di una lettura singola, ed offra la possi-
bilità di determinare un risultato (la media aritmetica) molto più attendi-
bile di quello espresso da una sola lettura.
È inoltre possibile determinare una stima abbastanza raffinata del pro-
babile errore commesso sul risultato.
Non occorrono particolari delucidazioni sul programma che è quasi
completamente realizzato in forma discorsiva.
92 FISICA

L'unica subroutine è la 10000 che ha lo scopo di arrestare lo scorrimen-


to per consentire all'operatore di leggere lo schermo.
Nelle linee 360-385 viene calcolata la media aritmetica R (con una cifra
decimale in più rispetto alle letture singole).
Poi vengono calcolati gli scarti, cioè per ciascuna lettura si determina la
differenza

R-A(Kl

e il risultato di ogni differenza (che può essere positiva o negativa) va a


formare l'insieme dei 60 scarti indicati con B{K).
I due cicli FOR NEXT uno dentro l'altro nelle linee 470-490 servono per
stampare questi 60 scarti in un 'unica tabella costituita da 15 righe e 4
colonne.
Successivamente (linee 560-670) l'intervallo fra -1 ed 1 viene suddiviso
in IO parti uguali ' e vengono contati gli scarti contenuti in ciascun inter-
vallo.
I valori N{O), N{1), ... , N(9) rappresentano appunto il numero di scarti
presenti in ogni intervallino, al termine del ciclo FOR NEXT.
Questi valori vengono quindi stampati alle linee 680-770.
Sessanta letture sono poche per portare avanti un discorso statistico ri-

l!Urlltro
scarti

scarti
pot.itivi

-1 -0,8 -0,4- -0,2 me4ib o,z 0,6 o,&


arilmetic.l

Figura 10

'Le letture simulate hanno valori compresi fra O e I, ma gli scarti (che possono essere posi-
tivi o negativi) vanno da - I ad I.
FISICA 93

goroso, ma sono sufficienti per cominciare a vedere che gli intervalli


centrali sono molto più popolati di quelli periferici.
Il massimo popolamento si avrà in corrispondenza del valore medio R.
Questa ca ra tterist ica è evidenziata dall'esecuzione di un istogramma met-
tendo in ascissa i si ngo li intervallini e in ordinata il numero di scarti pre-
senti in ciascuno di essi.
L'istogramma viene eseguito con le istruzioni POKE nelle linee 925 -:- 990.
Se l'intervallino considerato non ha alcuno sca rto, la seconda istruzione
della linea 940 gli fa saltare il ciclo J di stampa della colonnina.
Pur essendo grossolano a causa del limitato numero di letture, l' isto-
gramma ha già una forma caratteristica "a campana " che permette di
generalizzare il di scorso e introdurre la funzione di Gauss

dove x ed y corrispondono agli assi dell'istogramma di figura 10.

Figura 11

Il parametro h viene detto costante di precisione, in quanto più basso è


il suo valore, più stretta è la campana, minore è lo "sparpagliamento "
delle le tture intorno alla media, e quindi più p iccolo l'errore probabil-
mente commesso nel considerare R come risultato della misura.
li progra mma finisce a questo punto con la richiesta di ri vedere l'isto-
gramma o di eseguire l'elaborazione di una nuova serie di dati .
94 FISICA

Potrebbe essere completato dal lettore con il calcolo di h che corrispon-


de a

1
h = p:::J2

dove µ è lo scarto quadratico medio, che a sua volta è dato dalla formu-
la

cioè dalla radice quadrata della somma dei quadrati degli scarti, diviso il
numero N di scarti complessivi.
Il dimensionamento delle variabili con indice A(K) e B(K) alla linea 9
può essere aumentato a piacere, correggendo però le linee 150, 170, 360,
385, 470, 560.
La variabile N(K) non ha bisogno del dimensionamento perché K varia
da O a 9, in ogni caso.

CINEMATICA

È un maxiprogramma (almeno per un PET da 8K), che permette di r i-


solvere qualsiasi problema di cinematica.
Al solito, sfrutta al massimo le istruzioni GET in modo da ridurre l'uso
del tasto RETURN e rendere più spedito lo scorrimento.

10 REM COPYRIGHT IN BASIC


12 REM VIA SEZZE 22 LATINA
14 REM TEL . 48763 1
20 CLF: · PF.: I tH" :"1~"
30 PRIHTTABO:: 15) "CitlEMflTICA"
40 PRINT:GOSUB11000
50 PF' ItH :muEs TO PROGF.:AMMA PEF:MEHE [I I R I ::;OL './EF.:E
Il Il

60 PF' I tH 1AIALUt·lOUE PROBLEMA DI e I t·lE.MA r I CA.


Il Il

70 PRHlT" :~:PICORDATI CHE TUTTI I DATI DEVOllO E::SE-"


:?.0 PRINT"F:E E'.3PRESSI t~EL ::;I:3TEMA f~"l. K. ·:: . ::
11

~~ PRINT : GOSUB11000
100 PR INT " .fJI MOTI FOt·IDAMEt-lTALI SOt~ O TRE : "
110 PF.: I tHTAB ( 11~)) ".m - F.:ETT IL I MEO Ut~ I FOF.:ME"
12t1 PF:HlTTAB< 10) u:~l2- F:ETT. UtHF. ACCELEF:ATO"
1 ~: 0 PF: I IHTAB ( 10) m-- e I F:COLARE Ut·l I FOF.: ME
Il Il

1413 PF.: I IH" :~ll![:0:3A SCEGLI ? " : F= 1 : GOSUB 1t11Zn::10


150 A=IN1' (A):IFA)30RA<=0THEN10
160 ONAGOT01000.4000,7000
1000 REM-MOTO UNIF.
1010 PRitH":1.A LEGGE DEL MOTO E/ "
102t1 PR I MTTAB ( 16) ":'.l..=S+VT"
1025 PR I ~IT" :o :HE CO~IT I El·lE 4 VARIABILI E DO"/E :3 F.:AP-"
10:30 PR INT" PRESEIHR LO f::t3PAZ IO It·l! Z IALE::. "
FISICA 95

1040 PR UlT u:e.DUAtHE t·lE COt·lO:::c I ? " ; : F= 1 : G0:3UB l01J1J0 : PR HITA$


1050 A=INTCA) : IFA<3THEN9000
1060 IFA) =4THEt·lPRINT" 9l~F.:I SPOt·mI COEREtHEMEtHE ! Il : oo:::uB 101x11:::1: rJOT010
1070 PR I tH "@JALE vuo I co~m:::CERE ? " j
1080 F=1:rJOSUB10000 : PRINTA$
11390 rJOSUB 11 (100
110f1 IFA$="L"THHl120(1
1110 IFA$="S"THEN1400
1120 I FA$=" V" THEt·l l 6t1(1
1130 IFAS="T"THEN1800
1140 GOTO 101 (1
1200 INPUT"~J.IJAtH ·.. E '. S" ; S
1210 It·lPUT":llE 'V" .: '.,/
1220 INPIJT":llE T";T
1230 L=S+V*T
1240 GOSUB 11130(1 : PR I tH ":e.LO :::PAZ I o PEPCOR:::o E ,. Il L Il METRI "
1250 GOT01200t1
1400 I t~PUT " :~UUANT ,. E' L" .: L
1410 INPIJT":U:: './";'./
1420 It·lPUT" :U:: T" ; T
14313 S=L-\•'*T
1440 GOSIJB 110(10 : PRitH ")I.LO SPAZIO I ~l I Z I ALE E ' "S" METF.: I"
1450 1301012000
1600 INPUT")l))IJAtH ' E ' L";L
1610 INPIJT":t.ED S"; S
1620 INPUT":e.E T" ; T
1625 IFT=0THEt·lPRHH":TT1" : GOT01620
1630 \/=(L-:::)/T
1640 GOSUB110(HJ : PRitH" :Q..A 'vELOCI TA ·" E ' DI "V"M/S"
1645 PRIIH"lUPPURE DI "V*3· 6"KM/ H"
1650 GOTO 12(100
1800 INPUT":muAtH ' E·" L" ; L
1810 It·lPIJT":l!ED S"; S
1820 INPIJT"l'E V"; V
1825 IFV=0THEHPRIIH":TT1" : GOT01820
1830 T=CL-S )/I/
1840 GOSUBl 11;:1(113 : PF:ItH"mL TEMPO E '. DI "T":3EC."
1845 Hl=T/3600 : H=INTCH1) : Ml=(H1-H>*60 : M=INTCM1> : Sl=~M1-M)*60
1847 PRit~T"~)PPURE"H"ORE .. "M"MI~l. E"Sl "SEC"
1850 GOT012000
4000 F:EM-MOTO UN I F. flCCEL.
4010 PF.:HH"1E LEGGI DEL MOTO :::Ot·lO"
4020 PRINTTAB C8) "~1 2"
4030 PR I NT "L=S+L.JT + - AT"; TAB C21!:1) "\/=L·J+AT"
404t1 PRIIHTAB(8)"2"
4045 IFFF=1THENGOSUB11000 : RETURN
4050 PR I NT" :.100'./E ::: E,. LO f::iSPAZ I O INIZIALE:: E ~J LA"
4060 PRHH"f:fvELOCITA '. ItHZIALE::."
4070 GOSIJB11000
4080 PRINT"~IL PROBLEMA E ' RISOLVIBILE SE CONOSCI"
4090 PR rnr" f:t3:: , f:t·J:: E RLMEMO DUE DELLE ALTRE \IRR IA-"
4100 PF.:INT"BILI : r:t.. , A , T , v::."
4110 PRHH"~)UALI cmmscI '/ " _; : F=1 : GOSUB11:::1000 : C$=A$: PF.:HHA$
4120 PRHH"lE L'ALTRA ?" ; : F=l : GOSUB10f10f1: D$=A$: PRHHA$
4130 I FC$= "L "ANDD$=" A" OPC$= "A " AMDD$=" L" THEl-l50f113
4140 I FC$=" L "ANDD$=" T" ORC$=" T" At~DD$=" L "THEN5200
4150 IFC$="L"A~lDD$="V"ORC$="V"ANDD:t="L"THEN5400
4160 I FCS=" A" ANDD$ = "T "ORC$=" T" At·l DDS=" A" THEN56f10
4170 I FC$=" A" A~lDD$= "'·/ "ORC$=" I/" At·lDD$=" A" THEt·l5:300
4180 IFC$=":r- "At~DD$= "V"ORC$= "V"At·lDD$= "T" THEM60E10
4190 GOT04010
5000 FF=1 :GOSIJB4000
96 FISICA

5010 INPUTu:mUFHH '' E' S"; S


5020 INPUT")!'E l·J" ; ~J
5030 INPUT":t!'Eit L" ; L
5035 I FL =0THEN900e:1
5040 INPUT")!Eit A" ; A
5045 I FA=0THrn900e:1
5e:150 GOSUB1 le:100
51::160 V=SQRC2*A*L-2*A* S+W*W ):T= CV-W)/A
5070 PR I NT" '1J.I= " '·I" M/SEC"
5080 PRINT" :l!IT=" T "SEC"
5090 GOT012000
5200 FF=l : C;OSIJI:4000
5210 IMPUT"IDUAtH ' E' S"; S
5220 INPUT")!'E ~J" ; ~J
52313 INPUT":~It L" ; L
5235 I FL=0THrn9e:100
5240 INPUT")!E T" .: T
5245 IFT=0THEM9000
5250 C;OSUB 110130
5260 A=L-S-W*T :A=2*A/C T*T) : V=W+A*T
5270 PRI~H" '~N="'..l "M/SEC"
5280 PRINT"l!fl="A"M/SS "
5~90 GOT012000
5400 FF=1 : C;OSUB4000
5410 INPUT"l!D.UANT ' E'. S"; S
5420 INPUT")!'E W ; ~J
5430 INPUT":~ED L" ; L
5435 IFL=00RL=STHEN90 00
5440 INPUT":~ V"; V
5445 IFV=00RV=WTHEN9000
5450 CiOSUB11000
5460 A= <V*V-W*W) /(2*<L-S) ): T= <V-W) / A
5470 PRINT"lIT="T"SEC"
5480 PR I NT" ~.f1= "A" MI SS"
5490 GOT012e:100
5600 FF=1 : C;OSUB4000
5610 INPUT"mUAIH '' E' S"; S
5620 INPUT" )!E H'' aJ
5630 INPUT":t!'Eit A"; A
5635 I FA=0THEt~9000
5640 INPUT":~ T"; T
5645 I FT=0THEt~9000
5650 GOSUB11000
5660 L=S+W*T+ CA*T*T )/2: V=W+A*T
5670 PRINT"l!l..= " L "METRI"
5680 PR I NT" "li.lv'=" I/" 11/.SEC"
5690 GOT012000
5800 FF=1 : C;QSUB4000
5810 INPUT" ll:::tUAtH ''E"' S" ; S
5820 INPUT":U:: H'' ; W
5830 INPUT ")!E V" ; I/
5835 I Fl/=0THEM90e:10
5840 INPUT"lED A"; A
5845 I FA=0THEt~9000
5850 GOSUBl 1000
5860 T= C V-~D/A : L=S+l~*T+CA*T*D /2
5870 PR INT "lIT=" T-"SEC"
5880 PRitH"ll.="L"METR I"
5890 GOT012000
=
6000 FF 1 : GOSUB4000
6010 INPUT")i):::tlJANT ' E·' S"; S
FISICA 97

602(1 HWUT":~E l·l" .; l·J


61:::130 HWUT".PE T" .; T
6035 IFT=0THEN9000
6040 I t·WIJT" :P.E V" .; "i
6045 IFV=0THEN9000
6050 oo::;uB 110tnJ
6061::1 A=('./-1.J>/T : L=::O;+l·J*T +(fi.+'T*D ..·'2
6070 PF.:ItH":Pl.="L"METRI"
61Z1:::0 PF.: I tH "}')i:::" ti" M/:::;:.:;"
61:::190 GOTO 121J1~H3
7000 REM-MOTO CIRC .UN IF .
7010 PF.:ItH":.L..E LEGGI DEL MOTO 9Jt·l0"
7i;:115 PR I tHTAB".2f3 >"2"
702(1 PR I tHTAB <?) "211F: ...
1111

71;:1:;:(1 PF.:ItHTAB(5) "".l=-=211F:F A=--··


7040 PF.:ItHTAB<:::) "T"; TAB<27> "R"
7i;:150 PF.: I tH" :Pn:tE\1 I cot1o::::CEF'.E f1LMrno DUE '·JflR I ABILI"
71Z160 PF.: ItH "FF.:A f-;t./ .• R , T , F , A::"
7(170 CiOSIJB 1100i::1 : PF.: I tH ":muAL I Cot·IO::;c: I ? Il .:
7f1:::(1 F=l : GOSUB10000 : CS=AS:PRINTA$
?090 PR I tn Il E L ,. AL TF:A ? ".: : F= 1 : c;o::;UB1000i::1 : DS=AS ; PR I tHR$
71130 I FC$= " ..... "At-IDD$=" F.:" ORC$=" R" At·mDs= "'./" THEt·l80(HJ
?110 IFCS= "I/ "AND1'$= "A"OF:CS=""A"At~DDS"' "\i" THEl~f:l 00
7120 I FC:t=" F.:" At·IDDS= "A" Of<CS= "A" At-IDDS=" F.:" THEt·l8200
71313 I FC:t:=" './" AtHJDS= '' T "ORCS=" T" ANDDS=" V" THEt·l83iJ0
714t1 I FC:f:=" \I" At·IDDS= "F "Ol':CS=" F" At4DD:t:::: "'·i" THEt-18300
7150 I FCS=" R" At·IDD$= "T "ORC$=" T" At-lDDS= "F:" THEN8400
7160 IFCS=" f':" ANDDS= "F "ORCS= "F" ANDDS=" F.:" THEt·l8401J
717(1 I FC$=" T "At-IDDS:= "A" OF.:C:t= "A" At·lDD:f::::" T" THEt·l::'.!501J
7 i::::0 I FCS= "F" At·IDDS= "A "OF.:C:t=" A" At·IDD$:::" F "THEt,l8'.'.:i(11=1
71913 GOT07010
:::000 I t·IPUT" :muAtHO E... V"; \I
:::010 I FV<=OTHEt·l90(11;:1
8015 INPUT" :~ED R" .; I':
802l1 I FF.:<=0THEt-l9001=1
:::1331:::1 T=2*11*R/\.':F=l/T : A=V*".l/R:O=V/R
:::1J40 GOSUB 110013
8050 PF.:It·IT" :~IT=" T "SEC"
:::061:::1 PRINT" F= "F"HEF.:TZ"
81370 PF.:I tH "A="fl"M/::'.;S"
:::08[1 PF: I tH" './EL. At·IGOLAF.:E = "O" F.:AD/SEC"
:::090 GOTO 12131313
:::100 It·ff'UT":~nUANTO E' V".: V
:::1rn I F'·/(=0THEt·l901i:11:::1
:::120 HlPUT":PED A".; A
::: 1::30 I FA<=0THEN913013
8140 R=".l*".l/A : T=2+11+R/ V : F=l/T:O='.//R
8150 GOSUB 1 W0~3
8160 PRHIT"}'R="F:"METRI"
8170 PR I HT" T=" T "SEC"
81 :3i~1 PF.: I NT "F=" F " HERTZ"
:::191:::1 PF.: I NT "'./EL. Ht·I GOLAF.:E= " O" F.:AD/:::EC"
8195 GOTO 12t101!':1
8200 rnruru:muAtn,·E / ~~"; R
8205 I FR<:=(1THEt·l90tH:'.:1
82H3 WPUT":~ED A".; A
8215 I FA<=OTHHl9000
:3220 ".l=SQRCA*R) : 0=".1/R : T:::2*11*F:/V:F=l/T
8230 GOSUP.11 ~31X1
82413 PF.: I NT " :P!·/=" I/" M/:3EC"
825(1 PF.: I tH "\/EL. At·IGOLAF.:E=" O" RAD/::;EC "
82613 PF.:I NT" T= "T"SEC"
98 FISICA

8270 PRINT"F= " F"HERTZ"


8 2:30 GOT012f100
8300 INPUT" ~}UAIH ·' E,. LA VELOCI TA ' " i V
8305 IFVC=0THEN9000
83 10 I~lPUT"~ IL PEF:IODO" ; T
8315 IFT<=0THEN9000
8320 F=1 / T : R=V*TIC 2*w ) : O=V/ R : A=O*V
82:30 GO SUB 11000
8340 PRIIH"lF="F"HEF:TZ"
8350 PRHff"l':="R"METRI"
8360 Pl':IIH"A="A"M/ SS"
837 0 Pl':INT"l/EL. At·lGOLARE="O"RAD/SEC"
83813 GOT0120f10
8400 HWUT":t!UUAL''E' IL PERIODO" i T
8405 IFT<=0THEN9000
84113 IMPUT"l'ED R"; F:
8415 IFR<=0THEN9000
8420 F= 1/ T : V=2*•*R/T : O=V/R : A=V*V/ R
8430 GOSIJB 11001~1
8440 PRHff"l!F="F"HERTZ"
8450 PRitH"V="V"M/SEC"
8460 PRINT"l/EL. A~lGOLAREa"O"RAD /SE C"
8470 PRINT"A="A"t1/ SS"
8480 GOT012000
8500 INPUT" lUUAtH ' E' IL PERIODO" ; T
8505 IFT<=0THEN9000
8510 I t~PUT ":O:: L ' ACCELERAZIONE" ,; A
8515 IFA( =0THEN9000
8520 F=1 / T =R=CA*T*T )/(4*rr*rr >= V=SQR CA*R > =O=V/R
8530 GOSUB 1100E•
8540 PRitH"l!F="F"HERTZ"
B550 Pl':INT"V="V"M/SEC"
8560 PRIMT"R="R"METRI"
8570 PR I NT" VEL. At·K;OLARE ="O" RAD/SEC"
8580 GOTO 121x10
:::900 END
9000 PR I NT "lll!.l30LIJZ I Ot~E IMPOSSIBILE ! "
9010 GOSUB10000
9020 GOT010
10000 REM-ATTESA E INGRESSO DATI
10010 IFF=0THEl~PRINTTAB O: 11 ) "ll( PREMI Ut~ TASTO ) "
10020 GETA$ : IFA$='"' THEN10020
10025 A=VAL ( A$ )
10030 F=0 =RETURN
11000 REM-BARRA
11010 FOF:K=l T040: PRHIT"I!'.:"; : MEXTK : RETURN
12000 REM-RICHIESTA DI CONTINUAZIONE
12010 PF: I NT "l?v'UO I CONTINUARE ? "
12020 F=l=GOSUB10000
12030 I FA$=" S" THEIH 0
12040 PRitH":'lJK - CIAO! ! "
12045 EMD
12050 END

Le uniche subroutine utilizzate sono due.


La 10000 serve a due scopi differenti, a seconda che il flag F sia uguale
a zero o ad uno. Nel primo caso è utilizzata per arrestare il programma
dopo che è stata stampata la pagina iniziale con l'indicazione delle op-
FISICA 99

ziom m attesa che venga premuto un tasto. Nel secondo caso la linea
10010 viene saltata, e la subroutine è utilizzata per introdurre l'opzione
letterale A$ o il numero A;
La 11000 serve a stampare la barra orizzontale.
La 12000 non è una subroutine e contiene la richiesta di continuazione.

In verità c'è anche una subroutine (poco ortodossa) nelle linee 4000-4045
che agisce solo se il flag FF è uguale ad uno, e capirete in seguito il per-
ché della sua esistenza.
Passiamo all'analisi del listato.
Fino alla linea 140 si ha la stampa della pagina iniziale e la richiesta di
scelta delle opzioni.
Grazie alla 150, in caso di valori numerici che non siano 1, 2, o 3 si ha
il ritorno a 10, e perciò anche se il tasto battuto è letterale, la risposta
non viene accettata. Nella 160 si ha lo smistamento alle linee 1000, 4000,
7000 a seconda del tipo di problema scelto.
In 1000, dopo aver stampato la legge del moto

I = s +V/
(dove s è lo spazio iniziale), si richiede quante delle 4 variabili hanno va-
lore noto.
È accettato solo il caso in cui si conoscano 3 variabili: battuto il tasto
corrispondente alla lettera iniziale della variabile incognita, in 1100-1130
si ha lo smistamento in quattro routine ciascuna delle quali risolve la
legge del moto esplicitata rispetto ad una variabile.
In 1625 e 1825 vengono eliminati i casi in cui rispettivamente t e v sono
nulli perché altrimenti si avrebbe una divisione per zero. Per maggior
utilità il tempo è calcolato anche in ore, minuti e secondi, e la velocità
anche in km/ h.
Alla 4000 inizia invece la trattazione del moto rettilineo uniformemente
accelerato.
Vengono prima presentate le due leggi del moto

V w+at

con s = spazio iniziale e w = velocità iniziale.


Le variabili sono sei e basterebbe conoscerne quattro per poter risolvere
qualunque problema, ma ciò comporterebbe 15 diverse possibilità di so-
luzione. '

'Corrispondenti alle combinazioni di sei elementi di classe 4 (vedi programma sul calcolo
combinatorio).
100 FISICA

E sarebbero troppe per la capacità di memoria del Commodore 64 da


8K.
Ho ripiegato quindi su un compromesso: suppongo che siano sempre
noti lo spazio e la velocità iniziali (ciò avviene in realtà nella maggior
parte dei problemi).
Basta quindi trattare i sei casi in cui si conoscano due delle quattro ri-
manenti variabili: /, v, a, t.
Le due variabili note vengono battute dopo la richiesta alle linee 4110 e
4120, e trasformate in C$ e 0$ .
Nelle linee 4130-4180 si ha lo smistamento a seconda della combinazione
scelta.
Si noti che, nel caso si fosse battuta per errore una lettera non compresa
nelle quattro previste (o una cifra o un simbolo), la linea 4190 rispedi-
rebbe il programma indietro per un nuovo e corretto ingresso di dati.
Da 5000 a 6090 vi è la trattazione dei sei casi possibili, ciascuno con le
relative uscite alla routine 9000 quando i dati introdotti provocherebbero
una divisione per zero.
Nella linea 5000 si può notare un nuovo flag FF = 1. La ragione della
sua esistenza risiede nel fatto che la " pagina video" usata per scrivere le
leggi del moto e le richieste precedenti, avrebbe occupato più delle 25 ri-
ghe dello schermo, provocando un antiestetico scorrimento verso l'alto.
Con questo flag invece si ha un cancellamento del video e la ristampa
delle sole leggi del moto (linee 4000-4045).
Rimane da esaminare il caso in cui (7000 e seguenti) il problema da ri-
solvere si riferisca al moto circolare uniforme.
Vengono, al solito, stampate le due leggi del moto

2-irr v2
V= -
T
= 27rf a
r

dove v è la velocità tangenziale, r il raggio, T il periodo, f la frequenza


ed a l'accelerazione centripeta.
Poiché

1
f = T

in realtà ci sono solo quattro variabili v, r, T, a e due equazioni.


Quindi è sufficiente conoscere almeno due di queste quattro variabili,
per poter calcolare tutte le altre.
Il procedimento è simile a quello del moto uniformemente accelerato: in
più ci sono le tre linee 7140, 7160 e 7180 che, nel caso in cui una delle
due variabili note sia la frequenza, invia il programma agli stessi indiriz-
zi che sono previsti quando la variabile nota è T.
FISICA 101

Fra le risposte ogni volta viene fornito anche il valore della frequenza in
hertz e della velocità angolare in radianti al secondo .

BALISTICA

Consideriamo un'arma che spari un proiettile con un angolo di elevazio-


ne a ed una velocità iniziale V.
Se poniamo l'arma nell'origine di un sistema cartesiano di riferimento, il
proiettile descriverà una parabola di questo tipo.

I
I
I
I
I
I
I
e - - - - - 7- - - - -=.=-:::.---...--
P1 ----r--- 'P
I
I

"" l I
I
I

o A

Figura 12

Dove OA è la gittata, e il vertice della parabola ha coordinate OB ed


oc.
Vx e VY sono le componenti della velocità iniziale lungo gli assi coordina-
ti e valgono rispettivamente

V.r == V cos cx
Vy == V sen cx

Consideriamo il proiettile in una posizione P qualsiasi della traiettoria:


mentre esso si muove, le sue proiezioni Px e PY sugli assi si muovono ri-
spettivamente con moto rettilineo uniforme e con moto rettilineo unifor-
memente ritardato.
Infatti su PY agisce l'accelerazione di gravità (g == 9,81 m/sec) rivolta
verso il basso che ne frena il moto.
Dal programma precedente sappiamo che le leggi del moto sono
102 FISICA

OP,.= V,.· t
[ OPy = Vy · t - ~ . g· t 2

o anche, più semplicemente,

X= V,.· t
1 2
[ y= V.y·t-2·g·t

Queste due relazioni possono essere interpretate come le coordinate pa-


rametriche del punto P, cioè coordinate in funzione del parametro t.
Il luogo di punti (cioè l'insieme di punti, la traiettoria) descritta dal pun-
to P si ottiene semplicemente ricavando il parametro I dalla prima equa-
zione e sostituendo l'espressione così ottenuta nella seconda equazione.
Con semplici calcoli si ottiene

y= _ _L_x2+ Vy
2V,. V,.

che rappresenta l'equazione di una parabola con asse verticale, con cavi-
tà rivolta verso il basso, passante per l'origine, e con

OA = 2 V,.V,, OB = V,.Vy oc=


V.
__Yz_
g g 2g

I
I
I
I
I
I
I
I
I
I
I
I
I
I

Figura 13
FISICA 103

Naturalmente abbiamo trascurato l'attrito con l' aria.


Si noti che l'angolo a è compreso fra zero e novanta gradi, e che per
0t = 45 ° si ha la gittata massima .
Se a è minore di 45 °, esiste sempre un secondo angolo {3 = 90° - a che
produce la stessa gittata di
E viceversa se a è maggiore di 45 °. Ovviamente le equazioni delle due
parabole sono differenti.
Se la velocità è uguale o maggiore a 40320 km/ h il proiettile non ricade
più sulla terra perché ha superato la velocità di fuga terrestre.
Dopo questa premessa, passiamo all'esame del listato.

10 REM COPYRI GHT IN BASIC


12 REM VIA SEZZE 22 LATINA
14 REM TEL . 487631
16 POKE53280 .. 11~1 : POKE5328 1 I 3
20 CLF: : PR I MT" :1'~"
313 PRINTTAB( 15) "BALI STICA"
35 DIMX C20) ,Y(20), T (20)
40 GOSIJB10000
513 PRIMT"::l!lTIRAt~DO UN OGGETTO IM Af,;:IA <O SPARANDO"
60 PR I tH " COt-l UN ,. AF:MA ) , LA TF.:A I ETTOF.: I A DELL ' OGGET - "
70 PF: HH" TO E' SEMPRE Ut~A f:f'ARABOLA::. "
80 PR I NT ")!llt~D I CH IRMO COt·l f:t·/:: LA VELOC rrw· ItH z IALE Il
90 PRINT"E COM r~:: V'ALZO (CIOE·' L 'ANGOLO FRA LA"
HhJ PRltH"DIF.:EZ IOME DI TIRO E IL PIAMO nPT 2ZO t~-"
110 PRINT"TALE >."
1213 GO::;IJE: 100130
130 INPUT"::.J:llJAMTO E··· V ( i N KM/H)"; V
135 IFV )=40320THE~30 SUB1 200 0
14t1 PF: rnT Il :~ED A ( BATTI UNA '•/I ,.::GOLA FRA I GRADI, I Il
15t1 INPUT-" PR I t1 I E I SECONDI ) " .: GI p I s
160 VV=V/3.6 : SS=S/60 ·P1=P+SS : PP=Pl/60 : Gl=G•PP : A=G l*•l 180
165 IFA>=n/2THEN10
170 VXzVV*COSCA):VY=VV*SIM( A}
175 VX=INTCVX*1000)/ 1000 : VY=INTtVY*1~00 )/ 1000
177 VV=INT CVV*1000) / 1000
180 PRHH":JJK - LA VELOCITA' DI "'./ " KM/ H"
19t1 Pf;,:ItH"CORRI SPOMDE A"VV"M,'SEC . I
200 PRHlT")IJ:ot-1 L'ALZO CHE Ml HAI DATO, Lf, COMPOt·lE~I-"
2 10 PR I Ml" TE LUNGO L ,· ASSE OR I ZZO ~ITi=tLE E' "
220 PRitHTAB <10) " .~fy' :><= "VX"M /S "
23t1 PR I Ml " :l!1·1EtHRE LA COMPot~EMTE VEF.:T I CALE E,. "
240 PRINTTAB <10) ""'-N'1'="'./'11 "M/:3 "
250 GO SUB 1(11~113[1
260 GI=2*V X *VY/9 . 81 : QY~VY12/C2 * 9.81)
265 GI=INT(GI*1000)/1000 : QY=IMT(QY*1000)/1000
270 PF: HH":'l.A GITTATA E'. DI "GI "METRI .. "
280 PR I MT ":u1EtHRE ALLA DI STANZA DI" GI /2 "METRI"
29 ~3 PF: I tH "l ·' OGGETTO RAGGI Ut·lGE LA G!UOTA MAS:3 I MA"
300 PRitH"DI "G!'r'"METRI."
3 10 GOSUBl 10013
32t1 PRINT":.1VEDIAMO COME SI OTTEMGONO G!UESTI RISUL - "
330 PRINT"TATI : "
340 PR I Ml" :n..ut~G O Ut~A LI MEA OR I ZZOtHALE IL MOTO E·' "
:;:5i.::1 PR ItH" RETTI LI t~EO U~H FOF.:ME E LA LEGGE DEL MOTO"
360 PRHff"E / "
:::70 PRltHTAB < 10) "X="VX"T "
104 FISICA

380 PRINT":U1EtHRE LU~IGO UH ASSE VERTICALE IL MOTO"


:;:913 PR I NT "E ' UMI FORMEMEtHE R!TARDATO (CON ACCE LE - "
400 PRINT"RAZIONE COSTAHTE=-9.8 MISS) E COH VELO-"
4H3 PRINT"CITA ·' INI ZIALE='"v"r'"M/S)."
4:;:0 PR IIH" :~J::: IOE ' LA LEGGE DEL MOTO E·' "
42:3 LS=STRS CVY) : L=LEN CLS )
425 PRINTTAB C 13+L ) "~1 2"
430 PRINTTAB(7 )"Y=" VY "T- - 9.8 T"
440 PRINTTABC13+L >"2"
450 PR INT : GOSUB 10000
460 PR I tH " :WREND I NOTA DI G!UESTE DUE EC!UAZ I ON I E •• "
470 GO SUB 11 €U::J0
4813 PR I NT ":-ESSE RAPPF:ESEMTAt·KI LE ~:t:::OORD I ~ff'tTE PAF:A-~"
490 PR I NT "t1ETF: I CHE:: DEL CORPO IN MOV I MEtHO" I t·l FIJH-"
500 PR INT "Z IONE DEL PARAMETRO T. "
510 GO SUB 100130
520 PRIIH"lRICAVAt~DO T DALLA PRIMA EG!UAZIONE E"
530 PRINT"SOSTITUENDO NELLA SECO~lDA, SI OTTIE~lE"
540 C1=9. 811<2*1/X1'2) : CU=STRSCCl ): Ll=LEt~ <C 1$ )
550 C2=VYI VX:C2=INT CC2*10000)/10000
555 PRitHTABC9+L1 ) 00:~!2
11

560 PRINTTAB<4) "'T'=-"Cl "X +"C2 :~


11 11

570 PR ItH" :i!l:::HE E' IL LUOGO DI PUNTI DESCRITTO DAL"


580 PR HH "CORPO Hl MOTO , ED E' UNA PARABOLA COW
590 PRINT"t1SSE VERTICALE , CONCRVITA " RIVOLTA VERSO"
600 PR I NT" IL BASSO, PASSANTE PER L ' OR IG IME E PER"
610 PRINT" IL PUtHO"
620 PRINTTABC 7) "JO:Ft= ( " GI" , 0) 11
630 PRINT"lE AVENTE IL VERTICE NEL PUNTO"
640 PRINTTAB(7) ")J.1= ( "Gi i2 " I "C!Y")"
650 GOSUB 11 €100
660 T=GI / VX: T=INT CT*1000 ) /1000
6713 PR I tH "::11 L CORPO I t·lP I EGA" T" :::EC. PER TOCCARE"
680 PRINT"IL SUOLO."
685 PRitHTAB(f::)":~J ( UN AT TIMO DI PAZIEMZA)"
690 GOSIJB10000
700 T=T/20
710 FORK=O T020
720 TCK>=K•T : T (K)= INT ( T( K) *1000 )/1000
7:2a:3 X<K> =VX•T CK) : X(K)= INT CX(K )*1000 )/ 1000
740 'r'(K)=V'r'JIET(K)-4 , 905*T< K> ·f2: 'r'CK >=Hff('11 (KH lf100 )/ 101J1)
7513 t~E:x:TK
760 PR nn Il 'ECCO LE COOF:D HlATE DEL CORPO rn './EMTI Il
7?13 PR INT"I STANTI INTERMEDl , MENTRE ESSO DESCRIVE"
780 PR itH"LA PARABOLA •••• "
790 OOSUB 110€10
:::00 PRitH":-I~EMPI <EEC) ASCI %.ECM) OR DI~lATE CM> ::"
820 FORK=0T02€1
::::;:13 PRINTT CK)TAB C11 )X(k)TABC25)Y (K)
840 NE:X:TK
85~3 IJOSIJB 11000
:360 PRitH"::"F'UOI RIPOF:T Al<:E LE ASCISSE E LE 01<'. DIMATE"
:37(1 PR un Il :;u rn
UN GRAFI CO CARTA MI LLI MEH'.ATA E Il
:::8(1 PR!t4T"CONSTATARE CHE LA TF.:AIETTORIH E ' Ut·JA"
:::90 PR I tH" PARABOLA. "
:::1130 GOSUB 10l::i00
910 J=A-tr/ 4
915 IFJ=0THEMPF.:Hff" .O:::ON L ' ALZO DA TE HWICATO , HAI LA IJIT-"
9 16 IF.J=1~1THENPRHff"TATA MASSIMA." : GOT0106€1
9<10 JJ=tr/ 4-.J
95fJ AA=JJ*1:30/tr
FISICA 105

960 Al=INTCAA ): A2 =( AA - A1)*60:A3= INT(A2)


970 A4=CA2-A3> *60 : A5= INTCA4)
980 f-'F: I NT Il :ffiVF.'.EST I OTTrnUTO LA STE:::sA GITTATA COM Il
9%1 PFWH"LA STE:;SA '·/ELOCITA· ItH ZIALE .. E COI~ UW
HKn3 PR HlT " 11LZO DI"
101 O PR I tHTtlE:(5) ":~l"Al "• "A3" ·' "t15" ...... "
1020 PRitH"mt·NECE DEI"
1030 PRitHTAB(5 ) " :1!l"G"" "P" ·' " S" ·· .· ..
104~1 PRIMT" :~IDA TE It·l DICAT I."
1050 PRINT":aA PARABOLA PEPO ·' :::AF.:EBBE ::TATA DIVEF.::;A"
1060 GO SUB 113000
1070 PF.'. I tH" N·/UO I PROVAF.:E AtK:OF.:A ? "
10:::0 GEHJ$ : I Fl-1$=" "THEt-J 10::::0
1090 IFW$=" S "THE~H0
1100 PRINT"::DK - CIAO 1 ! "
11(15 END
1110 EMD
10000 REM- BARRA ORIZZONTALE
10(11 O FORK= 1T040 : PF.: I tH ";r..._":" ; : t·IE::<TK : F:ETIJRM
11000 REM-ATTESA
1101(1 PRIMTTAB ( HD u:~l < PREMI Ut·l TA:3TO ) "
111!:120 GEHJ$ : I Fl·J$=" " THEM 111!:1213
11030 F.:ETURN
12000 REM-VELOCITA ' DI FUGA
12(111] PRINT" .~l~l-IAI :::UPERfiTO LA VELOC I rn . · DI FUGA' '~"
12020 PRHn :~1::o t·l CiUE S fA '·/ELOCI rw IL CORPO tlOt·l RI-"
11

12030 PF: HH"CADE PIIF SULLfl TEF.:RA."


12040 GOSUB11000
12050 CLR : GOT010

La subroutine 10000 traccia la solita barra orizzontale, la 11000 serve


per fermare il programma in attesa che venga premuto un tasto, e la
12000 avverte l'operatore che ha superato la velocità di fuga. Alla linea
35 vengono dimensionate tre variabili con indice che accoglieranno i va-
lori di un tabulato per permettere la trascrizione su carta millimetrata
della parabola descritta dal proiettile.
In un primo mom;ento avevo pensato di realizzarla graficamente sullo
schermo del Commodore 64, ma un reticolato di 25 righe e 40 colonne
fornivano un grafico troppo approssimato, e del resto (se si vuole ado-
perare il programma per fini didattici) è molto più utile e formativo per
uno studente riportare i dati su carta millimetrata in modo corretto.
In 130 è richiesta la velocità iniziale del proiettile, espressa in km/ h per-
ché è una unità di misura con la quale abbiamo in genere una maggiore
familiarità.
Se si vuole impedire che qualche buontempone introduca velocità nulla o
negativa, basta introdurre la linea

133 IF V<= O THEN 10

e altrettanto dicasi per alzo nullo o negativo. In 135 se la velocità è mag-


giore o uguale a quella di fuga, si ha l'invio alla subroutine 12000.
106 FISICA

Poi (150) viene richiesto l'alzo in gradi, primi e secondi (invece che in
radianti) per la stessa ragione di prima, cioè perché più familiari.
In 160 i gradi, primi e secondi vengono trasformati nell'angolo A e
espresso in radianti.
Se tale angolo supera o uguaglia l'angolo retto (linea 165) si ricomincia
da capo. Nelle linee 170-175 vengono calcolate le componenti Vx e VY
della velocità lungo gli assi cartesiani, e per evitare di ottenere risultati
con un gran numero di cifre decimali grazie alla linea 175 vengono trat-
tenute solo le prime tre cifre e cancellate le altre.
Dalla linea 180 alla 300 vengono stampati i valori delle componenti Vx e
VY, la gittata e le coordinate del punto di quota massima.
Dopo aver premuto un tasto qualsiasi, per effetto della subroutine
11000, si ha il clear di schermo e la stampa della pagina comp1esa fra le
linee 320 e 460.
Viene stampata la legge del moto lungo l'asse x e quella relativa all'asse
y. Si noti la trasformazione di ~ in stringa (linea 423) per determinarne
la lunghezza L e permettere quindi la stampa corretta della formula in
425-440.
In 470 si ricorre ancora alla subroutine 11000 e alla stampa successiva
della pagina compresa fra le linee 480 e 640.
Nella linea 540 il coefficiente C1 dell'equazione della parabola (coeffi-
ciente del termine di secondo grado) viene trasformato in stringa per de-
terminarne la lunghezza L1 e scrivere perciò correttamente l'equazione
stessa, con lo stesso procedimento precedente.
In un primo momento avevo troncato anche C1 eliminando le cifre deci-
mali oltre la quinta, ma per velocità iniziali piuttosto alte la parabola è
molto allargata e il coefficiente del termine di secondo grado diviene tal-
mente piccolo, che con il troncamento si otteneva risultato nullo.
Ciò comportava come conseguenza ... che la parabola diventava una ret-
ta.
Oltre alla formula della parabola, nella stessa pagina di schermo com-
paiono anche le coordinate del vertice e del punto in cui la parabola ta-
glia di nuovo l'asse x.
Si ricorre ancora alla 11000 e, dopo aver premuto un tasto, si ha il cal-
colo del tempo impiegato dal proiettile per descrivere l'arco di parabola
e toccare il suolo.
Ciò si ottiene (linea 660) sem plicemente calcolando quanto tempo impie-
ga il punto P... (che si muove con velocità costante V,.) per andare
dall'origine al punto A.
Anche questo tempo è troncato a lle prime tre cifre decimali.
La linea 685 serve ad avvertire l'operatore che quei due o tre secondi di
attesa che seguiranno servono al Commodore 64 per eseguire i calcoli
successivi.
Essi (linee 700-750) consistono nel dividere il tempo precedente in venti
FISICA 107

parti, e nel calcolare con un ciclo FOR NEXT i tempi e le coordinate dei
punti che costituiranno la tabella che s~rà stampata immediatamente do-
po.
Anche i numeri contenuti nella tabella sono troncati alla terza cifra deci-
male.
La tabella viene stampata con le istruzioni contenute nelle linee 800-850.
In 860-1060 si ha la stampa dell'ultima pagina di schermo, e se l'alzo era
di 45 ° si ha l'indicazione che la gittata corrisponde alla gittata massima.
In caso contrario vengono calcolati i gradi, primi e secondi (A 1, A3, A5)
con i quali si avrebbe avuto la stessa gittata rispetto ai valori (G, P, S)
indicati all'inizio.
Le ultime linee (1070-1110) propongono, al solito, di far girare di nuovo
il programma dall' inizio.

RELATIVITÀ

Concludiamo questo capitolo con un programma che esegue calcoli rela-


tivistici.
L'utilità di un tale programma risiede nel fatto che le correzioni relativi-
stiche sono spesso talmente piccole da sfuggire persino alla possibilità di
calcolo di un minicomputer tascabile (se non è attrezzato per il tratta-
mento dei numeri sotto forma di potenze decimali). In ogni caso il cal-
colo, pur essendo estremamente semplice teoricamente, resta sempre ab-
bastanza delicato da eseguire.
Con questo programma tutto invece diviene automatico e con molta fa-
cilità si può constatare quali siano i valori entro cui la meccanica classi-
ca deve essere sostituita da quella relativistica.
Si abbia un'astronave che si muova con velocità V costante rispetto ad
un osservatore che si trovi su un sistema di riferimento inerziale (cioè
fermo rispetto alle stelle fisse).
Se l'osservatore esegue una misura della lunghezza dell'astronave (per
esempio calcolando quanto impiega per passare davanti ad un traguar-
do, e moltiplicando il tempo così ottenuto per la velocità C), esso trova
per l'astronave una lunghezza L.
Ma l'astronave per effetto della propria velocità, si "accorcia" (mentre
le altre dimensioni, per esempio l'apertura alare,' rimane costante).
Un osservatore che si trovi sull'astronave non potrà mai accorgersi
dell'accorciamento perché ogni oggetto, e quindi anche il metro con cui
eseguirà la misura, si accorcia quando viene disposto lungo la direzione
della velocità.

Ammesso che un'astronave abbia bisogno di ali. Stabiliamo che gli servano per rientrare
nell'atmosfera.
108 FISICA

---· ~ ';;; ......;;a:- -V•to$\antt--

o,

o"

...

Figura 14

La misura "contratta" della lunghezza dell 'astronave è

17
L' = L-../ 1- ~
c

dove c è la velocità della luce .


Per velocità V troppo piccole rispetto alla velocità della luce il termine
V2 è talmente piccolo da poter essere considerato nullo, e si ottiene
ci

L' = L

Cioè la meccanica relativistica coincide con quella classica.


L'accorciamento L - L ' si chiama anche contrazione di Lorentz.
In modo analogo il tempo T ' dell'astronave trascorre più lentamente del
tempo T rispetto all'osservatore a terra. Cioè quando per quest' ultimo è
trascorso un secondo, sull'astronave è trascorso un tempo maggiore.
La dilatazione del tempo è data dalla formula

T
T'

e, come prima, se V è sufficientemente piccola rispetto a c, si ha


T ' = T.
FISICA 109

Questi due effetti: la contrazione delle lunghezze e la dilatazione del


tempo, non sono impressioni illusorie, ma reali.
Infine anche la massa subisce un incremento analogo al tempo, e la mas-
sa M misurata dall'osservatore a terra è legata alla massa M ' misurata
dall'astronave, dalla relazione

M
M'
=~

In ciascuno dei casi esaminati, la quantità 1- ~si chiama anche fat-


e
tore di correzione relativistica, e il termine _.!:::. viene anche indicato con
e
la lettera {3.
Un altro calcolo di tipo relativistico è quello della composizione delle ve-
locità. Secondo la meccanica classica, due velocità V e W aventi stessa
direzione e verso, danno come risultato

R = V+W

Cioè se l' astronave precedente spara un missile nella stessa direzione in


cui si muove, con velocità W, secondo l'osservatore a terra il missile
viaggia ad una velocità

R = V+ W

Ebbene, secondo la meccanica relativistica tale velocità è invece

V+W
R' =
1-~
e

che può essere confusa con R solo se V e W sono entrambe molto picco-
le rispetto alla velocità della luce c.
Se una di esse (o ambedue) sono uguali a e si avrà come risultato
R' = c. Infatti, come è noto, la velocità della luce è una costante uni-
versale che non può essere superata.
Vediamo ora come il programma affronta questi calcoli.

10 REM COPYR I GHT IN BAS I C


12 REM VIA S EZZE 22 LATINA
14 REM TEL . 4 8 7 63 1
2 0 CLR : PRH4T " ~"
110 FISICA

25 POKE53280,10:POKE53231,3
3 0 PRINTTABC8)"CALCOLI RELATIVISTICI"
40 GOSU811000
:'::ol'.:1 PF: Hll "~ 1JUESTO PROGRAMMA CALCOLA:"
t:.f~ PRIIHTABC5) "!ll-LA CONTRAZIONE DELLE LUNGHEZZE"
70 PRHITTA8( 5 ) "2-LA DILATAZIONE DEL TEMPO"
<30 PRINTTA8(5)"3-L ' Allt1ENTO DI MASSA"
90 PRltHTA8(5) " 4-LA ::;OMMA DELLE VELOCITA'"
1 00 PR I IH" !PER EFFETTO DELLA TEOR I A DELLA RELAT 1-"
110 PRIIH'"·/ITA'."
1 ;<:0 C·OSUB 11 000
181.:t PRilff"ll!J::OSA VUOI CALCOLARE ? "
141~1 GOSUB 10000
15 0 1FA<=00RA> 4THEN140
160 IFA=4GOT05000
16~· 8 -=A
l 7'0 PR IMT" ::JJK - LA l/ELOC ITA ' DELL 'OGOETTO CHE STA I "
180 PR llH"ES AMINANDO , E ' ESPRESSA IN:"
190 PR I Nl TAB ( 7:, ")!W1:=;::TR I /SEC O I I~ lllt<ii71/H ? "
2 00 GOSU810000
205 1FA$="K"THEN~l=1 :GOT0220
2 10 IFA$="M"THEt~2 20
2 1'.5 C;OT0200
220 GOSUB 111300
280 PRIIH"9::0N OUALE VELOCITA' SI MUOVE L'OGGETTO"
240 INPUT"F: ISPETTO A TE" ;V
250 IFW=lTHENV=V.'3 . 6
255 GOSUB11000
260 ONBGOT0 1000,2000, 3 000
1000 REM-LUNGHEZZE
H:H 0 PR ItH" IDUAL ' E ' LA LUNGHEZZA (IN METRI) DEL-"
1020 PRIIH"VOGGETTO IN CONDIZIOl~E DI RIPOSO RI-"
1030 PRINT"SPETTO AL TUO S I ST EMA DI RIFERit1EIHO ?"
11;.,1413 I l~PUTL
1060 GOSUB12000
1 (181'.:.1 I FFA= 1THENGOS UB1 6000 : GOSUB 13000: GOTO 1 70
1 085 LL=L*FA: C=L-LL
1090 PRitH"~E L 'OGGETTO E' DISPOSTO LUNGO LA DIRE-"
1100 PRllH"ZIOl~E DEL MOTO , ESSO S UBI SCE UNA CONTRA-"
1110 PRINT"ZIONE RELATll/ISTICA PARI A"
11 2 0 PRINTTAB< 10 ) "Jg" C "METRI"
11 30 PRINTTA8(4 ) "l)::l0E ' "C*1000"MILLIMETRI"
1140 PF<: INTTA8(4 ) "~:::IOE ' "C*1E6"MICRON"
1150 GOSU811000
1170 PRINT"!J~OI~ Cl SONO COtHRAZIOIH LUNGO DIREZIOIH"
1180 PR I NT "PERPEt~D I COLAR I ALLA VELOCI TA ' • "
11 90 GOSUB 13 000
1 2 00 GOT01?0
2000 REM-TEMPI
2 0H3 PRINT ":U::ONS IDER1At10 UN HHERl/ALLO DI TEMPO"
2020 PRI NT"NEL TUO S I STEMA DI RIFERIMENTO."
2W30 I NPIJT ":o;:•UAIH I SECOMO I COIH IENE" : S
~ l'.:.!4l1 L>US IJ81 20130
2 050 IFFA=1THENGOSU816000:GOS U813000:GOT0170
2060 SS=S/FA:D=SS-S
2070 PR INT"J"ER UN OSSERVATORE IN MOTO CON L'OGGET-"
2080 PRINT"TO,IL TEMPO TRASCORRE PIU' LENTAMENTE"
2090 PRINT"ED IL SUO OROLOGIO RITARDA RISPETTO AL"
2 100 PRINT"TUO DI:"
2 110 P PI NTTAB C6) "lJ"D" S ECONDI"
2 1 20 PRINT"JgCIOE' "D*1000"MILLES IMI DI SEC"
2 1 3 0 GOSUB11000
FISICA 111

2140 GOSUB 13000


2150 GOT01 70
3000 REt1-t1ASSE
3010 PRINT"WUAL'E' LA MASSA < IN KG> DELL'OGGETTO"
3020 PRINT"IN CONDIZIONE DI RIPOSO RISPETTO AL TUO"
3030 PRitff"SlSTEMA DI RIFERIMENTO ? "
3040 I NPUTt1
3 050 GOSUB12000
3060 IFFA=1THENGOSU816000:GOSUB13000:GOT0170
3070 11t1=t1/ FA:I=t1t1-t1
3080 PRINT"::J_A MASSA DELL'OGGETTO IN MOVIMENTO E'"
3 090 PRINT"AUMENTATA <RISPETTO AL TUO SISTEMA DI"
3100 PRitH"RIFERIMENTO) , E L' It~CREMENTO E' DI:"
3110 PRitffTAB<?> "!]" I*1000"GRAMMI"
3120 1=1*1E9
3130 PRINT"~ARI ALLA MASSA DI"
3135 PRitff"ll" I "MILIONESIMI DI GRAMMO"
3140 GOSUB11000
3150 GOSUB13000:GOT01 70
4040 PR I NT "!l·/UO I CAMBI ARE TI PO O I CALCOLO ? "
5000 REM-SOMMA DELLE VELOCITA'
5010 PRHIT":PUPPONI DI OSSERVARE UN'ASTRONAVE CHE"
5020 PR I NT "SI MUOVE I t~ O I REZ IONE PERPENO I COLARE"
5030 PRINT"A QUELLA IN CUI TU STAI GUARDANDO,CON"
5040 PR I NT "UNA VELOCI TA' lfl::. "
5050 PR I NT "mo UN CERTO I STAtffE ESSA SPARA UN MI S-"
5060 PRINT"SILE NELLA STESSA DIREZIONE DEL MOTO ,"
~·0713 PRitff"CON Ut~A l/ELOCITA' lllJ.J;: <RISPETTO AD ESSA>."
5080 PRINT":!LE LEGGI DELLA MECCANICA CLASSICA DICO-"
5090 PRitff"NO CHE RISPETTO A TE IL MISSILE SI MUO-"
5100 PR I NT "VE CON l/ELOC I TA ·• COMPLESSI I/A"
5110 PRitffTAB( 15 ) "l!lV+W
5121.'.t GOSUB 110130
5130 PR I NT" :!EBBENE, SE LE l/ELOC I TA .• IN G I oca SONO"
5140 PR Itff " SUF F ICI EtffEMEtffE AL TE, LA VELOC ITA' COM-"
5150 PRINT"PLESSil/A DEL MISSILE HA UN VALORE INFE-"
5160 PRINT"RIRE ( TALVOLTA MOLTO INFERIORE > A QUEL-"
5170 PRINT"LA CHE DOVREBBE AVERE SECONDO LA MECCA-"
5180 PRINT"NI CA CLASSICA."
5190 PRINTTA8(10)"!](PREl1I UN TASTO )":GOSUB10000
5200 PRINT":JINDICA11I LE DUE VELOCITA' lrV:: E 18-J:l,EO"
5210 PR I tff" I O TI CALCOLERO ' LA VELOCI TA' COMPLES-"
5220 PRINT"Sil/A DEL MISSILE <R I SPETTO A TE>."
5225 PRINT"D-A \/EL. DELLA LUCE E' 1. 079496E9 KM/SEC"
5230 GOSUB11000
5235 C= 1.079496E9
5240 INPUT" !lv'= ( It~ KM/H>"; V
5245 IFV< =00RV>CTHEN5200
5250 It~PUT"!J-l= ( IN KM/H)" ;~l
5255 IFV< =00RW>CTHEN5200
5260 CiOSUB 14000
5270 IFflL<1E-10THENGOSU816000:GOSUB13000:GOT05200
5280 R=<V+W)/(l+AL)
5~~90 GOSIJB 11000
5::::00 PR I NT" 8-A V EL OC I TA' COMPLESSI VA E ' DI "
5 ;310 PRitHTA8(7) "~"R"f<M/H"
531 ~· I F l tff ~ R+. 001) =V+~ITHENGOSUB 15000: GOSUB 13000: GOT05200
5320 F=C/R:F=INTCF*10000):F=F/10000
5325 IFF ( =. 99990RF=1 THEt~PF, Itff"!JJGUALE ALLA VELOCITA' DELLA LUCE." :GOT05350
5 330 PRINT"!]"F"l/OLTE PIU' PICCOLA DELLA"
5340 PRINT"l/ELOCITA' DELLA LUCE."
5350 GOSUB 11000
112 FISICA

5360 GOSUB 1 :::a300


5370 OOT052(1(1
70En3 Et~D
10000 REM-ATTESA E INTRODUZIONE DATI
10010 GETAS:IFAS=""THEN10010
10020 A=VAL(AS>:FETURN
11000 REM-BARRA ORIZZONTALE
11 i.'.110 FORI<= 1 T0413: PR I IH "~" ; : NEXTf< : RETURN
12000 REM-CALCOLO FATTORE RELATIVISTI~n
1 20 10 BE=V/2.9986E8:FA=SQR(1-BE~2)
12020 F.:ETURl·l
13000 REM-RICHIESTA DI CONTINUAZIONE
1301 O PR IIH" &!NUO I CotH I NUARE ? "
13020 GOSUB10000
1 :::<i.3:30° I FA$=" s" THEHRETURI~
l :3t140 PR IIH "0•/UO I CAMBI ARE TI PO O I CALCOLO ? "
13050 GOSUB10000
1 :::06~3 I FAS=" S" THEN 1 O
13070 PRIIH" ::>:11< - CIAO! ! "
13080 Et·m
14000 REM-TERMINE CORREZ.VELOCITA'
14010 C2=1.079496E9~2:AL=VtW~:2
14020 RETURN
15000 REM-CORREZ.RELAT.PICCOLA
1~·010 PRitff"NSot~O I/ALIDE LE FOF.:MULE CLASSICHE:LA"
150213 PRINT"CORREZIOl~E STA FRA LA OUIIHA E LA OECI-"
15030 PRINT"Mfl CIFF.:A DECIMALE. ":GOSUBl H3130 :RETURN
1 t-:; 000 REM-CORREZ. RELAT. TROPPO p I CC OLA
160 10 PRitffTAB<S> ":§'LA CORREZ Iot·lE RELATIVISTICA E ' "
161320 PR I tffTAB r, 7) "!)1S:SOUJTAMEIHE TRASCUF~AB I LEr,:"
161330 OOSUBl 1000 :RETURN

La subroutine 10000 serve sia per arrestare il programma in attesa che


venga premuto un tasto, che per introdurre dei dati senza che sia neces-
sario battere il RETURN.
La 11000 stampa la solita barra orizzontale.
La 12000 calcola il termine ( {3 = BE) e il fattore di correzione relativisti -
ca ( = FA)'. La 13000 contiene la richiesta di continuazione per nuovi
calcoli.
La 14000 calcola il secondo termine a denominatore nella formula di ad-
dizione delle velocità.
La 15000 informa l'operatore che la correzione relativistica è talmente
piccola da non fornire differenze apprezzabili fra il calcolo classico e
quello relativistico.
Ed infine la 16000 informa che la correzione relativistica è assolutamente
trascurabile, al punto che neanche il Commodore 64 riuscirebbe a calco-
larla. Fino alla linea 140 vengono stampate le opinioni offerte.
Nella linea 150 vengono rifiutate le risposte negative, nulle o maggiori di
4.

' A titolo di curiosità: il Commodore 64 accetta anche variabili con più di due lettere, ma
riconosce solo le prime due. Per esempio se battete BETA = 5 esso memorizzerà BE = 5.
Lo sapevate?
FISICA 113

Se la risposta è 4, alla linea 160 si ha un salto alla 5000 per la routine


che riguarda la velocità.
Se invece la risposta è 1 o 2 o 3, dopo aver memorizzato il valore di A
nella variabile B (per non perderlo con ulteriori ricorsi alla subroutine
10000), si ha la richiesta se si desidera operare con velocità espresse in
km/ h o in m/ sec.
Nel primo caso (linea 205) si pone il flag W = 1.
La linea 215 serve per far tornare indietro il programma nel caso che la
risposta non sia stata né K (cioè km/ h) né M (cioè m / sec).
In 230-240 viene richiesta la velocità (costante) dell'oggetto in movimen-
to.
In 250, se W = 1 (cioè se la velocità è espressa in km / h) si ha la tra-
sformazione in m /sec.
La linea 260 effettua Io smistamento alle linee 1000, 2000, 3000 a secon-
da che l'opzione scelta inizialmente riguardi la contrazione delle lunghez-
ze, la dilatazione del tempo o l' incremento di massa.
Cominciamo ad analizzare la routine 1000. Dopo aver introdotto la lun-
ghezza L (in 1040) si ha il calcolo del fattore FA in 12000, e se FA = 1,
la correzione è troppo piccola per essere apprezzata dal PET e si ha l'in-
vio alla 16000 per informare l'operatore che la contrazione è assoluta-
mente trascurabile, e quindi l'invio alla 13000 per la richiesta di conti-
nuazione.
Se ciò non avviene si ha il calcolo della lunghezza LL rispetto al corpo in
moto (linea 1085) e dell'entità della contrazione

C = L - LL

Per maggior comodità dell'operatore tale accorciamento viene anche


espresso in millimetri e in micron.
Dopo la richiesta di continuazione (linea 1190), si ha il rinvio alla linea
170 per un nuovo calcolo dello stesso tipo (grazie alla variabile ausiliaria
B memorizzata in precedenza, il tipo di opzione rimane immutato).
Le routine 2000 e 3000 sono sostanzialmente identiche.
Passiamo alla 5000 per il calcolo della somma di due velocità.
Nelle linee 5010-5190 si ha una pagina esplicativa di ciò che il Commo-
dore 64 sta per fare. Nella linea 5225 della pagina successiva, dopo aver
avvertito l' operatore che dovrà introdurre i valori delle due velocità V e
W, viene stampata la velocità della luce espressa in km/ h (poiché sotto
questa forma è poco nota).
In 5235-5255 vengono richiesti i valori delle due velocità V e W e, nel
caso fossero negative, nulle o maggiori di e, la risposta è rifiutata e si ri-
torna alla 5200 cioè all'inizio della pagina. In 5260 si ha l'invio alla
14000 per il calcolo del termine di correzione delle velocità.
114 FISICA

AL
vw
ci

Se tale termine è più piccolo di 10 10 si ha l'invio alla 16000 perché la


correzione è assolutamente trascurabile, alla 13000 per la richiesta di
continuazione, e alla 5200 se si vuole ripetere un calcolo dello stesso ti-
po.
In 5280 si ha il calcolo del risultato relativistico R e la stampa dello stes-
so nella linea 5310.
Se il risultato relativistico corrisponde a quello classico (V+ W) fino alla
quarta cifra decimale (si tenga presente che le velocità normalmente pre-
se in consider~zione sono sempre mimeri interi), allora la :linea 5315 in-
via alla subroutine 15000, alla 13000 e alla linea 5200. Se ciò non avvie-
ne si ha in 5320 il calcolo del rapporto ~ =F che indica quante volte il
risultato R è più grande di c.
Vengono eliminate le cifre decimali di F oltre la quarta.
Infine, se F = 1, si ha la constatazione che R uguaglia c.
A titolo indicativo, se le velocità in gioco sono dell'ordine di 1000
km/ h, la correzione relativistica è assolutamente trascurabile (subroutine
16000). Se sono dell'ordine di 20000 km/h il risultato relativistico coinci-
de ancora con quello classico (subroutine 15000). Ed infine per velocità
dell'ordine di 100000 km / h comincia ad essere rivelata una piccola diffe-
renza fra i due risultati.
CAPITOLO SESTO

Miscellanea

Non è affatto detto che un computer possa essere impiegato a fini didat-
tici solo su argomenti di matematica o di fisica.
I programmi che seguono intendono costituire solo un esempio di come
il Commodore 64 possa essere utilmente sfruttato anche al di fuori dei
canoni entro i quali normalmente esso opera per tradizione.

FRASI INUTILI

Più che un programma didattico è un divertissement con effetti abba-


stanza esilaranti, nato in seguito alla lettura di un articolo comparso nel-
la terza pagina del Corriere della sera.
Come è specificato anche nel listato, esso è il risultato di una ricerca
condotta dal prof. Marco Marchi dell'università di Pisa e dal prof. Pie-
ro Morosini, direttore di laboratorio presso l'Istituto superiore di sanità.
Essi hanno stralciato un certo numero di frasi caratteristiche dalla legge
sulla riforma sanitaria e da articoli pubblicati da vari giornali a com-
mento della legge stessa, costituendo un nucleo di 70 frasi rappresentati-
ve.
Unendo opportunamente queste frasi fra di loro è possibile formare più
di 6000000 di periodi differenti, perfettamente accettabili sotto il profilo
sintattico o logico.
116 MISCELLANEA

100 REM COPYRIGHT IN BASIC


110 CLR:PRINT":J:"
112 REM l/IA SEZZE 22 LATINA
114 REM TEL. 487631
120 POKE53281,3:POKE53280 , 10
130 PRINT".3+'**************************************!!!!"
140 PR INT" :llE!!!! if+.!!!!"
150 PR I NT" .3+'11 ifi®~ fifi-W..Wii"li ifi.i%mMif; fifi'!Wtìml ~f if+.!!!!"
160 PRINT" ;i+!!!!! ii ~ in &: ~l ~ ~ if+.!!!!"
170 PR I m" il*!!!! ~mim tll~~ ~WìWMm ~ìWWllW !Il il*!!!!"
180 PR I NT" :llE!!!! ti ~ ~ f<l f~ ~ ti il*!!!!"
190 PR I NT" .at.!!!! ft. lii m n ~ ~lWl/iiJ~ !'li i*!!!!"
200 PR I NT" .3+'!!!! if+.!!!!"
210 PR I IH" .3+'!!!! ,~ ~ ~ @ @ il>f.iflllW.im !~ ~ @ if+.!!!!"
220 PR I NT-" ilt'll ft @1!l ~ ii !jj! il i1 I\ til if+.'11"
230 PR I NT" -!I ~ 1il ~ !li ~ fil ~ ~ ~~ il~ if+.!!!!"
240 PR IIH" ;i+!!!!! ~ ~ ~~ ~ ~ tlt ~ f~ ~ if+.!!!!"
250 PRINT".,..!!!! ~ fii ri ~ ~ ~l i~ ~ if+.!!!!"
260 PR IIH" ;iit.!I .3+'!!!!"
270 PRINT".3+'**************************************!!!!"
280 PRINT"!JJA UNO STUDIO EFFETTUATO DAL PROFESSORE"
290 PRINT"MARCO MARCHI DELL 'UNIVERSI TA ' DI PISA .• "
300 PR INT" E DAL PROF. PI ERO MOROS IN I O I RETTORE"
310 PRINT"DI LABORATORIO DELL'ISTITUTO SUPERIORE"
320 PRINT"DI SANITA'."
330 PRINTTAB(12)"!J<PREMI UN TASTO)"
340 GETQ$:lFQ$=""THEN340
350 PR I NT" :'I!I!I!JM1ENERATORE AUTOMATICO O I FRASI IHUTI L Hl"
360 PRINT"!DI PRONTUARIO DI FRASI AD EFFETTO AD USO"
370 PRINT"DEI POLITICI , DEI PENSATORI IMPEGNATI"
380 PRINT"E DEGLI OPERATORI DI CERTA STAMPA."
410 PRINT"ll!E'POSSIBILE FORMARE S ENZA ALCUl~A FATICA"
420 PRINT"OL TRE 83 E I M I L I O N Il'~ DI FRASI"
430 PRINT"DIFFERENTI AVENTI SENSO COMPIUTO <SI FA"
440 PRINT"PER DIRE) .. DA INSERIRE A VOLONTA' IN RE-"
450 PRINT"LAZIONI , LEGGI ED ARTICOLI."
4 60 PR INTTAB ( 12) ":!}(PREMI IJI~ TASTO)"
470 GETA$:IFA$=""THEN470
480 PRINT":J"
490 PR IIHTAB ( 7) " !I!I!I!I!JM=\ T O P E N S A ~~ D O ! ! ! :"
500 FORK=1T01000:NEXT
510 PRINT":J"
520 A$(1)="L'UTENZA POTENZIALE":A$(2)="IL BISOGNO EMERGENTE"
530 A$ (3)=" IL QUADRO NORMATil/O":A$(4)="LA VALENZA EPIDEMIOLOGICA"
540 A$(5)="IL NUOVO SOGGETTO SOC IALE":A$(6) ="L' APPROCC IO PROGRAMMATICO"
550 A$ (7)=" L'ASSETTO POLITICO ISTITUZIONALE":A$(8)="IL CR ITERI O METODOLOGICO"
560 A$ (9)=" IL MODELLO DI SVILUPPO":A$(10)="IL METODO PARTECIPATIVO"
570 B$(1 )=" SI CARATTERIZZA PER":8$(2> = " PRIVILEGIA'':B$(3)=" PREFIGURA"
580 8$(4)=" RICONDUCE A SINTESI":8$(5) =" PERSEGUE":8$('6)=" ESTRIHSECA"
590 8$(7)=" S I PROPOl~E" : 8$(8)=" PRESUPPONE" :8$(9)=" PORTA AVANTI"
600 8$ ( 10 )=" AUSPICA"
610 C$ ( 1 ) =" IL R I BAL TAMEIHO DELLA LOGICA ASS I STENZIALE PREES I STEtHE"
620 C$(2)=" IL S UPERAMENTO or OGIH OSTACOLO E RE SISTEl~ZA PASSIVA"
630 C$(3)=" U~l ORGANICO COLLEGA ME~no INTERDISCIPLrnARE ED UNA PRASS I DI"
640 C:H3>=C$(3)+" LAVORO DI GRUPPO"
650 C$(4),." LA PUIHUALE CORRISPONDENZA FRA OBIETTIVI E RISORSE"
660 C$C5)=" LA VERIFICA CRITICA DEGLI OBIETTIVI ISTITUZIONALI E L'INOI"
670 C$(5)=C$(5) +" 1/IOUAZIONE or FINI QUALI F I CAIHI"
680 C$ ( 6) ,,, " IL RIORIElffAMEMTO DELLE LltlEE DI TENOEl~ZA Hl ATTO"
690 C$(7)= " L ' ACCORPAMENlu OELLE FUNZIOIH ED IL DECEIHRHMEIHO DECISIONALE"
700 C$C8)= " LA RICOGIHZIONE DEL BISOGl~O EMERGEtHE E DELLA DOMANDA l~ON "
710 C$C8>=C$(8)+"SODDISFATTA"
MISCELLANEA 117

72 0 C$ ( 9 ) =" LA RICONVERSIONE ED ARTI COLAZIONE PERIFERICA DEI SERVIZI"


73 0 C$ ( 10 ) =" UN CORRETTO RAPPORTO FRA STRUTTURE E SOVRASTRUTTURE"
740 D$ ( 1>=" NEL PRIMARIO ItffERESSE DELLA POPOLAZIONE"
750 D$ C2 ) =" SENZA PREGIUDICARE L'ATTUALE LI VELLO DELLE PRESTAZIONI"
760 D$ ( 3 ) =" AL DI SOPRA DI INTERESS I E PRESSIONI DI PARTE"
770 D$ ( 4 ) =" SECONDO UN MODULO DI INTERDIPENDENZA ORI ZZONTALE"
780 D$ ( 5 ) =" IN UNA VI S IONE ORGANI CA E RICONDOTTA A UNITA ' "
790 D$ ( 6 ) =" CON CRITERI NON DIRIGI STI CI"
800 D$ (7)= " AL DI LA' DELLE CONTRADDIZIONI E DIFFICOLTA' INIZIALI"
8 10 D$ ( 8 )=" IN MANIERA ARTICOLATA E NON TOTALIZZANTE"
820 D$ ( 9 ) =" ATTRAVERSO I MECCANI SMI DELLA PARTECIPAZIONE"
830 D$ ( 10 ) =" SENZA PRECOSTITUZIONE DELLE RISPOSTE"
840 E$ ( 1) =" SOSTANZIANDO E VITALIZZANDO"
850 E$(2 ) =" RECUPERANDO 01/VERO RIVALUTANDO"
860 E$ (3) =" IPOTIZZANDO E PERSEGUENDO"
8 70 E$ ( 4 ) =" NON ASSUMENDO MAI COME IMPLICITO"
88 0 E$ ( 5 ) =" FATTUALI ZZANDO E CONCRETIZZANDO"
890 E$ ( 6 ) =" NON SOTTACENDO MA ANZI PUNTUALIZZANDO "
900 E$ <7) =" POTENZIANDO ED INCREMENTANDO"
910 E$( 8 ) =" NON DANDO CERTO PER SCONTATO"
920 E$ <9 >=" EV IOENZ I ANDO ED ESPLICITANDO"
930 E:f ( 10 ) =" ATTI VANDO ED IMPLEMENTANDO"
940 F$ <1> =" NEI TEMPI BREVI,ANZI BREVI SS IMI"
950 F$ (:2 ) =" IN UN'OTTICA PREVENTIVA E NON PILI' CURATIVA"
960 F$ ( 3 ) =" IN UN AMBITO TERRITORIALE OMOGENEO , AI DIVERSI LIVELLI"
970 F$ ( 4 ) =" NEL RI SPETTO DELLA NORMATIVA ESISTENTE"
98 0 F$( 5 ) =" NEL CONTESTO DI UN S I STEMA INTEGRATO"
990 F$ ( 6 ) =" QUALE SUA PREMESSA INDI SPENSABI LE E CONDIZIONANTE"
1000 F$ (7) =" NELLA MI SURA IN CUI CIO ' S IA FATTIBILE"
1010 F$ ( 8 ) =" CON LE DOVUTE ED IMPRESCINDIBILI SOTTOLINEATURE"
1020 F$ ( 9 ) =" IN TERMINI DI EFFI CACIA E DI EFFICIENZA"
1030 F$ ( 10>=" A MONTE E A VALLE DELLA S ITUAZIONE CONTINGENTE"
10 40 G$ ( 1 >=" LA TRASPARENZA DI OGNI ATTO DECI S IOt~ALE"
1050 G$(2 ) =" LA .NON SANITARIZZAZIONE EIELLE RI SPOSTE"
1060 G$ C3 >=" UN INDI SPENSABILE SALTO DI QUALITA ' "
1070 G$ ( 4 ) =" UNA CONGRUA FLESS IBILITA ' DELLE STRUTTURE"
1080 G$ (5) =" VANNULLAMENTO DI OGNI GHETTIZZAZIONE"
1090 G$ <6> =" IL COINVOLGIMENTO ATTI VO DI OPERATOR I ED UTENTI"
1100 G$ (7) =" L'APP IANAMENTO DELLE DI SCREPANZE E DELLE DI SCRAS IE ES I STENTI"
1110 G$ <8 >=" LA RIOEF IN I Z IONE DI UNA NUOVA FIGURA PROFESS IONALE"
11 20 G$ (9) =" L' ADOZIONE DI UNA METODOLOG IA DIFFERENZIATA "
113 0 0$ ( 10 )= " LA DEMEDI CALIZZAZIONE DEL LINGUAGGI O"
1140 Al=INT <10*RND <TI ) +l > :Bl=INT C10*RND <TI >+l )
1150 Cl = INT <10*RND <TI ) +1 ) :01 = INT <10*RND <TI >+l >
1160 El=INH 10*RND <TI ) +1 ) : F l = INT <10*RND <'f"f) +1 >
117 0 Gl=INT <10 *RND <TI >+l >
1180 PR INT"mI!IIJIIIJl!l"A$ <A l ) B$ <Bl )C$ ( C1 ) D$ <0 1 ) E$ CE1 >F$ ( Fl )G$ <G l >
1190 PRI NT" nnurvuo I CONTINUARE? l:"
1200 GETW$ : I F~I$ = " "THEN 1200
12 10 IFW$:" S "THEN480
1220 PR INT"!JJK - SPERO DI ESSERTI STATO D' AIUTO! ! "
1230 END
1240 PRINTTAB<10 ) "l!ml<PRE11I UN TASTO >;;"
1250 GETA$:IFA$=""THEN1 250
1260 PRitH":J" :RETURN

La struttura del programma è molto semplice .


Fino alla linea 470 si hanno due pagine di schermo esplicative, come
cappello iniziale.
118 MISCELLANEA

Le linee 490-500 sono coreografiche e simulano una azione di riflessione


(che dura pochi secondi), necessaria per "partorire" il periodo lettera-
rio.
Le linee 520-1130 costituiscono il nucleo di frasi-base .
Esse sono suddivise in sette gruppi di stringhe

A$ 8$ C$ 0$ E$ F$ G$

ciascuno formato da dieci stringhe.


Nelle linee 1140-1170 vengono generati casualmente sette numeri com-
presi fra l e 10

A1 81 C1 01 E1 F1 G1

e nella linea 1180 vengono stampate consecutivamente le stringhe corri-


spondenti a ciascuno dei sette numeri, una per ogni gruppo .
Il resto è chiaro: se si vuole ricominciare con un'altra frase, si ha un sal-
to indietro alla linea 480.
Al solito, la subroutine 1240 serve per fermare il programma nelle prime
due pagine di schermo.

ELIZA

Questo programma non è mio, ma è un adattamento per il Commodore


64 di un interessante lavoro creato da Joseph Weizebaum' in linguaggio
LISP.
L' ho tratto da un a.rticolo della rivista BIT (anno 2 num. 4) in cui esso
compare già tradotto in Basic.
Rappresenta un tentativo (abbastanza ben riuscito) di stabilire una simu-
lazione di dialogo intelligente fra l'uomo e una macchina.
Con questo programma il Commodore 64 assume l'identità di una psi-
coanalista di nome Eliza, alla quale l'operatore può confidare i propri
problemi (di qualunque natura essi siano), e instaurare così un dialogo
coerente in cui la macchina (quasi sempre) risponde in modo logico e
talvolta disarmante o ironico. La lingua inglese si presta in modo parti-
colare, per sua natura, ad un programma di questo tipo.
I risultati sarebbero stati molto più scadenti sintatticamente se il pro-
gramma fosse stato tradotto in italiano.
Comunque può essere usato ottimamente per esercitazioni in lingua in-
glese.

' " ELIZ A - A computer program for the study of natural language communication bet-
ween man and machine" COMM. A CM 9,1 (Jan. 1966).
MISCELLANEA 119

Occorre però un mm1mo di abilità (che del resto si acquista facilmente


dopo qualche tentativo) per sfruttare al massimo la capacità di dialogo
potenzialmente contenuta nel programma.

10 CLR :PRrnT":J;"
20 FORK=0T01:POKE53280+K,3:NEX T
30 N1 = 38:N2= 12 :N3= 115
40 FORK=1TON1+N2+N 3 + 3 ~READKS:NEX T
50 I "'"'***************************************!!!!"
PR tff
51 PR I tff "il*!! il*!!"
s2 PR r NT •1 a+:~ ~~mm1 ~ r?l tt::Jt&f?.Jrn fJ~)§t~HW~t: .if+;~··
53 NT"
PR I il*!! @ ~1 tl ~W. fil: ~.il il*!!!!"
54 NT"
PR I il*!! WM!i iii §I Mii;t; iri ~ ii*!!"
57 PR "il*!!
I NT @ lii m @Y~ ril'Wfli'?M$. il*!!!!"
58 I "a+:!!
PR tff @"ii®t.(itii ittf#J.~'VM~ lit. iltiil'Mfam @ @ at.!!"
59 PR I tff" a+:!!!! a+:!!"
60 PRINT"at.******************************•*******!!"
7 0 PRINT"!):Oti 1).UESTO PROGRAMMA PUOI A'./ERE UN"
7 1 PRINT" COLLOQUIO COt·l -=:
LA DOTTORESSA L I Z A;.;"
72 PR Itff" ( PSICOANALI S TA O I CHIARA FAt·1A E DI NA-"
7 3 PR I tff" 2 I ONAL I TA' I t·lOLESE) • PUOI S OTTOPOF:LE I"
74 PRltff"TUOI PROBLEMI E RI CEl/EF:E UTILI COt..jS IOLI"
75 PR Itff" PEF: R I SOL l/EF:LI • "
7 6 PRitff"!l DOPO AVER BATTUTO LA OOMAt..jOA • TERMINA"
77 PRitff" COl..j QI. O O ?i': PER FARLE CAPIF:E CHE LA"
78 PRINT" STESS A E' FINITA."
79 PR I NTTAB ( 10 ) "!Jm( PREMI Ut..j TASTO ) i':"
8 0 GETA$ : I FA:*'=" "THEN80
8 5 PRINT"::J" :A$:""
100 DIMSC38) ,R C38 ) ,N (38 )
13 0 FORX =lTONl:READS( X) ,L:R CX ) = S ( X) :N(X)=S(X)+L-l:NEX T
160 PRitff" CIAO , MI CHIAMO ELI ZFI."
16 f F OR J = 1 T03000: t-1cn·
162 P R I tfl "WiOt..j PARLO MOLTO E:ENE L ' 1 TAL I At..iO E PRO- "
16 4 PR Itff "BAB I U1EtffE PUO ' TOF:NART I LIT I LE PARLARE"
166 PRINT" COt..i ME Hl INGLESE. "
16 7 PRitff"W,1UINDI DA OF:A rn POI PROSEGUIREMO IL"
168 PRINT "NOSTRO DIALOGO IN rnGL ESE."
17 0 FORJ=1T05000:t-lEXT
190 PR itff"~I , I AM ELI Z A. TELL ME YOUR PROBLEM"
195 GOSUB10000
200 L=l
2 10 IFMIO$ Cl$,L,1 ) =" ' "THENI$= LEFT$CI$,L-1 ) +RIGHT$ClS , LEN Cl$)-L ) :GOT0210
220 L = L+1:IFL<=LEN ( l$ ) THEN2 10
280 RESTORE
290 S=0
3 00 FORK= l TOtH
3 05 IFS> OTHEN33 5
3 113 RE AOK$
3 20 GOSUB15000
330 IFA <> OTHEN S~K :T = A:F$ = K$
33 1 GOT03 40
335 REAOS$
3 40 NEX TK
3 65 IFS>0THENK=S :L=T:GOT0400
3 70 K=N1: GOT05 70
400 C$= " ": IFLEIH l$) - LENff$ ) -L+1>0THEt~C$=C$+RIGHT$ ( 1$,LEN < l$)-LEN(F$ ) -L+1)
4 2 0 FORX=1TON2/ 2
4 3~3 REAOS $,R$
4 40 FORL= 1TOLEN ( C$ )
120 MISCELLANEA

450 IFL+LEN CS$ )>LEN CC$>THEN510


480 IFMID$CC$,L , LEN CS$))C>S$THE N510
490 C$=LEFT$(C$, L-1 ) +R$+RIGHT$ CC $,LEN<C2>- L - LEN(S$)+1)
495 L=L+LEtHR$ )
500 GOT0540
510 IFL+LEN CR$ ))LEN CC$)THEN540
520 IFMID$ CC$ ,L, LEN CR$ ))C>R$THEN54 0
530 C$=LEFT$ (C$,L- 1 ) +S$+RIGHT$CC $,LEN(C$ )-L-LEN CR$)+1 )
540 NEX TL
550 NEXTX
555 IFMIO$CC$ ,2, 1 )= " "THENC$=RIGH T$CC$,LENCC$ ) -1 )
560 GOT0580
570 FORX=1TON2:R EADR$:NEXT
580 FORX=1TOR CK> :REAOF$:NEX T
590 R<K>=R<K>+1: IFR<K >>N <K>THENR CK>=S<K>
595 R$="" : S$= " 11 :K$= 11 11
600 l$=F$:K$="llE": GOSUB15000:IF A=0THENPRIN TF$:GOT0195
620 PRitHLEFT$CF $,A-1 ) ;C$ : GOT0 195
1050 DATA"CAt~ YOUR", "CAN I", "YOU ARE" .• "YOURE" , " I DONT"," I FEEL"
1060 DATA"l-IHY DONT 't'OU" , "WHY CANT I" , "ARE YOU" , " I CANT"," I AM", "IM "
1070 DATA"YOU " ," I 1-lANT", "1-lHAT", "HOYl", "1-lHO", "YlHERE" , "WHEN", "1-IHY"
1080 DATA"NAME" , "CAUSE", " SORR'r'" , "DREAM", "HELLO", "Hl " , "MAYBE"
1090 DATA"NO", "'r'OUR", "ALl-lA'r'S", "THINK" .• "ALIKE", "YES", "FRIEt~D"
110'0 DATA"COMPUTE R" , "ELIZA", "MONEY", " ;-;$#"
1230 DATA" ARE , AM ", "1-lERE ", "WAS "," YOU "," I ", "YOUR ", "MY "
1235 DATA" IVE "," YOUVE " , " IM " , " YOURE "
1300 REM
1330 DATA"DON'T 'r'OU BELIEVE THAT I CANllE"
1340 DATA"PERHAPS YOU 1-lOULD LIKE TO BE ABLE TO*"
13 50 DATA"YOLI YlANT ME TO BE ABLE TO*"
1360 DATA" PERHAPS YOU DON ' T YlANT TOllE"
1365 DATA"DO YOU 1-lAtH TO BE ABLE TO*"
1370 DATA" YlHAl MAKES 'r'OU TH I t~K I AM* "
1380 DATA"DOES IT PLEASE YOU TO BELIEVE I AM*"
1390 DATA"PERHAPS YOU WOULD LIKE TO BE*"
1400 DATA"DO YOU SOMETI11ES YHSH YOU 1-lERE*"
1410 DA TA"DotVT YOU REALLY*"
1420 DATA" WH'r' Dot~ ·• T YOUll!"
1430 OffTA"DO YOU Yll SH TU BE ABLE*"
1440 DATA"DOES THAT TROUBLE YOU? "
1450 DATA"TELL ME MORE ABOUT SUCH FEELit~GS."
1460 DATA"DO YOU OFTEt~ FEEL*"
1470 DATA"DO 'r'OU ENJOY FEELING*"
1480 DATA"DO 'r'OU REAL L'r' BELIEVE I DON'T*"
1490 DATA"PERHAPS rn GOOD TIME I WILL*"
1500 DATA" DO YOU YlANT ME TO*"
1510 DATA" DO 'r'OU TH I NK YOU S HOULD BE ABLE TO*"
1520 DATA" 1-lH'r' CAt~ ' T 'r'OU*"
153 0 DATA"WH'r' ARE YOU HHERESTED IN WHETHER OR t~ OT I AM*"
1540 DATA"YlOULD YOU PREFER IF I YIHERE NOT*"
1550 DATA" PERHAPS IN YOUR FAtHAS I ES I At1*"
1560 DATA"HOl-l DO 'r'OU KNOYI YOU CAN'T*"
1570 DATA"HAVE YOU TRIED? "
1580 DATA"PERHflPS YOU CAN NOW*"
1590 DATA"DIO YOU COME TO ME BECAUSE YOU ARE*"
1600 DATA" HOYl LONG HAVE YOU BEEN*"
16 10 DATA"DO YOU BELIEVE IT IS NORMAL TO BE*"
1620 DATA" DO 'r'OU ENJOY BE I t~G*"
1630 DATA"WE YlERE OI SCUSSING YOU NOT ME"
1640 DATA"OH,I*"
1650 OATA"YOU 'RE NOT REALLY TALK ING ABOUT ME,ARE YOU?"
1660 DATA"l-IHAT YIOULD IT MEAt~ TO 'r'OU IF YOU GOT*"
MISCELLANEA 121

1670 DATA"WH'r' DO 'r'OU 1-lANT*"


1680 DATA" SUPPOSE YOU SOOt~ GOT*"
1690 DATA"l-JHAT IF 'r'OU t~EVER GOT*"
1700 DATA"I SOMETil1ES ALSO WANT*"
1710 DATA"l-JHY DO YOU ASI( ?"
1720 DATA"DOES THAT QUESTIOt~ ltHEREST 'r'OU?"
1730 DATA"WHAT ANSl·JER 1-lOULO PLEASE 'r'OU THE MOST?"
1740 DATA"WHAT DO 'r'OU THil~K ? "
1 750 DATA" ARE SUCH QUE::n I ot~S IN YOUR t1 I NO OFTEt~?"
1 760 DATA" 1-lHAT I S THAT 'r'OU REALL 'r' 1-IAtH TO K~IOl-f?"
1770 DATA"HAVE YOU ASKED At~'r'ONE ELSE? "
1 780 DATA" HAVE 'r'OU ASKED SUCH QIJEST I ot~S BEFOF:E?"
1790 DATA"j,JHAT ELSE COMES TO MINO 1-JHEN YOU ASK THAT?"
1800 DATA"NAMES OOWT INTEREST ME."
1810 DATF:f"I DON'T CARE ABOUT NAMES.PLEASE GO ON."
1820 DATA"IS THAT THE REAL REASON?"
1830 DATA"DOWT At·fr' OTHER REASONS COME TO MrnD?"
1840 DATA"DOES THAT F: EASON E~"<PLAIN AN'r'THING ELSE? "
1850 DATA"l-JHAT OTHER REASONS MIGHT THERE BE?"
1860 DATA"PLEASE DOWT APOLOGIZE!"
1870 DATA" ApOLOG I ES ARE NOT t~ECESSARY. "
1880 DATA"l-JHAT FEELINGS DO 'r'OU HAVE 1-JHEt~ YOU APOLOGIZE?"
1890 DATA"OOWT BE SO DEFEt~Sil/E ! "
1900 DATA"WHAT DOES THAT DREAM SUGGEST TO YOU?"
1910 DATA"OO 'r'OU OREAM OFTEN?"
1920 DATA" 1-JHAT PERSONS APPEAR IN YOUF: DREAMS?"
1930 DATA" ARE 'r'OU O I STURBED BY 'r'OUR DREAl1S?"
1940 DATA"HOYJ DO 'r'OU DO ••• PLEASE STATE YOUR PROBLEM."
1950 DATA"YOU DOt·l ' T SEEM QUI TE CERTAIN."
1960 DATA"l-IH'r' THE UNCERTAIN TONE?"
1970 DATA"CAN'T YOU BE MORE POSITIVE?"
1980 DATA"YOU AREN ' T SURE? "
1990 DATA" DON' T 'r'OU KNOl-J?"
2 0(!121 DATA" j,JH'r' NO*"
2010 DATA"DOt~'T Sfi'r' NO ITS ALWA'r'S SO t~EGATil/E"
20 2 0 DATA"l-IH'r' NOT?"
2 030 DATA"ARE YOU SURE?"
2 040 DATA"yJH'r' NO? "
2 050 DATA"l-JHY ARE YOU COt~CERNED ABOUT M'r'*"
2 060 DATA"l-JHAT ABOUT 'r'OUR OYlt~*"
20 70 OATA"CAN'T YOU THINK OF A SPECIFI C E)<AMPLE? "
2 080 DATA"j,JHEN?"
2 090 lJATA"WHAT ARE '.."OU THHll<IllG OF ? "
2100 DATA"REALLY ,AUJA'r'S? "
2 110 OATA"DO YOU REALL'r' THHlK so>"
2 120 DATA"BUT 'r'OU ARE NOT SURE 'r'Oll*"
2 130 OATA"DO 'r'OU OOUBT YOU*"
2140 DATA" IN 1-IHAT 1-lA'r'? "
2 150 OATA"l~HAT RESEM8!...At·lCE DO YOU SEE?"
2160 OATA"l-JHAT DOES THE S IMILARITY SUGGES T TO 'r'OU?"
2 17 0 DATA" WHAT OTHER CONNECT I ot~S DO YOU SEE?"
2 180 DATA"COULD THERE REALL'r' BE SOME CONNECTIONS?"
2190 Df!TA"HCYI?"
2200 DATA'"r'OU SEEM QUITE POSITIVE."
2210 DATA"ARE 'r'OU SURE?"
2 2 20 DATA"l SEE."
2 230 DATA" I UNOERSTAt~D."
2240 DATA" 1-JHY DO YOU BR I NG UP THE TOP I C OF FR I ENOS?"
2 250 DATA"OO YOUR FRIENDS WORRY YOU? "
2260 DATA"DO YOUR FRIENOS PICK Ot~ YOU?"
2270 DATA"ARE 'r'OU SURE YOU HAVE ANY FRIENDS? "
122 MISCELLANEA

2280 DATA" DO 'T'OU IMPOSE Ot·l 'T'OUR FR I ENDS?"


2290 DATA"PERHAPS 'T'OUF: LOVE FOR FRIEt4DS j,JORRIES 'r'OU"
2300 DATA" DO COMPUTERS j,JORR'T' 'T'OU?"
2310 DATA"ARE 'T'OU TAU<It~G ABOUT ME IN PARTICULAR?"
2320 DATA" ARE YOU FR I GHTENED B'T' MACH INES?"
2330 DATA"j,IH'T' DO YOU t1ENTIOt4 COMPUTERS?"
2340 DATA"WHAT DO 'r'OU THrnK MACHINES HAI/E TO DO j,J!TH 'r'OUR PROBLEl1?"
2350 DATA"DOWT 'T'OLI THWK COMPUTERS CAN HELP PEOPLE?"
2360 DATA"WHAT I S IT ABOUT MACHINES THAT j,JORRIES YOU?"
2370 DATA" SA'T', DO 'T'OU HAVE At~'T' PS'T'CHOLOG I CAL PROBLEMS?"
2380 DATA"l~HAT DOES THAT SUGGEST TO 'r'OU?"
2390 DATA"! SEE"
24013 DATA" I 'M NOT SURE I UNDERSTAND 'T'OLI FULL'<'"
2410 DATA"COt1E COME ELUCIDATE YOUR THOUGHTS"
2420 DATA"CAN 'T'OU ELABORATE ON THAT?"
2430 DATA"THAT IS QUITE INTERESTrnG."
2440 OATA" j,JHY DO YOl_I HAI/E PROBLEt1S j,J I TH MOt~E'T'?"
2450 DATA" DO 'T'OU TH I NK MONE'T' I S El/ERYTH I NG?"
2460 DATA"ARE YOU SURE THAT MOt~EY 1:::; THE PROBLEt1?"
24?0 DATA" I TH I t4K j,JE j,JAtH TO TALK AB OUT 'T'OU, NOT AB OUT ME. "
2480 DATA"j,JHAT'"S ABOUT ME?"
2490 DATA"j,IHY DO 't'Oli ALj,JA't'S BF.:ING UP M'T' t4AME?"
2530 DATAl,3,4,2,6,4,6,4,10,4,14,3,17,3,20,2,22,3,25,3
2540 DATA28,4,28,4,32,3,35,5,40 ,9, 40 , 9,40 ,9, 40,9~40,9,40,9
2550 DATA49,2,51,4,55,4,59,4,63,1,63,1,64,5,69,5,74,2,76,4
2~60 OATA80,3,83,7,90,3,93,6,99,7,116,3,113,3,106,7
10000 !$=" ":Z=l
10010 GETA$: IFA$=" "THE~l10010
10020 IFA$=". "ORA$="! "ORA$=" ? "THENPRitHA$.~ :A$=CHR$ ( 13>
10022 IFA$=CHF;$( 1 3)THENPRitH : !$=!$+" ":RETURN
10030 IFASC<AS)=20THEN10100
10040 IFASCCAS)<320RASCCA$))90THEN10010
10060 PRINTA$;:I$=IS+A$:Z=Z+l:GOT010010
10100 IFZ=1THEN10010
10110 PRINTA$;:Z = Z-l:l$=LEFT$(!$,2):GOT010010
15000 A=0
15010 A=A+l
15020 IFLEN(I$ > -A< LEN(K$)-1THENA=0 :RETURN
15030 IFt1ID$(l$,A , LENO:K$)) =K$THENRETURN
15040 GOT01 5 010

L'unica innovazione consiste nel fatto che l'istruzione INPUT è stata so·
stituita con un ciclo di istruzioni GET, in modo da evitare la necessità di
premere il tasto RETURN alla fine di ogni frase di domanda o di rispo-
sta dell'operatore.
Basta terminare la frase con un punto, un punto interrogativo o un pun-
to esclamativo, ed Eliza capirà che può cominciare ad elaborare la rispo-
sta.
N1 è il numero di parole chiave contenute nelle linee 1050-1100.
N2 è il numero delle coniugazioni (linee 1230-1235) che permettono di
trasformare

I in YOUR
MY in YOUR
ecc.
MISCELLANEA 123

N3 è il numero di frasi di risposta e sono contenute nelle linee 1330-


2490.
Quando Eliza deve rispondere, prima ricerca nella frase battuta dall'ope-
ratore le parole chiave, e poi fornisce la frase di risposta dopo averla co-
niugata.
Le frasi di risposta sono determinate dall'elenco di dati numerici conte-
nuti nelle linee 2530-2560.
Se la frase di risposta termina con un asterisco, essa viene completata
aggiungendo la frase coniugata rispetto a quella battuta dall'operatore.
Ecco un esempio di come scorre il programma (E sta per Eliza ed O per
operatore):
E - Hi, I am Eliza. Teli me your problem.
O - Computers.
E - Do computers worry you?
O- No.
E - Why no?
O - Because I work and amuse myself with them.
E - Is that the real reason?
O - Yes.
E - Are you sure?
O - Yes.
E - I see.
O - Have computers a mind?
E - Are you talking about me in particular?
O - Yes.
E - I understand.
O - But you have not answered to me.
E - We were discussing you not me.
O - Tonight I have made a beautiful dream.
E - What does that dream suggest to you?
O - That women are a great invention.
E - Say, do you have any psychological problems?
O - Are you a puritan computer?
E - Why are you interested in whether or not I am a puritan computer?
O - Because you change argument of discussion!
E - Oh, I change argument of discussion .
O - Or else you are distracted.
E - What makes you think I am distracted?

E si potrebbe continuare a volontà su questo tono.


Un'occhiata alle frasi di risposta contenute nel listing può suggerire altri
validi argomenti di discussione.
124 MISCELLANEA

FRATRIE

È una ricerca statistica sul numero di fratelli (maschi o femmine) che co-
stituiscono un campione arbitrario di famiglie. Per esempio le famiglie
degli studenti di una scuola.
La ricerca tende a dimostrare che la distribuzione dei maschi e delle
femmine in ciasCl1na famiglia è equa e segue le leggi del calcolo delle
probabilità.
L'argomento offre anche l'occasione di evidenziare come questa ricerca
sia intimamente collegata con i coefficienti del triangolo di Tartaglia.

10 REM COPYRIGHT IN BASIC


12 REM VIA SEZZE 22 LATINA
14 REM TEL . 4 8763 1
20 CLR :PRitH"::liii!" :POl<.E5328ilt .• 10 :POl<.E53281 .• 3
25 D H1t-H 5 .• 5)
30 PR I IHTAB ( 7) "STATISTI CA ~;ULLE FF:ATR I E:;;" : GO SUB 11000
40 PF: I IH "l!I!)]UES TO PROGRAMMA F: I CEVE DflT I SU I FIGLI"
50 PRIMT"Mf'!SCHI E FEMMll~E DI UN CERTO NUMERO DI "
60 PRIIH"Fi:WIIGLIE .• E NE DEDUCE ALCUNI F:ISUL TATI"
65 PRitH"DIDAT TICAMEIHE ItHERESS AIHI."
7f1 PF: I NT" w~·uo . ESSERE PF:OPOSTO AD UNA CLASSE DI"
75 PF<:Hff"Ut~A SCUOLA O ADDIRITTURA AGLI STUDEIHI "
77 PRINT"OI TUTTA LA SCUOLA."
80 INPUT " l!I!)) UAIHE FAM I GL t E VUOI TRtiTl"fiF:E " _; l·l
9 0 PR I IH" ;.')JI<. - ORA I NTF:ODUC I I Di'ff I .. MA R I COF:DAT I"
100 F'R ItH '!D I FORIH RM I fìNCHE I DATI PEUiT l V I .fl I"
U'.15 PRIIH"FIIJLI (MASCH I O FEMMHlE ) DECEDUTI O "
110 PRINT"NATI MORTI ."
120 GOSUB 11000:PRIMT
1 ::~ 0 FORI<.= 1 TOM
140 PF.:Hff"m"AMIGLIA ~l. "I<
1'.:<0 PR INT" m:-11JAIH I FIGLI HA ? " _;
160 GOSUB10500:PRINTA$
165 F=A:TF=TF+F
1 ;>0 PR Hll ".!PUftNTI DI LORO SOl-Ki MASCHI ? ";
175 GOSUB10500 : PR INTA$
13 0 M=A:Tt1=TM+M
190 I F M>F THENPF.: I MT" ~F:F: ORE ! ! :;" : GOTO 140
2 10 M( F, M)=MCF , M)+l
390 NE><TK
400 PRINT";:)JK -- ORA HO TUTTI I DATI SUL LE"I~
410 PRINT"FAt1 IGLIE . "
4 2(1 PRIIH"!PER S EMPLICITA"" TEl<:F:Et10 COIHO SOLO"
4 30 PRINT"DELLE FAMIGLIE CON UN MINIMO DI 1 E UW
440 PRIIH"MASS IMO DI 5 F IGLI : LE FAMIGLIE PILI'"
450 Pf':IIH"t·lUMEROSE S Ol~O PIUTTOS TO RHRE."
520 FF=TF-Ti'l
525 GOSUB1 1000
530 PR INT"l6II~ TUTTO Cl SotlO "TF"FIGLI DI CUI"
540 PRINTTM" S ONO MA S CHI ,E "FF":30NO FEMMINE."
550 F~=I MTCTM I TF*1000 )1 10:PF= 100-PM
560 PRIIH" C IOE' IL "PM";~ S ONO MASCHI E IL"
570 PRI NT PF";~ sotm F EMMHlE."
575 GOSIJB11000
580 PRIIH"Y,l UE STA STATISTICA E' PERO ' PIUTTOS TO"
590 PRINT"OVV IA IN QUANTO GIA ' SAPPIAMO CHE IL"
MISCELLANEA 125

600 PRINT"NUMERO DEI MASCHI E' C IRCA UGUALE A"


610 PR I tH" QUELLO DELLE FEMM I t~E. "
630 GO S UB 100[10
6 40 PRitH";:J:: ·' INVECE PILI' INTERESS ANTE STUD IARE"
650 PRINT"LA SEGUENTE TABELLA:"
655 PR ltH" :ml QJ:OP !ALA SU UN FOGLI O DI CARTA:;;"
660 GOSU810000:PRINT":Jll"
670 PR ItHTAB ( 9) "NUMERO FI GLI MASCHI:,:"
680 GOSI.181 1 000 : PR I NT
690 PRltHll'l8(7)"0 ~ J 4 S"
700 GOSU8 11000:PRINT
710 FORX=1T05:FORY=0TOX
7 15 PRINTTABC6*CY+1))M(X,Y);
720 t·lD<T'r'
725 PRitH :PRIMT
730 NE;·nx
735 GOSUB 11000
737 PRI NT":=illl!W,ID9l" :FORK=1 T05 :PRitHK :PR itH :NEXTK
7 38 PR ItH" :ml ·t l!J~UME RO FIGLI PER FAMIGLIA:;;"
740 GOSU8 10000
1000 PRINT"::W3E UNA FAMIGLIA HA UN FIGLIO,ESSO PUO"'
10 10 PRINT"ESSERE"
1020 PRitHTA8C:8) ":gf·1:;;"TAB< 1 5) "OPPURE"TAB (28) "111F::"
10:;:0 PRINT"!l<OOVE DA ADESSO rn POI 8 ·1:; S TA PER MAS·- "
11:340 PRitff"CHIO E 111F:: STA PER FEMMINA)."
1050 PF~ItH"l)~JUHmI CI SONO 5 13 PROBABILITA' SU 100"
1060 PRHH"CHE ESSO S IA MASCHIO,ED AL TRETTA~HE CHE"
1070 PRINT"ESSO SIA FEMMINA."
1080 PRitH "!lINFATTI GLI EVENTI POSSIBILI SONO 2,E"
1090 PRlNT"It·l C IASCUNO DEI DUE CAS I IL ~lUMERO DI"
1100 PRINT"EVENTI FAVOREVOLI E' 1."
1110 PRitHTAB< 11) "!lP=l /2=0. 50 =!:;0 ;~ "
1120 GOSUB 10 000
1130 PR I tH ";:J:::E I tNECE I FIGLI S ot~O DUE .• S I POSSONO"
1 140 PRINT " VER IFI CRE LE SEGU E ~Hl S ITUA Z IOt~l :"
1150 PF: ItHTA8(7) "~t1"TA8( 17) "MF"TA8 (27) "FF"
1160 PR HHTAB < 17) "FM:,:"
117'0 PRitffTAB C4 ) "l!ll /4=25;~ 2/4 = 1 /2=50% 1 ,-'4 =25 ;~ "
1180 PRINT:GOS UB11000
1190 PR I tff "!J)OVE I NUMERI RAPPRESE tffAt~ O LE PROBA-"
1200 PRI NT " B IL ITA' CHE I FIGLI S IANO R I SPETTI VA-"
1210 PRINT"MENTE 2 MASCHI , 1 MASCHIO E NESSUN MAS- "
1220 PRINT"CHIO."
1230 PRHH"!l..E PROBABILITW (ESPF:ESSE IN PERCEtHUA- "
124 0 PRINT"LE> smm SEMPRE CAL COLATE COME F:APPORTO"
1250 PRINT"FRA IL NL~ERO DI E VENT l FAVOREVOLI E IL"
1260 P RI NT" NUMERO DI EVENTI POSSIBILI."
1270 GOSUB10000
1280 PR Itff " :::JSE I F IGLl SONO TRE, LE S ITUAZ IONI POS-"
1290 PRI NT"SIB ILI Sot~O:"
1300 PR I NT "!1 8 ·1MM MMF t1FF F FF"
1310 PRitHTAB( 13) "MF M F MF "
1320 PRI NTTA8 ( 13)"Ft1M
1330 PRit~T"!l L '8= 3/E:= 1 ,...'8::
11

13 40 PR HH"!l 12. 5;{ 37 . s;~ 37.5;~ •") • ._.,


1 G. c-•,111
.

1350 PRINT:GOS UB 11 000


1360 PRHff"D:'.ON I t~UM ERI CALCOLATI CON LO S TESSO"
1370 PRINT"CRITERIO PRECEDENTE ."
1380 GOSUB 10000
1 390 PR INl 11 :)3E I FIGLI SO t·~ O 4,LE S ITUAZIOt-~I POSS I - 11
1400 PR INT"BIL I SONO :"
1410 PR Hl r "!I QJ·lMMM MMMF MMFF 11FF F FFFF"
126 MISCELLANEA

1420 PRINTTA8(10 )"MMFM MFMF FMFF"


1430 PRINTTAB < 10) "MFMM MFFM FFMF"
1440 PRINTTABC10>"FMMM FMMF FFFM"
1450 PRitffTA8 (18) "FMFM"
1460 PRitffTA8(18)"FFMM;;"
1470 PRINT"!] 1 / 16= 4/16= 6/16= 4 / 16= 1/ 16="
1480 PRitff"!] 6. 25;~ 25;~ 37. 5;~ 25;~ 6. 25;~"
1490 PRINT:GOSUB11000:PRINT:G OSUB10000
1500 PR I NT" ::J;:D rnF I NE SE I FIGLI SONO 5 .•LE SI TUA-"
1510 PRlNT"ZIONI POSSIBILI SONO :"
1520 PR I tff "!l lf·IMMMM MMMMF MMMFF MMFFF MFFFF FFFFF"
1530 PR I tffTAB ( 8 ;0 "11MMF M MMFMF MFMFF F MFFF"
1540 PF: I ~ffTAB C8 ì "MMl""MM MMFrt·I MFFMr FFMFF"
1 5~0 F'R l Nl ., AB \. ::I)" MFMMM MF Mr·u-· Mt-FFM FFFMF "
1560 PR: IN rTAB ( 8) "F11Ml1M MFMFM FMMFF FFFFt1"
1570 PRINTTABC:14)"t1FFMM FMFMF"
1580 PRINTTAB C14 ) "FMMMF FMFFt1"
1590 PI< I NTTAB ( 14 ) "Ft1MFM FFMMF"
1600 PRitHTAB C14 ) "FMFt1M FFMFM"
161 0 PRJtHTAB( 14) "FFMMM FFFMM;"
1620 PRHH"!]l/32= 5 / 32= 10/32= 10/32= 5/32= 1 /32= "
1630 PRltff"!J3, 12;~ 15. 62;~ 31. 25;~ 3 1. 25;~ 15. 62;~ 3. 12;~"
1640 PRINT:GOSU811000
1650 PRJNT :GOSU810000
1660 PRINT"::J;:BBENE,ORA METTIAMO A COt~FROtffO QUESTE"
1670 PRINT"PERCENTUALI CON QUELLE CHE POSSIAMO RI-"
1680 PRltff" CA"IARE DALLA TABELLA CHE TI HO MOSTRATO "
1690 PRINT"ALLA FINE DEL PROGRAMMA PRECEDENTE."
1700 PRINT :GOSU8 11000 :PRitff :GOSU810000
1 710 FORX= 1T05
1720 Pl<IN1 ":::llFAMI GLIE COWX" ll FIGLI:;"
1 730 EP=0 : PR I tff
1 ;>40 FOR'-.'=131 Q)<
1750 PR INTl1C X, Y) "FAM I GL JE COt~ "'t'" FIGLI MASCHI"
1760 EP=EP+M CX,Y>
1770 NE><:TY
1780 PRltff"FACEt~OO LA SOMMA <EVEN1 I POSSIBIL.I) ,S I"
1790 PRilff "OTTIENE ="EP
1800 PRINT"DIVIOENDO C IASCUN RISULTATO <EVENTI"
1810 PRINT"FAVOREVOLI) PER"EP",E MOLTIPLICANDO"
1820 PRINT"PER 100,SI OTTEt~GOt~O LE FREQUENZE SPE-·"
1830 PRINT"RIMENTALI."
18 40 PR I tff" ESSE SONO RISPETTI "IAMEtHE : "
1850 FOR:'T'= 0TO)<:
1860 IFEP=0THEt~PRitff"!l!OO 111t"~Ot~ CI SONO FAMIGLIE COH" X "ll FIGLI:;" :GOT0 189(1
1870 PRINT"PERC. "Y"FIGLI Mf'ISCHI=" INHM<X,'T">/EP*1000)," 10
1880 NEXT', '
1890 GOSUB10000
1900 NEXTX
19 10 PRINT":rOME PUOI NOTARE LE FREQUE~lZE SPER IMEt~ -"
1920 PR I tff" TAL I SI AVVI C I t~ANO ABBASTANZA ALLE PRO-"
1930 PR I tff "BAB IL I TA ' TEOR I CHE : LA CORR I SPO~lDEN ZA E' "
1940 PRINT"TANTO PILI' EVIDENTE QUANTO PILI·" E ' ALTO"
1950 PRHH" IL ~lUMERIJ GLOBALE DI FAMIGLIE TRATTATO."
1960 GQ'.3UB 1101.30
1970 PRINT"!)::IO' DIMOSTRA LA VALIDITA' DEL CALCOLO"
1980 PRINT"DELLE PRIJBABILITA ' ,E L'EQUt"t DI S TRIBU-"
1990 PRINT"ZIONE DEI MASCHI E DELLE FEMMIME DAL"
2000 PRINT"PUNTO DI VISTA STATI STICO."
2010 GOSUB 11000
2 020 PRINT:GOSUB10000
2030 PR I tff" ::J;:' INFINE INTERESSANTE t~OTARE COME IL"
MISCELLANEA 127

2040 PR I tH" NUMERO O I CONF I GURAZ I Ot4 I PRESENT I NELLE"


2050 PRitH"COLONNE SCRITTE rn QJ<OSSO; ALL' HHZIO"
2060 PR I tH "O I l,1UESTO PROGRAMMA , CORRI SPONDANO E SAT - "
2070 PRHH"TAMEtHE AI C OEFFI C IE~HI DEL TRIANGOLO"
2080 PRHH"DI TARTAGLIA:"
2090 PRitHTAB < 14 ) "~1 1"
2100 PRHHTAB( 11) "1 2 1"
2110 PRitHTA8 ( 8)" 1 3 3 1"
2120 P~INTTA8(5)"1 4 6 4 1"
21 3 0 PRINT" 1 ~ 10 10 5 1"
2 140 FORK=l T040 :PRINT". "; :NE)<TK
2150 GOSIJ811000
2160 PR I NT" ~·IUO I R I VEDEPLE ? ;"
21 ;>0 GETA$: IFA$=" "THEN2 1 ;•0
2180 IFA$= "S"THEN1000
2 190 PR!t4T";:J:IK - CIAO!"
2 2 10 END
Wì.:l00 PR un ., AB I, 10 ... "a,,i( 1-'t-:!:.M l UN TttS 1Ll >:oli"
10010 GETA$:IFA$= ""THEN10010
1002 0 RETURN
10500 OETA$:IFA$=""THEN10500
10510 A=VAL ( A$):RETURN
11000 FORK:: 1 T040: PR I NT" ~"; : t~EXT: RETURN

Come già accennato, il programma è abbastanza breve, in modo da con-


sentire la trattazione anche di un grande numero di famiglie.
Le uniche subroutine sono la 10000 che serve sia per arrestare il pro-
gramma che per introdurre i dati senza l'uso del RETURN, e la 11000
che serve a tracciare la solita barra orizzontale.
Dopo il dimensionamento di una variabile con due indici (linea 25), vie-
ne richiesto il numero di famiglie da trattare.
Successivamente, con un ciclo FOR NEXT (linee 130-390), viene richiesto
per ciascuna famiglia il numero dei figli complessivi e il numero di figli
maschi (le femmine ovviamente si ottengono per differenza).
La linea 210 costituisce un contatore che incrementa volta per volta il
numero di famiglie aventi un certo numero di figli dei quali tot sono
maschi.
Le linee 160 e 180 contengono anche dei contatori per il conteggio glo-
bale delle famiglie e dei figli maschi. In 190 c'è una segnalazione di erro-
re nel caso in cui si batta un numero di figli maschi maggiore del nume-
ro globale dei figli.
In 520 viene calcolato per differenza il numero globale delle figlie fem-
mine.
Il flag FL = 1 della linea 620 serve per stampare la stringa contenuta
nella linea 10010.
Non resta ora che stampare la matrice M(X, Y) contenente i risultati nu-
merici raccolti in tabella. La X indica il numero di figli e la Y il numero
di figli maschi.
Essa viene stampata grazie a due cicli FOR NEXT annidati uno dentro
l'altro (linee 710-730).
128 MISCELLANEA

In cinque pagine di schermo successive viene mostrato come, a seconda


del numero di maschi e femmine per le famiglie che hanno da uno a cin-
que figli, si può calcolare teoricamente la probabilità di quanti figli ma-
schi esse possano avere .
Occorre conoscere il concetto di probabilità teorica, come è stato tratta-
to nel decimo programma.
Per esempio consideriamo il caso in cui una famiglia abbia tre figli.
In ordine progressivo di nascita, possono verificarsi le seguenti situazio-
ni:

MMM MMF MMF FFF


MFM FMF
FMM FFM

dove M sta per maschio e F per femmina. Sono quindi 8 differenti situa-
zioni possibili, e le probabilità che una famiglia con tre figli possa avere
rispettivamente tre maschi, due maschi, un maschio e nessun maschio,
sono nell'ordine

l
- ::: 0,125 ::: 12,50/o
8

3
= 0,375 = 37 ,50Jo
8

83 = 0,375 = 37 ,50Jo

= 0,125 = 12,50/o
8

dove ogni probabilità corrisponde al rapporto fra numero di eventi favo-


revoli e numero di eventi possibili.
Fino alla linea 1630 il programma presenta appunto questi calcoli teori-
ci. Si può notare come le configurazioni incolonnate siano nel numero

3 3

(nel caso di famiglie con tre figli) e come questi numeri corrispondano ai
coefficienti del triangolo di Tartaglia
MISCELLANEA 129

1 1
1 2 1
3 3 (M +F) 3
4 6 4 1
s 10 10 s 1

···························
nel caso in cui si faccia il cubo del binomio (M + F) 3 •
Questa corrispondenza non è casuale e può essere suscettibile di ulteriori
approfondimenti. A questo punto vengono presi in considerazione i va-
lori della tabella e vengono calcolate le frequenze sperimentali con cui
sono presenti i maschi nelle famiglie con un numero di figli da I a 5.
Se il numero di famiglie trattate è sufficientemente alto, si potrà consta-
tare una buona corrispondenza fra risultati sperimentali e risultati teori-
ci.
Premetto che se provate il programma con dei valori inventati, molto
difficilmente potrete riscontrare tale corrispondenza .
Anche questa considerazione può risultare didatticamente utile per dimo-
strare come dati statistici inventati diano luogo a risultati arbitrari.
La linea 1760 contiene un contatore per ·sommare il numero di famiglie
con un ugual numero di figli, ed ottenere cosi il numero EP di eventi
possibili da mettere nel denominatore di ciascuna divisione.
EP viene azzerato all ' inizio di ogni ciclo nella linea 1730.
li calcolo delle frequenze sperimentali avviene alla linea 1870.
La linea 1860 è necessaria nel caso in cui il numero di famiglie trattato è
piuttosto basso , e non c'è alcuna famiglia mettiamo con 4 figli.
In questa situazione si avrebbe EP = O e una divisione per zero in 1870
con interruzione del programma e segnalazione di errore.
Alla fine del programma (linee 2030-2130) viene messa in luce l'analogia
del numero di eventi favorevoli con i coefficienti del triangolo di Tarta-
glia, e viene offerta all' operatore la possibilità di rivedere tutto il pro-
gramma.
CAPITOLO SETIIMO

Anal isi matematica

Fanno parte di questo paragrafo programmi che trattano argomenti che


richiedono da parte del lettore la conoscenza della teoria dell'integrazio-
ne e dei concetti fondamentali dei metodi risolutivi delle equazioni diffe-
renziali.
Sono comunque abbastanza accessibili anche a studenti di scuole secon-
darie.

INTEGRALI DEFINITI

Sia data una funzione continua y = f(x).

~· f (x)

Figura 15
ANALISI MATEMATICA 131

L'area della zona tratteggiata è data dall'integrale

A = J: f(x)dx
Tale area può essere calcolata in modo approssimato (ma con un errore
di approssimazione piccolo quanto si vuole), suddividendo l' intervallo a,
b in un numero n di intervallini uguali, aventi ciascuno ampiezza h, e
applicando la formula di Thomas Simpson'

n-2
.!!..
A= ~ ~a)+f(b)+4 · ~" f1a+(2k - l)-h+2· f1t fta+2kh)]J

L'applicazione di questa formula, scomoda da eseguire con carta e mati-


ta, è invece particolarmente adatta per un computer

10 REM COPYRIGHT IN BASIC


12 REM VIA SEZZE 22 LATINA
14 REM TEL. 487631
16 POKE 53280,10: POKE 53281,3
20 CLR :PRitH";:J;"
::::0 PRINTTABO:: 10) "QIItHEGRALI DEFINit·l ITI"
40 PR I NT" ~l CALCOLATI Cot~ LA FORMULA DI SI MPSON"
50 GOSUB 111'.10f1
60 PF: nn ":::ereuuo I LE I STF:UZ I otH ? " .:
70 GOSUB10000:PRINTA$
80 I FA:t=" S " THEMGOSUB 1 201~113
90 pp rnr" :.:IU3ATTI LA FUt·lZ IONE : ~l"
1013 It~PUT"'T' = ".:Y$
1 H3 Pf.;:INT"~ 200 DEF Ft~A OO= " 'r'$ :PF:ItH"RUt~200"
12[1 PR I ~n "=='F:Ef'l I AL TRE 2 VOLTE IL TASTO RETUR~l "
13 13 PRitH" 1 l l l l l" :Et·m
200 OEF FNA(X)= X
2H3 PRltH";:J:•K - ORA FORtHSCIMI GLI E:3TREMI DI"
220 PR I tH" I tHEORf'tZ I ot~E : "
230 HWUT" 9- I M !TE INFERI ORE" .: LI
;;"!40 INPUT"Y-IMITE s.UPEFHORE" .: LS
250 oo:;:;us 1 1131313
260 I tlPUT" ).J:"IUAtH E SUDD I"/ I SI ON I Ct~UM. PAR I >" .: S;
270 PR it·ff":J)K - Ut~ ATTIMO DI PAZIENZA'"
2:30 PR I tH" !ru" : GOSUB 11000
290 PRHff"Y·lUM. SEZIOtH", "AREA"
300 PF:Hff" - - - - - - - - " , " - -"
310 DX=CLS-LI)/S:T=O
320 X=LI:Y=FNA(X) : T=T+Y
330 X=LS :Y=FNA(X):T=T+Y
3~~ 0t-1:::3/2 : Z==0
351.)FOPK= 1 TOM
360 X= LI+DX*C2* K- 1 ) :Y=FNACX) : Z=Z+Y
370 NEXTK :T=T+4* Z
38(~ l'l=M-1 : I FM=0THEt·l420
390 2=0:FORK=1TOM
4 00 X=LI+DX * 2*K:Y=FNACX> : Z=Z+ Y
410 NEXTK : T=f+2* 2

' Matematico ingl e~e del 1700, studioso dei metodi di esaustione.
132 ANALISI MATEMATICA

42(1 H"'tJi;*T /::C:


4313 F'RINT" tiill" S, .• A":':"
440 PRINT"m)":GOSUB11000
450 PRitH"O'iNCORA Cot~ LA STESSA FUNZIOt~E ?"
460 GOSU810(t00
4 ?i'.l I FA:fi=" S" THEt~210
480 F'RINT"Y::Ot·l UNA FUt~ZIOt~E DIVERSA ?"
4913 GOSUB100!'.10
5iJI} IFA:t="S"THHlCLR :GOT090
5113 PF.:ItH"::l)K - CIAO!"
520 Et-ID
10000 REM-ATTES A E INGRESSO DATI
1 Oi'.ll1J GETA:t: IFA$=" "THEN10010
10020 A=VAL <AS):RETURN
11000 REM-BARRA ORIZZONTALE
11 0 10 FORk=l T040 :PF:Hff "~" .: :NEi<TK :RETURN
12000 REM-ISTRUZIONI
12i310 PF<HH":.'.)JUAt·IDO VEDRAI 'r'=?~ !!!!! BATTI LA FUt~Zi ot·lE"
121320 PR I tH" CHE \ILIO I ESAMINARE. "
12030 PRit-IT"~'!J'OI BATTI 2 VOLTE COt·lSECUTIVE IL Tf'IS TO"
12i}4(1 PF: I tff "IF:ETUF:t·l;;. "
1 ;!050 PR I tff" !13UCCE :=.:;; I \IAMEt-ffE 00\IRA I I t·lD I CARMI IL"
121360 PR I MT" LIMI TE rnFEF: !ORE E IL LIMI TE SUPEF"l OF:E"
1 20~"1:1 PR I NT "DI I NTEGF:f1Z I (1t·lE. "
1 2 0 80 PR Itff" llHlF IME DE\/ I O I RM I IN OLIANTE PAFH I DEBBO "
12090 pf;; I tff" SUDD I'·/ I DERE L ·• I MTER;·/ALLO OELL ·' A:3:3E ~<"
12100 PRitH"COMPRESO FRA I DUE LIMITI CHE MI HAI "
1211 O PR ItH "DATO ( DE'·/E ESSERE Ut·l NUMERO Qf'AF.: I:;; DI "
1 2120 PRINT"PARTI) ."
1~'.130 F'PitHTA8( 10 ) ":i!W ( PREt1I Ut·l TAST(I ) "
1 2 140 GOSU810000
1 <~~150 F.:ETURN

Le subroutine sono al solito:


10000 per l'attesa e per l'ingresso dei dati;
11000 per la barra orizzontale;
12000 per le istruzioni.

La funzione da integrare viene introdotta nel listato in modo analogo a


quanto già visto nel tredicesimo programma, mediante due colpi di RE-
TURN consecutivi.
La comprensione del listato non dovrebbe presentare particolare difficol-
tà.
Vediamo alcuni esempi di funzionamento del programma.

Primo esempio

Sia data la parabola y x 2 e la sua normale nel punto di ascissa I.


ANALISI MATEMATICA 133

BI ------------- 9/4
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I

;x

Figura 16

La normale ha equazione

X 3
y - - +-
2 2

e le coordinate di A e 8 sono

A = (l;l)
B = (- _i.i_)
2'4

Questi risultati possono anche essere calcolati con i programmi n. I, 2 e


3.
Ora proponiamoci di calcolare l'area della zona tratteggiata. Si ha

I I

J+(--x2)
3- X 3X X 2 X 3 125
s= 2 dx= [-2 - - - - ]
4 3 3
= -48 = 2604167
,
2

Ebbene, con il programma si ottiene lo stesso identico risultato dopo cir-


ca un secondo, con sole IO suddivisioni.
134 ANALISI MATEMATICA

Secondo esempio

Si abbiano le due cubiche

y = 3.x2-2x3
y = - 4x 3 + 6.x2 - 3x + 1

Il loro grafico (desumibile qualitativamente dal programma numero tre-


dici), è il seguente.

o
t •-4x'+6x~ 3X• 1
Figura 17

Le aree delle regioni A1, Ai, Ai. A. vengono anch'esse determinate esat-
tamente dopo circa un secondo, con sole dieci suddivisioni. E si ha
I

A I f~ (3x2 - 2x3)dx = 0,09375


A2 = I~ (-4x +6x2-3x+l)dx =
3
0,1875
2

Il l'I
h [(3.x2-2x )-(-4x 3 3
+6x2 -3x+l)]dx =J (2x3 - 3c2 + 3x- l)dx = 0,21875
2
3

f~ 3
(3.x2 - 2x )dx = 0,34375
ANALISI MATEMATICA 135

Volendo si può ulteriormente perfezionare il programma inserendo la


routine per trasformare il numero decimale finale in frazione decimale
(vedi all'inizio di questo vol ume) .

INTEGRALI DOPPI

È congegnato con lo stesso criterio di base del programma precedente.

1 O REM COf"-",'f.: I bHT lt~ Bfl::> I C


12 REM VlH SEZZE 22 LATINA
14 R~M lE:.L. 487~31
lG POkE 53280.lD : POKE 53281,3
::::o CLR :Pl~ ltH "::l:"
30 PP I tH rA8 ( 12) " ~Il lTEGF:flL I DOPPI~"
411 GOSUB 110l~O
5(1 Pf< I tfl "!l!/•/UO I LE l S 1 RUZ I ON I ?"
60 GOSU810000
70 IFA:t="::>''THEtK•OSU8120i:H3
80 PRINT"~ATTI LA FUNZIONE :"
91 1 lllPU .I ''I" = " :I$
ll.:1l1 1-'t·'lll 1 '" ~Ol• UtOI· f-llH•, :-. .1="f-$ :1-'t<llll "'RUN2~0"
1 l •J PI': I t I r "~F:EM I AL rRE:. DUE './OL TE IL TASTO RETURt~ "
lc.:O PRIIH"TITill" :Et·m
2t1t1 DEr Ftlf'I O< .1 =>!.
2U':• I FOChd fHEt lRE TUF:l l
2113 t''I': I t·n "~J;::ATT I L ' ESTF:. I t~F . IN FUNZ I Ot~E DELLA 'r':"
220 HlPUT";---:1 ~ "~)<!$
2.30 PF: ItH"!l .: :00 DEF nm•.. '0=")~1$ :PRHH"RUt·l::!:00"
2·H~ PF:ItH" ~ REl'II ALTRE DUE '·/OL.TE IL TA:3TO RETUR~l:l;"
2':·0 PF:ltH"In.l.l.J" : Et·lD
3Uu DEF f-NB~Y)=0
3U5 lFQQ = llHENRElURN
.;:1 o PR I tff" :l!!J::ATT I L , E::> T R. :=.up. IN FUNZ r ONE DELLA 'r' : "
32•3 I MF'U l 11
}<2= 11 ; ><2$
:~3t1 F'Rltff"!l 400 OEF FNC•~Y>=")<:2$:PRlt~T"F;U tN 00"
340 PF'Hff" ~ RE:.MI HLfRE DUE VOLTE IL TASTO RETURN:l;"
3'A3 PF:INT"TIDTl" : Etili
400 OEF FtlC•, 'T'.1=3
40~· I FQU~ 1THEtlf-'ETLIRtl
410 Pl< ltll ";:)Jk - OPA FOF:tn::.crMI GLI ESTREMI O' IN-"
4211 PRitH"fE:.GRHZIOtlE LUt~GO L'ASSE Y."
4 ::0 INPUT" !lL IMI TE It·IFERIORE •,•=" ;L 1
440 IllPUT"!LIMITE SUPEF.: IOF:E "'=" ;LS
4"-.0 G1JSUBl 11300
4• •.3 INPUT" !)."::!UAtl rE SUDD I \i I S I (IN I •: MUM. PAF: I)" ; S
4 ;·u PP Hff" ;:J'.W - Lit~ ATTIMO DI PAZ I EtCtì ! "
4~l1 REM-CALCOLO INTEGRALE DOPPIO
495 QQ=l:GOSU8200:GOSU8300 : GOSU8400
5~0 DY=(LS-Ll1/S:TY=0
'.:°• l IJ ','=LI : i< 1 =F t18 •.: •,•) : i<2=FNC •: •,•) : GO::.UB 1300~3 : T'r'= T'r' +i<i<:
520 Y=LS: Xl =F N8 (Y) :X2=FNC(Y ) : GOSUB13000:TY=TY+XX
s~:0 :V T = ~3
1 1
M'T'=S/2
540 FORI:= 1TOM'r'
550 Y =L I+DY• ~2• K-1.1 : X 1=FNB\Y ) : X2=F NC ( Y ) :GOSUB13000:VY=VY+XX
560 NEXTk :TY=TY+4•VY
5?0 M'r'=M'r'-1 : IFM','=0THEN610
S~~ VY=0:FORK~1TOMY
136 ANALISI MATEMATICA

5~0 Y =L I+DY*2*K:X1=FNBC Y):X2=FNCCY ) :GOSU813000:VY=VY +XX


600 NEXTK :TY=TY+2*VY
610 V=DY*T'T'/3
700 REM-STAMPA RI SULTATI
710 PRINT":J-IUM. SEZ IONI" .• " VOLUME"
7~~0 F'Rit~T
11
-------", 11
- -- -
11

7::,:13 PF~INT"~"S.~SPCC 15ìV


740 PRltH":ml" :GOSU811(100
750 PR I IH "~NCORA CON LA STESSA FUl-IZ IONE ? "
760 GOSUB 10000
7 70 IFA:f.="S"THEN410
780 PF: I NT" :!)::Ol-1 Ul-IA FU14Z IONE DI VERSA ? "
7 90 GOSU810000
:300 I Ft"f:fi=" S" THEN 1 O
810 PRIMT"j)I< - C IAO!"
820 END
H.1000 REt1- A1 TESA E INGRESSO DATI
10010 GETAS:IFAS=""THE N10010
1 (10213 RETURN
1101'.H'.t F:EM-BAF.:F:fi OF.: I ZZOtHALE
111.'1113 FOF-~K= l T040 :PRitH"~"; :NEX TI< :RETURN
12000 REM-ISTRUZIONI
12010 PRIHT":J;lUANDO VEDRAI F =?ii !!!! BATTI LA FUNZIONE"
12020 PR I tH" ( COtHEt4EtHE LE l/AF: I ABILI )\ ED 'T') .• E PO I "
1 2030 PR ItH "BftTT I 2 VOLTE CONSECUTIVE IL TA::::TO"
12(140 PR I IH "i!F:E rL!Rt-1;:. "
1 2 050 PRHH":63UCCESSIV AMEIHE TI CHIEOERO·' GLI ESTRE-"
1 2061.:ì PF:ItH"MI D ·' ItHEGF:AZIOt·~E IN FUNZIOME DELLA Y"
12070 F'Pil ll" CCrtJ L'f"tV'-/ lSO :·~h= ~· ;j !!!! E Cotl :'<2=?ii !!"
1 20f:ò:l.3 PR l ~n " .!Il t-1 EN fRìil·IB r I CHS I , UOPO AVERMELI DATI , "
1 2090 PRitH"BATTI 2 VOLTE CONSECUTIVE IL TASTO"
1 2.100 PR I IH" i!F:ETUF~ l4~. "
12110 GOSU81 J.000
1 2120 PF:INT"i!JI~l F it-IE TI CHIEOERO ·' I VALOF:I NUMERICI"
12130 PR itff" CHE COSTITUISCONO GLI E STREMI O' ItHE- "
12140 PR I HT" Gl<:AZ I Ot lE LUt-mo L .• A SSE 'T', E IL NUMERO DI "
1 21513 PR I IH " SUOD I I/ I SI Ot-1 I <NUMERO QPAR I t::> CHE DEBBO"
121613 PR INT" FARE. "
121 71.'1 PR IIHTAB CHD"nl (PREMI UM TASTO>"
12180 GOSU810000
121 9121 RE:. TUl"<:tl
1 3000 REM- CALCOLO INTEGRALE CON Y COSTAMTE
1 30 10 DX=(X2- X 1 )/S :TX=0
1 3020 X=X l:F=FNA (X) :TX=TX+F
1 3030 X=X2 :F=FNA CX) : TX= TX+F
1 3040 r1 X=S,~2 :V)<= 0
1 3 0 5l3 Fm~_r = 1 TOM;'(
1 3 0 60 X=X 1+DX * C2*-1- 1 ì :F=FNACX> : VX=VX+F
1 3070 ~lE >!.T J
1 3 080 T l<= 1 i<.+4*'./X
13090 11X=MX- 1:IFMX=0THEM1 3 1 3 0
1 3 100 VX= 0:FOR-1=1TOMX
1 3110 X=X l+DX*2*-1:F=FNACX ):VX=VX+F
1 3 120 NEXTJ :TX=TX+2•vx
1 3 130 ;.;x,,,,DX •H;X./3
1 3 140 RETURN

Il meccanismo di introduzione automatica di una linea nel listato, è ripe-


tuto tre volte (linee 200, 300 e 400). Nella 200 viene inserita la funzione
ANALISI MATEMATICA 137

f(x, y)

da integrare, e in 300 e 400 le due funzioni nella variabile y che costitui-


scono gli estremi d'integrazione dell'integrale più interno.

Primo esempio

Si voglia calcolare

x2+y2
IL x+y
dxdy

dove D rappresenta il triangolo tratteggiato.

Figura 18

Una generica retta orizzontale taglia il triangolo nei punti A e B le cui


ascisse sono rispettivamente

L'integrale
138 ANALISI MATEMATICA

I
x2 + y2
J•-y -dx
x+ y

rappresenta l'area del rettangoloide avente come base il segmento AB,


due lati perpendicolari al foglio e passanti per A e per B, e l'ultimo lato
(curvilineo) costituito da una sezione della funzione integranda. Facendo
variare la retta AB fra zero ed uno, si ottiene il volume del "prismoide"
avente come base il triangolo tratteggiato. Quindi il volume è

V= rr
JJv
x2 + y2 dx dy
x+y
= lio dy JJ
1-y x+y
xl+ yl dx =Io I [xl -xy+2y2 log(x+ y)J' dy =
2 1-y

= L~ - 3
{
2
+ 2y log(y + I) Jdy = : log2 - ~ =

=0,368636868
Sottoponendo il calcolo di questo volume al Commodore 64, batteremo

F = (Xl 2+ Yl2)/(X+ Yl
X1 1-Y
X2 = 1

Gli estremi d'integrazione lungo l'asse y sono

y =o
y = 1

e per un numero di suddivisioni = 10, dopo qualche secondo, si ottiene


esattamente

V = O,368636868

Secondo esempio

Si voglia calcolare

dxdy
JL = l+y
ANAUSI MATEMATICA 139

dove D è il dominio tratteggiato delimitato dalle due parabole y == x 2 e


X ::: y2

o X

Figura 19

Le ascisse dei due punti A e B sono rispettivamente

XA ::: Y2
xs ==v

e perciò eseguendo i calcoli a mano, si ottiene

V ::: ff,
O
dx dy :::
l+y
J~
I+y
I

o
JVY dx ::: J
y
2
I

o
..j y-y2
--dy
I+y

j a cui, risolvendo con il metodo di sostituzione (t == .Jy), si ha

5-11"
V == - 2- - log 2 =: 0,2360565

Sottoponendo il calcolo al Commodore 64, dovremo battere

F = 1/(1 +y)
X 1 = Yl2
X2 = SQR(Y)
140 ANALISI MATEMATICA

e con dieci suddivisioni, si ha dopo qualche secondo

V = 0.233436268
leggermente inferiori al valore teorico. Con 20 e con 30 suddivisioni si
ha rispettivamente

V 0.235140233
V = 0.235559394

con un avv1cmamento progressivo al valore giusto.


Talvolta può far comodo considerare una retta verticale anziché orizzon-
tale, e perciò gli estremi d' integrazione dell'integrale più interno sono in
funzione della x (e non della y) .
In questi casi basterà "cambiar nome" agli assi x ed y, scambiando an-
che le x con le y nella funzione F alla linea 200.
Il calcolo degli integrali doppi può risultare utile anche nella determina-
zione dei momenti d'inerzia.

INTEGRALI TRIPLI

È una ulteriore sofisticazione dei due programmi precedenti.

lU REM COPYRIGHT IN BAS IC


1 2 REM VIA SEZZE 22 L ATINA
14 REM lEL . 4 8763 1
2f~ CLF: : PR I tH "::lil"
25 POKE53280, 10:P O K E5328 1 ~3
3 0 PRINTTABC12)"INTEGRALI TRIPLI:"
40 Go::;:us 11 ~'.100
~.(1 P R itff"N!l"lUOI LE I S TRUZiotH ? "
6 0 GOS:UB 10000
7 0 I FA$=" S " T HEt·JGOS UB 12000
80 PF; HH " ~J3ATTI Llì FUt~ZIONE:"
90 INPUT " F= " .:F $
100 PR itff "~ 2 13(1 DEF FNA00= "F$ :P R HlT" RUt~200 "
110 PR itff"'9"F:EMI AL TF:E DUE VOLTE IL TA:::ro RETURN:"
1 ;~0 PR Hff" r mTTJ" : END
200 OEF FNACX)=3*SIN(X)*COS(Y)
205 IFM~l=l THEt-JF:ETURtJ
2 10 Pl<: Hff";:):)K -O f'~ A DAMMI GLI ESTREMI D ' ItHEGF.: AZiot~E"
2~~0 GOSUB 11000
230 lNPUT"!l..IM. INF . ASSE Z " ,: ZI
2413 rnP UT "U..IM. S UP . FISSE 2 " .: ZS
2::>t1 l t·JPU I " !I.... l M. lllf- . t-=t:::.s.E:: '1 ' " : 'r' l
261.J INPUT" D.. I M. S LIP. fl SSE 'r'" .: 'r'S
2;··0 INPUT "!l..IM. J'NF . ASSE )<" .: l<I
280 INPUT "U.. IM. S UP. ASSE l<" ; )<;S
290 GOS UB11000
300 IN P UT"!J~UM. ( PARI) DI S UDDIVI S IOtH = " ; S
3 10 PRitff";:).JK - U~J tìTTIMO DI PAZIEt~ ZA ! "
ANALISI MATEMATICA 141

320 REM-CALCOLO INTEGRALE IN Z


325 WW=l:GOSUB200
330 D2=(ZS-Z I),JS:T2=0
340 Z=ZI:GOSUB13000:TZ=TZ+YY
350 Z=ZL:GOSU813000:TZ=TZ+~~
360 MZ=S/2:VZ=0
371lt FORH= 1 TOMZ
380 Z=ZI+DZ*<2*H-l>:GOSUB13000:VZ=VZ+YY
390 NEi<TH
4lli.3 TZ=TZ+4*VZ
410 M2=MZ-l:IFM2=0THEN460
420 VZ=O :FORH=l TOl12
430 Z=ZI+OZ*2*H:GOSU813000:VZ=VZ+YY
440 NEXTH
450 TZ=TZ+2*VZ
460 RF:=DZ*TZ/3
500 GOSU811000
510 PRINT":U·lUM. SUDDI\ilSIOtH"," INTEGRALE TRIPLO"
520 PR I tH" ------- •
530 PRINTTfi8(6 ) ":d!"S;SPCO: 15 >RR
540 PRINT:GOSU811000
1000 PRINT":!J=tt·lCOF:A CON LA STESSA FUt~ZIONE ?"
1010 GOSU810000
1020 IFA$="S"THEN210
10:30 PR I NT "!):ON UNA FUNZIONE O I VERSA ? "
1040 GOSUB 1 (1000
1050 IFA$="S"THEtH0
1060 PRitH";:i:ll< - CIAO!"
1065 Hm
1070 END
Hl0130 REM-ATTESA E INGRESSO DATI
10010 GETA$: IFA$="" THEt~10010
10020 F:ETURN
11000 REM-BARRA ORIZZONTALE
11010 FORK= 1T040:PRINT"r;.,.:;";:NEXTl<:RETURN
12000 REM-ISTRUZIONI
12010 PRINT";);IUANDO Cot1PflRIRA' F= ? ~ 11 DOVRAI BATTE-"
12020 PR HH" RE LA FUNZ I Ot~E"
12030 PRit~TTABo'. 15:> "!F=F()<:,'r' ,2)"
12040 PRINT":!f'OI DOVRflI PREMERE 2 VOLTE CONSECUTIVE"
120513 PRINT" IL TASTO 9<ETURt~;,;;."
12060 GOSUB11000
12070 PR HH "l)JU INDI DOVRAI FORNIRMI GLI ESTREMI O I "
12080 PRINT" HHEGRAZiot~E (COSTAtHI) PER CIASCUNO"
121390 PRitH"DEI TRE A:3SI :<,'r' .• Z."
L:~ 100 PF: HH ":!)INFINE DO'./RA I It~D I CARMI IL t~UMERO"
12 1113 PRHH" (PAR I) DI SUODI'-i!SIOIH CHE DEBBO ESE-"
121213 PRINT"GUIRE LUNGO CIASCUN ASSE."
12130 PRitHTAB( 10) "Yl<PREMI Lit~ TASTO) :;:"
1 2 140 GOSUB10000
12150 RETURN
1 3 000 REt1-CflLCOLO INTEGRALE IN Y
13010 0Y=CYS-YI )/S :TY=0
13040 Y=YI :GOSU814000:TY=TY+XX
13050 Y=YS:GOSU814000:TY=TY+XX
1 3060 M'r'=S/2 : V'r'=O
13070 FORJ=1TOt1Y
13080 Y=Y I+DY* (2*J-l ì :GOSUB14000 : VY= VY+XX
1309~3 NE ~<T ,T
1..311:.10 f",'"'T'i'+4;+.V''I'
13110 MY=t1Y-1:IFMY=0THEN13160
13120 VY=O:FORJ=lTOMY
142 ANALISI MATEMATICA

131 30 Y=YI+DY*2 *J:GOSUB14000:VY=VY+XX


13 140 NEXLT
13150 TY=TY+ 2*VY
13 160 YY=DY*TY/3
13 1 70 RETURt~
14000 REt-1- CALCOLO INTEGRALE IN X
14010 DX=CXS-Xl )/S:TX=0
14020 X=XI:F=FNA CX> :TX=TX+F
1403 0 X=XL:F= FNA <X> :TX=TX+F
14040 MX=S/2 :VX=0
14050 FORK=lTOMX
14060 X=XI+OX* C2*K-l ) :F=FNA CX) :VX=VX+F
14070 NEi<TK
14080 T~<= T~<+4*'./~~:
14090 MX=MX-1:1FMX=0THEN14140
14100 VX=0:FORK=1TOMX
14110 X=Xl+DX*2*K :F=FNA CX) 1VX=VX+F
141213 NE>ffK
141 3 0 TX=TI<+2*VX
14140 i<i'< =DX*TX/3
14150 RETURN

Non occorrono particolari delucidazioni: basta osservare che con la su-


broutine 14000 viene eseguita l' integrazione lungo l'asse x, con la su-
broutine 13000 l'integrazione lungo l'asse y, ed infine (linee 360-460)
l'integrazione lungo l'asse z.
11 programma può essere utilizzato, per esempio, nella determinazione
dei baricentri dei solidi oltre che nel calcolo dei momenti d' inerzia.

CALCOLO DELLE AREE CON IL METODO DI MONTECARLO

Il calcolo di un'area può anche essere effettuato con un metodo legato


alla casualità (da questo il suo nome), che ha la caratteristica di essere

~· f (x)

A B X

Figura 20
ANALISI MATEMATICA 143

concettualmente molto semplice, e di non richiedere la conoscenza


dell'analisi infinitesimale.
Si abbia una funzione y = f(x) continua in un intervallo A ,B.

Consideriamo il rettangolo ABCD che contenga la regione tratteggiata di


cui vogliamo determinare la superficie. Immaginiamo di prendere N
punti interni al rettangolo con un criterio rigorosamente casuale. Alcuni
di essi cadranno nella regione tratteggiata, ed altri nella rimanente parte
del rettangolo: indichiamo con J il numero di quelli che si trovano nella
regione tratteggiata.
Si può capire intuitivamente come esista una proporzione fra la superfi-
cie da determinare, la superficie del rettangolo e i numeri J e N.
Chiaramente questa proporzionalità comincerà a essere evidenziata solo
per un numero di punti N sufficientemente alto.
Il seguente programma applica appunto questo criterio

10 REM COPYRIGHT IN 8ASlC


12 REM VIA SEZZE 22 LAf INA
14 REM TEL. 4876 ~ 1
1 6 PO K E53280 , 10:PO~E53281,3
20 CLR :PRitn "~"
2'.::; Pfd~HTAB < 11 ) " ItHEGF:ALI DEFitHTI"
.:;a"t FOkK=1 T040 :PF.: ItH"~"; :NE)<:T
4 0 PR IN r" ;eieDUE:; TO PF:OGRAl-IMA CALCOLA L ' I tHEGF:ALE"
513 PR I t4 I "DEF I l·l I 1 O [1 I Ut·lH FUN2'. J Ut·lE COM IL METODO"
;;.13 PR I tH" DI MOtHECF1F.:LO. "
·;·o PF.:Hn "~ f::An I LA FUt·UIOt·lE : "
1130 HWUT'"Bleieh' = " ; 'r'$
1113 f''R l tH "~11.:10 kt0 DEFFt·l'T' ( > = "'•'$
0
:)

120 F-'R I tH "f<IJN1 ':•O"


l c:S PRilff" ~"
1 3 0 POKE198,3 : FORK=0T02 :POKE631~~ . 1 3 :ME X T
1413 END
1 ~·0 1-'0KE 198 .• 0
160 PF: I t·n "::>:w: - ORti FISSA GLI ESTREf'I I [I I I tHEGRA-- "
17(3 PF:ItH"ZIOt-lE : "
l C::1:1 I HPUT ".00. 11·1 I l"E I 1IF EP I i:1RE :
00
: "' " : A
l ~!Lt l tlt·"LI I "9.. 1 t·l l l'E.. ~.1_11-"l:I< 1 Uk!:. i·: = "' ; E::
2Utt Pf.: I tH" ~~-1f , ·- uF:A DAl'1M I L 'ALTEZZA DEL RETTANGOLO"
210 PR I NT" (POGGIATO S ULL ·· ASSE )<;) Cl IE COtH I Et4E LF"1"
220 PRHll "FUNZIOt~E tlELL . HHER'-/ALLO f7RA"A
230 PRitH"E"8
240 INPUT"~LTE Z ZA = ";H
2':"0 INPUT":U"ER OUtitHI PUIHI DEVO PROVARE" ;t~
1000 REM CALCOLO
1010 J=0:GOSU810000
1 020 FOFd<= 1 TOt·l
1 ~3 3[1 ~': =- ( 8 --A >*F.'.t·lD <TI >+A
H:.1 40 '•'= H+.Rt·m •, T I )
1050 IFY< =FNY<X ) THENJ=J +1
1060 NE)'.T
107 [t S= ( B-A >*H*J/N
1 '.:•00 PR I tH ";JI L VALORE APPF.:OSS I MAl O DELL ·• AF.:EA E · : "
1510 PF:ItHTAB0.:10 ) "!!!!003 -~ "S
16(113 PF: nn "~·/UO I cm·m IfiRE t·l ? " .:
144 ANALISI MATEMATICA

1610 GETRS:IFRS=""THEN 16 10
1615 PRitHR$
1620 I FR$= "S"THENINPUT":ml I~ = ";N :GOT01000
1630 PR IIH" O i UO I CAMBI ARE FUNZIONE ? " ;
1640 GETRS :IFR$=""THEN1640
!645 PRHffRS
1650 IFRS="S"THEIH0
1660 PR Hff" ;.»:1K - CIAO ! ! "
1670 END
10000 DEFFMY CX>=S IM CX> *COSCX>
10010 RETURI~

Per semplicità abbiamo considerato il rettangolo sempre poggiato


sull'asse X, e ciò impedisce il calcolo di aree negative: lasciamo al lettore
la facoltà di completare il programma prevedendo una quota variabile
anche per la base inferiore del rettangolo.
Vi stupirete nel constatare con quanta rapidità otterrete risultati precisi
anche con un numero N di punti piuttosto limitato. Attenzione però a
scegliere oculatamente l'altezza del rettangolo perché se l' area incognita
non è completamente contenuta nel rettangolo, il risultato sarà errato
ma non ptr colpa del metodo di Montecarlo.
CAPITOLO onAVO

Ancora fisica

ANALISI DI FOURIER

Si abbia una funzione del tipo

y = a sen x + b cos x •
Vogliamo dimostrare che essa corrisponde ad una sinusoide.'
Poniamo

b = e sen t'J ••
a = e cos {}

dove e e iJ corrispondono ad opportuni valori numerici che possono es-


sere calcolati nel modo seguente.
Dividendo membro a membro le (**), si ottiene

.b tg {}
a

cioè

' Dove x ed y sono variabili, mentre a e b sono <.:ostanti.


146 ANCORA FISICA

b
rJ = arctg -
a

Invece elevando al quadrato le (**) e sommando membro a membro, si


ottiene

b2 = e2 sen2 "
02 = e2 cos2 {)

cioè

Dopo aver calcolato {} e Q, sostituiamo le (**) nella (*).

y = e cos{}senx+ e sen {} cos x


y = e(sen x cos{} + cosx sen {})
y= e sen (x+{})

dove {} e e hanno i valori prima calcolati. Quest' ultima funzione rappre-


senta chiaramente un sinusoide con ampiezza massima e e sfasamento {}.

-e

Figura 21
ANCORA FISICA 147

Essa è corrispondente al moto armonico generato dalla proiezione sul


diametro verticale di un punto P che si muove con moto circolare uni-
forme su una circonferenza di raggio e con angolo iniziale t'J.

Figura 22

Dopo questo preambolo teorico, possiamo affermare che ogni funzione


del tipo

y = a sen x + b cos x

corrisponde ad una sinusoide (detta anche armonica perché deriva dal


moto armonico), con

angolo di fase i'J = artg !!_


a
ampiezza armonica = Q = v~~-2-+_b_2
componente seno = a
componente coseno = b

Ebbene, Fourier dimostrò che una qualsiasi funzione y = f(x) periodica


o aperiodica (in questo caso possiamo immaginare che il periodo sia in-
finito), può sempre essere scomposta nella seguente serie trigonometrica

f(x) = ao ai sen x+ bi cos x +


+ a2 sen 2x+ b2 cos 2x +
+ a1 sen 3x+ b1 cos 3x +

+ a,. sen nx+bn cos nx


148 ANCORA FISICA

cioè in un certo numero di armoniche: infatti ogni riga corrisponde ad


una particolare sinusoide con opportuno angolo di fase, opportuna am-
piezza e frequenze multiple fra loro.
In altre parole una generica funzione y = f(x) può sempre essere scom-
posta in una serie di opportune sinusoidi che, sommate fra loro, restitui-
scono la funzione iniziale.
Se essa ha una forma piuttosto complicata, sarà necessario un numero
di armoniche (o sinusoidi) via via più alto.
Questo programma effettua appunto questo lavoro di scomposizione e
fornisce le caratteristiche di ciascuna armonica.

10 POKE53280,10:POKE5328 1,3
20 CLR :PRitH":.-llll"
25 CtG= 1 O : Pvl= ? 0
30 PRitHTAB( 11 ) "ANALISI DI FOURIER:;"
40 PRINT :FORK=l T040 :PF:INT"G.." .: :NEi<TK
50 PRI~ff"!l!!l.; STfiBILISCI IL NUMERO DI PUtHI CON I"
60 PR I NT "QUAL I SARA' COSTITUITA Lfl CUF:VA Hl ESAME"
70 lNPUT"!)..".!UflNTI PUtHI ( 11-254>" ;tKt
80 lFt-.J0( 110RN0>255THEtH0
90 DIMvNO-.JO) , HBO-.JO)
100 PR I tH" !))I< - lll.)F:A SCEGLI FRA LE SEOUEtH I OPZ I Ot-.J I :.li"
1 70 PR I ~ff" YJ--ONDA COM CARATTERISTI CHE SCELTE DA TE''
180 PRitH" 1-SINUSOIDE"
19(1 PF.:ItH"2-0NDA QUADRA"
200 PR I tH "3-0NDA TR I AMGOLARE"
210 PRINT"4-0NDA FRASTAGLiflTA"
220 PF: It IT" 5 .• s ItlU:JO I DE TOSr1Tfl"
250 I t-.JPUT" !l!!);iUAL.E SCEGLI " ; OP
260 IFOP<>0THEN290
270 GOSUB 10013
280 GOT0330
290 IFOP> 0ANDOP< 6THEN320
300 PRINT"YòCELTA NON PREVISTA.RIPROVA"
310 GOTO! ?O
320 ON OP GOSUB1100,1200,1 300, 1400, 1 500
330 HlF'UT"!NUOI IL GRAFICO" ; ','$
3 40 I FLEFT$ ( 'T'$ , 1 ) =" S "THENC•OSUB3000
370 PR=O
420 P=INT(NO/DG>
430 FORI=lTOP
440 m-<=2*tr/NO
450 CS=0
460 SS=O
4 80 FOFO = 1 ro~m
4 90 TM= I *.T*m<
500 CS=CS+WVCJ>*COS(TM>
510 SS=SS+WVC.T>*SINCTM)
520 t-.JE~"<T S
540 AN=2it;CS/t·l0
560 BN=2it;SS/~l0
580 HA=SQR <( At-.J*At-.J ) + CBt-.J*B~D >
585 HB(l)=HA
600 PA=ATNCAN,·'Bt-.J)
610 PF: ItH "DIF!RMON I CA NUMERO: " ; I
620 PR I tH" :O:OMP. COSENO= " .: At-.J
625 PRINT":O:OMP. SENO= ";BN
ANCORA FISICA 149

630 PR I tH "!JiMP I EZZA ARl10t·l I CA= " ; HA


640 PRINT"!FiNG. DI FASE < IN RAD. >= ";PA
65(1 PRitH
665 ME:-<TI
670 F G= l
6813 INPUT" l!l·lUO I L ' I STOGRA1111A DELLE ARMONI CHE"; 'r'$
690 I FLEFT$ <'r'$, 1 >=" S " THEt-lGOSUB6000
720 I FFG=0THENPR INT" llJ)K - CIAO! "
725 END
7 3 0 FG=0
740 INPUT"!],'UOI IL LOG. DELLE AMPIEZZE" :Y$
7 50 IFLEFT$ C.'$, l) (>''S "THEt~PRitH"::lJK - CIAO!"
760 Et~D
770 HB(J)=LOG <HB ( l ))
7813 NE:-<: TI
7 90 GOT0690
1000 I NPUl ":!J~OME DELL ' Ot lDA" ; HO:t
1020 PRitlT"Y:: I S ot~O ";NO .:" PUNTI IN ASCISSA."
1030 F OR I = 1TONO
1040 PF: ItH" m IG ITALI ZZA L 'ORD rnATA PEF: e I ASCUH"
1041 PF: INT" F'UtHO IN ASCI SSfl. "
1045 FORI=lTONO
1050 PRitH"!PROINATA DEL" I"• PUNTO=";: INPUHlV < I )
1060 t~E;-< T I
1070 PRINT"!PK"
1080 RETURN
1100 HD$,,,"SINUSOIOE"
1120 FORI=lTONO
1130 WV ( J ) =SIN CI/N0*2*n)*100
1140 NE~< TI
1150 RETURN
1200 H0$="ot~DA QUADRA"
1220 TM=N0/ 2
1230 FORI=1TOTM
1 2 40 ~lV ( I >=-100
1250 NEXTI
1260 ruR I = Tl110t·IO
127 0 ~l V( I ) =+100
1 2 80 NE:-<:TI
1290 RETURN
1300 HD$="0NDA TRIANGOLARE"
1310 TM:13
13 15 FORI=lTOINT CN0*.25)
13 20 ~lV ( l ) =Hl
1325 TM=TM+10
1330 t·lE:-<T I
1335 FORJ=ITOINT(N0* .75)
1 3 40 W'v ( J ) = Tt1
1345 Tr1= TM-10
1350 NEX TJ
13 55 FORI=JTONO
1360 WV ( I ) = Tt1
1 :365 TM= TM+ 10
1370 t~E;'<T I
13 75 RETURN
14013 H0$="0NOA FRASTAGLIATA"
1420 Tt1=- N0*5
1430 FORI=1TONO
1440 ~ll/ ( I ) =Tt1
1450 Tl1:TM+1(1
1460 NEXTI
1470 RETURN
150 ANCORA FISICA

150(1 GO SUB 1100


1530 FORI=1 Tot·lO
1540 IFWV< I >>85THENWV C1 )=85
1550 IFWVC I >C- 85THENWV( l )=-85
1560 NE~< TI
1565 HD$=" SI t~U SO I DE TOS ATA"
15713 RETURN
3 000 PR ItH "m:;RAF I CO O I;; " ; HO:t
3020 GOSU84500
3030 PRHff"Y..IM. INFERIORE= " ;Mt~
3 04[1 PR I NT "Y- I M. SUPER I OF,E= " .: M;,;
305[1 PR I tH "!)::'. I SOtKt "; t~O; "PUtH I"
3(16[1 FORI= 1 T039
3070 PRHff"+" .:
3 1;}80 t·lD(T I
3 090 PRitH
JlOO FORI=lTONO
3 1113 P R itH"+";
31 20 Hl= Mi< -MN
3 130 S P=INTC <t WVtl)-MN J/TW*36)+0.5J
3 140 IFSP > 0THEN3 1 7 0
31 50 PRHH"*"
3 160 GOT03 180
3 170 PRitHSPCCSP> .: "*"
3 180 NEXTI
319(1 RETURN
4500 M;':=l-N ( 1 )
4 520 Mt·l=l-1'.,.'( 1)
453 0 FORI =2TOt~O
4 5 40 IFWV CI> > MXTHENMX=WV CI J
4550 IFWV < I ><MNTHENMN= WV < I>
4 560 t~E ;,: TI

4570 F:ETURN
6000 C•OSU87500
6020 FORl<=1TOP
6030 SP :: ItH C( CHBCK)/MX.Jlf.38)+0. 5)
6040 FORL=lTOSP
6 050 PRINT"lf.";
6 060 t~ EXTL
6070 PRitH
C080 tlD:Tk
6090 RETURN
7500 M;-<=HB ( 1 )
7520 FORK=2TOP
753B I FHB ( K) >Mi<THEt"·lX=HB ( f , J
7540 NE ~:n:
7550 RETURN

Il programma non è mio ma è preso dalla rivista Practical computing, e


purtroppo non conosco il nome dell'autore. lo l' ho solo tradotto e leg-
germente modificato.
Esso permette l'analisi di una funzione con caratteristiche scelte
dall'operatore (ed in questo caso occorrerà fornire al Commodore 64 le
ordinate dei punti della funzione da studiare), oppure di alcune funzioni
caratteristiche:
ANCORA FISICA 151

onda sinusoidale
onda quadra
onda triangolare
onda frastagliata
sinusoide tosata

In ogni caso, a richiesta, il Commodore 64 fornirà anche il grafico della


funzione in studio, l' istogramma delle ampiezze e quello del logaritmo
delle ampiezze.

RESISTENZE E CAPACITÀ

10 REM COPYRIGHT IN BASIC


12 REM VIA SEZZE 22 LATINA
14 REM TEL. 487631
16 POKE53280,10:POKE53281,3
20 CLR :PF:ItH"~"
30 PP I t-11 TAB O:: 9 ) "Pt:::: I STE t~ ZE E CAPACITA' "
4(1 PRitHTA8(9) "~Hl SERIE E Il~ PAPfiLLELOI:"
so oo:.::us 111300
61) PF:ItH"!l!!PUOI TRf'tTTAF.:E ~:=:: SISTEMZE O ~:: ~PACITt1 ··"

90 I FA$= "P" T HENG0:3Ul:::121300: GOTCt 120


11313 I F t1$="C" THEt-IGOSU813f:100 :GOTOl 20
11 O GOT 0::0:0
12(~ G0:3U8 l 1 Oi.10
12:::; OP$"'"CAPACITA' ": IFA$="R"THENOP$="RE:::JSTE~42E"
130 PRIIH"O:W- ORA DIMMI : COt·lOSCI TUTTE E TF.:E LE"
140 PRHHOP$ " ?"
1 ~:;o GO SUB 10000
160 IFA$="S"THEt·41000
1713 PF:ItH"!FtLLOF:t1 QUALE CO~I OSCI ?"
1::::0 PF: INT"!l<BflTTl ~1 .• 2 O 3 '11:)"
190 GOSU8 1 l'.10(u3
200 Rl=A : l FRl<lORR 1 >3THEN190
220 PPINf"!JE POI ·~·"
2 :~:0 GIY3UB 10000
240 R2=A:IFR2<10RR2>3THEN230
2s0 Go::=:us 14000
260 REN-SMI:: TAMEtHO PER IL Cf'lL COLO
0

270 IFL.EFT$(0P$, 1 )= "R "At~D<F.:1 =30RR2=3) THEt·lGOSUB 151300 :GOT020130


280 I FLEFT$ (OP$ .• 1 ) =" R" THEt·lGOSUB 160013: GOT02000
2913 I FLEFT$(0P$, 1) ="C"F1t·lD(R l o=30RR2=3 ) THEt·lGOSUB1 7000 :GOT02000
300 I F L EF T$ •:.OP$, 1 >= " C" THEt·lGO:=:UB 1 :?.013(1: GOT020(10
1000 REM-CALCOLO RETE CON 3 ELEMENTI
1005 GO::;UE: 14 000
1010 IFLEF"l t O:: OP$ .• 1 ·,="C" THEN1 500
1 IJC.:0 F'f': 11l1 "UHi'll-11 .l "/fil UfU UELL.I::. l·d:oS l :=. l EtlZE 11 l UllH"
11~131'.t I tlPUT" W.1 ='";i!. 1
1040 It~PUT "!!P2=" _; i<:2
1050 INPUT"!F:3=" _; )<3
1060 XX=X 1*)(2/(X l+X2)+X3
1070 c;oro;~000
1513(1 PRitff" O::SE LE CAPACITA·' SOt·lO ESPRESSE IN MI - "
152 ANCORA FISICA

1510 PR ItH "CROFARAD .• MOL TIPL !CA PER 1. 000. 0013 ) "
1520 PR I tH" lJ:1AMM I I l/ALOF: I DELLE CAPACI TFt ·• : "
153€1 I t~PUT" !):: 1 = " ; >!. 1
1540 I NF-'UT" C2= " .: i<2
1550 INPUT"C3=";X3
1~60 XX=<X l+X2 ) * X3/(X l+X2+X3)
1 ~;70 CiOT0200~3
2000 REM-STAMPA RISULTATI
2010 GOSU814000
20213 PRi tH"Of< - LE "OP$" EG!UIVALCiot-lO AD"
2030 PF.: ItH"UN UtHCO ELEMEtHO AVEIHE : "
2040 I FLEFT$ (OP$.• 1 ) = " C" THEN2070
2050 PR I tHTAB ( 10 > ":u;:= " )<;i<" OHM"
2fl60 GC1T02100
2070 YY=XX+1000000
2('1:::(1 PR I IHTAB ( 8) "JJ::=" i<:i<" MICROFARAD"
209(1 PR I tH "!'J)PPURE C=" 'r''r' "PI COFARA(I"
2100 f'R I tH "!NLIO I PROVARE AtK:C1RA ? "
2110 GOSU810000
2120 IFA$=" S "THEN10
2130 PF: IIH";:-JJI< - CIAO!"
2140 END
10000 REM-ATTESA E INGRESSO
10010 CiETA$:IFAS=""THEN10010
10020 A =VALCA$):RETURN
11000 REM-BARRA ORIZZC~TALE
11l:l10 FORK= l T040 :PRltH"!'L"'" .: :NEi<:TI< :F:ETURI~
12000 REM-QUADRO RESISTENZE
1 ~~13135 PR I tH" :J"
12010 PR INTTA8 ( 10 > "R1"
120213 PRINT").l _ _.~,,,--,_,-'-_,··--.,__ " SPC(9 ) "R3"
12030 PRINT" ~
12 040 Pf< I t·~T "A O-i l__o __,,..,_,.r-.../-.......n.._c1 C ''
1213 50 PR ItH" I I"
1 2 060 PR I l~T" --....._.~,,,.·'-../'--'-- B"
12070 PRIIHTAB( H.I) ")!F-2"
120S0 RETUF:t~
1 3000 REM-QUADRO CAPACITA'
1 3 (H35 PR 1 tH ";)"
1 3 010 PRINTTf't8(11) "Cl"
1 3 0 2 0 PR IIHTAB < 11 ) "I l"SPCo'. 11 ) " C3 "
1 3030 PF: ItHTA8C 7 )" ,.----l 1---i"
13 040 PRIIHTABC?)" I I I " S PC( 7) "I I"
13(150 PF: ltH" A 0---1 1--o~ f----<J C"
1 3 i.'.160 PRI IHTAB(?)" I l" :;:PC C7> "1 I"
1 30713 PF: INT fAB C') " L___j 1---' 8"
13 0:::0 PF: H HT AB < 11 ) "I I"
1 30913 PRIMTTABo'. 11) "C2"
1 3 1130 RETURM
14000 RE M- C~NCELLAZIONE PARTE BASSA DEL VIDEO
1 4 O 10 F'H I N T " irul"eieteOO:sieOO:BlBl"
141320 F ORK= 1 TU10 : PI<: INT"
1403 0 ND<Tt<
14040 PF-: I tH "~lBD!lBIB00:9l"
14C150 RETUF:M
1 5 000 REM- RE S .IN SERIE
1 5 13 11_1 PR ItH "DI QUANTI OHM E' LA PF: I MA F: ES I S TENZA ·~·"
1 5 0 20 I MPUT" :!F:= " ; >!. 1
1 503(:1 PRitH"!f;' L '" ALTRA -~,,,
l ~. 1.:. .+1.:J 1 rn-u 1 ".!li':'""" : ;..;.,::
1505(1 ;:::;.:;:;:< 1 +>·: ~~
1 5 0 60 RETUPM
ANCORA FISICA 153

16000 PEM-F:ES. Il~ F'ARflLLELO


16010 PF: ItH"DI OUAIHI OHM E' LA PRIMA RESISTENZfl ?"
16020 Itl PUT "~ =" : )< 1
16030 PR IIH"~ L ·' ALTF:A ?"
16040 J NPUT "!J<=" .: ;,;~
16050 XX=X 1t X2/~X 1+ X2'
1 t:·060 Rt TU Rt~
1 ;-'0(H3 RE l-l-CAP. IN SER I E
1 ;-'0113 P P ltfl " 'St LE C.APAC IT i'! ·' SOt·lO ESPRESSE It~ tal -· "
1 7020 F"R l IH "C.ROFARAD, l-IOL TI PL I cn PEr-: 1 • 000. 000 ) "
l ;·"031-1 PF: 1 Hl "..U..11 OUAtH J P J COF flf:~ flD E' LA PF: I MA CAPA- "
1 7i340 Jt~ PUT"CITlì" " :i< l
1 ;7(:1::;.n I l·WUT" Y:, L ··HL TF:A" .: iQ
1 ~'.:'(h.;(1 ;:-.:;~:.:;;(: 1 •=><2/ <;.-: 1 + i=:2)

1 ::::OOO F:E.M-C HP. ltJ PAF.:HLLELO


1r:::o 1 L1 PR l IH" ( ~.E LE e APAC I Tf1 . SOl~O E SPRESSE I t~ t1 I - "
1 ::::0.;::o PF:ItH"CF:UF-tìF~fiD .MCtL 1 I P LI CA PER 1. 000. 0013 ,1 "
1:.0:0 :3L1 P fd tll " !JJJ QUt1tn l F'lL.Of-ARi10 E' LA PF:IMA CflF'A-"
180413 It JPI I I "t~ I TH'" : ><1
180':•l'.1 ItJHI I"~ L' AL lF:H" _; ;<:.2
18th.:;~_:, ;-.::;<-::;·< l + ~ ,.;::
1::aJ/C1 RE.TUl-'t1

È un semplice programmino che permette di calcolare la resistenza o la


capacità di una rete di componenti in serie, in parallelo, o in disposizio-
ne combinata .
Esso è fornito anche di una parte grafica che visualizza sullo schermo la
rete di resistenze o di condensatori. Le subroutine 10000 e 11000, al so-
lito , servono per fermare il programma e per l'ingresso dei dati, e per la
barra orizzontale .
La 12000 traccia il quadro delle resistenze nella metà superiore del vi-
deo, e la 13000 il qudro delle capacità.
La 14000 serve invece a cancellare la metà inferiore dello schermo: infat-
ti il "dialogo" fra C-64 e operatore avviene solo nella parte inferiore del
video, mentre in quella superiore rimane impresso lo schema con i com-
ponenti.
Le èsubroutine 15000, 16000, 17000, 18000 servono all ' introduzione dei
dati e al calcolo del risultato, nei casi in cui i componenti siano solo
due.
Se invece i componenti sono tre, il calcolo avviene alle linee 1000 per le
resistenze e 1500 per le capacità.
Infine, nelle linee 2000 e seguenti, si ha la stampa dei risultati e la richie-
sta di continuazione.

::: CLR:PRltH"~"
4 POKE53280. 10:PUKE5328 1 ,3
5 PF:ltH" INlFcODUCEt~DO LE COORDINATE DI UM CERTO"
1 0 PRINT" t~UMERO DI PUtffl ,QUESTO PROGF:AMMA OETER-"
20 PRINT"MINf1 I COEFF IC I EtH I DEL r·oLINOMIO ( [Il"
30 PR Itff" GRADO SCELTO OALL ·• OPERA TOF:E ) . CHE MEGLI O "
154 ANCORA FISICA

40 PPHH"APPIWS:~;IMf~ U1 s:PEZZHTA CHE UtH:=::cE I"


45 PF.:ItH "PUtH I ItHF.:OOOlTI."
1 00 INPUT" W~t:ORf1DO Mm< DEL POL Hl. DA CALCOLHRE" .: O
110 IF0 (1THEN100
120 1 NPUT "~V·lUMERO PUtH I DISPONI 8 IL I" ; t·l
130 IFN < 1THEN120
135 IF N<D THEN RUN
140 OIM ACN,N),8(N),C(N),XCN),Y(N),E(N),S(N)
150 FOR !El TO N
J t::o r·r;,: 11·n ,, m~ OORD l l"lfl l'l:." 1 "... F'IJI i 11)"
170 INPUT"3< ""' " .:i<< I>
1 :''.5 I t~PUT" '!lr' =" .: 'r'( I)
180 NEi,:T I
185 PRINT":l"
190 FOR 0=0 TO 1 STEP-l:Y1=0
200 FOR J=i 10 N:FOR !=1 TO D
210 BCI)=B(l)+Y(J)*X(J)~l
220 FOR K=l TO D
230 ACI,K>=ACI,K)+XCJ)~CI+K)
240 NEi<T K
250 S(!):S(l)+X(J)1·I

2SO NE>ff J
290 FOR I=l TO O:FOR J=l TO O
300 HCI , J )=A(!,J)-S( l)*S(J)/N
31 O NEi<T ,T
320 8(1 )=8( ! )- Yl*S(I)/N
330 NEi<T I
340 FOR K=l TO O
350 R=K:Al=O
360 FOR L=K TO D
370 A2=A8S(A(L, K))
380 IF A2>A 1 THEN A1=A2:R=L
390 NEXT L
400 I F A 1 ::0 THHl PR I MT "l!J;4ESSUtl COEFF. NELLH 1"1t11R. A" :END
410 IF R=K THEN 460
420 FOR ,T:K TO D
4 3 0 Xl=ACR,J):ACR,J>=ACK,J) :A CK,J>=Xl
44(1 NEi<T .J
4 50 X1=8(R):8CR)=8(K):8CK> =Xl
460 FOR I=K TO O
4 ?O M::A ( I .• ~'.)
480 FOR J=I< TO D
490 IF I=K THEN ACI,J>=A CI,J)/M
500 IF I<>K THEM ACI,J >=ACI, J >-M*ACK , J )
51 O t·lE i<T ,T
520 IF I=K THEN 8(1)=8(1)/M
530 IF I<>K THEN BCI>=BCI>-M*BCK)
540 t4Ei<T I . K
550 ECD>=B([I)
560 FOR K= l TO C~l
570 I =D-1<: S 1 =(1
580 FOR J=l TO O
590 Sl=Sl+HCI,J)*E(J)
600 t4Ei<1 J
610 ECI)=8(l)-Sl
620 NEi<T f<
6 3 0 PR I tH "m''OL I t~OM I O O I GF.:ADO "D.:
635 PF.: I NT ";.: I COEFF. ::O:ONO : "
640 S 1=0:FOR I=l TO O
650 S l =Sl+EC I >* SCI)/N
ANCORA FISICA 155

660 tlEXl I
665 NN=Y1 / N-S l:GOSU81000
6713 Pr·: ItH" l!J'i ( O ) = " Nt·l "/"DD" ( TERl'I I t~E NOTO ) "
6813 FOF; P= I TO O
685 NN=E<P> :GOSU8 1000
690 PF; ItlT "A(" P" ) = " ~ltl" /" DD
700 N E::~:T P
7 1 0 FOR 1= 1 TO t~:FOR ,T= l TO tl
720 ACJ,J,=0:NEXT J
730 B~ J )=0 : SC I >=0:E(l)=0
740 tlEi<T I
7..J:, FOR H= l TO 40 : PRINT" i:t...'.;"; :NEi<T
7 4 6 PPINT:PF.:ItHfAB•: 1 2) "..8J<PREt·II Utl Tt=ISTO)"
;'•I O' UL l Ul).!. :ll· UU-*~" ' ' lllLll /•l,'
750 t~Ei< l O
800 Et~O
1000 REM SUBROUTINE TRAS F. IN FRAZ .DEC JM.
1005 H=0
1010 t~tl=Hn < N ~l*-100 +. 5u'10l'.I
1020 W= W+l:TT =NN•W
10.30 I F TT-ItH,.. 11 ..'C. l'J0(nJ01 T HEtl 1070
104 L1 I F 1-J) 100 THEt l H'.160
1050 00 10 11320
1é60 DO=l : GOTO 1080
H~ ?1:1 tltl:.NI l*~l: D D=~l
1 u:;:o F:ETU F;t~

POLINOMIO APPROSSIMANTE

Concludiamo il capitolo con un programma (da noi semplicemente tra-


dotto ed adattato, di autore sconosciuto) che permette di determinare i
coefficienti del polinomio che meglio approssima una serie di punti di
un grafico.
Si abbiano N punti riportati su un piano cartesiano: se questi sono alli-
neati essi apparterranno a una retta di equazione

y = ax + b

Se invece sono disposti su una linea leggermente curva, si può presumere


con buona approssimazione che essi appartengano ad una parabola di
equazione

y = ax 2
+bx+c

Se la loro disposizione è più complessa, essi si troveranno approssimati-


vamente su curve corrispondenti a polinomi di grado via via superiore.
Lo sco po del programma è quello di determinare i coefficienti del poli-
nomio che meglio raffigura l'andamento dei punti proposti . Dovrete in-
trodurre le coordinate dei punti disponibili, e fissare il grado del polino-
mio di cui desiderate i coefficienti. Il calcolatore vi fornirà i coefficienti
richiesti e quelli dei polinomi di grado inferiore.
CAPITOLO NONO

Per finire

Crediamo di fare cosa utile al lettore proponendo due programmi che


permettono di elaborare test da sottoporre agli studenti: il primo funzio-
na con l'impiego del floppy ed il secondo con il registratore.
Con un po' di pazienza è possibile compilare un vasto assortimento di
questionari che permetteranno accertamenti più rapidi da parte dell'inse-
gnante (tenendo però sempre presenti i limiti caratteristici di validità le-
gati a questo tipo di indagine).
Dovrete fissare il numero di domande, il titolo del questionario, fornire
tre risposte di cui una sola esatta, e registrare (su nastro o disco) il file
con i dati.
Se possedete una stampante esiste anche l' opzione che vi permette di
stampare tutto il questionario.

100 REM COPYR I GHT IN B AS I C


102 REM VIA SEZ2E 22 LATINA
104 REM TEL . 4 8763 1
106 POKE 53280, 10 : POkE53281 ,3
11!'.t CLR :PRit-H"~"
l. ~":0 PR I t·ffTf'IB ( 14 >" OUE::O;T I Ot"t1R I O"
11
l 3l1 n:t = "~....W: : oo:=:uB1 230
140 PRIMl""Y"UOI : "
l '.:>121 PRitlT"~ 1- REC.I S TRf'lRE :::.u DI::.co Ut" tllJ0'./0"
l 612t PF: ItH" OUES T I OMAR I u. "
1;7 9 PRHIT":iil 2-CAR lt_HRE Utl OUESTIOtlARJO G IA·' "
180 PF: ItH" PROtlTO SUL DI SCO ."
190 PR HH " ~ 3 -P I :::; f-·ot~DERE HLLE LlUMAt lDE:: [I I UM"
200 PRitH" 1;:iuE:::; rr0t~nPIO G IA ' CA RICATO."
PER FINIRE 157

210 f-'fUtH"tl 4-S'fRMl-'Af.'E TUfTLt IL QUE:::'TIOt·H11 IO."


220 GOSUB1230:PPINT
230 PR l N TTHE; •, 13 .1 "~:::OSH ~.CEGL l ·;..:;"
240 GOSU81250
250 1FA ( 490PA ~52 THEN240
260 ONA-48GOT0270.730,880,1100
270 REM:PEGJ~TPHZJONE
28i3 INPUT":JJt<-QUFtNTE DOMA~lDE SOMO It-l TUTTO" ;M
290 DH1D$d4; ,R$ •, 3 .• 14 ) .RR$d·l.>
300 FOR,T: lTIJt~: PR IIH" ;:JO·lOt·i BATTERE I S IMBOL I ., .. CHR:l>' 34)" :;J:~EL "
310 PF.:IIH" CORSO DELLH DOMAtlDA O DELU=t RI:3POSTl1 ) "
320 r·R I tH" l!}S l A UOMFlt-IDA CHE p I :=;;po:::. TE OE\/IJtlO A'v'EF:E ..
330 PR I NT" Ut·iA LUtlOHE. ;::~:fl Mt1'3'.':~ I Mt=i DI ;~ F: I GHE. " : C•OSUB J. ~::o
3413 F'P J tl r '' &1131(11'1,-ll H.tfl 11. " i"::"
..;51;) I t·ff- U I "!ù-' " ; L•-~ •,_i .-'
36~ c.o:::;uB i .o:.:.=:o
371'.t FOR'•'=l TC•3 :f-•f;:JNT" ~ lSPo·; TA "CHF.::l: (:64+'r' ! ";:-:e .. ~: Itff'UTR:t•:".' •._T) :tiE~n
380 Go:::.UB 12313
:390 PF;ItH"giUAL"E ·" LA RI:::.P0:3TA GIUSTA ~ •,A,8 O C)"
4(l0 GO SUB 1250
410 IFAC650RA ~ 67THEN400
420 RR$~J) = AS:NEXT
4 30 PRIIH ":JJl'-VIJOI RIVEDERE DOMANDE E RISPOSTE"
440 PF:ItH"PER CONTPOLLARLE 7-·"
450 GOSUB 12513
460 I FA$ (::>" S " THEN650
4 70 FOR ,1= 1TOti:PRIIH" ;JS:tOMAt~DA N. ",T";"
480 PRINT:PRINTDS(J.1 : GOSUB1230
490 FOR'T'=l T03 :PRitH " ~! S POSTA "CHR$ ( 64+'T') " ; = "RS<'T' ,,T) :NEi<T
500 GOSUB 1230 : PR I tn "llLA RISPOSTA C. I USTA E' ~" F..RS O: ,T) " ; "
510 C•OSUB 1230 : PR ItH" :!)JK ? "
520 GOSUB1250
5 :30 I FA$()" t~" THEN640
540 PR ItH" !1'/UO I MODIFICARE LA 9)~Jt1t'IMDA O LE"
550 PRINT"~;:I SPOSTE ·:> "
5613 GOSU8125(~
570 I FA$::." D" 1 HEt~0$ •'. J) ="" : I t·lPUT" !POMAt~DA = " .: 0$ ( J) : GOT064f1
580 FOR'r'=l T02: :Rl:f 1T' •.J)= 1111 :t~E i< T
59i3 FOR'r'::l TO::: :PPINT" !P-ISPOSTA "CHR$ (64 +'T' ) : INPUT"!}=" ;R:t('T' ...n :NDff
6013 PRINT" :!)}UAL'E' LA RI SPOS TA GIUSTtì? ( A.8 OC ) "
610 GOSUE::1250
620 IFAC650RA>67THEN610
630 RF:• ( J) =A"*'
640 l~E~-<T : GOT04:30
650 PRitH":JJRA IL QUES TIOt~ARIO E' COMPLETATO."
660 It~PUT":!):::OME VUOI CHIAMARLO" ;TS
665 PRIMT 11 l).)t< - INSER I SC I UM DI SCO t·~EL FLOPP'T' ? E"
667 PF:INT"PF:Et1I UN Tt1STO" :GOSU81260
670 OPEN15,8,15 : GOSUB1300
675 CRS=CHR$ ( 1 3)
6;""? PF~ItH ":~:.no REGJSTRAt·lDO IL QUESTIONARIO SUL DISCO;:"
678 OPEN2,8,2. T$+" _.S .• ~J" :GOSU813130
679 PR ltff#2, T$CR$ : G0:3U81300
680 FORJ=1TON:PRINT#2,D•<J>CRS:GOSU81300:NEXT
690 FORJm1TON:FORY=1T03:PRINT#2,RS(Y,J)CR$:GOSUB130 0:NEXT:NEXT
700 FORJ=1TON:PRINT#2,~R$ ( J)CRS:GOSU81300:NE XT
710 CLOSE2
720 PRINT":."J" :GOT0110
73 0 REM:CARICAMENTO
7 413 PRINT" ::J·1ETTI IL DISCO COI~ I QUIZ NEL FLOPPY, I"
750 PRitff"PREMI UN TASTO" : GOSU8 1 250
760 PR Ilff" giUAL 'E_. IL NOME DEL QUE:::;T I ONAR I O CHE"
158 PER FINIRE

770 lt~PUT"VUOI CARICARE" ; T$


780 rnPUT"WUAtHI QUIZ CONTIEME" :M
790 DIM0$(N),R$C3,N). RR$CM)
800 OPEN15,8,15:GOSU B1300
80 1 OPEN2,8,2,T$+",S, R":GOSUB1300
805 PRitff":o.,"!3TO CERCAl~DO IL OUESTimmRIO ~lEL DISCO::"
806 INPUT#2,TS:GOSU81 3 00
810 PRilff"!}-lO TROl/fll O : "TS
820 PRINT"!E LO STO CARICAt~DO."
830 FORK=1T03000:NEX T
840 FORJ=1TON:INPUT# 2,0$(J):GOSUB1300 :NEXT
850 FORJ=lTON:FORY=1 T03:INPUT#2,RSCY, J):GOSU81300:NEXT :NEXT
360 FORJ= 1TON:INPUT#2,RRS (J):GOSUB1 3 00:NEXT
870 CLOSE2 :PF:Itff":.:l" :GOT0 120
880 F:El'I: SVOLGI MEtHO QUIZ
890 T=0:IFN=0THEN112 0
900 FORJ= 1 TON: PR I NT "::liiJ)OMANDA N. ",T" ::"
910 PR IIH" !ll!l" [1$' J:J : PP Itff : GOSIJB 12313
9213 FOR'r'=l TO..:< : PI-' ltfl :1-'k HH"fJ"CHRh 'r'+64 ., " ::"RS O:Y , J ) :t~ E~<T
930 PRINT:GOSU81230
940 PRINT"l)XIAL 'E' LA RISPOSTA GIUSTA ? ";
950 GOSIJ81250:IFA<65 0RA >67THEN950
960 PRINTAS
970 IFAS=RRS CJ) THENFF=l
975 IF FF=1THENPRINTTAB C10) ":!DJIUSTO ! O:" :FORK= l T03C.:H30 :NE;'<'.T :FF=0 : GOT01000
980 PRilffTABC10)"~8AGLIATO!Ol: " :PRltff":ml.A F:I::W'OSTA GIUSTA ERA : "RF:S(J)
990 T=T+ 1:FORK= 1T03000:NEXT
1000 ~lE~!.T
1010 PR Ilfl "::.V:- IME DEL QUESTIONAR I OOl:"
1020 PR I NT" !ll!lHA I RISPOSTO CORPETTAMENTE A "I~- T
10313 PR Ilff" OOMA~mE SU "W . "
1040 V=INTCCCN-T>*10 /N+.1)*10)/10
1050 PRINT"~IL TUO VOTO E ' = "V"/10;:"
101.::0 PR Itff : 0$= "ra,...;;" : GOSUB 1 230
10713 PRilff"!ll!lDEVO RICOMINCIARE IL TE:=;T ? " :GOSU812513
1080 IFA$="S"THH1PRINT" :.::J" : GOT0890
1090 PRI NT ";:)JK - CIAO! I " :END
1100 REM:STAMPA
1110 IFNC>0THEN1140
1120 PRINT":.::J" :PR I~HTA8(8)" ~~0t~ HO QUIZ IN MEMORIA! !Ol:"
11 3 13 FORI<= 1 T02000 : NEi<:T : PR I IH" :.::J" : GOTO 110
1140 OPEN4,4:PRINT#4,S PC(28)"QUESTIONA RIO"
1150 FORK= l T04 : PRINT#4 :NEi<:T :PRHH#4 ,SPC( 10 ) "TITOLO = "T$
1160 FORK=1T04:PRINT# 4:NEXT
1170 FORJ=1TON:PRIIH# 4,CHR$(18)"00MAND A I~. "J" = " CHR$ •, 146)D$CT)
1180 PRIIH#4 :FOR'r'= l T03 :PRI~ff#4 ,CHR$(Y+6 4 ) "= " ;R$(Y .• J) :PRI NT#4 :NE;-<:T
1190 PRIIH#4 :PRHH#4 , "RISPOSTA C•IUSTA = ":RR$0 )
1200 PRINT#4," ":NEXT
1 2 10 PRINT#4:CLOSE4
1220 PRINT":.::J":GOT0110
1230 REM : BARRA ORIZZONTALE
1240 FORK=1T040:PRINT Q$;:NEXT:RETURN
1250 REM :INGRESSO GEl
12613 GETF'!:~ : I FAS=" "THEN 1260
1270 A=ASCCAS> :RETURM
1300 REM:TEST ERRORI SU FLOPPY
13 10 INPUT#15,EN$ ,EMS , ETS , ES $
1320 IFEN$="00"THENRET IJRN
13313 PRINT"~RRORE SU DISCO :"
13 4C3 PR I NT" !ll!l" EM$ .•E t~$, ET$, ES$
1350 CLOSE2
READ'r'.
PER FINIRE 159

100 REM COPYR IGH T IN BASIC


102 REM VIA SEZZE 22 LATINA
104 F:EM TEL. 4876:::: 1
106 POKE5 3280.10:POKE5 328 1. 3
110 L.U•: :Fkltll " .:lii'll"
120 PRillTTAB ( 14~ "OUEST lONARIO"
130 Q$=" ;:;..,:;" : GOSUB1230
140 PRitH"!PUOI : "
150 PR I NT" !l 1-REG I STRAPE SU NASTRO UN t~UOVO"
160 PRitH" OUESTIONAPIO."
170 PR ItH" ~ 2-CAR I Cfl":E Ut·l OUEST I ot~A"; I ù G I A ·· "
180 PR I tH" PRONTO SU NASTRO . "
190 PR ItH" ~ 3-R I SPONDERE t"'ILLE DOMAt~DE DI UN"
2130 Pf~ ItH" G:!UEST I ot~HR I O G I A"" CAF: I CATO. "
210 PR ltH "!l 4-STAMPARE TUTTO IL QUE~:TI OtlAR IO. "
220
230
GOSU81230 :P F-~ItlT
PR I NTTAB ( 13) ""9::m:::A SCEGLI ,,.
....
_,,
240 GOSU812513
250 IFA(490RA> 52THEN240
260 ONA-48GOT0270,730,88D.11 00
2;•0 REM :REGISTRAZiotlE
280 HlPUT":'.:>:11<-0UAtHE DOMf'lt~DE Sot-IO It~ TUTTO" :N
290 D 1MD$ ( M) .• R$ ( 3 .• N) .• F: F;$ <N)
300 FORJ = 1 TOI~ : PF: I tH" :J( t·IOt·l BATTEF:E I S l MBOL I ~" CHR$ ( 34 ì"
310 PfdtH"COF:SO DELLA 00Mfltmt1 O DELLA RISPOSTA>"
320 PRitH"~·IA DOMAtlUA CHE RISPOSTE DEVONO AVERE"
330 PR ItH "Ut~A LUtK·HEZ;~ A MAS~ I MA O I 2 RIGHE. " : GOSUB 1 230
340 PRIIH"!D)OMAtlDH IL "J";"
350 INPUT"!F" ;0$0: .J .J
360 GOSU81 230
370 FOF:'r'=l T03 :PRitlT " ~'I SPOSTA "CHR$ ( 64+'r') ";:,," .: : INPUTR$(Y, ,T) :NEl<T
380 GOSUB1230
390 PRitH"giUAL'E' LA F:ISPOSTA GIUSlA? (tì .• 8 O(: )"
4(10 GOSUB 1250
410 IFA< 650RA>67THEN400
4?0 RR$(J)=A$ :NEXT
430 PRitH";'):IK-"IUOI F: IVEDERE DOMAtlDE E RISPOSTE"
440 PRINT"PER COtHROLLARLE
450 GO~:UB1250
460 I FA$<) " S" THEtl650
47 0 FuRJ=l TON :PRINl "~JOMA~mA t~ . ",T":.li"
480 PRINT :PRINT0$ (JJ:GOSU8 1230
490 FOF:'r'=l T03 :Pl':I tH" m-: l SP0:3Tfi "CHF;$. (64+'r' ) ":.; = "F;$ ('r' ,.J) :NE)<T
500 GOSUB 1230: PF: I NT "!LA F: I SPOSTA O I USTf'i E·· li!" RF,$ ( J) ";"
510 GOSU81230 :PRitH" l)JK ?"
520 GOSU81251.'.I
530 IFA$<.-- "t·l"THEtl640
540 PR ItH "!IVUO I MODI F I CfiRE LA li!P~MANDA O LE"
550 PRHIT" IF:.liI SPOSTE ? "
560 GOSU81250
570 I FA:t=-" O" THE~lD$ CT J =" " : It~PUT" !J)Ot1ANUA =" ; [1$ CJ) : GOT0640
580 FOF:Y= 1 T03 :F:S('r' .• J)="" : NE)<T
590 FOF:'r'= 1 T03: PF: I tH" !F I SPOSTA "CHR$ ·~ 64+'r') : I t-IPUT "l!F" ; R$ ( Y, J) : t-IE>ff
6013 F'R I tH "l);IUAL , E.• l.11 F: I SPOSTt1 G I u::nfl '? (A.• E: o e'>"
610 GC.ISUB 1250
620 IFAC650RA)67THEN61B
630 RR$ ( J .>"'A$
640 NE~'< r : GOT0430
650 PR!Ml ":J:1RA IL OUESTIOtlARIO E' COMPLETATO."
660 I NF'UT "!)::OME VUOI CH I AMARLO" .: T$
670 OPEN1, 1, 1, T$ :PRJtH#1 .• tl
680 FORJ=110N : PRINT#l , U$(J):NEXT
160 PER FINIRE

690 FORJ=1TON:FORY= 1T03:PRINT#1,R$CY ,J):NEXT:NEXT


700 FORJ=l TOt·l :PRIIH#1 ,RR$(J) :NEi(T
710 CLOSE1
720 PRINT":l":G01"0120
730 REM:CARICAMENTO
740 PRitH"::J·1ETTI LA CASSETTA COt:I I OU I Z NEL PE-"
750 PRINT"GISTRAfORE ."
760 f"'RllH"~!UAL "E ·" IL NOME DEL QUESTIOtlARIO CHE"
7.'1:.1 1Nt-'Ul ""IU(ll LHklLHk:!::.".:I:!
780 HlPUT "y;iuAtH I QU I Z CONl" I El~E" ; I~
790 OIM0$(N),R$ (3. N),RRSCNJ
800 OPEN1,1,0,T$
8 10 PR llH")!J-10 TF.:O"IATO : "T$
820 PRitH"!E STO CAR ICAl·lDO I G"JIJIZ."
830 rnPUT#l ,M
840 FORJ=1TON:IMPUT •l , 0$ ~ J):NE XT
850 FORJ=1TOM:FORY= 1T03:INPUT#1,R$CY ,J):NEXT:NEXT
860 FOR,T=l TOl-J: ItlPUf• l ,RR:t CT J :NEi<T
870 CLOSE1 :PRINT":l":GOT012 0
8S0 F.:EM :S:"/OLGH1Etff0 (l.UIZ
890 T=0:IFl-1=0THEN112 0
900 FORJ=l TON :PRIIH".,Ol1A~l[Jf'I tl. "J";;"
910 PR !NT":ml"0$ ( JJ : PRINT:GOSUB1230
920 FOR'r'= 1 TO::::: PR I IH: PR I lfl "~" CHR$ ( 'r'+64 )" il" F: $ ( Y, J ) : l~E;·<T
930 PRIMT:GOSU8 1230
940 PF-:IIH"!)JUAL'E' Lfl Rr~:::po ::nA GIUSTA ?"
950 GOSU81250 :I FA( 650RA> 67THEN950
960 PR I tHfi$;
970 I FA$=RR$ ( ,T) THEl~Pf! J NTTAB ( 10) " !)93 I US"T O! :I" : FORK= 1 T031300 : NEXT: GOTO 1000
980 PR HffTA8 ( 10 ) "~6AGLIATO!:; " :PRllH":ml-11 RISPOSTA GIUSTA ERfl : "RR$(J)
990 T=T+1:FORK=1T030 00:NEXT
1000 NEXT
1010 PR IIH" ~ ll~E DEL OUEST I Ot~AR I O"
1020 PF~ I tff" ~lA I R I ~: P OSTO COF.:RETTAMEtHE A "N- T
U3 30 PRilll "DOMHNUE SU "N"."
1040 V=INTC ( CN- T i .+ 10,' tl+. 1 >*10J / 10
1050 PPIIH " ~IL TUO VOTO E' = "'./"/H:t;;"
1060 PRI NT: GOSU81230
107"13 PR I Nl " lm}E\10 R I COM HlC IARE IL- TEST "? " : GO SUE: 1250
1080 IFfl$ = "S " THEt~PRltff":l" :OOT0 1 2 ì.'.t
1090 PF: IIH " ;:JJK - C IAO ! ! ":END
1100 REM : STAMPA
1110 lFN<>0THEN1140
1120 PRIN"T "::J" :PR IIHTAB <8> " !IWtl OI~ HO QIJlZ IN MEMORit1 ! ! ;;"
1130 FORK= 1 T020\3l'.I :l~Ei<T : PR Illl ":l" :GOT01 2 13
1140 C1PEl-l4,4 :PRilff#4 ,SPC0::28) "C!UES Tiot·lARIO "
11 50 FOF:K=l T04 :PF: I1Ht4 :NE X T : PF: IMT#4 . SPC< HD "TITOLO = "T$
11 60 f'"OPK=l T04 : Pf< lNl e 4 :tlE X l
1170 FORJ= l Tml : PR 11Ht4,CHR:h 18J "DOMt=lt·lDA N. "J" = "CHR$•, 146 ) 0$( .J )
1180 PRIIH#4 : FOR'T'= l T0:3 : PRI I H#4 ,CHR$ ('T'+64 "i"- "R$ ( 'T' , J .> :PF.: IIH#4 :l~ E~<T
1190 PRllfl #4 :P Rll~l #4. "Rl SPO':'°Tft GIU'.:.T H = "RR:h ,T)
12013 PF: llH#4 .• " - - - - - - - - - - - - -" : tlEi<T
1210 PR1NT#4:CLOSE4
122(1 PR I tH" :l" : GOTO 120
1230 REM : BARRA OR I ZZOl l rAL[
1 240 FC.1RK= 1 T040 : PR I Ml" iJ$; : l~ E)<T: RETURll
125(1 REM : I NGF.:E'.3SO GET
1260 GE rA$ : 1 FA$ = '"' THEN 1260
127 0 Fi=ASC( A$):RETURN
PER FINIRE 161

Infine, tre programmi di evasione che vi permetteranno di cimentarvi


con il Commodore 64 nel gioco del bridge (dopo aver giocato una parti-
ta con il morto, vi sarà data la possibilità di giocare la stessa smazzata
con le carte del calcolatore), nella soluzione di un diagramma di parole
crociate elaborato casualmente dal computer e nella redazione di una
dieta alimentare se per caso avete problemi di peso.

100 REM TRADOTTO E ADATTATO DA IN BASIC S.N.C.


110 CLF.: :PRitH"::JI"
120 FORK=0T01:POKE53280+ K,7 :NEXT
130 PRINT"if+-**************************************!!!"
14.0 PR I NT "if+.!!! if+.!!!"
1 50 pi;; I NT "a+.!!! @'fil@ ii..i@Tffil *"< 1tiit.®ii :/.W.i'#Jf.i Wfif.iiW!~ if+.!!!"
160 PRitH" if+.!!!!! ~ @ i~1i §il W t1 W @ if+.!!!"
1 70 PR I NT" if+.!!!!! W.iWitit Tu'#.:.@J..~ W }:<': i.ii W !Wim if+.!!!"
180 PRitH" .3*!!! ti' W. ~1 ~ @ lit @ i.ii ~ % if+.!!!!!"
190 PR I tH ".3*!!! ~tli'!ili&l \~ @ W; ?-;Jii!Wi if.i@1ìt.i Wflì}~'#. if+.!!!"
200 PR I MT "if+.!!! if+.!!!"
210 PF.: I tH" if+-**************************************!!!"
220 DEFFNS CX>= INT CX/13)
230 DI 1·1Z$( 12 ) ,SL ( 3 ... :.;: ) , .J$( 3 ,3) , A;~ (52) ,O;~( 3, 3) ,F;~( 3, 3), E;·~(3, 3) : C8= . 1415926
240 PRINT":!!I!Git~QUESTO GIOCO NON DEVI MAI PREMERE IL"
2513 PRitH"TAST1J .f/F!. E T U R ~l~"
260 PRINT"l!l!l QUAtHE MA~H VUOI GIOCARE ?"
270 GETSE$: IFSE$=" "THal270
280 IFVALCSES)(00RVALCFE$))9THEN270
290 SE=VAL<SES):SE=SE/93001
300 PR!tH"::J" :FOR,T=0T08:READS 1$(J) :NEi•:T
31~.3 DATA"•","•", ........ 11 + 11 , N,.. S ... H,D,C
320 FORJ=0T012:REAOZ$(J):NEXT
330 DATAA,K,Q~J,D,9,8,7,6,~,4,3,2
3 40 GOSUB2300
350 PRHH"lOO QUALE CONTRATTO RITIENI DI POTER"
360 PRINT"CONCLUDERE GUARDANDO LE CARTE TUE <Hl"
370 PR I NT "BASSO) E QUELLE DEL MORTO <I t~ ALTO> ? "
380 PR I NT" ~1UANTE PRESE ? " ; : GOSUB920: 8$=PS: PR I NTTAB ( 15) ":J" 8$;
390 PR I tHTAB C18) "DI QUALE SEME ? " ; : GOSU8920 : PR I NTTAB ( 34) ":J" P$
400 IFP$="S "THENUB$=BS+P$:P$="N"
410 8$=8$+P$:0$="
4 20 QQ$=" mitl!l!I!I!I!DOO"
430 PRINTQQ$:FORK=1T07:PRINTO$:NEXT
440 PRINTQQ$
450 P$=MI0$(8$,2,1)+"5":GOSUB2190:TR=S
460 IFTR=9THEN350
4 70 I FTR=4 THEt~GOSUB620
480 L=3:FORTT=1T013:GOSUB700:IF2=52THEN500
490 SW=TWAND1:W CSW)=W CSW)+l:L=TW:SP%CTS>=SP%CTS)+l:GOS UB2380 :NEXTTT:GOT0510
500 TT=13::GOS UB2380
510 WC0>=0 :W C1 >=0 :TT=0:ML=0 : FORJ=0T03 :SP% CJ>=0:NEXT:CL=0
520 PRINT"!NUOI GIOCARE LA STESSA MANO ?"
530 GETX$: IFX$=""THEN530
540 IFX$<) "WTHEN580
550 PR I NT ":U~E './LIO I GIOCARE UN'ALTRA ? "
560 GETXS: IF;'.$=" "THEN560
570 IFX$= "S"THENRUN
580 PRitH"WUOI RIGIOCARLA CON EST - OVEST;: ?"
590 GETX$: IFi<$=" "THEN5913
600 IFi<$="S"THENGOS UB690
610 GOSU82380:GOT0350
162 PER FINIRE

620 FORJ=0T03:S =SL<J,1)+SL( J,3):IFK<STHENK=S:LS=J


630 I F J < >LSANOS>6THENSM=.J
640 NEXT:RETURN
650 S2=LS: IFSL<S2,P)=0THEl~S2=SM
660 IFSL<S2,P)=0T HEN2000
670 GOT01980
680 FORK=1 TOL-X-1 :X=X+1 :FORS=0T038 :C=C+CS :NEi<TS ,K :GOT0260
690 FORJ=0T051:A% (J)=(A%CJ)+1>A N03:NEXT:RET URN
700 P:L: T=1
710 P1=PAND1:0N< P1+1>GOSUB79 0,1080
720 IFZ=52THENRETURN
730 A%CZ>=A%<Z>+TT*16
740 ONCP+1)GOSU B910,770,910,7 80
750 GOSU82030:IFT =4THENRETUR N
760 T=T+1:P=<P+l> AND3:GOT0710
770 PRitff"EST GIOCA "P$ :RETURN
780 PRINT"OVEST GIOCA "P$:RETURN
790 IFCL=1GOT097 0
800 IF<SLCTS,P)=1A NOT<>1>0RCTT =13>THEN970
810 IFP=2THEN840
820 PRINT"COSA GIOCHI 01 MORTO ?";:GOSUB920 :U$=P$:PRINTT ABC24)":J"U:$;
830 GOSUB920 :PRitffTABC25 ) ":J"P$ :P$=ll$+P$ :GOT0860
840 PRINT"COSA GIOCHI DI MANO ?";:GOSUB920 :U$=P$ :PRINTTAB <23) ":J"U$;
8~0 GOSUB920:PRI NTTABC24)":J" P$:P$=ll$+Pt:
860 GOSUB2190
870 IFZ=54THENGO SUB1010:GOT0 790
880 IFZ=53THENCL =1:GOT0970
890 IFZ=52THENRETURN
900 GOSLIB2120:IFL L=0THEN790
910 RETURN
920 P$=""
930 PR Itff" Il" ; : FORO= 1TO150 : NEXT
940 GETA$: IFA$=" "THENPRINT" ~ !!!Il"; :FORQ=l T0150 :NEXT rGOT0920
950 PRINT" ":P$=A$ :RETURI~
960 P$=P$+A$ : PR INTA$; "~ !!!Il" ; : GOT0940
970 GOSUB1050 : GOSUB2020
980 I FP=0THENPR I NT" IL t1. GIOCA "P$
990 IFP=2THENPRIN T"TU GIOCHI "P$
1000 RETURN
1010 IFTT=1THENPRI NT"NON SI BARA. ":RETURN
1020 FORZ=0T051:IFTT-1=INTCA% C Z> ~ 16>THENZ5 < A;~(Z)AN015 ) =2
1030 NEXT
1040 FORJ=0T03 :Z=Z5(,T) : GOSUB2020 :PRitffP$; " "; :NEi<T :PRINT :RETURN
1050 FORZ=0T051:IF A%CZ><>PTHE N1070
1060 GOS UB2120 : I FLL= 1 THEt~RETURt·l
1070 NEXT
1080 TZ=TWAN01
1090 IFTC> 1THEN1410
1100 IFTR C>4THEIH 170
1110 S2=LS : I FSL CS 2, P) =0THEl~ S 2=St1 : I FSL <S2, P >-=0THEN650
1120 Pl=P:GOSUB19 50
1130 IFF >SL < S2,0 > ANOF>=SL(S2,2)THEl~V=1:U=1:GOSUB1910:GOT02020
1140 K=F%(S2,P>:IF K=30RK=70RK =150RK=14THE N1840
1150 IFSLCS2,P) >3ANDSP%CS2 >=0THENV=4:U =1:P1=P:GOSL IB1910 : GOT02020
1160 GOT01840
1170 K=0 : S2=-1:FORS=0 T03:F=0:FL=0
1180 S4=SLCS,P-1 > :S5=SL CS,3-P>:S6=SL CS,P > : S7=SLCS,4-P)
1190 IFS6=0THENF= 0:GOT01340
1200 F6=F%CS,P ) :F4=F%C S, P-1> :F5=F%CS,3-P ):F7=F%CS,4-P >
1210 IFS=TRTHEN12 30
1220 IFS7=0ANDSL<TR ,4- P ))0ANOS4>0TH ENF=10 :FL= (O;~(S,P > =l) :GOT01340
1230 I FF6>23ANOS4 >0ANOS5::.-0THENF =9 . 3 : FL=2 : GOTO 1340
PER FINIRE 163

1240 IFS6=1ANOTR<>SANDSL<TR,P>>0ANDSP%<S><2ANOF4<>20 THENF=8:GOT01340


1250 IFF4<F7ANOS4>0ANDF5<24ANDm~<S .• P><>1 THENF=9 : GOT01340
1260 IFF4< 2ANOS4> 1ANDF5<24THENF=7:GOT01340
1270 IFS=TRTHEN1340
1280 I FS6= 1 ANOSL <TR, P ) >0At~DSP% <S) =0ANDF6<>STHENF= 7: GOTO 1340
1290 IFF6=150RF6=140RF6=7THENF=6:FL=-1:GOT01340
1300 IFF6 < 4ANOS6=2ANDSL<TR,P)>0ANOSP;~(S ) =0ANDF4<20THENF=5:FL=1:GOT01340
1310 IF<S4=1ANOF6>F4)0R(85=1ANDF6)F5>THENF=3.5:FL=1:G OT01340
1320 IFF7>F4THENF=4:GOT01340
1330 F=3
1340 IFS=TRTHENF=F-4
1350 IFF>KTHENK=F:S2=S:J=FL
1.3~U t JE;!. r::>
1370 FL=J:IFFL=-ITHENFL=l
1380 TS=S2
1390 IFFL) 0THENV=FL:U=1:P1=P:GOSUB1910:GOT02020
1400 GOT01830
1410 IFSL <TS,P> <>0THEN1490
1420 IFTR=4THEN1850
1430 IFT=4ANOTZ=0THEN1710
1440 IFT=4THEN1850
1450 IFT=3THENGOSU81750:IFLL=0ANDSL<TR,P)>0THEN1720
1460 IFT=3THEN1850
1470 IFSL <TS,3-P ) =0ANDSL(TR,3-P) ) 0 THEN1 850
1480 GOT01710
1490 I FT =4At~OTZ=0THEN 1660
1500 IFT=2THEN1590
1510 IFT=4ANDTZ=1THEN1830
1520 IFT=3THENGOSUB1750:IFLL=1THEN1830
1530 S2=TS :l/=1 :U=l :P1=P :GOSU81910: IFTH<ZTHEtH830
1540 IFSL<TS,3-P>=lTHENU=-1 :GOSUB1910
1550 FORJ=13*TS T013*TS+12:IFA%(J)=PTHENZ=J
1560 I FA;~< J) =3-PTHEN2020
1570 IFJ=THTHEN2020
1580 NEXT:GOT02020
1590 F =F%<TS,P>+F%<TS,4-P>:F4=Z-FNSCZ)*13
1600 IF<F=50RF=100RF=ll>ANDF4>1ANOF4<5THENS2=TS:GOT0 1840
1610 IFSL <TS,0 )) 1ANDSL <TS,2> > 1ANDSP%CTS)=0ANOCF%CTS , P>AN024>=16THEN165U
1620 I FSL <TS , 3-P) =0THEtHX= TSìlE 13+ 12 : GOTO 1680
1630 P1=3-P:S2=TS:V=l:ll=1:GOSUB1910:TX=Z:IFTH<TXTHENTX=TH
1640 GOT01680
1650 S2=TS:GOT01830
1660 IFTS<>FNS<TH>THEN1830
1670 TX=TH
1680 FORZ=13ì1ETS+12T013*TS STEP-1 :I FA%<Z><> PTHEN1700
1690 IFZ<TXTHEN2020
1700 NEXT:GOT01830
1710 IF CTWAN01)=10RSLCTR,P)=0THEN1850
1720 IFFNS<TH> <>TRTHEN1820
1730 S2=TR1U=-l:Pl=P1FORJ=1TOSLCTR,P):V=J:GOSUB1910:I FZ<THTHEN2020
1740 NEXTJ:GOT01850
1750 P1=3-P:P2=4-P:LL=0
1760 IFTS=TRTHEN1780
1 770 I FFNS <TH) .. TRTHENLL= 1 : RETURt~
1780 IFTZ~0THENRETURN
1790 IFSL<TS,P1>=0THENLL=l:RETURN
1800 P1=3-P:S2=TS:V=l:U=l:GOSUB19101IFZCTHTHENRETURN
1810 LL=l:RETURN
1820 S2=TR1V=l1U=-1:Pl=P : GOSUB 1910: GOT02020
1830 S2=TS:l/=1:U=-l:Pl=P:GOSUB1910 :GOT02020
1840 Pl=P:V=1:U=l:GOSUB1910:GOT02020
1850 O 1 =0 : S2=-1 : FORSz0T03 : I FS=TRTHEt~ 1880
164 PER FINIRE

18t>0 IFS=TRTHEN1880
1870 IFE% <S ,P> >D1THEN01=E%(S,P):S2=S
1880 NEXT
1890 IFS2<0THENS2=INT<4*RN0(1)):JFSL<S2,P>=0THENS2=-1 :GOT01890
1900 GOT01980
1910 2=S2*13-<U-1)*6:FORG=1TO"I
1920 IFZ<00RZ>51THEN2000
1930 IFAi~ ( 2 ) =P1 THENZ=Z+U :NEXT :2=2-U :RETURt~
1940 2=Z+U:GOT01930
1950 S=31 : K=F%(S2,Pl> :FORJ=0T05:F=5-J
1960 IFS=KTHENRETURN
1970 S=INTCS/2) :K=INT CK/2) :NEXT
1980 FOR2=S2* 13+12TOS2*13STEP-1:IFA% CZ)=PTHEN2020
1990 NEXT:GOT02020
2000 2=INTC52*RND<l>>:IFA%C2><>PTHEN2000
2010 GOSUB2120:IFLL=0THEN2000
2020 P$=S1$(FNSCZ))+Z$(Z-FNS<Z>*13):RETURN
2030 Sl=FNSC2):IFT=1THENTS=Sl:GOT02050
2040 GOSUB2060:IFLL=0THENRETURN
2050 TW=P:TH=Z:RETURN
2060 LL=1:FT=FNSCTH>:FZ=FNSCZ)
2070 IFCFZ=FT >ANOTH<ZTHENLL=0:RETURN
2080 IFFZ=TRTHENRETURN
2090 IFFT=TRTHENLL=0
2100 IFFZ<>TSTHENLL=0
2110 RETURN
2120 IFZ>5 1THENLL=0:RETURN
2130 LL=1:S1=FNS<Z>:IFA%CZ><>PTHENLL=0
2140 IFT=lTHENRETURN
2150 GOSUB2180:IFSC=0THENRETURN
2160 IFS1 <>TSTHENLL=0
2170 RETURN
2180 SC•SLCTS,P>:RETURN
2190 )<:f=LEFT$ CP$, 2 >:I FX$="CL "THEt~Z=53 :RETURN
2200 IFXS="LA"THEN2=54 :RETURt~
2210 IFX$="ST"THEN2=52 :RETURN
2220 FORS=0T08:IFS1$CS>=LEFT$CP$,1)THEN2240
2230 NEXT
2240 IFS) 4ANDS<9THENS=S-5
2250 T:f=t1I0$ CP:f,2,1 > :FORZ=0TO 12
2260 IF LEFT:f C2$ ( 2) , 1 ) =T:fTHEN 2280
2270 NEXT:Z=55:RETURN
2280 2=Z+S*13:IFZ>51THENZ=55
2290 RETURN
2300 PRINT"UN ATTit10 ....• ":X=X+1:FORJ=0T051:A%(J)=0:NEXT
2310 S5=SE+X,1 9304 7: I FSE >0 THEt~S4=RND <-85)
2320 FORK=1T03:GOSUB2350 :NEXT
2330 GOSUB2380:RETURN
2340 FORJ=0T03:FORK=0T03:0%CK,J)=0:F%<K,J)=0:SLCK,J> =0:J$CK,J)=" ":NEXTK,
J :RETURN
2350 FORJ=0T012:IFINT<C>=INTCC+.5>THENR=RN0(1)
2360 R=rnT<R t~O C 1 >*52): IFA;~cR»0THEt~2360
2370 A% CR>=K:C=C+C8:NEXTJ:RETURN
2380 GOSUB2340:IFTT=13THENFORJ=0T051:A% (J)=C A%CJ ) AND7 > :NEXT
2390 FORJ=0T051:R=A%CJ>:IFS<>FNSCJ >THENF=0
2400 S=FNS(J):IFR>9THEN2430
2410 F=F+l:J$(S,R>=J$(S,R>+Z$(J-S•13>
2420 SLCS,R>=SLCS,R>+l:F%<S,R>=F~<S,R>+2~<5-F>:IFD%CS,R>=0THEND%CS,R >=F
2430 NEXTJ
2440 FORJ=1T03STEP2:FORS=0T03
2450 S4=SL<S,0) : S5=SL<S,2) : S6=SLCS,J> :S7=SL CS,4-J):06=0%CS,J)
2460 IFS4<S6ANDS5<S6THENE=10:GOT02560
PER FINIRE 165

2470 IFS6=1ANOD6=1ANO (S4>00RS5>0) THENE=0:GOT02560


2480 IFS6=0THENE=-1:GOT02560
2490 I F <06-86) >2AND <S6(S40RS6<SS) THEt~E=9 : GOT02560
2500 IFS6>S7AND <S6 =S50RS6=S4)At~DS6=1A~mo;~(S,4-J ) =1THE~lE=1.5 :GOT02 560
2510 IFS6>S7ANO<S6=S50RS6=84>THENE=2:GOT02560
2520 IFS6=D6At~D<S6<=S40RS6 ( =S5)THENE=0 :GOT02560
2530 IFS6:>06THENE=7:GOT02560
2540 IF86=06THENE=6:GOT02560
2550 E=3
2560 E%<S ,J>=E:NEX T S,J
2570 PRINT"::J1ANO N. "X; :FORK=0T02: IFK=l THENPRHff
2580 F=1 2 :IFTT<> 13THENF=18:IFK=1THENNEXT
2590 FORS=0T03: IFK=l THENK=:3 :F=0 :GOSUB2~?0 :K=l :F=23
2600 IFK<>0THEN2660
2610 IFTT=0THEN2660
2620 IFLEt·HU8$)=2ANDS=1-:"HEt~PRINT"CONTR. ="LIB$; :GOT02640
2630 IFS=lTH!:r-lPRINT"CONTR.="8$;
2640 IFS=-2THENPRltff"TU "~1(0);
IFS:3THENPRltff"LORO"~I ( 1 >.:
26';)0
2~60 GOSUB2670 :PRINT :t~EXTS,K :RETURt~
2670 PRINTTAB<F>Sl$(S)J$(S,K>;:RETURN.

100 REM COP'iR I GHT IN BASIC


102 REM VIA SEZZE 22 LATINA
104 REM TEL . 487631
110 CLR :PRINT";Jll" :Tl/=1024:Dlt1Q$(15 .• 15 )
115 8=3 :P0=53280 :FORK=0T01 :POKEPO+K,8 :NE~<T
120 PR I NT "•.an:itol'-******************************i•!ìl'-***!!!"
130 PR I NT "~!!!! .3*!!!!"
140 PR I tff" .3*!!!! ~ wt1mm WilMm. Wfl11Wtf; ~ !fìtiilf@ aft.!!!!"
150 PR I NT" ift.!!!! !è1 ~ii ~ ~i ~ ~ ~ ~ @ ?fii ift.!!!!"
160 PRINT".al'-!!! ~ ~ ~@ !f~ ~ ~ i#!!!!"
170
180
PRINT" al'-!!!
PR I NT ".3*!!!
~
f&
~
~
* ~ ~ li ~~ @ ll
!l>ì ~1; ~ ml#W.J.i Wììll.fif~ ~'Ml~l
ift.!!!"
ii*!!!!"
190 PR I NT "~!!!! ii*!!!!"
PR I NT" ~!!! ~ !mmifi ~._, !filmi~ ~ @.?~ ìWifirto
~-
200 ii*!!!"
210 PRINT" ii*!!!! !fil ?Il ~ li il ~ ~ !ffi 1! ft. rll ii*!!!!"
220 PR I NT" ~!!! ~ &iWI] 1tì ~ @ ~t; ftiilm; ~t. WM ;.#!!!"
230 PR I NT ".3*!!! ~ ~ (i f,1 1.~ ~ ti. 1,\ §. ~ i! aft.!!!!"
240 PR I NT" ~!!!! '.lltfM ~ &i !frm@ ~~'® ~ n n w WJM .a+:!!!!"
250 PRINT" .a+:!!!! .a+:!!!!"
260 PRINT"~**************************************!!!!"
300 PR I NTTAB <12 >"l!t!mmJ< PREMI Ut·J TASTO) "
310 GETA$:IFA$=""THEN310
320 PRINT";"J;ll l l l " ;:FORK=1T015:PRINTCHR$(64+K);:NEXT:PRINT"i;Bl"
330 FORK= lTO 15 : I FK <10THENPR Itff" " ;
340 PRINTK :t~E)l.T
350 PRINT"~ --------
360 FORK=1T015:PRINT"U.ala!I I " :NEXT
370 PRINT"Ym •:Q - "
380 REM SCELTA RAt~DOM I CA O I 10 VOCABOLI E LORO SISTEMAZIONE
390 PRINT"m"TAB(24 ) "._IN ATTIMO DI"
400 PRINTTAB <26) "PAZIENZA;;"
410 FORK=lT015:FORJ=1T015:Q$ (K,J)= "0":NEXTJ,K
420 V(0)=INTC49*RND<TI>+2)
4 30 FORK=1T09
440 V<K>=INTCRNDCTI>*50+1)
450 FORJ=0TOK-l
460 IFV<K >=V<J > THEN440
166 PER FINIRE

470 NEXTJ,K
480 FORK.:0T09
490 FORJ=1TOV (K) :REAOV$ (K) :NEXT:RESTORE
500 NEXT
510 FORK=0T09
520 Cl•INTCRND<TI>*lS+l>
530 C2=INT<RNO<TI)*15+1)
540 X=INT<RNO<TI>*3>-1
550 Y=INT<RNO<TI>*3)-1
560 IFX=0ANDY=0THENS40
570 IFC1+X*C LEN CV$ CK>> -t >> 15THEN540
580 IFC2+Y* CLEN CV$CK >>- 1 >> 1STHEN540
590 IFC1+X* <LEN CV$ CK>>- 1> <0THEN540
600 IFC2+Y* <LENCV$CK >>- 1 ><0THEN540
610 FORJ=0TOLENCV$(K )) -1
620 IFQ$ (J*X+C1,J*Y+C2 >=11ID$ >:V$CK>,J+1,1 ) THEN650
630 IFQ$ CJ*X+C1, J*Y+C2 ) ="0"THEN650
640 OOT0520
650 NEXT
660 FORJ=0TOLEN(l/$(K)) -1
670 Q$(J*X+C1,J*Y+C2)=MID$( 1/$(K),J+l,1)
680 PRINT"!QMl!l!ll!l"SPC <28>24-K
690 NEXT
700 Rl<K >=X:R2 <K> =Y:R3<K >=C 1:R4<K>=C2
710 NEXT
720 FORK=0T09:C$=C$+V$ (K) :NEXT:L=LENCC$)
730 FORK=1T015:PRINT"!;fl!OOIJ!J!Q"SPC <28)16-K
740 FORJ=1T015:IFQ$ (K, J )C> "0"THEN760
750 R=INT <L*RND CTI >+1 ) :Q$ CK,J> =MID$ (C$,R , 1)
760 NEXT
770 IFK=60RK=15THENPRINT"mJQ 1IJl!"SPC <28 ) "
780 NEXT
790 PRINT"!ll"SPCC24 )"
800 PRINTSPC C24)"
810 REl1 STAMPA DEI l/OCABOLI E DEL QUADRO
820 PRINT"lill"SPC<24 ) "1ELENCO PAROLE"
830 FORK=0T09:PRINTSPC <24 >"!l"K"-"V$(K):NEXT
840 PRINT"l;W":FORK=lT01S:FOR J=lT015:D$=D$+Q$ (K, J ) :NEXT
850 PRINTTA8 ( 4 ) D$:D$="":NEXT
855 WR=55380:FORK=0T014:FORJ= 0T014:POKEWR+K+40*J , 6:NEXT:NEXT
860 REl1 GIOCO
870 Q$= '' !;flIIDtlMJOOWJAM!J!l!W!J!M!l''
880 H$=="
890 PR IlffQ$" :D)UANTI MINUTI O I GIOCO ? "
900 OETP$1IFP$=""THEN900
910 IFASC CP$ )(490RASC (P$) >58THEN900
920 PRINTQ$H$
930 Tl$="000000":P=ASC <P$ )-48
940 IFTI >P*3600THENPRINTQ$H$:00T 01160
950 PRINTQ$";a-IUMERO DEL VOCABOLO ?"
960 GETQ~l$
970 I FQ~J$=" "THEN940
980 Rl=ASC ( QW$ )-48
990 IFR1 <00RR1 >9THEN940
1000 PRINTQ$H$
1010 PR INTQ$; : INPUT." R IOA IN CUI INIZI A" ; R2$ : R2=1/AL< R2$ >: PR I NTQ$H$
1020 PRINTQ$;:INPUT"COLONNA"; R3$:PRINTQ$H$:R32ASC <R3 $ ) -64
1030 IFTI>P*3600THENPRINTQ$H$ :GOT01160
1040 IFR2<>R3CR 1 >THEN940
1050 IFR3G -R4 CR 1>THEN940
1060 IFFL <R1 ) =1THEN940
1070 POKETV+47+80*R1+18+40, 3 2
PER FINIRE 167

1080 FL CRl)=l:M=M+l
1090 FORK=0TOLEN(V$(R1>>-1
1100 KK=TV-41+44+40*R2 +R3+K*R2 CR 1 ) + K*40*Rl <R 1 >+40
! ;:
~ ~~:~EK ( ~-:J:) <30T,HENPOKEKK, PEEK ( KK) + 128
11 30 IFM=10THEN1210
1140 GOT0940
11 50 REM FINE GIOCO
1160 FORK=l T010 :PRltHQ$"a3-ffU PERSO ! ! ~"
lL'01wf... ..1 ...d1u3 1..'.l1J :llb-: r :PIHM lu$ " HH1 t-"ER':.O 1 ! i:" :r·oFU=J ro .::i 00:JlE >ff :t·lE ~"< l :PRltHt2$H$
11813 L"$=""
11 90 FORK=0T09 :H00 :1J :tlE)<f :M= 0
1 2C3C.3 GOT0 12 713
1 2 1i3 T = Tl/6121
1220 PRitffQ$H$ :FORl<= l Turn :PRitH0$"11l.;J-lAI VltHO ! ! ~"
123 0 FOR,T=l T0"300 :NEKr :PRINT1;l$"HAI l/INTO ! ! ;:" :FIJRJ=l T0300 :NE)<T :~lEi<T :PRINTQ$H$
1240 PRitHQ$"HAJ Vl tHO I t..f "ItH '..T) " SECONDI"
1250 GIJTIJ 13 20
1 2~ 0 REM USCITA PER TEMPO SCADUTO
1270 PR itHQ$"ECCO LA SOLUZIONE ·t"
1~80 FORR1=0T09 :FORK=0TOLEN (V$(Rl))-1
1290 KK=TV-41+44+40*R3C R1)+R4(Rl >+ K*R2 CR 1>+K*40*R1CR1 >+40
13 0fJ I FPEEK CKI<) (30THEt-lPOKEKK, PEEK ( l<f<>+ 128
1310 t..fE )•:T ~t·lE )<1
13:20 PI~ I NT" mlUO I RIPROVARE ?;:"
133(t GET'T'$ : I F'T'$= " "THEN 1 330
1340 IFY$=" S "THENRUtl
1350 PRINT"::J.)K - CIAO ! ! "
13 60 ENO
1370 REM VOCABOLI DI BASE
l 380 DATFtG I NEVRA .•PORPORA, HEEKEND , SUSANt..fA, Lot..fORA, V I OLETTO, FRANCESCA
1390 OATACOMMOOORE,AZALEA,CAR LO , BUCARES T , MARRONE,PAPERINO,CAMOSC IO
1400 DATAKAMIKAZ E , TORONTO,RAFFAELE , HANDICAP,CHIOCCIA,AMARAN TO,TOKYO
1410 OATANEWYORK . MIRELl. n , BUOAPES T,TI Z IANO,CANGURO,PRIMULE,CAT ULLO
1420 DATAARANC ION E,~U MPU TER, lu PO LINO ,Q UAORO , MADRlO,ANGELO,ANTILOPE
14 J C.3 DA rAG I USEPPE , SNOOP'T' , TULIPANO, I/ I ENNA .• AtHOt..f I O.• SQUADRA , INDACO
1441.:l UfffH~TU '/EtHU b, PAtl[JA , At4EMON I , AZZURRO, P E CH 1 NO, REATTORE
145 0 OATAMOQUETTE, SAMOVAR

100 CLF.: :P O l ~ E:"• 3 280 . 11'.3 :F-·OKE5:32::::1,3


11 121 t"t"t="i~*+*************************************"
12 0 PI< J Il r" ::.W" A:i
130 FUF'ì ""' 1 T02 ('.1 :F'RlNl "I~" :NC<T : PRitH ":J"A$
l 4 ti PF; ItH"i;!" :FOR I = l T021 : PR itH" a+;dl"; :NEXT :PRINT
l ': (1 Pf.: rt-rr .. ;:;ieier,t~•••••••••W:: L A 8 o R A T
0
o F~ E ..
l G0 PR I t..f T rt1B •, 11 .1 ".!'lU.) I D I E T E:;"
;;·13 PR llHH t8( 8.1" &rumF'REMI IL TASTO RETURN ";: GOSUB2270
180 OIM C 1 C2,3) , C2C2,3~.C3C5),C4C6,3)
l ~JO FORI = l T02 :FORJ:=l T03 :REftDCl (I .• J) :t..fE)<T :NEXT
2 00 DATA 3 .91 67, 4.0833 ,4.5,3 . 41 67,3.5833, 4
2 10 FORI=1T02:FORJ= 1T03 :READC2C I , J ) :NEX T:NEXT
220 DATA 128. ?5, 1 28 . 25, 142 .5,105.106, 122
2 3 0 FùR1=1T05 : R~AOC3CI):NEXT
2 4 0 DATA 3.68.4.32.5.75,8, 12 . 3
2513 F C.IR l = 1 T06 : FORJ = 1 T03 : REHOC4 ( I , ,T) : NEX T: NEXT
260 onrA 186 .199 .2 10 . 175.7,183.5,199
270 OAlA 164,171.5,186,180, 182,192
2 8 0 DATA 1 64,l~l . 5, 1 86, 1 54. 5 ,162. 175
290 C6~ .454:C7= ~ .54
168 PER FINIRE

3•::'n3 Pl'..1$=" (S OPPURE t~ )"


31 •3 p 1 $="SPI 11CENTE .•SE I n·;oPPO "
320 1··.;-·:t="PEF: 1)UE:::;T J CftLCOL J." :r:J:t=" I RISULTATI POSSONO ESS ERE IMPRECISI."
330 P4$=" - - - - - - - - - - - - - - - - - - - - - - - - - " : H$= ":J
340 PRitHH$
350 PRitH":.:m111tttttttt::0tHROLLO DEL PE SO"
360 PR I ~--1 T !! •tlllltlL~~~~mm:-::::::=Nm~~~m·:i::<~~gotC-S~X«~~~m!.$~ "
370 PRitHTA8(7) "~ISPONDI ALLE MIE"
380 PR I tHTtiB <7) "OJOMANDE, E PO I BATTI"
39€1 PF.: I NTTAB <7 ) " :i!JI L TASTO i1F: E T LI R N;:"
401'.f Pf;.: I tH" ~tttttE ·· LA PRIMA VOLTA CHE"
4W PRitH" "8JttttttttFAI Ut·lA DIETA ? ";
42[1 ~=·2=2
4 3 0 GOSU82270:PF.:INT":J"
440 IFLEFT$o'.~Mi .• 1 )="N " THHl S2= 1
450 IFLEFT:t.O·JM$, 1 )= "S" THEN S2=0
460 IF S2<2 THEN 4 80
470 GOSUB 2260:GOT0370
480 IF S2=1 THEN 570
4 90 PRitH":mrum!"
500 PR ItH" 1}UESTO PROGRAMMA NON HA BI SOGt~O OI "
510 PR I tH" SP I EGAZ I ON I , DO VRA I S EMPL I CEMEtHE"
520 PR ItH" R I SPOt~OEF:E ALLE DOMANDE. I RISULTATI "
530 PR HH" SO t~O VALIDI PER PEF:SOt·lE DI ETA'"
540 PR ItH" COMPRESti FRA 18- 7 1 ANNI , E O I ALTEZZA"
~50 PR I MT "COt-1PF':ESA FRA 152-198 CM. "
560 PRIMT
570 PRHH"UNITA"' BR ITAl~NICHE O ITALIANE ? <B-D ";
580 GOSU82270 : S l=- l* (~ll·l$=" I ")
590 I FS 1 =0AND ( ~J~J$ <:)· " 8" ) THEt·JGOSU8226•3 : GOT0570
600 PRINTHS:IFS1=0THEN640
61€1 PRitH "~l!!PUANTO SE l ALTO IN CM? " ; :GOSUB2270 :A2=VAL (~JW$ )
620 A2=A2/C7:GOT0660
630 GOSUB 22·1 0
6 40 PRHH ":miml!!J3EI ALTO •••••• " :PF: ItHSPC( 15) "l!f'IEDI? "; :GOSUB2270 :A1=1/AUWW$)
65[1 PF~ I NT: PR I NTSPC ( 15 ) "POLLICI ? "; : GOSUB2270: PR I NT" :J" : A2=VAL ( ~J~J$ ) : A2=A 1*12+A:i!
660 I F A2>59 GOTO 700
670 PRINT : PR ltHP1$ .; "BASSO"
680 PRINTP2S:PRINTP3$
69€1 GOT07:30
700 IF A2< 76 GOTO 730
7113 PRINT : PRIMTP 1 :i .: "ALTO"
720 PRIMTP2S:PRINTP3$
730 PF:ItH
740 PRrnT ""111'18l§lmlQttttUUAL ' E' IL TUO SE SSO (t1 - F)? ";
75i_:t A·::-·~
76•3 GOSUB 2270 : PR I MT ":J"
770 IFWW$="M" THEN A3= 1
780 IF~Jl-JS="F" THEN A3=2
790 IF A3<:3 GOTO 820
800 GOSUB 2260
:: :i O GOTO 730
820 PRHlT"~W!I~Wl!Jttttu:: oM·'E ' Lfl TUA COSTITUZ IOt~E ?"
:330 PRi tH"~ ( S =S OTT IL E .• t1= MEDI A .• L = LARGti) ::l";
840 fi4 = 9
8513 GOSUB 2270 :PR itff " ::l"
861:1 InJL-lS="S" TH E t~ fl4= 1
8713 IFl-ll-J$="M" THEM ti4=2
880 InJ~JS="L" THEM A4:::;:
8 9 0 IF A4 < 4 GOTO 920
9 •30 GOSUB 2260
91 (1 GOTO ::::20
PER FINIRE 169

920 B0=C1(A3,A4>*A2-C2CA3,A4 )
930 IF 6 1=1 THEN B0=80*C6
940 B 2= INT < B0~.25+ . 5)/ 10
950 80=INT ( 80+.5;
960 PF<I NT " !l!Iml!l"; P4$: PR INT
970 PRINT "IL TUO PESO IDEALE DEVE E SSERE COMPRESO"
'.'180 ~1 J Jtl1".'lTPA":.rc•.'Cl; ItlT (813 82+-.5)" F.: "TMl f 801-B2~.5 )
990 P~ INl : ~R lN rP4$ : PRINI
1000 PR INTSF'C<23) ":!J(S - N ) ::I)":PRINT"VUOI CHE TI CALCOLO LA DIETA?";
1010 GOSU82270 :PRINT
102 13 IF ~·JvJ:l> C> "S" At·m j.Jj.J$() "W THEN GOSUB2260 :GOT01000
1030 IFWW$="N" GOTO 1570
1040 PF~ ItH "~..l.mUANTI ANtH HAI ? ";
1050 OOSUB 22 ? ~3
1060 n5 ==VAL •, vJvJ$ >
1070 IF A5) 1 7 GOTO 1110
108 0 PRINT:PRINTP1$;"GIOVANE"
1090 PRINTP2$ :PRINTP3$ :PRINT
11 OIJ 1_,lJTO 1130
1110 IF A5<72GOT 01 130
1l20 PRINT : PRINTP1$; "VECCHIO" :PRitHP2$ :PRINTP3$ :A5=71. 999
1130 PRINT
1140 PRINT " l!l!!l!J;!UAL 'E' IL TUO PESO ATTUALE?ll";
1150 GOSUB 2270 : PR I tH" :J" : A 1 = V AL ( vlvJ$) : I FA 1 <=0THENGOSUB2260 : GOTO 1140
1160 lF S 1=0 GOTO 11 8 0
11 70 Al=A 1/C6 :813=80,-'C6
11 80 GOSUB 16 40
11 90 IF 82= 1 GOTO 1260
1200 B3=' Al - 80 ) /80
12 10 IF 83 ( 0 GOTO 1230
122 0 lF 8 3) .04 GOTO 1260
1230 PRitH :PRHH" COMPLIMENTI ! ! !"
12 40 PRlNT"~JN DEVI OSSERVARE ALCUNA DIETA"
1250 IFS2= 0THEN1560
12tSO PR ltfl "VUOI COMINC IARE Ut~A DIETA ? <S-N ) ";
1 27(1 GOS UB 2270
1280 I FvJ~J$= "W GOTO 1570
1290 PR ItHH$
13 00 IF s2~ 1 GOTO 1330
1 310 A7=Al -B0
l 8;20 1301 o 1420
1330 IF S l =O GOTO 1390
13 40 PRINTH$
1 350 PR I NT " G!UAtH I KG VUO I PERDEF:E '? " ;
1360 GO SUB 2270: A?=VAL ( l-JloJ$) : I FA7C=0THENGOSUB2260: GOTOl 350
13;-o l'l7=A7r'C6
13:30 GOTO 14 10
139(1 PRlllT"1~UAN TE LIBBRE VUO I PERDERE? ";:GOSUB2270:A7=VAL<WW$)
1400 I FA7(~1.HHENGOSU822t.0 :GOT01390
1410 PF~ ItH
1 4 .20 f'R I tH "~E I O I SPOSTO A CAl18 I ARE IL TUO ATTUALE"
1•~313 PRINT"Ll\/ELLO DI ATTil/ITA' F ISICA ? (8-N ) ";
14413 GOSUB 2270
1450 PR itlT
1460 IFt·H•J$=" S " THEt-1 GOSUB 1640
147 0 IF 82= 1 GOTO 1520
148 0 A8= 12 130
14913 PRINT"OK, TI SUGGER I SCO LA DIETA SEGUENTE:"
1500 PF: INT" 1.;::13r21 CALORIE AL GIORMO" :GOT01550
1510 GOT O 1550
1520 PRitlT
11
153(1 PRJNT"Q UA~~TE CALORIE AL GIORNO" :PRINT 0 DES IOERI NELLA DIETA'? ;
170 PER FINIRE

15413 GOSU82270:A8=VALCWWS)
1550 GORl81910
15613 PRINT
1570 f'RitH : f'RltH"!NUOI RIPETERE IL CALCOLO PER"
1580 PRitH"UN ALTRO PESO ? <S-N:O ";
1590 GOSUB 2270
1600 IF~l~l$ ="W GOTO 16:3 0
1610 PRitHH$
1620 GOT060f.i
1630 Et·ID
16,1(1 PF;Hn "m1"U.l!llD~.. I\'El I 1 OJ fln J'/ITW r I'.:.=:ICAt;"
1650 PP.ItHTAE:O:: 10) " !001 =- SEO E:t~l ARIH" :PF:ItHff18C 1 0) "2 = LEGGEF:f1"
1660 PR itHTABC 10) " 3 = MOCJERflTfl"
1671) PR itHTl18( 113 ) "4 = ENERGICA" :PRitHTAB.: H~) " 5 = SEI/ERA"
1680 PRitff""!!ll!Il!IJllH•:;J.UALE LIVELLO ? <DA 1 A 5) ";
1 6913 GOSUB 2270 :PF:ItH"~" :A6=VAL( l•IH$)
1 ?00 IF0<A6A~mt=t6<6 GO ru 1730
1710 GOSUB 2260
1720 GOTO 164ù
1 730 I1:'.1 =I NT CA5/18~
1740 IF 113( 1 THEN I0=1
1750 I 1= I0+ <A3* 3-3)
1760 I 2= 1+ CC A2-60 )/6)
1 770 I2= INTO:I 2)
1780 IF I 2< 1 THEN 12=1
1790 IF 12>3 THEN I2=3
1800 ~ll =C3 <A6> *A1
1810 W2= C A1~.425>*C4CI1,I2 )
1820 B2=1 . 1l*CWl+W2)+.5
1830 B2,,,I tH >;B2>
1840 PRitH
1850 PRINT "!l!ll!.l!In:::AL/GIORtKt DI MANTEtHMEtffO ="82
1860 PRitHP4$
1870 PRitH " CALOR IE GIOF~MALIERE PER MAtHENERE"
1880 PR I tH" IL TUO PESO FITTUALE. "
1890 PRitH
1900 RETURN
1:::110 PRitH
1920 A9=Al -A7
1930 141 =Fi l
1940 1=0 :J=0 :~13=0
1950 PR I tH " !1•/UO I I/EDERE CON QUALE RITMO PERDERA I "
1960 PR I tH " IL PESO DURANTE LA O I E TA ? "; : GOSUB2270 : A$=W~l$
1970 I FA$=" t~ " GOT02130
1980 PR I IHH$ : PR I tH" 83 I ORt~ I KG-PERSI PESO fHTUALE ::"
1990 PRHH
2000 IFA$="N"GOT02130
2010 J=,T+ l
2020 l·J8,,.,l•l3 : l·l9=~11
2030 I FS 1 THEt~~l 8=1~8*C6 : ~l 9=Yl9*C6
2040 ~l:::= Il~HYl:3*100+. 5)/100 :H9 = 1N T< ~l 9*100+. 5),,' 100
2050 IF J<2'.3 GOTO 2 100
2060 PRitH :PF:nn "PRE MI IL ll'F:ETURNU: PER CotH rnUARE "-~
2070 GOS UB2270
2080 ,T=0
2090 GOTO 1 9l"::0
2100 IF~$::."N"GOT021 30
2 110 IFI =0GOT02 130
2120 PRINTI , 1~8, Yl9
2 130 I=I+l:W6=C3(A6>* W1:W7 =< Wl~.425 > *C 4 C I1 , I2 ) :82=W6+W7
2 140 W3=CB2-A8*.9) /3500:Wl=Wl - W3
PER FINIRE 171

2150 I F <W3>0At~D <Wl -A9 ))0) OR< l-!:3<=0AND rn 1-A9) < 0 HHEN2000
2160 PRUIT
2170 IF 1) 1 GOTO 2200
2180 PRIMT"SPIACEMTE, DEVI MAMGIARE DI MEMO •• " :PRINT" •••• O MUOVERTI DI
PILI'!!}"
2190 RETURN
2200 I= I - 1 : PR I tH "!J"REl1 I FETUR~~:I PER COtH I NUARE " ; : GOSUB2270 : PR I NT
2210 PRINT";:imJ"P4$:PRINT"!DIE TA SUGGERITA <CAL/G IORN0 ) :" , A8
2220 PRitH"AL LI VELLO DI ATTl VITA' ATTUf'.lLE;< "A6" )"
2230 PRINT"OURATA DELLA DIETA ="I" GIORl~I"
2240 IFS1THENA7=A7*C6
2250 PRIMT"PESO C ~~ PERDERAI =" INT CA7+.5 ) :RETURN
2261:; PRitH :PRINT"IJ+i** RISPOSTA NON VALIDA ***lìl: RIPROVA" :RETURI~
2270 l~W:f:=""
2280 PR I NTTAB ( 10); "•.al"; : FORI/V= 1 T05 0 : GETQQ$ : I Ft";1Q$( ) " "THEt~l/V=51 : GOT02310
2290 NEXT :PR INT" ~I"~ : FOR"IV= 1 T050 :GETQQ$ : IFQQ$ ():" "THENl/V=51 :GOT02310
2 ::;00 11 E~n- : e.o 102~n11
23 10 NEXI :lf-A:::.C~UU-*'J=l;:;llll::Ni-' f<'.HH" Il"; :RE:lURN
2320 IFASC(QQ:f:)=.20T HEM2360
2330 IFASC•:QQ$)=34 THENQQ$="'"
2340 l-Jl-J$=1-JW$+QQ$: I F LEl~ ( l-Jl-J$ ))25 4THENl-Jl-J:t=""
2350 PR 1 NT" Il" QQ$ .i : GOT022:30
2360 IFLEM < l-H~$)(1 THEt~2270
2370 IFLENCWW$ )= 1THENPRINTQQ$;:GOT0227 0
2380 WW$=LEFT$ ( WW$ , LEN CWW$ )- 1 ) :PRINTQQ$;:GOT02280
È un libro di software per la scuola, scritto con competenza e
sensibilità da un insegnante.
Si tratta prevalentemente di programmi didattici classificabili
all'interno delle discipline tradizionali, matematica, fisica,
statistica, ecc., ma non mancano programmi di intrattenimento -
come la classica battaglia navale - che hanno sempre comunque
nella scuola il loro punto di riferimento.

Il volume può essere utile agli studenti, agli insegnanti e anche a


tutti coloro che davanti a un computer, danno ancora
l'impressione di essere sui banchi di scuola.

Risparmiate tempo ed errori!


Tutti i programmi descritti in questo libro sono disponibili
su tre cassette, pronti per essere utilizzati.

Potrebbero piacerti anche