- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第01章即时计算器
第1章 即时计算器。
本章循序渐进的介绍即时计算器的编写方法,您将学习下列内容:
⊙即时计算器的编写原理
⊙最简单的即时计算器程序的编写
就象商店里出售的廉价计算器一样,这个最简单的计算器程序不能处理括号和运算符的优先级,只有当您按照正确的顺序输入时才能得到正确的结果,同一个算式,输入的顺序不同,计算出来的结果可能相差千里。
⊙支持四则混合运算的即时计算器
⊙支持括号的即时计算器
1.1即时计算器的编写原理
所谓即时计算器,是和表达式计算器相对应的概念,就是在输入的时候计算中间结果并显示,输入完毕按回车键时显示最终的结果。
而表达式计算器是指先输入计算公式,输入公式的过程中不计算中间结果,公式输入完毕后先检查公式是否正确,如果公式中存在错误则在显示相应的信息之后等待使用者修改公式,如果公式正确再计算结果,并将计算结果显示给使用者。
我们知道,在基本四则运算中使用的运算符包括括号、乘号、除号、加号和减号,计算的优先顺序是:先进行括号内运算,再进行乘法和除法运算,最后进行加法和减法运算。因此,一个完善的计算器程序必须能识别括号和运算符的优先级别。
首先,我们通过一个例子来分析如何处理运算符的优先级别。
例如算式50+20/2-5,处理过程如下:
先输入第一个操作数50,然后输入第一个运算符“+”。这时,程序将操作数50储存在变量“运算器”中,将“+”储存在变量“运算器运算符”中,等待继续输入。
此时,各变量的值为:运算器=50,运算器运算符=43(加号的字符代码,下同)。
输入第二个操作数20后,输入第二个运算符“/”,由于“/”的优先级别高于“+”,现在还不能确定加数,无法进行加法运算,需要将“运算器”中的数据转移到变量“寄存器”中、将“运算器运算符”中的数据转移到变量“寄存器运算符”中,并将第二个操作数和运算符储存在“运算器”和“运算器运算符”中,等待输入。
此时,各变量的值为:寄存器=50,寄存器运算符=43,运算器=20,运算器运算符=47。
输入第三个操作数2后,输入第三个运算符“-”,减号的优先级别低于第二个运算符除号,这时,程序将第二个操作数和第三个操作数进行除法运算,将结果储存在“运算器”中,该结果作为中间结果显示在显示框中。
此时,各变量的值为:寄存器=50,寄存器运算符=42,运算器=10,运算器运算符=45,显示框中显示的是10。
输入第四个操作数5,并按回车键结束计算,屏幕上首先显示的是5,程序将“运算器”中的数据和屏幕上显示的数据按照“运算器运算符”变量储存的运算符进行运算,并储存在运算器中。
即:运算器=运算器(运算器运算符)屏幕显示的第四个操作数=10-5=5。
然后再将“寄存器”中的数据和“运算器”中的数据按照“寄存器运算符”变量储存的运算符进行运算,并储存在运算器中。
运算器=寄存器(寄存器运算符)运算器=50+5=55。
最后将结果显示在屏幕上。
接下来,我们来分析括号的解析方法。
一组括号由一个左括号和一个右括号组成,输入右括号时的处理方法和输入左括号时的处理方法是互逆的。
当输入左括号时,需要将“运算器”、“运算器运算符”、“寄存器”、“寄存器运算符”等变量中的内容分别保存在“括号运算器”数组变量、“括号运算器运算符”数组变量、“括号寄存器”数组变量和“括号寄存器运算符”数组变量中,然后还原“运算器”、“运算器运算符”、“寄存器”、“寄存器运算符”到初始状态,用于括号内的运算。
这里使用数组变量是为了能够处理多层括号,数组的维数就是我们可以同时使用的括号层数。如果不定义上述数组变量的维数,在使用的过程中动态添加,则可以同时使用的括号层数仅仅受系统硬件配置的约束。
当输入右括号时,得出括号内的运算结果并储存在“运算器”中,并对“括号运算器”和“括号寄存器”中的数据进行如下处理。
“括号运算器运算符”必然是“*”或“/”,对“括号运算器”和“运算器”中的数据进行相应的运算,结果储存在“运算器”中,括号运算器清零。
如果“括号寄存器运算符”是“*”或“/”,对“括号寄存器”和“运算器”中的数据进行相应的运算,结果储存在“运算器”中,括号寄存器清零;如果“括号寄存器运算符”是“+”或“-”,将“括号寄存器”的内容储存到“寄存器”、“括号寄存器运算符”的内容储存到“寄存器运算符”后清零,等待使用者继续输入。
1.2最简单的即时计算器
所谓最简单的计算器,就是不支持括号、不进行运算符的有限级别判断,按照输入的顺序进行计算的计算器,就象商店里出售的廉价计算器。
下面,请启动易语言,和我一起开始编写这个最简单的计算器。
1.2.1设计运行界面
在窗口控件上放置一个标签控件,用于显示输入的数值、中间计算结果和最终的结果,标签控件和窗口控件的属性请自行设置。
设置好的界面如图1-1所示。
图1-1 最简单即时
文档评论(0)