程序开发剖解圣经(006)

C语言剖解(03)

       终于开讲C语言课程了,我前面说过,我会以谭浩强的《C程序设计》为教材,进行基础课的讲解,但我坚决反对跟着上面的风格走,这里我会强调让大家选择一本书:《高质量C/C++编程指南》。作者是 林锐,这个西安电子科技大学的研究生,浙江大学的博士生,对我的编程风格有很大的影响,我对他这本书当然也是极为推崇。

因此,有时候我会信口就问学生:

“知道林锐不?”

 “不知道!”

      听到这个回答,我相当失望,有种直接拉出林锐的照片让大家起立膜拜的冲动,但还是忍住了,膜拜在我的理解中,似乎是对逝者的尊重,因此我通常改为让大家膜拜一下C语言之父丹尼斯.李奇,这个大胡子的家伙,正是他的仙逝让我有了讲课的念头,并最后走上讲课的道路。我推崇林锐的另一个原因,是甚为欣赏他的写作风格,不至于让人看书的时候,枯燥到睡着觉,他能让你在不知不觉中,接受一些知识。谈笑间就能让人学懂一些知识,多么了不起呀。因此,我也会刻意的模仿,我希望我也有值得称道的地方,也希望自己写的东西,除了让大家一笑之外,多多少少,能留下些有用的东西,哪怕是一丁点。平凡人有伟人的思想,不见得就是疯子或者白痴。所以大家不要对我嗤之以鼻,更不要喷饭哦。

       开始C的讲课,我一般不讲前两章内容,不讲第一章是因为他不包含什么太多的知识点,也是因为他所描述的一些东西,诸如Turbo C,有过时的感觉。因此,我不讲。第二章:算法我也不讲,算法这个概念太过笼统,笼统到你随便写一个语句,都可以称为算法,因此不讲。但不讲这一章,并不等于这一章没有什么知识点,我会让大家下去看流程图的画法,有时候,也会即兴用Visio 2003或者 visio 2007来绘制一个简单的流程图。强调一下,流程图用什么图形作为开始,什么图形作为结束,什么图形作为判断,什么图形作为描述等,如果读者您看了我的文章,并且是抱着学习语言的心态来虔诚领教的,那不好意思,就流程图这部分,麻烦你就拿谭浩强的书把第二章看一下吧。

       就这样,我说到了第三章。我上课也拿书,但我基本不怎么翻书,不翻书不代表我对书不了解,而是每堂课开始讲之前,我都会把书翻上好几遍,查阅并想法在适当的位置插入我自己的思想和问题,因此,我自认为已经对这本书达到了熟练的程度。我会告诉学生

“如果你拿的是谭浩强《C程序设计》的第三版,请翻到第37页。”学生很快就翻到了。

我接着发问:“看到了什么?”

“第三章”。

“我呸,这我当然知道,大家又不是瞎子,需要用手摸!”

“呵呵……”

“看到了什么?”

这下大家不知道如何回答了,回应之声是跌宕起伏,三三两两,还有人学着我的样子,说我呸!

“神人呀,你都能看到 ‘我呸!’”

“呵呵……”

“我们应该看到有一个图,什么图呢?关于数据类型的图,有木有?”

 “有!”学生空前情绪高涨了。

 “有就念一下,有几种数据类型?”

 “四种:基本数据类型、构造类型、指针类型、空类型”

 “基本类型又包括什么?”

 “整型、字符型、浮点型、枚举类型”,

 “浮点型又包括什么?”

 “单精度型、双精度型!”

 照书念是学生的强项,但多半情况下,他们并不思考。所以,我会问。

“整型是什么?”

 学生被问蒙了,瞪大眼睛,似乎怀疑书上少印了什么东西一样。

“别瞪眼睛了,眼珠子都快出来了,后面没东西了。”

“呵呵……”,学生以为我故意开完玩笑,不再提问了,结果我依然会问

 “整型是什么”,学生彻底懵了。

 “唉,笨呀,这都不知道,整型是数据类型中的基本类型嘛!”

  “哦,哈哈……”。大多数学生被我逗乐了。我接着问

  “指针是什么?”

  “数据类型!”

  “哎~~,聪明,都记住了没?”

   “记住了!”

 看官莫笑,不是我故意在这里刁难学生,确实是有些公司就拿这玩意儿作为笔试中的简答题,我无奈的哀叹之余,也发现这不失为学习基础知识的好方法,因为中国毕竟尚未脱离应试教育,理论依然重要。

“记住了就好,那我再问一下,C语言中为什么会引入数据类型呢?什么是数据类型呢?”

 当然是一片寂然了。因为这思维太跳跃了,除了我和听我讲过课的人外,估计再没人能很快回答出来了。我说过,讲课是一门艺术,我的目的就是把知识灌输给学生,所以,让学生跟着我的思路走,总不会错。

