stechiometria
esci chimicaturbo.htm
NaOH + HCl >> NaCl +H2O
NaOH + HCl >>> H2O + NaCl
Program stechi3;
(* problemi di stechiometria solo
con GRAMMI o LITRI *)
uses crt;
VAR gn,pn,cn,tn,n,a,vn:integer;
cx :array[1..5] of integer;
px :array[1..5] of integer;
tx :array[1..5] of integer;
gx :array[1..5] of real;
procedure pausa;
begin
writeln('premi ENTER ');readln;
end;
procedure fine; (* conferma uscita operazione *)
begin
writeln('fine operazione:confermare :premi enter');
readln;
end;
procedure testo1;
begin
writeln('passa a chiedere sostanza nota in grammi ');
writeln('peso molecolare e coefficiente stechiometrico ');
end;
procedure testo1v;
begin
writeln('passa a chiedere sostanza nota in litri. ');
end;
procedure testo2;
begin
writeln;
writeln('passa a chiedere PESI MOLECOLARI e COEFFICIENTI
stechiometrici');
writeln('delle sostanze incognite,in ordine,da sinistra a destra
');
writeln('CALCOLA prodotto tra coefficiente e peso molecolare G =
c * pm ');
writeln;
end;
procedure testo2v;
begin
writeln;
writeln('passa a chiedere COEFFICIENTI stechiometrici ');
writeln('delle sostanze incognite,in ordine,da sinistra a destra
');
writeln('CALCOLA prodotto tra coefficiente e volume molecolare G
= c * vn ');
writeln;
end;
procedure testo3;
begin
writeln('------------------------------------------------');
writeln('calcola grammi di sostanze richieste e ottenute ');
end;
procedure testo3v;
begin
writeln('------------------------------------------------');
writeln('calcola volume di sostanze richieste e ottenute ');
end;
procedure totale1; (* calcola grammi stechiometrici noti *)
begin
tn:=pn*cn;
writeln('grammi stechiometrici sostanza nota = tn:=pn*cn; ',tn);
end;
procedure totale1v; (* calcola litri stechiometrici noti *)
begin
tn:=vn*cn;
writeln('volume in litri. stechiometrici sostanza nota =
tn:=vn*cn; ',tn);
end;
procedure totale2(n:integer); (* calcola grammi stechiometrici
incognite *)
begin
for a:=1 to n do
begin
tx[a]:=px[a]*cx[a];
writeln('grammi stechiometrici sostanza ',a,'...',tx[a]);
end;
end;
procedure totale2v(n:integer); (* calcola litri stechiometrici
incognite *)
begin
for a:=1 to n do
begin
tx[a]:=vn*cx[a];
writeln('volume in litri.stechiometrici sostanza
',a,'...',tx[a]);
end;
end;
procedure dati1; (* chiede dati sostanza nota *)
begin
testo1;
write('grammi noti di una sostanza =');readln(gn);
write('peso molecolare della sostanza= ');readln(pn);
write('coefficiente stechiometrico della sostanza =
');readln(cn);
totale1;
end;
procedure dati1v; (* chiede dati sostanza nota *)
begin
testo1v;
write('volume in litri. noti di una sostanza =');readln(gn);
write('coefficiente stechiometrico della sostanza =');readln(cn);
totale1v;
end;
procedure dati2(n:integer); (* chiede dati incognite *)
begin
testo2;
for a:=1 to n do
begin
write('peso molecolare sostanza ',a,'...');readln(px[a]);
write('coefficiente sostanza ',a,'...');readln(cx[a]);
end;
totale2(n);
end;
procedure dati2v(n:integer); (* chiede dati incognite *)
begin
testo2v;
for a:=1 to n do
begin
write('coefficiente sostanza ',a,'...');readln(cx[a]);
end;
totale2v(n);
end;
procedure calcola1(n:integer); (* calcola grammi sostanze
incognite *)
begin
testo3;
writeln('--------------------------------------------------');
for a:=1 to n do
begin
gx[a]:=gn*tx[a]/tn;
writeln('grammi sostanza gx[a]:=gn*tx[a]/tn;
',a,'...',gx[a]:8:5);
end;
end;
procedure calcola1v(n:integer); (* calcola grammi sostanze
incognite *)
begin
testo3v;
writeln('--------------------------------------------------');
for a:=1 to n do
begin
gx[a]:=gn*tx[a]/tn;
writeln('volume sostanza gx[a]:=gn*tx[a]/tn;
',a,'...',gx[a]:8:5);
end;
end;
procedure pro1;
begin
dati1;dati2(n);calcola1(n);pausa;
end;
procedure pro2;
begin
dati1v;dati2v(n);calcola1v(n);pausa;
end;
procedure scelta; (* procedura con scelta opzioni e uscita *)
label salta;
var s,sn:string;opzione:integer;
begin
clrscr;
writeln('seleziona opzione possibili tipi di problemi:');
writeln('SINTESI.DECOMPOSIZIONE .COMBINAZIONE ');
writeln('nota per inserimento dati:');
writeln('inserire prima i dati della sostanza di massa o volume
noti');
writeln('inserire poi in ordine,da sinistra a destra,i dati delle
altre');
writeln('sostanze,prima,seconda,terza,quarta..come richiesto');
writeln('es.nella reazione HCl + NaOH -----> NaCl + H2O ');
writeln('se HCl risulta = 100 grammi ');
writeln('le altre sostanze,reagenti e prodotti,sono denominate
come ');
writeln('NaOH=sostanza1..NaCl=sostanza2..H20=sostanza3 ');
writeln('-----------------------------------------------------------');
writeln('viene inoltre chiesto di indicare il numero di sostanze
');
writeln('presenti nella reazione:es.precedente = 4 ');
pausa;clrscr;
writeln('REAGENTI e PRODOTTI espressi in GRAMMI ');
writeln('nota massa in grammi di una sostanza,calcola masse delle
altre');
writeln('-------------------------------------------------------------');
writeln('1...aA + bB -------> cAB ');
writeln('1...cAB -------> aA + bB ');
writeln('1...aA + bB -------> cC + dD ');
writeln('-------------------------------------------------------------');
writeln('REAGENTI e PRODOTTI espressi in VOLUMI in litri');
writeln('noto volume di una sostanza,calcola volumi delle altre
');
writeln('2..aA + bB --------> cAB ');
writeln('2..cAB --------> aA + bB ');
writeln('2..aA + bB --------> cC + dD ');
writeln('------------------------------------------------------------');
writeln('9...fine ');
writeln('scelta =');readln(opzione);
if opzione=9 then goto salta;
repeat
write('scrivi numero sostanze presenti nella reazione :1,2,3,5
');readln(n);
until ((n<6) and (n>1));
n:=n-1;
clrscr;
case opzione of
1:pro1;
2:pro2;
9:fine;
end;
salta:
writeln('altra operazione?Esperimenti?:premi S...fine:premi N ');
readln(sn);
if sn='S' then scelta ;
end;
begin (* programma di lancio *)
clrscr;
vn:=22;
scelta;
end.