esercitazioni su argomenti di chimica a livello didattico, liceale
con turbo pascal v.5-7

bilanciamento reazioni, interattivo

 

 

Program bila1;
 (* esempi di bilanciamento reazioni INTERATTIVO *) 
 (* aggiungere reazioni e modificare nreazioni *)
uses crt;

   const nreazioni=21;
   VAR    rea :array[1..nreazioni] of string;
          reb :array[1..nreazioni] of string;
          c   :array[1..nreazioni] of string;
          a,esatte,errate,reazioni:integer;
          cs,rs:string;

procedure dati;
begin          
rea[1]:='NaOH + H2SO4 ---> Na2SO4 + H2O ';
reb[1]:='2NaOH + H2SO4 ---> Na2SO4 + 2H2O ';
c[1]:='2,2';
rea[2]:='Ca(OH)2 + HCl ---> CaCl2 + H2O ';
reb[2]:='Ca(OH)2 + 2HCl ---> CaCl2 + 2H2O ';
c[2]:='2,2';
rea[3]:='Al(OH)3 + HCl ---> AlCl3 + H2O ';
reb[3]:='Al(OH)3 + 3HCl ---> AlCl3 + 3H2O ';
c[3]:='3,3';
rea[4]:='SO2 + O2 ----> SO3  ';
reb[4]:='2SO2 + O2 ----> 2SO3  ';
c[4]:='2,2';
rea[5]:='NaCl + H2SO4 -----> Na2SO4 + HCl  ';
reb[5]:='2NaCl + H2SO4 -----> Na2SO4 + 2HCl  ';
c[5]:='2,2';
rea[6]:='NaCl + HNO3 -----> NaNO3 + HCl  ';
reb[6]:='NaCl + HNO3 -----> NaNO3 + HCl  ';
c[6]:='1';
rea[7]:='Fe(OH)2 + HNO3 ----> Fe(NO3)2 + H20  ';
reb[7]:='Fe(OH)2 + 2HNO3 ----> Fe(NO3)2 + 2H20   ';
c[7]:='2,2';
rea[8]:='CuCl + H2SO4 ----> CuSO4 + HCl  ';
reb[8]:='2CuCl + H2SO4 ----> CuSO4 + 2HCl    ';
c[8]:='2,2';
rea[9]:='Fe2(SO3)3 + HCl ----> FeCl3 + H2SO3  ';
reb[9]:='Fe2(SO3)3 + 6HCl ----> 2FeCl3 + 3H2SO3   ';
c[9]:='6,2,3';
rea[10]:='Ba(NO3)2 + H2SO4 ----> BaSO4 + HNO3  ';
reb[10]:='Ba(NO3)2 + H2SO4 ----> BaSO4 + 2HNO3   ';
c[10]:='2';
rea[11]:='Al(NO3)3 + H2SO4 -----> Al2(SO4)3 + HNO3  ';
reb[11]:='2Al(NO3)3 + 3H2SO4 -----> Al2(SO4)3 + 6HNO3   ';
c[11]:='2,3,6';
rea[12]:='K20 + HCl ----> KCl + H2O  ';
reb[12]:='K20 + 2HCl ----> 2KCl + H2O    ';
c[12]:='2,2';
rea[13]:='Al2O3 + H2SO3 ----> Al2(SO3)3 + H20  ';
reb[13]:='Al2O3 + 3H2SO3 ----> Al2(SO3)3 + 3H20   ';
c[13]:='3,3';
rea[14]:='CO2 + H2O ----> H2CO3  ';
reb[14]:='CO2 + H2O ----> H2CO3   ';
c[14]:='1';
rea[15]:='Cl20 + H2O ----> HClO   ';
reb[15]:='Cl20 + H2O ----> 2HClO   ';
c[15]:='2';
rea[16]:='Cl203 + H2O ----> HClO2   ';
reb[16]:='Cl203 + H2O ----> 2HClO2   ';
c[16]:='2';
rea[17]:='Cl205 + H2O ----> HClO3   ';
reb[17]:='Cl205 + H2O ----> 2HClO3   ';
c[17]:='2';
rea[18]:='Cl207 + H2O ----> HClO4   ';
reb[18]:='Cl207 + H2O ----> 2HClO4   ';
c[18]:='2';
rea[19]:='Al + HCl -----> AlCl3 + H2';
reb[19]:='2Al + 6HCl -----> 2AlCl3 + 3H2   ';
c[19]:='2,6,2,3';
rea[20]:='Zn + HCl -----> ZnCl2 + H2';
reb[20]:='Zn + 2HCl -----> ZnCl2 + H2   ';
c[20]:='2';
end;


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

procedure cancella;
begin
clrscr;
end;

procedure fine;  (* conferma uscita operazione *)
begin
writeln('fine operazione:confermare :premi enter');
readln;
end;

procedure descrive;
begin
writeln('esercitazione per scrivere coefficienti di reazioni da bilanciare');
writeln('in modo da osservare la conservazione delle masse,secondo la ');
writeln('legge di LAVOISIER ');
writeln('---------------------');
writeln('es. data la reazione  NaOH + H2SO4 -----> Na2SO4 + H2O ');
writeln('si vede che non risulta bilanciata: si devono quindi inserire');
writeln('degli opportuni coefficienti in modo che ogni tipo di atomo ');
writeln('sia presente in ugual numero,prima e dopo la reazione ');
writeln;
writeln('in questo esempio 2 NaOH + H2SO4 ---> Na2SO4 + 2 H2O ');
writeln;
pausa;
end;


procedure pro1;
begin
descrive;
end;

procedure pro2;
begin
dati;
for a:=1 to reazioni do
begin
writeln('scrivi i coefficienti stechiometrici,separati da virgola');
writeln('se coefficiente = 1 non scriverlo ....es.2,3,2,4....2,2...');
writeln('se TUTTI i coefficienti sono uguali a 1,scrivi 1 e premi ENTER ');
writeln('se non li conosci,premi ENTER ') ;writeln;
writeln(rea[a]);
write('scrivi i coefficienti stechiometrici  ');readln(cs);
if cs=c[a] then begin writeln('esatto  ',reb[a]);esatte:=esatte+1;end
else begin writeln('errato :era  ',c[a],'...',reb[a]);errate:=errate+1;end;
pausa;cancella;
end;
end;


procedure scelta;  (* procedura con scelta opzioni e uscita *)
var s,sn:string;opzione:integer;
begin
clrscr;
repeat
write('scrivi numero reazioni da provare minore di ',nreazioni,'..');
readln(reazioni);until reazioni<nreazioni;
a:=1;
esatte:=0;errate:=0;
writeln('seleziona opzione :bilanciamento reazioni');
writeln('2...bilanciamento reazioni');
writeln('9...fine ');
writeln('scelta =');readln(opzione);cancella;
case opzione of
2:pro2;
9:fine;
end;
end;

begin            (* programma di lancio *)
cancella;
pro1;
scelta;
writeln('fine prova:chiama insegnante per valutazione....');
writeln('risposte esatte =',esatte ,' su domande ',a-1);
writeln('risposte errate =',errate ,' su domande ',a-1);
if esatte<(a/2) then writeln('insufficiente') else 
writeln('sufficiente o discreto o buono:chiedi a insegnante');
pausa;cancella;
end.

 

 

 

 

 

 

 

ritorna