Gas Solver

Gas Law Solver

Should be useful to chemistry teachers. It allows user to choose which gas law to solve and which variables will be solved for. After entering knowns into the program the solution is revealed in a "notice" box.

'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