代码可以工作,但不确定如何在iOS中实现它
我目前正在上一门化学课,我认为制作一个可以计算强酸/弱酸溶液pH值的程序会很有趣。该代码在操场上工作,我希望最终将其实现到一个iOS项目中。该程序包含3个参数:酸的初始浓度、酸的化学式和酸的平衡常数(如果需要)。该程序首先获取酸的初始浓度,然后获取酸的化学式,并确定酸的强弱。接下来,我建立了一个if语句,根据酸的强度计算pH值。如果酸很弱,则需要一个平衡常数。以下是我到目前为止的情况:代码可以工作,但不确定如何在iOS中实现它,ios,swift,Ios,Swift,我目前正在上一门化学课,我认为制作一个可以计算强酸/弱酸溶液pH值的程序会很有趣。该代码在操场上工作,我希望最终将其实现到一个iOS项目中。该程序包含3个参数:酸的初始浓度、酸的化学式和酸的平衡常数(如果需要)。该程序首先获取酸的初始浓度,然后获取酸的化学式,并确定酸的强弱。接下来,我建立了一个if语句,根据酸的强度计算pH值。如果酸很弱,则需要一个平衡常数。以下是我到目前为止的情况: import UIKit func acidConcentration(acidMolarity: Doub
import UIKit
func acidConcentration(acidMolarity: Double) -> Double {
return acidMolarity
}
let initialConcentration = acidConcentration(0.50)
var hydroniumConcentration = 0.00
var pH = 0.00
func determineAcidStrength(acidName: String) -> String {
var acidStrength = ""
if acidName=="HBr" || acidName=="HI" || acidName=="HClO4" || acidName=="HCl" || acidName=="HClO3" || acidName=="H2SO4" || acidName=="HNO3" {
acidStrength = "strong"
} else {
acidStrength = "weak"
}
return acidStrength
}
let strength = determineAcidStrength("HBr")
if strength == "strong" {
hydroniumConcentration = initialConcentration
pH = -log10(hydroniumConcentration)
print(String(format: "%.2f", pH))
} else {
func equilibriumConstant(ka: Double) -> Double {
return ka
}
let eqConstant = equilibriumConstant
var weakAcidConcentration = sqrt(eqConstant(1.8e-5) * initialConcentration)
pH = -log10(weakAcidConcentration)
print(String(format: "%.2f", pH))
}
由于我对编程非常陌生,这是我第一次尝试编写任何代码,我想知道是否有任何方法可以清理我所拥有的内容,或者有任何技巧可以更好地组织代码。感谢您的帮助。谢谢。您发布的代码对于可以在单个函数中完成的任务来说过于复杂 下面的函数接受两个参数,acidName作为
字符串
,initialConcentration作为双精度
,并将浓度作为双精度
值返回
func calculateConcentration(acidName: String, initialConcentration: Double) -> Double {
var acidIsStrong = false;
if acidName=="HBr" || acidName=="HI" || acidName=="HClO4" || acidName=="HCl" || acidName=="HClO3" || acidName=="H2SO4" || acidName=="HNO3" {
acidIsStrong = true;
}
if acidIsStrong {
return -log10(initialConcentration);
} else {
return -log10( (1.8e-5) * initialConcentration);
}
}
下面是该函数的一个使用示例:
//Just pass in your acid name and initial concentration
let concentration = calculateConcentration("HBr", initialConcentration: 0.50);
print(String(format: "%.2f", concentration));
下面是一个更小版本的函数,编写效率更高(工作原理相同):
还有一个更小的版本,可读性不强:
func calculateConcentration(acidName: String, initialConcentration: Double) -> Double {
return -log10( initialConcentration * ((acidName=="HBr" || acidName=="HI" || acidName=="HClO4" || acidName=="HCl" || acidName=="HClO3" || acidName=="H2SO4" || acidName=="HNO3") ? (1.8e-5) : 1.0));
}
您发布的代码对于可以在单个函数中完成的事情来说过于复杂 下面的函数接受两个参数,acidName作为
字符串
,initialConcentration作为双精度
,并将浓度作为双精度
值返回
func calculateConcentration(acidName: String, initialConcentration: Double) -> Double {
var acidIsStrong = false;
if acidName=="HBr" || acidName=="HI" || acidName=="HClO4" || acidName=="HCl" || acidName=="HClO3" || acidName=="H2SO4" || acidName=="HNO3" {
acidIsStrong = true;
}
if acidIsStrong {
return -log10(initialConcentration);
} else {
return -log10( (1.8e-5) * initialConcentration);
}
}
下面是该函数的一个使用示例:
//Just pass in your acid name and initial concentration
let concentration = calculateConcentration("HBr", initialConcentration: 0.50);
print(String(format: "%.2f", concentration));
下面是一个更小版本的函数,编写效率更高(工作原理相同):
还有一个更小的版本,可读性不强:
func calculateConcentration(acidName: String, initialConcentration: Double) -> Double {
return -log10( initialConcentration * ((acidName=="HBr" || acidName=="HI" || acidName=="HClO4" || acidName=="HCl" || acidName=="HClO3" || acidName=="H2SO4" || acidName=="HNO3") ? (1.8e-5) : 1.0));
}
我不是一个很好的化学家,所以,我不确定配方,但是这个怎么样:
class Acid: CustomStringConvertible {
static let strongAcids = [ "HBr", "HI", "HClO4", "HCl", "HClO3", "H2SO4", "HNO3" ]
var name: String
var concentration: Double
var equilibriumConstant: Double?
var pH: Double {
get {
var adjustedConcentration = concentration
if !Acid.strongAcids.contains(name) {
guard let ka = equilibriumConstant else {
return Double.NaN;
}
adjustedConcentration = sqrt(ka * concentration)
}
return -log10(adjustedConcentration)
}
}
init(name: String, concentration: Double, equilibriumConstant ka: Double? = nil) {
self.name = name
self.concentration = concentration
self.equilibriumConstant = ka
}
var description: String {
get {
if let ka = equilibriumConstant {
return "\(name) (concentration: \(concentration) / EqK: \(ka) pH: \(String(format: "%.2f", pH)))"
} else {
return "\(name) (concentration: \(concentration) / pH: \(String(format: "%.2f", pH)))"
}
}
}
}
let acid = Acid(name: "HBr", concentration: 0.5);
print("\(acid)") // prints "HBr (concentration: 0.5 / pH: 0.30)"
print(String(format: "%.2f", acid.pH)) // prints "0.30"
let weakAcid = Acid(name: "Weak", concentration: 0.2, equilibriumConstant: 1.8e-5)
print("\(weakAcid)") // prints "Weak (concentration: 0.2 / EqK: 1.8e-05 pH: 2.72)"
至于创建应用程序。。。对于这样一个简单的应用程序,您可能只需要创建一个“单视图应用程序”,其中包含3个文本字段(名称、浓度和常数)和一个“计算”按钮。我希望这是有道理的。我不是一个很好的化学家,所以,我不确定配方,但是这个怎么样:
class Acid: CustomStringConvertible {
static let strongAcids = [ "HBr", "HI", "HClO4", "HCl", "HClO3", "H2SO4", "HNO3" ]
var name: String
var concentration: Double
var equilibriumConstant: Double?
var pH: Double {
get {
var adjustedConcentration = concentration
if !Acid.strongAcids.contains(name) {
guard let ka = equilibriumConstant else {
return Double.NaN;
}
adjustedConcentration = sqrt(ka * concentration)
}
return -log10(adjustedConcentration)
}
}
init(name: String, concentration: Double, equilibriumConstant ka: Double? = nil) {
self.name = name
self.concentration = concentration
self.equilibriumConstant = ka
}
var description: String {
get {
if let ka = equilibriumConstant {
return "\(name) (concentration: \(concentration) / EqK: \(ka) pH: \(String(format: "%.2f", pH)))"
} else {
return "\(name) (concentration: \(concentration) / pH: \(String(format: "%.2f", pH)))"
}
}
}
}
let acid = Acid(name: "HBr", concentration: 0.5);
print("\(acid)") // prints "HBr (concentration: 0.5 / pH: 0.30)"
print(String(format: "%.2f", acid.pH)) // prints "0.30"
let weakAcid = Acid(name: "Weak", concentration: 0.2, equilibriumConstant: 1.8e-5)
print("\(weakAcid)") // prints "Weak (concentration: 0.2 / EqK: 1.8e-05 pH: 2.72)"
至于创建应用程序。。。对于这样一个简单的应用程序,您可能只需要创建一个“单视图应用程序”,其中包含3个文本字段(名称、浓度和常数)和一个“计算”按钮。我希望这是有道理的