gas4

listati di programmi in turbo pascal 5-7 gas2a gas3 gas4

Program gas2a;
 (* esempi problemi sui GAS  INTERATTIVO con valutazione*) 
uses crt;
 const r=0.082;

   VAR    ris,rip,nmoli,numoli,dx1,dx2,dx3:real;
          a,esatte,errate,totale:integer;
     

procedure cancella;
begin
clrscr;
end;

procedure pausa;
begin
writeln('premi ENTER ');readln;
end;

procedure fine;  
begin
writeln('fine operazione:confermare :premi enter');
readln;
end;


procedure analisi1(risx,ripx:real);
var k:integer;
begin
k:=1;
dx1:=abs(risx-ripx);
writeln('differenza tra valore atteso e valore inserito=',dx1:0:5);
if ((dx1<k) or (dx1=k)) 
then begin writeln('ESATTO');esatte:=esatte+1;end
else begin writeln('ERRATO');errate:=errate+1;end;
end;


procedure analisi2(risx,ripx,ris2,rip2:real);
var k:integer;
begin
k:=1;
dx1:=abs(risx-ripx);dx2:=abs(ris2-rip2);
writeln('differenza tra valore atteso e valore inserito=',dx1:0:5);
writeln('differenza tra valore atteso e valore inserito=',dx2:0:5);
if (((dx1<k) or (dx1=k)) and ((dx2<k) or (dx2=k)))
then begin writeln('ESATTO');esatte:=esatte+1;end
else begin writeln('ERRATO');errate:=errate+1;end;
end;



procedure analisi3(risx,ripx,ris2,rip2,ris3,rip3:real);
var k:integer;
begin
k:=1;
dx1:=abs(risx-ripx);dx2:=abs(ris2-rip2);dx3:=abs(ris3-rip3);
writeln('differenza tra valore atteso e valore inserito=',dx1:0:5);
writeln('differenza tra valore atteso e valore inserito=',dx2:0:5);
writeln('differenza tra valore atteso e valore inserito=',dx3:0:5);
if (((dx1<k) or (dx1=k)) and ((dx2<k) or (dx2=k)) and ((dx3<k) or (dx3=k)))
then begin writeln('ESATTO');esatte:=esatte+1;end
else begin writeln('ERRATO');errate:=errate+1;end;
end;


procedure pressione(gas:string;pm:integer);
var p,v,t,g,hg:real;
    tk,tc:integer;
begin
writeln('calcolare la pressione in atmosfere e in mmHg ');
writeln('del gas indicato,usando i dati assegnati:R = 0.082 ');
writeln('formula generale PV=mRT/PM ');
writeln('---------------------------------------------------------');
writeln(gas);
writeln('---------------------------------------------------------');
v:=random;
v:=abs(v);
v:=round(v/1000)+1;
writeln('volume in litri ----------------=',v:0:0);
t:=random;
t:=abs(t);
tc:=round(t/100)+1;
tk:=tc+273;
writeln('temperatura in gradi centigradi =',tc:0);
g:=random;
g:=abs(g);
g:=round(g/1000)+1;
writeln('massa in grammi---------------- =',g:0:0);
writeln('----------------------------------------------------------');
writeln('scrivi il risultato ottenuto o scrivi 0 se non lo sai');
write('risultato atmosfere = ');readln(ris);
write('risultato mmHg      = ');readln(rip);
p:=(g*R*tk)/(pm*v);hg:=p*760;
analisi2(p,ris,hg,rip);
writeln('----------------------------------------------------------');
writeln('confronta con risultato atteso e passaggi da eseguire');
writeln('trasformo gradi centigradi in  kelvin :K = 273 +C  = ',tk:0);
writeln('----------------------------------------------------------');
writeln('cerco peso molecolare del gas indicato :PM = ',pm);
writeln('----------------------------------------------------------');
writeln('*************** applico la formula P = m*R*T/PM*V = ',p:0:3);
writeln('----------------------------------------------------------');

writeln('trasformo atmosfere in mmHg : Hg = atmosfere*760 = ',hg:0:3);
writeln('----------------------------------------------------------');
pausa;cancella;
end;

procedure volume(gas:string;pm:integer);
var p,v,t,g,hg,cc:real;
    tk,tc:integer;
