java编程题四则运算_2017-2018-2 165X 『Java程序设计』课程 结对编程练习_四则运算...

2017-2018-2 165X 『Java程序设计』课程

结对编程练习_四则运算

经过第一阶段的学习,同学们已经熟悉了这门语言基本的用法。在一次又一次对着电脑编写并提交代码,进行练习的时候,有没有觉得孤单又无趣?这次我们来体验一种新的开发模式——结对编程,让你和小伙伴一起分析,一起思考,一起测试,一起完善,在思维的碰撞中体验结对编程的魅力!

————————CONTENTS————————

1.题目描述

在结对编程模式下,一对程序员肩并肩地、平等地、互补地进行开发工作。两个程序员并排坐在一台电脑前,面对同一个显示器,使用同一个键盘,同一个鼠标一起工作。他们一起分析,一起设计,一起写测试用例,一起编码,一起单元测试,一起集成测试,一起写文档等。

生活中也有很多类似的搭档关系,例如:

越野赛车(驾驶,领航员)

驾驶飞机(驾驶,副驾驶)

战斗机的编组(长机,僚机)

我们把结对编程中两位合作者的关系看作驾驶员和领航员,其中:

驾驶员(Driver)是控制键盘输入的人

领航员(Navigator)起到领航、提醒的作用

在本次结对编程中,即需要两位合作者之间建立驾驶员和领航员的关系。

如何对表达式进行求值运算呢?我们先来一个简单的入门。

一、中缀表达式与后缀表达式

中缀表达式就是运算符号在运算数中间的表达式,比如1+2,顾名思义,后缀表达式就是运算符在运算数后面的表达式,比如1 2 +。为什么要讲后缀表达式呢?因为电脑运算后缀表达式会比中缀表达式方便很多。那么如何运算后缀表达式呢?

举个例子:计算9+(3-1)*3+6/2,转换为后缀表达式即为9 3 1 - 3 * + 6 2 / +(怎么转换后面再讲)。计算规则就是建立一个空栈,遇到数字就入栈,遇到符号就以符号前面的两个数为运算数进行计算。

2148281f76fe77c0c790dcd6fb38cc07.png

二、中缀表达式转换为后缀表达式

法则:

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

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

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

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

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

有了以上的了解,大家可以尝试自己做一个“计算器”啦~

2.测试说明

如果别人用自己的代码发现一堆Bugs,那多没面子!怎么办?写了产品代码,我们还要写测试代码,证明自己的代码没有问题。Java编程时,程序员对类实现的测试叫单元测试。这里我们设计了一个测试用例(Test Case),测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。

产品代码主要进行三个方面的测试:

正常测试

异常测试

边界测试

与之有异曲同工之妙的一种标准是:『Right-BICEP法则』

其中 Right 指程序的正确性,BICEP 每个字母代指一个测试的方面。具体来说:

Right: 传入程序单元期待的参数、数据,是否能够得到正确的结果。

Boundary Conditions: 程序单元是否能够正确处理所有的边界条件。

Inverse relationships: 反向测试。

Cross-check: 交叉测试。

Error-condition: 异常情况。

Performance: 性能。

对于本次四则运算的结对编程项目,需从以下几方面考虑进行测试:

Right: 按照设计者意图输入参数时,程序能够正确输出结果。

B: 在程序受到极端参数时,程序能够正确进行响应。

E: 有同学选择将出题结果写入一个文件。如果此时硬盘满了,文件写不进去了,怎么办?

P: 出题速度应该足够快。测试生成100、1000、10000甚至更多道题目所需的时间。

以下为一些基本的测试用例,可供参考:

2 + 5 = 7

4 - 9 = -5

3 ÷ 7 = 3/7

2 ÷ 6 = 1/3

5 * (1 + 3) = 20

2/3 - 1/5 = 7/15

5/6 - 2/3 = 1/6

2/5 - 3/20 = 1/4

13 - 2 * 5 = 3

(2/3 + 1/2) * 6/7 = 1

(5 - 2) * (4 + 1) = 15

3.提交要求

一、代码提交

将源代码提交至自己的码云项目中。

如何使用Git进行团队合作?参考《使用GitHub进行团队合作》

【注意】

Git提交粒度不要太粗,建议一个文件/一个类/一个函数/一个功能/一个bug修复都进行提交,不能一天提交一次,更不能一周一次,参考Commit Message的编写

Git提交日志需保证有意义,如果整个项目持续使用无意义的提交日志,这里会是一个扣分项,如之前作业中的:

weekxxx

Pxxx代码

纯数字类名:1.2

日期:0409

只写文件名

......

二、博客规范

小组的两位同学都需要提交各自的博客,最终将视博客的质量给出各自的博客部分分数。

博客中需附:

码云链接

需求分析

设计思路

UML类图

功能截图

结对感受

结对编程的照片

......

三、截止时间

本项目持续两周时间,从发布作业当天开始计算

第一周:阶段性总结

第二周:整体总结

附:参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值