esercitazione a
livello didattico-liceale
con turbo pascal , su argomenti di chimica vari
calcolo interattivo di formula minima
Program minico; (* esempio INTERATTIVO calcolo formula minima *) uses crt; 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 clrscr; 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.