一、实验目标
  1)体验敏捷开发中的两人合作。

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

 

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

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

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

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

 

三、实验过程

1、代码规范

 由于我们采用的是C语言,所以以下是我查找资料并总结的代码规范。

 代码规范化基本上有七大原则,体现在空行、空格、成对书写、缩进、对齐、代码行、注释七方面的书写规范上。

  1)空行

  规则一:定义变量后要空行。

  规则二:每个函数定义结束之后都要加空行。

  总规则:两个相对独立的程序块、变量说明之后必须要加空行。

  2)空格

  规则一:关键字之后要留空格。像 const、case 等关键字之后至少要留一个空格,否则无法辨析关键字。

  规则二:函数名之后不要留空格,应紧跟左括号(,以与关键字区别。

  规则四:,之后要留空格。如果;不是一行的结束符号,其后要留空格。

  规则五:双目运算符的前后应当加空格,单目运算符以及像数组符号[]、结构体成员运算符.、指向结构体成员运算符->,这类操作符前后不加空格。

  3)缩进

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

  4)成对书写

  成对的符号一定要成对书写,如{,}。

  5)对齐

  对于大括号来说:{}分别都要独占一行。互为一对的{}要位于同一列,并且与引用它们的语句左对齐;

                               {}之内的代码要向内缩进一个 Tab,且同一地位的要左对齐,地位不同的继续缩进。

  6)代码行

  规则一:一行代码只做一件事情,如只定义一个变量,也便于注释。

  规则二:if、else等语句自占一行,执行语句不得紧跟其后。

  7)注释

  规则一:注释是对代码的“提示”,而不是文档,不应过于繁琐。

  规则二:如果代码本来就是清楚的,则不必加注释。如i++。

  规则三:边写代码边注释,修改代码的同时要修改相应的注释,以保证注释与代码的一致性。

  规则四:当代码比较长,特别是有多重嵌套的时候,应当在段落的结束处加注释,便于阅读。

  规则五:每一条宏定义的右边必须要有注释,说明其作用。

参考链接:http://c.biancheng.net/view/158.html

2、程序的总体设计

  主程序包括以下几个部分:

  1. 变量定义(操作数a,b,结果d,运算符c,答对题数统计sum等)
  2. 开始循环输出运算式
  3. 产生随机数(先初始化)
  4. 判断随机数是否满足条件
  5. 输出运算式
  6. 等待输入
  7. 结果判断
  8. 结束循环输出运算式
  9. 输出统计数据

  程序的总体设计流程图如下:

 

3、程序结对编程过程及功能实现情况

  (1)结对编程的过程

  一开始我们一起在网上查找关于四则运算的资料,以及其他做成功的案例,考虑怎么二人协作完成此次实验。

  然后我们商定出了一个大概的程序,运行条件都满足,但是仍需优化,于是李夏对程序进行了一番修改,添加了界面颜色、输出方式等,使其更加完善。

 

  在对代码进行修改提交时,我进行了如下操作

  (2)功能实现

  首先产生随机数,然后生成算式,输入自己的计算结果,然后判断对错,最后系统统计出正确题数和所得分数。

  刚开始的进入界面是一颗大大的爱心,开始测验,紧接着出现的就是第一个算式

 

  输入自己的运算结果后,系统会判断结果是否正确,并给出下一算式

 

  一共有十个算式,当所有结果全部输入完成后,系统会自动统计成绩,若是对的题数小于七,则会在给出成绩的同时给予鼓励的话

  若是对的题数大于等于七,则会同样在给出成绩的同时给与夸奖。

源代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    int a,b,d,e,t; //定义两个操作数a,b,结果d,输入结果t
    char c;        //运算符c可取“+、-、×、÷”
 float y, x, m; 
    int i,sum=0;    //题目数量i,答对数目sum
    srand(time(0)); //初始化随机数发生器
    /**< 产生数据 */
 system("color 73");
 printf("--------------------欢迎来到四则运算小练习--------------------\r\n");
    for (y = 1.5f;y > -1.5f;y -= 0.1f) 
    { 
        for (x = -1.5f;x < 1.5f;x += 0.05f) 
        { 
            m = x*x + y*y - 1; 
            putchar(m*m*m - x*x*y*y*y <= 0.0f ? '*' : ' '); 
        }
  putchar('\n');
    }
 printf("-------------------------咱们开始喽-------------------------\r\n");
    for(i=0;i<10;i++)
    {
        a=rand()%100+1;
        b=rand()%100+1;
        c=rand()%4;     //0表加,1表减,2表乘,3表除

        /**< 数据合格判断及算式显示 */
        printf("                      第%d题:",i+1);
        switch(c)
        {
        case 0:
            while((d=a+b)>100)    //保证和在100内
            {
                a=rand()%100+1;
                b=rand()%100+1;
            }
            printf("%d + %d = ",a,b);
            break;
        case 1:
            while(a>100||b>100) //被减数小于100
            {
                a=rand()%100+1;
                b=rand()%100+1;
            }
            if(a<b)             //被减数大于减数
            {
                d=a;
                a=b;
                b=d;
            }
            d=a-b;
            printf("%d - %d = ",a,b);
            break;
        case 2:
            while((d=a*b)>100)    //保证积小于100
            {
                a=rand()%100+1;
                b=rand()%100+1;
            }
            printf("%d × %d = ",a,b);
            break;
        case 3:
            while(a>100||b>100||(a*b==0))   //保证被除数小于100且除数不为0
            {
                a=rand()%100+1;
                b=rand()%100+1;
            }
            if(a<b)           //被除数必须大于除数
            {
                d=a;
                a=b;
                b=d;
            }
            a=(a/b)*b;      //保证整除
            d=a/b;
            printf("%d ÷ %d = ",a,b);
            break;
        }
        /**< 输入你的计算结果 */
        scanf("%d",&t);
        if(d==t)
        {
            sum++;
            printf("正确\n");
        }
        else
            printf("错误\n");

    }
    /**< 输出答对题数和得分 */
    printf("                    答对 %d 题,得分:%d\n",sum,sum*10);
 if(sum>=7)
  printf("            小朋友你真厉害,继续加油哦!(*^▽^*)\r\n");
 else
  printf("            不要泄气哦,继续加油,你一定可以的!(*^▽^*)\r\n");
    return 0;
}

 

4、项目github地址

源仓库的地址为:https://github.com/yixia1/pp_project.git

 

5、实验总结

  通过此次实验我深刻体会到了结对编程的意义,我们在完成代码的同时,学会了如何协商,以及配合。其大大程度上提高了编程效率,但是也同样需要两个人能够积极的处理问题,面对问题,互相学习,来编出更好的代码。此次实验做的还不够完善,代码过于简单,对函数的使用还不是很擅长,希望今后能在更多的团队协作中学习的更多。

 

 

 

 

 

 

 posted on 2020-04-05 23:23  查方慧  阅读(133)  评论(0编辑  收藏  举报