titolazione

esci chimicaturbo.htm

Program tito2;
(* grafico per simulazione TITOLAZIONE DIMOSTRATIVO da TITOLA2*)

USES crt,graph;
const fondo:fillpatterntype=(1,2,3,4,5,6,7,8);
VAR

a,x,y,b,valore,x1,y1,tempo:integer;


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

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 testo(x,y:integer;frase:string);
begin
setcolor(white);
outtextxy(x,y,frase);
end;



procedure cancellagrafo;
begin
cleardevice;
end;

procedure sosta1;
begin
delay(valore);
end;

procedure sosta2(tempo:integer);
begin
delay(tempo);
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);
pausa;bar(105,290,195,365);
testo(220,350,'bicchiere graduato con 40 cc. ');
testo(220,360,'di soluzione da titolare');
testo(220,370,'e un indicatore di pH ');
sosta2(tempo);
end;


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

procedure buretta2;
begin
setcolor(6);
pausa;bar(125,12,178,168);pausa;
end;


procedure base2(riga,y,y1:integer);
begin
x:=125;x1:=105;
for a:=1 to riga do
begin
moveto(x,y);setcolor(black);lineto(178,y);
moveto(x1,y1);setcolor(white);lineto(195,y1);
sosta1;
y:=y+1;y1:=y1+1;
end;
end;

procedure pro1;
begin
testo(20,20,'aggiungendo volume noto di sostanza titolante di normalita nota');
testo(20,40,'a volume noto di soluzione titolanda di normalita ignota');
testo(20,60,'si calcola la normalita ignota con la formula generale ');
testo(20,80,' N1 * V1 = N2 * V2 -------> N2 = N1 * V1 / V2 ');
pausa;
testo(20,100,'vengono presentati alcuni esempi di titolazione con ');
testo(20,110,'BASE nota e ACIDO ignoto,visualizzando i calcoli eseguiti');
pausa;
end;

procedure graduaa;
begin
y:=210;
setcolor(white);
for a:=1 to 8 do
begin
moveto(95,y);lineto(205,y);
y:=y+20;
end;
end;

procedure graduab;
begin
y:=10;;
setcolor(white);
for a:=1 to 5 do
begin
moveto(115,y);lineto(185,y);
y:=y+40;
end;
end;


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

procedure aggiunge2;
begin
testo(220,60,'aggiungere cc.di titolante');
testo(220,70,'premendo ENTER ');
testo(220,80,'fino a viraggio indicatore');
end;


procedure indicatore3(y1:integer);
begin
setfillpattern(fondo,7);
bar(105,y1,195,365);
testo(220,260,'viraggio indicatore');
testo(220,270,'neutralizzazione completata');
end;

procedure analisi1(frase1:string);
begin
testo(220,120,frase1);
end;

procedure analisi2(frase2:string);
begin
testo(220,140,frase2);
end;

procedure pro3;
begin
titolando;buretta;graduaa;pausa;graduab;aggiunge2;buretta2;
base2(38,12,270);pausa;base2(39,50,250);pausa;base2(40,88,230);
pausa;base2(42,126,210);pausa;indicatore3(210);
analisi1('dati noti : V1=40cc N1=1 N V2=40cc ');
analisi2('soluzione: N2 = N1*V1/V2 = 1 N ');pausa;
end;

procedure pro4;
begin
titolando;buretta;graduaa;pausa;graduab;aggiunge2;buretta2;
base2(38,12,270);pausa;base2(39,50,250);pausa;base2(40,88,230);
pausa;indicatore3(230);
analisi1('dati noti : V1=30cc N1=1 N V2=40cc ');
analisi2('soluzione: N2 = N1*V1/V2 = 0.750 N ');pausa;
end;

procedure pro5;
begin
titolando;buretta;graduaa;pausa;graduab;aggiunge2;buretta2;
base2(38,12,270);pausa;base2(39,50,250);
pausa;indicatore3(250);
analisi1('dati noti : V1=20cc N1=1 N V2=40cc ');
analisi2('soluzione: N2 = N1*V1/V2 = 0.500 N ');pausa;
end;

procedure pro6;
begin
titolando;buretta;graduaa;pausa;graduab;aggiunge2;buretta2;
base2(38,12,270);
pausa;indicatore3(270);
analisi1('dati noti : V1=10cc N1=1 N V2=40cc ');
analisi2('soluzione: N2 = N1*V1/V2 = 0.250 N ');pausa;
end;


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


procedure scelta; (* procedura con scelta opzioni e uscita *)
var s,sn:string;opzione:integer;
begin
cancellagrafo;
testo(20,20,'seleziona opzione per ');
testo(20,30,'1...descrizione esperimento di titolazione');
testo(20,40,'3...titolante base forte 40 cc.,titolando acido forte:40 cc..');
testo(20,50,'4...titolante base forte 30 cc.,titolando acido forte:40 cc..');
testo(20,60,'5...titolante base forte,20 cc.,titolando acido forte:40 cc..');
testo(20,70,'6...titolante base forte 10 cc.,titolando acido forte:40 cc.');
testo(20,80,'-------------------------------------------------------------');
testo(20,90,'20...fine ');
testo(20,120,'scelta =');readln(opzione);
grafica;
case opzione of
1:pro1;
3:pro3;4:pro4;5:pro5;6:pro6;
20: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 *)
clrscr;
grafica;
valore:=10;tempo:=50;
scelta;
closegraph;
end.