内容简介

1、课程大纲

2、第一部分第三课:你的第一个程序

3、第一部分第四课预告:变量的世界

课程大纲

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

C语言编程基础知识

  • 什么是编程?

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

  • 你的第一个程序

  • 变量的世界

  • 运算符

  • 条件表达式

  • 循环语句

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

  • 函数

  • 练习题

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

C语言高级技术

  • 模块化编程

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

  • 数组

  • 字符串

  • 预处理

  • 创建你自己的变量类型

  • 文件读写

  • 动态分配

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

  • 安全的文本输入

  • 练习题

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

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

  • 安装SDL

  • 创建窗口和画布

  • 显示图像

  • 事件处理

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

  • 掌握时间的使用

  • 用SDL_ttf编辑文字

  • 用FMOD控制声音

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

  • 练习题

数据结构

  • 链表

  • 堆,栈和队列

  • 哈希表

  • 练习题

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

经过前两次课《什么是编程》和《工欲善其事,必先利其器》,我们已经把舞台搭好了,这一课,是时候把我们的主角C语言请出来了。

在这一课中,我们将一起来写第一个程序。

当然了, 这个程序会是黑白的,也不会跟你打招呼,更不会帮你泡咖啡。可能显得毫无用处,但却是你的第一个程序,我保证你会有成就感的。

控制台程序还是窗口程序

上一课中,我们在Code::Blocks这个IDE中看到,当你要创建一个项目时,IDE会问你是创建console(控制台)程序还是window(窗口)程序。

上一课中为了快速演示,我们选择的是控制台程序。

其实只有这两种类型,没有其他的了:

  • 窗口程序

  • 控制台程序

先来介绍一下窗口程序,因为比较直观,比较漂亮,颜值爆表。

这样的程序你肯定见到过,下图对大多数人来说很熟悉吧。

是的,这是Windows系统的画图程序,它是一个窗口程序,就是有窗口的程序(有时候不止一个窗口)。我想你肯定想学习创建这样的程序,但是如果你是第一次接触编程,那有点难。

一开始还是最好从console(控制台)程序入门。

那么,所谓的控制台程序长什么样呢?

最初的程序都是控制台程序,因为那个年代电脑还只能显示黑白色,而且也没有强大到可以运行窗口程序,不像今天的电脑。

当然了,时代在进步。Microsoft(微软)公司的Windows系统使得电脑能被广大群众使用,就是因为它操作很简单,几乎所有操作都可以用窗口程序完成。Windows实在是太流行,以至于大多数人都不知道console(控制台)程序长什么样。我有一个好消息:控制台程序并没有死!

实际上,Linux给很多的人展示了控制台程序的魅力,下图就是Linux系统下的控制台程序的截图

看上去还不错,是吗?好了,现在你已经对控制台程序有了初步概念了。

有一些注意点:

  1. 今天电脑已经可以显示彩色了,所以上面看到的控制台也不是完全黑白的了

  2. 对于初学编程的人来说,控制台还是令人不太适应的

  3. 如果我们掌握了这个工具,可以用它来做很多事情

就如我们上面提到的,创建像上图中的控制台程序,其实很简单,而且非常适合初学者。

现在的控制台程序不仅可以显示彩色,而且要是你要给它设置一个背景图片,也是可以办到的。

说了这些,那是不是只有Linxu才有控制台程序,Windows就没有呢?

当然也有,只不过它比较隐秘。可以用以下两种把它请出来:

  1. 点击开始-运行-输入CMD回车

  2. 如果开始菜单里没有这个选项..那就用组合键 win+R 调出 (win键就是键盘最下面从左边数第二个键.上面有个系统标志的)

上图就是WIndows里面奇妙的控制台。

最基础的代码

对于C语言的每一个程序,我们都要输入最基础的几行代码。这几行代码不是太特别,但是必不可少。

我们现在就来看看这“最基础的代码”长什么样。

让IDE为我们生成“最基础的代码”

上一课中,我们介绍了三种IDE(Code::Blocks,Visual Studio和Xcode),对于每一种IDE,创建一个新的项目的方法都是不同的,可能你已经忘了怎么做,我们就复习一下吧

在Code::Blocks(我们会在接下来的课程中使用这个IDE)中,点击 File->New->Project,选择 Console Application,然后选择 C语言。

之后Code::Blocks会为我们生成C语言程序的最基础代码,如下图

其中

int main()

的那一行也可以写成

int main(int argc, char *argv[])

两种写法都是可以的,不过第二种(复杂一些的)更常用,也更专业。以后的课程我们都会用 int main(int argc, char *argv[])

这种形式。

分析最基础的代码

对于第一次接触编程的朋友,可能这个最基础的代码也是难以理解。

所以我们才要一起来学习如何阅读代码。

先从前两行开始吧:

#include <stdio.h>

#include <stdlib.h>

