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

安装

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.xdnf.cn/news/1553274.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

十六字心传

中国文化传统中著名的“十六字心传”&#xff1a;“人心惟危&#xff0c;道心惟微&#xff1b;惟精惟一&#xff0c;允执厥中。 ”语出于《虞书大禹谟》。 人心与道心&#xff1a;人的人欲与天理的区别&#xff1b;所谓“人心惟危”&#xff0c;即是说人们的那种物欲情欲&…

ubuntu 18.04 cuda 11.01 gpgpu-sim 裸机编译

1&#xff0c;环境 ubuntu 18.04 x86_64 cuda 11.01 gpgpu-sim master commit 90ec3399763d7c8512cfe7dc193473086c38ca38 2&#xff0c;预备环境 一个比较新的 ubuntu 18.04&#xff0c;为了迎合 cuda 11.01 的版本需求 安装如下软件&#xff1a; sudo apt-get instal…

Vue3 proxy跨域代理

一、跨域问题 假设vue项目的运行地址为&#xff1a;http://localhost:5173&#xff0c;此时我们想要调用后端服务的rest api&#xff0c;而后端接口暴露的地址为&#xff1a;https://192.168.1.1:8080/user。 可以发现前端服务与后端服务的域名是不同的&#xff0c;默认情况下…

MySQL 中变量的使用指南

一、引言 在 MySQL 数据库中&#xff0c;变量可以帮助我们更灵活地处理数据和执行查询。变量可以存储各种类型的值&#xff0c;并且可以在 SQL 语句中进行引用和操作。本文将介绍如何在 MySQL 中使用变量&#xff0c;包括用户定义变量和系统变量&#xff0c;并分享一些实际案例…

体验鸿蒙开发第一课

Index.ets: // 导入页面路由模块 import router from ohos.router; Entry Component struct Index {State message: string 我是没头脑build() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold) // 添加一个按钮Button() {Text("Open Pa…

Redis中一些其他的数据类型渐进式遍历

我们之前说了redis中的五个类型 分别是&#xff1a;String List Hash Set ZSet&#xff0c;那除了这五个redis文档中还给我们提供了一些其他的数据类型 &#xff08;一&#xff09;一些其他的数据类型 1.stream 这里的数据类型我们只做简单的一些介绍&#xff0c;如果想了解具体…

探索未来:掌握python-can库,开启AI通信新纪元

文章目录 **探索未来&#xff1a;掌握python-can库&#xff0c;开启AI通信新纪元**背景介绍**python-can**库简介安装指南函数使用示例应用场景常见问题及解决方案总结 探索未来&#xff1a;掌握python-can库&#xff0c;开启AI通信新纪元 背景介绍 在人工智能和物联网的飞速…

鸢尾花书实践和知识记录[数学要素3-3几何]

书的作者 文章目录 思维导图使用到的函数几何的介绍&#xff08;略&#xff09;点线面和定义欧几里得几何原本的公理正多边形代码&#xff1a;如何绘制正多边形 三维的几何体柏拉图立体几何变换 角度和弧度角度弧度正负角&#xff08;相位&#xff09;三个角 勾股定理到三角函…

算法笔记(五)——分治

文章目录 算法笔记&#xff08;五&#xff09;——分治快排颜色分类排序数组数组中的第K个最大元素库存管理 III 归并排序数组交易逆序对的总数计算右侧小于当前元素的个数翻转对 算法笔记&#xff08;五&#xff09;——分治 分治算法字面上的解释是“分而治之”&#xff0c;就…

绘制随k变化的等熵面积比公式

xmax 4; Ma 0.1:0.05:xmax; figure; hold on; xlim([0,xmax]); ylim([0,10]);% 预定义k值的向量 k_values 1.2:0.1:1.4;% 创建一个细胞数组来存储图例标签 legendStrings cell(1, length(k_values));% 绘制每条曲线并记录图例标签 lines []; for idx 1:length(k_values)k…

