NOI Linux 2.0 使用指南 Code Blocks 手把手教会你

news/2024/12/21 21:54:02/

安装

NOI Linux 2.0 的镜像可以从 NOI 官网下载。(NOI Linux 2.0发布,将于9月1日起正式启用!)

可以采用 Virtual Box 或者 VMWare 来安装虚拟机(不建议安装实体机,如果想要尝试 Linux 环境,推荐使用 WSL 2.0,亦或用实体机安装 Ubuntu 发行版)。

编辑器

NOI Linux 提供了很多编辑器(没有 Dev C++  考试的时候也没网)。

建议使用Code::Blocks。下面详细介绍各个编辑器的利弊。

VS Code

作为编辑器的神,具有轻量级的优点。但是,因为系统自带的版本没有 C++ 插件,断网状态无法自行安装,考试时放弃,日常可以安装插件做练习。

Sublime Text

一样只有高亮不能补全。一个小亮点是配置 Task 的操作还算简单,然而并不推荐。

Vim

一个纯命令行的编辑器,以学习曲线陡峭而闻名,配置也较复杂,并不推荐使用。

当然,为了你 ssh 上服务器能改两行字,建议学习一下最基本的操作(i, esc, :wq, :q!)。也是很多大神编程的必备,装神可以学学。

Geany

一个轻量级 IDE。有部分补全,但是还是不够好用。

Code::Blocks(重点)

这是 NOI Linux 下最好用的一个编辑器。下文将介绍其功能以及一些配置。

首先,使用 Code::Blocks 时无需使用其 workspace 功能,只需打开一个一个单文件即可(使用 File->Open)。推荐将左边的 Management 窗口修改为 File,这样可以看到文件树(比赛的时候,就可以很方便的切换各个代码文件,打开样例等)。

Code::Blocks 的补全功能很完善,基本上都能补全。在下方可以看到一个 NativeParser,看到 Parsing Stage Done 之后就可以补全了。

使用自带的三个按钮分别进行编译/运行操作。会自动跳出一个终端(默认是 XTerm)。因为 XTerm 字实在是太小了,我们在设置了换成 Ubuntu 的自带终端。

然后就很正常了。

下一步是设置一些编译的开关。

点击 Settings->Compiler 即可进行设置。

一般来说,要打开的开关有

  • -std=c++14:规定 C++ 版本(竞赛使用 C++14)
  • -Wall:全部警告
  • -Wextra:额外警告
  • -Wshadow:警告局部变量覆盖
  • -O2:开启优化(竞赛是开启 O2 的)
  • -g:给 gdb 调试用(这个和 O2 不能一起开)

打开了开关后,在 Build Message 里就可以看到警告。比如说以下是一个很典型的错误,重定义了一遍全局变量。可以看到编译器确实发出了警告。

代码的编辑和调试

上文,我们介绍了 Code::Blocks 编译功能。然而在更多情况下,我喜欢直接使用命令行进行编译。

在一般情况下,你应该这么组织你的文件,最后提交的时候再把样例和可执行文件删除。

然后在 Code::Blocks 下就可以进行编码。注意 freopen。

在写代码时,前两行就是 freopen,并且后续不会删,也不会改,也不会注释。不要为了调试删除 freopen,请自行修改.in文件。

一个很常见的操作就是:编译、然后测试样例。可以使用 diff 实现。

我们用 && 连接语句。最终命令为:

1
2
3
4
g++ {FILE}.cpp -g -std=c++14 -Wall -Wextra -Wshadow -o {FILE} &&
cp {FILE}X.in {FILE}.in &&
time .\{FILE} &&
diff {FILE}X.ans {FILE}.out -Z

注意 diff 使用 -Z 代表忽略空格(下图未添加)。使用 time 计时。

可以看到,diff 没有任何输出,代表通过了样例。

如果要调试代码,使用 gdb。输入 gdb 可执行文件名

常用操作(本文不详述 gdb 使用):

  • b 行数/符号名:设置断点
  • r:开始运行
  • p 表达式:打印一次表达式
  • disp 表达式:一直显示表达式
  • u 行数:执行到某一行
  • n:下一步(不会进入函数)
  • s:下一步(会进入函数)

终端使用

你会发现,前面的操作都大量使用到了终端,我们来简要介绍一下 linux 下终端的使用。

终端命令