这两行很特别,我们会在源代码开头的地方见到这样的以#号开头的语句。像这样特别的行,称为“预编译指令”。这个术语听起来有点复杂。预编译指令会在编译开始的时候,被一种叫做“预编译器”的程序所读取。

其实编译器为我们做很多事情,我们之后的课程会详细来说明。

但是这两行到底是什么意思呢?

这里的#号是预编译指令开始的标志,没有什么特别的含义,后面接着的 include是英语 包含 的意思,所以这两句话的意思就是在我们的程序里包含 stdio.h 和 stdlib.h 这两个文件,这两个文件在系统的库里已经存在了,这些文件被称为库文件。

如果没有这两句话,那我们就不能在程序里调用这两个文件定义的东西了。

接着,我们看到了下面的语句

int main()

{

printf("Hello world!\n");

return 0;

}

以上我们所看到的语句块,被称为函数。其实C语言的程序基本就是由函数来构成的。所以目前我们的程序只有一个函数。

我们现在还不会讲很多函数的细节,因为那是后面的函数那一课的内容,现在还早。但是我们会大体说一下函数的组成。

第一行包含了函数的名字,是第二个单词:main。所以这里的函数称为main函数。这是一个特殊的函数,程序执行总是从main函数开始。

一个函数有开始和结束,使用大括号 {} 来标识。所以我们的main函数包含以下两行代码

printf("Hello world!\n");

return 0;

这些在函数里的行也有名字,被称为“指令”。每一条指令都会让电脑做特定的事情。一个函数大体来说是用来集中一定数目的指令。比如我们可以创建一个函数叫做“打开文件”,这个函数会让电脑为你打开某个文件。函数的优势就是当你写好了这个函数之后,你只需要使用(专业术语叫做 “调用”)“打开文件”这个函数,电脑就会为你执行函数里面的指令。你不需要每次在要实现“打开文件”功能的地方都重复写那些指令。大大节约代码空间,提高效率。

