esercitazione su calcoli chimici a livello didattico-dimostrativo

tabella valori memorizzata in listato e richiamata

 

program tabula1;
(* richiama tabella elementi con simboli,pesi atomici,elettronegativita*)
uses crt;
const k=92;


var s,h1,va,indice:integer;
    n:array[1..k] of string;
    p:array[1..k] of integer;
    e:array[1..k] of real;
    sh:array[1..4] of string;
    h:array[1..4] of integer;
    p1,pm,pm1,moli,g,pe:real;
    s1:string;


procedure dati;
begin
n[1]:='H';p[1]:=1;e[1]:=2.1;
n[2]:='He';p[2]:=4;e[2]:=0;
n[3]:='Li';p[3]:=7;e[3]:=1;
n[4]:='Be';p[4]:=9;e[4]:=1.5;
n[5]:='B';p[5]:=11;e[5]:=2;
n[6]:='C';p[6]:=12;e[6]:=2.5;
n[7]:='N';p[7]:=14;e[7]:=3;
n[8]:='O';p[8]:=16;e[8]:=3.5;
n[9]:='F';p[9]:=19;e[9]:=4;
n[10]:='Ne';p[10]:=20;e[10]:=0;
n[11]:='Na';p[11]:=23;e[11]:=0.9;
n[12]:='Mg';p[12]:=24;e[12]:=1.2;
n[13]:='Al';p[13]:=27;e[13]:=1.5;
n[14]:='Si';p[14]:=28;e[14]:=1.8;
n[15]:='P';p[15]:=31;e[15]:=2.1;
n[16]:='S';p[16]:=32;e[16]:=2.5;
n[17]:='Cl';p[17]:=35;e[17]:=3;
n[18]:='Ar';p[18]:=40;e[18]:=0;
n[19]:='K';p[19]:=39;e[19]:=0.8;
n[20]:='Ca';p[20]:=40;e[20]:=1;
n[21]:='Sc';p[21]:=45;e[21]:=1.3;
n[22]:='Ti';p[22]:=48;e[22]:=1.6;
n[23]:='V';p[23]:=51;e[23]:=1.6;
n[24]:='Cr';p[24]:=52;e[24]:=1.6;
n[25]:='Mn';p[25]:=55;e[25]:=1.5;
n[26]:='Fe';p[26]:=56;e[26]:=1.8;
n[27]:='Co';p[27]:=59;e[27]:=1.8;
n[28]:='Ni';p[28]:=59;e[28]:=1.8;
n[29]:='Cu';p[29]:=64;e[29]:=1.9;
n[30]:='Zn';p[30]:=65;e[30]:=1.6;
n[31]:='Ga';p[31]:=70;e[31]:=1.6;
n[32]:='Ge';p[32]:=73;e[32]:=1.8;
n[33]:='As';p[33]:=75;e[33]:=2;
n[34]:='Se';p[34]:=79;e[34]:=2.4;
n[35]:='Br';p[35]:=80;e[35]:=2.8;
n[36]:='Kr';p[36]:=84;e[36]:=0;
n[37]:='Rb';p[37]:=85;e[37]:=0.8;
n[38]:='Sr';p[38]:=88;e[38]:=1;
n[39]:='Y';p[39]:=89;e[39]:=1.2;
n[40]:='Zr';p[40]:=91;e[40]:=1.4;
n[41]:='Nb';p[41]:=93;e[41]:=1.6;
n[42]:='Mo';p[42]:=96;e[42]:=1.8;
n[43]:='Tc';p[43]:=99;e[43]:=1.9;
n[44]:='Ru';p[44]:=101;e[44]:=2.2;
n[45]:='Rh';p[45]:=103;e[45]:=2.2;
n[46]:='Pd';p[46]:=106;e[46]:=2.2;
n[47]:='Ag';p[47]:=108;e[47]:=1.9;
n[48]:='Cd';p[48]:=112;e[48]:=1.7;
n[49]:='In';p[49]:=115;e[49]:=1.7;
n[50]:='Sn';p[50]:=119;e[50]:=1.8;
n[51]:='Sb';p[51]:=122;e[51]:=1.9;
n[52]:='Te';p[52]:=128;e[52]:=2.1;
n[53]:='I';p[53]:=127;e[53]:=2.5;
n[54]:='Xe';p[54]:=131;e[54]:=0;
n[55]:='Cs';p[55]:=133;e[55]:=0.7;
n[56]:='Ba';p[56]:=137;e[56]:=0.9;
n[57]:='La';p[57]:=139;e[57]:=1.1;
n[58]:='Ce';p[58]:=140;e[58]:=1.1;
n[59]:='Pr';p[59]:=141;e[59]:=1.1;
n[60]:='Nd';p[60]:=144;e[60]:=1.2;
n[61]:='Pm';p[61]:=145;e[61]:=1.2;
n[62]:='Sm';p[62]:=150;e[62]:=1.2;
n[63]:='Eu';p[63]:=152;e[63]:=1.2;
n[64]:='Gd';p[64]:=157;e[64]:=1.1;
n[65]:='Tb';p[65]:=159;e[65]:=1.2;
n[66]:='Dy';p[66]:=162;e[66]:=1.2;
n[67]:='Ho';p[67]:=165;e[67]:=1.2;
n[68]:='Er';p[68]:=167;e[68]:=1.2;
n[69]:='Tm';p[69]:=169;e[69]:=1.2;
n[70]:='Yb';p[70]:=173;e[70]:=1.1;
n[71]:='Lu';p[71]:=174;e[71]:=1.2;
n[72]:='Hf';p[72]:=178;e[72]:=1.3;
n[73]:='Ta';p[73]:=181;e[73]:=1.5;
n[74]:='W';p[74]:=184;e[74]:=1.7;
n[75]:='Re';p[75]:=186;e[75]:=1.9;
n[76]:='Os';p[76]:=190;e[76]:=2.2;
n[77]:='Ir';p[77]:=192;e[77]:=2.2;
n[78]:='Pt';p[78]:=195;e[78]:=2.2;
n[79]:='Au';p[79]:=197;e[79]:=2.4;
n[80]:='Hg';p[80]:=201;e[80]:=1.9;
n[81]:='Tl';p[81]:=204;e[81]:=1.8;
n[82]:='Pb';p[82]:=207;e[82]:=1.8;
n[83]:='Bi';p[83]:=209;e[83]:=1.9;
n[84]:='Po';p[84]:=209;e[84]:=2;
n[85]:='At';p[85]:=210;e[85]:=2.2;
n[86]:='Rn';p[86]:=222;e[86]:=0;
n[87]:='Fr';p[87]:=223;e[87]:=0.7;
n[88]:='Ra';p[88]:=226;e[88]:=0.9;
n[89]:='Ac';p[89]:=227;e[89]:=1.1;
n[90]:='Th';p[90]:=232;e[90]:=1.3;
n[91]:='Pa';p[91]:=231;e[91]:=1.5;
n[92]:='U';p[92]:=238;e[92]:=1.7;
end;