begin
writeln('calcolare il volume in litri e in cc. ');
writeln('del gas indicato,usando i dati assegnati:R = 0.082 ');
writeln('formula generale PV=mRT/PM ');
writeln('---------------------------------------------------------');
writeln(gas);
writeln('---------------------------------------------------------');
p:=random;
p:=abs(p);
p:=round(p/1000)+1;
writeln('pressione in atmosfere ---------=',p:0:0);
t:=random;
t:=abs(t);
tc:=round(t/100)+1;
tk:=tc+273;
writeln('temperatura in gradi centigradi =',tc:0);
g:=random;
g:=abs(g);
g:=round(g/1000)+1;
writeln('massa in grammi---------------- =',g:0:0);
writeln('----------------------------------------------------------');
writeln('scrivi il risultato ottenuto o scrivi 0 se non lo sai');
write('risultato litri   = ');readln(ris);
write('risultato cc      = ');readln(rip);
v:=(g*R*tk)/(pm*p);cc:=v*1000;
analisi2(v,ris,cc,rip);
writeln('----------------------------------------------------------');
writeln('confronta con risultato atteso e passaggi da eseguire');
writeln('trasformo gradi centigradi in  kelvin :K = 273 +C  = ',tk:0);
writeln('----------------------------------------------------------');
writeln('cerco peso molecolare del gas indicato :PM = ',pm);
writeln('----------------------------------------------------------');
writeln('****************applico la formula V = m*R*T/PM*P = ',v:0:3);
writeln('----------------------------------------------------------');

writeln('trasformo litri  in  cc : cc = litri*1000 = ',cc:0:3);
writeln('----------------------------------------------------------');
pausa;cancella;
end;

procedure gradi(gas:string;pm:integer);
var p,v,t,g,hg,tc:real;    
begin
writeln('calcolare la TEMPERATURA in gradi centigradi e kelvin ');
writeln('del gas indicato,usando i dati assegnati:R = 0.082 ');
writeln('formula generale PV=mRT/PM ');
writeln('---------------------------------------------------------');
writeln(gas);
writeln('---------------------------------------------------------');
v:=random;
v:=abs(v);
v:=round(v/1000)+1;
writeln('volume in litri ----------------=',v:0:0);
p:=random;
p:=abs(p);
p:=round(p/1000)+1;
writeln('pressione in atmosfere P -------=',p:0:3);
g:=random;
g:=abs(g);
g:=round(g/1000)+1;
writeln('massa in grammi---------------- =',g:0:0);
writeln('----------------------------------------------------------');
writeln('scrivi il risultato ottenuto o scrivi 0 se non lo sai');
write('risultato kelvin     = ');readln(ris);
write('risultato centigradi = ');readln(rip);
t:=(p*v*pm)/(R*g);tc:=t-273;
analisi2(t,ris,tc,rip);
writeln('----------------------------------------------------------');
writeln('confronta con risultato atteso e passaggi da eseguire');
writeln('cerco peso molecolare del gas indicato :PM = ',pm);
writeln('----------------------------------------------------------');

writeln('*****************applico la formula T = P*V*PM/R*m= ',t:0:3);
writeln('----------------------------------------------------------');
writeln('trasformo gradi kelvin in centigradi :C = K - 273 = ',tc:0:3);
writeln('----------------------------------------------------------');
pausa;cancella;
end;

procedure massa(gas:string;pm:integer);
var p,v,t,g,hg,tc,kg:real;    
begin
writeln('calcolare la MASSA in grammi e Kg e numero di MOLI ');
writeln('del gas indicato,usando i dati assegnati:R = 0.082 ');
writeln('formula generale PV=mRT/PM ');
writeln('---------------------------------------------------------');
writeln(gas);
writeln('---------------------------------------------------------');
v:=random;
v:=abs(v);
v:=round(v/1000)+1;
writeln('volume in litri ----------------=',v:0:0);
p:=random;
p:=abs(p);
p:=round(p/1000)+1;
writeln('pressione in atmosfere P -------=',p:0:3);
t:=random;
t:=abs(t);
t:=round(t/100)+1;
writeln('temperatura in kelvin---------- =',t:0:0);
writeln('----------------------------------------------------------');
writeln('scrivi il risultato ottenuto o scrivi 0 se non lo sai');
write('risultato  grammi = ');readln(ris);
write('risultato  Kg     = ');readln(rip);
write('risultato  moli   = ');readln(nmoli);
g:=(p*v*pm)/(R*t);kg:=g/1000;numoli:=g/pm;
analisi3(g,ris,Kg,rip,numoli,nmoli);
writeln('----------------------------------------------------------');
writeln('confronta con risultato atteso e passaggi da eseguire');
writeln('cerco peso molecolare del gas indicato :PM = ',pm);
writeln('----------------------------------------------------------');
writeln('*****************applico la formula m = P*V*PM/R*T= ',g:0:3);
writeln('----------------------------------------------------------');
writeln('trasformo i grammi in Kg : Kg = grammi/1000 = ',kg:0:3);
writeln('----------------------------------------------------------');
writeln('calcolo numero moli: moli = massa/PM = ',numoli:0:3);
writeln('----------------------------------------------------------');
pausa;cancella;
end;

