Prelab | 配置编程环境

大一的同学们大家好! Introductory Programming作为格院的第一门专业课,主要是通过C语言让大家掌握一定的计算机科学基础,编程概念,以及软件开发的流程。为了能够更高效地学习本门课,建议大家在Lecture和Lab Session前参考本文在自己的电脑上配置好C语言的开发环境,以便上机操作。

Table of Contents

1. 编程环境概要

一般来讲,C语言的编程环境由C语言编译器(Compiler)和编辑器(Editor)组成。

编译器(Compiler)

编译器是指将代码转化成二进制可(被计算机)执行文件的软件。

想象你正在和一位只懂中文的朋友交谈,但你只会说英语。你需要一位翻译来帮助你们沟通。在这个类比中:

  • 你说的英语 → 程序员编写的代码(高级编程语言)
  • 翻译 → 编译器
  • 中文 → 计算机能理解的二进制指令

就像翻译将你的英语转换成你朋友能理解的中文一样,编译器将程序员编写的代码转换成计算机能理解和执行的指令。

在本门课程的教学和实验中中,我们推荐使用以下编译器:

  • Windows: MinGW-gcc
  • macOS: clang
  • GNU/Linux:gcc/clang

编辑器(Editor)

编辑器是指编辑文本的软件(在这里我们主要讨论文本编辑器)。相较于编译器,编辑器是一个大家在过去使用电脑时一定接触过的概念。我们常使用的Microsoft WordWPS,Windows系统的记事本,都属于编辑器的范畴。在编程的过程中,我们需要编辑器去帮助编辑代码的文本文件。

既然如此,那么我们可以使用记事本甚至Word写代码吗?完全可以!请看这个视频

为了提升开发效率,我们一般会使用代码编辑器(Code Editor)编程。

常见的代码编辑器有:

  • Visual Studio Code (推荐)
  • Jetbrains Fleet
  • Notepad++
  • Vim/NeoVim
  • Emacs

代码编辑器能够提供语法高亮,自动补全,实时错误检测等功能来帮助用户进行高效编程。

本门课程要求使用的代码编辑器是Visual Studio Code(注意与Visual Studio区分开)。

* 集成开发环境 (IDE)

你可能在其他的编程书籍或教程中可能看到过IDE(Integrated Development Environment)这一名词,集成开发环境是指将程序开发过程中所需的各种工具(编辑器+编译器+其他)集成在一起的软件,通常不需要额外配置,具有“开箱即用”的特点。

常见的C语言IDE有:

  • Visual Studio
  • Codeblock
  • Jetbrains Clion
  • Dev-C++

在本课程实验考核中请不要使用任何IDE。

对于初学者,最好从简单的编辑器开始,逐步过渡到IDE;对于Lab中的轻量级开发,编辑器更快速、更灵活。

下文会带着大家通过分别安装编译器和编辑器来配置一个属于自己的开发环境。请大家根据自己的操作系统,选择相应章节阅读。在此之前,请点开这个链接领取对应因为网络原因可能无法正常下载的安装大礼包。

2. Windows 10/11

在这里我将使用Windows 11演示在Windows上配置开发环境,核心逻辑和操作也适用于Windows 10,只是一些操作有细微差别;如果你发现某样操作在你的Windows操作系统上无法复现,请使用关键词Windows X上如何xxx自行上网查询对应解决方案。

配置C语言编译器

在礼包中,请下载文件mingw.7z,并选择右键解压到你希望的路径(不要直接双击打开)。在这里我选择了C盘下的一个位置;请注意,你需要也解压到C盘,任何路径都是可以的。为了确保讲解时的统一性,我将会以$PATH$代称解压路径。解压好后,你的$PATH$路径下会多出一个名叫mingw64的文件夹。

请不要在任何路径中包含中文或空格,否则可能会导致后续配置失败。如果你的用户名中有中文或空格,请尽量避免将解压路径放在用户文件夹下或更改用户名。

>

完成这一步,我们的系统里已经有了C语言编译器gcc,它的位置在$PATH$\mingw64\bin\gcc

接下来我们要做的事是让你的操作系统和其他软件(例如接下来要安装的VS Code)自动找到编译器的位置,这一步是通过配置环境变量来进行的。

什么是环境变量?

这个问题交给大家去自行上网找到答案。

打开设置,选择系统设置->关于,选择高级系统设置

在新窗口中确定进入的是高级子菜单,选择环境变量