procedure fine;
begin
writeln('premi enter');
readln;
end;

procedure pausa;
begin
writeln('premi ENTER per proseguire ');readln;
end;

procedure calcola(s1:string;h1:integer);
var a:integer;
begin
p1:=0;
writeln('peso atomico':20,'peso*indice':20,'somma pesi*indici':20);
writeln;
for a:=1 to k do
begin
if n[a]=s1 then begin 
p1:=p[a]*h1;
pm:=pm+p1;
writeln(p[a]:20,p1:20:2,pm:20:2);
end
else
end;
end;


procedure pro1;
var a,inizio,termine:integer;
begin
dati;
write('scrivi numero atomico dal quale iniziare 1..2..92..');readln(inizio);
write('scrivi numero atomico al quale finire ...1..2..92..');readln(termine);
clrscr;
writeln('Z=':10,'simbolo':20,'massa atomica':20,'elettronegativita':20);
writeln;
for a:=inizio to termine do
writeln(a:10,n[a]:20,p[a]:20,e[a]:20:2);
end;

procedure pro2; (* calcola peso molecolare *)
var ne,a:integer;
begin
write('scrivi numero elementi presenti ');readln(ne);
writeln('inserire simboli presenti nella formula');
writeln('per ogni simbolo,scrivere numero totale atomi presenti');
writeln('se uno solo,scrivere 1....');
writeln('es.CaS...Ca=1..S=1....Ca(NO3)2...Ca=1...N=2...O=6 ');
writeln;
dati;
for a:=1 to ne do
begin
write('simbolo elemento=');readln(sh[a]);
write('indice  elemento=');readln(h[a]);
writeln;
calcola(sh[a],h[a]);
end;
writeln;
writeln('peso molecolare = ',pm:8:2);
pm1:=pm;
pm:=0;
end;

