第一次Blog
面向对象程序设计第一阶段学习心得Blog
一、前言
这个学期我们迎来了继c语言之后的又一门专业课,面向对象程序设计,主要学习的是java语言,让我措手不及,一开始的学习跟不上老师作业的节奏,每次作业都是老师在PTA平台上发布,然后我们在上面进行答题,截止时间多半为一周。
(1)第一次题目:相对来说比较简单,因为题型比较像c语言,只要稍微转变一下就行了,题量虽然有八题,但写起来还是很快的,主要涉及的知识点有if语句,switch case语句,冒泡排序等,这些都是c语言学习的内容,运用到java只需改下输入输出即可。
(2)第二次题目:第二次题目相对于第一次而言,比较难,做起来感觉啥都不会,如IP地址转换,合并两个有序数组,判断闰年及星期几和求下一天前N天等,主要涉及的知识点有IP地址转换,正则表达式的运用,boolean函数的运用及各种函数的运用,总体来说题量挺大,七天时间要花两三天来写,涉及到的函数运用和c语言不太一样,需要重新学习。
(3)第三次题目:第三次题目涉及到的内容就更难了,老师上课也没讲,就要自己创建类,这是前所未有的新知识,就自己看视频根本学不会,第三题难度极大,题目根本无从下手,一元多项式的系数拆分要运用到正则表达式,而正则表达式我完全不会,罗老师在群里发了链接让我们到网上自学一下,还发了几段可参考的代码,我就是参考这段代码,混了15分,第一二题,也让我逐渐学会了类的使用,总体来说,题量较大,虽然只有三道题,但每一题都可以写很久,但是还是有满分大佬,让我感到深深的压力。
二、设计与分析
(1)题目集1:第一次题目集中的7-8,是一道判断三角形类型的题,在这个题目中,我运用了数组存入三角形的三条边,再用for语句进行输入,然后根据三条边的关系,判断三角形的类型,这道题现在看来挺简单的,但在当时,刚接触java一周,首先是要思想从c语言转变到java,一开始写的时候没想到用数组,用的是if else语句,定义三个数a,b,c,但第一次提交却没有通过,显示的是编译错误,原来是if else的运用还是有问题,在经过修改后,成功通过了。题目集结束后,老师还对这个题目进行了查重,最后我的查重率是70%,老实说超过90%就算抄袭了,还好这是我自己写的,调试过的。java的第一次作业写的还是挺舒服的。

(2)题目集2:在题目集2中,题目较难的为后面三道题目,在第三题的解题过程当中,我选择先写函数,将主函数放在最后,所写的函数有判断闰年函数,还有星期几的判断,通过创建月份天数的数组,再利用闰年的二月29天,就可以了。老实说,我第一次打开题目集二的时候,觉得这几道题十分难处理,不知道如何下手,在仔细思考一番之后,觉得该题应考虑的地方太多,不好写,但是在逐步解决了题目集二当中的题目后,再看看第三题,觉得十分容易,判断闰年的方法第三题就写好了,判断后面天数是哪一天的方法在第五题就写好了,我只需要做出一点点的改动,使得后面N天变成前或者1天就好了第四题,是求下一天,第五题是求下N天,这两题有这异曲同工之处,我选择了先写第五题,第五题还是先写函数,判断闰年,然后分月份情况,进行下N天的输出,这道题要注意的是N可以是负数,即可以求前N天。接下来第四题我就把N改为了1就结束啦。经过这两题,我对日期之类的函数写的挺熟练了。但是虽然正确,但是代码还是存在许许多多的问题,这点在Source Monitor生成的报表内容中也可以看出,算法还需要改进。

(3)题目集3:题目集3是最近发布的一次作业,也是最难的一次作业了,都是类的设计,第一二题相对第三题来说还好,但是第三题我觉得是真的不会写,需要用到正则表达式,一元多项式的求导,想想就很难,看那题目解释都整整一页,50分的大题目,我看了半天连题目都没咋的看懂,在老师发了一段参考代码和参考正则表达式的运用后,我成功知道了如何将一元多项式的系数分离出来,然后进行判断,最后拿到了15分,过了三个测试点,指数为0,和系数为0还有常量测试三个点,但是到后续的使用中,不知道如何去求导,即使在数学中幂函数的的求导法则十分容易,但是转换为计算机语言就变得十分困难,需要再次使用正则表达式将数字提取出来并存入一个list结构当中,这再进行调用,这是比较难实现的一步,所以在最后的几个小时当中,我放弃了将这一步进行下去,转而开始测试题目要求中的测试点,恰好,大数测试中的测试点正好是pdf文件中给出的那个大数,使用了if else语句,将x^-5+6*x^7-1200*x^-1000+54468799958488*x^-925546作为单独的一种情况,使得在后续的测试中是自己的成绩多增加了5分。

