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

assegnazione numeri di ossidazione

 

program noxi2;
(* determinazione numero ossidazione elementi composto INTERATTIVO *)
uses crt;
var n:array[1..5] of string;
    h:array[1..5] of integer;
    s,no,nh,a,d,x:integer;  
    y:string;
    nx:real;

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

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

procedure pro1;
begin
nx:=0;
writeln('scrivi simboli elementi e loro indici o numero di atomi');
for a:=1 to 3 do
begin
 write('simbolo elemento                 ');readln(n[a]);
 write('indice o numero atomi elemento   ');readln(h[a]);
 if n[a]='H' then nh:=h[a] else
 if n[a]='O' then no:=2*h[a] else
 y:=n[a]; 
 end;
 nx:=no-nh;
 begin
 writeln('-----------------------------------------------------');
 writeln('scrivi numeri ossidazione preceduti da segno + o - ');
 writeln(n[1],h[1],n[2],h[2],n[3],h[3]);
 write('numero ossidazione di ',n[1]);readln(x);
 if x=+1 then writeln('esatto ') else writeln('errato:era +1 ');
 write('numero ossidazione di ',n[2]);readln(x);
 if x=+nx then writeln('esatto ') else writeln('errato:era +',nx:0:0);
 write('numero ossidazione di ',n[3]);readln(x);
 if x=-2 then writeln('esatto ') else writeln('errato:era -2 ');
 end;
end;

procedure pro2;
begin
nx:=0;
writeln('scrivi simboli elementi e loro indici o numero di atomi');
for a:=1 to 3 do
begin
 write('simbolo elemento                 ');readln(n[a]);
 write('indice o numero atomi elemento   ');readln(h[a]);
 if n[a]='H' then nh:=h[a] else
 if n[a]='O' then no:=2*h[a] else
 y:=n[a]; 
 end;
 nx:=no-nh;
 begin
 writeln('-----------------------------------------------------');
 writeln('scrivi numeri ossidazione preceduti da segno + o - ');
 writeln(n[1],h[1],n[2],h[2],n[3],h[3]);
 write('numero ossidazione di ',n[1]);readln(x);
 if x=+nx then writeln('esatto ') else writeln('errato:era +',nx:0:0);
 write('numero ossidazione di ',n[2]);readln(x);
 if x=-2 then writeln('esatto ') else writeln('errato:era -2 ');
 write('numero ossidazione di ',n[3]);readln(x);
 if x=+1 then writeln('esatto ') else writeln('errato:era +1 ');
 end;
end;



procedure pro3;
begin
nx:=0;
writeln('scrivi simboli elementi e loro indici o numero di atomi');
for a:=1 to 2 do
begin
 write('simbolo elemento                 ');readln(n[a]);
 write('indice o numero atomi elemento   ');readln(h[a]);
 if n[a]='H' then nx:=h[a];
 if n[a]<>'H' then y:=n[a];
 end;
 begin
  WRITELN('-----------------------------------------------------');
  writeln('scrivi numeri ossidazione preceduti da segno + o - ');
   writeln(n[1],h[1],n[2],h[2]);
 write('numero ossidazione di ',n[1]);readln(x);
 if x=+1 then writeln('esatto ') else writeln('errato:era +1 ');
 write('numero ossidazione di ',n[2]);readln(x);
 if x=-nx then writeln('esatto ') else writeln('errato:era -',nx:0:0); 
 end; 
end;


procedure pro4;
begin
nx:=0;
writeln('scrivi simboli elementi e loro indici o numero di atomi');
writeln('es.SO3....N2O5...CaO....Al2O3...');
writeln('----------------------------------------------------------------');
writeln('calcola :TOTALE cariche negative=atomi ossigeno*(-2)');
writeln('calcola :N.OSSIDAZIONE elemento =totale negative/indice elemento');
writeln('----------------------------------------------------------------');
for a:=1 to 2 do
begin
 write('simbolo elemento                 ');readln(n[a]);
 write('indice o numero atomi elemento   ');readln(h[a]);
 if n[a]<>'O' then begin y:=n[a];d:=h[a];end
 else  no:=2*h[a]  
 end;
 nx:=no/d;
 begin
  WRITELN('-----------------------------------------------------');
  writeln('scrivi numeri ossidazione preceduti da segno + o - ');
   writeln(n[1],h[1],n[2],h[2]);
 write('numero ossidazione di ',n[1]);readln(x);
 if x=+nx then writeln('esatto ') else writeln('errato:era +',nx:0:0);
 write('numero ossidazione di ',n[2]);readln(x);
 if x=-2 then writeln('esatto ') else writeln('errato:era -2'); 
 end; 

end;

procedure pro5;
label salta2,salta;
begin
nx:=0;no:=0;
writeln('scrivi simboli elementi e loro indici o numero di atomi');
writeln('es.NaCl....CaF2...CaS..');
writeln('----------------------------------------------------------------');
writeln('calcola :TOTALE cariche negative=atomi alogeno*(-1)');
writeln('calcola :TOTALE cariche negative=atomi   zolfo*(-2)');
writeln('calcola :N.OSSIDAZIONE elemento =totale negative/indice elemento');
writeln('----------------------------------------------------------------');
for a:=1 to 2 do
begin
 write('simbolo elemento                 ');readln(n[a]);
 write('indice o numero atomi elemento   ');readln(h[a]);
 if a=2 then no:=(h[a]);
 if n[a]='S' then no:=(2*h[a]);
 end;
 nx:=no/h[1];
 writeln('----------------------------------------------');
  begin
  writeln('scrivi numeri ossidazione preceduti da segno + o - ');
   writeln(n[1],h[1],n[2],h[2]);
 write('numero ossidazione di ',n[1]);readln(x);
 if x=+nx then writeln('esatto ') else writeln('errato:era +',nx:0:0);
 write('numero ossidazione di ',n[2]);readln(x);
 if n[2]='S' then goto salta2 ;
 if (x=-1)  then writeln('esatto ') else writeln('errato:era -1');goto salta;
 salta2:
 if x=-2 then writeln('esatto ')  else writeln('errato:era -2');
 end;  
 salta:
end;


procedure scelta;
var ancora:integer;
begin
clrscr;
writeln('seleziona tipo problema ');
writeln('1...composti ternari come OSSIACIDI............H2SO4..HNO3 ');
writeln('2...composti ternari come IDROSSIDI............NaOH..Ca(OH)2');
writeln('3...composti binari come IDRACIDI..............HCl....H2S  ');
writeln('4...composti binari come OSSIDI,ANIDRIDI.......Al2O3..SO3  ');
writeln('5...composti binari come SALI di ALOGENI,ZOLFO.NaCl...CaS  ');
writeln('9...fine ');
write('opzione=');readln(s);
clrscr;
case s of
1:pro1;
2:pro2;
3:pro3;
4:pro4;
5:pro5;
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('funzione programma');
writeln('---------------------------------------------------');
writeln('premi enter');readln;
scelta;
end.

 

 

 

 

 

ritorna