• 结对编程(第二阶段)


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

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

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

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

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

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

    三、实验过程
    1、代码规范

    代码如何写才能写得很规范呢?代码的规范化不是说看完本节内容后就能实现的。它里面细节很多,而且需要不停地写代码练习,不停地领悟,慢慢地才能掌握的一种编程习惯。所以大家不要想着一下子就能把代码规范化的所有知识全部掌握,也不要想着一下子就能把代码写规范,这是不太可能的。有很多知识,比如为什么代码要这样写,为什么不能那样写,作为一个初学者你是很难弄明白的。有很多规范是为了在程序代码量很大的时候,便于自己阅读,也便于别人阅读。所以刚开始的时候有很多规范你不知道为什么要那样规定,你就单纯地模仿就行了。等将来敲代码敲得时间长了,你就会感觉到那样写是很有好处的,同时还要注意代码规范法的七大原则:空行、空格、成对书写、缩进、对齐、代码行、注释。

    2、程序的总体设计

    设计流程图

     

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

    结对编程过程

     

     

     功能实现

     附代码:

    #include<iostream>
    #include<string>
    #include<stdlib.h>
    #include<time.h>
    using namespace std;
    int randnum2(int min,int max) //获得随机数
    {
    int ranum=0;
    ranum=rand();
    while(ranum>max)
    {
    ranum%=max;//保证min<b<max
    if(ranum<min)
    {
    ranum=rand();
    }
    }
    return ranum;
    }
    double answer(int ope,double num1,double num2)
    {
    double ans=0;
    if(ope==0)
    {
    ans=num1+num2;
    }
    if(ope==1)
    {
    ans=num1-num2;
    }
    if(ope==2)
    {
    ans=num1*num2;
    }
    if(ope==3)
    {
    ans=num1/num2;
    }
    return ans;
    }
    double question(int max,int min,int numam)
    {
    int a[100],i=2,j=0,num=0;
    double b[100];
    string str="+-*/";
    num=randnum2(i,numam);
    i=0;
    while(i<=num*3) // 初始化数组
    {
    a[i]=randnum2(min,max);
    b[i]=a[i];
    i++;
    }
    while(j<=num*3)
    {
    a[j]%=4;//运算符
    a[j+1]%=2;//括号
    if(a[j+1]==1)
    {
    a[j+4]=-1;
    }
    j+=3;
    }

    int t=0;
    i=0;
    j=1;
    while(j<=num*3) //输出式子
    {
    if(a[j]==1&&j<num*3-3&&a[j+2]!=2&&a[j+2]!=3)
    cout<<"(";
    cout<<a[j+1];
    if(a[j-3]==1&&j>3&&a[j-1]!=2&&a[j-1]!=3)
    cout<<")";
    if(j<(num*3-3))
    cout<<str[a[j+2]];
    j+=3;
    }

    j=1;
    while(j<=num*3-3) //计算括号
    {
    if(a[j]==1&&j<num*3-3&&a[j+2]!=2&&a[j+2]!=3)
    {
    b[j+1]=answer(a[j+2],b[j+1],b[j+4]);
    a[j+1]=b[j+1];
    for(int i=j+2;i<num*3-3;i++)
    {
    a[i]=a[i+3];
    b[i]=b[i+3];
    }
    num-=1;
    }
    j+=3;
    }
    j=1;
    while(j<=num*3-3) //计算乘除
    {
    if(a[j+2]==2||a[j+2]==3)
    {

    b[j+1]= answer(a[j+2],b[j+1],b[j+4]);
    for(int i=j+2;i<num*3-3;i++)
    {
    a[i]=a[i+3];
    b[i]=b[i+3];
    }
    num-=1;
    j-=3;
    }
    j+=3;
    }
    j=1;
    double ans=0,m=0;
    while(j<=num*3)
    {
    m=b[j+1];
    if(a[j+2]==1)
    {
    ans=ans-m;
    }
    else
    {
    ans=ans+m;
    }
    j+=3;
    }
    return ans;
    }
    double question1(int max,int min,int numam)
    {
    int a[100],i=2,j=0,num=0;
    double b[100];
    string str="+-";
    num=randnum2(i,numam);
    i=0;
    while(i<=num*3) // 初始化数组
    {
    a[i]=randnum2(min,max);
    b[i]=a[i];
    i++;
    }
    while(j<=num*3)
    {
    a[j]%=2;//运算符
    a[j+1]%=2;//括号
    if(a[j+1]==1)
    {
    a[j+4]=-1;
    }
    j+=3;
    }

    int t=0;
    i=0;
    j=1;
    while(j<=num*3) //输出式子
    {
    if(a[j]==1&&j<num*3-3&&a[j+2]!=2&&a[j+2]!=3)
    cout<<"(";
    cout<<a[j+1];
    if(a[j-3]==1&&j>3&&a[j-1]!=2&&a[j-1]!=3)
    cout<<")";
    if(j<(num*3-3))
    cout<<str[a[j+2]];
    j+=3;
    }

    j=1;
    while(j<=num*3-3) //计算括号
    {
    if(a[j]==1&&j<num*3-3&&a[j+2]!=2&&a[j+2]!=3)
    {
    b[j+1]=answer(a[j+2],b[j+1],b[j+4]);
    a[j+1]=b[j+1];
    for(int i=j+2;i<num*3-3;i++)
    {
    a[i]=a[i+3];
    b[i]=b[i+3];
    }
    num-=1;
    }
    j+=3;
    }
    j=1;
    while(j<=num*3-3) //计算乘除
    {
    if(a[j+2]==2||a[j+2]==3)
    {

    b[j+1]= answer(a[j+2],b[j+1],b[j+4]);
    for(int i=j+2;i<num*3-3;i++)
    {
    a[i]=a[i+3];
    b[i]=b[i+3];
    }
    num-=1;
    j-=3;
    }
    j+=3;
    }
    j=1;
    double ans=0,m=0;
    while(j<=num*3)
    {
    m=b[j+1];
    if(a[j+2]==1)
    {
    ans=ans-m;
    }
    else
    {
    ans=ans+m;
    }
    j+=3;
    }
    return ans;
    }
    int main()
    {
    int quam=5,max=9, min=3,numam=5;
    int fly=1;
    //输入生成题目的条件
    cout<<"一共出几道题:";
    cin>>quam;
    cout<<"最多几个数(10个数之间):";
    cin>>numam;
    cout<<"数值范围: 最大值:";
    cin>>max;
    cout<<"最小值:";
    cin>>min;
    cout<<"有无乘除?有请按1,无请按0(默认有乘除) ";
    cin>>fly;
    //结束输入生成题目的条件
    int i=1;
    double ansin;
    while(quam--) //循环一次生成一道题
    {
    cout<<"No."<<i++<<": "; //题目计数器
    if(fly==1)
    double ans=question( max, min,numam);
    else
    double ans=question1( max, min,numam);
    cout<<"=";
    }
    return 0;
    }

    4、项目github地址

    项目地址:https://github.com/xushao1519/my-travel-plans

    项目成员:虞旭,于世林

    博客地址:https://www.cnblogs.com/xuba/         https://www.cnblogs.com/yushilin/
    5、实验总结

    本次实验名为结对编程,结对就是成双成对,需要两个人完成,因为疫情原因,我们组队做实验只能通过视频远程操控,前期问题特别多,因为两个人的个人和其他因素影响,造成两个人进行实验的难度很大,但是通过不断的查阅资料,进行沟通,然后在相互合作,终于慢慢地走上正轨,最后在我们两个的通力合作下成功完成实验,这个实验对我受益匪浅,不仅使我的专业知识有了很大的提升,同时也让我的团队协作能力有了进一步的提升。

  • 相关阅读:
    js使用html2canvas实现页面截图并保存图片
    微信小程序之图片base64解码
    微信小程序之回调函数
    小程序横向滚动
    搭建vue开发环境的步骤
    检测算法简介及其原理——fast R-CNN,faster R-CNN,YOLO,SSD,YOLOv2,YOLOv3
    hadoop常用命令
    工作流调度系统Azkaban的简介和使用
    java微服务简介与实战
    mxnet快速入门教程
  • 原文地址:https://www.cnblogs.com/yushilin/p/12628851.html
Copyright © 2020-2023  润新知