esercizi di chimica con turbo pascal 1.1 su mac

Program RADIO1;
(* grafico per simulazione RADIOATTIVITA *)
   USES Memtypes,QuickDraw,OSIntf,ToolIntf;
   
   VAR
      gPort:   GrafPort;           
      cassetto,foro,cancella,positiva,negativa,nucleo1,nucleo2:rect;
      cancellag:rect;
      a,t,tempo,x,y,g,h:integer;
      s1,s2,s3,s4:string;
      
procedure pausa; (* attesa che si prema enter *)
begin
moveto(10,10);drawstring('premi enter ');readln;
end;
  
  procedure grafica;  (* attivazione comandi grafici *)
BEGIN
   InitGraf(@thePort);      
   initfonts;
   InitCursor;
   HideCursor;
   OpenPort(@gPort); 
   textfont(9);
   textface([outline]);  
   PenPat(white);
   BackPat(Black);
   EraseRect(gPort.portRect);
   FrameRect(gPort.portRect);
end;
procedure testo(x,y:integer;frase:string);
begin 
penpat(white);
moveto(x,y);drawstring(frase);
end;
procedure cancellatesto;
begin
setrect(cancella,1,1,500,110);
penpat(black);
paintrect(cancella);
end;
procedure cancellagrafo;
begin
setrect(cancellag,1,1,500,370);
penpat(black);
paintrect(cancellag);
moveto(1,1);
end;
procedure reperto(k:integer);
begin
y:=60;x:=50;
for g:=1 to k do
begin
for h:=1 to 30 do
begin
setrect(nucleo1,x,y,x+10,y+10);paintoval(nucleo1);
x:=x+15;
end;
y:=y+20;x:=50;
end;
pausa;
end;
procedure semivita;
begin
testo(20,20,'ogni nuclide radioattivo impiega un tempo caratteristico');
testo(20,30,'non modificabile in alcun modo,per trasformarsi mediante');
testo(20,40,'decadimento naturale,in altro elemento che puo decadere ');
testo(20,50,'ulteriormente con proprio tempo caratteristico o risultare');
testo(20,60,'stabilizzato:si definisce TEMPO di DIMEZZAMENTO ');
testo(20,70,'il tempo (anni,giorni,minuti,secondi...) che una certa');
testo(20,80,'quantita di sostanza impiega a dimezzarsi decadendo ');
testo(20,100,'tale tempo risulta indipendente dalla quantita di sostanza');
testo(20,110,'dipende solo dalla natura della sostanza ');pausa;
cancellagrafo;
testo(20,20,'sia tempo dimezzamento = 100 anni e atomi iniziali= 1000');
testo(20,40,'atomi parentali,atomi derivati,tempo dimezzamento e trascorso');
testo(50,100,'1000.....................0...................0 = 0');
testo(50,120,'500......................500.................1 = 100');
testo(50,140,'250......................750.................2 = 200');
testo(50,160,'125......................875.................3 = 300');
testo(50,180,'62.......................938.................4 = 400');
testo(50,190,'31.......................969.................5 = 500');pausa;
testo(200,220,'atomi iniziali=1000..in diminuzione');
testo(200,370,'tempo di dimezzamento');
moveto(50,200);lineto(50,350);lineto(400,350);
moveto(52,350);lineto(52,200);testo(10,200,'1000');
testo(50,360,'0');pausa;
moveto(100,350);lineto(100,275);lineto(50,275);testo(10,275,'500');
testo(100,360,'1');pausa;
moveto(150,350);lineto(150,312);lineto(50,312);testo(10,312,'250');
testo(150,360,'2');pausa;
moveto(200,350);lineto(200,331);lineto(50,331);testo(10,331,'125');
testo(200,360,'3');pausa;
moveto(250,350);lineto(250,342);lineto(50,342);testo(10,342,'62');
testo(250,360,'4');pausa;
moveto(300,350);lineto(300,346);lineto(50,346);testo(10,356,'31');
testo(300,360,'5');pausa;
cancellagrafo;
testo(20,20,'per determinare gli anni trascorsi dallo inizio del ');
testo(20,40,'decadimento,si deve conoscere il numero di atomi presenti');
testo(20,60,'nel reperto da analizzare:');
testo(20,80,'atomi radioattivi parentali ancora presenti P ');
testo(20,100,'atomi filiali derivati dai precedenti per decadimento F ');
testo(20,120,'gli atomi iniziali erano quindi T = P + F ');
testo(20,140,'si deve conoscere tempo di dimezzamento della sostanza Td ');
testo(20,160,'la formula per calcolare il tempo totale trascorso risulta');
testo(20,200,'tempo = (Td/0.69) * 2.3 Lg(1 + F/P) ---> 3.3 * Td * Lg (1+F/P)');
pausa;cancellagrafo;grafica;
testo(20,20,'campione originario con atomi radioattivi P:  1000 P --- 0 F');
reperto(16);
testo(20,30,'passa   1 tempo di dimezzamento: (P =1/2 )  500 P --- 500 F');
penpat(gray);reperto(8);
testo(20,40,'passano 2 tempi di dimezzamento: (P = 1/4)  250 P --- 750 F ');
penpat(gray);reperto(12);
testo(20,50,'passano 3 tempi di dimezzamento: (P = 1/8)  125 P --- 875 F ');
penpat(gray);reperto(14);
end;
procedure iso(s1,s2,s3,s4:string);
begin
testo(100,180,s1);
penpat(white);setrect(nucleo1,100,200,200,300);paintoval(nucleo1);
for t:=1 to 30000 do write('');
testo(20,230,s2);
moveto(20,250);lineto(150,250);
testo(100,320,s3);testo(320,250,s4);
penpat(gray);setrect(nucleo2,100,200,200,300);paintoval(nucleo2);
end;

