esercizi di chimica con turbo pascal 1.1 su mac
Program RADIONU; (* esempi tempo di dimezzamento e reazioni nucleari INTERATTIVO *) VAR a,esatte,errate,p,f,te,ts:integer; s1,s2,s3,s4,r:string; t,td,pa,fi,eta,loga:real;
procedure pausa; begin writeln('premi ENTER ');readln; end;
procedure fine; (* conferma uscita operazione *) begin writeln('fine operazione:confermare :premi enter'); writeln('risposte esatte =',esatte); writeln('risposte errate =',errate); readln; end;
procedure trasmuta(s1,s2,s3:string); begin clearscreen; writeln('scrivere la risposta indicando simbolo(A,Z) del nuclide prodotto'); writeln('es. Np(239,92) senza spazi tra simboli e poi ENTER');writeln; writeln('se non conosci risposta,premi ENTER ');writeln; writeln('scrivere il nuclide derivato mediante il decadimento:',s1); writeln('dal nuclide radioattivo ',s2); write('risposta=');readln(r); if r=s3 then begin writeln('esatto');esatte:=esatte+1;end else begin writeln('errato:era :',s3);errate:=errate+1;end; s1:='';s2:='';s3:=''; pausa; end;
procedure trasmuta1(s1,s2,s3:string); begin clearscreen; writeln('scrivere la risposta alfa,beta+,beta-,k'); writeln('per indicare tipo di decadimento e poi ENTER');writeln; writeln('se non conosci risposta,premi ENTER ');writeln; writeln('scrivere tipo di decadimento subito da nuclide: ',s2); writeln('che si trasforma in nuclide ',s3); write('risposta=');readln(r); if r=s1 then begin writeln('esatto');esatte:=esatte+1;end else begin writeln('errato:era :',s1);errate:=errate+1;end; s1:='';s2:='';s3:=''; pausa; end;
procedure collide(s1,s2,s3,s4:string); begin clearscreen; writeln('scrivere la risposta indicando il nuclide prodotto'); writeln('bombardando un nuclide con un proiettile noto'); writeln('e conoscendo il tipo di particella emessa:poi premi ENTER'); writeln('se non conosci risposta,premi ENTER ');writeln; writeln('nuclide bersaglio ',s2); writeln('proiettile usato ',s1); writeln('particella emessa ',s4); writeln('scrivi prodotto . U(238,92) '); write('risposta=');readln(r); if r=s3 then begin writeln('esatto');esatte:=esatte+1;end else begin writeln('errato:era :',s3);errate:=errate+1;end; s1:='';s2:='';s3:='';s4:=''; pausa; end;
procedure collide1(s1,s2,s3,s4:string); begin clearscreen; writeln('scrivere la risposta indicando il proiettile usato'); writeln('bombardando un nuclide :si conosce anche prodotto di reazione'); writeln('e tipo di particella emessa:poi premi ENTER'); writeln('se non conosci risposta,premi ENTER ');writeln; writeln('nuclide bersaglio ',s2); writeln('nuclide prodotto ',s3); writeln('particella emessa ',s4); writeln('scrivi proiettile es. alfa,protone,neutrone '); write('risposta=');readln(r); if r=s1 then begin writeln('esatto');esatte:=esatte+1;end else begin writeln('errato:era :',s1);errate:=errate+1;end; s1:='';s2:='';s3:='';s4:=''; pausa; end;
procedure collide2(s1,s2,s3,s4:string); begin clearscreen; writeln('scrivere la risposta indicando particella emessa'); writeln('bombardando un nuclide :si conosce anche prodotto di reazione'); writeln('e tipo di proiettile:poi premi ENTER'); writeln('se non conosci risposta,premi ENTER ');writeln; writeln('nuclide bersaglio ',s2); writeln('nuclide prodotto ',s3); writeln('proiettile usato ',s1); writeln('scrivi particella emessa es. alfa,protone,neutrone '); write('risposta=');readln(r); if r=s4 then begin writeln('esatto');esatte:=esatte+1;end else begin writeln('errato:era :',s4);errate:=errate+1;end; s1:='';s2:='';s3:='';s4:=''; pausa; end;
procedure tempo(p,f,ts:integer;t:real); begin clearscreen; writeln('indicare tempo trascorso conoscendo atomi radioattivi presenti'); writeln('e atomi da loro derivati per decadimento'); writeln('si conosce anche tempo di dimezzamento '); writeln; writeln('atomi radioattivi parentali P =',p); writeln('atomi derivati filiali F =',f); writeln('tempo dimezzamento Td=',t:0:3); write('scrivi tempo trascorso :numero intero:');readln(te); if te=ts then begin writeln('esatto');esatte:=esatte+1;end else begin writeln('errato:era :',ts);errate:=errate+1;end; end;
procedure tempo1(p,f,ts:integer;t:real); begin clearscreen; writeln('indicare atomi radioattivi ancora presenti presenti'); writeln('conoscendo atomi derivati per decadimento,tempo trascorso'); writeln('si conosce anche tempo di dimezzamento '); writeln; writeln('atomi derivati filiali F =',f); writeln('tempo dimezzamento Td=',t:0:3); writeln('tempo trascorso t =',ts); write('scrivi atomi parentali presenti :numero intero:');readln(te); if te=p then begin writeln('esatto');esatte:=esatte+1;end else begin writeln('errato:era :',p);errate:=errate+1;end; end;
procedure formula(td,pa,fi:real); begin clearscreen; writeln('calcolo eta reperto in funzione di dati prefissati noti:'); writeln('tempo di dimezzamento ',td:0:5); writeln('atomi parentali residui ',pa:0:5); writeln('atomi filiali derivati ',fi:0:5); eta:=td/0.693; loga:=ln(1 +fi/pa); eta:=eta*loga; writeln('eta del reperto in funzione di dati noti = ',eta:0:5); end;
procedure formula1; var opzio:integer; begin clearscreen; writeln('calcolo eta reperto in funzione di dati da inserire:'); writeln('scrivi numeri interi o decimali ');writeln; write('tempo di dimezzamento ');readln(td); write('atomi parentali residui ');readln(pa); write('atomi filiali derivati ');readln(fi); eta:=td/0.693; loga:=ln(1 +fi/pa); eta:=eta*loga; writeln('eta del reperto in funzione di dati inseriti = ',eta:0:5);pausa; writeln; write('per altro calcolo premi 1...per fine premi 2 ');readln(opzio); if opzio = 1 then formula1; end;
procedure pro1; begin (* parentale,filiale,eta,tempo dimezzamento,p,f,ts,t *) tempo(500,500,100,100);pausa; tempo(250,750,200,100);pausa; tempo(750,250,50,100);pausa; tempo(2000,2000,100,100);pausa; tempo(20000,20000,200,200);pausa; tempo(15000,5000,200,400);pausa; tempo(5000,15000,800,400);pausa; tempo(25,75,80,40);pausa; writeln; tempo1(500,500,100,100);pausa; tempo1(250,750,200,100);pausa; tempo1(750,250,50,100);pausa; tempo1(1000,1000,100,100);pausa; tempo1(20000,20000,200,200);pausa; tempo1(15000,5000,200,400);pausa; tempo1(5000,15000,800,400);pausa; tempo1(25,75,80,40);pausa;
end;
procedure pro2; begin (* decadimento,radioattivo,derivato, s1,s2,s3 *) trasmuta('alfa','Ce(140,58)','Ba(136,56)'); trasmuta('alfa','Nd(144,60)','Ce(140,58)'); trasmuta('beta+','Eu(152,63)','Sm(152,62)'); trasmuta('beta-','Er(179,68)','Tm(179,69)'); trasmuta('alfa','U(238,92)','Th(234,90)'); trasmuta('beta-','U(239,92)','Np(239,93)'); trasmuta('beta-','Np(239,93)','Pu(239,94)'); trasmuta('cattura K','Pd(106,46)','Rh(106,45)'); trasmuta('beta+','Re(186,75)','W(186,74)'); trasmuta('beta-','Po(209,84)','At(209,85)'); end;
procedure pro3; begin (* decadimento,radioattivo,derivato,s1,s2,s3 *) trasmuta1('alfa','Ce(140,58)','Ba(136,56)'); trasmuta1('alfa','Nd(144,60)','Ce(140,58)'); trasmuta1('beta+','Eu(152,63)','Sm(152,62)'); trasmuta1('beta-','Er(179,68)','Tm(179,69)'); trasmuta1('alfa','U(238,92)','Th(234,90)'); trasmuta1('beta-','U(239,92)','Np(239,93)'); trasmuta1('beta-','Np(239,93)','Pu(239,94)'); trasmuta1('beta+','Pd(106,46)','Rh(106,45)'); trasmuta1('beta+','Re(186,75)','W(186,74)'); trasmuta1('beta-','Po(209,84)','At(209,85)'); end;
procedure pro4; begin (* proiettile,bersaglio,prodotto,emessa...s1,s2,s3,s4 *) collide('He(4,+2)','Ce(140,58)','Nd(143,60)','n(1,0)'); collide('He(4,+2)','Nd(144,60)','Pm(147,61)','p(1,+1)'); collide('p(1,+1)','Eu(152,63)','Gd(152,64)','n(1,0)'); collide('n(1,0)','Er(179,68)','Dy(176,66)','He(4,+2)'); collide('He(4,+2)','U(238,92)','Pu(241,94)','n(1,0)'); collide('n(1,0)','U(239,92)','Pa(239,91)','p(1,+1)'); collide('n(1,0)','Np(239,93)','Pa(236,91)','He(4,+2)'); collide('p(1,+1)','Pd(106,46)','Rh(103,45)','He(4,+2)'); collide('p(1,+1)','Re(186,75)','Os(186,76)','n(1,0)'); collide('He(4,+2)','Po(209,84)','At(212,85)','p(1,+1)'); end;
procedure pro5; begin (* proiettile,bersaglio,prodotto,emessa...s1,s2,s3,s4 *) collide1('alfa','Ce(140,58)','Nd(143,60)','n(1,0)'); collide1('alfa','Nd(144,60)','Pm(147,61)','p(1,+1)'); collide1('protone','Eu(152,63)','Gd(152,64)','n(1,0)'); collide1('neutrone','Er(179,68)','Dy(176,66)','He(4,+2)'); collide1('alfa','U(238,92)','Pu(241,94)','n(1,0)'); collide1('neutrone','U(239,92)','Pa(239,91)','p(1,+1)'); collide1('neutrone','Np(239,93)','Pa(236,91)','He(4,+2)'); collide1('protone','Pd(106,46)','Rh(103,45)','He(4,+2)'); collide1('protone','Re(186,75)','Os(186,76)','n(1,0)'); collide1('alfa','Po(209,84)','At(212,85)','p(1,+1)'); end;
procedure pro6; begin (* proiettile,bersaglio,prodotto,emessa...s1,s2,s3,s4 *) collide2('He(4,+2)','Ce(140,58)','Nd(143,60)','neutrone'); collide2('He(4,+2)','Nd(144,60)','Pm(147,61)','protone'); collide2('p(1,+1)','Eu(152,63)','Gd(152,64)','neutrone'); collide2('n(1,0)','Er(179,68)','Dy(176,66)','alfa'); collide2('He(4,+2)','U(238,92)','Pu(241,94)','neutrone'); collide2('n(1,0)','U(239,92)','Pa(239,91)','protone'); collide2('n(1,0)','Np(239,93)','Pa(236,91)','alfa'); collide2('p(1,+1)','Pd(106,46)','Rh(103,45)','alfa'); collide2('p(1,+1)','Re(186,75)','Os(186,76)','neutrone'); collide2('He(4,+2)','Po(209,84)','At(212,85)','protone'); end;
procedure pro7; begin (* tempo decadimento,parentali,filiale ,td,pa,fi *) formula(100,500,500);pausa; formula(100,750,250);pausa; formula(100,250,750);pausa; formula(100,5000,10000);pausa; formula(100,10000,5000);pausa; end;
procedure pro8; begin formula1; end;
procedure scelta; (* procedura con scelta opzioni e uscita *) var s,sn:string;opzione:integer; begin clearscreen; writeln('seleziona opzione :tempi DIMEZZAMENTO e REAZIONI NUCLEARI'); writeln('1...tempo di dimezzamento e calcolo eta reperto'); writeln('2...trasmutazione alfa,beta+,beta-,cattura K:scrivere prodotto'); writeln('3...trasmutazione:scrivere tipo di decadimento'); writeln('4...trasmutazione artificiale:scrivere nuclide prodotto'); writeln('5...trasmutazione artificiale:scrivere proiettile usato'); writeln('6...trasmutazione artificiale:scrivere particella emessa'); writeln('7...formula per calcolo eta reperto:dati prefissati '); writeln('8...formula per calcolo eta reperto:dati da fornire '); writeln('9...fine '); writeln('scelta =');readln(opzione);clearscreen; case opzione of 1:pro1; 2:pro2; 3:pro3; 4:pro4; 5:pro5; 6:pro6; 7:pro7; 8:pro8; 9:fine; end; writeln('risposte esatte =',esatte); writeln('risposte errate =',errate); writeln('altra operazione?Esperimenti?:premi S...fine:premi N '); readln(sn); if sn='S' then scelta ; end;
begin (* programma di lancio *) clearscreen; esatte:=0;errate:=0; scelta; writeln('risposte esatte =',esatte); writeln('risposte errate =',errate); pausa; end.