printf("Hello
world!\n");

这一行指令使得屏幕显示“Hello World!”这一句话。当你的程序执行到这一行时,就在屏幕上显示相应的信息。

然后会执行下一个指令。printf也是一个函数,定义在 stdio 库中,现在你知道

#include <stdio.h>

这句话的重要性了吧,如果没有引入 stdio这个库,那我们的main函数就不能调用printf这个函数。

第二个指令 return 0;

大体上说来就是表示函数结束了,并且返回0值。

为什么我的函数返回0,不是返回其他值呢?

实际上,每个C语言程序结束时都会返回一个值,0表示一切正常结束,其他的值表示异常。

这里我们只是简单介绍了以下函数的概念。细节请期待之后的课程。

测试你的程序

在Code::Blocks里面编译(Build/Compile)并运行(Run) 你的最基础代码。得到如下结果

可以看到你的第一个程序在屏幕上显示了 “Hello World!”。

下面的那几行文字是Code::Blocks生成的,表示程序顺利执行,并且耗时 0.021秒。

Press any key to continue 这句话是让你按键盘上的任意键来推出控制台程序。

特殊字符

特殊字符的作用是用来表示 换行,隔开一个制表符的空间,等等。

特殊字符很好辨认,经常是两个字符的组合,第一个字符是反斜杠(\),第二个字符是一个数字或者一个字母。

下面的两个特殊字符是我们经常会用到的:

  • \n :换行符 (作用类似按回车键)

  • \t  :制表符 (作用是空出几个空格,可以设置空格的数目)

注释,很有用

在结束这一课前,我们必须再来讲一下 注释。不论什么编程语言,我们都可以在源代码里添加注释。C语言当然不例外。

注释,到底是什么啊?

简单地说,注释就是在你程序之中用来标注这个程序的作用,某一行代码的作用等等的文字。注释真的很重要,因为即使是一个计算机天才,也要在这儿那儿做一些注解。注释有如下作用:

  • 在之后阅读自己写的代码时不至于迷失方向。不可否认,在重新阅读之前写的代码时,我们常常会忘记这个函数是干什么的,那个地方为什么要这样写。特别是代码量很大,几千几万行甚至更多时,如果没有注释,那阅读起来会很费力。

  • 如果你把你的代码给别人阅读,这可以节省对方很多理解你的代码的时间

要在代码中插入注释,有几种形式:

  • 如果你的注释比较短,在一行里就能写完,那可以用  //...  这样的形式

  • 如果你的注释跨越好几行,那可以用  /* ... */  的形式

可以看到,虽然程序行数变多了,但是注释却使我们的代码变得易读很多。编译代码的时候,编译器会忽略所有的注释,这些注释不会出现在最终的程序里,只是为程序员服务的。

记住:

注释要起到引导阅读代码的作用,以便理清头绪。但是不要在很显然就能懂的地方添加注释。

引用IBM公司的一句格言:

《如果一个程序,在你仅仅看完它的注释之后,你不能了解它的作用,那么把这个程序扔了吧》

-- 大公司就是这么严格,这么任性。

总结一下

  • 程序可以通过一个控制台(Console)或者窗口(Window)和用户交互

  • 对初学者来说用控制台来编写第一个程序要简单很多,虽然不太吸引人。这样在第三部分我们开始使用窗口程序编程的时候就不会太突兀。对于懂得等待的人,一切都会恰如其分

  • C语言的程序主要是由分号结尾的语句构成的

  • 多条指令可以写在一个函数里,就好像包装在一个盒子里一样

  • main函数是程序的启动函数,程序运行时会执行main函数里的指令

  • printf函数使我们可以在控制台的屏幕上显示信息

  • printf函数是定义在一个库(Library)中的。库中经常包含不止一个函数,可以给我们程序调用

第一部分第四课预告:变量的世界

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

下一课我们一起探寻C语言的变量的奇幻世界,还会聊到内存哦,有些难度。



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

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

小编的微信号:

frogoscar

小编的邮箱:    enmingx@gmail.com

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

ProgrammerLeague 加关注~

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


【C语言探索之旅】 第三课:你的第一个程序的更多相关文章

  1. 【C语言探索之旅】 第二课:工欲善其事,必先利其器

    内容简介 1.课程大纲 2.第一部分第二课:工欲善其事,必先利其器 3.第一部分第三课预告:你的第一个程序 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C ...

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

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

  3. 【C++探索之旅】第一部分第三课:第一个C++程序

    内容简介 1.第一部分第三课:第一个C++程序 2.第一部分第四课预告:内存的使用 第一个C++程序 经过上两课之后,我们已经知道了什么是编程,编程的语言,编程的必要软件,C++是什么,我们也安装了适 ...

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

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

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

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

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

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

  7. 【C语言探索之旅】 第二部分第三课:数组

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

  8. C语言探索之旅】 第一部分第四课第三章:变量的世界之显示变量内容

    内容简介 1.课程大纲 2.第一部分第四课第三章:变量的世界之显示变量内容 3.第一部分第五课预告:基本运算 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用 ...

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

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

随机推荐

  1. 通过memcached来实现对tomcat集群中Session的共享策略

    近期在做一套集群的实现,实现的方案是在Linux下完成对Apache + Tomcat 负载均衡的功能. 上述功能已经实现,有需要了解的朋友可以看我另外一篇博文. Linux下Apache与Tomca ...

  2. linux它SQL声明简明教程---WHERE

    我们并不一定必须注意,每次格里面的信息是完全陷入了.在很多情况下,我们需要有选择性地捕捞数据.对于我们的样本.我们可以只抓住一个营业额超过 $1,000 轮廓. 做这个事情,我们就须要用到 WHERE ...

  3. Amazon S3数据一致性模型

    左右Amazon S3有两种类型的数据的一致性模型的: 最后,一致性和读一致性. 有下面几种行为: 1 写一个新的object,然后開始读它.直到全部的变化都传播完(副本),你才干读到它,否则就是ke ...

  4. 基于Redis Sentinel的Redis集群(主从Sharding)高可用方案(转)

    本文主要介绍一种通过Jedis&Sentinel实现Redis集群高可用方案,该方案需要使用Jedis2.2.2及以上版本(强制),Redis2.8及以上版本(可选,Sentinel最早出现在 ...

  5. SVN与TortoiseSVN实战:补丁详解(转)

    硬广:<SVN与TortoiseSVN实战>系列已经写了五篇,第二篇<SVN与TortoiseSVN实战:标签与分支>和第三篇<SVN与TortoiseSVN实战:Tor ...

  6. Shell split character line by line

    while read line      do            account=`echo "$line"| cut -c1-9`'|'            account ...

  7. 消息队列(Message Queue)基本概念(转)

    背景 之前做日志收集模块时,用到flume.另外也有的方案,集成kafaka来提升系统可扩展性,其中涉及到消息队列当时自己并不清楚为什么要使用消息队列.而在我自己提出的原始日志采集方案中不适用消息队列 ...

  8. POJ 1696 Space Ant(点积的应用)

    Space Ant 大意:有一仅仅蚂蚁,每次都仅仅向当前方向的左边走,问蚂蚁走遍全部的点的顺序输出.開始的点是纵坐标最小的那个点,開始的方向是開始点的x轴正方向. 思路:从開始点開始,每次找剩下的点中 ...

  9. registerWithTouchDispatcher()函数的使用

    registerWithTouchDispatcher()函数的使用 registerWithTouchDispatcher()函数主要用于注册Touch事件. 当我们使用this->setTo ...

  10. ThinkPHP实现用户登录

    ThinkPHP实现用户登录 ? //默认url入口 ? class IndexAction extends Action{ function index() { //检查用户是否登录 if(isse ...