结对编程第二阶段

Posted zxtzszyz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结对编程第二阶段相关的知识,希望对你有一定的参考价值。

一、实验目标

  1)体验敏捷开发中的两人合作。

  2)进一步提高个人编程技巧与实践。

二 、实验内容

  1)根据以下问题描述,练习结对编程(pair programming)实践;

  2)要求学生两人一组,自由组合。每组使用一台计算机,二人共同编码,完成实验要求。

  3)要求在结对编程工作期间,两人的角色至少切换 4 次;

  4)编程语言不限,版本不限。建议使用 Python 或 JAVA 进行编程。

三、实验过程

1、代码规范

1、变量名不可以是关键字,尽量做到见名知意。

2、宏定义里变量名全大写。Java包(Package)属于一种特殊情况:它们全都是小写字母,即便中间的单词亦是如此。

3、函数名采用小驼峰式命名法。

4、缩进正确

缩进是通过键盘上的 Tab 键实现的,缩进可以使程序更有层次感。原则是:如果地位相等,则不需要缩进;如果属于某一个代码的内部代码就需要缩进。

5、注释简明易懂。

(1)注释是对代码的“提示”,而不是文档。程序中的注释不可喧宾夺主,注释太多会让人眼花缭乱;                                                                                         

(2)如果代码本来就是清楚的,则不必加注释;

(3)边写代码边注释,修改代码的同时要修改相应的注释,以保证注释与代码的一致性,不再有用的注释要删除;

(4)当代码比较长,特别是有多重嵌套的时候,应当在段落的结束处加注释,这样便于阅读;

(5)每一条宏定义的右边必须要有注释,说明其作用。

6、下面是对类的一些建议:

(1)一个复杂的开关语句:考虑采用"多形"机制;

(2)数量众多的方法涉及到类型差别极大的操作:考虑用几个类来分别实现;

(3)许多成员变量在特征上有很大的差别:考虑使用几个类。

实验设计思路:
对于四则运算的程序,首先董纬就提出要使用if、else语句,我们考虑到在实验要求中需要支持真分数,则需要分类进行编译。对于算式的计算,我觉得需要应用到栈的方法。在如何计算出值和表达式方面,我们通过qq视频通话并一起参考博客,需要学习逆波兰式算法,得出计算结果,由于需要判断的语句较多,则需要进行多次输入新的变量

技术图片

 

 在设计整个实验的过程中,由于代码量比较大,在编译过程中有一定的困难,新输入的变量和调用的方法都相对较多,十分容易产生混淆,同时本次实验的代码的层次十分多,环节较为复杂,在编译过程中出现逻辑错误的可能性很高,需要进行多次编写和修改。在几个实验要求中,支持真分数运算是比较困难的一个部分,首先要确定输入值是否为真分数,这里就有了一个比较的过程。董纬就给出了如下代码。

技术图片

 

 在判断完之后将进行计算,并在最后需要加上返回语句,输出结果,同时由于一个真分数的分母不能为0,在编写过程中需要加上额外的判断语句技术图片

 

 最终在我们两人的努力下,系统地将代码编写完成并运行

实验代码:

import java.util.Scanner;

 

public class Arithmetic {

public static void main(String[] arge)

{

int x,y,i;

int result=0;

System.out.println("请输入题目的数量");

Scanner scanner=new Scanner(System.in);

x=scanner.nextInt();

int number[]=new int [x];

System.out.println("请输入最大数值的范围");

y=scanner.nextInt();

for(i=0;i<x;i++){

int a=(int)(Math.random()*y);//随机生成一个1-y的整数

int b=(int)(Math.random()*y);//随机生成一个1-y的整数

int c=(int)(Math.random()*3);//随机生成一个1-4的整数,0表示加法,1表示减法,2表示乘法,3表示除法

if(c==0)

{

result=a+b;

System.out.print(a+"+"+b+"= ");

}

if(c==1)

{

result=a-b;

System.out.print(a+"-"+b+"= ");

}

if(c==2)

{

result=a*b;

System.out.print(a+"*"+b+"= ");

}

if(c==3)

{

result=a/b;

System.out.print(a+"/"+b+"= ");

}

if((i+1)%3==0){

System.out.println();

}

number[i]=result;

}

System.out.println("如需显示答案请输入1");

if(scanner.nextInt()==1){

for(i=0;i<x;i++){

System.out.print(number[i]+" ");

}

}

}

}

实验总结:
本次实验是学习java以来一次较为完整和系统的考察学习情况的实验过程,通过结对实验的方式来实现。本次实验有一定的难度,考察方式较为全面,需要投入较多的时间和精力,在一些实验要求上,比如在给定的一定数量(较大)的代码输出结果中,需要为客户自动筛选出是否存在重复代码,以及多重的判断语句

项目github地址:技术图片https://github.com/pxw3170701339/pp_project.git

以上是关于结对编程第二阶段的主要内容,如果未能解决你的问题,请参考以下文章

20172320 结对编程项目-四则运算 第二周 阶段总结

实验:结对编程 第二阶段

20172327 结对编程项目-四则运算 第二周 阶段总结

结对编程-第二阶段

结对编程(第二阶段)

结对编程 第二阶段