zoukankan      html  css  js  c++  java
  • 计算与软件工程 作业三

    这个作业要求在哪里 https://edu.cnblogs.com/campus/jssf/infor_computation17-31/homework/10454
    我在这个课程的目标是 提高编程能力,掌握单元测试
    此作业在那个具体方面帮我实现目标 要求参考《构建之法》设计单元测试,运行单元测试
    其他参考文献 https://blog.csdn.net/WKalpa/article/details/88883314
    https://www.cnblogs.com/njzy123456/p/9755642.html
    https://www.jianshu.com/p/388b02c126fd
    作业正文 https://www.cnblogs.com/tang-yuan-yuan/p/12433514.html

    单元测试

    数组中最大子数组的和。
    •用类/函数来实现
    需求:希望返回 3 种信息
    最大子数组的和
    最大子数组开始的下标
    最大子数组结束的下标
    从文本文件中读输入的数据,熟悉文件操作, 文件有两种数据
    第一个数字:这次测试中有多少个数据, 数字后面是冒号。
    后续数字: 每个数据的值,用逗号隔开
    比如
    文件内容:
    17: -32, -10, 33, -23, 32, -12, 41, -12, 1, 3, 5, -98, 70, -21, 10, -9, 61
    输出
    sum = 71
    程序运行截图

    设计单元测试,运行单元测试
    •开始:所有单元测试都失败
    •改进程序,加入正确的逻辑,看到有单元测试通过,并且看到代码覆盖率的增加
    •重复, 直到所有单元测试都通过,代码覆盖率达到满意的结果。




    单元测试的代码没有编译成功,查了很多资料还是没有解决
    码云链接:https://gitee.com/tang_yuan-yuan/git-tang/tree/master/作业二

    博客作业

    过去两年半我们学习许多门课,大一开始学习计算机应用软件(MS Office)(后来考了二级证书)和C++语言编程。大二学习了Java语言,会做一些简单的图形界面,还学习了数据结构课程,了解了计算机数据的基本知识。大三学习了数据库,操作系统,ASP,MATLAB科学计算等课程会做出简单的页面,但深觉我们学的都是皮毛,经验仍很浅薄。
    今后学习中还是希望能熟练掌握C++及Java。

    预习

    代码规范和代码复审

    1.我们讲的“代码规范”可以分成两个部分。

    (1)代码风格规范。主要是文字上的规定,看似表面文章,实际上非常重要。

    (2)代码设计规范。牵涉到程序设计、模块之间的关系、设计模式等方方面面,这里有不少与具体程序设计语言息息相关的内容(如C/C++/Java/C#),但是也有通用的原则,这里主要讨论通用的原则。
    2.复审的目的在于:

    (1)找出代码的错误。如:

    a. 编码错误,比如一些能碰巧骗过编译器的错误。

    b. 不符合项目组的代码规范的地方。

    (2)发现逻辑错误,程序可以编译通过,但是代码的逻辑是错的。

    (3)发现算法错误,比如使用的算法不够优化。

    (4)发现潜在的错误和回归性错误——当前的修改导致以前修复的缺陷又重新出现。

    (5)发现可能改进的地方。

    (6)教育(互相教育)开发人员,传授经验,让更多的成员熟悉项目各部分的代码,同时熟悉和应用领域相关的实际知识。

    结对编程

    1.结对编程中有两个角色:

    (a)驾驶员(Driver)是控制键盘输入的人。

    (b)领航员(Navigator)起到领航、提醒的作用。
    2.结对编程有如下的好处:

    (1)在开发层次,结对编程能提供更好的设计质量和代码质量,两人合作能有更强的解决问题的能力。

    (2)对开发人员自身来说,结对工作能带来更多的信心,高质量的产出能带来更高的满足感。

    (3)在心理上, 当有另一个人在你身边和你紧密配合, 做同样一件事情的时候, 你不好意思开小差, 也不好意思糊弄。

    (4)在企业管理层次上,结对能更有效地交流,相互学习和传递经验,能更好地处理人员流动。因为一个人的知识已经被其他人共享。
    3.如何结对编程?

    (1)驾驶员:写设计文档,进行编码和单元测试等XP开发流程。

    (2)领航员:审阅驾驶员的文档、驾驶员对编码等开发流程的执行;考虑单元测试的覆盖程度;是否需要和如何重构;帮助驾驶员解决具体的技术问题。

    (3)驾驶员和领航员不断轮换角色,不宜连续工作超过一小时。领航员要控制时间。

    (4)主动参与。任何一个任务都首先是两个人的责任,也是所有人的责任。没有“我的代码”、“你的代码”或“她的代码”,只有“我们的代码”。

    (5)只有水平上的差距,没有级别上的差异。尽管可能大家的级别资历不同,但不管在分析、设计或编码上,双方都拥有平等的决策权利。
    不适合结对编程的情况——

    代码

    maxsubarray.cpp
    #include <iostream>
    #include <cstdio>
    using namespace std;
    //枚举法,分别计算子数组和,比较大小
    int maxsum(int a[], int n, int &start, int &end)
    {
    	int max = 0;
    	start = 0;
    	end = 0;
    	for (int i = 0; i < n; i++) {
    		for (int j = i; j < n; j++) {
    			// [i,j]数组
    			int sum = 0;
    			for (int t = i; t <= j; t++) {
    				sum += a[t];
    			}
    			if (sum > max) {
    				max = sum;
    				start = i;
    				end = j;
    			}
    		}
    	}
    	return max;
    
    }
    int main()
    {
    	int max = 0;
    	int start = 0;
    	int end = 0;
    	int n, i = 0;
    	cout << "请输入数组个数:";
    	cin >> n;
    	cout << "请输入数组:";
    	int a[100000] = { 0 };
    	for (i = 0; i < n; i++)
    	{
    		cin >> a[i];
    	}
    	max = maxsum(a, n, start, end);
    	cout << "最大子数组的和为:" << max << endl;
    	cout << "起始下标为:" << start << endl;
    	cout << "结束下标为:" << end << endl;
    	system("pause");
    }
    
    UnitTest1.cpp
    #include "pch.h"
    #include "CppUnitTest.h"
    #include "F:/大学/VS2017程序/maxsubarray/maxsubarray/maxsubarray.h"
    
    using namespace Microsoft::VisualStudio::CppUnitTestFramework;
    
    namespace UnitTest1
    {
    	TEST_CLASS(UnitTest1)
    	{
    	public:
    
    
    		TEST_METHOD(TestMethod1)
    		{
    			int a[] = { -1,2,-1,4 };
    			int start = 0;
    			int end = 0;
    			Assert::AreEqual(5,1,3, maxsum(a, 17, start, end));
    		}
    	};
    }
    
  • 相关阅读:
    centos yum 安装php7.2
    Linux CentOS完全卸载PHP
    Linux: cp 复制文件、文件夹到文件夹
    CentOS 7 yum安装LAMP,LNMP并搭建WordPress个人博客网站
    cin循环输入控制问题
    有序数组中的二分查找
    二叉查找树中元素的删除操作
    如何生成能在没有安装opencv库及vs2010环境的电脑上运行的exe文件
    冒泡排序算法,选择排序算法,插入排序算法
    使用迭代法穷举1到N位最大的数
  • 原文地址:https://www.cnblogs.com/tang-yuan-yuan/p/12433514.html
Copyright © 2011-2022 走看看