esercizi di chimica con turbo pascal v.1.1 su mac

titolazioni interattive neutra3-4-5 e dimostrative neutra 6-7-8

 


program neutra3;
(* curva titolazione acido forte con base forte DATI ASSEGNATI *)
(* si blocca operazione a neutralizzazione raggiunta *)
var x,ca,d,ph,c,cb,poh,va,vb,v,ea,eb,ebv,no,ear,vab:real;
    s,a,n,y:integer;  
procedure fine;
begin
writeln('premi enter');
readln;
end;
procedure pausa;
begin
writeln('premi enter');readln;
end;
procedure pro1(ca,va,cb,v:real;n:integer);
label salta;
begin
writeln('titolazione acido forte con base forte :valori assegnati');
writeln('-----------------------------------------------------------------');
writeln('concentrazione acido .........          ',ca:8:2);
writeln('volume in cc acido                      ',va:8:2);
writeln('N base forte aggiunta >0                ',cb:8:6);
writeln('numero di aggiunte base                 ',n:8);
writeln('volume in cc di base aggiunta           ',v:8:4);
writeln('------------------------------------------------------');
x:=0;
ea:=ca*va/1000;
d:=ln(10);
ph:=-ln(ca)/d;
ebv:=cb*v/1000;
writeln('equivalenti di acido iniziali           ',ea:8:4);
writeln('equivalenti di base aggiunti ogni volta ',ebv:8:4);
writeln('normalita iniziale =',ca:8:4,'...pH = ',ph:8:2);
writeln('------------------------------------------------------');
writeln('viene stampata tabella con 4 colonne ');
writeln('normalita....pH...equivalenti acido....equivalenti base ');
writeln('il programma si ferma quando eqa = eqb .. ');
writeln('quando risulta prossima la neutralizzazione:viraggio ');
pausa;clearscreen;
for a:=1 to n do
begin
vab:=(va+v*a)/1000;
ear:=ea-ebv*a;
if ear>0 then begin
no:=ear/vab;
ph:=-ln(no)/d;
writeln('N= ',no:8:4,'...pH =',ph:8:2,'..eqa =',ear:8:8,' eqb =',ebv*a:8:8);end
else
begin writeln('fine neutralizzazione');goto salta;end;
end;
salta:writeln('fine operazione');
end;
procedure scelta;
var ancora:integer;
begin
clearscreen;
writeln('seleziona tipo problema su titolazione,neutralizzazione');
writeln('1,2,3,4,5..acido forte titolato con base forte. :valore pH ? ');
writeln('6...fine ');
write('opzione=');readln(s);
clearscreen;
case s of
1:pro1(0.05,50,0.1,2,20);
2:pro1(0.05,50,0.1,1,30);
3:pro1(0.05,50,0.1,3,20);
4:pro1(0.05,50,0.1,4,20);
5:pro1(0.05,50,0.1,5,20);
6:fine;
end;
writeln('----------------------------');
writeln('altro problema:scrivi 1...fine:scrivi 2 ');readln(ancora);
if ancora =1 then scelta else fine;
end;
begin
clearscreen;
writeln('titolazione,neutralizzazione acidi forti con basi forti');
writeln('dati assegnati automaticamente ');
writeln('premi enter');readln;
scelta;
end.

program neutra4;
(* curva titolazione acido forte con base forte DATI ASSEGNATI *)
(* si blocca operazione a neutralizzazione raggiunta *)
var x,ca,d,ph,c,cb,poh,va,vb,v,ea,eb,ebv,no,ear,vab,nb,eqb:real;
    s,a,n,y:integer;  