procedure isotopi;
begin
testo(20,20,'produzione di isotopi,spesso instabili,radioattivi');
testo(20,40,'si utilizzano come proiettili particelle neutre come NEUTRONI ');
testo(20,60,'o cariche accelerate come PROTONI,ALFA');
testo(20,80,'per colpire NUCLIDI da trasformare in altri tipi o in ISOTOPI');
pausa;
testo(20,100,'la reazione si scrive in due modi ');
testo(20,120,'Nuclide bersaglio + proiettile --> Nuclide prodotto + emissione');
testo(50,140,'X (100,80) + He(4,2) ------> Y (103,82) + n(1,0) ');
testo(50,160,'X (100,80) (He(4,2),n(1,0)) Y (103,82) ');
pausa;cancellagrafo;
s1:='X (100,80)';s2:='He(4,2)';s3:='Y (103,82)';s4:='n(1,0)';
iso(s1,s2,s3,s4);
pausa;cancellagrafo;
s1:='X (100,80)';s2:='p(1,1)';s3:='Y (100,81)';s4:='n(1,0)';
iso(s1,s2,s3,s4);
pausa;cancellagrafo;
s1:='X (100,80)';s2:='n(1,0)';s3:='Y (97,78)';s4:='He(4,2)';
iso(s1,s2,s3,s4);
pausa;cancellagrafo;
s1:='X (100,80)';s2:='n(1,0)';s3:='Y (101,81)';s4:='e(0,-1)';
iso(s1,s2,s3,s4);
pausa;cancellagrafo;
testo(20,20,'con particolari nuclidi come U 235 e Pu 239 ');
testo(20,40,'bombardati con neutroni lenti,si verifica la FISSIONE');
testo(20,60,'con produzione di elementi piu leggeri e neutroni liberi');
testo(20,80,'e con liberazione di grandi quantita di energia ');
testo(20,100,'cfr.programma sulla fissione....');
pausa;
end;


