Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
A scuola con
· il Commodore 64
Il piacere del computer
POKE A,B
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
POKE 1024,83
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
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
POKE 55297 ,5
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
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
I
casella 1484
fin ale
' • • • • •• • • • • • • • • • •• • • ••
• • •• • • • • • • • • •• • • • .·- r-. casella ~g.J_
d ' inizio
Figura 4
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.
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
NUMERI FRAZIONARI
3.24 = 324
100
81
= 25
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~
y = mx+q
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
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
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
PA~ABOLA E RETIA
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
y = mx+q
V1 V3
V2 e V4
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
o
BYTE O BYTE 8 BYTE 312
BYTE 1
...... J
......
...... RIGA D
......
······
BYTE 7 BYTE 15 BYTE 319
RIGA 1
RIGA 24
Figura
28 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 .
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
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
SISTEMI DI NUMERAZIONE
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
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
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 è
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
Ol 23456789ABCD EF
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
1011001000
I 0-1100-1000
0010-1100-1000
2C8
o
oppure .25
oppure . 5
oppure .75
' 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
7/ 2=3+1 / 2
R = N-QxD
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 -------- - -- --- - - ---- -- -
~1 _____ ___ __ __ A
I
I
I
I
I I
~ .. I I
------------~ ---- - - - --:--- -
\ I
I I
I I I
'f. lf IH
Figura 8
46 MATEMATICA ELEMENTARE
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
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
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
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
4020 RETIJRN
MATEMATICA ELEMENTARE 49
Ancora Inateinatic a
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
x=a
X=~
X = 'Y
Fissiamo a piacere un valore Xo: ad esso corrisponde il punto a della cur-
va con coordinate
m = /'(xo)
AB
m = tgi'J = -
CB
AB
/'(xo) = CB
52 ANCORA MATEMATICA
f(xo)
f' (xo)
f(xo) AB
CB
f' (xo) AB
CB
f(xo)
Xi = Xo- f'(xo)
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 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
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
DISPOSIZIONI E PERMUTAZIONI
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
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.
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
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
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
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
A(R ,,C,l
ma
A(R ,,N)
Il ~ ~ ~Il
è la
3 o
2 1
1 2
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
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
A= -72
Si noti che gli elementi della prima riga vanno presi con segni alternati
cominciando con il segno più.
72 ANCORA MATEMATICA
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
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).
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
a b d
2 2
b e
A
2
e-
2
=o
!!_.!_ f
2 2
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
2a 2ad+be
y = X- ---
b 2b(a+c)
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
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
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
cyi e f
X - - - - y- -
d d d
y
_ax 2 _dx_ f_
e e e
-dx-f
y
bx+e
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
UNITÀ DI MISURA
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
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
LUNGHEZZE
miglio anno
metro miglio inch foot yard
marino luce
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
VELOCITÀ
ACCELERAZIO NI
km/ h
m/ sec2 km/ h2
per sec.
km/ h
per sec. 0,278 3600
FISICA 87
FORZE
ENERGIA
POTENZA
'Con una istruzione INPUT, altrimenti il dato da trasformare dovrebbe essere costituito da
un solo carattere.
FISICA 89
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
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
R-A(Kl
l!Urlltro
scarti
scarti
pot.itivi
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
Figura 11
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
~~ 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
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
'Corrispondenti alle combinazioni di sei elementi di classe 4 (vedi programma sul calcolo
combinatorio).
100 FISICA
2-irr v2
V= -
T
= 27rf a
r
1
f = T
Fra le risposte ogni volta viene fornito anche il valore della frequenza in
hertz e della velocità angolare in radianti al secondo .
BALISTICA
I
I
I
I
I
I
I
e - - - - - 7- - - - -=.=-:::.---...--
P1 ----r--- 'P
I
I
"" l I
I
I
o A
Figura 12
V.r == V cos cx
Vy == V sen cx
OP,.= V,.· t
[ OPy = Vy · t - ~ . g· t 2
X= V,.· t
1 2
[ y= V.y·t-2·g·t
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
I
I
I
I
I
I
I
I
I
I
I
I
I
I
Figura 13
FISICA 103
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À
Ammesso che un'astronave abbia bisogno di ali. Stabiliamo che gli servano per rientrare
nell'atmosfera.
108 FISICA
o,
o"
...
Figura 14
17
L' = L-../ 1- ~
c
L' = L
T
T'
M
M'
=~
R = V+W
R = V+ W
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.
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
' 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
C = L - LL
AL
vw
ci
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
A$ 8$ C$ 0$ E$ F$ G$
A1 81 C1 01 E1 F1 G1
ELIZA
' " 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
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
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
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.
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
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
INTEGRALI DEFINITI
~· f (x)
Figura 15
ANALISI MATEMATICA 131
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
' Matematico ingl e~e del 1700, studioso dei metodi di esaustione.
132 ANALISI MATEMATICA
Primo esempio
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
I I
J+(--x2)
3- X 3X X 2 X 3 125
s= 2 dx= [-2 - - - - ]
4 3 3
= -48 = 2604167
,
2
Secondo esempio
y = 3.x2-2x3
y = - 4x 3 + 6.x2 - 3x + 1
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
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
INTEGRALI DOPPI
f(x, y)
Primo esempio
Si voglia calcolare
x2+y2
IL x+y
dxdy
Figura 18
L'integrale
138 ANALISI MATEMATICA
I
x2 + y2
J•-y -dx
x+ y
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
y =o
y = 1
V = O,368636868
Secondo esempio
Si voglia calcolare
dxdy
JL = l+y
ANAUSI MATEMATICA 139
o X
Figura 19
XA ::: Y2
xs ==v
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
5-11"
V == - 2- - log 2 =: 0,2360565
F = 1/(1 +y)
X 1 = Yl2
X2 = SQR(Y)
140 ANALISI MATEMATICA
V = 0.233436268
leggermente inferiori al valore teorico. Con 20 e con 30 suddivisioni si
ha rispettivamente
V 0.235140233
V = 0.235559394
INTEGRALI TRIPLI
~· f (x)
A B X
Figura 20
ANALISI MATEMATICA 143
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~
Ancora fisica
ANALISI DI FOURIER
y = a sen x + b cos x •
Vogliamo dimostrare che essa corrisponde ad una sinusoide.'
Poniamo
b = e sen t'J ••
a = e cos {}
.b tg {}
a
cioè
b
rJ = arctg -
a
b2 = e2 sen2 "
02 = e2 cos2 {)
cioè
-e
Figura 21
ANCORA FISICA 147
Figura 22
y = a sen x + b cos x
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
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
onda sinusoidale
onda quadra
onda triangolare
onda frastagliata
sinusoide tosata
RESISTENZE E CAPACITÀ
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
::: 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
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
y = ax + b
y = ax 2
+bx+c
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
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
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.