“是这样的”,我说道:“在人类的日常生活中,会遇到各种问题及其解决方案,并且发明了许多东西,来帮助人们方便的处理问题,诸如 数学。而计算机语言的目的是为了帮助人类更好的解决生活中遇到的问题。更方便的解决人类生产生活中出现的各种复杂事情。现实生活中有没有数据类型?”

“有!”

 “对,现实生活中就有整型、实型等这些必须的数据类型,所以,我们C语言中也引入了这些数据类型,并将其归类,即基本数据类型;有些数据类型,现实生活中不直接存在,但计算机语言为了更透彻的展现生活中的各种问题,也发明了一些数据类型,比如指针、数组、枚举、结构等”。

  “讲这些,就是想让你们知道,计算机语言是怎么来的。”

   “可我们就想知道,计算机语言是怎么没的。”,一些比较活泼的学生显然发现我这个老师是相当的容易接近并很具有亲和力,会说一下玩笑话,引起整个课堂的哄堂大笑,这很好,无形中活跃了气氛。保证不会有人睡着。有这样的人,我一般会点名他来负责这个班级作业进度的监督,并让协助处理一些日常杂事,因为这些学生一般都很外向,说句难听的话,就是“外骚”型的。他们团结同学很有一套,一般威望也不低。作为老师,我当然乐意给他们更好的机会。无论是学习还是生活还是交际还是管理。或许他们都能学得一些东西吧。

 在谈笑中,我敲定了班长,甚至包括组长的人选后,继续讲后面的内容,首先就是常量和变量,本篇我讲常量和符号常量

  我不会照书去念,这太没意思,也太浪费口水,既然教编程,教编程语言,我当然要通过动手来提高大家的动脑能力。照书念的老师不是好老师。那是不负责任的老师,说不定还有些胆怯,怕超出自己范围之外,自己不会,亦或是怕被学生问倒,我一直认为,课堂不是我一个人的课堂,是需要和学生互动的,没有互动的课堂,就不叫课堂。活生生的例子就是,我在学校就没学好,嘿嘿,这话说出来有点无耻,其实一点都不卑鄙。

好,言归正传,我飞快的写下如下程序。

#include<stdio.h>

int main(void)

{

       int  i = 9;

       printf(“%d\n”i);

}

我会用鼠标指着9问大家,提问是最好的互动:

“这是不是常量?”

“是。”

我于是又随机写几个值如下:

‘1’, ‘a’, 1.65e2,并继续问大家“这些是不是常量”。

“是”。学生并非什么都不知道,因此,几乎没人回答错误。

“那,常量能不能改变?”

 “不能!”。我不能不说,我这里是故意埋了一个坑,我埋坑的目的只有一个,往下看。

“不能么?那你看我改了没?”我说着,把 i = 9,后面的 9改为了 99;

学生无语,他们不认为他们的回答是错误的,只是摸不着头脑的看着我,知道我有后话。

“我这不是改了么?常量能不能改变?”

大部分学生不在说话了,但不乏有一些比较认真优秀的学生,他们提前做了预习,这部分学生很认真,并且很快从我挖的坑里跳了出来。

“运行期间不能改变。”

对!大家记住了,常量是在运行期间不能改变。”我敢保证,这样的记忆绝对比你照书本念,然后不停地重复几次以作强调要好的多。

理解了这个概念之后,我还会继续问

“i = 9 代表什么意思?”

这绝对没人回答的出来,我也回答不出来。这确实不代表什么意思,如果你比较聪明,或者有一定基础,或者看的东西比较多,你说这叫对i进行定义并初始化。没错,可,初始化为9有什么意义,你知道么?

是的,没人来回答这个问题,或者顶多是后面我写的,但我又引出的新问题,你会彻底无法回答。

“那 i = 9代表什么意思呢?”我边说边又写下了如下代码。

#defineMAX_APPLE_NUMBER  9

然后把 i = 9改为 i = MAX_APPLE_NUMBER;我再问大家,现在 i = 9代表什么意思?这下有人知道了。

“代表最大苹果数量。”

“对,很多时候,我们为了使我们的定义和初始化让大家看的懂,我们会写成如上那样,这个东西叫什么?”我指着#define MAX_APPLE_NUMBER  9这句话问。

回答“宏定义!”的有之,回答“预处理”的有之,回答“符号常量的有之”。

“对,你们的回答都很正确,我们在这里把它称之为:符号常量。”

我想这下大家对符号常量有一定的认识了。我继续讲

“那么,用符号常量有什么好处呢?”

循着上面对符号常量的引出,大家很快概括出来了。

“语义清晰。”

 “对,符号常量具有如下几个优点:1、语义清晰,一改全改。”边说我会边更改后面的值。并告诉大家,这东西的使用优点,当然看官可能知道,他也有一定得缺点,至于优点和缺点,我都不在这里多数,往后放置。

 至此,我讲了常量和符号常量。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值