首页 > 编程语言 >实验二 结对编程

实验二 结对编程

时间:2022-11-13 12:33:19浏览次数:31  
标签:语句 结对 重要 函数 是否 代码 编程 实验 参数

2.1实验过程

2.1.1实验代码

(1)博客园地址:

(2)github源代码:https://github.com/Caroliu96/Four-Arithmetic-Operation-.git

(3)博客园截图

2.1.2实验过程

(1) 本人角色:领航员

(2) 

驾驶员:系统的实现过程、算法设计、结对工作照片

1.系统的实现过程

本实验要求完成小学四则运算自动生成程序,随机数的获取和答案的输出较为交单,重点主要聚焦于运算方式的选择种类。因此,主要采取分治法将大问题分步处理,寄将运算方式分类处理,分为简单运算和混合运算两类,其中简单运算又分为整数和小数,混合运算在此基础上又分为有括号和无括号,进而把运算方式分解为具体的几个小问题来处理。

2.算法设计

(1)封装随机取数的函数

(2)封装输出答案的函数

(3)封装不同取数类型对应的不同运算方式的函数(小数+整数)

在对运算方式的分类过程中,我们按照如上这些小步骤分布封装小函数来实现功能,将这些算法写成了独立函数,通过主函数调用,这样就大大精简了主函数的操作,提高了代码可读性。

领航员:代码测试覆盖标准、测试用例、代码检查表、工作记录表等。

  1. 代码测试覆盖标准

使用语句覆盖标准,测试用例如下:

① 10 1 100 1 1 1 1

 

 

 

② 10 2 100 2 2 2 2

 

 

 

③ 10 3 100 1 1 1 1

④ 10 4 100 1 1 1 1

⑤ 10 5 100 1 1 1 1

 

 

 

  1. 工作记录

表1.1工作记录表

项目

预计

实际

设计时间

1h

1h

编码时间

2h

3h

测试时间

2h

3h

代码行数

300

300

测试代码行数

290

290

错误数量

1

1

错误修复时间

2022/11/12

2022/11/12

开发总时间

5h

8h

  1. 代码检查表

程序的版式

重要性      

审查项

结论

 

空行是否得体?

Y 

 

代码行内的空格是否得体?

Y 

 

长行拆分是否得体?

Y 

 

“{” 和 “}” 是否各占一行并且对齐于同一列?

Y 

重要

一行代码是否只做一件事?如只定义一个变量,只写一条语句。

Y 

重要

If、for、while、do等语句自占一行,不论执行语句多少都要加 “{}”。

Y 

重要

在定义变量(或参数)时,是否将修饰符 * 和 & 紧靠变量名?注释是否清晰并且必要?

Y 

重要

注释是否有错误或者可能导致误解?

N 

重要

类结构的public, protected, private顺序是否在所有的程序中保持一致?

N 

 

 

 

命名规则 

重要性      

审查项

结论

重要

命名规则是否与所采用的操作系统或开发工具的风格保持一致?

Y 

 

标识符是否直观且可以拼读?

N 

 

标识符的长度应当符合“min-length && max-information”原则?

N 

重要

程序中是否出现相同的局部变量和全部变量?

Y 

 

类名、函数名、变量和参数、常量的书写格式是否遵循一定的规则?

N 

 

静态变量、全局变量、类的成员变量是否加前缀?

N 

 

 

 

表达式与基本语句 

重要性      

审查项

结论

重要

如果代码行中的运算符比较多,是否已经用括号清楚地确定表达式的操作顺序?

Y 

 

是否编写太复杂或者多用途的复合表达式?

N 

重要

是否将复合表达式与“真正的数学表达式”混淆?

N 

重要

是否用隐含错误的方式写if语句? 例如

 

 

(1)将布尔变量直接与TRUE、FALSE或者1、0进行比较。

N 

 

(2)将浮点变量用“==”或“!=”与任何数字比较。

N 

 

(3)将指针变量用“==”或“!=”与NULL比较。

N 

 

如果循环体内存在逻辑判断,并且循环次数很大,是否已经将逻辑判

 

 

断移到循环体的外面?

Y 

重要

Case语句的结尾是否忘了加break?

N 

重要

是否忘记写switch的default分支?

N 

重要

使用goto 语句时是否留下隐患? 例如跳过了某些对象的构造、变量的初始化、重要的计算等。

N 

 

 

 

常量 

重要性      

审查项

结论

 

是否使用含义直观的常量来表示那些将在程序中多次出现的数字或字符串?

N 

 

在C++ 程序中,是否用const常量取代宏常量?

N 

重要

如果某一常量与其它常量密切相关,是否在定义中包含了这种关系?

N 

 

是否误解了类中的const数据成员?因为const数据成员只在某个对象

N 

 

生存期内是常量,而对于整个类而言却是可变的。

N 

 

 

 

函数设计 

重要性      

审查项

结论

 

参数的书写是否完整?不要贪图省事只写参数的类型而省略参数名字。

Y 

 

参数命名、顺序是否合理?

Y 

 

参数的个数是否太多?

N 

 

