计算与软件工程 第3次作业

作业要求 https://edu.cnblogs.com/campus/jssf/infor_computation17-31/homework/10454
我的课程目标 学会一些软件的运用,对自己的代码进行储存,在有效代码基础上做出符合作业要求的改动,加以自己的理解。
此作业在那些具体方面实现 代码的运行查错
其他参考文献
作业正文

正文

代码实现

数组中最大子数组的和。
用类/函数来实现
需求:希望返回 3 种信息
最大子数组的和
最大子数组开始的下标
最大子数组结束的下标
运行结果

#include<iostream>
#include<cstdlib>
using namespace std;
int main()
{ 
  int n,star=0,end=0;
  //实现整型数组的输入
  cout<<"输入整型数组的长度";
  cin>>n;
  int *p=new int[n];
  cout<<"输入一个整型数组";
  for(int i=0;i<n;i++)
  { 
      cin>>p[i];
  }
  int sum=p[0];
  int max_sum=p[0];
  for(int i=1;i<n;i++)
  {   
      if(sum>0)    //从第二个数开始判断是否为正数
      { 
          sum=sum+p[i];  //是正数,将和值(初始值为p【0】)和第i+1个数做和。
         if(sum>max_sum) // 并判断是否为最大,是让其赋值给max_sum,并将子数组末位置改变。
           { 
               max_sum=sum;
               end=i;
           }
      }
      else 
      { 
          sum=p[i];  //是负数,将第i+1个数的值赋值给和值sum
             if(sum>max_sum)//并判断是否为最大,是让其赋值给max_sum,并将子数组初、末位置改变。
             {    
                max_sum=sum;
                star=i;
                end=i;
             }
      }
  }
  cout<<"最大子数组位置为第"<<star+1<<"个到第"<<end+1<<"个"<<endl;
  cout<<"sum="<<max_sum<<endl;
  system("pause");
  return 0;
}

单元测试

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

#include "stdafx.h"

using namespace System;
using namespace System::Text;
using namespace System::Collections::Generic;
using namespace Microsoft::VisualStudio::TestTools::UnitTesting;

namespace TestProject2
{
	[TestClass]
	public ref class UnitTest1
	{
	private:
		TestContext^ testContextInstance;

	public: 
		/// <summary>
		///获取或设置测试上下文,该上下文提供
		///有关当前测试运行及其功能的信息。
		///</summary>
		property Microsoft::VisualStudio::TestTools::UnitTesting::TestContext^ TestContext
		{
			Microsoft::VisualStudio::TestTools::UnitTesting::TestContext^ get()
			{
				return testContextInstance;
			}
			System::Void set(Microsoft::VisualStudio::TestTools::UnitTesting::TestContext^ value)
			{
				testContextInstance = value;
			}
		};

		#pragma region Additional test attributes
		//
		//编写测试时,可以使用以下附加特性:
		//
		//在运行类中的第一个测试之前,使用 ClassInitialize 来运行代码
		//[ClassInitialize()]
		//static void MyClassInitialize(TestContext^ testContext) {};
		//
		//在类中的所有测试都已运行之后,使用 ClassCleanup 来运行代码
		//[ClassCleanup()]
		//static void MyClassCleanup() {};
		//
		//在运行每个测试之前,使用 TestInitialize 来运行代码
		//[TestInitialize()]
		//void MyTestInitialize() {};
		//
		//在每个测试运行完之后,使用 TestCleanup 来运行代码
		//[TestCleanup()]
		//void MyTestCleanup() {};
		//
		#pragma endregion 

		[TestMethod]
		void TestMethod1()
		{
			//
			// TODO: 在此处添加测试逻辑
			//
		};
	};
}

代码push

码云链接:https://gitee.com/semana/warehouse

博客作业

回顾前两年的学习,从大一的C++入手,开始编写一些简单的程序,到期末的课程设计,有自己单独完成的,也有几人和合作完成的,代码的编写能力还相对较弱,大部分会搜索资料,进行修改。大二开始涉及Matlab,Java等一些新的编程软件,了解了各个编程软件的利弊,学会运用计算机语言解决数学问题。大三又新接触了数据库和操作系统一些比较深入的编程知识,在使用过程中可以发现vs的使用频率较高,可以设计各种方面的编程,功能也较多,matlab对于画函数图比较方便,function定义一个函数输入功能即可实现,到现在大三下学期接触了博客的使用,学习了markdown的使用,在网页中也可以类似word改变字体大小格式等。希望在接下去的学习中,跟着老师一起学习编程语言,能更加熟练的掌握编程技巧,在学习中能够运用上代码编程解决数学问题和实际问题。后续对电脑的运用还要加强,在以后的社会,计算机是主流,熟练掌握计算机的运用,不论是考研还是工作都是很有帮助的。

预习

代码风格的原则是:简明,易读,无二义性。代码设计要规范。

代码的复审:

结对编程是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。一个人输入代码,而另一个人审查他输入的每一行代码。在结对编程中,观察员同时考虑工作的战略性方向,提出改进的意见,或将来可能出现的问题以便处理。这样使得驾驶者可以集中全部注意力在完成当前任务的“战术”方面。观察员当作安全网和指南。结对编程对开发程序有很多好处。比如增加纪律性,写出更好的代码等。

posted @ 2020-03-08 12:57  Semana  阅读(130)  评论(4编辑  收藏  举报