美文网首页
做一个iOS的简单计算器

做一个iOS的简单计算器

作者: 水田夏木 | 来源:发表于2016-09-07 20:40 被阅读2195次

这一段时间上班不那么忙,于是在github上开始了自己的新的工程,也是我接下来一年的一个小目标吧。作为一个数学爱好者,自然想到在项目内做一个计算器试试手感,首先在code4app上找了一个,感觉不好看。

左上角有个胖子

我忍了一段时间,后来有点忍不了了,就想着还是自己做一个吧。做出来UI效果不算很协调,稍微调一下颜色估计就好很多了。

模仿了手机计算器的风格

之前我自己做过一次性运算的简易计算器,这次想着做好点的,自然要支持连续运算。过去对计算器的栈的算法总感觉理解的不透彻,花了两天时间弄完了算法和基础代码。

1.如何实现计算器

实现计算器一般会有两种方法:一种是使用前缀和后缀(中缀)表达式,一种是定义栈内和栈外的优先级。
我使用了第二种方法:
1)将输入的运算式转化为由运算符和运算数组成的数组;

  1. 准备好运算数的栈和运算符的栈;
    3)依次读入数组中的元素,若是运算数则直接压入运算数栈,若是运算符则将该运算符的优先级和运算符栈顶元素优先级比较,有以下情况:
    a)若前者大,则该运算符直接入栈;
    b)若后者大,则弹出栈顶运算符,并弹出两个运算数,将运算结果压入运算数栈;
    c)若两者相等,则两者抵消。
    如此直到运算符栈清空,得到最后结果。

2.值得注意的地方

我在编程中习惯使用循环而极少使用递归,但是在这里的实现中使用while语句似乎是必然的选择。
栈内栈外的优先级也有些意思的。括号在平时的计算中拥有最高优先级,然而表达式有左右括号之分,故不得不将一个括号优先级设为最低,另一个设为最高(它们在栈内栈外对立时必须优先级相等)。加减号优先级本来相等,但是显然栈内运算优先,故一般运算符栈内优先级高1。

这个计算器只是实现了基本思路,比如负号,除以零处理等等都还没来得及做,以后会补上。
其实这些内容大学内就该研究透,可惜那时编程基础太差,没多大兴趣。现在有时间尽量去补充自己。
我的项目还在构思中,就是一个实现自己思路的地方。若有兴趣和需要可以去看看:https://github.com/VagrantZXC/StarDeProject

相关文章

  • 设计模式——简单工厂模式

    计算器的例子 以面向过程的方式做一个简单实现 在本例子中,将通过一个简单的实现方式,做一个简单的加减乘除的计算器。...

  • 做一个iOS的简单计算器

    这一段时间上班不那么忙,于是在github上开始了自己的新的工程,也是我接下来一年的一个小目标吧。作为一个数学爱好...

  • 做一个iOS的简单计算器(二)

    接上一篇,我已经完成了多个小数点,除零,格式异常等处理,直接上代码,使用swift写的。首先是一个处理栈等基本功能...

  • 简易计算器的实现

    小项目1 ---C 语言做一个简单的计算器 1,项目说明: 实现一个简易的仅支持两个操作数运算的计算器,不涉及词法...

  • 无标题文章

    IOS 开发笔记-基础 UI(1)-简单的计算器 姜糖水2015-02-26636阅读 移动开发 (1)UI是Ap...

  • ios 简单计算器实现

    .h @property (retain,nonatomic)UILabel *label; @property ...

  • iOS 计算器的实现

    iOS. 计算器的实现 // // ViewController.swift // CalculatorDemo ...

  • 设计模式之策略模式

    需求:现在需要做一个简单计算器,有加法,减法。 类图如下: 接口或者父类:Arthmeric(算法) 实现类或子类...

  • Design Patterns Talk - Simple Fa

    《大话设计模式》第 1 章 - 简单工厂模式 的 Swift 实现。 问题 做一个计算器。客户端输入两个数字和运算...

  • iOS简单项目 — 计算器

    计算器所需求功能 计算器所用模式:MVC计算器所用语言:Swift计算器所参考课程:斯坦福 第一步:构造计算器界面...

网友评论

      本文标题:做一个iOS的简单计算器

      本文链接:https://www.haomeiwen.com/subject/wkzjettx.html