学习C++编程的必备软件

1. 前言

这一课我们来做一些 C++ 开发前的准备工作。

2. 编程的必要工具

依你看,对编程来说,什么软件是必要的呢?

如果你认真学了上一课,那你至少可以说出一种吧。

对了,就是编译器。这个重要的程序可以把你的源代码(用高级语言如 C 语言写的指令)转换成电脑可以理解的二进制码(只包含 0 和 1 的,类似 01100110001111011101010... )。

上一课我们也提了一下,每种高级语言都有对应的编译器(当然对于 Python 这样的解释性语言,就不需要编译了),光是 C++ 语言的编译器就有很多。比较常用的有 G++( GNU C++ Compiler。GNU 是国际著名的自由软件基金会,GNU 是「GNU is Not Unix」 ( GNU 不是 Unix )的递归缩写法。老外总是那么顽皮,起名字也喜欢整一些编程的知识,比如 Linux 就是「Linux Is Not Unix」(Linux 不是 Unix)的递归。要不就用很多动物的名字或图标,特别好玩)。

除了编译器,我们还需要什么工具呢?

就不卖关子了,下面列出编程的基本工具:

文本编辑器 :用来写源代码的工具。理论上 Windows 操作系统的记事本或者 Linux 下的 VI 编辑器都可以作为文本编辑器来使用。但是,最好还是用一些更高级点的文本编辑器,比如可以支持代码高亮显示,方便你在代码间跳转等。个人非常推荐的文本编辑器是 Emacs,真的非常强,跨平台(苹果 Mac OS,Windows,Linux等),自由定制,各种快捷键组合,收发邮件,看视频,浏览网页,浏览 PDF,没有你做不到,只有想不到(略有夸张...),可以让你编辑代码非常高效。我之前使用的是 Vim,也是很不错的,但是后来用了 Emacs ( Emacs,最强编辑器,没有之一  本站下载地址:emacs),感觉还是更喜欢 Emacs一些。现在我两者都用。还有例如 Atom,Sublime,Notepad++ 也是挺好的,经过配置和安装一些插件,可以很强大。

编译器 :已经提过了,用来转换(或叫编译)你的源代码成为二进制码。

调试器 :Debugger,用来跟踪、发现程序里的错误的工具。这里出现一个新名词,调试(Debug)。bug 是英语臭虫,虫子的意思,de 在英语里是一个表示「分离,除掉」的前缀,所以 Debug 的意思就是除臭虫。一般把程序里的错误或者缺陷叫做 bug(臭虫),据说是因为传奇女程序员 Grace Hopper(格莱斯.霍普)有一次在 MARK II 计算机(就是那种早期的比较庞大的电脑)中发现了一只飞蛾,这只飞蛾导致了这台电脑死机(夹在电脑里的继电器之间),霍普用镊子把飞蛾夹出来,用透明胶布贴到笔记本上,并注明「第一个发现虫子(bug)的实例」。从此,人们就沿用了这个称呼,用debug表示排除程序错误的行为。现在霍普的笔记本,连同那只「呆萌」的飞蛾,陈列在美国历史博物馆里。


霍普的笔记本和光荣载入历史的飞蛾

当然,如果你有「冒险精神」,喜欢挑战,也可以不用调试器(通过一些小技巧也是可以自己找到错误所在的)。但是,我想一般来说你是会需要调试器的。

所以,我们就有两个选择了:

分开使用文本编辑器,编译器和调试器这三种工具。虽然复杂一些,但是也行得通。特别在 Linux 环境下,不少程序员还是喜欢用这种方式来编程,可能不是装,要的就是这个 feel,倍儿爽。

使用一种软件,这种软件集合了这三种工具的功能。这种软件被称为IDE(Integrated Development Environment,集成开发环境)。

一开始你可能会难以抉择,到底用哪种呢?即使选择了用 IDE,也会纠结到底用哪一个 IDE 好呢。