procedure fine;
begin
writeln('premi enter');
readln;
end;
procedure pausa;
begin
writeln('premi enter');readln;
end;
procedure pro1(ca,va,cb,v:real;n:integer);
label salta;
begin
writeln('titolazione acido forte con base forte :valori assegnati');
writeln('-----------------------------------------------------------------');
writeln('concentrazione acido .........          ',ca:8:2);
writeln('volume in cc acido                      ',va:8:2);
writeln('N base forte aggiunta >0                ',cb:8:6);
writeln('numero di aggiunte base                 ',n:8);
writeln('volume in cc di base aggiunta           ',v:8:4);
writeln('------------------------------------------------------');
x:=0;
ea:=ca*va/1000;
d:=ln(10);
ph:=-ln(ca)/d;
ebv:=cb*v/1000;
writeln('equivalenti di acido iniziali           ',ea:8:4);
writeln('equivalenti di base aggiunti ogni volta ',ebv:8:4);
writeln('normalita iniziale =',ca:8:4,'...pH = ',ph:8:2);
writeln('------------------------------------------------------');
writeln('viene stampata tabella con 4 colonne ');
writeln('normalita....pH...equivalenti acido....equivalenti base ');
writeln('il programma si ferma quando eqa = eqb .. ');
writeln('quando risulta prossima la neutralizzazione:viraggio ');
pausa;clearscreen;
for a:=1 to n do
begin
vab:=(va+v*a)/1000;
ear:=ea-ebv*a;
if ear>0 then begin
no:=ear/vab;
eqb:=ebv*a;
ph:=-ln(no)/d;
writeln('N= ',no:8:4,'...pH =',ph:8:2,'..eqa =',ear:8:8,' eqb =',ebv*a:8:8);end
else
begin
nb:=(ebv*a-eqb)/vab;
poh:=-ln(nb)/d;
ph:=14-poh;
writeln('              pH =',ph:8:2,'                  eqb =',ebv*a-eqb:8:4);
end;
if ph>13 then goto salta;
end;
salta:writeln('fine operazione');
end;
procedure scelta;
var ancora:integer;
begin
clearscreen;
writeln('seleziona tipo problema su titolazione,neutralizzazione');
writeln('1,2,3,4,5..acido forte titolato con base forte. :valore pH ? ');
writeln('6...fine ');
write('opzione=');readln(s);
clearscreen;
case s of
1:pro1(0.05,50,0.1,2,20);
2:pro1(0.05,50,0.1,1,30);
3:pro1(0.05,50,0.1,3,20);
4:pro1(0.05,50,0.1,4,20);
5:pro1(0.05,50,0.1,5,20);
6:fine;
end;
writeln('----------------------------');
writeln('altro problema:scrivi 1...fine:scrivi 2 ');readln(ancora);
if ancora =1 then scelta else fine;
end;
begin
clearscreen;
writeln('titolazione,neutralizzazione acidi forti con basi forti');
writeln('dati assegnati automaticamente ');
writeln('premi enter');readln;
scelta;
end.

program neutra5;
(* curva titolazione acido forte con base forte DATI da inserire *)
(* si blocca operazione a neutralizzazione raggiunta *)
var x,ca,d,ph,c,cb,poh,va,vb,v,ea,eb,ebv,no,ear,vab,nb,eqb:real;
    s,a,n,y:integer;  
