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.