其实我们可以肯定的是:不论你选择哪种工具,你都可以编写你想要的程序。只是效率、个人习惯和特定平台要求不同罢了。

个人浅见:

如果刚接触 C++ 语言,尽量在 Linux 的命令行里学习 C++ 语言编程。一开始不要过分依赖 IDE。

因为 IDE 做得太好了,都有提示,代码自动补全,自动帮你添加代码,你就不能学到很多,也记不牢。等编程水平好了一些,再用 IDE 不迟,那个时候 IDE 可以提高你的编程效率。一开始用 Emacs 或者 Vim 编写 C++ 语言,用 G++ 编译 C++ 语言,用 GDB(GNU Debugger)调试 C++ 语言,是不错的选择。

当然了,我们还是会花比较多的篇幅介绍几个常用的 IDE。

3. 选择你的IDE

我们觉得有必要向大家展示几个最著名的 IDE,这几个都是免费的:

Code::Blocks :个人比较喜欢的一款 IDE,免费,开源,跨平台。在之后的课程里,我们会用 Code::Blocks 来做开发,因为 Code::Blocks 的开发环境搭建起来太快了,不需要什么配置。
可以运行在苹果 Mac OS,Windows,Linux 等大多数操作系统上

Visual Studio :基础版本是收费的。但是幸好有一个 Visual Studio Express 的版本是免费的。VS 功能很完备,而且调试器很强大。
只能运行在 Windows 操作系统上

Xcode :作为苹果的当家 IDE,不得不说 Xcode 真的做得太棒了。可以用来开发基本的小程序,也可以编写 iPhone 和 iPad 的 app(模拟器速度超快),和智能手表应用,还可以和其他如 Unity 3D 引擎配合来编写游戏。
只能运行在苹果 Mac OS X 操作系统上

Code::Blocks

Code::Blocks 是一款很不错的 IDE,不过目前只有英文版,当然网上也有汉化版本。不过既然学编程,就尽量把英语这关过了,也不需要太厉害的英语,基础就好。毕竟汉化版有的翻译不到位,可能会影响使用。而且好的编程资源基本都是英语的。

请参看我的 对于程序员, 为什么英语比数学更重要? 如何学习 一文。

下载Code::Blocks

先去 Code::Blocks 的官方下载页面:http://www.codeblocks.org/downloads/binaries

本站下载地址 code blocks

Windows 用户请下载 .exe 结尾的文件,请注意要下载名字里有 mingw 的那个(比如 codeblocks-16.01mingw-setup.exe ),因为如果没有 mingw 这几个字母的版本不包含编译器,就会很麻烦。

Linux 用户请下载对应你的操作系统的版本。

苹果 Mac 用户请下载 CodeBlocks-13.12-mac.zip 。

安装运行Code::Blocks

Code::Blocks 的安装太简单了,就跟安装 QQ 没什么区别,一路默认到底就好。

安装完之后双击运行,你可以看到如下图的界面:

上图中标注了四个区域:

工具栏:有很多按钮,但只有几个是真正我们时常用到的。

项目文件列表区:左边的栏里面显示了你的项目的所有文件

主界面:写代码的地方

通知栏:会看到运行的错误,编译的问题等等

如何来创建一个 C++ 语言的基本的控制台应用程序呢?

首先到菜单里,File -> New -> Project,会打开如下的窗口:

可以看到,Code::Blocks 支持非常多的程序类型,这些程序类型用到不同的库,比如 SDL(开发 2D 程序),OpenGL(开发 3D 程序),Qt 和 wxWidgets,等等。

目前,这些图标很多都只是好看而已,因为你还没安装对应的库,所有不能用。暂时我们只用最基本的 Console application(控制台应用,简单来说就是会弹出一个框,里面显示程序运行的结果)。

选择 Console application,点击 Go 按钮到下一步:

「Project Title」里面填写你要创建的项目名称,我们填的是著名的 HelloWorld。「Folder to create project in」 是选择项目存放的路径。

