zoukankan      html  css  js  c++  java
  • 结对编程第二阶段

    一、实验目标

      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

  • 相关阅读:
    Binary Tree Level Order Traversal
    Search a 2D Matrix
    Minimum Path Sum
    Remove Duplicates from Sorted Array II
    AngularJS 过滤器
    AngularJS 控制器
    AngularJS ng-model 指令
    AngularJS Scope(作用域)
    AngularJS 指令
    AngularJS表达式
  • 原文地址:https://www.cnblogs.com/zxtzszyz/p/12639066.html
Copyright © 2011-2022 走看看