是否使用类型和数目不确定的参数?

Y 

 

是否省略了函数返回值的类型?

N 

 

函数名字与返回值类型在语义上是否冲突?

N 

重要

是否将正常值和错误标志混在一起返回?正常值应当用输出参数获得,而错误标志用return语句返回。

N 

重要

在函数体的“入口处”,是否用assert对参数的有效性进行检查?

N 

重要

使用滥用了assert? 例如混淆非法情况与错误情况,后者是必然存在的并且是一定要作出处理的。

N 

重要

return语句是否返回指向“栈内存”的“指针”或者“引用”?

N 

 

是否使用const提高函数的健壮性?const可以强制保护函数的参数、返回值,甚至函数的定义体。“Use const whenever you need”

N 

 


3 总结与体会

此次作业我担任的是领航员的角色。这次作业让我更加深刻地认识到,“驾驶员”是在“行驶”过程中必不可少的,但一个人精力有限。所以“领航员”也是十分重要的,他可以协助“驾驶员”找到更好的路径,及时改正错误的路线,高效率的到达“目的地”。

 我们在确定选择的题目后,就确定思路,包括可能需要哪些功能函数,整体的结构等。

项目难点主要如下:随机数的生成,随即符号的穿插,括号匹配的检测、随机算式答案的计算以及界面的生成。随机数的生成采用当前时间对(数值最大-数值最小)取余再加最小数值;在随机符号穿插方面我们同样采取与随机数相似的办法,即将符号存入数组中,而随机插入的符号以数组下标来决定;对于括号匹配检测,采取逆波兰式进行括号匹配检测;对于答案的计算则是通过直接读取文件里的字符串转化成数值再进行计算;

完成后程序依然有些许不足:1. 没能用图形界面显示出来。2. 程序的部分功能可以更加完善,考虑的问题的方面不全面。

 我们两人配合默契,在作业的完成的过程比较愉快。在过程中,我们两个可以互相学习,巩固我的编程知识。除此之外,此次编程作业也让我对问题思考得更加全面,要对各种可能性进行考虑,不断的完善代码。 

  这次任务有收获也有教训,专注才能高效率高质量的完成一件事,三心二意只会得不偿失。

标签:语句,结对,重要,函数,是否,代码,编程,实验,参数
From: https://www.cnblogs.com/Buoyant-1011/p/16885756.html

相关文章

  • 多线程编程学习笔记文章目录
     多线程编程学习笔记-基础(一)多线程编程学习笔记-基础(二)多线程编程学习笔记-基础(三) 多线程编程学习笔记——线程同步(一)多线程编程学习笔记——线程同步(二) 多线......
  • 实验三:朴素贝叶斯算法实验
    【实验目的】理解朴素贝叶斯算法原理,掌握朴素贝叶斯算法框架。【实验内容】针对下表中的数据,编写python程序实现朴素贝叶斯算法(不使用sklearn包),对输入数据进行预测;熟悉s......
  • 学习ASP.NET Core Razor 编程系列文章目录
    学习ASP.NETCoreRazor编程系列一学习ASP.NETCoreRazor编程系列二——添加一个实体 学习ASP.NETCoreRazor编程系列三——创建数据表及创建项目基本页面学习ASP......
  • 学习ASP.NET MVC 编程系列文章目录
    学习ASP.NETMVC(一)——我的第一个ASP.NETMVC应用程序学习ASP.NETMVC(二)——我的第一个ASP.NETMVC控制器学习ASP.NETMVC(三)——我的第一个ASP.NETMVC视图学习......
  • 学习ASP.NET Core Blazor编程系列文章之目录
    学习ASP.NETCoreBlazor编程系列一——综述学习ASP.NETCoreBlazor编程系列二——第一个Blazor应用程序(上)学习ASP.NETCoreBlazor编程系列二——第一个Blazor应......
  • 学习ASP.NET Core Blazor编程系列十——路由(中)
     学习ASP.NETCoreBlazor编程系列一——综述学习ASP.NETCoreBlazor编程系列二——第一个Blazor应用程序(上)学习ASP.NETCoreBlazor编程系列二——第一个Blazor......
  • 实验三:朴素贝叶斯算法实验
    1.导包importpandasaspdimportnumpyasnp2.classNaiveBayes:def__init__(self):self.model={}#key为类别名val为字典PClass表示该类的该类,PFe......
  • 实验二 电梯问题
    代码地址:Test/电梯问题.cppatmain·AILYNNX/Test(github.com)实验截图:运行截图: ......
  • 从头开始进行CUDA编程:线程间协作的常见技术
    在前一篇文章中,我们介绍了如何使用GPU运行的并行算法。这些并行任务是那些完全相互独立的任务,这点与我们一般认识的编程方式有很大的不同,虽然我们可以从并行中受益,但是这......
  • 实验三:朴素贝叶斯算法实验
    ##【实验目的】理解朴素贝叶斯算法原理,掌握朴素贝叶斯算法框架。 ##【实验内容】针对下表中的数据,编写python程序实现朴素贝叶斯算法(不使用sklearn包),对输入数据进行预......