procedure pro2a; (* calcola peso molecolare o equivalente*)
var ne,a:integer;
begin
write('scrivi numero elementi presenti ');readln(ne);
writeln('inserire simboli presenti nella formula');
writeln('per ogni simbolo,scrivere numero totale atomi presenti');
writeln('se uno solo,scrivere 1....');
writeln('es.CaS...Ca=1..S=1....Ca(NO3)2...Ca=1...N=2...O=6 ');
writeln;
dati;
for a:=1 to ne do
begin
write('simbolo elemento=');readln(sh[a]);
write('indice  elemento=');readln(h[a]);
writeln;
calcola(sh[a],h[a]);
end;
writeln;
write('valore per denominatore..valenza..');readln(va);
pe:=pm/va;
writeln('peso equivalente = ',pm/va:8:2);
if indice=1 then writeln('numero equivalenti=',(g/pe):8:2);
pm1:=pm;
pm:=0;
end;

procedure pro3;
begin
write('scrivi grammi composto  ');readln(g);
writeln('moli = grammi/peso molecolare ');
writeln('passa a chiedere formula e calcola peso molecolare ');
writeln;
pro2;
moli:=g/pm1;
writeln('moli=grammi/peso molecolare ',moli:8:2);
end;

procedure pro4;
begin
writeln('peso equivalente ELEMENTO   = peso atomico/valenza ');
writeln('peso equivalente ACIDO      = peso molecolare/numero H+  ');
writeln('peso equivalente IDROSSIDO  = peso molecolare/numero OH-  ');
writeln('peso equivalente OSSIDO     = peso molecolare/valenza*indice Met.');
writeln('peso equivalente SALE       = peso formula/cariche + o - ');
writeln('peso equivalente REDOX      = peso molecolare/elettroni trasferiti ');
writeln('-----------------------------------------------------------------');
writeln('si deve indicare simbolo o formula con indici ');
writeln('si deve indicare il valore da assegnare al denominatore ');
writeln('-----------------------------------------------------------------');
pausa;
pro2a;
end;

procedure pro5;
begin
writeln('numero equivalenti=grammi/peso equivalente ');
write('scrivi numero grammi composto o elemento ');readln(g);
writeln('inserisci simboli e indici per elemento o composto');
writeln('poi calcola peso equivalente ed esegui il rapporto');
pausa;
indice:=1;
pro4;
indice:=0;
end;

procedure scelta;
var ancora:integer;
begin
clrscr;
writeln('seleziona tipo problema ');
writeln('1...stampa tabella elementi');
writeln('2...calcolo peso molecolare composto da indicare');
writeln('3...calcolo moli presenti in grammi di composto');
writeln('4...calcolo peso equivalente di atomi o composti ');
writeln('5...calcolo equivalenti presenti in grammi di composto o elemento');
writeln('9...fine ');
write('opzione=');readln(s);
clrscr;
case s of
1:pro1;
2:pro2;
3:pro3;
4:pro4;
5:pro5;
9:fine;
end;
writeln('----------------------------');
writeln('altro problema:scrivi 1...fine:scrivi 2 ');readln(ancora);
if ancora =1 then scelta else fine;
end;


begin
clrscr;
pm:=0;
writeln('funzione programma:utilizzare tabella elementi');
writeln('---------------------------------------------------');
writeln('premi enter');readln;
scelta;
end.

 

indice