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

calcolo formula minina e vera

 

 

Program formula;
(* esempio dimostrativo calcolo formula minima e formula vera*)
uses crt;
const n=5;
var a:array[1..n] of string[5]; (* simboli elementi *)
    x:array[1..n] of string[5]; (* simboli elementi *)
      ba:array[1..n] of integer;(* pesi atomici *)
      bx:array[1..n] of integer;
      c:array[1..n] of real;    (* grammi elementi *)
      y:array[1..n] of real;
      dx:array[1..n] of real;   (* moli elementi *)
      da:array[1..n] of real;
      e:array[1..n] of real;    (* indici elementi *)
      ex:array[1..n] of real;
      numero,k,c1,c2,pmt,h:integer;   (* indici arrotondati *)
      pm:array[1..n] of integer;(* pesi molecolari noti *)
      min:real;

procedure cancella;
begin
clrscr;
end;


procedure dati;
begin
a[1]:='C';a[2]:='C';a[3]:='C';a[4]:='C';a[5]:='C';
x[1]:='H';x[2]:='H';x[3]:='H';x[4]:='H';x[5]:='H';
ba[1]:=12;ba[2]:=12;ba[3]:=12;ba[4]:=12;ba[5]:=12;
bx[1]:=1;bx[2]:=1;bx[3]:=1;bx[4]:=1;bx[5]:=1;
c[1]:=24;c[2]:=36;c[3]:=48;c[4]:=60;c[5]:=72;
y[1]:=4;y[2]:=6;y[3]:=8;y[4]:=10;y[5]:=12;
pm[1]:=28;pm[2]:=42;pm[3]:=56;pm[4]:=70;pm[5]:=84;


end;

procedure esegue;
begin 
min:=100;k:=1;
for numero :=1 to n do
begin
  writeln('dalla analisi un composto risulta formato dai seguenti elementi');
  writeln('presenti con grammi indicati');
  writeln('---------------------------------------------------------------');
  writeln('peso molecolare noto =',pm[k]);
  writeln('grammi di ',a[k],' = ',c[k]:10:6);
  writeln('grammi di ',x[k],' = ',y[k]:10:6); 
  writeln('------------------------------------------');
  writeln('dividere i grammi di ogni elemento per il suo peso atomico');
  writeln('per ottenere il numero di moli per ogni elemento');
  writeln;
  da[k]:=c[k]/ba[k];
  dx[k]:=y[k]/bx[k];
  min:=da[k];
  if ((dx[k]<min) or (dx[k]=min)) then min:=dx[k];
  writeln('moli di ',a[k],' = ',c[k]:10:6,' / ',ba[k],' = ',da[k]:10:6);
  writeln('moli di ',x[k],' = ',y[k]:10:6,' / ',bx[k],' = ',dx[k]:10:6);
  writeln('---------------------------------------------------------------');
  writeln('premi INVIO');
  readln;cancella;
  writeln('determinare il rapporto tra le moli degli elementi');
  writeln('dividendo le moli trovate per il valore minore');
  e[k]:=da[k]/min;
  ex[k]:=dx[k]/min;
  writeln('e arrotondare il risultato');
  writeln;
  writeln('moli di ',a[k],' = ',da[k]:10:6,' / ',min:10:6,' = ',e[k]:10:6);
  writeln('moli di ',x[k],' = ',dx[k]:10:6,' / ',min:10:6,' = ',ex[k]:10:6);
  writeln('----------------------------------------------------');
  c1:=round(e[k]);
  c2:=round(ex[k]);
  writeln('la formula minima risulta quindi con indici arrotondati:');
  writeln;
  writeln(a[k],c1,x[k],c2);
  writeln('--------------------------------------------------------');
  writeln('calcolo peso molecolare formula minima:'); 
  pmt:=c1*ba[k]+c2*bx[k];
  writeln(c1,'*',ba[k],'+',c2,'*',bx[k],' = ',pmt:10);
  writeln('confronta con peso molecolare noto ',pm[k]);
  writeln;
  writeln('divide peso molecolare noto per peso molecolare formula minima');
  h:=pm[k] div pmt;
  writeln(pm[k],'/',pmt,'=',h);
  writeln('quoziente pesi molecolari=',h);
  writeln('moltiplica indici minimi per quoziente trovato');  
  c1:=c1*h;c2:=c2*h;
  writeln('scrive formula molecolare vera');
  writeln(a[k],c1,x[k],c2);
  readln;
  k:=k+1;
  cancella;
  end;
  end;

  
begin
cancella;
writeln('scopo del programma:mostrare come si risale alla formula minima');
writeln('di un composto,in funzione delle quantita di elementi trovate');
writeln('mediante la analisi chimica di una determinata quantita di');
writeln('sostanza di natura ignota');
writeln('e alla formula molecolare vera se si conosce peso molecolare vero');
writeln('premi INVIO per proseguire');readln;cancella;
dati;
esegue;

end.
   
      
      

 

 

 

 

ritorna