以下是一些常用的命令(不详述):

  • ls:列出目录
  • cd:切换目录
  • time 可执行文件:计时
  • cp 文件1 文件2:复制文件
  • diff 文件1 文件2:比较文件
  • mkdir:建立文件夹
  • rm:删除文件(我希望你不要把自己的代码删除了找不回来)
  • rmdir:删除文件夹
  • touch:创建文件,或更新修改日期
  • cat:输出某个文件的内容
  • head/tail:输出某个文件的前/后几行。
  • >,<,>>,2>:重定向(不作详细介绍,自行了解)

路径

Linux 下有一些路径的快速表示。路径使用正斜杠。

  • .:当前目录
  • ..:父目录
  • ~:用户主目录
  • -:上一个目录

终端快捷键

和 Windows 略有不同,望周知。

  • Tab:补全
  • :上一条命令
  • Ctrl+Shift+C:复制
  • Ctrl+Shift+V:粘贴
  • Ctrl+C:停止程序
  • Ctrl+Z: 将程序放入后台(并不是停止程序,在 Windows 下该键是输入 EOF),按错了可以直接关 terminal 或者用 fg 调回来。

http://www.ppmy.cn/news/1533627.html

相关文章

Java面向对象第二章方法与方法重载练习题

练习1&#xff1a;简易计算器 需求说明 实现简易计算器&#xff0c;分别实现两个整数、三个浮点数的加法运算 package dierzhang;import java.util.Scanner;public class LianxiCounter {public static void main(String[] args) {Scanner sc new Scanner(System.in);//读取…

《Windows PE》3.2.4节表

节表由多个节表项&#xff08;IMAGE_SECTION_ HEADER&#xff09;组成&#xff0c;每个节表项&#xff08;40个字节&#xff09;记录了 PE中与某个特定的节有关的信息&#xff0c;如节的属性、节 的大小、在文件和内存中的起始位置等。节表中节的数量由字段IMAGE_FILE_HEADER. …

光通信——PON技术

PON网络结构 PON&#xff08;Passive Optical Network&#xff0c;无源光网络&#xff09;系统的基本组成包括OLT&#xff08;Optical Line Terminal&#xff0c;光线路终端&#xff09;、ODN&#xff08;Optical Distribution Network&#xff0c;光分配单元&#xff09;和ON…

ubuntu 安装k8s

#关闭 Swap 内存&#xff0c;配置完成建议重启一下 nano /etc/fstab #注释下面相似的一行 #/swapfile none swap sw 0 0 #重启 reboot#部属k8s apt update && apt install -y apt-transport-https 下载 gpg 密钥 curl https://mi…

Spring Boot与模板方法模式:实现统一的日志处理流程

在Spring Boot应用程序中&#xff0c;使用模板方法模式来实现统一的日志处理流程是一种有效的方法。模板方法模式定义了一个操作中的算法骨架&#xff0c;而将一些步骤延迟到子类中。这样可以确保算法的结构保持不变&#xff0c;同时允许子类重定义某些步骤。 模板方法模式的基…

使用百度文心智能体创建多风格表情包设计助手

文章目录 一、智能定制&#xff0c;个性飞扬二、多元风格&#xff0c;创意无限 百度文心智能体平台为你开启。百度文心智能体平台&#xff0c;创建属于自己的智能体应用。百度文心智能体平台是百度旗下的智能AI平台&#xff0c;集成了先进的自然语言处理技术和人工智能技术&…

螺狮壳里做道场:老破机搭建的私人数据中心---Centos下Docker学习03(网络及IP规划)

3 网络及IP规划 3.1 容器连接网络初步规划 规划所有容器与虚拟机的三张网卡以macvlan的方式进行连接&#xff08;以后根据应用可以更改&#xff09;&#xff0c;在docker下创建nat、wifi、nei、wai四张网卡&#xff0c;他们和虚拟机及宿主机上NIC的相关连接参数如下表所示&am…

Vue3丨进一步了解这 20 个响应式 API,写码如有神

前面说的话 在 Vue2 中&#xff0c;个人觉得对于数据的操作比较 “黑盒” 。而 Vue3 把响应式系统更显式地暴露出来&#xff0c;使得我们对数据的操作有了更多的灵活性。所以&#xff0c;对于 Vue3 的几个响应式的 API &#xff0c;我们需要更加的理解掌握&#xff0c;才能在实…