procedure fine;
begin
writeln('premi enter');
readln;
end;
procedure pausa;
begin
writeln('premi enter');readln;
end;
procedure pro1;
label salta;
begin
writeln('titolazione acido forte con base forte :valori richiesti:prova');
writeln('-----------------------------------------------------------------');
write('concentrazione acido .........0.05       ');readln(ca);
write('volume in cc acido            50         ');readln(va);
write('N base forte aggiunta >0      O.1        ');readln(cb);
write('numero di aggiunte base       30         ');readln(n);
write('volume in cc di base aggiunta 1          ');readln(v);
writeln('------------------------------------------------------');
x:=0;
ea:=ca*va/1000;
d:=ln(10);
ph:=-ln(ca)/d;
ebv:=cb*v/1000;
writeln('equivalenti di acido iniziali           ',ea:8:4);
writeln('equivalenti di base aggiunti ogni volta ',ebv:8:4);
writeln('normalita iniziale =',ca:8:4,'...pH = ',ph:8:2);
writeln('------------------------------------------------------');
writeln('viene stampata tabella con 4 colonne ');
writeln('normalita....pH...equivalenti acido....equivalenti base ');
writeln('osservare valori pH ');
writeln('quando risulta prossima la neutralizzazione:viraggio ');
pausa;clearscreen;
for a:=1 to n do
begin
vab:=(va+v*a)/1000;
ear:=ea-ebv*a;
if ear>0 then begin
no:=ear/vab;
eqb:=ebv*a;
ph:=-ln(no)/d;
writeln('N= ',no:8:4,'...pH =',ph:8:2,'..eqa =',ear:8:8,' eqb =',ebv*a:8:8);end
else
begin
nb:=(ebv*a-eqb)/vab;
poh:=-ln(nb)/d;
ph:=14-poh;
writeln('              pH =',ph:8:2,'                  eqb =',ebv*a-eqb:8:4);
end;
if ph>13 then goto salta;
end;
salta:writeln('fine operazione');
end;
procedure scelta;
var ancora:integer;
begin
clearscreen;
writeln('seleziona tipo problema su titolazione,neutralizzazione');
writeln('1 acido forte titolato con base forte. :valore pH ? ');
writeln('2...fine ');
write('opzione=');readln(s);
clearscreen;
case s of
1:pro1;
2:fine;
end;
writeln('----------------------------');
writeln('altro problema:scrivi 1...fine:scrivi 2 ');readln(ancora);
if ancora =1 then scelta else fine;
end;
begin
clearscreen;
writeln('titolazione,neutralizzazione acidi forti con basi forti');
writeln('dati richiesti da inserire ');
writeln('concentrazioni NORMALI....volumi in cc. ');
writeln('premi enter');readln;
scelta;
end.

 


program neutra6;
(* curva titolazione acido forte con base forte DATI da inserire *)
(* si blocca operazione a neutralizzazione raggiunta *)
(* inserimento volume titolante su richiesta *)
(* DIMOSTRATIVO *)
var x,ca,d,ph,c,cb,poh,va,vb,ea,eb,ebv,no,ear,vab,nb,eqb:real;
    s,a,n,v,y:integer;  
procedure fine;
begin
writeln('premi enter');
readln;
end;
procedure pausa;
begin
writeln('premi enter');readln;
end;
procedure pro1;
label salta;
begin
writeln('titolazione acido forte con base forte :valori richiesti:prova');
writeln('-----------------------------------------------------------------');
write('concentrazione acido .........0.05       ');readln(ca);
write('volume in cc acido            50         ');readln(va);
write('N base forte aggiunta >0      O.1        ');readln(cb);
write('volume in cc di base aggiunta 1          ');readln(v);
writeln('------------------------------------------------------');
x:=0;
n:=100;
ea:=ca*va/1000;
d:=ln(10);
ph:=-ln(ca)/d;
ebv:=cb*v/1000;
writeln('equivalenti di acido iniziali           ',ea:8:4);
writeln('equivalenti di base aggiunti ogni volta ',ebv:8:4);
writeln('normalita iniziale =',ca:8:4,'...pH = ',ph:8:2);
writeln('------------------------------------------------------');
writeln('viene stampata tabella con 4 colonne ');
writeln('normalita....pH...equivalenti acido....equivalenti base ');
writeln('osservare valori pH ');
writeln('quando risulta prossima la neutralizzazione:viraggio ');
pausa;clearscreen;
for a:=1 to n do
begin
write('volume base da aggiungere: 1=costante..0=fine ');readln(y);
if y=0 then goto salta;
vb:=vb+v;
vab:=(va+vb)/1000;
ear:=ea-ebv*a;
if ear>0 then begin
no:=ear/vab;
eqb:=ebv*a;
ph:=-ln(no)/d;
writeln('N= ',no:8:4,'...pH =',ph:8:2,'..eqa =',ear:8:8,' eqb =',ebv*a:8:8);end
else
begin
nb:=(ebv*a-eqb)/vab;
poh:=-ln(nb)/d;
ph:=14-poh;
writeln('              pH =',ph:8:2,'                  eqb =',ebv*a-eqb:8:4);
end;
end;
salta:writeln('fine operazione');
end;
procedure scelta;
var ancora:integer;
begin
clearscreen;
writeln('seleziona tipo problema su titolazione,neutralizzazione');
writeln('1 acido forte titolato con base forte. :valore pH ? ');
writeln('2...fine ');
write('opzione=');readln(s);
clearscreen;
case s of
1:pro1;
2:fine;
end;
writeln('----------------------------');
writeln('altro problema:scrivi 1...fine:scrivi 2 ');readln(ancora);
if ancora =1 then scelta else fine;
end;
begin
clearscreen;
writeln('titolazione,neutralizzazione acidi forti con basi forti');
writeln('dati richiesti da inserire ');
writeln('concentrazioni NORMALI....volumi in cc. ');
writeln('aggiungere volumi costanti di base fino al viraggio ');
writeln('premi enter');readln;
scelta;
end.

 


