软工实践——第2次作业:结对编程——四则运算

 

班级:软工2班

姓名:1759201赵祖安 与  1759206王钰

(以下文章依次简称zza 与 wy)

 

题目:小学老师要每周给同学出四则运算练习题。

 

两个运算符,100以内的数字,不需要写答案。【估计时间1】

 

现在估计写这个程序需要的时间。

 

需要写答案【估计时间2】

 

//之后扩展开,加括号,限制数值范围,乘除法,支持分数等

 

//估计做好这个软件需要多长时间

 

要求: 两人一篇,写出编程流程,分析讨论(矛盾)的过程,编程所用时间

 

 

 

 

一.结对编程过程中遇到的矛盾与解决:

         1.矛盾:编程语言分歧

          我们一开始就在选择哪种编程语言上有了分歧。wy比较习惯使用java,而zza喜欢使用c++。然而一个程序肯定要使用同一种语言。

          解决:在我们商量之后,出于程序的易维护与可读性,还是决定使用java来编写这段程序。

        2.矛盾:工作时间安排

          两个人在一起工作时间上不是很合得来。wy周六下午想写代码,但zza有事;zza当天晚上有空,但wy又想休息。所以最后我们约定             了周日下午来学校实验楼开放机房,来共同完成这次的作业。

         3.矛盾:一个人在coding,另一个人感觉无所事事

         解决:整体coding 与分块测试同步进行,每个人都有事做。有问题了再互相交流。

         4.矛盾:编码风格不太一样,而且也没有事先约定。

                     zza偏向c++的编码风格,而且会非常“夸张”地空格、换行、分多文件……而wy比较偏c,代码写得比较紧凑。所以我们一开始                      的合作花了很多力气纠结风格的不一致,而非好好工作。
           解决:很多东西一定要事先约定好。确实存在的矛盾就是确实存在的,不可能写着写着就消失,如果一开始不约定好肯定会浪费后面的时间。

 

二.结对编码的coding过程

 1.程序1:不需要输出答案【估计用时:60min】

                        【实际用时:75min】

 

import java.util.Random;

import java.util.Scanner;

 

 

public class Calculate {

         private static Scanner input = new Scanner(System.in);

         public static void main(String[] agrs) {

                   int choose;

                   int right = 0;

                   int first = 0;

                   int last = 0;

                   int[] error = new int[30];

                   int[] errorId = new int[30];

                   int oper, j = 0, k = 0;

                   int result1 = 0;

                   int result2 = 0;

                   Random random = new Random();

                   while (true) {

                            System.out.print("是否进行运算:   1.是         2.否\n");

                            choose = input.nextInt();

                            if (choose == 1) {

                                     System.out.println("请输入做题数目:");

                                     int number = 0;

                                     number = input.nextInt();

                                     for (int i = 0; i < number; i++) {

                                               Scanner input = new Scanner(System.in);

                                               first = random.nextInt(100);

                                               last = random.nextInt(100);

                                               oper = random.nextInt(4);

                                               switch (oper) {

                                               case 0:

                                               {

                                                        System.out.print(i + 1 + ".  " + first + "+" + last + "=");

                                                        result1 = input.nextInt();

                                                        result2 = first + last;

                                                        if (result1 == result2)

                                                                 right++;

                                                        else {

                                                                 error[j] = result2;

                                                                 errorId[k] = i + 1;

                                                                 j++;

                                                                 k++;

                                                        }

                                                        break;

                                               }

                                               case 1:

                                               {

                                                        while (first < last) {

                                                                 first = random.nextInt(100);

                                                                 last = random.nextInt(100);

                                                        }

                                                        System.out.print(i + 1 + ".  " + first + "-" + last + "=");

                                                        result1 = input.nextInt();

                                                        result2 = first - last;

                                                        if (result1 == result2)

                                                                 right++;

                                                        else {

                                                                 error[j] = result2;

                                                                 errorId[k] = i + 1;

                                                                 j++;

                                                                 k++;

                                                        }

                                                        break;

                                               }

                                               case 2:

                                               {

                                                        System.out.print(i + 1 + ".  " + first + "*" + last + "=");

                                                        result1 = input.nextInt();

                                                        result2 = first * last;

                                                        if (result1 == result2)

                                                                 right++;

                                                        else {

                                                                 error[j] = result2;

                                                                 errorId[k] = i + 1;

                                                                 j++;

                                                                 k++;

                                                        }

                                                        break;

                                               }

                                               case 3:

                                               {

                                                        if (last == 0) {

                                                                 last = random.nextInt(99) + 1;

                                                        }

                                                        while (first % last != 0) {

                                                                 first = random.nextInt(100);

                                                                 last = random.nextInt(99) + 1;

                                                        }

                                                        System.out.print(i + 1 + ".  " + first + "/" + last + "=");

                                                        result1 = input.nextInt();

                                                        result2 = first / last;

                                                        if (result1 == result2)

                                                                 right++;

                                                        else {

                                                                 error[j] = result2;

                                                                 errorId[k] = i + 1;

                                                                 j++;

                                                                 k++;

                                                        }

                                                        break;

                                               }

                                               }

                                     }

                                    

                            }

                   }

         }

}