procedure mole(gas:string;px:integer);
var p,v,t,g,hg,tc,kg,pm:real;    
begin
writeln('calcolare la PESO MOLECOLARE in grammi per mole');
writeln('del gas indicato,usando i dati assegnati:R = 0.082 ');
writeln('formula generale PV=mRT/PM ');
writeln('---------------------------------------------------------');
writeln(gas);
writeln('---------------------------------------------------------');
v:=random;
v:=abs(v);
v:=round(v/1000);
writeln('volume in litri ----------------=',v:0:0);
p:=random;
p:=abs(p);
p:=round(p/1000)+1;
writeln('pressione in atmosfere P -------=',p:0:3);
t:=random;
t:=abs(t);
t:=round(t/100)+1;
writeln('temperatura in kelvin---------- =',t:0:0);
g:=random;
g:=abs(g);
g:=round(g/1000)+1;
writeln('massa in grammi      ---------- =',g:0:0);
writeln('----------------------------------------------------------');
writeln('scrivi il risultato ottenuto o scrivi 0 se non lo sai');
write('risultato PM   = ');readln(ris);
pm:=(g*R*t)/(p*v);analisi1(pm,ris);
writeln('----------------------------------------------------------');
writeln('confronta con risultato atteso e passaggi da eseguire');
writeln('***************applico la formula PM = m*R*T/P*V = ',pm:0:3);
writeln('----------------------------------------------------------');
pausa;clrscr;
end;


procedure pro1;
begin
pressione('idrogeno H2',2 );pressione('ossigeno O2',32);
pressione('cloro Cl2',70);pressione('azoto N2',28);
pressione('metano CH4',16);pressione('anidride carbonica CO2 ',44);
end;

procedure pro2;
begin
volume('idrogeno H2',2 );volume('ossigeno O2',32);
volume('cloro Cl2',70);volume('azoto N2',28);
volume('etilene C2H2',26);volume('anidride solforosa SO2 ',64);
end;

procedure pro3;
begin
gradi('idrogeno H2',2 );gradi('ossigeno O2',32);
gradi('cloro Cl2',70);gradi('azoto N2',28);
gradi('etilene C2H2',26);gradi('anidride solforosa SO2 ',64);
end;

procedure pro4;
begin
massa('idrogeno H2',2 );massa('ossigeno O2',32);
massa('cloro Cl2',70);massa('azoto N2',28);
massa('etilene C2H2',26);massa('anidride solforosa SO2 ',64);
end;

procedure pro5;
begin
mole('idrogeno H2',2 );mole('ossigeno O2',32);
mole('cloro Cl2',70);mole('azoto N2',28);
mole('etilene C2H2',26);mole('anidride solforosa SO2 ',64);
end;

procedure pro6;
begin
mole('idrogeno H2',2 );mole('ossigeno O2',32);
massa('cloro Cl2',70);massa('azoto N2',28);
gradi('etilene C2H2',26);gradi('anidride solforosa SO2 ',64);
volume('idrogeno H2',2 );volume('ossigeno O2',32);
pressione('cloro Cl2',70);pressione('azoto N2',28);
end;

procedure scelta;  
var s,sn:string;opzione:integer;
begin
clrscr;
writeln('seleziona opzione :');
writeln('1...calcolo PRESSIONE:interattivo');
writeln('2...calcolo VOLUME:interattivo');
writeln('3...calcolo TEMPERATURA:interattivo');
writeln('4...calcolo MASSA e numero MOLI:interattivo');
writeln('5...calcolo PESO MOLECOLARE:interattivo');
writeln('6...calcolo PARAMETRI precedenti in modo variabile');
writeln('9...fine ');
writeln('scelta =');readln(opzione);clrscr;
case opzione of
1:pro1;2:pro2;3:pro3;4:pro4;5:pro5;6:pro6;
9:fine;
end;
writeln('altra operazione?Esperimenti?:premi S...fine:premi N '); readln(sn);
if ((sn='S') or (sn='s')) then scelta ;
end;

begin            
cancella;
esatte:=0;errate:=0;
writeln('esempi proposti e commentati di problemi sui gas ');
writeln('applicando la legge generale PV=nRT = gRT/PM ');
writeln('e le formule derivate inverse :scrivere la risposta');
writeln('se decimali,usare 4 cifre DECIMALI');
pausa;
scelta;
totale:=esatte+errate;
writeln('risposte esatte =',esatte ,' su domande ',totale);
writeln('risposte errate =',errate ,' su domande ',totale);
pausa;
end.

 

Program gas3;
 (* esempi problemi sui GAS  INTERATTIVO con valutazione*) 
uses crt;
 const r=0.082;

   VAR    ris,rip,nmoli,numoli,dx1,dx2,dx3:real;
          p,v,g,t,hg,tc,tk,cc,Kg,pm1:real;
          a,esatte,errate,totale:integer;
     