program neutra7;
(* curva titolazione acido forte con base forte DATI da inserire *)
(* si blocca operazione a neutralizzazione raggiunta *)
(* inserimento volume titolante su richiesta *)
(* DIMOSTRATIVO *)
var x,ca,d,ph,c,cb,poh,va,vb,ea,eb,ebv,no,ear,vab,nb,eqb:real;
    vaf,vbf,normalita:real;
    s,a,n,v,y:integer;  
procedure fine;
begin
writeln('premi enter');
readln;
end;
procedure pausa;
begin
writeln('premi enter');readln;
end;
procedure pro1(ca:real);
label salta;
begin
writeln('titolazione acido forte con base forte :valori richiesti:prova');
writeln('-----------------------------------------------------------------');
write('volume in cc acido            50         ');readln(va);
write('N base forte aggiunta >0      O.1        ');readln(cb);
write('volume in cc di base aggiunta 1          ');readln(v);
writeln('------------------------------------------------------');
x:=0;
n:=100;
ea:=ca*va/1000;
d:=ln(10);
ph:=-ln(ca)/d;
ebv:=cb*v/1000;
writeln('equivalenti di base aggiunti ogni volta ',ebv:8:4);
writeln('------------------------------------------------------');
writeln('viene stampata tabella con 2 colonne ');
writeln('pH...........equivalenti base ');
writeln('osservare valori pH prossimi al viraggio');
pausa;clearscreen;
for a:=1 to n do
begin
write('volume base da aggiungere: 1=costante..0=fine ');readln(y);
if y=0 then goto salta;
vb:=vb+v;
vab:=(va+vb)/1000;
ear:=ea-ebv*a;
if ear>0 then begin
no:=ear/vab;
eqb:=ebv*a;
ph:=-ln(no)/d;
vbf:=vb;
writeln('pH =',ph:8:2,'      eqb =',ebv*a:8:8);end
else
begin
normalita:=vb*(cb/1000)/(va/1000);
writeln(' ****  normalita  **** =',normalita:8:4,' ****');
nb:=(ebv*a-eqb)/vab;
poh:=-ln(nb)/d;
ph:=14-poh;
writeln(' oltre pH viraggio     pH =',ph:8:2);
goto salta;
end;
end;
salta:writeln('fine operazione:NORMALITA titolata= ',normalita:8:4);
writeln('------------------------------------------------');
writeln('volume titolante           ',vb:8:4);
writeln('volume titolato            ',va:8:4);
writeln('concentrazione titolante   ',cb:8:4);
writeln('concentrazione titolato    ',normalita:8:4);
writeln('-------------------------------------------------'); 
vb:=0;va:=0;cb:=0;normalita:=0;
end;
procedure scelta;
var ancora:integer;
begin
clearscreen;
writeln('seleziona tipo problema su titolazione,neutralizzazione');
writeln('1,2,3. acido forte titolato con base forte. :valore pH ? ');
writeln('4...fine ');
write('opzione=');readln(s);
clearscreen;
case s of
1:pro1(0.1);
2:pro1(0.01);
3:pro1(0.001);
4:fine;
end;
writeln('----------------------------');
writeln('altro problema:scrivi 1...fine:scrivi 2 ');readln(ancora);
if ancora =1 then scelta else fine;
end;
begin
clearscreen;
writeln('titolazione,neutralizzazione acidi forti con basi forti');
writeln('determinazione NORMALITA soluzione acido forte         ');
writeln('dati richiesti da inserire ');
writeln('concentrazioni NORMALI....volumi in cc. ');
writeln('aggiungere volumi costanti di base fino al viraggio ');
writeln('premi enter');readln;
scelta;
end.

