esercitazione a livello didattico-liceale
con turbo pascal , su argomenti di chimica vari

costante di equilibrio:interattivo, dimostrativo

 

Program costa3;
(* 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  *)
(* calcolo concentrazione nota Ke e altre concentrazioni A+B<-->C+D    *)
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 concentra9;
var n1,d1,cx,cy,cz: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;
cx:=ke*d1/n1;
cy:=ln(cx)/cp2;
cz:=exp(cy);
writeln('prodotto a numeratore   = ',n1:8:5);
writeln('prodotto a denominatore = ',d1:8:5);
writeln('----------------------------------------------------');
writeln('molarita prodotto2 = radice(Ke * d1 / n1)     = ',cz:8:5);
writeln('-----------------------------------------------------');
end;

procedure concentra10;
var n1,d1,cx,cy,cz: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;
cx:=n1/(ke*d1);
cy:=ln(cx)/cr2;
cz:=exp(cy);
writeln('prodotto a numeratore   = ',n1:8:5);
writeln('prodotto a denominatore = ',d1:8:5);
writeln('----------------------------------------------------');
writeln('molarita reagente2 = radice(n1 / Ke * d1 )     = ',cz:8:5);
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 dati9;
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('coefficiente prodotto2 di ignota molarita = ');readln(cp2);
write('costante di equilibrio ');readln(ke);
writeln('--------------------------------------------');
end;

procedure dati10;
begin
write('molarita REATTIVO1     ');readln(mr1);
write('coefficiente reattivo1 ');readln(cr1);
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);
write('costante di equilibrio ');readln(Ke);
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 pro9;
begin
dati9;concentra9;pausa;
end;

procedure pro10;
begin
dati10;concentra10;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('------------------------------------------------------------');
writeln('calcolo concentrazione con 2 reagenti e 2 prodotti:uno ignoto ');
writeln('9...calcola concentrazione prodotto : Ke e 3 molarita da inserire');
writeln('10..calcola concentrazione reattivo : Ke e 3 molarita da inserire');
writeln('15...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:pro9;
10:pro10;
15: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.

 

 

 

 

 

 

ritorna