esercizi di chimica con turbo pascal 1.1 su mac

 

program massa1;
(* calcolo massa molecolare *)
var a,p1,numero,ma,na:integer;
procedure cancella;
begin
clearscreen;
end;
procedure chiede;
var r:char;
begin
cancella;
 p1:=0;
 writeln('scrivi numero di elementi presenti nella formula =');
 writeln('es. H2SO4 .... sono 3 elementi ... ');
 write('numero elementi = ');readln(numero);
 writeln;
 for a:=1 to numero do
  begin
   writeln('elemento in ordine :',a);
   write('scrivi massa atomica,intera,elemento         :');readln(ma);
   write('scrivi numero di atomi di elemento in formula: ');readln(na);
   writeln('massa atomica*numero atomi =',ma*na);
   writeln('----------------------------------------');
   p1:=p1+ma*na;
  end;
 WRITELN('massa molecolare =  ',p1);
 writeln('-------------------------------------');
 write('premi S per altra prova,premi N per finire ');readln(r);
 if ((r='S') or (r='s')) then chiede;
  
end;
begin
cancella;
chiede;
writeln('premi INVIO ');
readln;cancella;
end.

program massa2;
(* calcolo massa molecolare e confronta risultato *)
const k=16;
var f:array[1..k] of string[15];
    m:array[1..k] of integer;
    esatte,errate,totale,conta,ma:integer;
procedure cancella;
begin
clearscreen;
end;
procedure dati;
begin
f[1]:='H2SO4';f[2]:='CH4';f[3]:='C2H40';f[4]:='Al203';
f[5]:='CaCO3';f[6]:='Al2(SO4)3';f[7]:='Ca(OH)2';f[8]:='H2SO3';
f[9]:='C6H12O6';f[10]:='K4Fe(CN)6';f[11]:='Ca3(PO4)2';f[12]:='NaCl';
f[13]:='CaS';f[14]:='H2CO3';f[15]:='HNO3';f[16]:='HClO2';
m[1]:=98;m[2]:=16;m[3]:=44;m[4]:=102;
m[5]:=100;m[6]:=342;m[7]:=74;m[8]:=82;
m[9]:=180;m[10]:=368;m[11]:=310;m[12]:=58;
m[13]:=72;m[14]:=62;m[15]:=63;m[16]:=68;
end;
procedure chiede;
var r:char;
begin
cancella;
writeln('formula composto = ',f[conta]);
write('scrivi la massa molecolare,intera = ');readln(ma);
if ma=m[conta] then begin writeln('esatto ');esatte:=esatte+1;end
  else begin writeln('errato:era = ',m[conta]);errate:=errate+1;end;
 writeln('-------------------------------------');
 conta:=conta+1;
 write('premi S per altra prova,premi N per finire ');readln(r);
 if ((r='S') or (r='s')) then chiede;
  
end;
begin
cancella;
conta:=1;
dati;
esatte:=0;errate:=0;totale:=0;
chiede;
writeln('premi INVIO ');
cancella;
totale:=esatte+errate;
writeln('esatte = ',esatte);
writeln('errate = ',errate);
writeln('totale = ',totale);
writeln;writeln('premi INVIO ');
readln;cancella;
end.

program percento;
(* calcoli percentuali INTERATTIVO *)
const n=10;
var f:array[1..n] of string[10];
     esatte,errate,totale:integer;
     ris:char;
     r1,r2,r3,p1,p2,p3,k,a,c1,c2,c3,d,pf:integer;
     s1,s2,s3:string[5];
procedure cancella;
begin
clearscreen;
end;
procedure dati;
begin
f[1]:='H2SO4';f[2]:='HNO3';f[3]:='CaSO4';f[4]:='NaNO3';f[5]:='CaSO3';
f[6]:='H2O2' ;f[7]:='H2O' ;f[8]:='HClO3' ;f[9]:='HClO4' ;f[10]:='H3PO4' ;
END;
procedure esegue;
begin
cancella;
writeln('scrivi grammi di ogni elemento presente nella formula');
writeln('moltiplicando il peso atomico intero per indice elemento');
writeln('I grammi vanno scritti come NUMERI INTERI ');
writeln('-------------------------------------------------------');
writeln(f[k]);
write('scrivi grammi primo elemento    nella formula .');readln(p1);
write('scrivi grammi secondo elemento nella formula ');readln(p2);
write('scrivi grammi terzo elemento     nella formula ');readln(p3);
pf:=p1+p2+p3;
c1:=round(p1*100/pf);
c2:=round(p2*100/pf);
c3:=round(p3*100/pf);
writeln;
writeln('esegui il calcolo delle percentuali su quaderno:poi ');
writeln('scrivi le percentuali come INTERI arrotondati allo intero vicino ');
writeln('es.35.8 ---> 36     35.5 ---->36    35.4 ----> 35 ');
writeln('---------------------------------------------------------');
write('scrivi percentuale primo     elemento =');readln(r1);
d:=abs(r1-c1);
if d>1 then begin writeln('errato:era ',c1);errate:=errate+1;end;
write('scrivi percentuale secondo  elemento =');readln(r2);
d:=abs(r2-c2);
if d>1 then begin writeln('errato:era ',c2);errate:=errate+1;end;
write('scrivi percentuale terzo      elemento  =');readln(r3);
d:=abs(r3-c3);
if d>1 then begin writeln('errato:era ',c3);errate:=errate+1;end;
writeln;
writeln('------------------ soluzione ------------------------');
writeln('peso molecolare =',pf);
writeln('percento 1 elemento =',p1,'*',100,'/',pf,' = ',c1);
writeln('percento 2 elemento =',p2,'*',100,'/',pf,' = ',c2);
writeln('percento 3 elemento =',p3,'*',100,'/',pf,' = ',c3);
writeln('-----------------------------------------------------');
writeln('premi INVIO ');
readln;cancella;
esatte:=k*3-errate;
k:=k+1;
write('per altra prova premi S,per finire premi N : ');readln(ris);
if ((ris='S') or (ris='s')) then esegue;
end;
begin
cancella;
writeln('scopo del programma:eeguire calcoli percentuali degli elementi');
writeln('presenti in formule composti proposte');
writeln('si accettano solo valori INTERI');
writeln('si accettano risultati come veri anche se differiscono dal valore');
writeln('atteso di non pi di una unitˆ,per motivi di approssimazione ');
writeln('premi INVIO');readln;cancella;
k:=1;esatte:=0;errate:=0;totale:=0;
dati;
esegue;
cancella;
writeln('risultato prova ');
writeln('esatte =',esatte);
writeln('errate =',errate);
writeln('totale =',esatte+errate);
writeln('chiama insegnante,poi premi INVIO ');readln;cancella;
end.