procedure cancella;
begin
clrscr;
end;

procedure pausa;
begin
writeln('premi ENTER ');readln;
end;

procedure fine;  
begin
writeln('fine operazione:confermare :premi enter');
readln;
end;


procedure analisi1(risx,ripx:real);
var k:integer;
begin
k:=1;
dx1:=abs(risx-ripx);
writeln('differenza tra valore atteso e valore inserito=',dx1:0:5);
if ((dx1<k) or (dx1=k)) 
then begin writeln('ESATTO');esatte:=esatte+1;end
else begin writeln('ERRATO');errate:=errate+1;end;
end;


procedure analisi2(risx,ripx,ris2,rip2:real);
var k:integer;
begin
k:=1;
dx1:=abs(risx-ripx);dx2:=abs(ris2-rip2);
writeln('differenza tra valore atteso e valore inserito=',dx1:0:5);
writeln('differenza tra valore atteso e valore inserito=',dx2:0:5);
if (((dx1<k) or (dx1=k)) and ((dx2<k) or (dx2=k)))
then begin writeln('ESATTO');esatte:=esatte+1;end
else begin writeln('ERRATO');errate:=errate+1;end;
end;



procedure analisi3(risx,ripx,ris2,rip2,ris3,rip3:real);
var k:integer;
begin
k:=1;
dx1:=abs(risx-ripx);dx2:=abs(ris2-rip2);dx3:=abs(ris3-rip3);
writeln('differenza tra valore atteso e valore inserito=',dx1:0:5);
writeln('differenza tra valore atteso e valore inserito=',dx2:0:5);
writeln('differenza tra valore atteso e valore inserito=',dx3:0:5);
if (((dx1<k) or (dx1=k)) and ((dx2<k) or (dx2=k)) and ((dx3<k) or (dx3=k)))
then begin writeln('ESATTO');esatte:=esatte+1;end
else begin writeln('ERRATO');errate:=errate+1;end;
end;


procedure pressione(gas:string;pm:integer;vx,tx,gx:real);
begin
writeln('calcolare la pressione in atmosfere e in mmHg ');
writeln('del gas indicato,usando i dati assegnati:R = 0.082 ');
writeln('formula generale PV=mRT/PM ');
writeln('---------------------------------------------------------');
writeln(gas);
writeln('---------------------------------------------------------');
v:=vx;
writeln('volume in litri ----------------=',v:0:3);
tc:=tx;
tk:=tc+273;
writeln('temperatura in gradi centigradi =',tc:0:3);
g:=gx;
writeln('massa in grammi---------------- =',g:0:3);
writeln('----------------------------------------------------------');
writeln('scrivi il risultato ottenuto o scrivi 0 se non lo sai');
write('risultato atmosfere = ');readln(ris);
write('risultato mmHg      = ');readln(rip);
p:=(g*R*tk)/(pm*v);hg:=p*760;
analisi2(p,ris,hg,rip);
writeln('----------------------------------------------------------');
writeln('confronta con risultato atteso e passaggi da eseguire');
writeln('trasformo gradi centigradi in  kelvin :K = 273 +C  = ',tk:0:3);
writeln('----------------------------------------------------------');
writeln('cerco peso molecolare del gas indicato :PM = ',pm);
writeln('----------------------------------------------------------');
writeln('*************** applico la formula P = m*R*T/PM*V = ',p:0:3);
writeln('----------------------------------------------------------');
writeln('trasformo atmosfere in mmHg : Hg = atmosfere*760 = ',hg:0:3);
writeln('----------------------------------------------------------');
pausa;cancella;
end;

procedure volume(gas:string;pm:integer;px,tx,gx:real);
begin
writeln('calcolare il volume in litri e in cc. ');
writeln('del gas indicato,usando i dati assegnati:R = 0.082 ');
writeln('formula generale PV=mRT/PM ');
writeln('---------------------------------------------------------');
writeln(gas);
writeln('---------------------------------------------------------');
p:=px;
writeln('pressione in atmosfere ---------=',p:0:3);
t:=tx;
tk:=t+273;
writeln('temperatura in gradi centigradi =',t:0:3);
g:=gx;
writeln('massa in grammi---------------- =',g:0:3);
writeln('----------------------------------------------------------');
writeln('scrivi il risultato ottenuto o scrivi 0 se non lo sai');
write('risultato litri   = ');readln(ris);
write('risultato cc      = ');readln(rip);
v:=(g*R*tk)/(pm*p);cc:=v*1000;
analisi2(v,ris,cc,rip);
writeln('----------------------------------------------------------');
writeln('confronta con risultato atteso e passaggi da eseguire');
writeln('trasformo gradi centigradi in  kelvin :K = 273 +C  = ',tk:0:3);
writeln('----------------------------------------------------------');
writeln('cerco peso molecolare del gas indicato :PM = ',pm);
writeln('----------------------------------------------------------');
writeln('****************applico la formula V = m*R*T/PM*P = ',v:0:3);
writeln('----------------------------------------------------------');
writeln('trasformo litri  in  cc : cc = litri*1000 = ',cc:0:3);
writeln('----------------------------------------------------------');
pausa;cancella;
end;

