20165320 结对编程学习第一周

需求分析

实现一个命令行程序;
自动生成小学四则运算题目(加、减、乘、除)
支持整数
支持多运算符(比如生成包含100个运算符的题目)
支持真分数
统计正确率

设计思路
1.在这次结对编程中,我们一开始的想法是设计一个能够处理分数的类,然后在教材中的Example4_22正好有相关的内容,所以我们就在此个例子上进行修改,得到了一个能够处理分数运算的类,然后索性就直接从分数这个难点开始构思。

2.在结对编程四则运算的博客内,我们接触到了运算后缀表达式以及将中缀表达式转化成后缀表达式的两个概念,其中都提到了栈,这个是用作运算,转换中临时存储数据的一个结构,是整个计算方法的核心内容,是一个基本框架。所以我们按照要求设计了一个有关的栈类为转化与计算做准备。

3.最后就是一个计算器和一个转化器的设计,博客中提到了以下的计算规则:

如果遇到数字,我们就直接将其输出。

如果遇到非数字时,若栈为空或者该符号为左括号或者栈顶元素为括号,直接入栈。

如果遇到一个右括号,持续出栈并输出符号,直到栈顶元素为左括号,然后将左括号出栈(注意,左括号只出栈,不输出),右括号不入栈。

如果遇到运算符号且栈非空,查看栈顶元素,如果栈顶元素的运算优先级大于或者等于该运算符号,则持续出栈,直到栈顶元素优先级小于该运算符。最后将该元素入栈。

如果我们读到了输入的末尾,则将栈中所有元素依次弹出。

这几点就是后缀表达式的转化方法,我们通过这几点设计了一个转化器,即Tran类。

计算器的规则:

计算规则就是建立一个空栈,遇到数字就入栈,遇到符号就以符号前面的两个数为运算数进行计算。

以上四类我们已经开发完毕,目前的程序可以实现:计算一个正常的运算式(即中缀表达式)的值(支持有理数的运算,输出结果为一个字符串类型)。根据需求分析,我们还需要以下功能:

随机生成(多个)运算式;
判断计算结果值是否正确;
判断随机生成的(多个)运算式是否有重复;
计算正确率
系统优化
以上功能需要在下一周的编程中开发实现。

功能截图

结对感受

在这一次的结对编程学习中,我深刻地体会到娄老师为什么要推荐我们结对学习。这次的学习任务比以往要重很多,一个人单打独斗很难取得特别快的进展,尤其是当你的Parter是一个非常优秀的队友时,你能从他的身上发现特别多自己的不足之处,在生活的方方面面,不仅仅是学习。所以,我觉得此次结对学习让我受益匪浅。

结对编程照片

原文地址:https://www.cnblogs.com/Gst-Paul/p/8850180.html