点击 Next 到下一步:

这里我们不必更改什么,默认就好。点击 Finish(完成)结束配置,Code::Blocks 就会创建你的第一个项目了。

Visual Studio

下载 Visual Studio Express,去官方下载页面 http://www.visualstudio.com/products/visual-studio-express-vs

选择适合你的操作系统的版本来下载。

本站下载地址 visual studio 2013

因为小编是在苹果电脑上编辑文章的,所以就不多做演示了。请大家去参考网上的安装和使用图文教程。

安装完运行后应该是与 Code::Blocks 类似的布局:

Xcode

Mac OS 操作系统里有不少 IDE,但是 Xcode 却是广大苹果用户的最爱。

不是所有的苹果用户都是程序员,所以苹果没有在 Mac OS 系统里预装 Xcode,你需要到 Mac App Store(应用商店)下载 Xcode(需要有苹果账户,没有可以注册一个)。

安装很方便,只要去 App Store 搜索 Xcode,然后点击 Install(安装),就安装到应用程序里了。将 Xcode 运行起来:

然后选择 Create a new Xcode project(创建一个新的 Xcode 项目),会弹出如下窗口:

选择 OS X -> Application -> Command Line Tool,点击 Next 到下一步:

Project Name 里填写项目名称,我们填了 HelloWorld。Language(语言)选择 C++ 语言,点 Next 下一步,会让你选择项目文件夹的存放路径,随便选择。然后点击 Finish 完成。

项目打开之后,点击 三角形 按钮,运行,可以看到输出了「Hello World!」:

4. 总结

一个程序要从开始编写到能够运行,一般来说需要三种工具:文本编辑器,编译器,调试器(当然对于 Python 这样的解释性语言,就不需要编译了)。

我们可以分开使用这三种工具来完成任务。但是比较方便的是使用 IDE(集成开发环境,混合了这三者)来开发。

Code::Blocks,Visual Studio(或 Visual C++),Xcode 是著名的 IDE,当然还有很多优秀的 IDE(例如 Eclipse),就不一一介绍了。IDE 只是工具。

5. 第一部分第三课预告

今天的课就到这里,一起加油吧!

(0)

