esercizi di chimica con turbo pascal 1.1 su mac
program collega5; (* problemi su ebullioscopia crioscopia pressione osmotica *) (* INTERATTIVO DIMOSTRATIVO cfr.COLLIGA1 con RIPETIZIONE DATI ERRATI*)
const r=0.082; var gsolvente,gsoluto,pm,k,t,dt,ts,p,vs,mo,alfa:real; s,c,d:integer; frase:string; da:array[1..6] of real;
procedure fine; begin writeln('premi enter'); readln; end;
procedure cancella; begin clearscreen; end;
procedure avviso; begin writeln;writeln('scrivi su foglio le formule per risolvere il problema'); writeln('poi confronta con esecuzione,premendo ENTER');readln;writeln; end;
procedure pro1; begin cancella; writeln('calcolo DTe e temperatura ebollizione soluzione '); writeln(frase); write(1:4,' grammi solvente ');readln(da[1]); write(2:4,' grammi soluto ');readln(da[2]); write(3:4,' peso molecolare soluto ');readln(da[3]); write(4:4,' costante ebullioscopica ');readln(da[4]); write(5:4,' temperatura ebollizione solvente ');readln(da[5]); repeat write('se devi correggere,indica quale dato:1,2,3,4,5? altrimenti 0 zero '); readln(d); if d<>0 then begin write('scrivi dato corretto =');readln(da[d]);end; until d=0; writeln('========================================================'); gsolvente:=da[1];gsoluto:=da[2];pm:=da[3];k:=da[4];t:=da[5]; dt:=(k*gsoluto*1000)/(pm*gsolvente); ts:=t+dt; avviso; writeln('tes:=to+Dte'); writeln('Dte:=(ke*gsoluto*1000)/(pm*gsolvente)'); writeln('innalzamento ebullioscopico ',dt:8:3); writeln('temperatura ebollizione soluzione ',ts:8:3); writeln; writeln('premi enter');readln; end;
procedure pro2; begin cancella; writeln('calcolo DTc e temperatura congelamento soluzione'); writeln(frase); write(1:4,' grammi solvente ');readln(da[1]); write(2:4,' grammi soluto ');readln(da[2]); write(3:4,' peso molecolare soluto ');readln(da[3]); write(4:4,' costante crioscopica ');readln(da[4]); write(5:4,' temperatura congelamento solvente ');readln(da[5]); repeat write('se devi correggere,indica quale dato:1,2,3,4,5? altrimenti 0 zero '); readln(d); if d<>0 then begin write('scrivi dato corretto =');readln(da[d]);end; until d=0; writeln('========================================================'); gsolvente:=da[1];gsoluto:=da[2];pm:=da[3];k:=da[4];t:=da[5]; dt:=(k*gsoluto*1000)/(pm*gsolvente); ts:=t-dt; avviso; writeln('tcs=to-Dtc '); writeln('Dtc:=(kc*gsoluto*1000)/(pm*gsolvente)');; writeln('abbassamento crioscopico :gradi ',dt:8:3); writeln('temperatura congelamento soluzione ',ts:8:3); writeln; writeln('premi enter');readln; end;
procedure pro3; begin cancella; writeln('calcolo PESO molecolare soluto in funzione ebullioscopica '); writeln(frase); write(1:4,' grammi solvente ');readln(da[1]); write(2:4,' grammi soluto ');readln(da[2]); write(3:4,' temperatura ebollizione soluzione ');readln(da[3]); write(4:4,' costante ebullioscopica ');readln(da[4]); write(5:4,' temperatura ebollizione solvente ');readln(da[5]); repeat write('se devi correggere,indica quale dato:1,2,3,4,5? altrimenti 0 zero '); readln(d); if d<>0 then begin write('scrivi dato corretto =');readln(da[d]);end; until d=0; writeln('========================================================'); gsolvente:=da[1];gsoluto:=da[2];ts:=da[3];k:=da[4];t:=da[5]; dt:=ts-t; pm:=(k*gsoluto*1000)/(dt*gsolvente); avviso; writeln('Dte=tes-to '); writeln('pm:=(ke*gsoluto*1000)/(dt*gsolvente)'); writeln('peso molecolare ',pm:8:3); writeln; writeln('premi enter');readln; end;
procedure pro4; begin cancella; writeln('calcolo PESO molecolare soluto in funzione crioscopica '); writeln(frase); write(1:4,' grammi solvente ');readln(da[1]); write(2:4,' grammi soluto ');readln(da[2]); write(3:4,' temperatura congelamento soluzione ');readln(da[3]); write(4:4,' costante crioscopica ');readln(da[4]); write(5:4,' temperatura congelamento solvente ');readln(da[5]); repeat write('se devi correggere,indica quale dato:1,2,3,4,5? altrimenti 0 zero '); readln(d); if d<>0 then begin write('scrivi dato corretto =');readln(da[d]);end; until d=0; writeln('========================================================'); gsolvente:=da[1];gsoluto:=da[2];ts:=da[3];k:=da[4];t:=da[5]; dt:=ts-t; pm:=ABS((k*gsoluto*1000)/(dt*gsolvente)); avviso; writeln('Dtc = tcs - to '); writeln('pm:=((kc*gsoluto*1000)/(dt*gsolvente))'); writeln('peso molecolare ',pm:8:3); writeln; writeln('premi enter');readln; end;
procedure pro5; begin cancella; writeln('calcolo GRAMMI soluto in funzione ebullioscopica '); writeln(frase); write(1:4,' grammi solvente ');readln(da[1]); write(2:4,' peso molecolare soluto ');readln(da[2]); write(3:4,' temperatura ebollizione soluzione ');readln(da[3]); write(4:4,' costante ebullioscopica ');readln(da[4]); write(5:4,' temperatura ebollizione solvente ');readln(da[5]); repeat write('se devi correggere,indica quale dato:1,2,3,4,5? altrimenti 0 zero '); readln(d); if d<>0 then begin write('scrivi dato corretto =');readln(da[d]);end; until d=0; writeln('========================================================'); gsolvente:=da[1];pm:=da[2];ts:=da[3];k:=da[4];t:=da[5]; dt:=ts-t; gsoluto:=(dt*pm*gsolvente)/(k*1000); avviso; writeln('Dte = tes - to '); writeln('gsoluto:=(dt*pm*gsolvente)/(ke*1000)');; writeln('grammi soluto ',gsoluto:8:3); writeln; writeln('premi enter');readln; end;
procedure pro6; begin cancella; writeln('calcolo GRAMMI soluto in funzione crioscopica '); writeln(frase); write(1:4,' grammi solvente ');readln(da[1]); write(2:4,' peso molecolare soluto ');readln(da[2]); write(3:4,' temperatura congelamento soluzione ');readln(da[3]); write(4:4,' costante crioscopica ');readln(da[4]); write(5:4,' temperatura congelamento solvente ');readln(da[5]); repeat write('se devi correggere,indica quale dato:1,2,3,4,5? altrimenti 0 zero '); readln(d); if d<>0 then begin write('scrivi dato corretto =');readln(da[d]);end; until d=0; writeln('========================================================'); gsolvente:=da[1];pm:=da[2];ts:=da[3];k:=da[4];t:=da[5]; dt:=ts-t; gsoluto:=abs((dt*pm*gsolvente)/(k*1000));avviso; writeln('Dtc = tcs - to '); writeln('gsoluto:=((dt*pm*gsolvente)/(kc*1000))'); writeln('grammi soluto ',gsoluto:8:3); writeln; writeln('premi enter');readln; end;
procedure pro7; begin cancella; writeln('calcolo PRESSIONE OSMOTICA '); writeln(frase); write(1:4,' litri soluzione ');readln(da[1]); write(2:4,' peso molecolare soluto ');readln(da[2]); write(3:4,' temperatura soluzione gradiC ');readln(da[3]); write(4:4,' grammi soluto ');readln(da[4]); repeat write('se devi correggere,indica quale dato:1,2,3,4,5? altrimenti 0 zero '); readln(d); if d<>0 then begin write('scrivi dato corretto =');readln(da[d]);end; until d=0; writeln('========================================================'); vs:=da[1];gsoluto:=da[4];pm:=da[2];ts:=da[3]; t:=273+ts; p:=((gsoluto/pm)/vs)*r*t;avviso; writeln('T = 273 + ts '); writeln('p:=((gsoluto/pm)/vs)*r*t'); writeln('pressione in atmosfere ',p:8:3); writeln; writeln('premi enter');readln; end;
procedure pro8; begin cancella; writeln('calcolo PRESSIONE OSMOTICA '); writeln(frase); write(1:4,' concentrazione molare ');readln(da[1]); write(2:4,' temperatura soluzione gradiC ');readln(da[2]); write(3:4,' particelle dissociate 1..2..3.. ');readln(da[3]); repeat write('se devi correggere,indica quale dato:1,2,3,4,5? altrimenti 0 zero '); readln(d); if d<>0 then begin write('scrivi dato corretto =');readln(da[d]);end; until d=0; writeln('========================================================'); mo:=da[1];ts:=da[2];alfa:=da[3]; t:=273+ts; p:=alfa*mo*r*t;avviso; writeln('T = 273 + ts '); writeln('p:=alfa*mo*r*t '); writeln('pressione in atmosfere ',p:8:3); writeln; writeln('premi enter');readln; end;
procedure pro9; begin cancella; writeln('calcolo PRESSIONE OSMOTICA '); writeln(frase); write(1:4,' pressione osmotica ');readln(da[1]); write(2:4,' temperatura soluzione gradiC ');readln(da[2]); write(3:4,' numero particelle 1..2..3 ? se non sai,scrivi 1 ');readln(da[3]); repeat write('se devi correggere,indica quale dato:1,2,3,4,5? altrimenti 0 zero '); readln(d); if d<>0 then begin write('scrivi dato corretto =');readln(da[d]);end; until d=0; writeln('========================================================'); p:=da[1];ts:=da[2];alfa:=da[3]; t:=273+ts; mo:=p/(r*t*alfa);avviso; writeln('T = 273 + ts '); writeln('mo:=p/(r*t*n)'); writeln('concentrazione molare ',mo:8:3); writeln; writeln('premi enter');readln; end;
procedure scelta; var ancora:integer; begin cancella; writeln('soluzione problemi grandezze colligative '); writeln('esprimere TEMPERATURA in gradi CENTIGRADI'); writeln('esprimere MASSE in GRAMMI '); writeln('scrivere la COSTANTE CRIOSCOPICA senza segno negativo'); writeln('seleziona tipo problema '); writeln('1...calcola DTe ebullioscopia e temperatura ebollizione'); writeln('2...calcola DTc crioscopica e temperatura congelamento'); writeln('3...calcola PESO MOLECOLARE soluto noti valori ebullioscopici '); writeln('4...calcola PESO MOLECOLARE soluto noti valori crioscopici '); writeln('5...calcola GRAMMI SOLUTO in funzione ebullioscopica'); writeln('6...calcola GRAMMI SOLUTO in funzione crioscopica'); writeln('7...calcola PRESSIONE OSMOTICA=((grammi/pm)/volume)*RT '); writeln('8...calcola PRESSIONE OSMOTICA=alfa*M*R*T '); writeln('9...calcola MOLARITA con PRESSIONE OSMOTICA nota '); writeln('10...fine '); write('opzione=');readln(s); cancella; case s of 1:pro1;2:pro2;3:pro3;4:pro4;5:pro5;6:pro6;7:pro7;8:pro8;9:pro9; 10:fine; end; writeln('----------------------------'); writeln('altro problema:scrivi 1...fine:scrivi 2 ');readln(ancora); if ancora =1 then scelta else fine; end;
begin cancella; frase:='cerca su tabelle valori Kc,Ke,to,tc,pesi molecolari,se richiesti '; writeln('funzione programma:esercizi su propriet COLLIGATIVE'); writeln('POSSIBILE CORREGGERE DATI ERRATI INSERITI '); writeln('INDICANDO QUALE DATO o QUALI DATI SONO DA MODIFICARE '); writeln('---------------------------------------------------'); writeln('premi enter');readln; scelta; end.