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.