titolazione

esci chimicaturbo.htm

Program tito1;
(* grafico per simulazione TITOLAZIONE DIMOSTRATIVO SEMPLICE TITOLA1 *)

uses crt,graph;
const fondo:fillpatterntype=(1,2,3,4,5,6,7,8);
dise:fillpatterntype=(22,33,22,33,22,33,22,33);
VAR
a,x,y,b:integer;


procedure grafica; (* attivazione comandi grafici *)
var sc,tp:integer;
stringa:string;
BEGIN
sc:=0;tp:=0;stringa:='C:\tp\bgi';
initgraph(sc,tp,stringa);
setbkcolor(black);
end;

procedure pausa; (* attesa che si prema enter *)
VAR ch:char;
begin
setcolor(white);
outtextxy(400,390,'premi enter ');
ch:=readkey;
setcolor(black);
outtextxy(400,390,'premi enter ');
end;

procedure testo(x,y:integer;frase:string);
begin
setcolor(white);
outtextxy(x,y,frase);
end;


procedure cancellagrafo;
begin
cleardevice;
end;


procedure titolando; (* bicchiere con soluzione da titolare *)
begin
moveto(100,200);
rectangle(100,200,200,370);
moveto(100,200);setcolor(black);lineto(200,200);setcolor(white);
testo(220,350,'bicchiere graduato con 40 cc. ');
testo(220,360,'di soluzione da titolare');
testo(220,370,'e un indicatore di pH ');
pausa;
end;

procedure indicatore;
begin
setfillpattern(fondo,6);
bar(105,210,195,365);
end;


procedure buretta;
begin
setcolor(white);
moveto(140,200);lineto(140,190);lineto(120,160);lineto(120,10);
lineto(180,10);lineto(180,160);lineto(160,190);lineto(160,200);
testo(220,20,'buretta graduata con 40 cc.');
testo(220,30,'di soluzione TITOLANTE nota ');
pausa;
end;

procedure acido;
begin
y:=300;x:=110;
setcolor(white);
for a:=1 to 4 do
begin
for b:=1 to 8 do
begin
circle(x,y,5);
x:=x+10;
end;
y:=y+20;x:=110;
end;
pausa;
end;

procedure base;
begin
y:=20;x:=130;
setcolor(white);
for a:=1 to 8 do
begin
for b:=1 to 4 do
begin
setfillpattern(dise,14);
bar(x,y,x+5,y+10);
x:=x+10;
end;
y:=y+20;x:=130;
end;
pausa;
end;

procedure pro1;
begin
testo(20,20,'esempio di TITOLAZIONE di una soluzione acida o basica');
testo(20,40,'TITOLO equivale a CONCENTRAZIONE ');
testo(20,50,'TITOLAZIONE equivale a cercare la CONCENTRAZIONE ');
testo(20,60,'CONCENTRAZIONE espressa in NORMALITA ');
testo(20,70,'---------------------------------------------------');
testo(20,80,'dispositivo per titolazione:');
testo(20,90,'1-bicchiere graduato contenente volume noto di una soluzione');
testo(20,100,'della quale si cerca la normalita');
testo(20,110,'2-buretta graduata contenente soluzione di normalita nota');
testo(20,120,'---------------------------------------------------------');
pausa;
testo(20,140,'come procedere per titolare soluzione incognita ACIDA ');
testo(20,150,'con soluzione titolante nota BASICA ');
testo(20,170,'1-versare in bicchiere volume noto di soluzione acida');
testo(20,180,'da titolare e aggiungere poche gocce di INDICATORE ');
testo(20,190,'2-riempire la buretta con soluzione basica di normalita nota');
testo(20,210,'3-aprire e chiudere il rubinetto della buretta,facendo');
testo(20,220,'scendere nel bicchiere ogni volta,piccole quantita di base');
testo(20,230,'e mescolare la soluzione titolanda');
testo(20,240,'4-cessare di aggiungere base appena si nota un cambiamento');
testo(20,250,'caratteristico del COLORE dello indicatore');
testo(20,260,'che segnala il momento della completa neutralizzazione');
testo(20,270,'5-prendere nota del volume di base titolante aggiunto');
testo(20,280,'---------------------------------------------------------');
pausa;
testo(20,290,'aggiungendo la base alla soluzione acida,si verifica una');
testo(20,300,'reazione di salificazione NaOH + HCl ---> NaCl +H2O ');
testo(20,310,'che risulta completata quando gli EQUIVALENTI della BASE');
testo(20,320,'aggiunti,sono uguali agli EQUIVALENTI dello ACIDO ');
testo(20,330,'EqBASE = EqACIDO ');
testo(20,340,'EqBASE = Nbase * VolumeBase..EqACIDO = NAcido * VolumeAcido');
testo(20,350,'e quindi: Nbase * Vbase = Nacido * Vacido ');
testo(20,360,'dalla quale si ricava ,essendo noti Nbase,Vbase,Vacido ');
testo(20,370,'la normalita incognita : Nacido = Nbase * Vbase / Vacido');
pausa;cancellagrafo;
testo(20,30,'formula generalizzata per le titolazioni:');
testo(20,50,' Normalita1 * volume1 = Normalita2 * volume2 ');
pausa;
end;

