第四次作业——结对编程
|
--- | ---
Github项目地址 https://github.com/TheFatInsect/WordCount.git|
结对伙伴的作业地址 https://www.cnblogs.com/Redwarx008/p/11667362.html|
|
一.结对的过程
我和结对队友贾鸿椋是室友而且我们俩的桌子紧挨着所以交流沟通起来特别方便,而且我们都有一些不错的想法和共同的意见所以就很顺利的结对成功。由于我们俩的想法是共同的,但出于个人原因我选择了C而他选择了C++ 所以我们的代码是由个人独立完成的两份cpp文件,但我们在写完代码之后互相查看了对方的代码并且听对方讲解了自己代码的各个部分以及功能实现原理,并进行了很久的经验交流,所以还是有很大的收获的。
二.PSP表格
三.解题思路描述
1.初步思考
本次作业要求设计一个wordcount的命令行程序 与以往作业要求不同 本次作业是通过cmd命令窗口调用exe文件 对一txt文件进行检索然后输出统计的文件内容。首先要实现基本功能:①统计文件的字数②统计Ascii字码2 不考虑汉字③统计空格 水平制表符 换行符 均算字符④英文字母⑤词组。然后需要对程序进行一系列的单元测试 效能分析以及数据可视化部分的检测。最后还有程序的附加功能“用户交互界面绘制”即:a.支持两种导入单词文本的方式:导入单词文本文件和直接在界面上输入单词并提交。b.提供可供用户交互的按钮和,实现多个参数的功能,对于异常情况要给予用户提示。c.将结果直接输出到界面上,并提供导出按钮,将结果保存到用户指定的位置。代码部分的要求就是这些,需要完成的功能不算很多,只是通过cmd运行exe的方式是第一次接触,也不算太难,多多尝试多多学习还是可以解决的。
2.查找资料
浏览CSDN等网站还是能发现很多在不同编译器环境 用不同种语言写出来的各种各样的wordcount命令行程序的。最后参考博客园部分其他高校优秀学生作业,开始了本次作业的编码工作。
参考链接:https://www.cnblogs.com/miaobo/p/9696026.html
https://www.cnblogs.com/xiaobao123/articles/9649687.html
四.设计实现过程
1.代码部分整体思路
根据博客作业要求,基本功能方面要求统计单词word、字符character以及行数line的数据情况,所以创建了三个函数分别用来求word、character和line的数据统计。三个函数功能相近,写的时候有很多共同点,比如“如何判断数据读取是txt文件中的最后一位”、“如何将数据导出再导入到result文件”和“用sum_words等值来记录总数”所以基本上写完一个函数模型,剩余的直接改一些参数的名称就可以完成了。基本功能的思维导图如下:
五.我们制定的代码规范或链接
在代码审查过程中发现的问题:由于编译器环境问题 在不同vs版本下代码运行会出现不同的报错以及警告错误,所以我们查阅了相关资料,发现在头文件部分增加一些代码语句可以删除此类非必要错误,也就是对程序的影响几乎没有,但是有这个错误程序就无法运行的错误问题,从而使程序运行起来观察具体的执行情况。
六.记录在改进性能上所花费的时间
改进性能1:删除一些不必要的循环体 变量设置以及重复的文件读写操作的简化。性能分析图如下:
(1)CPU性能分析:由于输入txt文件中数据较少 几乎没有占据CPU的空间
(2)外部代码调用情况:由于使用C语言编程,整个cpp文件都是由函数的组合而成 所以函数部分的调用量占到了100%。
(3)GPU性能分析:和CPU性能分析类似 在Intel(R) Core(TM)i7-8750 CPU@2.20GHz 2.21GHz的环境下运行程序,基于txt文件中所输入数据的情况,GPU占用情况如下。