浅谈“如何学习编程——学会用编程软件编程”

第一步

要选择一个编程平台,也就是一个集成开发环境,如:Visual Studio 2015.

问:编程平台主要作用有哪些呢?

答:首先,它可以将你用高级语言编写的程序代码“翻译”成计算机可以直接运行的代码;其次,它可以帮你检查某种编程语言的语法错误;再次,它可以帮你把一个项目复杂的文件系统有条理地组织起来;最后,它用强大的Debug功能,可以帮你找出代码的bug。

第二步

选择一门编程语言,例如:C++,R,Python等。

一般来讲第一步和第二步是在你下载了一个编程平台软件后,按提示一步步安装时混在一起做完,即很多编程平台在安装时会自动让你选择编程语言,之后会让你选择该编程语言必要的一些文件(头文件系统、内部的功能函数模块等等)。

第三步

设置编程环境。

初学者常常会疑惑,到底什么叫编程环境?为什么要去设置这种东西?

答:我们再编写完以后程序后,接着就要实现它。当你点击编译后,报错“找不到XXX文件”,这种错误一般都是编程环境没设置好导致的。编程环境实质上就是设置一连串的文件路径。在编译时,编译器会根据你编写的程序的指示去找对应的文件,把它拷贝过来,翻译到目标程序里。通常你编程程序的时候一般只会提供一个文件名,你默认编译平台能够帮你找到相应的文件。那么编译平台会怎么做呢?首先,他先在当前文件目录找一遍,发现没有。然后就要到你事先设置好的编译环境里去找了,实质上就是一个表,存了一大堆默认路径,然后它按照列表顺序,按个路径找过去,直到发现跟你程序提到的那个文件同名的文件为止。如果把你事先列出来的所有路径都找了一个遍,发现还是没找到,那好,你就会在错误提示栏里看到“找不到XXX文件”的错误。所以为了防止老出现这样的问题,你事先就要把文件可能出现的路径都尽可能列全,或者之后一旦发现“找不到XXX文件”的错误,就把相应路径添加到环境设置中去。

问:Makefile配置文件是干什么用的?

答:我们之前配置环境都是通过点击按钮,添加路径完成环境配置。Makefile文件相当于通过程序脚本的方式实现了你打开一些窗口,添加路径集合,关闭窗口等工作。它的功能较前者更大,它与前面一种环境配置的关系当相于计算机管理员权限和普通用户权限的差别。前者是傻瓜式了,比较好操作,权限小;后者比较难,权限大。

第四步

测试当前编程平台是否可用。环境设置得有没有问题。

最基本的当然是先试试“hello world”可不可以编译通过并执行。

除此之外,为了保险起见,还需找人家编写好的程序,保证在别人电脑上已经编译通过,并且执行正确。新建工程,项目,将代码都相应复制过来。最后这个程序涉及的模块非常多,而不是简单的“hello world”就完事了。例如:这个程序包含各种各样的头文件,而且还还需要调用其他的软件接口,如调用CPLEX或者Gurobi求解一个大规模线性整数规划模型。这个程序需要通过读入外部文件获得模型所需要的数据,并且把运行完的结果写到相应的外部文件里。

如果以上程序编译通过,并正确执行,那么说明你的这个编程平台基本可以投入使用了。

第五步

新建工程——>新建项目——>导入需要的头文件,然后依次编好自己的.h文件.cpp文件以及其他素材文件。点击编译,这是我们默认经过前四步的调试,暂时不会出现“找不到XXX文件”类型的问题。如果出现什么语法错误,那么这些都是低级误差,基本功扎实一点也不会出现什么问题,出现了,也能根据提示错误修改过来。微软官方已经将常见的C++编译错误,链接错误,执行错误都分好类别了,查查官网常见错误数据库,基本都可以找到修改的办法。

第六步

程序编译并执行完毕,发现结果跟预想查太多。这个问题非常复杂,说明你编程的逻辑哪个地方出错了,这种错误非常难找。一般有三个大招。

我们先保证循环之外的赋值运算都没问题,那么真正的问题都会落在循环里。

大招一:如果你计算的“解”在可视化技术下能够很容易看出门道,那么你可以把部分迭代的“解”对应的可视化“图”画出来,看看有没有按你预想的方式演变。例如:集成电路布局、信号处理、图像处理等问题的求解都可以这么去做。

大招二:print大法。将程序运行的关键点的运行情况打印在显示屏上。然后在程序执行的过程中,我们可以看到,程序是在哪个位置中断的,那一步迭代开始,“解”的一些属性值变化有点奇怪,例如:本来目标函数是要下降的,突然发现某一步上升了。

大招三:借助编程平台的debug工具箱进行系统地排查错误。在一些循环体开始处和一些关键点插入断点,然后程序运行到那里终止后,查看内存中相应变量的数据是否合理。如果合理,就按continue,继续重复工作,直到找到错误所在。

完成以上六部,就基本大功告成了!

猜你喜欢

转载自blog.csdn.net/qq_25733951/article/details/88707051