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.