内容简介

1、课程大纲

2、第一部分第二课:工欲善其事,必先利其器

3、第一部分第三课预告:你的第一个程序

课程大纲

我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案。还会带大家用C语言编写三个游戏。

C语言编程基础知识

  • 什么是编程?

  • 工欲善其事,必先利其器

  • 你的第一个程序

  • 变量的世界

  • 运算符

  • 条件表达式

  • 循环语句

  • 实战:第一个C语言小游戏

  • 函数

  • 练习题

  • 习作:完善第一个C语言小游戏

C语言高级技术

  • 模块化编程

  • 进击的指针,C语言王牌

  • 数组

  • 字符串

  • 预处理

  • 创建你自己的变量类型

  • 文件读写

  • 动态分配

  • 实战:“悬挂小人”游戏

  • 安全的文本输入

  • 练习题

  • 习作:用自己的语言解释指针

用基于C语言的SDL库开发2D游戏

  • 安装SDL

  • 创建窗口和画布

  • 显示图像

  • 事件处理

  • 实战:“超级玛丽推箱子”游戏

  • 掌握时间的使用

  • 用SDL_ttf编辑文字

  • 用FMOD控制声音

  • 实战:可视化的声音谱线

  • 练习题

数据结构

  • 链表

  • 堆,栈和队列

  • 哈希表

  • 练习题

第一部分第二课:工欲善其事,必先利其器

昨天的课,反响比较好,超乎了我的想象。激动,很感恩。

昨天说了程序员需要具备三个特质:

耐心,逻辑,冷静。

我突然感觉到还需要第四大特质---谦虚,相当重要。因为你只会发现你越学习越觉得不足,外面的世界太大了,编程的前辈和大牛太多,新技术永远比你学习速度快地涌现,所以永远保持一颗初心,不得瑟。

凡事多感恩,一方面感谢帮助过我们的人,也感谢给我们逆耳忠言的人,也要感谢陪伴我们的电脑和开源社区等。

其实,我一直觉得程序员是一个不错的职业,虽然可能程序员有不少职业病,例如话少,宅,呆萌,害羞等,

但是程序员比较单纯,这是跟与我们朝夕相伴的电脑分不开的。因为机器不会说假话,1就是1,0就是0,绝对忠诚,高效和不变心(芯)。所以,和机器长期打交道之后的程序员也变得不是那么有心机,感觉萌萌哒。

之前网上有一篇文章,说找程序员做男女朋友的好处,挺有意思。

跟公司里几个同事相处下来也发现,程序员真的都很有趣,很可爱,很童真。

只是在国内程序员还不是太被重视,但我相信随着中国的强大,会改观的。

好了言归正传。在上一课《什么是编程》后,这一课我们就正式进入C语言编程的正题了。

这一课我们回答以下问题:

我们需要什么软件来编程呢?

这一课大家可以很轻松地度过,因为没有什么难点。我们会花点时间来认识一些常用的编程软件。

应该好好享受这一课,因为下一课开始我们就要一起写程序了,所以该喝咖啡的喝咖啡,该吃烤鸡的吃烤鸡,休息好了,才能上阵。



编程的必要工具

依你看,什么软件对编程来说是必要的呢?如果你认真学了上一课,那你至少可以说出一种吧。

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

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

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

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

  • 文本编辑器:用来写源代码的工具。理论上Windows操作系统的记事本或者Linux下的VI编辑器都可以作为文本编辑器来使用。但是,最好还是用一些更高级点的文本编辑器,比如可以支持代码高亮显示,方便你在代码间跳转等。个人非常推荐的文本编辑器是Emacs,真的非常强,跨平台(苹果Mac,Windows,Linux等),自由定制,各种快捷键组合,收发邮件,看视频,浏览网页,浏览PDF,没有你做不到,只有想不到(略有夸张...),可以让你编辑代码非常高效。我之前使用的是VIM,也是很不错的,但是后来用了Emacs,感觉还是更喜欢Emacs一些。当然这见仁见智。还有一个文本编辑器: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语言,用GCC编译C语言,用GDB(GNU Debugger)调试C语言,是不错的选择。

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

选择你的IDE



我们觉得有必要向大家展示几个最著名的IDE,这几个都是免费的(只买对的,不选贵的)

  • Code::Blocks:个人比较喜欢的一款IDE,免费,开源,跨平台。在之后的课程里,我们会用Code::Blocks来做开发,因为Code::Blocks的开发环境搭建起来太快了,不需要什么配置。

    可以运行在苹果Mac,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

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

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

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

安装运行Code::Blocks

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

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

上图中标注了四个区域:

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

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

  3. 主界面:写代码的地方

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

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

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

可以看到,Code::Blocks支持非常多的程序类型,这些程序类型用到不同的库,比如SDL(开发2D程序),OpenGL(开发3D程序),Qt和wxWidgets,等等。目前,这些图标很多都只是好看而已,因为你还没安装对应的库,所有不能用。我们会在后续课程开发基于SDL库的游戏。暂时我们只用最基本的Console application(控制台应用,简单来说就是会弹出一个框,里面显示程序运行的结果)。

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

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

点击Next到下一步,

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

打开Sources里的main.c这个C语言的源代码文件,点击上面工具栏里有一个绿色的三角形按钮,运行程序,它会提示你是否要编译,点击“yes”,运行起来后我们的第一个控制台程序输出 Hello World!

Visual Studio

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

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

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

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

Xcode

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

不是所有的苹果用户都是程序员,所以苹果没有在Mac系统里预装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!

总结一下

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

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

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

