程序开发剖解圣经(006)
C語言剖解(03)
?????? 終于開講C語言課程了,我前面說過,我會以譚浩強的《C程序設計》為教材,進行基礎課的講解,但我堅決反對跟著上面的風格走,這里我會強調讓大家選擇一本書:《高質量C/C++編程指南》。作者是 林銳,這個西安電子科技大學的研究生,浙江大學的博士生,對我的編程風格有很大的影響,我對他這本書當然也是極為推崇。
因此,有時候我會信口就問學生:
“知道林銳不?”
?“不知道!”
????? 聽到這個回答,我相當失望,有種直接拉出林銳的照片讓大家起立膜拜的沖動,但還是忍住了,膜拜在我的理解中,似乎是對逝者的尊重,因此我通常改為讓大家膜拜一下C語言之父丹尼斯.李奇,這個大胡子的家伙,正是他的仙逝讓我有了講課的念頭,并最后走上講課的道路。我推崇林銳的另一個原因,是甚為欣賞他的寫作風格,不至于讓人看書的時候,枯燥到睡著覺,他能讓你在不知不覺中,接受一些知識。談笑間就能讓人學懂一些知識,多么了不起呀。因此,我也會刻意的模仿,我希望我也有值得稱道的地方,也希望自己寫的東西,除了讓大家一笑之外,多多少少,能留下些有用的東西,哪怕是一丁點。平凡人有偉人的思想,不見得就是瘋子或者白癡。所以大家不要對我嗤之以鼻,更不要噴飯哦。
?????? 開始C的講課,我一般不講前兩章內容,不講第一章是因為他不包含什么太多的知識點,也是因為他所描述的一些東西,諸如Turbo C,有過時的感覺。因此,我不講。第二章:算法我也不講,算法這個概念太過籠統,籠統到你隨便寫一個語句,都可以稱為算法,因此不講。但不講這一章,并不等于這一章沒有什么知識點,我會讓大家下去看流程圖的畫法,有時候,也會即興用Visio 2003或者 visio 2007來繪制一個簡單的流程圖。強調一下,流程圖用什么圖形作為開始,什么圖形作為結束,什么圖形作為判斷,什么圖形作為描述等,如果讀者您看了我的文章,并且是抱著學習語言的心態來虔誠領教的,那不好意思,就流程圖這部分,麻煩你就拿譚浩強的書把第二章看一下吧。
?????? 就這樣,我說到了第三章。我上課也拿書,但我基本不怎么翻書,不翻書不代表我對書不了解,而是每堂課開始講之前,我都會把書翻上好幾遍,查閱并想法在適當的位置插入我自己的思想和問題,因此,我自認為已經對這本書達到了熟練的程度。我會告訴學生
“如果你拿的是譚浩強《C程序設計》的第三版,請翻到第37頁?!睂W生很快就翻到了。
我接著發問:“看到了什么?”
“第三章”。
“我呸,這我當然知道,大家又不是瞎子,需要用手摸!”
“呵呵……”
“看到了什么?”
這下大家不知道如何回答了,回應之聲是跌宕起伏,三三兩兩,還有人學著我的樣子,說我呸!
“神人呀,你都能看到 ‘我呸!’”
“呵呵……”
“我們應該看到有一個圖,什么圖呢?關于數據類型的圖,有木有?”
?“有!”學生空前情緒高漲了。
?“有就念一下,有幾種數據類型?”
?“四種:基本數據類型、構造類型、指針類型、空類型”
?“基本類型又包括什么?”
?“整型、字符型、浮點型、枚舉類型”,
?“浮點型又包括什么?”
?“單精度型、雙精度型!”
?照書念是學生的強項,但多半情況下,他們并不思考。所以,我會問。
“整型是什么?”
?學生被問蒙了,瞪大眼睛,似乎懷疑書上少印了什么東西一樣。
“別瞪眼睛了,眼珠子都快出來了,后面沒東西了。”
“呵呵……”,學生以為我故意開完玩笑,不再提問了,結果我依然會問
?“整型是什么”,學生徹底懵了。
?“唉,笨呀,這都不知道,整型是數據類型中的基本類型嘛!”
? “哦,哈哈……”。大多數學生被我逗樂了。我接著問
? “指針是什么?”
? “數據類型!”
? “哎~~,聰明,都記住了沒?”
?? “記住了!”
?看官莫笑,不是我故意在這里刁難學生,確實是有些公司就拿這玩意兒作為筆試中的簡答題,我無奈的哀嘆之余,也發現這不失為學習基礎知識的好方法,因為中國畢竟尚未脫離應試教育,理論依然重要。
“記住了就好,那我再問一下,C語言中為什么會引入數據類型呢?什么是數據類型呢?”
?當然是一片寂然了。因為這思維太跳躍了,除了我和聽我講過課的人外,估計再沒人能很快回答出來了。我說過,講課是一門藝術,我的目的就是把知識灌輸給學生,所以,讓學生跟著我的思路走,總不會錯。
“是這樣的”,我說道:“在人類的日常生活中,會遇到各種問題及其解決方案,并且發明了許多東西,來幫助人們方便的處理問題,諸如 數學。而計算機語言的目的是為了幫助人類更好的解決生活中遇到的問題。更方便的解決人類生產生活中出現的各種復雜事情。現實生活中有沒有數據類型?”
“有!”
?“對,現實生活中就有整型、實型等這些必須的數據類型,所以,我們C語言中也引入了這些數據類型,并將其歸類,即基本數據類型;有些數據類型,現實生活中不直接存在,但計算機語言為了更透徹的展現生活中的各種問題,也發明了一些數據類型,比如指針、數組、枚舉、結構等”。
? “講這些,就是想讓你們知道,計算機語言是怎么來的?!?/p>
?? “可我們就想知道,計算機語言是怎么沒的。”,一些比較活潑的學生顯然發現我這個老師是相當的容易接近并很具有親和力,會說一下玩笑話,引起整個課堂的哄堂大笑,這很好,無形中活躍了氣氛。保證不會有人睡著。有這樣的人,我一般會點名他來負責這個班級作業進度的監督,并讓協助處理一些日常雜事,因為這些學生一般都很外向,說句難聽的話,就是“外騷”型的。他們團結同學很有一套,一般威望也不低。作為老師,我當然樂意給他們更好的機會。無論是學習還是生活還是交際還是管理?;蛟S他們都能學得一些東西吧。
?在談笑中,我敲定了班長,甚至包括組長的人選后,繼續講后面的內容,首先就是常量和變量,本篇我講常量和符號常量
? 我不會照書去念,這太沒意思,也太浪費口水,既然教編程,教編程語言,我當然要通過動手來提高大家的動腦能力。照書念的老師不是好老師。那是不負責任的老師,說不定還有些膽怯,怕超出自己范圍之外,自己不會,亦或是怕被學生問倒,我一直認為,課堂不是我一個人的課堂,是需要和學生互動的,沒有互動的課堂,就不叫課堂。活生生的例子就是,我在學校就沒學好,嘿嘿,這話說出來有點無恥,其實一點都不卑鄙。
好,言歸正傳,我飛快的寫下如下程序。
#include<stdio.h>
int main(void)
{
?????? int ?i = 9;
?????? printf(“%d\n”,i);
}
我會用鼠標指著9問大家,提問是最好的互動:
“這是不是常量?”
“是?!?/p>
我于是又隨機寫幾個值如下:
‘1’, ‘a’, 1.65e2,并繼續問大家“這些是不是常量”。
“是”。學生并非什么都不知道,因此,幾乎沒人回答錯誤。
“那,常量能不能改變?”
?“不能!”。我不能不說,我這里是故意埋了一個坑,我埋坑的目的只有一個,往下看。
“不能么?那你看我改了沒?”我說著,把 i = 9,后面的 9改為了 99;
學生無語,他們不認為他們的回答是錯誤的,只是摸不著頭腦的看著我,知道我有后話。
“我這不是改了么?常量能不能改變?”
大部分學生不在說話了,但不乏有一些比較認真優秀的學生,他們提前做了預習,這部分學生很認真,并且很快從我挖的坑里跳了出來。
“運行期間不能改變?!?/p>
“對!大家記住了,常量是在運行期間不能改變。”我敢保證,這樣的記憶絕對比你照書本念,然后不停地重復幾次以作強調要好的多。
理解了這個概念之后,我還會繼續問
“i = 9 代表什么意思?”
這絕對沒人回答的出來,我也回答不出來。這確實不代表什么意思,如果你比較聰明,或者有一定基礎,或者看的東西比較多,你說這叫對i進行定義并初始化。沒錯,可,初始化為9有什么意義,你知道么?
是的,沒人來回答這個問題,或者頂多是后面我寫的,但我又引出的新問題,你會徹底無法回答。
“那 i = 9代表什么意思呢?”我邊說邊又寫下了如下代碼。
#defineMAX_APPLE_NUMBER? 9
然后把 i = 9改為 i = MAX_APPLE_NUMBER;我再問大家,現在 i = 9代表什么意思?這下有人知道了。
“代表最大蘋果數量。”
“對,很多時候,我們為了使我們的定義和初始化讓大家看的懂,我們會寫成如上那樣,這個東西叫什么?”我指著#define MAX_APPLE_NUMBER? 9這句話問。
回答“宏定義!”的有之,回答“預處理”的有之,回答“符號常量的有之”。
“對,你們的回答都很正確,我們在這里把它稱之為:符號常量。”
我想這下大家對符號常量有一定的認識了。我繼續講
“那么,用符號常量有什么好處呢?”
循著上面對符號常量的引出,大家很快概括出來了。
“語義清晰?!?/p>
?“對,符號常量具有如下幾個優點:1、語義清晰,一改全改。”邊說我會邊更改后面的值。并告訴大家,這東西的使用優點,當然看官可能知道,他也有一定得缺點,至于優點和缺點,我都不在這里多數,往后放置。
?至此,我講了常量和符號常量。
總結
以上是生活随笔為你收集整理的程序开发剖解圣经(006)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows API 串口编程参考
- 下一篇: 关于未捕获异常的处理(WPF)