esercizi di chimica con turbo pascal 1.1 su mac

 

Program forco;
(* esempio interattivo calcolo formula minima e formula vera*)
const n=5;
var a:array[1..n] of string[10]; (* simboli elementi *)
    x:array[1..n] of string[10]; (* 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;
      esatte,errate,totale:integer;
      r:array[1..n] of string[10];
      fo:string[10];
      
procedure cancella;
begin
clearscreen;
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;
r[1]:='C2H4';r[2]:='C3H6';r[3]:='C4H8';r[4]:='C5H10';r[5]:='C6H12';
end;
procedure esegue;
begin 
min:=100;k:=1;
esatte:=0;errate:=0;totale:=0;
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('determina la formula minima e quella molecolare');
  writeln('scrivi la formula molecolare es.C6H14...');
  write('formula =');readln(fo);
  if (fo=r[k]) then begin 
    writeln('esatto:');esatte:=esatte+1;end
  else 
    begin writeln('errato:confronta calcoli e risultato ');
   errate:=errate+1;end;
   writeln('-------------------premi INVIO ------------');readln;
   cancella;
  writeln('dividere i grammi di ogni elemento per il suo peso atomico');
  writeln('per ottenere il numero di moli per ogni elemento');
  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('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('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('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;
  totale:=esatte+errate;
  writeln('esatte = ',esatte);
  writeln('errate = ',errate);
  writeln('totale = ',totale);
  writeln('chiama insegnante per valutazione');readln;
  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.
   
      
      

Program formula;
(* esempio dimostrativo calcolo formula minima e formula vera*)
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
clearscreen;
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.
   
      
      



Program minico;
(* esempio INTERATTIVO calcolo formula minima *)
const n=10;
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:integer;   (* indici arrotondati *)
      min:real;
      r:array[1..n] of string[10];
      esatte,errate,totale:integer;
      fo:string[10];
      
procedure cancella;
begin
clearscreen;
end;
procedure dati;
begin
a[1]:='Ca';a[2]:='Na';a[3]:='Al';a[4]:='Mg';a[5]:='Cs';
x[1]:='Cl';x[2]:='S';x[3]:='Cl';x[4]:='S';x[5]:='Cl';
ba[1]:=40;ba[2]:=23;ba[3]:=27;ba[4]:=24;ba[5]:=133;
bx[1]:=35;bx[2]:=32;bx[3]:=35;bx[4]:=32;bx[5]:=35;
c[1]:=0.9;c[2]:=46;c[3]:=54;c[4]:=48;c[5]:=4.04;
y[1]:=1.6;y[2]:=32;y[3]:=210;y[4]:=64;y[5]:=1.08;
a[6]:='Ca';a[7]:='Na';a[8]:='Al';a[9]:='Mg';a[10]:='Cs';
x[6]:='Cl';x[7]:='S';x[8]:='Cl';x[9]:='S';x[10]:='Cl';
ba[6]:=40;ba[7]:=23;ba[8]:=27;ba[9]:=24;ba[10]:=133;
bx[6]:=35;bx[7]:=32;bx[8]:=35;bx[9]:=32;bx[10]:=35;
c[6]:=0.4;c[7]:=0.46;c[8]:=540;c[9]:=0.48;c[10]:=40.04;
y[6]:=0.7;y[7]:=0.32;y[8]:=2100;y[9]:=0.64;y[10]:=10.08;
r[1]:='Ca1Cl2';r[2]:='Na2S1';r[3]:='Al1Cl3';r[4]:='Mg1S1';r[5]:='Cs1Cl1';
r[6]:='Ca1Cl2';r[7]:='Na2S1';r[8]:='Al1Cl3';r[9]:='Mg1S1';r[10]:='Cs1Cl1';
end;
procedure esegue;
begin 
min:=100;k:=1;esatte:=0;errate:=0;totale:=0;
for numero :=1 to n do
begin
  writeln('dalla analisi un composto risulta formato dai seguenti elementi');
  writeln('presenti con grammi indicati');
  writeln('---------------------------------------------------------------');
  writeln('grammi di ',a[k],' = ',c[k]:10:6);
  writeln('grammi di ',x[k],' = ',y[k]:10:6); 
  writeln('------------------------------------------');
  writeln('scrivere la formula minima es. Na1Cl1...Fe2Cl3..Ca1S1..');
  write('formula = ');readln(fo);
  if (fo=r[k]) then begin
    writeln('esatto ');esatte:=esatte+1;end
  else begin writeln('errato:confronta calcoli e risultato ');
    errate:=errate+1;end;
   writeln('---------------premi INVIO ------------');readln;cancella; 
  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('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('premi INVIO ');readln;
  k:=k+1;
  cancella;
  end;
  totale:=esatte+errate;
  writeln('esatte =',esatte);
  writeln('errate =',errate);
  writeln('totale =',totale);
  writeln('chiama insegnante per valutazione ');readln;cancella;
  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('premi INVIO per proseguire');readln;cancella;
dati;
esegue;
end.
   
      
      

Program minimax;
(* esempio dimostrativo calcolo formula minima *)
const n=10;
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:integer;   (* indici arrotondati *)
      min:real;
      
procedure cancella;
begin
clearscreen;
end;
procedure dati;
begin
a[1]:='Ca';a[2]:='Na';a[3]:='Al';a[4]:='Mg';a[5]:='Cs';
x[1]:='Cl';x[2]:='S';x[3]:='Cl';x[4]:='S';x[5]:='Cl';
ba[1]:=40;ba[2]:=23;ba[3]:=27;ba[4]:=24;ba[5]:=133;
bx[1]:=35;bx[2]:=32;bx[3]:=35;bx[4]:=32;bx[5]:=35;
c[1]:=0.9;c[2]:=46;c[3]:=54;c[4]:=48;c[5]:=4.04;
y[1]:=1.6;y[2]:=32;y[3]:=210;y[4]:=64;y[5]:=1.08;
a[6]:='Ca';a[7]:='Na';a[8]:='Al';a[9]:='Mg';a[10]:='Cs';
x[6]:='Cl';x[7]:='S';x[8]:='Cl';x[9]:='S';x[10]:='Cl';
ba[6]:=40;ba[7]:=23;ba[8]:=27;ba[9]:=24;ba[10]:=133;
bx[6]:=35;bx[7]:=32;bx[8]:=35;bx[9]:=32;bx[10]:=35;
c[6]:=0.4;c[7]:=0.46;c[8]:=540;c[9]:=0.48;c[10]:=40.04;
y[6]:=0.7;y[7]:=0.32;y[8]:=2100;y[9]:=0.64;y[10]:=10.08;
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('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('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);
  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('premi INVIO per proseguire');readln;cancella;
dati;
esegue;
end.
   
      

Program minix;
(* esempio dimostrativo calcolo formula minima *)
var ga,gx,da,dx,ea,ex:real;
    pa,px:integer;
    a,x:string[5];
      numero,k,c1,c2:integer;   (* indici arrotondati *)
      min:real;
      ris:char;
      
procedure cancella;
begin
clearscreen;
end;

procedure esegue;
begin 
min:=100;
  writeln('dalla analisi un composto risulta formato dai seguenti elementi');
  writeln('presenti con grammi indicati');
  writeln('---------------------------------------------------------------');
  write('scrivi il nome del primo elemento ');readln(a);
  write('scrivi il nome del secondo elemento ');readln(x);
  write('grammi di ',a,' ');readln(ga);
  writeln('grammi di ',x,' = ');readln(gx); 
  writeln('------------------------------------------');
  writeln('dividere i grammi di ogni elemento per il suo peso atomico');
  writeln('per ottenere il numero di moli per ogni elemento');
  writeln;
  write('peso atomico intero di ',a,' = ');readln(pa);
  write('peso atomico intero di ',x,' = ');readln(px); 
  da:=ga/pa;
  dx:=gx/px;
  min:=da;
  if ((dx<min) or (dx=min)) then min:=dx;
  writeln('moli di ',a,' = ',ga:10:6,' / ',pa,' = ',da:10:6);
  writeln('moli di ',x,' = ',gx:10:6,' / ',px,' = ',dx:10:6);
  writeln('---------------------------------------------------------------');
  writeln('determinare il rapporto tra le moli degli elementi');
  writeln('dividendo le moli trovate per il valore minore');
  ea:=da/min;
  ex:=dx/min;
  writeln('e arrotondare il risultato');
  writeln;
  writeln('moli di ',a,' = ',da:10:6,' / ',min:10:6,' = ',ea:10:6);
  writeln('moli di ',x,' = ',dx:10:6,' / ',min:10:6,' = ',ex:10:6);
  writeln('----------------------------------------------------');
  c1:=round(ea);
  c2:=round(ex);
  writeln('la formula minima risulta quindi con indici calcolati:');
  writeln;
  writeln(a,c1,x,c2);
  writeln('premi INVIO');
  readln;cancella;
  write('premi S per altra prova,premi N per finire ');readln(ris);
  if ((ris='S') or (ris='s')) then esegue;
  end;
  
begin
cancella;
esegue;
end.