实验二 结对编程 第一阶段
一、实验目标:
1)体验敏捷开发中的两人合作。
2)进一步提高个人编程技巧与实践。
二 、实验内容:
1)根据以下问题描述,练习结对编程(pair programming)实践;
2)要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求。
3)要求在结对编程工作期间,两人的角色至少切换 4 次;
4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。
三、问题描述
开发一个自动生成小学四则运算题目的命令行 “软件”。实现 输入你要出题的个数,随机产生四则运算,然后用户回答,并且进行打分。
规则:用随机数实现100以内的加、减、乘、除运算,其中和与积不能超过100,差不为负(即须大减小),商不为小数或分数(即必须整除)。要求总计输出10个运算式,每输出一个运算式,等待输入结果,然后进行对错判断并输出。最后输出统计答对的题数与分
结对编程第一周实验记录
1)查阅相关资料加深对敏捷开发和结对编程的理解;
敏捷开发:(英语:Agile software development),又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的新型软件开发方法,是一种能应对快速变化需求的软件开发能力。它们的具体名称、理念、过程、术语都不尽相同,相对于“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发过程中人的作用。敏捷软件开发描述了一套软件开发的价值和原则,在这些开发中,需求和解决方案皆通过自组织跨功能团队达成。敏捷软件开发主张适度的计划、进化开发、提前交付与持续改进,并且鼓励快速与灵活的面对开发与变更。这些原则支援许多软件开发方法的定义和持续进化。参考百科:https://baike.baidu.com/item/敏捷软件开发/7108658?fr=aladdin
结对编程:(英语:Pair programming)是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。一个人输入代码,而另一个人审查他输入的每一行代码。输入代码的人称作驾驶员,审查代码的人称作观察员(或导航员)。两个程序员经常互换角色。在结对编程中,观察员同时考虑工作的战略性方向,提出改进的意见,或将来可能出现的问题以便处理。这样使得驾驶者可以集中全部注意力在完成当前任务的“战术”方面。观察员当作安全网和指南。结对编程对开发程序有很多好处。比如增加纪律性,写出更好的代码等。
结对编程是极端编程的组成部分。参考百科:https://baike.baidu.com/item/结对编程/7526152?fr=aladdin
2)组队情况,各队博客地址,github仓库地址,所选择的课题;
滕磊 :https://www.cnblogs.com/lianse/
谢林林:https://www.cnblogs.com/xielinlin/
仓库地址:https://github.com/rezero0523/sizeyunsuan_jiedui
3)针对课题查阅的资料,对课题的理解
JAVA语言实现四则运算的方法:前中后缀表达式,参考文献:https://blog.csdn.net/zzucsliang/article/details/25282249?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158475986719195162546703%2522%252C%2522scm%2522%253A%252220140713.130056874..%2522%257D&request_id=158475986719195162546703&biz_id=0&utm_source=distribute.pc_search_result.none-task
JAVA语言实现随机产生四则运算的简单流程以及思想:参考文献:https://blog.csdn.net/kuku713/article/details/12684509?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158475970619725219956775%2522%252C%2522scm%2522%253A%252220140713.130056874..%2522%257D&request_id=158475970619725219956775&biz_id=0&utm_source=distribute.pc_search_result.none-task
JAVA的SWING工具与四则运算的简单协调:参考文献:https://blog.csdn.net/without_scruple/article/details/78603605?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
个人理解:
需要实现的几个模块
1.输入需要产生题目的数量
2.明晰题目的出题范围,包括运算表达式的长度,结果范围等
3.输入各题答案以及校验答案,计算得分。
4)二个人商量后,采用开发平台和技术工具
Eclispe开发工具java语言
5)其它:
Q1.题目的出题范围,考虑到简单四则运算的表达,与随机生成式的范围,是否要控制生成式的长度?
Q2.如何产生随机符号?
Q3.是否考虑左右括号随机产生的情况,对应括号的匹配问题?
Q4.生成式产生之后是否符合题目要求,不符合,才用何种方式去除?由此衍生出的随机生成字符和算术表达式的强制转换问题.
Q5.回答的结果如何校验?
A1.由于本次实验涉及到的数据范围较小,所以需要控制生成式的长度,但是是否需要定长?综合考虑算法的复杂程度,出题范围.
A2.首先调用random函数产生对应范围的随机数,如何对各个符号进行排序存入一个数组中,依照随机数产生符号,除了结尾符号,其余先产生一个随机数再产生一个符号,最后结尾的符号再产生一个数字和连接一个"="
A3.暂时不考虑随机生成括号问题,若考虑不定长生成式暂时不考虑括号产生问题,考虑不定长时,需要时刻对左右括号是否匹配进行校验,同时左右括号出现时下一个数字或者字符的产生范围也产生了很大,由于本次实验旨在训练结对编程的基本流程,并不考虑复杂运算的实现,此处仅涉及两个随机数的简单四则运算.
A4.生成式判断.对应随机产生并连接的字符串,强制转换为数字表达式,对数字表达式的结果进行校验,符合范围就同时存储该表达式,和结果到对应的数组中.
A5.输入的各个结果存入数字与答案数组进行校验,同时计算的得分的正确率.