equilibrio dinamico

esci chimicaturbo.htm

Program costa2;
(* problemi su costante equilibrio Kc e variazioni di concentrazione *)
(* DIMOSTRATIVO e INTERATTIVO *)

(* equilibrio con 2 reagenti e 2 prodotti:dai prefissati *)
(* equilibrio con x reagenti e y prodotti :dati da inserire *)
uses crt;
VAR mr1,mr2,mp1,mp2,ke,k1,k2,k3,k4:real;
cr1,cr2,cp1,cp2:integer;
a:integer;


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

procedure fine; (* conferma uscita operazione *)
begin
writeln('fine operazione:confermare :premi enter');
readln;
end;

function potenza(x:real;es:integer):real;
var
lo:real;
begin
lo:=es*ln(x);
potenza:=exp(lo);
end;

procedure dati1;
begin
write('molarita REATTIVO1 ');readln(mr1);
write('coefficiente reattivo1 ');readln(cr1);
write('molarita REATTIVO2 ');readln(mr2);
write('coefficiente reattivo2 ');readln(cr2);
write('molarita PRODOTTO1 ');readln(mp1);
write('coefficiente prodotto1 ');readln(cp1);
write('molarita PRODOTTO2 ');readln(mp2);
write('coefficiente prodotto2 ');readln(cp2);
writeln('--------------------------------------------');
end;

procedure dati6;
begin
write('molarita REATTIVO1 ');readln(mr1);
write('coefficiente reattivo1 ');readln(cr1);
write('molarita REATTIVO2 ');readln(mr2);
write('coefficiente reattivo2 ');readln(cr2);
write('molarita PRODOTTO1 ');readln(mp1);
write('coefficiente prodotto1 ');readln(cp1);
writeln('--------------------------------------------');
end;

procedure dati7;
begin
write('molarita REATTIVO1 ');readln(mr1);
write('coefficiente reattivo1 ');readln(cr1);
write('molarita PRODOTTO1 ');readln(mp1);
write('coefficiente prodotto1 ');readln(cp1);
write('molarita PRODOTTO2 ');readln(mp2);
write('coefficiente prodotto2 ');readln(cp2);
writeln('--------------------------------------------');
end;

procedure dati8;
begin
write('molarita REATTIVO1 ');readln(mr1);
write('coefficiente reattivo1 ');readln(cr1);
write('molarita PRODOTTO1 ');readln(mp1);
write('coefficiente prodotto1 ');readln(cp1);
writeln('--------------------------------------------');
end;

procedure costante;
var n1,d1:real;
sistema:string;
begin
writeln('stampa concentrazioni molari elevate ad esponente stechiometrico');
k1:=potenza(mr1,cr1);writeln('REATTIVO1 ',k1:8:5);
k2:=potenza(mr2,cr2);writeln('REATTIVO2 ',k2:8:5);
writeln;
k3:=potenza(mp1,cp1);writeln('PRODOTTO1 ',k3:8:5);
k4:=potenza(mp2,cp2);writeln('PRODOTTO2 ',k4:8:5);
d1:=k1*k2;
n1:=k3*k4;
ke:=n1/d1;
writeln('prodotto a numeratore = ',n1:8:5);
writeln('prodotto a denominatore = ',d1:8:5);
writeln('-----------------------------------------------------');
writeln('costante Ke = n1/d1 = ',ke:8:5);
if (ke>1) then sistema:='spostato verso prodotti di reazione';
if (ke<1) then sistema:='spostato verso reagenti';
if (ke=1) then sistema:='equilibrio indifferente';
writeln('situazione allo equilibrio :',sistema);
writeln('-----------------------------------------------------');
end;

procedure costante6;
var n1,d1:real;
sistema:string;
begin
writeln('stampa concentrazioni molari elevate ad esponente stechiometrico');
k1:=potenza(mr1,cr1);writeln('REATTIVO1 ',k1:8:5);
k2:=potenza(mr2,cr2);writeln('REATTIVO2 ',k2:8:5);
writeln;
k3:=potenza(mp1,cp1);writeln('PRODOTTO1 ',k3:8:5);
d1:=k1*k2;
n1:=k3;
ke:=n1/d1;
writeln('prodotto a numeratore = ',n1:8:5);
writeln('prodotto a denominatore = ',d1:8:5);
writeln('-----------------------------------------------------');
writeln('costante Ke = n1/d1 = ',ke:8:5);
if (ke>1) then sistema:='spostato verso prodotti di reazione';
if (ke<1) then sistema:='spostato verso reagenti';
if (ke=1) then sistema:='equilibrio indifferente';
writeln('situazione allo equilibrio :',sistema);
writeln('-----------------------------------------------------');
end;

procedure costante7;
var n1,d1:real;
sistema:string;
begin
writeln('stampa concentrazioni molari elevate ad esponente stechiometrico');
k1:=potenza(mr1,cr1);writeln('REATTIVO1 ',k1:8:5);
writeln;
k3:=potenza(mp1,cp1);writeln('PRODOTTO1 ',k3:8:5);
k4:=potenza(mp2,cp2);writeln('PRODOTTO2 ',k4:8:5);
d1:=k1;
n1:=k3*k4;
ke:=n1/d1;
writeln('prodotto a numeratore = ',n1:8:5);
writeln('prodotto a denominatore = ',d1:8:5);
writeln('-----------------------------------------------------');
writeln('costante Ke = n1/d1 = ',ke:8:5);
if (ke>1) then sistema:='spostato verso prodotti di reazione';
if (ke<1) then sistema:='spostato verso reagenti';
if (ke=1) then sistema:='equilibrio indifferente';
writeln('situazione allo equilibrio :',sistema);
writeln('-----------------------------------------------------');
end;