program neutra8;
(* curva titolazione acido forte con base forte DATI da inserire *)
(* si blocca operazione a neutralizzazione raggiunta *)
(* inserimento volume titolante su richiesta *)
(* DIMOSTRATIVO *)
var x,ca,d,ph,c,cb,poh,va,vb,ea,eb,ebv,no,ear,vab,nb,eqb:real;
    vaf,vbf,normalita:real;
    s,a,n,v,y:integer;  
procedure fine;
begin
writeln('premi enter');
readln;
end;
procedure pausa;
begin
writeln('premi enter');readln;
end;
procedure pro1(ca:real);
label salta;
begin
writeln('titolazione acido forte con base forte :valori richiesti:prova');
writeln('-----------------------------------------------------------------');
write('volume in cc acido            50         ');readln(va);
write('N base forte aggiunta >0      O.1        ');readln(cb);
write('volume in cc di base aggiunta 1          ');readln(v);
writeln('------------------------------------------------------');
x:=0;
n:=100;
ea:=ca*va/1000;
d:=ln(10);
ph:=-ln(ca)/d;
ebv:=cb*v/1000;
writeln('equivalenti di base aggiunti ogni volta ',ebv:8:4);
writeln('------------------------------------------------------');
writeln('viene stampata tabella con 2 colonne ');
writeln('pH...........equivalenti base ');
writeln('osservare valori pH prossimi al viraggio');
pausa;clearscreen;
n:=100;
for a:=1 to n do
begin
vb:=vb+v;
vab:=(va+vb)/1000;
ear:=ea-ebv*a;
if ear>0 then begin
no:=ear/vab;
eqb:=ebv*a;
ph:=-ln(no)/d;
vbf:=vb;
writeln('pH =',ph:8:2,'      eqb =',ebv*a:8:8);end
else
begin
normalita:=(vb/1000)*cb/(va/1000);
writeln(' ****  normalita  **** =',normalita:8:4,' ****');
nb:=(ebv*a-eqb)/vab;
poh:=-ln(nb)/d;
ph:=14-poh;
writeln(' oltre pH viraggio     pH =',ph:8:2);
goto salta;
end;
end;
salta:writeln('fine operazione:NORMALITA titolata= ',normalita:8:4);
writeln('------------------------------------------------');
writeln('volume titolante           ',vb:8:4);
writeln('volume titolato            ',va:8:4);
writeln('concentrazione titolante   ',cb:8:4);
writeln('concentrazione titolato    ',normalita:8:4);
writeln('-------------------------------------------------'); 
vb:=0;va:=0;cb:=0;normalita:=0;
end;
procedure scelta;
var ancora:integer;
begin
clearscreen;
writeln('seleziona tipo problema su titolazione,neutralizzazione');
writeln('1,2,3. acido forte titolato con base forte. :valore pH ? ');
writeln('4...fine ');
write('opzione=');readln(s);
clearscreen;
case s of
1:pro1(0.1);
2:pro1(0.01);
3:pro1(0.001);
4:fine;
end;
writeln('----------------------------');
writeln('altro problema:scrivi 1...fine:scrivi 2 ');readln(ancora);
if ancora =1 then scelta else fine;
end;
begin
clearscreen;
writeln('titolazione,neutralizzazione acidi forti con basi forti');
writeln('determinazione NORMALITA soluzione acido forte         ');
writeln('dati richiesti da inserire ');
writeln('concentrazioni NORMALI....volumi in cc. ');
writeln('aggiungere volumi costanti di base fino al viraggio ');
writeln('premi enter');readln;
scelta;
end.