0%

致初学OIer-你想知道的9个问题

致初学OIer:

你想知道的9个问题

Beautyyu 执笔

不同于数理化生这些科目, 大部分人可能都是第一次接触”信竞”这个科目. 你对这个科目可能一无所知. 不过没关系, 笔者这里将解答你的疑问.

1. 什么是编程?

我们的计算机上运行这各式各样的程序, 这些程序承担着各种功能. 正如字面意思, “编程”就是”编写程序”

我们将对计算机下达一个”指令清单”, 称作源代码. 不过计算机并不能直接”读懂”这些源代码, 因为源代码是依照人类的逻辑编写的. 计算机只能读懂”010101001001…”这样的机器码. 这些机器码就是俗称的”程序”

所以我们需要一位”翻译官”将源代码翻译成机器码. 这个过程称作编译, 翻译官是一个叫做编译器的程序.

嗯? 你问第一个编译器是怎么造出来的? 自己查资料去吧.

2. 什么是编程语言?

正如人与人之间使用”语言”进行沟通一样, 人和机器之间使用编程语言进行沟通. 常见的编程语言有c, c++, pascal等等.

人类使用编程语言编写源代码. 上文提到, 人和机器之间有一位翻译官编译器. 而各种语言都有其对应的编译器.

不过和人不同, 编译器并不是很聪明. 因此, 你所编写的源代码一定要严格地符合该语言的语法. 否则编译器就会告诉你”编译失败”

当然, 上文所说的语言特指”古典高级语言”, 我们将要学习的c++就属于此类. 至于更多五花八门的现代语言, 则不能一概而论了.

3. 什么是算法?

当我们面对一个问题时, 我们会观察问题, 解剖问题, 然后思考如何解决问题.

算法就是”一个问题的解决方案”. 算法设计的过程就是”思考解决方案”的过程.

4. 算法和编程什么关系?

算法是抽象的, 是一种思想. 而程序则是具象的, 是”操作计算机的过程”

我们将思想化为现实的过程, 就是把算法写进程序的过程.

算法是灵魂, 程序则是供其使用的工具

5. 什么是信竞?

信息学奥林匹克(Olympiad in Informatics), 简称OI. 这是一个面向中学生的算法设计比赛. 参加比赛的中学生则称为**OIer**.

类似的还有一个算法设计比赛叫ACM-ICPC, 只不过面向的对象是大学生.

6. 解决算法问题需要什么工具?

测评系统: 测评系统即俗称”题库”. 我们在这里查看题库中的算法问题, 设计出源代码后再提交到这里进行验证. 我校有自建的测评系统https://192.168.6.233

编辑器: 理论上Windows系统自带的”写字板”就是最简单的编辑器, 用它来编写源代码也是没有问题的. 不过, 一个优秀的编辑器可以使编写源代码的过程更有效率.

编译器: 在第一个问题中已经介绍过了.

IDE: 全称integrated development environment, 简单来说就是将编辑器, 编译器等工具集合成一体的综合编程软件. 你可以使用IDE内部的编辑器编写源代码, 然后一个快捷键就可以编译运行你的程序. 初学者常用的IDEDev-C++

7. 解决算法问题的流程是什么样的?

  1. 读题: 从测评系统上查看题目. 题目主要包含三个部分”题面”, “输入数据”, “输出数据”

  2. 输入数据: 输入数据即题目的”已知条件”

  3. 输出数据: 输出数据即需要你根据”已知条件”推导出的问题的”解”

  4. 设计算法: 确认题目的已知条件和要求的解后, 就可以开始思考问题的解决方案, 形成一个完整的思路

  5. 设计代码: 根据已形成的思路, 编写相应的代码

  6. 进行调试: 编译运行你的代码, 观察程序运行是否符合你的预期. 如果不符合预期, 寻找问题所在. 问题一般出现在两个方面, 即算法错误(思路错误)和代码错误(手抖写错). 优秀的OIer应当尽量避免后者

  7. 提交测评: 编写完成源代码后, 将源代码提交至测评系统进行验证. 测评系统将会为你的程序提供多组输入数据, 然后检查程序产生的输出数据是否与标准答案相符. 如果全部相符, 测评系统就认为你的程序”通过了测试(Accept)”

  8. 如果程序没有通过测试, 回到第6步

  9. 如果多次没有通过测试, 可以考虑回到第1步

8. 信竞的学习过程是什么样的?

首先我们需要学习c++语法基础, 这部分内容将教会大家如何写代码. 但语法基础的学习是十分枯燥的, 大约需要耗时2个月. 大部分新生都无法撑过这两个月而选择放弃.

这之后我们将学习算法和数据结构设计, 这部分内容将教大家如何设计算法. 真正有趣的内容从此时才开始. 我们将会学习怎样使用不同的算法解决不同类型的问题, 怎样结合多个算法解决复杂的综合问题, 以及, 怎样设计或改造出新的算法更优雅更有效率地解决问题.

希望大家都能挺过前两个月, 真正领略到算法的魅力所在.

9. 相关的专业有哪些?

与编程直接相关的专业主要有计算机科学软件工程这两个. 前者侧重于算法设计, 注重算法效率. 后者侧重于软件制作, 注重于综合实用性. 至于所谓的物联网, 大数据, 人工智能等等都是由这两个专业进一步发展而来.

另外, 游戏设计, 微电子等等工科专业也和编程有紧密联系.

几乎所有现代理科专业都需要借助编程工具

最后

希望大家都能在算法设计中享受乐趣

最后安利我校计算机社团微笙无上计算机协会. 笔者现年高三, 是协会的主要创始人之一, 第二届会长. 欢迎各位加入微笙计协. 协会纳新群893053706 官网www.weisheng.cf