# 开发工具下载地址:http://www.finelanguage.com.cn
# 求解一元二次方程
gui = GUI("fine") # 创建窗口对象
# gui.HideConsoleWindow() # 隐藏报错窗口
math = MATH() # 创建数学计算函数对象
# 设计窗口界面
title = "求解一元二次方程" # 窗口标题
size = [14,8,70,22] # 窗口尺寸
text1 = ["","text",26,2,20,1] # 标题
edit1 = ["","edit","f",12,5,8,1] # 录入x二次方项的系数a
text2 = ["","text",21,5,7,1] # 填写" x^2 + "
edit2 = ["","edit","f",29,5,8,1] # 录入x一次方项的系数b
text3 = ["","text",38,5,5,1] # 填写" x + "
edit3 = ["","edit","f",44,5,8,1] # 录入常数项c
text4 = ["","text",53,5,5,1] # 填写 = 0
button = ["求解|微软雅黑|20|0|200|0","button",12,8,10,1] # 求解按钮
textbox= ["显示求解结果 ","textbox","N",16,12,30,3] # 显示求解结果,第三个参数N表示不响应该组件双击事件
list = [title,size,text1,edit1,text2,edit2,text3,edit3,text4,button,textbox] # 打包窗口元素
gui.Fine(list) # 创建窗口
# 初始化窗口中的text组件,供四个text组件
gui.SendText(["求解一元二次方程"," x^2 + "," x + "," = 0"]) # 四个字符串对应四个text组件
# 窗口维护
while gui.FineClosed() != -1
{
PowerDown(3) # 低功耗设置
# 检查窗口是否有数据输出,本例中只有“求解”按钮会导致窗口输出数据
# 如果gui.FineReady() == -1,表明没有数据输出,使用continue指令,强制程序跳转到循环起点
if gui.FineReady() == -1 {continue}
# 如果gui.FineReady() != -1,表明有数据输出,需要读出数据
# 读出的数据共有4项,x[0]对应按钮编号,本例只有一个按钮“button-0”
# x[1]、x[2]、x[3]分别对应a、b、c系数
x = gui.FineRead() # 读出数据
# 由于程序只有一个按钮,即,只有一个功能,这里无需判断 x[0]的值(必定等于“button-0”)
a = x[1] # 第一个edit组件上的内容
b = x[2] # 第二个edit组件上的内容
c = x[3] # 第三个edit组件上的内容
# 解方程
if a == 0 and b == 0 # 如果系数a和系数b同时为0
{
gui.SendTextbox(["FINECLEAR"]) # 清除textbox上的全部内容
gui.SendTextbox(["该方程无意义!\n"]) # 显示解题结果
}
elif a == 0 and b != 0 # 如果系数a和系数b不为0
{
result = -c/b
str1 = sprint("%.2f",result) # 将result保留2位小数,并转换为字符串
str = "该方程只有一个解,x = " + str1 + "\n" # 拼接字符串,添加换行符
gui.SendTextbox(["FINECLEAR"]) # 清除textbox上的全部内容
gui.SendTextbox([str]) # 显示解题结果
}
elif a != 0 # 如果系数a不为0
{
delta = b*b - 4*a*c
if delta < 0
{
gui.SendTextbox(["该方程无实数解!\n"]) # 显示解题结果
}
elif delta == 0
{
result = -b/(2*a)
str1 = sprint("%.2f",result) # 将result保留2位小数,并转换为字符串
str = "该方程只有一个解,x = " + str1 + "\n" # 拼接字符串,添加换行符
gui.SendTextbox([str]) # 显示解题结果
}
else
{
result1 = (-b + math.sqrt(delta))/(2*a)
result2 = (-b - math.sqrt(delta))/(2*a)
str1 = sprint("%.2f",result1)
str2 = sprint("%.2f",result2)
str = "x1 = " + str1 + "\n" + "x2 = " + str2 + "\n"
gui.SendTextbox([str]) # 显示解题结果
}
box = GUI("box") # 创建弹窗对象
box.MessageBox("求解结束,尝试下一题!","确定") # 创建弹窗
while box.MessageBoxClosed() != -1 {PowerDown(3)} # 等待关闭弹窗
gui.SendTextbox(["FINECLEAR"]) # 清除textbox上的全部内容
gui.SendEdit(["","",""]) # 清除三个edit组件上的内容
}
}