zoukankan      html  css  js  c++  java
  • 实验二 结对编程(阶段二)

    实验目标

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

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

     

    实验内容

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

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

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

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

     

    实验记录

    阶段二:

    一、代码规范

    本次我们用到Python为编程语言,我们总结了应该主要从以下几点特别注意:

    1、Python语句的缩进

    Pyhton语言与Java、C#等编程语言最大的不同点是,Python代码块使用缩进对齐表示代码逻辑,而不是使用大括号。这对习惯用大括号表示代码块的程序员来说,确实是学习Python的一个障碍。

    Python每段代码块缩进的空白数量可以任意,但要确保同段代码块语句必须包含相同的缩进空白数量。 

    2、Python标识符

    标识符用于Python语言的变量、关键字、函数、对象等数据的命名。标识符的命名需要遵循下面的规则。

    ① 可以由字母(大写A—Z或小写a—z)、数字(0—9)和_(下划线)组合而成,但不能由数字开头;

    ② 不能包含除_以外的任何特殊字符,如:%、#、&、逗号、空格等;

    ③ 不能包含空白字符(换行符、空格和制表符称为空白字符);

    ④ 标识符不能是Python语言的关键字和保留字;

    ⑤ 标识符区分大小写,num1和Num2是两个不同的标识符。

    ⑥ 标识符的命名要有意义,做到见名知意。

    3、Python关键字

    Python预先定义了一部分有特别意义的标识符,用于语言自身使用。这部分标识符称为关键字或保留字,不能用于其它用途,否则会引起语法错误,随着Python语言的发展,其预留的关键字也会有所变化。

    4、Python变量

    用标识符命名的存储单元的地址称为变量,变量是用来存储数据的,通过标识符可以获取变量的值,也可以对变量进行赋值。对变量赋值的意思是将值赋给变量,赋值完成后,变量所指向的存储单元存储了被赋的值,在Pyhton语言中赋值操作符为“=、+=、-=、*=、/=、%=、**=、//=”。

    5、注释

    Python编程语言的单行注释常以#开头,单行注释可以作为单独的一行放在被注释代码行之上,也可以放在语句或者表达式之后。在使用pychar过程中,我们发现注释是#之后要加一个空格,而且不能与制表符混用。

           总结以上,我么得知Python的语法有二点需要注意:(1)Python同一代码块的缩进要对齐,不然就会出现语法错误;(2)Python在字符串表示上和其它语言有所不同,Python的字符串可以用单引号(’)、双引号(”)、三引号(’’’)表示。

    以上主要参考:https://baijiahao.baidu.com/s?id=1610480755579501812&wfr=spider&for=pc

    二、程序的总体设计

     1. 组成

     2. 各模块说明

    (1)初始化地图:

       init_map(rows, cols):创建二维列表,使用随机函数赋值,0代表死细胞,1代表活细胞:用户可自由输入地图的长与宽,返回二维数组。

    (2)合法性检测:

       check_int(date):检测输入的数据是否为正整数,是返回整型的数据,不是返回0。

    (3)合法性检测:

       check_int(date):检测输入的数据是否为正整数,是返回整型的数据,不是返回0。

      (4)演化下一个地图:

       cell_laws(mov_map):根据以下生命法则

    • 每个细胞的状态由该细胞及周围 8 个细胞上一次的状态所决定;
    • 如果一个细胞周围有 3 个细胞为生,则该细胞为生,即该细胞若原先为死则转为生,若原先为生则保持不变;
    • 如果一个细胞周围有 2 个细胞为生,则该细胞的生死状态保持不变;

           对已有的地图进行检测,推断出每个位置细胞的下一状态,并存到一个新的二维列表里返回,用一个整型变量记录该位置周围活细胞数量,在判断细胞周围细胞状态时,采用对二维列 表的遍历操作,python对数组的下标往下溢出时会自动处理,就是在对最左边细胞的左侧细胞判断时,默认判断的是最右边的细胞状态,那么我们只需要处理上限溢出,在判断时加一个对列表长度的取模运算即可,这样就解决了边缘细胞的问题,再将细胞状态一一赋给新的二维列表并返回。

    (5)打印地图:

           为了使结果更美观的展示,我们去查阅了python的一些动画库,最后选择了pygame,将列表的值通过不同颜色打印出来,加上延时控制,打印出一幅幅画面,产生动画的效果。

    三、交互过程

           我们使用QQ远程桌面来实现两个人控制一台电脑以及QQ语音通话进行交流。在实验中我们实现了一个人控制电脑另一个人进行协助,然后角色互换。在这里特别注意到了协助的队员要更加仔细检查代码的规范性。

    详细代码

         

    最后改进,在103行以后添加

    五、实验结果

     

    实验小结

    • 由于是进行远距离的线上结对编程实验,我们双方的时间有时候并不能完全吻合,必须提前确定下一次共同进行实验的时间,这样才不会在时间上有冲突。
    • 进行线上编程,我们使用的是QQ远程控制桌面以及QQ语音电话进行交流与合作,有时会因为信号问题导致交流中断。
    • 优化前我们的代码很简单,后来使查阅了python的一些动画库,最后选择了pygame,将列表的值通过不同颜色打印出来,加上延时控制,打印出一幅幅画面,产生动画的效果。
    • 优化前我们运行窗口不能关闭,必须强制停止,后来百度上搜索了相似的问题,在程序末尾添加了以下部分,得到了解决。

    • 此次结对编程实验花费的时间比较长,从前期组队开始到最后完成代码并且有一个结果,是队员共同努力的结果,我感受到了结对编程最重要的就是两个人之间积极合作,分工明确,有效沟通都是必不可少的方面。而代码部分就是之前的学习成果的一个小小的检查,虽然在编写前已经做了关于代码规范性方面的问题,但是编写程序的时候还是触及到了代码不规范,这就是平时写代码的次数不够的原因,以后还要多多练习。
  • 相关阅读:
    Java配置jdk图文教程
    线程池介绍与应用
    继承机制的探讨
    1.深入分析_NIO性能分析
    1.类的加载机制_继承类的加载(一个小的Demo)说明
    githup创建新java项目
    UE常用快捷键使用
    堡垒机上传文件
    16.linux常用查看命令
    15.vi/vim编辑器下常用光标移动
  • 原文地址:https://www.cnblogs.com/999xxx/p/12612122.html
Copyright © 2011-2022 走看看