程设学习攻略

写在前面

《程序设计基础》,jwxt 里也没给出它的英文名,暂且叫 FOP(Fundamentals of Programming) 吧。

为什么要写 FOP 的攻略呢?

我自己有一定的编程基础,刚进学校的时候,对程设课可谓是满怀希望;结果第一节课就给我听困了。三节课将近 2 个小时的时间,老师拼命地不停地讲,如果有认真听的同学,想必听完也已经头昏脑涨了;结果 45 分钟的晚饭时间之后就是 2 小时的上机……

此外,看老师发的 PPT——太长了。每个课件差不多都有 100 页,其中既有讲语法的,也有讲码风的,也有讲历史、思想的,引经据典,实在是不简洁。

C 语言的语法、编程方法一类的知识点,课上当然是都覆盖了。但有关养成良好的编程风格和习惯、获取技术资料的能力、掌握编程集成开发环境等的“软”知识点,好像就比较零散了。从我的视角来看:有关时间复杂度的问题差不多是程设期末前讲的;“DevC++ 如何调试”这个问题是大一下的助教在课后召集同学说的;而关于怎么找别人调试代码,应该如何截图(而不是拍屏或者复制粘贴)、录屏,如何加注释等问题,好像没有提过(但通知群里好像发过文档)。

这就导致大家的水平参差不齐,到了大一下帮同学调试 DS(Data Structure,数据结构)大作业的时候,有的代码写的已经很优美了,而有的码风还处在原始时期……

所以想写文章,少量讲讲 C 语言相关知识点之外,能让读到的新同学把更多注意力放在这些“软”知识点上。此外,还会放一些常用代码片段,考试的时候可以作为本地资料带上。最好就是能够让你一年以后,尽管写不出正确的大作业代码,也能让帮你调试的同学/助教缓解一下视觉疲劳……

第一次写攻略,也没有什么结构思路,也不知道写的全不全面。如果有疏漏之处,欢迎大家指点指点我。可以到 Github Repo 上去提交 Issue,可以发邮件给我,也可以加我的微信/QQ交流!

关于这门课

基本情况

  • 上课很累:程设一个星期上一次,一次性上 6 节课,晚饭前 3 节理论课,晚饭后 3 节上机课,从下午 4 点上到晚上 9 点,中间仅休息 45 分钟,强度很大(2023 级是这样的,不知道以后会不会改)。所以中午请提前休息好。(不过我们这时候程设只开半个学期,后半学期还是很爽的。)
  • 上机很难:上机 2 小时共 10 道题,难度基本递增。前面 5~6 道是基础题,难度在 入门普及/提高- 之间;最后 1~3 道是拓展题,难度基本上在 普及+/提高 及以上(按照洛谷的难度主观评判)。对于大部分同学来说,到程设结课为止,能做出 5 道题目已经很好了。至于刚开始上机的时候,能做出来的题目只会更少……而第一次上机,如果你一点准备(比如暑假预习 C 语言语法,学习如何使用 IDE)都没有的话,你可能在第一题就会卡很久! 每次上机都是整个大类约 1000 名同学一起参加、排名,最后排名虽然不会公示,但是在成绩计算中会有较大比重,所以还是要足够重视上机。

当时我们第一次上机的最后一题。前面都比较常规,这题卡了我一个多小时也没想明白 qwq。

  • 课后很忙:程设每 1~2 周会布置课后练习题,每次 10 道,平均难度比上机似乎稍微简单一些,是对上机题目的补充。没有 2 小时的时间限制,但是(当然)有截止提交的时间。个人觉得课后这个练习的总量已经足够;但如果你有某一方面的知识点掌握不牢固的,还是应该额外做 1~2 题加强一下! 因为大一上其他课程的作业也非常多,所以课后做 10 道以上的题目真的会很忙的。

高中时期学 OI 一年也就做了 300 多道,这半个学期上机+练习+考试就有 200+ 了。

  • 考试也难:期中/期末的题目原则上不能放出。考试的规格和平常上机一样,平均难度再稍微高一点。但这时平时上机的优势就体现出来了,考试根本不带怕的。

资源获取

要学好 FOP 这门课,光靠课件和教材可能还不太够。特别是课件比较复杂,用来复习的效率会比较低。你可能需要一些其他的资源的帮助。这里列出几个常用的网站:

  • OI Wiki:一个编程竞赛知识整合站点,当然涵盖了程设要学习的知识点。网站中的学习路线学习资源是 C++ 编程竞赛的学习路线/资源,但也是程设入门的好资源。

  • 洛谷:一个练习编程的网站。注册一个账号,然后点击侧边栏的“题单”链接,就可以开始刷“官方精选”的六个入门题单了。做题遇到问题时,在题目界面右侧点击“查看题解”链接,就可以看到各位大佬的详细题解了。

  • C 参考手册:C/C++ 语言及其标准库的在线参考资料。非常标准规范,可以用来查找各种标准库函数的参数含义、返回类型、使用方法等。其实这个网站上也有一份 C 语言的教程,或者说是对 C 语言的规范的解释,不过各种晕头转向的概念也许会劝退新手?还是学完基本的 C 语言知识之后再回过头来看这份解释比较好。

  • 计算机相关技术资料整理:Github 上有很多分享书籍的 repo,这是其中之一。不过也许受限于网络,你打不开这个链接……

此外,学长学姐发的各种校内云盘链接、QQ/WX 群里分享的各种资料也很有作用,要多挖一挖聊天记录/群文件,找找对自己有帮助的资源。同时,除了课程推荐的教材以外,也有其他更推荐的参考书目,如:

  • 《C 程序设计语言》(The C Programming Language, Dennis M. Ritchie & Brian W.Kernighan):设计 C 语言的人写的书,不可不谓经典,不过拿来入门也许会有些生涩。

《C 程序设计语言》封面

  • 刘汝佳的《算法竞赛入门经典》:我的入门书,虽然是讲竞赛的,但看完也真的很有帮助!

《算法竞赛入门经典》封面

  • 啊哈磊的《啊哈 C 语言》:第一次接触到 C 语言就是六年级看到的这本书,名副其实的“小学生坐在马桶上都可以读懂”。

《啊哈 C 语言》电子版封面,出版的书籍封面和这个不大一样

暑假提前预习,你可能需要看一些网课来学习 C 语言语法。这里跟风推荐浙大翁恺教授的 C 语言程序设计课程


程设学习攻略
https://tsxb.top/tutorial/fop-walkthrough/
作者
tsxb
发布于
2024年7月21日
更新于
2024年8月8日
许可协议