esercizi di chimica con turbo pascal 1.1 su mac
Program stechi1; (* problemi di stechiometria solo con GRAMMI non MOLI o LITRI *)
VAR cr1,cr2,cp1,cp2,pr1,pr2,pp1,pp2:integer; tr1,tr2,tp1,tp2,xr1,xr2,xp1,xp2,gr1,gr2,gp1,gp2:real; a:integer;
procedure pausa; begin writeln('premi ENTER ');readln; end;
procedure fine; (* conferma uscita operazione *) begin writeln('fine operazione:confermare :premi enter'); readln; end;
procedure testo1; begin writeln('passa a chiedere PESI MOLECOLARI e COEFFICIENTI stechiometrici'); writeln('CALCOLA prodotto tra coefficiente e peso molecolare G = c * pm '); writeln; end;
procedure testo2; begin writeln('passa a chiedere MASSA nota in grammi '); end;
procedure testo3; begin writeln('------------------------------------------------'); writeln('calcola grammi di sostanze richieste e ottenute '); end;
procedure datir1; begin write('peso atomico o molecolare reattivo1 ');readln(pr1); write('coefficiente stechiometrico reattivo1 ');readln(cr1); tr1:=pr1*cr1; writeln('grammi totali =',tr1:0:8); end;
procedure datir2; begin write('peso atomico o molecolare reattivo2 ');readln(pr2); write('coefficiente stechiometrico reattivo1 ');readln(cr2); tr2:=pr2*cr2;writeln('grammi totali =',tr2:0:8); end;
procedure datip1; begin write('peso atomico o molecolare prodotto1 ');readln(pp1); write('coefficiente stechiometrico prodotto1 ');readln(cp1); tp1:=pp1*cp1;writeln('grammi totali =',tp1:0:8); end;
procedure datip2; begin write('peso atomico o molecolare prodotto2 ');readln(pp2); write('coefficiente stechiometrico prodotto2 ');readln(cp2); tp2:=pp2*cp2;writeln('grammi totali =',tp2:0:8); end;
procedure massar1; begin write('grammi reattivo1 ');readln(gr1); end;
procedure massar2; begin write('grammi reattivo2 ');readln(gr2); end;
procedure massap1; begin write('grammi prodotto1 ');readln(gp1); end;
procedure massap2; begin write('grammi prodotto2 ');readln(gp2); end;
procedure calcola1; begin testo3; xr2:=gr1*tr2/tr1; xp1:=gr1*tp1/tr1; writeln('grammi reattivo2 necessari xr2:=gr1*tr2/tr1; ',xr2:8:5); writeln('grammi prodotto1 ottenuti xp1:=gr1*tp1/tr1; ',xp1:8:5); end;
procedure calcola2; begin testo3; xr1:=gr2*tr1/tr2; xp1:=gr2*tp1/tr2; writeln('grammi reattivo1 necessari xr1:=gr2*tr1/tr2; ',xr1:8:5); writeln('grammi prodotto1 ottenuti xp1:=gr2*tp1/tr2; ',xp1:8:5); end;
procedure calcola3; begin testo3; xr1:=gp1*tr1/tp1; xr2:=gp1*tr2/tp1; writeln('grammi reattivo1 necessari xr1:=gp1*tr1/tp1; ',xr1:8:5); writeln('grammi reattivo2 necessari xr2:=gp1*tr2/tp1; ',xr2:8:5); end;
procedure calcola4; begin testo3; xp1:=gr1*tp1/tr1; xp2:=gr1*tp2/tr1; writeln('grammi prodotto1 ottenuti xp1:=gr1*tp1/tr1; ',xp1:8:5); writeln('grammi prodotto2 ottenuti xp2:=gr1*tp2/tr1; ',xp2:8:5); end;
procedure calcola5; begin testo3; xr1:=gp1*tr1/tp1; xp2:=gp1*tp2/tp1; writeln('grammi reattivo necessari xr1:=gp1*tr1/tp1; ',xr1:8:5); writeln('grammi prodotto2 ottenuti xp2:=gp1*tp2/tp1; ',xp2:8:5); end;
procedure calcola6; begin testo3; xr1:=gp2*tr1/tp2; xp1:=gp2*tp1/tp2; writeln('grammi reattivo1 necessari xr1:=gp2*tr1/tp2; ',xr1:8:5); writeln('grammi prodotto2 ottenuti xp1:=gp2*tp1/tp2; ',xp1:8:5); end;
procedure calcola7; begin testo3; xr2:=gr1*tr2/tr1; xp1:=gr1*tp1/tr1; xp2:=gr1*tp2/tr1; writeln('grammi reattivo2 necessari xr2:=gr1*tr2/tr1; ',xr2:8:5); writeln('grammi prodotto1 ottenuti xp1:=gr1*tp1/tr1; ',xp1:8:5); writeln('grammi prodotto2 ottenuti xp2:=gr1*tp2/tr1; ',xp2:8:5); end;
procedure calcola8; begin testo3; xr1:=gr2*tr1/tr2; xp1:=gr2*tp1/tr2; xp2:=gr2*tp2/tr2; writeln('grammi reattivo1 necessari xr1:=gr2*tr1/tr2; ',xr1:8:5); writeln('grammi prodotto1 ottenuti xp1:=gr2*tp1/tr2; ',xp1:8:5); writeln('grammi prodotto2 ottenuti xp2:=gr2*tp2/tr2; ',xp2:8:5); end;
procedure calcola9; begin testo3; xr1:=gp1*tr1/tp1; xr2:=gp1*tr2/tp1; xp2:=gp1*tp2/tp1; writeln('grammi reattivo1 necessari xr1:=gp1*tr1/tp1; ',xr1:8:5); writeln('grammi reattivo2 necessari xr2:=gp1*tr2/tp1; ',xr2:8:5); writeln('grammi prodotto2 ottenuti xp2:=gp1*tp2/tp1; ',xp2:8:5); end;
procedure calcola10; begin testo3; xr1:=gp2*tr1/tp2; xr2:=gp2*tr2/tp2; xp1:=gp2*tp1/tp2; writeln('grammi reattivo1 necessari xr1:=gp2*tr1/tp2; ',xr1:8:5); writeln('grammi reattivo2 necessari xr2:=gp2*tr2/tp2; ',xr2:8:5); writeln('grammi prodotto2 ottenuti xp1:=gp2*tp1/tp2; ',xp1:8:5); end;
procedure pro1; begin testo1;datir1;datir2;datip1;testo2;massar1;calcola1;pausa; end;
procedure pro2; begin testo1;datir1;datir2;datip1;testo2;massar2;calcola2;pausa; end;
procedure pro3; begin testo1;datir1;datir2;datip1;testo2;massap1;calcola3;pausa; end;
procedure pro4; begin testo1;datir1;datip1;datip2;testo2;massar1;calcola4;pausa; end;
procedure pro5; begin testo1;datir1;datip1;datip2;testo2;massap1;calcola5;pausa; end;
procedure pro6; begin testo1;datir1;datip1;datip2;testo2;massap2;calcola6;pausa; end;
procedure pro7; begin testo1;datir1;datir2;datip1;datip2;testo2;massar1;calcola7;pausa; end;
procedure pro8; begin testo1;datir1;datir2;datip1;datip2;testo2;massar2;calcola8;pausa; end;
procedure pro9; begin testo1;datir1;datir2;datip1;datip2;testo2;massap1;calcola9;pausa; end;
procedure pro10; begin testo1;datir1;datir2;datip1;datip2;testo2;massap2;calcola10;pausa; end;
procedure scelta; (* procedura con scelta opzioni e uscita *) var s,sn:string;opzione:integer; begin clearscreen; writeln('seleziona opzione possibili tipi di problemi:'); writeln('masse solo in grammi...non in moli o volumi '); writeln('---------------------------------------------'); writeln('SINTESI.1,2,3..DECOMPOSIZIONE 4,5,6..COMBINAZIONE 7,8,9,10 '); writeln('1...gA + xB ---> yAB :noti grammi di A ,calcola grammi di B,AB'); writeln('2...xA + gB ---> yAB :noti grammi di B ,calcola grammi di A,AB'); writeln('3...xA + yB ---> gAB :noti grammi di AB ,calcola grammi di A,B'); writeln('4...gAB ---> xA + yB :noti grammi di AB ,calcola grammi di A,B'); writeln('5...xAB ---> gA + yB :noti grammi di A ,calcola grammi di AB,B'); writeln('6...xAB ---> yA + gB :noti grammi di B ,calcola grammi di A,AB'); writeln('7...gA + xB ---> yC + zD :noti gA ,calcola grammi B,C,D '); writeln('8...xA + gB ---> yC + zD :noti gB ,calcola grammi A,C,D '); writeln('9...xA + yB ---> gC + zD :noti gC ,calcola grammi A,B,D '); writeln('10..xA + yB ---> zC + gD :noti gD ,calcola grammi A,B,C '); writeln('15...fine '); writeln('scelta =');readln(opzione); clearscreen; case opzione of 1:pro1; 2:pro2; 3:pro3; 4:pro4; 5:pro5; 6:pro6; 7:pro7; 8:pro8; 9:pro9; 10:pro10; 15:fine; end; writeln('altra operazione?Esperimenti?:premi S...fine:premi N '); readln(sn); if sn='S' then scelta ; end;
begin (* programma di lancio *) clearscreen; scelta; end.
Program stechi3; (* problemi di stechiometria solo con GRAMMI o LITRI *)
VAR gn,pn,cn,tn,n,a,vn:integer; cx :array[1..5] of integer; px :array[1..5] of integer; tx :array[1..5] of integer; gx :array[1..5] of real;
procedure pausa; begin writeln('premi ENTER ');readln; end;
procedure fine; (* conferma uscita operazione *) begin writeln('fine operazione:confermare :premi enter'); readln; end;
procedure testo1; begin writeln('passa a chiedere sostanza nota in grammi '); writeln('peso molecolare e coefficiente stechiometrico '); end;
procedure testo1v; begin writeln('passa a chiedere sostanza nota in litri. '); end;
procedure testo2; begin writeln; writeln('passa a chiedere PESI MOLECOLARI e COEFFICIENTI stechiometrici'); writeln('delle sostanze incognite,in ordine,da sinistra a destra '); writeln('CALCOLA prodotto tra coefficiente e peso molecolare G = c * pm '); writeln; end;
procedure testo2v; begin writeln; writeln('passa a chiedere COEFFICIENTI stechiometrici '); writeln('delle sostanze incognite,in ordine,da sinistra a destra '); writeln('CALCOLA prodotto tra coefficiente e volume molecolare G = c * vn '); writeln; end;
procedure testo3; begin writeln('------------------------------------------------'); writeln('calcola grammi di sostanze richieste e ottenute '); end;
procedure testo3v; begin writeln('------------------------------------------------'); writeln('calcola volume di sostanze richieste e ottenute '); end;
procedure totale1; (* calcola grammi stechiometrici noti *) begin tn:=pn*cn; writeln('grammi stechiometrici sostanza nota = tn:=pn*cn; ',tn); end;
procedure totale1v; (* calcola litri stechiometrici noti *) begin tn:=vn*cn; writeln('volume in litri. stechiometrici sostanza nota = tn:=vn*cn; ',tn); end;
procedure totale2(n:integer); (* calcola grammi stechiometrici incognite *) begin for a:=1 to n do begin tx[a]:=px[a]*cx[a]; writeln('grammi stechiometrici sostanza ',a,'...',tx[a]); end; end;
procedure totale2v(n:integer); (* calcola litri stechiometrici incognite *) begin for a:=1 to n do begin tx[a]:=vn*cx[a]; writeln('volume in litri.stechiometrici sostanza ',a,'...',tx[a]); end; end;
procedure dati1; (* chiede dati sostanza nota *) begin testo1; write('grammi noti di una sostanza =');readln(gn); write('peso molecolare della sostanza= ');readln(pn); write('coefficiente stechiometrico della sostanza = ');readln(cn); totale1; end;
procedure dati1v; (* chiede dati sostanza nota *) begin testo1v; write('volume in litri. noti di una sostanza =');readln(gn); write('coefficiente stechiometrico della sostanza =');readln(cn); totale1v; end;
procedure dati2(n:integer); (* chiede dati incognite *) begin testo2; for a:=1 to n do begin write('peso molecolare sostanza ',a,'...');readln(px[a]); write('coefficiente sostanza ',a,'...');readln(cx[a]); end; totale2(n); end;
procedure dati2v(n:integer); (* chiede dati incognite *) begin testo2v; for a:=1 to n do begin write('coefficiente sostanza ',a,'...');readln(cx[a]); end; totale2v(n); end;
procedure calcola1(n:integer); (* calcola grammi sostanze incognite *) begin testo3; writeln('--------------------------------------------------'); for a:=1 to n do begin gx[a]:=gn*tx[a]/tn; writeln('grammi sostanza gx[a]:=gn*tx[a]/tn; ',a,'...',gx[a]:8:5); end; end;
procedure calcola1v(n:integer); (* calcola grammi sostanze incognite *) begin testo3v; writeln('--------------------------------------------------'); for a:=1 to n do begin gx[a]:=gn*tx[a]/tn; writeln('volume sostanza gx[a]:=gn*tx[a]/tn; ',a,'...',gx[a]:8:5); end; end;
procedure pro1; begin dati1;dati2(n);calcola1(n);pausa; end;
procedure pro2; begin dati1v;dati2v(n);calcola1v(n);pausa; end;
procedure scelta; (* procedura con scelta opzioni e uscita *) label salta; var s,sn:string;opzione:integer; begin clearscreen; writeln('seleziona opzione possibili tipi di problemi:'); writeln('SINTESI.DECOMPOSIZIONE .COMBINAZIONE '); writeln('nota per inserimento dati:'); writeln('inserire prima i dati della sostanza di massa o volume noti'); writeln('inserire poi in ordine,da sinistra a destra,i dati delle altre'); writeln('sostanze,prima,seconda,terza,quarta..come richiesto'); writeln('es.nella reazione HCl + NaOH -----> NaCl + H2O '); writeln('se HCl risulta = 100 grammi '); writeln('le altre sostanze,reagenti e prodotti,sono denominate come '); writeln('NaOH=sostanza1..NaCl=sostanza2..H20=sostanza3 '); writeln('-----------------------------------------------------------'); writeln('viene inoltre chiesto di indicare il numero di sostanze '); writeln('presenti nella reazione:es.precedente = 4 '); pausa;clearscreen; writeln('REAGENTI e PRODOTTI espressi in GRAMMI '); writeln('nota massa in grammi di una sostanza,calcola masse delle altre'); writeln('-------------------------------------------------------------'); writeln('1...aA + bB -------> cAB '); writeln('1...cAB -------> aA + bB '); writeln('1...aA + bB -------> cC + dD '); writeln('-------------------------------------------------------------'); writeln('REAGENTI e PRODOTTI espressi in VOLUMI in litri'); writeln('noto volume di una sostanza,calcola volumi delle altre '); writeln('2..aA + bB --------> cAB '); writeln('2..cAB --------> aA + bB '); writeln('2..aA + bB --------> cC + dD '); writeln('------------------------------------------------------------'); writeln('9...fine '); writeln('scelta =');readln(opzione); if opzione=9 then goto salta; repeat write('scrivi numero sostanze presenti nella reazione :1,2,3,5 ');readln(n); until ((n<6) and (n>1)); n:=n-1; clearscreen; case opzione of 1:pro1; 2:pro2; 9:fine; end; salta: writeln('altra operazione?Esperimenti?:premi S...fine:premi N '); readln(sn); if sn='S' then scelta ; end;
begin (* programma di lancio *) clearscreen; vn:=22; scelta; end.
Program stechi4c; (* problemi di stechiometria solo con GRAMMI o LITRI *)
VAR gn,pn,cn,tn,n,a:integer; cx :array[1..5] of integer; px :array[1..5] of integer; tx :array[1..5] of integer; txv:array[1..5] of real; gx :array[1..5] of real; vx,vn,tnv,vs:real;
procedure pausa; begin writeln('premi ENTER ');readln; end;
procedure fine; (* conferma uscita operazione *) begin writeln('fine operazione:confermare :premi enter'); readln; end;
procedure testo1; begin writeln('passa a chiedere sostanza nota in grammi '); writeln('peso molecolare e coefficiente stechiometrico '); end;
procedure testo1v; begin writeln('passa a chiedere sostanza nota in litri. '); end;
procedure testo2; begin writeln; writeln('passa a chiedere PESI MOLECOLARI e COEFFICIENTI stechiometrici'); writeln('delle sostanze incognite,in ordine,da sinistra a destra '); writeln('CALCOLA prodotto tra coefficiente e peso molecolare G = c * pm '); writeln; end;
procedure testo2v; begin writeln; writeln('passa a chiedere COEFFICIENTI stechiometrici '); writeln('delle sostanze incognite,in ordine,da sinistra a destra '); writeln('CALCOLA prodotto tra coefficiente e volume molecolare G = c * vn '); writeln; end;
procedure testo3; begin writeln('------------------------------------------------'); writeln('calcola grammi di sostanze richieste e ottenute '); end;
procedure testo3v; begin writeln('------------------------------------------------'); writeln('calcola volume di sostanze richieste e ottenute '); end;
procedure totale1; (* calcola grammi stechiometrici noti *) begin tn:=pn*cn; writeln('grammi stechiometrici sostanza nota = tn:=pn*cn; ',tn); end;
procedure totale1v; (* calcola litri stechiometrici noti *) begin tnv:=vn*cn; writeln('litri. stechiometrici sostanza nota = tnv:=vn*cn; ',tnv:0:5); end;
procedure totale2(n:integer); (* calcola grammi stechiometrici incognite *) begin for a:=1 to n do begin tx[a]:=px[a]*cx[a]; writeln('grammi stechiometrici sostanza ',a,'...',tx[a]); end; end;
procedure totale2v(n:integer); (* calcola litri stechiometrici incognite *) begin for a:=1 to n do begin txv[a]:=vn*cx[a]; writeln('volume in litri.stechiometrici sostanza ',a,'...',txv[a]:0:5); end; end;
procedure dati1; (* chiede dati sostanza nota *) begin testo1; write('grammi noti di una sostanza =');readln(gn); write('peso molecolare della sostanza= ');readln(pn); write('coefficiente stechiometrico della sostanza = ');readln(cn); totale1; end;
procedure dati1v; (* chiede dati sostanza nota *) begin testo1v; write('volume in litri. noti di una sostanza =');readln(vs); write('coefficiente stechiometrico della sostanza =');readln(cn); totale1v; end;
procedure dati2(n:integer); (* chiede dati incognite *) begin testo2; for a:=1 to n do begin write('peso molecolare sostanza ',a,'...');readln(px[a]); write('coefficiente sostanza ',a,'...');readln(cx[a]); end; totale2(n); end;
procedure dati2v(n:integer); (* chiede dati incognite *) begin testo2v; for a:=1 to n do begin write('coefficiente sostanza ',a,'...');readln(cx[a]); end; totale2v(n); end;
procedure volume; begin vx:=gx[n]*vn/tx[n]; writeln('volume sostanza ',n,'...',vx:8:5); end;
procedure calcola1(n:integer); (* calcola grammi sostanze incognite *) begin testo3; writeln('--------------------------------------------------'); for a:=1 to n do begin gx[a]:=gn*tx[a]/tn; writeln('grammi sostanza gx[a]:=gn*tx[a]/tn; ',a,'...',gx[a]:8:5); end; end;
procedure calcola1v(n:integer); (* calcola litri sostanze incognite *) begin testo3v; writeln('--------------------------------------------------'); for a:=1 to n do begin gx[a]:=vs*txv[a]/tnv; writeln('volume sostanza gx[a]:=vs*txv[a]/tnv; ',a,'...',gx[a]:8:5); end; end;
procedure pro1; begin dati1;dati2(n);calcola1(n);pausa; end;
procedure pro2; begin dati1v;dati2v(n);calcola1v(n);pausa; end;
procedure pro3; begin dati1;dati2(n);calcola1(n);volume;pausa; end;
procedure scelta; (* procedura con scelta opzioni e uscita *) label salta; var s,sn:string;opzione:integer; begin clearscreen; writeln('seleziona opzione possibili tipi di problemi:'); writeln('SINTESI.DECOMPOSIZIONE .COMBINAZIONE '); writeln('nota per inserimento dati:'); writeln('inserire prima i dati della sostanza di massa o volume noti'); writeln('inserire poi in ordine,da sinistra a destra,i dati delle altre'); writeln('sostanze,prima,seconda,terza,quarta..come richiesto'); writeln('es.nella reazione HCl + NaOH -----> NaCl + H2O '); writeln('se HCl risulta = 100 grammi '); writeln('le altre sostanze,reagenti e prodotti,sono denominate come '); writeln('NaOH=sostanza1..NaCl=sostanza2..H20=sostanza3 '); writeln('-----------------------------------------------------------'); writeln('viene inoltre chiesto di indicare il numero di sostanze '); writeln('presenti nella reazione:es.precedente = 4 '); pausa;clearscreen; writeln('REAGENTI e PRODOTTI espressi in GRAMMI '); writeln('nota massa in grammi di una sostanza,calcola masse delle altre'); writeln('-------------------------------------------------------------'); writeln('1...aA + bB -------> cAB '); writeln('1...cAB -------> aA + bB '); writeln('1...aA + bB -------> cC + dD '); writeln('-------------------------------------------------------------'); writeln('REAGENTI e PRODOTTI espressi in VOLUMI in litri'); writeln('noto volume di una sostanza,calcola volumi delle altre '); writeln('2..aA + bB --------> cAB '); writeln('2..cAB --------> aA + bB '); writeln('2..aA + bB --------> cC + dD '); writeln('------------------------------------------------------------'); writeln('REAGENTI e PRODOTTI in grammi,1 PRODOTTO in litri'); writeln('nota massa di una sostanza,calcola volume,massa, delle altre '); writeln('NOTA:inserire come ultima la sostanza gassosa '); writeln('3..aA + bB --------> cAB '); writeln('3..cAB --------> aA + bB '); writeln('3..aA + bB --------> cC + dD '); writeln('------------------------------------------------------------'); writeln('9...fine '); writeln('scelta =');readln(opzione); if opzione=9 then goto salta; writeln('scrivi numero di sostanze presenti nella reazione,oppure '); writeln('numero di sostanze che interessano nel calcolo :massimo 5'); repeat write('scrivi numero sostanze = :1,2,3,4,5 ');readln(n); until ((n<6) and (n>1)); n:=n-1; clearscreen; case opzione of 1:pro1; 2:pro2; 3:pro3; 9:fine; end; salta: writeln('altra operazione?Esperimenti?:premi S...fine:premi N '); readln(sn); if sn='S' then scelta ; end;
begin (* programma di lancio *) clearscreen; vn:=22.4; scelta; end.