procedure gradi(gas:string;pm:integer;px,vx,gx:real);   
begin
writeln('calcolare la TEMPERATURA in gradi centigradi e kelvin ');
writeln('del gas indicato,usando i dati assegnati:R = 0.082 ');
writeln('formula generale PV=mRT/PM ');
writeln('---------------------------------------------------------');
writeln(gas);
writeln('---------------------------------------------------------');
v:=vx;
writeln('volume in litri ----------------=',v:0:3);
p:=px;
writeln('pressione in atmosfere P -------=',p:0:3);
g:=gx;
writeln('massa in grammi---------------- =',g:0:3);
writeln('----------------------------------------------------------');
writeln('scrivi il risultato ottenuto o scrivi 0 se non lo sai');
write('risultato kelvin     = ');readln(ris);
write('risultato centigradi = ');readln(rip);
t:=(p*v*pm)/(R*g);tc:=t-273;
analisi2(t,ris,tc,rip);
writeln('----------------------------------------------------------');
writeln('confronta con risultato atteso e passaggi da eseguire');
writeln('cerco peso molecolare del gas indicato :PM = ',pm);
writeln('----------------------------------------------------------');
writeln('*****************applico la formula T = P*V*PM/R*m= ',t:0:3);
writeln('----------------------------------------------------------');
writeln('trasformo gradi kelvin in centigradi :C = K - 273 = ',tc:0:3);
writeln('----------------------------------------------------------');
pausa;cancella;
end;

procedure massa(gas:string;pm:integer;px,vx,tx:real);   
begin
writeln('calcolare la MASSA in grammi e Kg e numero di MOLI ');
writeln('del gas indicato,usando i dati assegnati:R = 0.082 ');
writeln('formula generale PV=mRT/PM ');
writeln('---------------------------------------------------------');
writeln(gas);
writeln('---------------------------------------------------------');
v:=vx;
writeln('volume in litri ----------------=',v:0:3);
p:=px;
writeln('pressione in atmosfere P -------=',p:0:3);
t:=tx;
writeln('temperatura in kelvin---------- =',t:0:3);
writeln('----------------------------------------------------------');
writeln('scrivi il risultato ottenuto o scrivi 0 se non lo sai');
write('risultato  grammi = ');readln(ris);
write('risultato  Kg     = ');readln(rip);
write('risultato  moli   = ');readln(nmoli);
g:=(p*v*pm)/(R*t);kg:=g/1000;numoli:=g/pm;
analisi3(g,ris,Kg,rip,numoli,nmoli);
writeln('----------------------------------------------------------');
writeln('confronta con risultato atteso e passaggi da eseguire');
writeln('cerco peso molecolare del gas indicato :PM = ',pm);
writeln('----------------------------------------------------------');
writeln('*****************applico la formula m = P*V*PM/R*T= ',g:0:3);
writeln('----------------------------------------------------------');
writeln('trasformo i grammi in Kg : Kg = grammi/1000 = ',kg:0:3);
writeln('----------------------------------------------------------');
writeln('calcolo numero moli: moli = massa/PM = ',numoli:0:3);
writeln('----------------------------------------------------------');
pausa;cancella;
end;

procedure mole(gas:string;px1:integer;px,vx,tx,gx:real);
begin
writeln('calcolare la PESO MOLECOLARE in grammi per mole');
writeln('del gas indicato,usando i dati assegnati:R = 0.082 ');
writeln('formula generale PV=mRT/PM ');
writeln('---------------------------------------------------------');
writeln(gas);
writeln('---------------------------------------------------------');
v:=vx;
writeln('volume in litri ----------------=',v:0:3);
p:=px;
writeln('pressione in atmosfere P -------=',p:0:3);
t:=tx;
writeln('temperatura in kelvin---------- =',t:0:3);
g:=gx;
writeln('massa in grammi      ---------- =',g:0:3);
writeln('----------------------------------------------------------');
writeln('scrivi il risultato ottenuto o scrivi 0 se non lo sai');
write('risultato PM   = ');readln(ris);
pm1:=(g*R*t)/(p*v);analisi1(pm1,ris);
writeln('----------------------------------------------------------');
writeln('confronta con risultato atteso e passaggi da eseguire');
writeln('***************applico la formula PM = m*R*T/P*V = ',pm1:0:3);
writeln('----------------------------------------------------------');
pausa;clrscr;
end;


