SE Class's Individual Project--12061161 赵梓皓
2014-09-24 23:40 kjzxzzh 阅读(297) 评论(1) 编辑 收藏 举报1. 项目预计的用时
其实刚开始以为这个项目不难写,因为上学期oo课程上用java写过类似的程序(貌似还比这个复杂)。觉得主要的难点在于学习c++语言。
总的项目被分为大概3个部分。
其一,文件遍历。由于刚开始学习c++ 所以计划用时较长,2-3小时
其二,字频统计。整个程序的kernel,是程序正确性和效率的关键点,需要认真写。计划3.5小时+。Ps(学习正则表达式,+1小时)
其三,排序输出。程序的结尾,也是最简单的阶段。1小时。
最后,就是整个程序的调试,修正bug,提高算法效率等。时间不定。
2. 项目实际用时
总的来说,总的时间和估计时间差不多。但是,由于时间不是连续的,所以很难统计。
还是错误估计了c++入门所需要的时间。比如找到文件的遍历所用的库就很麻烦,看api学习语法也花费了很长时间。这一部分占据了项目时间的5成以上。
做完程序,感觉程序的难点(花费时间最多的)是学习而不是编程。程序看似很复杂,其实用正则表达式思路就很清晰,代码量也很小。编程的难度(逻辑的复杂度)也不大。
In conclusion:9小时整块时间(但是有时候吃吃零食,发发呆把这些加上大概13小时囧——这是病,得治求推荐好的医院!!)
3. 项目的表现和性能的分析
这个部分要感谢天神和张大神,他们给了我很多启发,也使我对自己的程序有了一丢丢的自信。。。(错了就不给分的设置真坑爹,不得不吐槽,完全不合理啊,最起码也要按测试点给分啊。谁的程序一点bug都没有,满满的不满 = =)。
咳咳,吐槽好像多了点,回到正题。第一次用vs,对各种功能不熟悉,看到分析真心觉得高大上啊。可惜就是看不太懂,努力学习。
第一次测试的test文档很短,就不断出现
第一次吓死我了,还以为程序错了,喝一口水冷静下。
经过询问同学and 分析,可能cpu执行时间太短,来不及分析数据。后来,分析了 2014年6月英语六级真题及答案(高大上有木有)
得到结果1:
结果2
两张图对一个数据分析,差别有点大啊。不仅是cpu时间,而且占用百分比也不一样。不知道为什么。能不能找到一个合理的函数来在一定程度上量化呢。。。?这里需要好好思考下
附上其他测试图
函数调用过程
函数独占样本
最后,感觉自己的程序提高空间还很大,可惜没有时间了。希望下次赶紧治好拖延症。(绝对不会因为自己耽误小组作业。。。我发四)
程序改进的想法(来不及实现):
1.普通模式,e2,e3其实很多代码是重复的我,完全可以规约成一个函数,这里严重拖慢了效率。
2.输出排序是用了选择排序,原因是一直没有搞懂c++的sort机智,排序老出错,没办法只能写一个简单的,所以这里也浪费了很多的时间。明天去问问丁大神。
3.Map容器不好根据key值分析,所以申请了list来保存,这里浪费了很多的空间,如果有更好的方法,这里的可提高空间很大。
4.其他细节,如变量的使用,有的申请了但没有用。
4. 项目的测试样例
1.测试代码对单词的识别能力
输入:a aa aaa aa1 1aa 1aaa aaa1aaa abb%*&^^*&^)(ss a **_)(*_(*(__*sasas
输出:<aaa>:1
<aaa1aaa>:1
<abb>:1
<sasas>:1
Correct
2.测试代码合并大小写的功能
输入:apple apple2 Apple APPLE app APP ios ioS
输出:<APPLE>:3
<APP>:2
<ioS>:2
<apple2>:1
Correct
3.测试排序能力
输入:apple appl apple a1pple aPP
输出
<apple>:2
<aPP>:1
<appl>:1
Correct
4.测试6级真题
输入:
输出:
没有办法确定自己的正误,但是按照自己的想法,基本应该没错。
5.测试多层目录
测试了自己的工程文件
输出:
目测正确。
6.测试六级英语的2-word 和3-word
2-word 结果如下
3-word
测试到这里,真想说:妈妈再也不用担心我的英语了(哈哈 没吃药。。)
7.空目录
正确
5. 收获和体会
发现其实语言是相通的,在学校应该更多的关注于基础理论和实践能力,不要想着java现在很火,我去学java。过两天又去学swift。语言都是大同小异的,有了好的计算机基础能力,学习语言是很快的。编程的重点不是语言,而是怎么驾驭语言。是思想,或者说是组织“语言”的能力。
多与大家交流是很能促进进步的。刚开始自己再看语法和api文档,找了很久都摸不着头脑,然后没办法,去问大神。在和大神交流的过程中学习是很快的,大神也给我介绍了map容器。大大降低了编程复杂度。闻道有先后,别人身上总有值得学习的东西,交流是很好的学习平台。
工具的重要性。以前写代码都在vc 6.0的平台上。Vc 6.0 bug多,而且ui设计的很不好,功能也少。第一次用vs就有很大的收获。比如词法分析,自动补全,提示等等。磨刀不误砍柴工,好的工具确实能够事半功倍。
优化的重要性。以前总觉得代码写完就好,自己很少注意优化,尤其是细节方面的优化。但有时候,改动一下,代码的时间效率就会发生很大的变化。尤其是对循环内部的改动,效果也是惊人的。
写完了,睡觉 呼呼呼~~~~