Kdevelop
例1 单文件面向过程C++编程
有观点认为,非跨平台病毒在操作系统混合部署的环境中,其扩散速度比较低。这里要编写一个程序来模拟计算机病毒的扩散过程,直观地验证这个观点。这里将使用C++语言。为简单起见,仍然使用面向过程的编程方法,程序文件也只有一个。学习本例时,应着重理解用KDevelop编程的基本步骤。
问题陈述
假设有一个封闭的环境,其中有计算机N 台。这N
台计算机都可以选择安装A或B种操作系统。有一种非跨平台病毒病毒,能感染运行安装A操作系统的计算机。当染毒计算机与未染毒计算机交换时,此病毒将以概率pA
扩散。同理,设有另一种非跨平台病毒病毒,能感染运行安装B操作系统的计算机,扩散概率为pB
。把操作系统单一部署2条件下的病毒扩散情况与两种操作系统按比例r:1
混合部署时的{2即所有计算机都安装同一种操作系统}扩散情况进行比较。初始条件:设N=70, pA = pB =p=0.3,
rO{0,1,2,3} ,r=0
对应单一部署,其他对应混合部署;单一部署时,有两台计算机已经感染了病毒;混合部署时,每种操作系统的计算机各有一台计算机已经感染了病毒。输出:用数值和图形来表示感染病毒的计算机总数和增量的变换情况。终止条件:当所有计算机都感染病毒时,停止模拟。
设计
首先,定义一个TComputer类型的数组,每个元素代表一台计算机。TComputer是用户自定义类型,其中记录计算机上的操作系统类型、以及是否感染了病毒等信息。应根据初始条件,对这个数组进行初始化。
其次,定义一个模拟计算机交互的函数ComputerContact(),用以模拟任意两台计算机的交互。当这两台计算机的操作系统一样,并且其中一台已经感染了病毒时,另一台计算机将以概率p感染病毒。为了方便,可以产生一个0
到9 范围内的随机数,当此随机数小于p*10时,就认为病毒扩散了。
第三,可以产生两个小于N 的互不相等的随机数,来确定一次交互中的两台计算机。
编写程序文件
通过菜单操作【Project】→【New
Project】启动新建工程向导程序,选择工程类型,并指定工程名称及其保存位置,如图所示。接下来一路点击Next即可完成工程的创建工作。

向导程序会自动生成一个含有主函数的文件。以此文件是一个模板,在它的基础上修改并添加代码,即可编写需要的程序。本例的源程序见linuxv-viruspread-0.0.1.tar.gz中的/src/viruspread.cpp。
编译
程序写好后,应该把文件保存起来,然后按照前面提到的步骤,生成源码结构、配置、编译,即依次执行如下菜单操作:
【Build】→【Run automake&conf】
【Build】→【Run configure】
【Build】→【Compile File】
每一个操作若能正常完成,在Messages 窗口中会出现Success的提示。如果没有Success
的提示,则表明相应的操作失败,应查明原因。一般来讲,生成源码结构和配置这两个操作都能顺利通过。如果编译连接是首次进行,则一般会失败,因为很少有人能一次写出没有任何语法错误的程序。查看Messages窗口中的提示信息,可以了解哪些地方出现了语法错误。单击某一条错误提示信息,KDevelop会自动把光标定位到发生该错误的语句上。依据错误提示,修正程序中的语法错误,然后再次尝试编译,直到出现Success的提示。经常出现的一种情况是,程序上的一个语法错误会导致多条错误信息的出现。因此,应该把第一条错误信息认真处理好,再从随后的错误信息中随机选择几条加以处理,然后就再次尝试编译,看还有没有错误信息。如此反复多次,直到把所有的错误提示消除掉,编译就成功了。不要把所有错误信息都依次处理完再尝试编译,那样的效率比较低。
生成可执行文件
编译成功后,执行菜单操作【Build】→【Built Project】即可生成相应的生成可执行文件。本例的可执行文件见viruspread
。
调试
接下来,可以执行菜单操作【Build】→【Excecute program】试运行程序。这种运行是在KDevelop的控制下进行的。因此,如果出现“死循环”,可以执行菜单操作【Build】→【Stop】或按Esc
键即可中止程序的运行。如果在程序中存在逻辑错误,就得不到期望的结果。逻辑错误的排除比较困难。必须对程序进行仔细的分析才能找到错误的原因。
一般的逻辑错误可以根据程序的运行表现加以判断。比较深层次的逻辑错误则需要借助调试工具。本章前面介绍的调试工具GNU gdb就是一个很好的工具,可以用它对程序进行仔细分析,查找逻辑错误的根源。默认情况下,经过【Build】→【Built
Project】操作之后,可以在工程目录下的/debug/src/中找到带源代码调试符号的可执行文件。发现逻辑错误后,就要修改程序,重新编译连接。然后再试运行。如果仍然得不到期望的结果,说明程序中还有逻辑错误,应再次进行分析。如此反复多次,直到消除全部的逻辑错误。
发布可执行文件
如果只想发布程序的可执行文件,可以先调整项目的编译连接选项,选择优化编译的方式。这样可以得到更小更快的可执行文件。可以通过菜单【Project】→【Build
Configuration】修改编译连接选项。此菜单之下有三种选项,默认为Debug,生成的可执行文件中含有源程序调试符号;还可以选择Default或Optimized。选择Optimized时,编译连接时将进行优化,生成的可执行文件更小,执行起来也更快。
选择Debug时,可执行文件保存在工程目录下的/debug/src/中;选择Optimized时,
可执行文件保存在工程目录下的/optimized/src/中;选择Default时, 可执行文件保存在工程目录下的/src/中。对于本例,三种选择所生成的可执行文件的大小差别很大。选择Debug
时,93kb;选择Default时,42kb ;选择Optimized 时,只有8.8kb(见viruspread)。因此,如果要发布可执行文件,应该选择Optimized的方式进行编译连接。
发布源程序
把工程目录及其中的所有文件打包即可形成源程序包。linuxv-viruspread-0.0.1.tar.gz是本例的源程序包。用户得到这个源程序包并解压后,不必安装KDevelop
就可以按标准方法进行编译和安装,即支持configure,make,make install,make clean,make
uninstall等命令。这个包也含有KDevelop的工程文件和其他相关的信息。因此,如果用户安装了KDevelop,可以直接打开该工程进行修改。
感谢原创作者.书名:大学生攻克Linux系统教程(又名天下没有难学的Linux)