esercizi di chimica con turbo pascal 1.1 su mac
Program decade; (* esempi di decadimenti nucleari DIMOSTRATIVO *) const k=96; VAR n:array[1..k] of string; p:array[1..k] of integer; e:array[1..k] of integer; a,x,q,quanti:integer;
procedure datin; (* simbolo,massa atomica A,numero atomico Z *)
begin n[1]:='H';p[1]:=1;e[1]:=1; n[2]:='He';p[2]:=4;e[2]:=2; n[3]:='Li';p[3]:=7;e[3]:=3; n[4]:='Be';p[4]:=9;e[4]:=4; n[5]:='B';p[5]:=11;e[5]:=5; n[6]:='C';p[6]:=12;e[6]:=6; n[7]:='N';p[7]:=14;e[7]:=7; n[8]:='O';p[8]:=16;e[8]:=8; n[9]:='F';p[9]:=19;e[9]:=9; n[10]:='Ne';p[10]:=20;e[10]:=10; n[11]:='Na';p[11]:=23;e[11]:=11; n[12]:='Mg';p[12]:=24;e[12]:=12; n[13]:='Al';p[13]:=27;e[13]:=13; n[14]:='Si';p[14]:=28;e[14]:=14; n[15]:='P';p[15]:=31;e[15]:=15; n[16]:='S';p[16]:=32;e[16]:=16; n[17]:='Cl';p[17]:=35;e[17]:=17; n[18]:='Ar';p[18]:=40;e[18]:=18; n[19]:='K';p[19]:=39;e[19]:=19; n[20]:='Ca';p[20]:=40;e[20]:=20; n[21]:='Sc';p[21]:=45;e[21]:=21; n[22]:='Ti';p[22]:=48;e[22]:=22; n[23]:='V';p[23]:=51;e[23]:=23; n[24]:='Cr';p[24]:=52;e[24]:=24; n[25]:='Mn';p[25]:=55;e[25]:=25; n[26]:='Fe';p[26]:=56;e[26]:=26; n[27]:='Co';p[27]:=59;e[27]:=27; n[28]:='Ni';p[28]:=59;e[28]:=28; n[29]:='Cu';p[29]:=64;e[29]:=29; n[30]:='Zn';p[30]:=65;e[30]:=30; n[31]:='Ga';p[31]:=70;e[31]:=31; n[32]:='Ge';p[32]:=73;e[32]:=32; n[33]:='As';p[33]:=75;e[33]:=33; n[34]:='Se';p[34]:=79;e[34]:=34; n[35]:='Br';p[35]:=80;e[35]:=35; n[36]:='Kr';p[36]:=84;e[36]:=36; n[37]:='Rb';p[37]:=85;e[37]:=37; n[38]:='Sr';p[38]:=88;e[38]:=38; n[39]:='Y';p[39]:=89;e[39]:=39; n[40]:='Zr';p[40]:=91;e[40]:=40; n[41]:='Nb';p[41]:=93;e[41]:=41; n[42]:='Mo';p[42]:=96;e[42]:=42; n[43]:='Tc';p[43]:=99;e[43]:=43; n[44]:='Ru';p[44]:=101;e[44]:=44; n[45]:='Rh';p[45]:=103;e[45]:=45; n[46]:='Pd';p[46]:=106;e[46]:=46; n[47]:='Ag';p[47]:=108;e[47]:=47; n[48]:='Cd';p[48]:=112;e[48]:=48; n[49]:='In';p[49]:=115;e[49]:=49; n[50]:='Sn';p[50]:=119;e[50]:=50; n[51]:='Sb';p[51]:=122;e[51]:=51; n[52]:='Te';p[52]:=128;e[52]:=52; n[53]:='I';p[53]:=127;e[53]:=53; n[54]:='Xe';p[54]:=131;e[54]:=54; n[55]:='Cs';p[55]:=133;e[55]:=55; n[56]:='Ba';p[56]:=137;e[56]:=56; n[57]:='La';p[57]:=139;e[57]:=57; n[58]:='Ce';p[58]:=140;e[58]:=58; n[59]:='Pr';p[59]:=141;e[59]:=59; n[60]:='Nd';p[60]:=144;e[60]:=60; n[61]:='Pm';p[61]:=145;e[61]:=61; n[62]:='Sm';p[62]:=150;e[62]:=62; n[63]:='Eu';p[63]:=152;e[63]:=63; n[64]:='Gd';p[64]:=157;e[64]:=64; n[65]:='Tb';p[65]:=159;e[65]:=65; n[66]:='Dy';p[66]:=162;e[66]:=66; n[67]:='Ho';p[67]:=165;e[67]:=67; n[68]:='Er';p[68]:=167;e[68]:=68; n[69]:='Tm';p[69]:=169;e[69]:=69; n[70]:='Yb';p[70]:=173;e[70]:=70; n[71]:='Lu';p[71]:=174;e[71]:=71; n[72]:='Hf';p[72]:=178;e[72]:=72; n[73]:='Ta';p[73]:=181;e[73]:=73; n[74]:='W';p[74]:=184;e[74]:=74; n[75]:='Re';p[75]:=186;e[75]:=75; n[76]:='Os';p[76]:=190;e[76]:=76; n[77]:='Ir';p[77]:=192;e[77]:=77; n[78]:='Pt';p[78]:=195;e[78]:=78; n[79]:='Au';p[79]:=197;e[79]:=79; n[80]:='Hg';p[80]:=201;e[80]:=80; n[81]:='Tl';p[81]:=204;e[81]:=81; n[82]:='Pb';p[82]:=207;e[82]:=82; n[83]:='Bi';p[83]:=209;e[83]:=83; n[84]:='Po';p[84]:=209;e[84]:=84; n[85]:='At';p[85]:=210;e[85]:=85; n[86]:='Rn';p[86]:=222;e[86]:=86; n[87]:='Fr';p[87]:=223;e[87]:=87; n[88]:='Ra';p[88]:=226;e[88]:=88; n[89]:='Ac';p[89]:=227;e[89]:=89; n[90]:='Th';p[90]:=232;e[90]:=90; n[91]:='Pa';p[91]:=231;e[91]:=91; n[92]:='U';p[92]:=238;e[92]:=92; n[93]:='Np';p[93]:=239;e[93]:=93; n[94]:='Pu';p[94]:=239;e[94]:=94; n[95]:='Am';p[95]:=243;e[95]:=95; n[96]:='Cm';p[96]:=247;e[96]:=96; end;
procedure cancella; begin clearscreen; end;
procedure pausa; begin writeln('premi ENTER ');readln; end;
procedure fine; (* conferma uscita operazione *) begin writeln('fine operazione:confermare :premi enter'); readln; end;
procedure cerca; begin repeat write('indica da quale nuclide cercare ,maggiore di 5 :inizio ');readln(q); until q>5; repeat writeln('indica quanti nuclidi cercare:numero inferiore a 96 - inizio '); readln(quanti);until quanti<96-q; cancella; end;
procedure descrive; begin writeln('visualizzazione automatica reazioni di decadimento di nuclidi'); writeln('limitatamente a nuclidi da Z=5 a Z =96 '); writeln('possibile selezionare decadimento alfa,beta+,beta-,cattura k'); writeln('possibile selezionare nuclidi da osservare,assegnando il '); writeln('numero Z dal quale iniziare e il numero di nuclidi successivi'); writeln('da considerare:es. inizio da 10 e cerca per 20 nuclidi '); writeln('non uscire dai limiti :leggere bene le richieste in input '); pausa; end;
procedure attiva2; begin cerca; datin; writeln('decadimento beta negativo:viene emesso un elettrone negativo '); writeln('generato da un NEUTRONE che diventa un PROTONE '); writeln('numero atomico aumenta da Z a Z+1 cambia simbolo nuclide'); writeln('numero di massa rimane immutato A '); writeln('X (A,Z) -------> Y (A,Z+1) + elettrone + antineutrino '); writeln;pausa;cancella; for a:=1 to quanti do begin x:=q+a; writeln('nuclide che decade ',n[x]:8,' Z = ':8,e[x],' A = ',p[x]); writeln('nuclide derivato ',n[x+1]:8,' Z = ':8,e[x+1],' A = ',p[x]); writeln; writeln(n[x],'(',p[x],',',e[x],') ---->',n[x+1],'(',p[x],',', e[x+1],') + elettrone + antineutrino'); pausa; end; pausa; end;
procedure attiva3; begin cerca; datin; writeln('decadimento beta positivo:viene emesso un elettrone positivo '); writeln('generato da un PROTONE che diventa un NEUTRONE '); writeln('numero atomico diminuisce da Z a Z-1 cambia simbolo nuclide'); writeln('numero di massa rimane immutato A '); writeln('X (A,Z) -------> Y (A,Z-1) + elettrone + antineutrino '); writeln;pausa;cancella; for q:=1 to quanti do begin x:=q+a; writeln('nuclide che decade ',n[x]:8,' Z = ':8,e[x],' A = ',p[x]); writeln('nuclide derivato ',n[x-1]:8,' Z = ':8,e[x-1],' A = ',p[x]); writeln; writeln(n[x],'(',p[x],',',e[x],') ---->',n[x-1],'(',p[x],',', e[x-1],') + positrone + neutrino'); pausa; end; pausa; end;
procedure attiva4; begin cerca; datin; writeln('decadimento alfa:viene emesso nucleo di elio He(4,+2) '); writeln('numero atomico diminuisce da Z a Z-2 cambia simbolo nuclide'); writeln('numero di massa diminuisce da A a A-4 '); writeln('X (A,Z) -------> Y (A-4,Z-2) + alfa '); writeln;pausa;cancella; for a:=1 to quanti do begin x:=q+a; writeln('nuclide che decade ',n[x]:8,' Z = ':8,e[x],' A = ',p[x]); writeln('nuclide derivato ',n[x-2]:8,' Z = ':8,e[x-2],' A = ',(p[x]-4)); writeln; writeln(n[x],'(',p[x],',',e[x],') ---->',n[x-2],'(',(p[x]-4),',', e[x-2],') + alfa'); pausa; end; pausa; end;
procedure attiva5; begin cerca; datin; writeln('cattura elettrone livello K '); writeln('un PROTONE diventa un NEUTRONE '); writeln('numero atomico diminuisce da Z a Z-1 cambia simbolo nuclide'); writeln('numero di massa rimane immutato A '); writeln('X (A,Z) + e -------> Y (A,Z-1) '); writeln;pausa;cancella; for a:=1 to quanti do begin x:=q+a; writeln('nuclide che decade ',n[x]:8,' Z = ':8,e[x],' A = ',p[x]); writeln('nuclide derivato ',n[x-1]:8,' Z = ':8,e[x-1],' A = ',p[x]); writeln; writeln(n[x],'(',p[x],',',e[x],') + ek ---->',n[x-1],'(',p[x],',', e[x-1],')'); pausa; end; pausa; end;
procedure pro1; begin descrive; end;
procedure pro2; begin attiva2; end;
procedure pro3; begin attiva3; end;
procedure pro4; begin attiva4; end;
procedure pro5; begin attiva5; 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...decrizione'); writeln('2...decadimento beta negativo '); writeln('3...decadimento beta positivo '); writeln('4...decadimento alfa '); writeln('5...cattura elettrone livello K '); writeln('9...fine '); writeln('scelta =');readln(opzione);cancella; case opzione of 1:pro1; 2:pro2; 3:pro3; 4:pro4; 5:pro5; 9:fine; end; writeln('altra operazione?Esperimenti?:premi S...fine:premi N '); readln(sn); if sn='S' then scelta ; end;
begin (* programma di lancio *) clearscreen; scelta; end.