相关推荐

  • C++ 实现求最大公约数和最小公倍数

    C++ 实现求最大公约数和最小公倍数 最大公约数 辗转相除法: int maxDivisor(int a, int b) { int c = b; while (a%b != 0) { c = a%b; a = b; b = c; } return c; } 辗转相减法: int maxDivisor(int a, int b) { while (a != b) { if (a>b) a = a - b; else b = b - a; } return a; } 感谢阅读,希望能帮助到大家,谢

  • C++实现单链表按k值重新排序的方法

    本文实例讲述了C++实现单链表按k值重新排序的方法.分享给大家供大家参考,具体如下: 题目要求: 给定一链表头节点,节点值类型是整型. 现给一整数k,根据k将链表排序为小于k,等于k,大于k的一个链表. 对某部分内的节点顺序不做要求. 算法思路分析及代码(C) 思路:将链表分为小于k.等于k.大于k的三个链表,然后再合并. 链表结点定义: typedef struct Node { int data; struct Node* next; }node, *pNode; 算法代码: pNode s

  • C++二维数组中的查找算法示例

    本文实例讲述了C++二维数组中的查找算法.分享给大家供大家参考,具体如下: 一.问题: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 二.实现代码: #include <iostream> #include <vector> using namespace std; bool Find(int target, vector<vector<int>

  • C++ 实例之九宫格广度优先遍历

    C++ 实例之九宫格广度优先遍历 基本思路: 广度优先遍历,每次找到1的位置,分别向上.向下.向左.向右移动.把移动后的每个状态存储到队列中,弹出队头,判断是否为最终结果状态,如果是,输出遍历的层数(即移动步数),如果不是,把现阶段状态继续执行找到1向上向下向左向右移动操作. #include<stdio.h> typedef struct MyType { int number[3][3];int level; }MyType; MyType queue[10000]; MyType Get

  • C++实现 单例模式实例详解

    设计模式之单例模式C++实现 一.经典实现(非线程安全) class Singleton { public: static Singleton* getInstance(); protected: Singleton(){} private: static Singleton *p; }; Singleton* Singleton::p = NULL; Singleton* Singleton::getInstance() { if (NULL == p) p = new Singleton()

  • C++数据结构与算法之判断一个链表是否为回文结构的方法

    本文实例讲述了C++判断一个链表是否为回文结构的方法.分享给大家供大家参考,具体如下: 题目: 给定一个链表头节点head,请判断是否为回文结构 例如: 1->2->1 true 1->2->2->1 true 1->2->3->4->2->1 false 解题思路及代码 1.找到链表中间节点,然后将链表中间节点的右边所有节点放入一个栈中. 2.然后从链表首节点和栈顶元素一一对比,不相等则return false. 算法C++代码: 链表节点结构

  • C++中指针指向二维数组实例详解

    C++中指针指向二维数组实例详解 一维指针通常用指针表示,其指向的地址是数组第一元素所在的内存地址,如下 int ary[4][5]; int(*aryp)[5] = ary; 那么ary[4]相当于int(*aryp),以下理解如此,但参数传递需要知道实参所在 的一维个数,所以传递的时候应该传递多一个参数,子数组的引用可以理解 为(*p),那么取元素就是(*p)[i],如下 void printVal(int(*aryp)[5],int irowCount){ for (int(*p)[5]

  • 学习C++编程的必备软件

    1. 前言 这一课我们来做一些 C++ 开发前的准备工作. 2. 编程的必要工具 依你看,对编程来说,什么软件是必要的呢? 如果你认真学了上一课,那你至少可以说出一种吧. 对了,就是编译器.这个重要的程序可以把你的源代码(用高级语言如 C 语言写的指令)转换成电脑可以理解的二进制码(只包含 0 和 1 的,类似 01100110001111011101010... ). 上一课我们也提了一下,每种高级语言都有对应的编译器(当然对于 Python 这样的解释性语言,就不需要编译了),光是 C++

  • 如何教少儿学习Python编程

    如何给少儿讲编程? 1.首先给少儿讲编程一定要简单,通俗易懂. 因为少儿接触的事务比较少,你要用形象的少儿可以接受的方式让他们理解. 2.讲编程的速度一定要慢. 因为少儿的接受能力相对较弱一些,所以要适当调慢步骤. 3.讲编程一定要少儿亲手实践. 因为编程本来就是抽象的事物,如果不进行练习的话,少儿不能很好理解抽象的事物. 4.一定要多复习. 少儿的自觉力差些,课上一定要先复习再讲新的知识. 知识点扩展: 我们需要明确,给孩子上编程课的目的是什么 我想,对于中小学年龄段的孩子,编程课的主要目的应

  • python 19个值得学习的编程技巧

    Python最大的优点之一就是语法简洁,好的代码就像伪代码一样,干净.整洁.一目了然.要写出 Pythonic(优雅的.地道的.整洁的)代码,需要多看多学大牛们写的代码,github 上有很多非常优秀的源代码值得阅读,比如:requests.flask.tornado,下面列举一些常见的Pythonic写法. 0. 程序必须先让人读懂,然后才能让计算机执行. "Programs must be written for people to read, and only incidentally f

  • Python深度学习之图像标签标注软件labelme详解

    前言 labelme是一个非常好用的免费的标注软件,博主看了很多其他的博客,有的直接是翻译稿,有的不全面.对于新手入门还是有点困难.因此,本文的主要是详细介绍labelme该如何使用. 一.labelme是什么? labelme是图形图像注释工具,它是用Python编写的,并将Qt用于其图形界面.说直白点,它是有界面的, 像软件一样,可以交互,但是它又是由命令行启动的,比软件的使用稍微麻烦点.其界面如下图: 它的功能很多,包括: 对图像进行多边形,矩形,圆形,多段线,线段,点形式的标注(可用于目

  • 学习GO编程必备知识汇总

    如果你想开始学习GO语法前,请先背熟下述4点: 1. 环境变量: 使用go env查看环境变量 GOARCH/GOHOSTARCH: 体系架构, amd64或386 GOOS/GOHOSTOS: 操作系统, linux或windows GOROOT: GO安装目录 GOBIN: GO程序目录 GOTOOLDIR: GO工具目录 CGO_ENABLED: 是否启用CGO CC CXX GOGCCFLAGS GORACE: 数据同步检测, 配合go test, go run, go build, g

  • 深入学习Java编程中的字符串的进阶使用

    JAVA虽然是在C++基础上发展而来,但却对C++的许多缺陷有所改进,其中一个不得不提的就是字符串,我们知道,随着学习的深入,进入MFC时,当处理字符串或字符时,常会需要通过_T()宏将字符或字符串变成UNICODE型,否则,会在处理中出现BUG,而在JAVA中,字符char或存储在Character类中的字符,不是一个字节,而是2个字节,采用UNICODE,这是为了支持全世界上的所有字符. 字符的序列组成字符串,有两种类型的字符串:一种是创建以后不需要修改的,称为字符串常量,在JAVA中,用S

  • 使用EduBlock轻松学习Python编程

    如果你正在寻找一种方法将你的学生(或你自己)从使用 Scratch 编程转移到学习 Python,我建议你了解一下 EduBlocks.它为 Python 3 编程带来了熟悉的拖放式图形用户界面(GUI). 从 Scratch 过渡到 Python 的一个障碍是缺少拖放式 GUI,而正是这种拖放式 GUI 使得 Scratch 成为 K-12 学校的应用程序.EduBlocks 的拖放版的 Python 3 改变了这种范式.它的目的是"帮助教师在较早的时候向儿童介绍基于文本的编程语言,如 Pyt

  • 修改flash之必备软件硕思闪客精灵3.3注册破解版下载

    硕思闪客精灵 MX 是一款用于浏览和解析Flash动画(.swf文件和.exe文件)的工具.它能够将flash动画中的图片.矢量图.字体.文字.按钮.影片片段.帧等基本元素完全分解,还可以对flash影片动作的脚本(Action Script)进行解析,清楚的显示其动作的代码,让您对Flash动画的构造一目了然,其MX最新版本能更好的支持Flash MX. 因版权问题停止下载

  • Java软件编程培训机构靠谱吗

    随着网络信息化的快速发展,Java培训受到越来越多人的青睐,目前Java工程师的薪资水平在不断攀升,可是企业为什么还招不到人呢?归根结底还是因为现在大学毕业的计算机学生并没有在学校学习到实用的技术,毕业工作试用期用完以后根本不能达到企业的用人标准.尤其是知名企业,虽然需要人才,但肯定不会找一些水平很差的员工. 因此,参加Java培训将成为能够快速掌握Java技术的一个捷径,可是面对这么多水平参差不齐的Java培训学校,我们该如何选择呢?为此小编来分析一下,怎样选择才能找到一个靠谱的培训学校吧.

  • 深入学习C#网络编程之HTTP应用编程(上)

    我们学习网络编程最熟悉的莫过于Http,好,我们就从Http入手,首先我们肯定要了解一下http的基本原理和作为,对http的工作原理有 一定程度的掌握,对我们下面的学习都是有很大帮助的. 一: 工作方式 ①:client和server建立可靠的TCP连接. ②:然后client通过Socket向server发送http请求. ③:server端处理请求,返回处理数据. ④:在http1.0中,client与server之间的tcp连接立即断开. 但在http1.1中,因为默认支持"tcp的长连

随机推荐