procedure pro1;
begin
(* PM,volume,gradiC,grammi *)
pressione('idrogeno H2',2,100,50,2000);
pressione('ossigeno O2',32,200,50,2000);
pressione('cloro Cl2',70,300,80,3000);
pressione('azoto N2',28,120,45,2000);
pressione('metano CH4',16,130,100,2000);
pressione('anidride carbonica CO2 ',44,300,120,5000);
end;

procedure pro2;
begin
(* PM,pressione,gradi,grammi *)
volume('idrogeno H2',2,100,50,200);
volume('ossigeno O2',32,200,50,2000);
volume('cloro Cl2',70,300,80,3000);
volume('azoto N2',28,120,45,2000);
volume('metano CH4',16,130,100,2000);
volume('anidride carbonica CO2 ',44,300,120,5000);
end;


procedure pro3;
begin
(* PM,pressione,volume,grammi *)
gradi('idrogeno H2',2,100,50,2000);
gradi('ossigeno O2',32,200,50,2000);
gradi('cloro Cl2',70,300,80,3000);
gradi('azoto N2',28,120,45,2000);
gradi('metano CH4',16,130,100,2000);
gradi('anidride carbonica CO2 ',44,300,120,5000);
end;

procedure pro4;
begin
(* PM,pressione,volume,gradi *)
massa('idrogeno H2',2,100,50,20);
massa('ossigeno O2',32,200,50,20);
massa('cloro Cl2',70,300,80,30);
massa('azoto N2',28,120,45,20);
massa('metano CH4',16,130,100,20);
massa('anidride carbonica CO2 ',44,300,120,50);
end;


procedure pro5;
begin
(* PM,pressione,volume,gradi,grammi *)
mole('idrogeno H2',2,100,50,60,2000);
mole('ossigeno O2',32,200,50,70,2000);
mole('cloro Cl2',70,300,80,80,3000);
mole('azoto N2',28,120,45,90,2000);
mole('metano CH4',16,130,100,40,2000);
mole('anidride carbonica CO2 ',44,300,120,100,5000);
end;


procedure pro6;
begin
pressione('idrogeno H2',2,100,200,10);
volume('idrogeno H2',2,100,200,10);
gradi('idrogeno H2',2,100,200,10);
massa('idrogeno H2',2,100,200,10);
mole('idrogeno H2',2,100,200,120,10);
pressione('cloro Cl2',70,100,200,10);
volume('ossigeno O2',32,100,200,10);
gradi('anidride solforosa SO2',64,100,200,10);
massa('anidride carbonica CO2',44,100,200,10);
mole('cloro Cl2 ',70,100,200,120,10);
end;

procedure scelta;  
var s,sn:string;opzione:integer;
begin
clrscr;
writeln('seleziona opzione :');
writeln('1...calcolo PRESSIONE:interattivo');
writeln('2...calcolo VOLUME:interattivo');
writeln('3...calcolo TEMPERATURA:interattivo');
writeln('4...calcolo MASSA e numero MOLI:interattivo');
writeln('5...calcolo PESO MOLECOLARE:interattivo');
writeln('6...calcolo PARAMETRI precedenti in modo variabile');
writeln('9...fine ');
writeln('scelta =');readln(opzione);clrscr;
case opzione of
1:pro1;2:pro2;3:pro3;4:pro4;5:pro5;6:pro6;
9:fine;
end;
writeln('altra operazione?Esperimenti?:premi S...fine:premi N '); readln(sn);
if ((sn='S') or (sn='s')) then scelta ;
end;

begin            
cancella;
esatte:=0;errate:=0;
writeln('esempi proposti e commentati di problemi sui gas ');
writeln('applicando la legge generale PV=nRT = gRT/PM ');
writeln('e le formule derivate inverse :scrivere la risposta');
writeln('se decimali,usare 4 cifre DECIMALI');
pausa;
scelta;
totale:=esatte+errate;
writeln('risposte esatte =',esatte ,' su domande ',totale);
writeln('risposte errate =',errate ,' su domande ',totale);
pausa;
end.

 

Program gas4;
 (* esempi problemi sui GAS  INTERATTIVO con valutazione*) 
 (* dati da inserire da libro o foglio *)
uses crt;
 const r=0.082;

   VAR    ris,rip,nmoli,numoli,dx1,dx2,dx3:real;
          p,v,g,t,hg,tc,tk,cc,Kg,pm1:real;
          a,esatte,errate,totale,pm:integer;
     

procedure cancella;
begin
clrscr;
end;

procedure pausa;
begin
writeln('premi ENTER ');readln;
end;

procedure fine;  
begin
writeln('fine operazione:confermare :premi enter');
readln;
end;


