结对编程
组员:1959135 王刚
1959117 戴干
一、 实验目的
结对编程是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。一个人输入代码,而另一个人审查他输入的每一行代码,是极端编程的组成部分。结对编程技术是一个非常简单和直观的概念,能达到事半功倍的工作效果。经过缜密的思考和计划,两个有经验的人能够在不同的抽象层次解决同一个问题,更快地获得错误更少、更强大的解决方案。所以,希望通过本次实验让同学们*组队建立团队,熟悉结对编程的各个过程,体会两个人一起工作的乐趣,相互弥补、一起学习,感受结对编程的作用和魅力。
二、实验环境
系统版本:macOS Big Sur
集成开发环境:Xcode
编程语言:Swift
三、实验内容
四则运算是小学数学的重要内容,也是学习其它各有关知识的基础。本次实验希望同学们能够编写代码,帮助小学老师每周给同学出300道100以内的加、减、乘、除四则运算,并且最终的结果大于0小于100,以便小学生们每周的练习。
四、实验步骤
1.根据题意先生成三个随机数
2.相对应生成两个符号0到3,对应四个符号
3.将前面两个数与第一个数进行结合
考虑到优先级,没有马上算出前面两个数到计算结果,并对没有整除的算式进行筛选
4.与第二个符号进行组合
与第二个符号结合计算时记得补上之前因为优先级没有加上的第一个数
4.输出结果
并筛选出答案大于0而且小于100的数
5.代码
import Foundation
var num = 1
while num<=100{
let a = Int.random(in: 0...3)
let a1 = Int.random(in: 0...3)
var c1 = " "
var c2 = " "
var k = 0
let x1 = Int.random(in: 1...100)
let x2 = Int.random(in: 1...100)
let x3 = Int.random(in: 1...100)
if a==0{ //自定义第一个运算符
c1 = "+"
k = x2
}else if a==1{
c1 = "-"
k = -x2
}else if a==2{
c1 = "*"
k=x1*x2
}else if x1%x2==0{
c1 = "/"
k=x1/x2
}else {
continue
}
if a1==0{ //自定义第二个运算符
c2 = "+"
k=k+x3
}else if a1==1{
c2 = "-"
k=k-x3
}else if a1==2{
c2 = "*"
k=k*x3
}else if k%x3==0{
c2 = "/"
k=k/x3
}else {
continue
}
if a==0 || a==1{
k = k+x1
}
if k>0 && k<100{
print("\(x1)"+c1+"\(x2)"+c2+"\(x3)"+"="+"\(k)")
num = num+1
}
}
五、实验结果及分析
实验结果:
问题分析:在如何考虑优先级时和另一位成员考虑了很久,因为我们的符号是通过数字直接生成的,所以很难处理。最后想到了不对第一个随机数进行处理,先对后两个数进行处理,再回头加上第一个数。其他地方比较自然的写下来了,没有遇到什么困难的地方
六、实验体会
本次实验内容为随机输出300道100以内的加减乘除四则运算,结果大于0小于100。因为我们两个都是ios club的成员,所以选用了swift作为开发语言,代码的编写方面,因为实验要求不高,整体比较简单,没有遇到过多的困难,编写代码时,还考虑并讨论了一些问题,增加了点实验细节,比如乘除运算的结果不能为小数或分数(即必须整除)等并以实现,希望能在未来的编写中能解决并改良代码功能如有每道题输出时可以输入结果,判断对错并显示正确答案,还能统计得分等等。
再说到本次实验的目的是体会和熟悉结对编程的基础知识,了解具体的开发方法和流程。这让我想到了github等网站对代码进行版本的管理存储,不同的人对同一个项目进行协同开发。在团队合作下,体会互帮互助的优越性和两个人思想碰撞时产生的智慧火花,拓宽视野、奇思妙想。基于面对面的结对编程,也可以降低我们的错误量,发现错误及时指出,减少了后期错误的调试;相互讨论中,可以快速解决问题,达成知识共享;也可以起到相互监督,避免偷懒的作用。当然,也存在一定的问题,如两人的代码速度不一、实力不想当、沟通中的争执等,都会影响项目进度,如果将来遇到,希望能妥善解决。