四则运算实验报告

实验题目:结对编程-四则运算

实验日期:2017.5.12
实验内容:编译一个程序,使其:

  1. 自动生成小学四则运算题目(加、减、乘、除)
  2. 持多运算符(比如生成包含100个运算符的题目)
  3. 支持真分数
  4. 统计正确率
  5. 支持整数
    指导老师:娄老师、谢老师,王老师。

实验内容:

需求分析与设计思路

根据要求的四则运算,第一反应就是ifelse语句来选择加减乘除,如此继续延伸,ifelse语句也可以用来写是否加入真分数等等这些操作,因此,这次实验我们选择大量使用ifelse语句来编写,但是在如何计算出值和表达式方面,通过谢老师的博客知道,我们需要学习逆波兰式算法,进而得出计算结果,并且由于需要判断的语句较多,需要进行多次输入新的变量。

首先需要完成的是伪代码的编写,由于代码量比较大,在编译过程中有困难,因为大量的代价十分容易产生混淆与重复的问题,同时本次实验的代码的层次十分多,环节十分复杂,在编译过程中出现逻辑错误的可能性很高,需要进行多次编写和修改。在几个实验要求中,支持真分数运算是比较困难的一个部分,首先要确定输入值是否为真分数,这里就有了一个比较的过程,但是幸运的是,我们在多运算符解决之前就解决了真分数的问题,同时我们选择了在代码一开始就给使用者一个选择,是否加入真分数。


同时真分数时候的一些注意事项


在完成了这两个难点之后,判断答案并进行记录,统计正确率是总结整个代码的过程,对于答题情况的统计,同样要通过变量进行统计。

最后结果如图

困难点:
因为这是结对编程项目,其一对于多运算符方面的问题,我们在网上进行查找,但是都没有找到一个令人满意的解决办法。其二,因为结对人更多的选择使用bash进行编程,所以要结合IDEA和bash来进行编程。其三,因为代码量很大,出现很多问题,需要不断的改进和修正。
解决办法:
结对人刑天钺同学与张泰毓同学交流学习后,结合张同学在码云上的代码,完成了多运算符的代码编译,完善了代码。编译方法为:给代码增加一个for循环语句,在不加入括号的情况下,运算符由数字、符号、数字、符号组成,将这个语句进行长度加一的循环,就完成了多运算符的计算。

结对学习情况:
本次实验,我与20162309刑天钺结对共同完成本次实验,刑天钺同学在java学习上基本功很扎实,在对代码的理解深入。能够提出很多新颖的想法,给习惯照本宣科的我以很大的启迪。
但是本次结对编程中,我们队还存在一个问题就是,代码量很大,重复冗杂的很多,因此不得不拿出很多时间去精简一下,虽然也没精简多少。

PSP表格:

|

PSP2.1 Personal Software Process Stages 预估耗时(小时) 实际耗时(小时)
Planning 计划 15 17
· Estimate · 估计这个任务需要多少时间 8 11
· Analysis · 需求分析 (包括学习新技术) 2 2
· Design Spec · 生成设计文档 0.5 0.33
· Design Review · 设计复审 (和同事审核设计文档) 0.5 0.5
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 1 1.5
· Design · 具体设计 2 3
· Coding · 具体编码 3 4
· Code Review · 代码复审 2 1.5
· Test · 测试(自我测试,修改代码,提交修改) 1 1
Reporting 报告 1 1
· Test Report · 测试报告 2 2.5
· Size Measurement · 计算工作量 0.5 0.5
· Postmortem & Process · 事后总结, 并提出过程改进计划 2 2
Improvement Plan 合计 22.5

实验总结:

本次实验是学习java以来一次较为完整和系统的考察学习情况的实验过程,通过结对实验的方式来实现。本次实验有一定的难度,考察方式较为全面,需要投入较多的时间和精力,在一些实验要求上,比如在给定的一定数量(较大)的代码输出结果中,需要为客户自动筛选出是否存在重复代码,以及多重的判断语句,在编译上确实存在困难,本周也只是完成了一部分实验内容,一些完善工作还需要完成。通过结对编程任务,在java运用上体会到了还有很多在教材学习上没有学习到和掌握的知识,只是单纯地完成教材上的代码任务很难全面的学习,通过每周的实验任务以及随堂代码运行检查可以有效地进行巩固对学习有很大帮助。
四则运算的实验的代码量相对较多,在测试和运行时,单纯的命令行就无法较为简洁地完成了,则idea的一些好处就体现出来了,代码量大的程序idea可以更加方便地进行错误的检查,判断语法,对实验的完成有很大的帮助。

原文地址:https://www.cnblogs.com/yuanhongming/p/6853596.html