procedure analisi1(risx,ripx:real);
var k:integer;
begin
k:=1;
dx1:=abs(risx-ripx);
writeln('differenza tra valore atteso e valore inserito=',dx1:0:5);
if ((dx1<k) or (dx1=k)) 
then begin writeln('ESATTO');esatte:=esatte+1;end
else begin writeln('ERRATO');errate:=errate+1;end;
end;


procedure analisi2(risx,ripx,ris2,rip2:real);
var k:integer;
begin
k:=2;
dx1:=abs(risx-ripx);dx2:=abs(ris2-rip2);
writeln('differenza tra valore atteso e valore inserito=',dx1:0:5);
writeln('differenza tra valore atteso e valore inserito=',dx2:0:5);
if (((dx1<k) or (dx1=k)) and ((dx2<k) or (dx2=k)))
then begin writeln('ESATTO');esatte:=esatte+1;end
else begin writeln('ERRATO');errate:=errate+1;end;
end;



procedure analisi3(risx,ripx,ris2,rip2,ris3,rip3:real);
var k:integer;
begin
k:=1;
dx1:=abs(risx-ripx);dx2:=abs(ris2-rip2);dx3:=abs(ris3-rip3);
writeln('differenza tra valore atteso e valore inserito=',dx1:0:5);
writeln('differenza tra valore atteso e valore inserito=',dx2:0:5);
writeln('differenza tra valore atteso e valore inserito=',dx3:0:5);
if (((dx1<k) or (dx1=k)) and ((dx2<k) or (dx2=k)) and ((dx3<k) or (dx3=k)))
then begin writeln('ESATTO');esatte:=esatte+1;end
else begin writeln('ERRATO');errate:=errate+1;end;
end;


procedure pressione;
begin
writeln('calcolare la pressione in atmosfere e in mmHg ');
writeln('usando i dati assegnati:R = 0.082 ');
writeln('formula generale PV=mRT/PM ');
writeln('---------------------------------------------------------');
write('volume in litri = ');readln(v);
write('temperatura in gradi centigradi =');readln(t);
write('massa in grammi---------------- =');readln(g);
write('peso molecolare---------------- =');readln(pm);
tk:=tc+273;
writeln('----------------------------------------------------------');
writeln('scrivi il risultato ottenuto o scrivi 0 se non lo sai');
write('risultato atmosfere = ');readln(ris);
write('risultato mmHg      = ');readln(rip);
p:=(g*R*tk)/(pm*v);hg:=p*760;
analisi2(p,ris,hg,rip);
writeln('----------------------------------------------------------');
writeln('confronta con risultato atteso e passaggi da eseguire');
writeln('trasformo gradi centigradi in  kelvin :K = 273 +C  = ',tk:0:3);
writeln('----------------------------------------------------------');
writeln('*************** applico la formula P = m*R*T/PM*V = ',p:0:3);
writeln('----------------------------------------------------------');
writeln('trasformo atmosfere in mmHg : Hg = atmosfere*760 = ',hg:0:3);
writeln('----------------------------------------------------------');
pausa;cancella;
end;

procedure volume;
begin
writeln('calcolare il volume in litri e in cc. ');
writeln('usando i dati assegnati:R = 0.082 ');
writeln('formula generale PV=mRT/PM ');
writeln('---------------------------------------------------------');
write('pressione in atmosfere ---------=');readln(p);
write('temperatura in gradi centigradi =');readln(t);tk:=t+273;
write('massa in grammi---------------- =');readln(g);
write('peso molecolare---------------- =');readln(pm);
writeln('----------------------------------------------------------');
writeln('scrivi il risultato ottenuto o scrivi 0 se non lo sai');
write('risultato litri   = ');readln(ris);
write('risultato cc      = ');readln(rip);
v:=(g*R*tk)/(pm*p);cc:=v*1000;
analisi2(v,ris,cc,rip);
writeln('----------------------------------------------------------');
writeln('confronta con risultato atteso e passaggi da eseguire');
writeln('trasformo gradi centigradi in  kelvin :K = 273 +C  = ',tk:0:3);
writeln('----------------------------------------------------------');
writeln('****************applico la formula V = m*R*T/PM*P = ',v:0:3);
writeln('----------------------------------------------------------');
writeln('trasformo litri  in  cc : cc = litri*1000 = ',cc:0:3);
writeln('----------------------------------------------------------');
pausa;cancella;
end;

