第一次博客作业

第一次博客作业


Q & A

Q1

学习《C++语言程序设计》课程之前,你知道什么是编程吗?谈谈上这门课之前你对编程的理解,以及你对自己编程能力的评估。

  • 从前 :在学习《C++语言程序设计》前,我已经在初中时就在社团里接触过编程。当时凭着自己对于电脑的兴趣,在老师和师兄师姐的帮助下,学到了一点编程的知识,也能够写一些简单的程序。看着黑色的cmd中白色字符不停闪烁,一种成就感油然而生。
    那时,编程给我的印象只是:写一些语句,指挥计算机去完成一点任务。去实现一些功能。换而言之,我当时以为编程就是“写完程序就算数了”。
  • 现在 :如今正式踏进了大学的大门,开始系统学习程序设计后,我懂得了编程不仅仅意味着“码代码”,而是包含了“思考,设计,维护等”过程的一项严谨的学问,它应该被分为以下几个步骤。
  1. 对问题进行分析,思考应该如何去解决问题并尽可能使得问题简化,设定解决方案与步骤。这应该就是算法设计的重点所在。
  2. 根据解决方案与步骤,写出相应的程序语句,以便交由计算机执行并解决我们的需求。
  3. 根据实际生产环境,预设用户的使用场景,提前做好相相应的准备。(例如本周小程序大批量签到发生了网络阻塞,这就提醒我们要预设可能会有高并发场景出现)
  4. 提供相应时限的后续维护,并根据实际情况,决定是否更新代码或算法。

Q2

学习《C++语言程序设计》课程两周后,你已经初步认识到了什么是程序设计(编程),请你对第一次编程作业认真进行总结,写出自己的心得体会(请给出较详细的总结)。

目前的作业分为两大部分:选择题&编程题。
毫无疑问,编程与其他学科一样,所谓实践出真知,学习都需要理论与实践相结合。

  • 选择题 :无论是课堂小测还是PTA的选择题,都是一些课本上基础的理论知识应用。唯有注意到知识的细节,加以自己的适当思考,才能在选择题海中游刃有余。而目前,我就踩了几个“混淆了表达式与变量值”,“运算符优先级”的坑。这也给我深刻的教训,务必夯实基础,才能走得更远。
  • 编程题 :至于编程题方面,难度大部分是比较容易的,有几道题是中等难度。同时,编程题的输入输出格式亦是OJ评判的关键所在。在一开始的时候,我对于输入输出的格式要求不太严格,因此评测也是多次报错。于是,我开始提醒自己要关注题目的要求的格式,注意运算符与结果之间的空格。慢慢地,我的输入输出格式开始严谨起来,容易的题目也很快通过了评测。
    下面来说说这道虽说是中等难度,但的确困扰到我的题目“CPP练习3——和差积商”(我留意到它的通过率很低)
    和差积商

这里题目所给的范围是(0<{A,B}<1000000)。我第一次尝试时对这个范围并不敏感,于是仅仅定义为int类型。结果为1-3测试点答案正确,3-6测试点答案错误。我被这个问题困扰了两个小时,我用C和C++重写程序都无法通过。最后是煌哥的提醒,让我注意到了题目所给范围超出了int类型的范围,发生溢出,因此需要把变量定义为long long int类型。修改之后,评测通过,顺利完成任务!
上述问题都让我意识到,细节很重要,这也是林华老师上课时不断强调的。所以,我会不断夯实好基础,抠住细节,这样才是真正的写程序,而不是写bug

Q3

根据自己的情况写出你对这门课已经或将要使用的学习方法及时间安排?(请给出较详细的计划)

计划

项目 内容 时间
1 结合雨课堂的预习课件,预习相关内容 在学期中期尽可能完成C++教材学习
2 结合教材与《C++ primer》,进行预习,并精选《C++ primer》,中的课后练习编程调试,然后对照《C++ primer习题集》看答案并思考。(会对《C++ primer》,的编排顺序合理进行调整) 预计学期中期即可以完成C++教材的学习
3 查阅《Effective C++》,了解规范的代码书写规则,进一步让自己的代码规范性增强。 主要在C++教材学习完毕后,提高自己的编程水平
4 在Github上找到一些小项目,follow,fork,然后试着做一些PR。既能学到编程技术,也能收获一些项目经验和与他人协作编程的能力。 前期尽力而为,后期开始至少每周1次,平均2次
5 在OJ上解决一些问题,进行编程的练习。 随时随地
6 在Github上进行一些文档的翻译汉化,既在阅读文档的时候思考他人的程序,同时能够提高自己的英语能力 正在进行,且课余持续进行
7 继续用Arduino单片机制作一些小玩意,例如网络摄像头,遥控器,智能小车等。既能练习C/C++,又能做些方便自己的工具。 课余时间
8 学习一些算法,锻炼自己的逻辑思维。 课余时间
9 在学好C++的基础上自学Python,这是实验室的必备技能。 课余时间

学习方法

目前我认为,练习PTA以及《C++ Primer》上的题目可以比较快地上手C++地一些基本操作。
在此基础上,可以尝试去跟进Github上的一些开源项目。在这里,在练习自身编程能力的同时,亦能够培养自己阅读他人程序及理解他人思维方式的能力。这一点是未来团队合作的必备素质。
用Arduino单片机制作一些小玩意,不仅是我初高中参与比赛的主要方式,也是一种充满趣味性的工作,并借此熟悉嵌入式。
最后,作业是要认真做的!

posted @ 2018-10-03 23:25  Kitcham  阅读(193)  评论(2编辑  收藏  举报