procedure blocco1;
begin
setrect(cassetto,50,200,100,250);
framerect(cassetto);
setrect(foro,90,220,110,230);penpat(black);
paintrect(foro);
testo(20,20,'cassetta schermata,con foro,contenente sostanza radioattiva');
pausa;penpat(white);
testo(250,320,'schermo rivelatore di radiazioni');
moveto(400,120);lineto(400,350);pausa;
testo(20,30,'radiazione esce dal foro e viene rivelata da schermo ');
moveto(60,225);lineto(400,225);pausa;
testo(20,40,'applicando due placche,positiva e negativa,sul percorso');
testo(20,50,'della radiazione,questa viene scomposta in tre diversi tipi');
setrect(positiva,200,190,220,200);testo(200,180,'positiva');
paintrect(positiva);
setrect(negativa,200,250,220,260);
paintrect(negativa);testo(200,280,'negativa');
pausa;
moveto(210,225);lineto(400,150);
moveto(210,225);lineto(400,270);pausa;
testo(410,150,'beta');
testo(410,270,'alfa');
testo(410,225,'gamma');
pausa;
testo(20,70,'alfa:nuclei di He con 2 protoni e due neutroni,velocita media');
testo(20,80,'beta:elettroni,elevata velocita ');
testo(20,90,'gamma:onde elettromagnetiche,velocita della luce ');pausa;
end;
procedure blocco2;
begin
setrect(cassetto,50,200,100,250);
framerect(cassetto);
setrect(foro,90,220,110,230);penpat(black);
paintrect(foro);
penpat(white);
moveto(400,120);lineto(400,350);
moveto(60,225);lineto(400,225);
setrect(positiva,200,190,220,200);testo(200,180,'positiva');
paintrect(positiva);
setrect(negativa,200,250,220,260);
paintrect(negativa);testo(200,280,'negativa');
moveto(210,225);lineto(400,150);
moveto(210,225);lineto(400,270);
testo(410,150,'beta');
testo(410,270,'alfa');
testo(410,225,'gamma');
testo(20,20,'interponendo una lamina di metallo M1,con spessore S1 ');
testo(20,30,'sul cammino delle radiazioni,si nota che solo le alfa ');
testo(20,40,'vengono bloccate,mentre le beta e le gamma la oltrepassano');
pausa;moveto(300,150);lineto(300,350);
penpat(black);moveto(210,225);lineto(400,270);penpat(white);
moveto(210,225);lineto(300,245);pausa;
testo(20,50,'interponendo una lamina di metallo M1,con spessore S2 ');
testo(20,60,'si nota che anche le beta vengono bloccate');
testo(20,70,'mentre le gamma la oltrepassano');
pausa;pensize(5,5);moveto(300,150);lineto(300,350);pensize(1,1);
penpat(black);moveto(210,225);lineto(400,150);penpat(white);
moveto(210,225);lineto(300,190);pausa;
testo(20,80,'interponendo una lamina di metallo M1,con spessore S3 ');
testo(20,90,'si nota che anche le gamma vengono bloccate');
pausa;pensize(10,10);moveto(300,150);lineto(300,350);pensize(1,1);
penpat(black);moveto(300,225);lineto(400,225);pausa;
cancellatesto;pausa;
testo(20,20,'cambiando natura del metallo,si trova che occorrono spessori');
testo(20,30,'diversi dai precedenti per bloccare le radiazioni');
testo(20,40,'il PIOMBO si rivela come il metallo piu efficiente ');
testo(20,60,'CONCLUSIONE:il potere di penetrazione o DUREZZA delle');
testo(20,70,'radiazioni aumenta dalle Alfa alle Beta alle Gamma ');
testo(20,80,'e varia con la natura della sostanza interposta ');
pausa;
end;
procedure descrive;
begin
testo(20,20,'alcune sostanze naturali emettono spontaneamente delle ');
testo(20,30,'radiazioni che si possono rivelare con opportuni strumenti');
testo(20,40,'RADIOATTIVITA:proprieta delle sostanze di emettere radiazioni');
testo(20,50,'-------------------------------------------------------------');
testo(20,80,'fasi descrittive da attivare ');
testo(20,100,'1-descrizione degli strumenti per rivelare radiazioni');
testo(20,120,'2-analisi delle diverse radiazioni e delle loro proprieta');
testo(20,140,'3-analisi del potere di penetrazione delle radiazioni');
testo(20,160,'4-ipotesi sulla origine delle radiazioni');
testo(20,180,'5-tipi di decadimento radioattivo :alfa,e+,e-,k ');
testo(20,200,'6-trasmutazione naturale delle sostanze per decadimento');
testo(20,220,'7-produzione di isotopi artificiali ');
testo(20,240,'8-tempo di dimezzamento dei nuclidi ');
testo(20,260,'9-esempi numerici a parte con RADIONU ');
pausa;
end;
procedure cade(s1,s2,s3:string);
begin
tempo:=15000;
penpat(white);
testo(100,180,s1);setrect(nucleo1,100,200,200,300);paintoval(nucleo1);
for t:=1 to tempo do write('');
testo(250,250,s2);for t:=1 to tempo do write('');
testo(100,320,s3);setrect(nucleo2,100,200,200,300);
penpat(gray);paintoval(nucleo2);
end;
procedure betan;
begin
testo(20,40,'decadimento beta negativo N ---> P + e- + an');
setrect(nucleo1,150,100,160,110);paintoval(nucleo1);
moveto(150,100);lineto(170,120);
end;
procedure betap;
begin
testo(100,50,'decadimento beta positivo P ---> N + e+ + ne');
setrect(nucleo1,200,150,210,160);paintoval(nucleo1);
moveto(200,150);lineto(180,130);
end;
procedure alfa;
begin
testo(150,250,'decadimento alfa ---> He(4,2)');
testo(150,270,'seguito da decadimento beta positivo ');
setrect(nucleo1,220,100,230,110);paintoval(nucleo1);
moveto(230,100);lineto(200,150);
end;
procedure diagramma;
begin
penpat(white);
moveto(50,100);lineto(50,300);lineto(400,300);
testo(50,90,'neutroni');
testo(400,330,'protoni');
moveto(50,300);pensize(2,2);lineto(300,100);
testo(50,330,'zona di stabilita  N = P ');
for t:=1 to 10000 do write('');
pensize(10,10);moveto(50,300);lineto(100,250);
moveto(100,250);lineto(200,50);pensize(1,1);
testo(200,320,'zona di stabilita N > P ');for t:=1 to 10000 do write('');
testo(20,20,'sopra o sotto la linea di stabilita :decadimento ');
pausa;
betan;pausa;betap;pausa;alfa;
end;
procedure decade;
begin
testo(20,20,'in generale un nucleo che risulti instabile ');
testo(20,30,'tende a decadere per raggiungere maggiore stabilita');
testo(20,40,'con possibile cambiamento del numero di Massa e Atomico');
testo(20,50,'in simboli:un NUCLIDE si rappresenta con il simbolo');
testo(20,60,'dello elemento e il numero di massa A e atomico Z ');
testo(20,80,'  Uranio(238,92).....U(A,Z)....U(238,92)  U(235,92) ');
testo(20,100,'sono ISOTOPI gli elementi con medesimo Z e diverso A ');
testo(20,150,'nuclidi instabili per rapporto neutroni/protoni ');
testo(20,160,'superiore o inferiore a quello ottimale di stabilita');
testo(20,180,'se N >> P ....decadimento beta negativo :n --> p + e- + an');
testo(20,200,'se P >> N ....decadimento beta positivo :p --> n + e+ + ne');
testo(20,210,'se P >> N ....decadimento K             :p + e- --> n');
testo(20,230,'se N >>>> P ..decadimento alfa          :He(4,2) ');
testo(20,250,'tendenza a spostarsi sulla linea di stabilita ');
pausa;cancellagrafo;diagramma;pausa;cancellagrafo;
testo(20,20,'decadimento ALFA :un nucleo emette una particella');
testo(20,30,'formata da 2 protoni e 2 neutroni :nucleo di elio He(4,2) ');
testo(50,50,'nucleo   ----------> He(4,2) ');pausa;
testo(20,80,'decadimento BETA negativo :un NEUTRONE si trasforma in ');
testo(20,90,'un PROTONE,emettendo un elettrone e un antineutrino ');
testo(50,110,'n(1,0)  ----------> p(1,+1) + e-  + an ');pausa;
testo(20,130,'decadimento BETA positivo :un PROTONE si trasforma in ');
testo(20,140,'un NEUTRONE,emettendo un positrone e un neutrino ');
testo(20,160,'p(1,+1) ----------> n(1,0) + e+  + ne ');pausa;
testo(20,180,'decadimento CATTURA K :un PROTONE si trasforma in ');
testo(20,190,'un NEUTRONE,catturando un elettrone del livello K ');
testo(20,210,'p(1,+1) + e-  -------> n(1,0)  ');pausa;
end;
procedure pro1;
begin
descrive;
end;
procedure pro2;
begin
end;
procedure pro3;
begin
blocco1;
end;
procedure pro4;
begin
blocco2;
end;
procedure pro5;
begin
decade;
end;
procedure pro6;
begin
testo(20,20,'come effetto del decadimento si puo verificare la ');
testo(20,30,'variazione del numero di massa A e atomico Z ');
testo(20,40,'con creazione di ISOTOPI o con TRASMUTAZIONE di elementi');
testo(20,5,'--------------------------------------------------------');
pausa;cancellatesto;
testo(20,20,'decadimento ALFA :un nucleo emette una particella');
testo(20,30,'formata da 2 protoni e 2 neutroni :nucleo di elio He(4,2) ');
testo(50,50,'nucleo   ----------> He(4,2) ');
testo(20,70,'nuclide diminuisce massa e numero atomico:trasmutazione');
testo(20,90,' X (A,Z) -----trasmutazione--> Y (A-4,Z-2)  ');
s1:='X(100,80)';s2:='alfa = He(4,2) ';s3:='Y(96,78) ';cade(s1,s2,s3);
pausa;cancellagrafo;
testo(20,20,'decadimento BETA negativo :un NEUTRONE si trasforma in ');
testo(20,30,'un PROTONE,emettendo un elettrone e un antineutrino ');
testo(50,50,'n(1,0)  ----------> p(1,+1) + e-  + an ');
testo(20,70,'nuclide mantiene costante la massa e aumenta numero atomico');
testo(20,90,'X (A,Z) -----trasmutazione--> Y (A,Z+1) ');
s1:='X(100,80)';s2:='beta- = e(0,-1) ';s3:='Y(100,81) ';cade(s1,s2,s3);
pausa;cancellagrafo;
testo(20,20,'decadimento BETA positivo :un PROTONE si trasforma in ');
testo(20,30,'un NEUTRONE,emettendo un positrone e un neutrino ');
testo(50,50,'p(1,+1) ----------> n(1,0) + e+  + ne ');
testo(20,70,'nuclide mantiene costante la massa,diminuisce numero atomico');
testo(20,90,'X (A,Z) ------trasmutazione--> Y (A,Z-1)  ');
s1:='X(100,80)';s2:='beta+ = e(0,+1) ';s3:='Y(100,79) ';cade(s1,s2,s3);
pausa;cancellagrafo;
testo(20,20,'decadimento CATTURA K :un PROTONE si trasforma in ');
testo(20,30,'un NEUTRONE,catturando un elettrone del livello K ');
testo(50,50,'p(1,+1) + e-  -------> n(1,0)  ');
testo(20,70,'nuclide mantiene costante la massa,diminuisce numero atomico');
testo(20,90,'X (A,Z) + e- --trasmutazione--> Y (A,Z-1) ');
s1:='X(100,80)';s2:='cattura K = e(0,-1)';s3:='Y(100,79) ';cade(s1,s2,s3);
pausa;cancellagrafo;
end;

