• 实验二 结对编程 阶段二


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

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

    二 、实验内容

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

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

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

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

          实验分析:

          问题:开发一个自动生成小学四则运算题目的命令行 “软件”。实现 输入你要出题的个数,随机产生四则运算,然后用户回答,并且进行判断正误打分。

          规则:用随机数实现100以内的加、减、乘、除运算,其中和与积不能超过100,差不为负(即须大减小),商不为小数或分数(即必须整除)。

          要求:总计输出10个运算式,每输出一个运算式,等待输入结果,然后进行对错判断并输出。最后输出统计答对的题数与分。

         

    实验内容应该包括:

         1、代码规范
         2、程序的总体设计(附图说明模块之间的关系)
         3、程序结对编程过程(附图)及功能实现情况(附代码和图)
         4、项目github地址(附图)
         5、实验总结

    三、实验过程

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

    1) 空行:空行起着分隔程序段落的作用。空行得体将使程序的布局更加清晰。空行不会浪费内存,虽然打印含有空行的程序会多消耗一些纸张,但是值得。

    规则一:定义变量后要空行。尽可能在定义变量的同时初始化该变量,即遵循就近原则。如果变量的引用和定义相隔比较远,那么变量的初始化就很容易被忘记。若引用了未被初始化的变量,就会导致程序出错。

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

    总规则:两个相对独立的程序块、变量说明之后必须要加空行。比如上面几行代码完成的是一个功能,下面几行代码完成的是另一个功能,那么它们中间就要加空行。这样看起来更清晰。

    2) 空格

    规则一:关键字之后要留空格。像 const、case 等关键字之后至少要留一个空格,否则无法辨析关键字。像 if、for、while 等关键字之后应留一个空格再跟左括号(,以突出关键字。

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

    规则三:(向后紧跟;),;这三个向前紧跟;紧跟处不留空格。

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

    规则五:赋值运算符、关系运算符、算术运算符、逻辑运算符、位运算符,如 =、==、!=、+=、-=、*=、/=、%=、>>=、<<=、&=、^=、|=、>、<=、>、>=、+、-、*、/、%、&、|、&&、||、<<、>>、^ 等双目运算符的前后应当加空格。

    注意,运算符“%”是求余运算符,与 printf 中 %d 的“%”不同,所以 %d 中的“%”前后不用加空格。

    规则六:单目运算符 !、~、++、--、-、*、& 等前后不加空格。

    规则七:像数组符号[]、结构体成员运算符.、指向结构体成员运算符->,这类操作符前后不加空格。

    规则八:对于表达式比较长的 for 语句和 if 语句,为了紧凑起见,可以适当地去掉一些空格。但 for 和 if 后面紧跟的空格不可以删,其后面的语句可以根据语句的长度适当地去掉一些空格。

    3) 成对书写:成对的符号一定要成对书写,如 ()、{}。不要写完左括号然后写内容最后再补右括号,这样很容易漏掉右括号,尤其是写嵌套程序的时候。

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

    5) 对齐:对齐主要是针对大括号{}说的:

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

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

    6) 代码行

    规则一:一行代码只做一件事情,如只定义一个变量,或只写一条语句。这样的代码容易阅读,并且便于写注释。

    规则二:if、else、for、while、do 等语句自占一行,执行语句不得紧跟其后。此外,非常重要的一点是,不论执行语句有多少行,就算只有一行也要加{},并且遵循对齐的原则,这样可以防止书写失误。

    7) 注释:C语言中一行注释一般采用//…,多行注释必须采用/*…*/。注释通常用于重要的代码行或段落提示。在一般情况下,源程序有效注释量必须在 20% 以上。虽然注释有助于理解代码,但注意不可过多地使用注释。

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

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


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

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

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

    2、程序的总体设计

          问题:开发一个自动生成小学四则运算题目的命令行 “软件”。实现 输入你要出题的个数,随机产生四则运算,之后用户回答,并且进行判断正误打分。

          规则:用随机数实现100以内的加、减、乘、除运算,其中和与积不能超过100,差不为负(即须大减小),商不为小数或分数(即必须整除)。

          要求:总计输出10个运算式,每输出一个运算式,等待输入结果,然后进行对错判断并输出。最后输出统计答对的题数与分。

          本次实验使用C语言操作,先进行了变量的定义,包括操作数、运算符等,之后循环输出运算式。

          用户根据屏幕显示的运算式进行计算并输入结果,程序判断对错。10道题目完成后,统计结果。

          程序流程图:

                          

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

         (1)结对编程的过程

           我们先进行了讨论,决定放弃Java以c语言作为为编程工具,最后一起研究了实验的需求,讨论了代码各模块的具体运行

           最后采用在线讨论和远程控制,一起完成实现了程序的编写。

                   

          (2)功能实现

            实验截图

            

    附源代码:

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

          int main()
          {
          int a,b,m,n; //a,b为操作数,m为运算结果,n为用户输入结果
          char c; //c为四则运算操作
          int i,sum=0; //i为题目数量,sum为正确数目
          srand(time(0)); //初始化随机数发生器

          //**主界面显示
          printf(" 亓帅 & 王旭 ");
          printf(" ********************欢迎使用小学四则运算******************** ");

          //**生成随机题目
          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((m=a+b)>100)
          {
          a=rand()%100+1;
          b=rand()%100+1;
          }
          printf("%d + %d = ",a,b);
          break;
          case 1: //约束差
          while(a>100||b>100)
         {
          a=rand()%100+1;
          b=rand()%100+1;
          }
          if(a<b)
          {
          m=a;
          a=b;
          b=m;
           }
          m=a-b;
          printf("%d - %d = ",a,b);
          break;
          case 2: //约束积
          while((m=a*b)>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))
          {
          a=rand()%100+1;
          b=rand()%100+1;
          }
          if(a<b)
          {
          m=a;
          a=b;
          b=m;
          }
          a=(a/b)*b;
          m=a/b;
          printf("%d ÷ %d = ",a,b);
          break;
          }

          //**用户输入计算结果
          scanf("%d",&n);
          if(m==n)
          {
          sum++;
          printf(" 正确 ");
          }
          else
          printf(" 错误 ");
          }

          //**结果统计
          printf(" 答对 %d 题,得分:%d",sum,sum*10);
          if(sum == 10)
          printf(" 恭喜你取得满分!!! GREAT ");
          else if(sum>=60 & sum<100)
          printf(" 成绩不错,继续保持!");
          else
          printf(" 再接再厉,给自己加加油吧!");
          printf(" ");
          return 0;
          }

          4、项目github地址

          源仓库的地址为:https://github.com/3170701304wx/sizeyunsuan

         项目成员:王旭,亓帅;

          仓库截图:

          

    实验小结:

    通过本次实验,我对编程方式有了新的发现。不再是一个人去完成整个任务的实现,而是两人共同协作,共同努力完成任务。结对编程的好处就在于身边有个领航员角色的存在,在编写代码时,一旦出现输入错误,就会有人及时的提醒。并且,在设计代码时,有个同伴可以一起讨论,融合两个人不同的见解和观点,我们往往可以得出更加准确且更加高效的设计思路。这一切都为我们在完成代码的过程省去了大量的时间和精力。同时,通过这次实验,复习了c语言的知识,同时也了解了github的一些基本操作,受益匪浅。通过协作完成实验,也使我的团队协作能力有了进一步的提升。

  • 相关阅读:
    每周总结8.18
    每周总结7.28
    每周总结8.25
    每周总结7.21
    每周总结8.11
    每周总结8.4
    大道至简 读后感
    递归进行回文的判断
    课后作业1
    GoodBlogs Websites
  • 原文地址:https://www.cnblogs.com/wxqaq/p/12643345.html
Copyright © 2020-2023  润新知