Older Version
Newer Version
cogburn
May 23, 2012
**Gas Law Solver** Should be useful to chemistry teachers. [[code format="lb"]] 'GAS LAW problem solver ' purpose is to solve gas law problems including Dalton's law of partial pressure '4/12/2010 nomainwin VP = 0 [begin] WindowWidth = 560 WindowHeight = 520 groupbox #cfg, "Boyle's Law", 240, 20, 200, 140 radiobutton #cfg.bP2, "Solve for Pressure 2", [BoylesLawUKP2], [waitHere], 260, 45, 130, 20 radiobutton #cfg.bP1, "Solve for Pressure 1", [BoylesLawUKP1], [waitHere], 260, 70, 130, 20 radiobutton #cfg.bV2, "Solve for Volume 2", [BoylesLawUKV2], [waitHere], 260, 95, 130, 20 radiobutton #cfg.bV1, "Solve for Volume I", [BoylesLawUKV1], [waitHere], 260, 120, 130, 20 groupbox #cfg, "Charles' Law", 20, 20, 200, 140 radiobutton #cfg.cv2, "Solve for Volume 2", [CharlesLawUKV2], [waitHere], 40, 45, 130, 20 radiobutton #cfg.ct2, "Solve for Temperature 2", [CharlesLawUKT2], [waitHere], 40, 70, 130, 20 radiobutton #cfg.cv1, "Solve for Volume 1", [CharlesLawUKV1], [waitHere], 40, 95, 130, 20 radiobutton #cfg.ct1, "Solve for Temperature 1", [CharlesLawUKT1], [waitHere], 40, 120, 130, 20 button #cfg, " &Quit ", [quit], UL, 450, 30 button #cfg, " Water " , [Dalton], UL, 30,450 Statictext #cfg.static, "Click Here if gas was collected by water displacement. ",120,460, 600,20 groupbox #cfg, "Gay-Lussac Law", 20, 240, 200, 140 radiobutton #cfg.Boyles, "Solve for Pressure 2", [GayLawUKP2], [waitHere], 40, 265, 130, 20 radiobutton #cfg.Char1es, "Solve for Temperature 2", [GayLawUKT2], [waitHere], 40, 290, 130, 20 radiobutton #cfg.Gay, "Solve for Pressure 1", [GayLawUKP1], [waitHere], 40, 315, 130, 20 radiobutton #cfg.Combined, "Solve for Temperature 1", [GayLawUKT1], [waitHere], 40, 340, 130, 20 groupbox #cfg, "Combined Gas Law", 240, 240, 200, 160 radiobutton #cfg.bP2, "Solve for Pressure 2", [CGLUKP2], [waitHere], 260, 255, 130, 20 radiobutton #cfg.bP1, "Solve for Pressure 1", [CGLUKP1], [waitHere], 260, 280, 130, 20 radiobutton #cfg.bV2, "Solve for Volume 2", [CGLUKV2], [waitHere], 260, 305, 130, 20 radiobutton #cfg.bV1, "Solve for Volume 1", [CGLUKV1], [waitHere], 260, 330, 130, 20 radiobutton #cfg.T2, "Solve for Temperature 2", [CGLUKT2], [waitHere], 260, 355, 130, 20 radiobutton #cfg.T1, "Solve Temperature 1", [CGLUKT1], [waitHere], 260, 380, 130, 20 open "Gas Law Solver" for dialog as #cfg print #cfg, "trapclose [quit]" [waitHere] wait [BoylesLawUKV2] prompt "pressure 1"; P1 PI = PI -VP prompt "volume l";V1 prompt "pressure 2"; P2 V2=(P1*V1)/P2 notice "V2 ="; V2 wait [BoylesLawUKP2] prompt "pressure 1"; P1 P1= P1 -VP prompt "volume 1"; V1 prompt "volume 2";V2 P2=(P1*V1)/V2 notice "P2 ="; P2 wait [BoylesLawUKV1] prompt "pressure 1" ; P1 P1 = P1 -VP prompt "volume 2";V2 prompt "pressure 2"; P2 V1=(P2*V2)/P1 notice "V1=";V1 wait [BoylesLawUKP1] prompt "volume l";V1 prompt "volume 2";V2 prompt "pres sure 2"; P2 P1=(P2*V2)/V1 notice "P1=" ; P1 wait [CharlesLawUKT1] prompt "Temperature 2 in Celsius";T2 prompt "volume l";V1 prompt "Volume 2";V2 T2 = T2 + 273 T1=(T2*V1)/V2 notice "T1=";T1;" Kelvin" wait [CharlesLawUKT2] prompt "Temperature 1 in Celsius";T1 prompt "volume 1";V1 prompt "Volume 2";V2 T1 = T1 + 273 T2=(T1*V2)/V1 notice "T2=" ; T2 wait [CharlesLawUKV1] prompt "Temperature 1 in Celsius";T1 prompt "volume 2";V2 prompt "Temperature 2 in Celsius";T2 T1 = T1 + 273 T2 = T2 + 273 V1=(T1*V2)/T2 notice "V1="; V1 wait [CharlesLawUKV2] prompt "Temperature 1 in Celsius" ;T1 prompt "volume 1"; V1 prompt "Temperature 2";T2 T1= T1 + 273 T2 = T2 + 273 V2=(T2*V1)/T1 notice "V2=";V2 wait [CGLUKT1] prompt "Pressure 1= "; P1 P1 = P1 -VP prompt "Volume 1= ";V1 prompt "Temperature 2 (in Celsius) = ";T2 prompt "Pressure 2= "; P2 prompt "Volume 2= ";V2 T2 = T2 + 273 T1 = (P1*V1*T2)/(P2*V2) notice "T1 = ";T1; " Kelvin" wait [CGLUKP2] prompt "Pressure 1= "; P1 P1 = P1 -VP prompt "Volume 1= ";V1 prompt "Temperature 2 (in Celsius) = ";T2 prompt "Temperature 1= ";T1 prompt "Volume 2= ";V2 T2 = T2 + 273 T1 = T1 + 273 P2 = (P1*V1*T2)/(T1*V2) notice "P2 = "; P2 wait [CGLUKT2] prompt "Pressure 1= "; PI P1 = PI -VP prompt "Volume 1= ";V1 prompt "Temperature 1 (in Celsius) = ";T1 prompt "Pressure 2= "; P2 prompt "Volume 2= ";V2 Tl = T1 + 273 T2 = (P2*V2*Tl)/(P1*V1) notice "T2 = ";T2; " Kelvin" wait [CGLUKVl] prompt "Pressure 1= " ;P1 P1 = PI -VP prompt "Temperature 1= ";T1 prompt "Temperature 2 (in Celsius) = ";T2 prompt "Pressure 2= " ;P2 prompt "Volume 2= ";V2 T1 = T1 + 273 T2 = T2 + 273 V1 = (P2*V2*T1)/(P1*T2) notice "V1 = " ;V1 wait [CGLUKV2] prompt "Pressure 1= "; P1 P1 = P1 -VP prompt "Volume 1= ";V1 prompt "Temperature 1 (in Celsius) = ";T1 prompt "Pressure 2= "; P2 prompt "Temperature 2 in (Celsius) = ";T2 T1 = T1 + 273 T2 = T2 + 273 V2 = (P1*V1*T2)/(P2*T1) notice "V2 = ";V2 wait [CGLUKP1] prompt "Temperature 2= "; T2 prompt "Volume 1= ";V1 prompt "Temperature 1 (in Celsius) = ";T1 prompt "Pressure 2= "; P2 prompt "Volume 2= ";V2 T2 = T2 + 273 T1 = T1 + 273 P1 = (P2*V2*T1)/(T2*V1) notice "P1 = ";P1 wait [GayLawUKP2] prompt "Temperature 1 (in Celsius) = ";T1 prompt "Temperature 2 (in Celsius) = ";T2 prompt "Pressure 1= "; P1 P1 = P1 -VP T2 = T2 + 273 T1 = T1 + 273 P2 = (P1*T2)/T1 notice "P2 = "; P2 wait [GayLawUKP1] prompt "Temperature 1 (in Celsius) = ";T1 prompt "Temperature 2 (in Celsius) = ";T2 prompt "Pressure 2= "; P2 T2 = T2 + 273 T1 = T1 + 273 P1 = (T1*P2)/T2 notice "P1 = "; P1 wait [GayLawUKT2] prompt "Temperature 1 (in Celsius) = ";T1 prompt "Pressure 1 = ";P1 P1 = P1 -VP prompt "Pressure 2= "; P2 T1 = T1 + 273 T2 = (T1*P2)/P1 notice "T2 = "; T2 wait [GayLawUKT1] prompt "Temperature 2= "; P1 prompt "Volume 1= "; V1 prompt "Temperature 1 (in Celsius) = ";T1 prompt "Pressure 2= "; P2 prompt "Volume 2= ";V2 T2 = T2 + 273 T1 = T1 + 273 P1 = (P2*V2*T1)/(P1*V1) notice "P1 = "; P1 wait [Dalton] prompt "Celsius Temperature ";C VP= 4.553 + .3335*C + .01108 *C^2 + .0001826 * C^3 + 2.337e-6 * C^4 + 1.948e-8 * C^5 notice "H2O Partial Pressure is "; VP ; " mmHg" wait [quit] close #cfg end [[code]]