结果截图:

 

 

二、程序2:可以选择是否输出答案【估计用时:10min】

                               【实际用时:18min】

代码段:

 

import java.util.Random;

import java.util.Scanner;

 

 

public class Calculate {

         private static Scanner input = new Scanner(System.in);

         public static void main(String[] agrs) {

                   int choose;

                   int right = 0;

                   int first = 0;

                   int last = 0;

                   int[] error = new int[30];

                   int[] errorId = new int[30];

                   int oper, j = 0, k = 0;

                   int result1 = 0;

                   int result2 = 0;

                   Random random = new Random();

                   while (true) {

                            System.out.print("是否进行运算:   1.是         2.否\n");

                            choose = input.nextInt();

                            if (choose == 1) {

                                     System.out.println("请输入做题数目:");

                                     int number = 0;

                                     number = input.nextInt();

                                     for (int i = 0; i < number; i++) {

                                               Scanner input = new Scanner(System.in);

                                               first = random.nextInt(100);

                                               last = random.nextInt(100);

                                               oper = random.nextInt(4);

                                               switch (oper) {

                                               case 0:

                                               {

                                                        System.out.print(i + 1 + ".  " + first + "+" + last + "=");

                                                        result1 = input.nextInt();

                                                        result2 = first + last;

                                                        if (result1 == result2)

                                                                 right++;

                                                        else {

                                                                 error[j] = result2;

                                                                 errorId[k] = i + 1;

                                                                 j++;

                                                                 k++;

                                                        }

                                                        break;

                                               }

                                               case 1:

                                               {

                                                        while (first < last) {

                                                                 first = random.nextInt(100);

                                                                 last = random.nextInt(100);

                                                        }

                                                        System.out.print(i + 1 + ".  " + first + "-" + last + "=");

                                                        result1 = input.nextInt();

                                                        result2 = first - last;

                                                        if (result1 == result2)

                                                                 right++;

                                                        else {

                                                                 error[j] = result2;

                                                                 errorId[k] = i + 1;

                                                                 j++;

                                                                 k++;

                                                        }

                                                        break;

                                               }

                                               case 2:

                                               {

                                                        System.out.print(i + 1 + ".  " + first + "*" + last + "=");

                                                        result1 = input.nextInt();

                                                        result2 = first * last;

                                                        if (result1 == result2)

                                                                 right++;

                                                        else {

                                                                 error[j] = result2;

                                                                 errorId[k] = i + 1;

                                                                 j++;

                                                                 k++;

                                                        }

                                                        break;

                                               }

                                               case 3:

                                               {

                                                        if (last == 0) {

                                                                 last = random.nextInt(99) + 1;

                                                        }

                                                        while (first % last != 0) {

                                                                 first = random.nextInt(100);

                                                                 last = random.nextInt(99) + 1;

                                                        }

                                                        System.out.print(i + 1 + ".  " + first + "/" + last + "=");

                                                        result1 = input.nextInt();

                                                        result2 = first / last;

                                                        if (result1 == result2)

                                                                 right++;

                                                        else {

                                                                 error[j] = result2;

                                                                 errorId[k] = i + 1;

                                                                 j++;

                                                                 k++;

                                                        }

                                                        break;

                                               }

                                               }

                                     }

                                     System.out.print("你一共答对了" + right + "道题\n" + "其中错误的题和其正确答案为:\n");

                                     for (int m = 0; m < j; m++) {

                                               System.out.print(errorId[m] + ".  " + error[m] + "  ");

                                               System.out.print("\n");

                                     }

                            }

                   }

         }

}

 

结果截图:

 

 

三.心得体会

赵祖安zza心得体会:

这次结对编程是一种全新的体验。编码不再是私人的工作,而是一种公开的“表演”。程序员的代码,工作方式,技术水平都变得公开和透明。在coding时不能再开开小差,刷刷网页——只能专心致志的coding!尽管自己一个人编程时也能专著而紧凑的工作,但连续度并不高。而在结对coding时,不知不觉中,一个模块接着一个模块就写完了。——连续度有了显著的提高!我觉得,这是因为出于人性的“虚荣”——比一个人的时候更勤奋和更聪明的工作,因为不想让自己的partner失望。完成作业后,我们也对自己的工作更有信心和成就感。

这次经历很愉快,很愿意很partner一起工作。期待下一次合作~

 

王钰wy心得体会:

大家的水平有所差异和编程风格不同,其中代码的签入,我和她两个人仔细审核编译运行的错误一起寻找错误,其中最重要的两人的沟通问题和协调问题,遇到问题我们两个首先是冷静下来分析问题,大家发表自己的意见,试着从对方的角度来看待问题,换位思考。沟通协调才能提高我们的开发效率。结对编程需要两个人精诚协作,人有不同的水平,有的方面擅长,有的方面弱,应该避免个人主义的发生,共同协调解决开发过程中发生的问题

 

 

转载于:https://www.cnblogs.com/Ann201/p/10558258.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值