procedure gradi;   
begin
writeln('calcolare la TEMPERATURA in gradi centigradi e kelvin ');
writeln('usando i dati assegnati:R = 0.082 ');
writeln('formula generale PV=mRT/PM ');
writeln('---------------------------------------------------------');
write('volume in litri ----------------=');readln(v);
write('pressione in atmosfere P -------=');readln(p);
write('massa in grammi---------------=');readln(g);
write('peso molecolare-----------------=');readln(pm);
writeln('----------------------------------------------------------');
writeln('scrivi il risultato ottenuto o scrivi 0 se non lo sai');
write('risultato kelvin     = ');readln(ris);
write('risultato centigradi = ');readln(rip);
t:=(p*v*pm)/(R*g);tc:=t-273;
analisi2(t,ris,tc,rip);
writeln('----------------------------------------------------------');
writeln('confronta con risultato atteso e passaggi da eseguire');
writeln('----------------------------------------------------------');
writeln('*****************applico la formula T = P*V*PM/R*m= ',t:0:3);
writeln('----------------------------------------------------------');
writeln('trasformo gradi kelvin in centigradi :C = K - 273 = ',tc:0:3);
writeln('----------------------------------------------------------');
pausa;cancella;
end;

procedure massa;  
begin
writeln('calcolare la MASSA in grammi e Kg e numero di MOLI ');
writeln('usando i dati assegnati:R = 0.082 ');
writeln('formula generale PV=mRT/PM ');
write('volume in litri ------------------=');readln(v);
write('pressione in atmosfere P ---------=');readln(p);
write('temperatura in kelvin------------ =');readln(t);
write('peso molecolare-------------------=');readln(pm);
writeln('----------------------------------------------------------');
writeln('scrivi il risultato ottenuto o scrivi 0 se non lo sai');
write('risultato  grammi = ');readln(ris);
write('risultato  Kg     = ');readln(rip);
write('risultato  moli   = ');readln(nmoli);
g:=(p*v*pm)/(R*t);kg:=g/1000;numoli:=g/pm;
analisi3(g,ris,Kg,rip,numoli,nmoli);
writeln('----------------------------------------------------------');
writeln('confronta con risultato atteso e passaggi da eseguire');
writeln('----------------------------------------------------------');
writeln('*****************applico la formula m = P*V*PM/R*T= ',g:0:3);
writeln('----------------------------------------------------------');
writeln('trasformo i grammi in Kg : Kg = grammi/1000 = ',kg:0:3);
writeln('----------------------------------------------------------');
writeln('calcolo numero moli: moli = massa/PM = ',numoli:0:3);
writeln('----------------------------------------------------------');
pausa;cancella;
end;

procedure mole; 
begin
writeln('calcolare la PESO MOLECOLARE in grammi per mole');
writeln('usando i dati assegnati:R = 0.082 ');
writeln('formula generale PV=mRT/PM ');
writeln('---------------------------------------------------------');
write('volume in litri ------------------=');readln(v);
write('pressione in atmosfere P ---------=');readln(p);
writeln('temperatura in kelvin---------- =');readln(t);
writeln('massa in grammi      ---------- =');readln(g);
writeln('----------------------------------------------------------');
writeln('scrivi il risultato ottenuto o scrivi 0 se non lo sai');
write('risultato PM   = ');readln(ris);
pm1:=(g*R*t)/(p*v);analisi1(pm1,ris);
writeln('----------------------------------------------------------');
writeln('confronta con risultato atteso e passaggi da eseguire');
writeln('***************applico la formula PM = m*R*T/P*V = ',pm1:0:3);
writeln('----------------------------------------------------------');
pausa;cancella;
end;


procedure pro1;
begin
pressione;
end;

procedure pro2;
begin
volume;
end;


procedure pro3;
begin
gradi;
end;

procedure pro4;
begin
massa;
end;


procedure pro5;
begin
mole;
end;


procedure scelta;  
var s,sn:string;opzione:integer;
begin
clrscr;
writeln('seleziona opzione :');
writeln('1...calcolo PRESSIONE:interattivo');
writeln('2...calcolo VOLUME:interattivo');
writeln('3...calcolo TEMPERATURA:interattivo');
writeln('4...calcolo MASSA e numero MOLI:interattivo');
writeln('5...calcolo PESO MOLECOLARE:interattivo');
writeln('9...fine ');
writeln('scelta =');readln(opzione);clrscr;
case opzione of
1:pro1;2:pro2;3:pro3;4:pro4;5:pro5;
9:fine;
end;
writeln('altra operazione?Esperimenti?:premi S...fine:premi N '); readln(sn);
if ((sn='S') or (sn='s')) then scelta ;
end;

begin            
cancella;
esatte:=0;errate:=0;
writeln('esempi proposti e commentati di problemi sui gas ');
writeln('applicando la legge generale PV=nRT = gRT/PM ');
writeln('e le formule derivate inverse :scrivere la risposta');
writeln('se decimali,usare 4 cifre DECIMALI');
pausa;
scelta;
totale:=esatte+errate;
writeln('risposte esatte =',esatte ,' su domande ',totale);
writeln('risposte errate =',errate ,' su domande ',totale);
pausa;
end.

 

ritorna