esercitazione a livello didattico-liceale
con turbo pascal , su argomenti di chimica vari

schema e polarità di pila da indicare

 

program pila3;
(* esempi schematizzazione pile e ricerca polarita *)
(* non rifiuta simboli errati...cfr.PILA4 completa *)
uses crt;
const k=13;
      s1='/';s2='//';(*sp1='+';sp2='++';*)
      re='riduzione';ox='ossidazione';red='redox';
      fre='------->>> ';

var n:array[1..k] of string;
    va:array[1..k] of integer;
    en:array[1..k] of real;
    s,a,v1,v2,vn,vc:integer; 
    e1,e2,anodo,catodo:string;
    en1,en2:real;
     sp1,sp2,spx1,spx2,q:string;
    c1,c2,a1,a2,a3,a4,a5,a6,a7,a8:integer;
     
procedure datipile;
begin
n[1]:='Zn';va[1]:=2;en[1]:=-0.76;
n[2]:='Cu';va[2]:=2;en[2]:=0.34;
n[3]:='Fe';va[3]:=2;en[3]:=-0.44;
n[4]:='Sn';va[4]:=2;en[4]:=-0.14;
n[5]:='Ni';va[5]:=2;en[5]:=-0.24;
n[6]:='Pb';va[6]:=2;en[6]:=-0.13;
n[7]:='Co';va[7]:=2;en[7]:=-0.28;
n[8]:='Li';va[8]:=1;en[8]:=-3.02;
n[9]:='K';va[9]:=1;en[9]:=-2.92;
n[10]:='Na';va[10]:=1;en[10]:=-2.71;
n[11]:='Ag';va[11]:=1;en[11]:=0.80;
n[12]:='Cd';va[12]:=2;en[12]:=-0.40;
n[13]:='H';va[13]:=1;en[13]:=0.00;

end;


procedure fine;
begin
writeln('premi enter');
readln;
end;

procedure pausa;
begin
writeln('premi ENTER ');readln;
end;

procedure cerca1;
begin
datipile;
for a:=1 to k do
if e1=n[a] then begin en1:=en[a];v1:=va[a];end;
end;

procedure cerca2;
begin
datipile;
for a:=1 to k do
if e2=n[a] then begin en2:=en[a];v2:=va[a];end;
end;

procedure polarita;
begin
writeln('anodo o polo negativo  = ',anodo:8,' ossidazione ');
writeln('catodo o polo positivo = ',catodo:8,' riduzione ');
pausa;
end;

procedure schema1;
begin
sp1:='+';sp2:='++';
if ((vn=1) and (vc=1)) then begin spx1:=sp1;spx2:=sp1;end
else 
if ((vn=2) and (vc=2)) then begin spx1:=sp2;spx2:=sp2;end
else
if ((vn=1) and (vc=2)) then begin spx1:=sp1;spx2:=sp2;end
else
if ((vn=2) and (vc=1)) then begin spx1:=sp2;spx2:=sp1;end;

writeln(anodo,s1,anodo,spx1,s2,catodo,spx2,s1,catodo);
pausa;
end;



procedure reazioni;
begin
sp1:='+';sp2:='++';q:=' ';

if ((vn=1) and (vc=1)) then 
begin spx1:=sp1;spx2:=sp1;c1:=1;c2:=1;a1:=1;a2:=1;a3:=1;a4:=1;
a5:=1;a6:=1;a7:=1;a8:=1;end
else 
if ((vn=2) and (vc=2)) then 
begin spx1:=sp2;spx2:=sp2;c1:=2;c2:=2;a1:=1;a2:=1;a3:=1;a4:=1;
a5:=1;a6:=1;a7:=1;a8:=1;end
else
if ((vn=1) and (vc=2)) then 
begin spx1:=sp1;spx2:=sp2;c1:=2;c2:=2;a1:=2;a2:=2;a3:=1;a4:=1;
a5:=2;a6:=1;a7:=2;a8:=1;end
else
if ((vn=2) and (vc=1)) then 
begin spx1:=sp2;spx2:=sp1;c1:=2;c2:=2;a1:=1;a2:=1;a3:=2;a4:=2;
a5:=1;a6:=2;a7:=1;a8:=2;end;

writeln(a1,q,anodo,'':12,' - ',c1,'e   ',fre:8,a2,q,anodo,spx1,'':12,ox:8);
writeln(a3,q,catodo,spx2,'':12,' + ',c2,'e   ',fre:8,a4,q,catodo,'':12,re:8);
writeln('-------------------------------------------------------------');
writeln(a5,q,anodo,'':12,' + ',a6,q,catodo,spx2,'':2,fre:8,a7,q,anodo,spx1,'':12,' + ',a8,q,catodo,'':4,red:8);
pausa;
end;


procedure tensione;
begin
writeln('differenza potenziale pila = Eo(+) - Eo(-) ');
writeln(abs(en1-en2):8:2);
pausa;
end;

procedure simboli;
begin
datipile;
for a:=1 to k do
write(n[a],'.',va[a],'..');
writeln;
end;

procedure pro1;
begin
datipile;
writeln('simbolo':10,'valenza':15,'elettronegativita':20);
for a:=1 to k do
begin 
 writeln(n[a]:10,va[a]:15,en[a]:20:2);
 end;
 pausa;
 end;

 
procedure pro2;
begin
writeln('elementi disponibili in archivio dati per scelta simboli ');
simboli;
write('simbolo primo   elettrodo     ');readln(e1);
cerca1;
write('simbolo secondo elettrodo     ');readln(e2);
cerca2;
writeln('stampa simboli elementi,valenza,elettronegativita ');
writeln('simbolo':12,'valenza':12,'volt':12,'simbolo':12,'valenza':12,'volt':12);
writeln(e1:12,v1:12,en1:12:2,e2:12,v2:12,en2:12:2);
pausa;
if en1<en2 then begin anodo:=e1;catodo:=e2;vn:=v1;vc:=v2;end
else begin anodo:=e2;catodo:=e1;vn:=v2;vc:=v1;end;
polarita;
schema1;
reazioni ;
tensione;
end;


procedure scelta;
var ancora:integer;
begin
clrscr;
writeln('seleziona opzione ');
writeln('1...tabella simboli,potenziali,valenze ');
writeln('2...schema pile,polarita,semireazioni,redox ');
writeln('9...fine ');
write('opzione=');readln(s);
clrscr;
case s of
1:pro1;
2:pro2;
9:fine;
end;
writeln('----------------------------');
writeln('altro problema:scrivi 1...fine:scrivi 2 ');readln(ancora);
if ancora =1 then scelta else fine;
end;


begin
clrscr;
writeln('programma:schemi pile ,ricerca polarita,reazioni redox');
writeln('---------------------------------------------------');
writeln('premi enter');readln;
scelta;
end.

 

 

 

 

 

 

ritorna