结对编程第一阶段
Posted wjin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结对编程第一阶段相关的知识,希望对你有一定的参考价值。
一、实验目标:
1)体验敏捷开发中的两人合作。
2)进一步提高个人编程技巧与实践。
二 、实验内容
1)根据以下问题描述,练习结对编程(pair programming)实践;
2)要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求。
3)要求在结对编程工作期间,两人的角色至少切换 4 次;
4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。
三、实验过程
1.查阅相关资料加深对敏捷开发和结对编程的理解
(1)查阅资料
敏捷开发:https://baike.baidu.com/item/%E6%95%8F%E6%8D%B7%E5%BC%80%E5%8F%91
结对编程:https://baike.baidu.com/item/%E7%BB%93%E5%AF%B9%E7%BC%96%E7%A8%8B
(2)理解
软件开发面临着需求不断变化和快速交付的挑战,所以人们开始尝试敏捷开发方法,敏捷开发是一-种基于更紧密的团队协作、能够有效应对快速变化需求、快速交付高质量软件的迭代和增量的新型软件开发方法。而结对编程是一种敏捷开发的方法。现阶段我 们没有办法面对面结对编程,所以采用远程结对编程。
2.组队情况
队名:代码敲不队
(1)各队博客地址:
王锦(https://www.cnblogs.com/wjin/) 张子毓(https://www.cnblogs.com/lingluan23333/) 四则运算
(2)github仓库地址
https://github.com/Wjinfiny/daimaqiaobu
(3)所选择的课题
四则运算:
开发一个自动生成小学四则运算题目的命令行 “软件”。实现 输入你要出题的个数,随机产生四则运算,然后用户回答,并且进行打分。
规则:用随机数实现100以内的加、减、乘、除运算,其中和与积不能超过100,差不为负(即须大减小),商不为小数或分数(即必须整除)。要求总计输出10个运算式,每输出一个运算式,等待输入结果,然后进行对错判断并输出。最后输出统计答对的题数与分数。
3、对课题的理解
(1) 需求理解
随机产生需要计算的式子10个、计算结果
输入:用户计算的结果
输出:判断正误,给出分数
满足真分数的运算如:1/3 + 1/4 = 7/12
处理的运算符为 +, −, ×, ÷
能处理用户的输入,并判断对错,统计分数。
(2)设计思路
自动生成四则运算,需要用到随机数,用随机数随机生成数字,以及随机生成0,1,2,3分别代表加减乘除符号以switch语句进行分类
特殊情况主要有除数不能为0,假如除数为0,则再产生一个随机数,利用while循环;
用count统计做对的条数,与总数相除作为正确率
4、采用开发平台和技术工具
经过我们的讨论,我们决定使用Dev开发平台,开发语言为C语言;
实际我们是先确定开发语言的,我们直接了当的选择了C语言,因为我们俩都对C语言最为熟悉,选择C语言后,我们再决定选择了四则运算,因为相对于生命游戏需要良好的界面化设计,我们认为四则运算相对更是适合用面向过程的C语言编写。接下来我们相互说了自己的开发平台,我们决定使用Dev开发。
5、其他
我们再实验开始时,讨论了大概的进度。
我们根据老师布置的阶段编程任务,也参考了其他同学的进度,最后决定3月21日完成阶段编程一,并对四则运算编程的基本代码框架进行确定;在3月25日及星期三下午进行第二阶段的结对编程。
我们在结对编程的一开始就遇到了困难,我们对于托管并不是很了解,如何保持远程仓库与本地仓库保持一致等等问题都让我们苦恼,所以用重新看了老师教学视频,做了选做的托管实验,加深了对托管的理解后,我们就正式开始准备结对编程。
四、关于算法的讨论
1. 我们对题目进一步进行了讨论,首先题目说的四则运算复杂度到底是多少,有可能是1+2=3这样很简单的的运算,也有可能是三到四个运算符的复杂运算,如果是手动输入产生的运算式还比较简单,张子毓指出这是随机生成的式子,那么怎么确定式子的复杂度 呢。我们之间有了分歧,张子毓认为可以固定式子的长度为三到四个运算符,我认为可以利用随机数,确定式子长度微一到五个运算符。最后我们决定等写代码时根据具体复杂程度来确定方案。
2. 我们还讨论了运算符和运算数是用数字放还是堆栈。如果是生成式子用数组比较简单,因为运算符只有四个;但是如果用数组,在运算时相对于堆栈要麻烦,优先级不好处理,所以初步确定用堆栈存放运算符和运算数。
3. 我们也基本了解掌握了判断运算符优先级和两数运算的算法。
准备工作基本都已经做好了,万事俱备,只欠周三的到来 ,嘻嘻!
以上是关于结对编程第一阶段的主要内容,如果未能解决你的问题,请参考以下文章