LabVIEW自动生成NI-DAQmx代码

在现代数据采集和控制系统中&#xff0c;LabVIEW被广泛应用于各种工业和科研领域。其中&#xff0c;NI-DAQmx是一个强大的驱动程序&#xff0c;可以帮助用户高效地管理和配置数据采集任务。本文将介绍如何在LabVIEW中通过DAQ Assistant Express VI和任务常量自动生成NI-DAQmx代…

【leetcode】 45.跳跃游戏 ||

如果我们「贪心」地进行正向查找&#xff0c;每次找到可到达的最远位置&#xff0c;就可以在线性时间内得到最少的跳跃次数。 例如&#xff0c;对于数组 [2,3,1,2,4,2,3]&#xff0c;初始位置是下标 0&#xff0c;从下标 0 出发&#xff0c;最远可到达下标 2。下标 0 可到达的…

2024最新的软件测试面试大全(含答案+文档)

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、软件测试基础面试题 1、阐述软件生命周期都有哪些阶段? 常见的软件生命周期模型有哪些? 软件生命周期是指一个计算机软件从功能确定设计&#xff0c;到…

【YOLO目标检测行人与车数据集】共5607张、已标注txt格式、有训练好的yolov5的模型

目录 说明图片示例 说明 数据集格式&#xff1a;YOLO格式 图片数量&#xff1a;5607 标注数量(txt文件个数)&#xff1a;5607 标注类别数&#xff1a;2 标注类别名称&#xff1a;person、car 数据集下载&#xff1a;行人与车数据集 图片示例 数据集图片&#xff1a; …

JAVA基础语法 Day11

一、Set集合 Set特点&#xff1a;无序&#xff08;添加数据的顺序和获取出的数据顺序不一致&#xff09;&#xff0c;不重复&#xff0c;无索引 public class demo1 {public static void main(String[] args) {//1.创建一个集合//HashSet特点&#xff1a;无序&#xff0c;不重…

Linux高级编程_27_系统调用

文章目录 系统调用函数分类系统编程概述系统调用概述**类UNIX系统的软件层次** 用户态和内核态系统调用与库函数的关系文件操作符概述文件磁盘权限 系统调用之文件操作open:打开文件close:关闭文件write:写入read:读取 文件状态fcntl 函数stat 函数 st_mode的值示例 1&#xff…

synchronized底层是怎么通过monitor进行加锁的?

一、monitor是什么 monitor叫做对象监视器、也叫作监视器锁&#xff0c;JVM规定了每一个java对象都有一个monitor对象与之对应&#xff0c;这monitor是JVM帮我们创建的&#xff0c;在底层使用C实现的。 ObjectMonitor() {_header;_count ; // 非常重要&#xff0c;表示锁计数…

【论文速看】DL最新进展20241002-自动驾驶、自监督学习、扩散模型、多模态与图像分割

目录 【自动驾驶】【自监督学习】【扩散模型】【多模态与图像分割】 【自动驾驶】 [轨迹预测] CASPFormer: Trajectory Prediction from BEV Images with Deformable Attention 论文链接&#xff1a;https://arxiv.org/pdf/2409.17790 代码链接&#xff1a;无 运动预测是自动…

基于深度学习的乳腺癌分类识别与诊断系统

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目简介 乳腺癌是全球最常见的癌症之一&#xff0c;早期诊断对于治疗效果至关重要。近年来&#xff0c;深度学习技术在医学图像分析领域取得了显著进展&#xff0c;能够从大量的医学影像数据中自动学习和提…

[动态规划] 二叉树中的最大路径和##树形DP#DFS

标题&#xff1a;[动态规划] 二叉树中的最大路径和##树形DP#DFS 个人主页水墨不写bug &#xff08;图片来源于网络&#xff09; 目录 一 、什么是树形DP 二、题目描述&#xff08;点击题目转跳至题目&#xff09; NC6 二叉树中的最大路径和 算法思路&#xff1a; 讲解与参考代…