在新窗口中,双击变量下的Path栏(或单击选中Path后点击下面的编辑

在新的窗口中,选择右侧的新建,在新出现的蓝色条目的输入框内键入刚才以下内容:$PATH$\mingw64\bin

请注意:

  1. $PATH$替换为你自己的解压路径。
  2. 在这一步中,如果你的路径中(如你的用户名)含有空格或中文,可能会导致后续配置失败。
  3. 添加完成后,点击下方的确定退出本窗口,点击下方的确定再次退出窗口,忘记点确定会导致添加失败。

到了这一步编译器配置已经完成,我们可以通过以下操作来验证配置是否成功。在桌面键入Win+X,在跳出的菜单中选择,Windows PowerShell(也可以直接在搜索栏里搜索PowerShell,点击进入)

在跳出的黑色窗口中键入以下内容:gcc --version; gdb --version,请注意大小写,空格,以及使用英文半角分号,建议直接复制。

>

如果配置失败,输出信息会是一些红色错误信息;请重新阅读以上教程,及时寻求帮助。

安装VS Code

下载礼包中的VS Code安装包,VSCodeUserSetup.exe;双击下载好的安装包,按照提示进行安装。这里可以选择自己想要的安装配置,比如安装路径(建议还是不要有中文/空格),是否添加快捷方式等,如果有疑问请上网自行查询相关关键词。安装好后的界面如下:

3. Mac OS

配置C语言编译器

Mac OS上的编译器配置十分简单。

在桌面键入Command+Space,在搜索框内输入Terminal,选择终端软件。

在终端的窗口中,键入xcode-select --install, 注意大小写以及半角符,建议直接复制命令。因为我已经安装过,所以使用了别人的截图。

在跳出的窗口中连续选择确认安装;安装结束后,在终端窗口中键入clang --version,输出内容应如下(文本可能有细微差别):

安装VS Code

下载礼包中的VSCode.zip,下载完成后,将解压后的Visual Studio Code软件直接复制到访达(Finder)应用程序(Applications)栏即安装成功。

4. VS Code配置

以下内容参考和翻译了Microsoft VS Code官网的教程,非常建议大家去原网站阅读。接下来我将使用先前在Window 11上安装好的VS Code来展示如何配置并编写大家的第一个C语言程序,该操作过程同样适用于Mac OS,如遇到无法理解和解决的差别请自行上网查询或寻求帮助。

在VS Code的首页键入Ctrl+Shift+x (Windows)/Command+Shift+x (Mac OS),或者直接选择左侧栏中的插件(Extensions)选项。在搜索栏中键入C/C++搜索,点击选择第一项并安装。

在VS Code的首页键入Ctrl+Shift+p (Windows)/Command+Shift+p (Mac OS),在弹出的聊天框中输入settings.json在弹出的窗口中选择Preferences: Open User Settings (JSON)

在跳出的文件中(假设其中无其他配置信息),键入以下内容:

{
  "C_Cpp.default.compilerArgs": [
    "-Wall",
  ],
}

在这一步如果你打开的settings.json文件不为空白文件的话,说明你已经有了一些配置信息,不要删除原有的配置信息,只需要在原有的配置信息后面加上逗号,然后键入"C_Cpp.default.compilerArgs": ["-Wall",]即可。

在合适的路径下,创建一个新的文件夹命名为helloworld,在VS Code的首页点击打开文件夹在菜单中找到并点击打开文件夹/直接键入Ctrl+K Ctrl+O,找到并选择helloworld打开。

新建一个文件,命名为hello.c,将以下代码复制或键入:

#include <stdio.h>

int main() {
    printf("Hello World!\n");
    return 0;
}

这段代码将会在终端里输出一条话:Hello World!;为了输出这句话,我们需要编译运行本程序,点击右上角的三角形播放键旁的下拉键,在菜单中选择运行C/C++文件

在弹出的菜单中选择含有gcc.exe的选项

经历一段时间的延迟后,VS Code下方会先后跳出两个终端窗口;在第二个窗口中就能看到我们预期的那句Hello World!了,恭喜你,你已经成功运行了你的第一个C语言程序!

可以注意到在执行以上操作之后,左侧的文件浏览器中出现了一个叫.vscode的文件夹,和一个hello.exe的文件(如果你使用的是Mac OS,出现的文件可能叫hello);我将逐一解释

  • .vscode: 这是一个特殊的文件夹,用来存放 VS Code 在当前项目中的所有配置文件。其中包含一个名为 tasks.json 的重要文件。当你首次点击”运行程序”按钮时,VS Code 会自动生成这个文件。tasks.json 的作用是记录 VS Code 中”运行”按钮对应的任务脚本,也就是定义了如何编译和执行你的程序。
  • hello.exe: 这是本次编译产生的二进制可执行文件。

在成功运行第一个程序后,大家不妨思考以下问题:

  1. 点击运行键的背后发生了什么?VS Code做了什么?编译器做了什么?你可以试着通过阅读task.json来找到答案。
  2. 随着代码文件的增加,生成的可执行文件会和代码文件堆积在一起,非常的不美观;有什么办法能够优化这件事呢?我应该如何组织编程项目的文件结构呢?
  3. 如果你刚刚是手动键入的代码,你可能会注意到键入时会出现一些红色波浪线和错误提示。试着再次键入或者删除一些随机内容,阅读这些提示,它们的作用是什么?
  4. 为了提高编程效率,代码编辑器需要有什么功能?

为什么我们需要更好的工具?

作为助教,在过去两年检查实验的过程中,总有同学质疑:为什么我们不可以用Dev-C++?为什么要费劲力气去配置VS Code?你可能现在也在想,这只是一门编程课,我学会编程就够了,为什么我需要搞懂工具做了什么?为什么我需要去优化我的项目结构和编程工具?
为了回答这个问题,可以从两方面讨论:

  1. 在检查实验的过程中,每年都会有很多同学会因为不了解这些工具出现各种问题,诸如:忘记保存文件而导致反复运行结果与预期不符合、不会阅读提示信息导致纠错困难、不理解运行程序的脚本导致编译不通过、嵌套项目文件导致作业代码丢失等等;进而实验课无法当堂完成,造成分数损失。

  2. 学会“使用正确的工具做事情”,计算机的发明和使用就是为了向用户提供服务,对于你在工作和学习中的任何需求你都可以去想想,“有没有工具来帮我做这件事”;从熟悉编程环境开始,我希望大家能够开始思考、提出并尝试去解决自己的需求。

VS Code是一样非常强大的工具,除了基本的编写运行程序,提示错误信息,它还支持:更换字体和主题,程序自动格式化,调试运行代码和AI代写等功能,如果你有更多的需求,可以自行查找相关的推荐文章;如果大家对 VS Code 的进一步配置感兴趣,我也很乐意以后分享自己常用的插件和个人配置,希望能为大家未来的的开发和学习带来便利。