esercizi di chimica con turbo pascal 1.1 su mac
program collega4; (* 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:real; s,alfa,c:integer; frase,ris:string;
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 chiede1; label dati; begin dati:cancella; writeln('calcolo DTe e temperatura ebollizione soluzione '); writeln(frase); write('grammi solvente ');readln(gsolvente); write('grammi soluto ');readln(gsoluto); write('peso molecolare soluto ');readln(pm); write('costante ebullioscopica ');readln(k); write('temperatura ebollizione solvente ');readln(t); write('se devi correggere premi S altrimenti ENTER ');readln(ris); if ((ris='S') or (ris='s')) then goto dati; end;
procedure pro1; begin chiede1; 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 chiede2; label dati; begin dati:cancella; writeln('calcolo DTc e temperatura congelamento soluzione'); writeln(frase); write('grammi solvente ');readln(gsolvente); write('grammi soluto ');readln(gsoluto); write('peso molecolare soluto ');readln(pm); write('costante crioscopica ');readln(k); write('temperatura congelamento solvente ');readln(t); write('se devi correggere premi S altrimenti ENTER ');readln(ris); if ((ris='S') or (ris='s')) then goto dati; end;
procedure pro2; begin chiede2; 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 chiede3; label dati; begin dati:cancella; writeln('calcolo PESO molecolare soluto in funzione ebullioscopica '); writeln(frase); write('grammi solvente ');readln(gsolvente); write('grammi soluto ');readln(gsoluto); write('temperatura ebollizione soluzione ');readln(ts); write('costante ebullioscopica ');readln(k); write('temperatura ebollizione solvente ');readln(t); write('se devi correggere premi S altrimenti ENTER ');readln(ris); if ((ris='S') or (ris='s')) then goto dati; end;
procedure pro3; begin chiede3; 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 chiede4; label dati; begin dati:cancella; writeln('calcolo PESO molecolare soluto in funzione crioscopica '); writeln(frase); write('grammi solvente ');readln(gsolvente); write('grammi soluto ');readln(gsoluto); write('temperatura congelamento soluzione ');readln(ts); write('costante crioscopica ');readln(k); write('temperatura congelamento solvente ');readln(t); write('se devi correggere premi S altrimenti ENTER ');readln(ris); if ((ris='S') or (ris='s')) then goto dati; end;
procedure pro4; begin chiede4; 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 chiede5; label dati; begin dati:cancella; writeln('calcolo GRAMMI soluto in funzione ebullioscopica '); writeln(frase); write('grammi solvente ');readln(gsolvente); write('peso molecolare soluto ');readln(pm); write('temperatura ebollizione soluzione ');readln(ts); write('costante ebullioscopica ');readln(k); write('temperatura ebollizione solvente ');readln(t); write('se devi correggere premi S altrimenti ENTER ');readln(ris); if ((ris='S') or (ris='s')) then goto dati; end;
procedure pro5; begin chiede5; 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 chiede6; label dati; begin dati:cancella; writeln('calcolo GRAMMI soluto in funzione crioscopica '); writeln(frase); write('grammi solvente ');readln(gsolvente); write('peso molecolare soluto ');readln(pm); write('temperatura congelamento soluzione ');readln(ts); write('costante crioscopica ');readln(k); write('temperatura congelamento solvente ');readln(t); write('se devi correggere premi S altrimenti ENTER ');readln(ris); if ((ris='S') or (ris='s')) then goto dati; end;
procedure pro6; begin chiede6; 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 chiede7; label dati; begin dati:cancella; writeln('calcolo PRESSIONE OSMOTICA '); writeln(frase); write('litri soluzione ');readln(vs); write('peso molecolare soluto ');readln(pm); write('temperatura soluzione gradiC ');readln(ts); write('grammi soluto ');readln(gsoluto); write('se devi correggere premi S altrimenti ENTER ');readln(ris); if ((ris='S') or (ris='s')) then goto dati; end;
procedure pro7; begin chiede7; 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 chiede8; label dati; begin dati:cancella; writeln('calcolo PRESSIONE OSMOTICA '); writeln(frase); write('concentrazione molare ');readln(mo); write('temperatura soluzione gradiC ');readln(ts); write('particelle dissociate 1..2..3.. ');readln(alfa); write('se devi correggere premi S altrimenti ENTER ');readln(ris); if ((ris='S') or (ris='s')) then goto dati; end;
procedure pro8; begin chiede8; 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 chiede9; label dati; begin dati:cancella; writeln('calcolo PRESSIONE OSMOTICA '); writeln(frase); write('pressione osmotica ');readln(p); write('temperatura soluzione gradiC ');readln(ts); write('numero particelle 1..2..3 ? se non sai,scrivi 1 ');readln(alfa); write('se devi correggere premi S altrimenti ENTER ');readln(ris); if ((ris='S') or (ris='s')) then goto dati; end;
procedure pro9; begin chiede9; 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('si devono riscrivere quelli esatti e quelli nuovi corretti '); writeln('---------------------------------------------------'); writeln('premi enter');readln; scelta; end.