第一部分第三课预告:你的第一个程序

今天的课就到这里,一起加油吧。下一课一起来写我们的第一个C语言的程序咯。



程序员联盟
微信公众号*您若觉得本文不错,请点击“分享”

*新朋友请关注「程序员联盟」微信搜公众号
 ProgrammerLeague

小编的微信号:

frogoscar

小编的邮箱:    enmingx@gmail.com

“程序员联盟”公众号专为程序员,App设计师,各位喜爱编程和热爱分享的小伙伴们推送各样编程相关知识,优秀软件推荐,业界动态等。搜索

ProgrammerLeague 加关注~

持续关注 程序员联盟 微信公众号,更多有趣,有料,有亮点的内容等着你哦!

【C语言探索之旅】 第二课:工欲善其事,必先利其器的更多相关文章

  1. 【C语言探索之旅】 第二部分第二课:进击的指针,C语言的王牌!

    内容简介 1.课程大纲 2.第二部分第二课: 进击的指针,C语言的王牌 3.第二部分第三课预告: 数组 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言 ...

  2. 【C语言探索之旅】 第三部分第二课:SDL开发游戏之创建窗口和画布

    内容简介 1.第三部分第二课: SDL开发游戏之创建窗口和画布 2.第三部分第三课预告: SDL开发游戏之显示图像 第三部分第二课:SDL开发游戏之创建窗口和画布 在上一课中,我们对SDL这个开源库做 ...

  3. 【C语言探索之旅】 第一部分第九课:函数

    内容简介 1.课程大纲 2.第一部分第九课:函数 3.第一部分第十课预告: 练习题+习作 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. ...

  4. 【C语言探索之旅】 第二部分第一课:模块化编程

    内容简介 1.课程大纲 2.第二部分第一课: 模块化编程 3.第二部分第二课预告: 进击的指针,C语言王牌 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C ...

  5. 【C语言探索之旅】 第一部分第十课:练习题+习作

    内容简介 1.课程大纲 2.第一部分第十课: 练习题+习作 3.第二部分第一课预告: 模块化编程 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三 ...

  6. 【C语言探索之旅】 开宗明义及第一课:什么是编程?

    内容简介 1.课程大纲 2.第一部分第一课:什么是编程? 3.第一部分第二课预告:工欲善其事,必先利其器 ​ 课程大纲 不知道为什么,一直对C语言有一种很深厚的“情怀”(类似老罗对锤子手机的那种),说 ...

  7. 【C语言探索之旅】 第三部分第一课:SDL开发游戏之安装SDL

    内容简介 1.课程大纲 2.第三部分第一课: SDL开发游戏之安装SDL 3.第三部分第二课预告: SDL开发游戏之创建窗口和画布 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会 ...

  8. 【C语言探索之旅】 第一部分第七课:循环语句

    内容简介 1.课程大纲 2.第一部分第七课: 循环语句 3.第一部分第八课预告: 第一个C语言小游戏 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编 ...

  9. 【C语言探索之旅】 第二部分第十课:练习题和习作

    内容简介 1.课程大纲 2.第二部分第十一课:  练习题和习作 3.第三部分第一课预告:  安装SDL 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言 ...

随机推荐

  1. Java EE (13) -- 常用的基础结构模式

    • Replication    • Load balance     • Failover    • Off-load shared resources    • Forward cache • R ...

  2. iText操作word文档总结

    操作word文档的工具有很多,除了iText之外还有POI,但是POI擅长的功能是操作excel,虽然也可以操作word,但是能力有限,而且还有很多的bug,技术并不成熟,下面就重点介绍一种操作wor ...

  3. viewpager与子view的事件冲突解决

    问题: 对android的事件机制一直不怎么了解,最近android项目中运用viewpager+listview (就是viewpager的子view中嵌套了listview),出现了触摸手势冲突 ...

  4. lightoj1027(期望dp)

    有一个迷宫,有n个门,走每个的概率都是相同的 每个门有一个数字,如果是正数ai,那么表示走ai天就能走出迷宫,如果是负数,那么走-ai天会回到原地,然后会忘记之前的事情,继续选择门去走 所以,如果都是 ...

  5. 初窥Linux 之 文件权限

    一.用户与用户组 为了更好地理解文件权限,我们需要先有用户和用户组的概念.因为在Linux里面,任何一个文件都具有“User(用户).Group(用户组)及Others(其他用户)”3种身份的个别权限 ...

  6. 【译】手动处理Team Foundation Server 2010 数据仓库和分析服务数据库

    原贴地址:Manually Processing the Team Foundation Server 2010 Data Warehouse and Analysis Services Databa ...

  7. Python3.4 邮件(包含附件与中国)

    import smtplib import os from email.mime.text import MIMEText from email.mime.multipart import MIMEM ...

  8. (算法入门经典大赛 优先级队列)LA 3135(之前K说明)

    A data stream is a real-time, continuous, ordered sequence of items. Some examples include sensor da ...

  9. 重新想象 Windows 8 Store Apps (7) - 控件之布局控件: Canvas, Grid, StackPanel, VirtualizingStackPanel, WrapGrid, VariableSizedWrapGrid

    原文:重新想象 Windows 8 Store Apps (7) - 控件之布局控件: Canvas, Grid, StackPanel, VirtualizingStackPanel, WrapGr ...

  10. 深度分析 Java 的 ClassLoader 机制(源码级别)(转)

    写在前面:Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的,类装载器所做的工作实质是把类文件从硬盘读取到内存中,JVM在加载类的时候,都是通过ClassLoa ...