通过这三次的题目集的磨练,我学到了很多java的新知识,是老师上课不会讲的,虽然写起来很头痛,但是学会之后,运用好并通过之后,就感到十分自豪,比如第二次作业第一题,十进制转化为二进制,我一开始是无从下手的,但经过在网上搜索,CNDS这种程序员网站上学到老怎么写,第一次体会到了萌新变成老司机的快感。在三次题目集中,我体会到了java和c语言的不同,在c语言中,往往需要自己进行函数的编写调用,而java会自己读取函数库里的函数,可以很轻松的进行调用,可以说是很偷懒了。这也使得java的代码很是精炼。特别是学会了类设计之后,感觉java是如此的好用,而且类是互通的,只要编写一次,在别的包里都能调用这个类。
三、踩坑心得
在将近一个月的java学习中我是真的踩了很多坑的,在第一次题目集中的第四题中,就算是某个if else 语句中某个数字不同都会造成后面的输出结果不同,而第四题的题目代码多且繁杂,这很不利于用肉眼寻找错误,非常难,以至于我修改了几天,不过在室友教了我eclipse当中的debug功能之后,很快的将错误寻找了出来,所以说,在java的开发中,一定要学会并掌握eclipse简单的debug功能,这可以让程序员少走很多的弯路。这个功能在最近做的实验里老师也要求我们要学会并掌握,在后期调试代码时很有用,实验中就有我们需要对一个代码进行改错和纠正。
以及还有,在使用if else 语句进行多个情况的判断时,应当多注意一些情况的判断情况的先后顺序,以及注意一下if else中的判断条件,这样可以减少在写代码的最终输出错误,以至于后续的调试过于难,难以找出错误。还有就是这些坑菜过一次久一点要记住,不能一次次错,要尽早避免再次被坑。
四、改进及建议
总的来说,在这三次题目集中,我对java的认识越来越清晰了,感受到与c语言的不同越来越多了,打代码也快了很多,写的代码也变得精炼不拖泥带水,也知道要对自己的代码进行包装,对算法不是很熟练的运用使得我的代码可读性比较一般,在以后的编程和写作业的过程中,我会更加注重算法的使用,争取写出更高质量的代码,而不是像这几次写的较为一般,用的算法也很普通,在以后的学习中,我会好好的认真听老师上课教的,下课在课外也要自学,多花一些时间在打代码上,多研究代码,这样才能做一名合格的程序员。
五、总结
说实话,在我看来前三次的作业其实就是开胃小菜,是让我们java小白很平滑的从C语言的学习过度到Java 当中,主要是学习到了函数的调用,类的设计及应用,还有对正则表达式开始了初步的学习,后续的学习难度我觉得一定会比这次的三次题目难,java还有很多的奥妙还没被我发掘出来,在之后的学习应多投入时间让自己的编程能力进一步的提高。同时,在我看来,我的代码算法十分简单,大部分都是if else语句,这导致判断的情况过多,而使得可读性较差,所以在后续的学习上,应该多注重算法的学习,让自己写出来的程序变得可读性强,优质。在以后的编程和写作业的过程中,我会更加注重算法的使用,争取写出更高质量的代码,而不是像这几次写的较为一般,用的算法也很普通,在以后的学习中,我会好好的认真听老师上课教的,下课在课外也要自学,多花一些时间在打代码上,多研究代码,这样才能做一名合格的程序员。
对于教师等其他的方面,我没什么意见能说,因为在我看来,应该是学生主动去适应老师的教学风格,而不是老师改变自己的教学风格,来让学生更好的理解并掌握知识,而我正在适应的道路上,所以可能并不是很能跟上老师的节奏,但我确实在努力去适应。老师上课虽然讲的很多,但主要还是要靠自己去多钻研,多思考,不能一味的靠老师,大学本来就是自学的地方,靠的是自觉和自律,为了以后能找到好工作,现在就要好好学好这门专业课,做到专精。

浙公网安备 33010602011771号