procedure costante8;
var n1,d1:real;
sistema:string;
begin
writeln('stampa concentrazioni molari elevate ad esponente stechiometrico');
k1:=potenza(mr1,cr1);writeln('REATTIVO1 ',k1:8:5);
writeln;
k3:=potenza(mp1,cp1);writeln('PRODOTTO1 ',k3:8:5);
d1:=k1;
n1:=k3;
ke:=n1/d1;
writeln('prodotto a numeratore = ',n1:8:5);
writeln('prodotto a denominatore = ',d1:8:5);
writeln('-----------------------------------------------------');
writeln('costante Ke = n1/d1 = ',ke:8:5);
if (ke>1) then sistema:='spostato verso prodotti di reazione';
if (ke<1) then sistema:='spostato verso reagenti';
if (ke=1) then sistema:='equilibrio indifferente';
writeln('situazione allo equilibrio :',sistema);
writeln('-----------------------------------------------------');
end;

procedure dati2;
begin
mr1:=0.5;cr1:=2;mr2:=0.5;cr2:=2;
mp1:=0.5;cp1:=2;mp2:=0.5;cp2:=2;
writeln('dati noti per calcolare costante Ke ');writeln;
writeln('molarita REATTIVO1 =',mr1:8:5);
writeln('coefficiente reattivo1 =',cr1);
writeln('molarita REATTIVO2 =',mr2:8:5);
writeln('coefficiente reattivo2 =',cr2);
writeln('molarita PRODOTTO1 =',mp1:8:5);
writeln('coefficiente prodotto1 =',cp1);
writeln('molarita PRODOTTO2 =',mp2:8:5);
writeln('coefficiente prodotto2 =',cp2);
writeln('------------------------------------');
end;

procedure dati3;
begin
mr1:=0.2;cr1:=2;mr2:=0.3;cr2:=2;
mp1:=0.8;cp1:=3;mp2:=0.6;cp2:=2;
writeln('dati noti per calcolare costante Ke ');writeln;
writeln('molarita REATTIVO1 =',mr1:8:5);
writeln('coefficiente reattivo1 =',cr1);
writeln('molarita REATTIVO2 =',mr2:8:5);
writeln('coefficiente reattivo2 =',cr2);
writeln('molarita PRODOTTO1 =',mp1:8:5);
writeln('coefficiente prodotto1 =',cp1);
writeln('molarita PRODOTTO2 =',mp2:8:5);
writeln('coefficiente prodotto2 =',cp2);
writeln('------------------------------------');
end;

procedure dati4;
begin
mr1:=0.8;cr1:=2;mr2:=0.8;cr2:=3;
mp1:=0.2;cp1:=2;mp2:=0.5;cp2:=2;
writeln('dati noti per calcolare costante Ke ');writeln;
writeln('molarita REATTIVO1 =',mr1:8:5);
writeln('coefficiente reattivo1 =',cr1);
writeln('molarita REATTIVO2 =',mr2:8:5);
writeln('coefficiente reattivo2 =',cr2);
writeln('molarita PRODOTTO1 =',mp1:8:5);
writeln('coefficiente prodotto1 =',cp1);
writeln('molarita PRODOTTO2 =',mp2:8:5);
writeln('coefficiente prodotto2 =',cp2);
writeln('------------------------------------');
end;

procedure pro1;
begin
dati1;costante;pausa;
end;

procedure pro2;
begin
dati2;costante;pausa;
end;

procedure pro3;
begin
dati3;costante;pausa;
end;

procedure pro4;
begin
dati4;costante;pausa;
end;

procedure pro5;
begin
dati1;costante;pausa;
end;

procedure pro6;
begin
dati6;costante6;pausa;
end;

procedure pro7;
begin
dati7;costante7;pausa;
end;

procedure pro8;
begin
dati8;costante8;pausa;
end;


procedure scelta; (* procedura con scelta opzioni e uscita *)
var s,sn:string;opzione:integer;
begin
clrscr;
writeln('problemi relativi a equilibrio chimico e costante equilibrio');
writeln('seleziona opzione ');
writeln('1...calcola Ke :molarita 2 reattivi e 2 prodotti note,da inserire');
writeln('-----------------------------------------------------------------');
writeln('2...calcola Ke=1 :molarita 2 reattivi e 2 prodotti prefissate ');
writeln('3...calcola Ke>1 :molarita 2 reattivi e 2 prodotti prefissate ');
writeln('4...calcola Ke<1 :molarita 2 reattivi e 2 prodotti prefissate ');
writeln('------------------------------------------------------------- ');
writeln('5...calcola Ke :molarita 2 reattivi e 2 prodotti da inserire');
writeln('6...calcola Ke :molarita 2 reattivi e 1 prodotti da inserire');
writeln('7...calcola Ke :molarita 1 reattivo e 2 prodotti da inserire');
writeln('8...calcola Ke :molarita 1 reattivi e 1 prodotto da inserire');
writeln('9...fine ');
writeln('scelta =');readln(opzione);
clrscr;
case opzione of
1:pro1;
2:pro2;
3:pro3;
4:pro4;
5:pro5;
6:pro6;
7:pro7;
8:pro8;
9:fine;
end;
writeln('altra operazione?Esperimenti?:premi S...fine:premi N '); readln(sn);
if sn='S' then scelta ;
end;

begin (* programma di lancio *)
clrscr;
writeln('legge di azione di massa in sistema chimico allo equilibrio');
writeln('Ke = prodotto dei PRODOTTI / prodotto dei REATTIVI ');
writeln('con concentrazioni molari elevate a esponente stechiometrico ');
writeln;
writeln('si deve calcolare ogni concentrazione elevata al suo coefficiente');
writeln('poi si esegue il rapporto tra prodotti e reagenti ');
pausa;
scelta;
end.