procedure pro7;
begin
isotopi;
end;
procedure pro8;
begin
semivita;
end;
procedure pro9;
begin
testo(20,20,'per esempi numerici attivare programma RADIONU:arrivederci');
pausa;
end;
procedure fine;  (* conferma uscita operazione *)
begin
writeln('fine operazione:confermare :premi enter');
readln;
end;
procedure scelta;  (* procedura con scelta opzioni e uscita *)
var s,sn:string;opzione:integer;
begin
clearscreen;
writeln('seleziona opzione analisi RADIAZIONI');
writeln('1...descrizione esperimento ');
writeln('3...STRUMENTAZIONE per analisi radiazioni');
writeln('4...POTERE PENETRANTE o DUREZZA delle radiazioni ');
writeln('5...DECADIMENTO alfa,beta+,beta-,cattura K ');
writeln('6...TRASMUTAZIONE naturale per decadimento ');
writeln('7...PRODUZIONE di ISOTOPI radioattivi con bombardamento');
writeln('8...TEMPO DI DIMEZZAMENTO isotopi radioattivi ');
writeln('9...esempi numerici cfr.a parte RADIONU ');
writeln('10...fine ');
writeln('scelta =');readln(opzione);
grafica;
case opzione of
1:pro1;
2:pro2;
3:pro3;
4:pro4;
5:pro5;
6:pro6;
7:pro7;
8:pro8;
9:pro9;
10:fine;
end;
EraseRect(gPort.portRect);
writeln('altra operazione?Esperimenti?:premi S...fine:premi N '); readln(sn);
if sn='S' then scelta ;
end;
begin            (* programma di lancio *)
clearscreen;
scelta;
end.