GESP C++ 1 级 · 知识点

计算机基础与编程环境

GESP C++ 一级要求知道计算机由哪些基本部件组成,并理解一段源代码要经过编译才能变成可以运行的程序。

对应知识域:计算机基础与编程环境相关真题 4 套

本页为本站原创整理,例题与解析均由本站编写,不取自任何题库原题;考试范围以 CCF 官方公布为准,本平台不是 GESP 官方平台。

考纲要求

  • 认识计算机的五大基本部件:运算器、控制器、存储器、输入设备、输出设备,并能判断常见设备属于哪一类。
  • 理解程序、源代码、编译、可执行文件这几个概念之间的关系:人写的是源代码,机器运行的是编译后的可执行文件。
  • 能在常见集成开发环境中新建 C++ 源文件、点击编译、运行并看到输出结果。
  • 能区分编译错误与运行错误:前者是语法不合规、程序根本生成不出来,后者是程序已经跑起来但在执行过程中出错。

典型题型

  • 给出若干设备,让考生判断哪些属于输入设备、哪些属于输出设备。
  • 给出若干说法,让考生判断正误,例如「可执行文件仍然是源代码文本」「程序不编译也能直接运行」。
  • 描述从写下源代码到程序运行结果出现的完整过程,要求按顺序排列。

常见错误

  • 把内存和硬盘当成一回事。内存断电后内容丢失、容量小但读写快;硬盘断电后内容保留、容量大但相对慢。
  • 以为 C++ 程序写完就能直接双击运行。C++ 是编译型语言,必须先由编译器把源代码翻译成可执行文件。
  • 把编译错误和运行错误混为一谈。少写一个分号属于编译错误;数组越界、除以零这类往往在运行阶段才暴露。
  • 把「保存文件」当成「编译程序」。保存只是把文字写进文件,编译才会检查语法并生成可执行文件。

深入理解

五大部件各自负责什么

冯·诺依曼结构把计算机拆成五个部分,理解它们的关键是看「数据往哪走」,而不是背名字。运算器负责算术和逻辑运算,控制器负责取出指令、翻译指令、指挥其他部件按顺序动作,两者合在一起常被称作中央处理器(CPU)。存储器存放程序和数据,输入设备把外界信息送进来,输出设备把结果送出去。判断一个设备属于哪一类,看它在数据流里的位置即可:键盘、鼠标、扫描仪是输入;显示器、打印机、音箱是输出;硬盘、U 盘、内存条是存储;而触摸屏同时具备输入和输出两种身份。

一个容易混淆的点是:硬盘和内存都属于存储器,区别只在于断电后内容是否保留。内存断电即失,硬盘断电仍在,所以程序运行时先把数据读进内存,断电前再存回硬盘。

从源代码到可执行文件

人写的 .cpp 文件机器看不懂,必须经过翻译。完整的流程是四步:

  • 预处理:处理以 # 开头的行,把 #include <iostream> 展开成头文件内容,删掉注释。
  • 编译:把预处理后的代码翻译成汇编语言,这一步检查语法。
  • 汇编:把汇编语言翻译成机器指令,得到目标文件。
  • 链接:把目标文件与库文件拼在一起,生成可执行文件。

集成开发环境把四步打包成一个「编译并运行」按钮,所以初学时看不到中间产物。考试问「源代码能不能直接运行」,答案是不能,必须编译;问「编译通过是不是就一定正确」,答案也不是,语法合规只说明能生成程序,逻辑对不对要跑起来才知道。

编译错误和运行错误的区别

编译错误发生在翻译阶段,程序根本没有生成出来,常见原因是拼错关键字、漏写分号、括号不配对、变量未定义就使用。编译器会给出文件名和行号,照着改即可,不改就无法运行。

运行错误发生在程序已经跑起来之后,编译完全通过,但执行到某一句时出了问题:除以零、数组越界、读取不存在的文件。这类错误编译器发现不了,因为语法本身没问题。还有一类叫逻辑错误,程序不报错、能跑完,但输出结果不对,例如把 + 写成 -、循环边界差一。区分方法很简单:编译不过的是编译错误,编译过了结果不对的是逻辑错误,编译过了跑到一半崩掉的是运行错误。

自编例题

从源代码到运行结果

下面是一段完整的一级程序。请说明它要经过哪些步骤才能把 hello 输出到屏幕上。

#include <iostream>
using namespace std;

int main() {
    cout << "hello" << endl;
    return 0;
}

第一步是编辑:把代码保存成扩展名为 .cpp 的源文件。第二步是编译:编译器检查语法,把源代码翻译成机器能执行的目标代码并链接成可执行文件,这一步出错属于编译错误。第三步是运行:操作系统加载可执行文件,程序从 main 函数开始执行,cout 把 hello 送到屏幕,endl 换行,return 0 表示程序正常结束。整个过程里,人读的是源代码,机器执行的是可执行文件。

相关真题

这块内容在整条路线里的位置:GESP C++ 1 级备考路径。

READY TO START

开始练习

先做一套本级别测评,报告会指出哪些知识点需要重点补;再回到本页对照考纲要求逐条核对,把不确定的条目记下来集中练。

常见问题

一级考试需要自己安装编译器吗?

不需要。一级只要求理解源代码、编译、可执行文件的关系,并能在现成的编程环境里完成新建、编译、运行。具体环境以 CCF 官方公布的考试说明为准。

内存和硬盘的区别是什么?

内存用于存放程序运行期间正在使用的数据,读写快但断电后内容丢失;硬盘用于长期保存文件,断电后内容仍在,容量通常远大于内存。程序运行时先被载入内存。

编译错误和运行错误怎么区分?

编译错误发生在把源代码翻译成可执行文件的过程中,例如漏分号、关键字拼错,程序根本无法生成;运行错误发生在程序已经运行起来之后,例如除以零或访问越界,此时程序可能提前结束。

本级别其他知识点

官方依据