procedure graduaa;
begin
y:=290;
setcolor(white);
for a:=1 to 4 do
begin
moveto(100,y);lineto(200,y);
y:=y+20;
end;
end;

procedure graduab;
begin
y:=10;;
setcolor(white);
for a:=1 to 5 do
begin
moveto(120,y);lineto(180,y);
y:=y+40;
end;
end;
(*
procedure titola;
begin
y:=20;x:=130;
setcolor(white);
for a:=1 to 8 do
begin
for b:=1 to 4 do
begin
setcolor(black);
circle(x,y,5);
x:=x+10;
end;
y:=y+20;x:=130;
end;
pausa;
end;
*)
procedure acido1(y:integer);
begin
x:=110;
setcolor(white);
for b:=1 to 8 do
begin
setfillpattern(dise,14);
bar(x,y,x+5,y+10);
x:=x+10;
end;
end;

procedure base1(y:integer);
begin
x:=130;
setcolor(white);
for a:=1 to 2 do
begin
for b:=1 to 4 do
begin
setfillpattern(dise,black);
bar(x,y,x+5,y+10);
x:=x+10;
end;
y:=y+20;x:=130;
end;
end;

procedure aggiunge;
begin
testo(220,60,'aggiungere 10 cc.di titolante');
testo(220,70,'premendo ENTER ');
end;

procedure commento;
begin
cancellagrafo;
testo(20,90,'aggiungendo il titolante alla soluzione incognita');
testo(20,100,'si verifica la reazione di neutralizzazione ');
testo(20,110,'con formazione di sale e acqua NaOH + HCl ---> NaCl + H2O ');
testo(20,120,'UN INDICATORE presente in soluzione da titolare ');
testo(20,130,'indichera la completa neutralizzazione cambiando colore');
testo(20,150,'quando tutto lo acido viene neutralizzato ');
testo(20,160,'vuol dire che gli EQUIVALENTI della BASE TITOLANTE ');
testo(20,170,'risultano uguali agli EQUIVALENTI dello ACIDO titolando');
testo(20,180,'-------------------------------------------------------');
testo(20,190,'essendo noto il volume di titolante aggiunto V1 ');
testo(20,200,'e la sua normalita N1 ,e anche il volume titolando V2');
testo(20,210,'dalla uguaglianza tra gli equivalenti N1*V1 = N2*V2 ');
testo(20,220,'si ricava la normalita o titolo della soluzione incognita');
testo(20,240,'........N2 = (N1 * V1 ) / V2......');pausa;
testo(20,250,'in questo esempio le due concentrazioni erano uguali ');
testo(20,270,'N1 = 0.5 V1 = 50 cc V2 = 50 cc :segue che :');
testo(20,290,'..........N2 = N1 * V1 / V2 = 0.5*50/50 = 0.5 N ');
pausa;
end;


procedure pro2;
begin
testo(220,100,'titolante NaOH 0.5 N');
testo(220,300,'titolando HCl con V2 = 50 cc ');
titolando;buretta;acido;base;graduaa;pausa;graduab;aggiunge;pausa;
testo(220,150,'ogni 10 cc. di titolante aggiunto');
testo(220,160,'vengono neutralizzate molecole di HCl ');pausa;
base1(20);acido1(295);moveto(100,270);lineto(200,270);pausa;
base1(60);acido1(315);moveto(100,250);lineto(200,250);pausa;
base1(100);acido1(335);moveto(100,230);lineto(200,230);pausa;
base1(140);acido1(355);moveto(100,210);lineto(200,210);pausa;
testo(220,180,'OSSERVARE BENE prima di premere ENTER ');pausa;
indicatore;testo(220,200,'indicatore cambia colore');
testo(220,210,'segnalando neutralizzazione completata');pausa;
commento;
end;

procedure fine; (* conferma uscita operazione *)
var ch:char;
begin
testo(20,40,'fine operazione:confermare :premi enter');
ch:=readkey;
closegraph;
end;

procedure scelta; (* procedura con scelta opzioni e uscita *)
var s,sn:string;opzione:integer;
begin
cancellagrafo;
testo(20,40,'seleziona opzione per ');
testo(20,50,'1...generalita sulla TITOLAZIONE ACIDO,BASE ');
testo(20,60,'2...titolazione soluzione acida con titolante basico');
testo(20,70,'9...fine ');
testo(20,80,'scelta =');readln(opzione);
grafica;
case opzione of
1:pro1;
2:pro2;
9:fine;
end;

testo(20,390,'altra operazione?Esperimenti?:premi S...fine:premi N '); readln(sn);
if ((sn='S') or (sn='s')) then scelta ;
end;

begin (* programma di lancio *)
grafica;
testo(20,20,'generalita su titolazione ACIDO,BASE');
testo(20,30,'per maggiori dettagli e interazione,dopo aver visto questo');
testo(20,40,'cfr.altro programma attivando TITOLA2..TITOLA3 ');pausa;
scelta;
closegraph;
end.