国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

C/C++語言程序設(shè)計(jì)課程教學(xué)方法的實(shí)踐

2010-09-25 05:21
科學(xué)時(shí)代·上半月 2010年6期
關(guān)鍵詞:面向?qū)ο?/a>C語言程序設(shè)計(jì)

張 鴻

[摘要] 根據(jù)“C/C++語言程序設(shè)計(jì)”課程教學(xué)實(shí)踐的經(jīng)驗(yàn),結(jié)合C/C++課程的特點(diǎn),關(guān)于提高學(xué)生對(duì)學(xué)習(xí)程序設(shè)計(jì)的興趣,培養(yǎng)和提高學(xué)生的分析問題能力、解決問題能力和創(chuàng)新能力等,談?wù)勗趥湔n和教學(xué)方法上的一些研究和感受。

[關(guān)鍵詞] C/C++語言程序設(shè)計(jì)換位思考對(duì)比教學(xué)法實(shí)例教學(xué)法啟發(fā)式教學(xué)法

[Abstract] According to the "C/C++ programming language" teaching practice experience, combining the characteristics of the course of C/C + +, this article discusses the personal research and experience of preparing lessons and teaching method on how to enhance the students'interests to learn about the program designing, develop and improve the students' innovational ability when analyzing and solving problems.

[Key words] C/C++ programming language;perspective-taking; comparative method;case teaching method; heuristic teaching method

0 引言

C/C++語言程序設(shè)計(jì)是計(jì)算機(jī)專業(yè)中非常重要的一門專業(yè)基礎(chǔ)課程,它是學(xué)習(xí)程序設(shè)計(jì)

的入門課程。大多數(shù)老師的授課內(nèi)容都是經(jīng)過深思熟慮之后提煉出來的精華,而對(duì)于初步接觸編程的學(xué)生來講,程序設(shè)計(jì)的概念和邏輯思維都是全新的。如何使得學(xué)生自然順暢地接受新知識(shí),這就需要老師們傳達(dá)知識(shí)的技巧了。

我在學(xué)生時(shí)代以及工作中聽有些老師講課時(shí),就是云里來霧里去,根本摸不著頭腦,不知所云。為了盡可能避免學(xué)生聽課和學(xué)習(xí)走彎路,同時(shí)為了加強(qiáng)學(xué)生對(duì)基本概念和理論知識(shí)的理解,培養(yǎng)和提高學(xué)生的分析問題能力、解決問題能力和創(chuàng)新能力,筆者根據(jù)多年來C/C++語言課程教學(xué)實(shí)踐的經(jīng)驗(yàn),結(jié)合一些教學(xué)案例,談?wù)勗趥湔n和教學(xué)方法上的一些研究和感受。

1 采用換位思考方法,提高學(xué)生問題意識(shí)

老師上課前都要經(jīng)歷備課階段。我遇到的老師中,有些人備課是隨便瀏覽一下講稿或課件,認(rèn)為只要知道所講內(nèi)容是什么就可以了。但是我覺得每個(gè)知識(shí)點(diǎn)的提出以及知識(shí)點(diǎn)之間的聯(lián)系更重要,因此,備課時(shí),我采用換位思考方法:我是學(xué)生,希望老師能說明所講內(nèi)容的前因、重要用途以及應(yīng)用。帶著這樣的問題,我認(rèn)真準(zhǔn)備每堂課。

比如,在講C語言中的輸出函數(shù)printf()的用法前,我問學(xué)生這樣一個(gè)問題:你們辛辛苦苦編寫完了若干行代碼,想不想知道結(jié)果如何呀?學(xué)生覺得好笑:當(dāng)然要知道啦,不然費(fèi)勁干嗎。那我的答案也就很自然出來了:執(zhí)行輸出功能。這個(gè)問題也正進(jìn)一步解釋了算法的一個(gè)很重要的特點(diǎn):必須至少有一個(gè)輸出。部分學(xué)生當(dāng)時(shí)在學(xué)算法特點(diǎn)時(shí),還迷惑為什么必須有輸出呢,而我提出的這個(gè)問題可起到一箭雙雕的作用。

2 采用多種授課方法,提高教學(xué)質(zhì)量

現(xiàn)在有很多學(xué)生對(duì)程序設(shè)計(jì)都不感興趣,甚至感到恐懼。我認(rèn)真做了調(diào)查,原因很簡(jiǎn)單:難理解,不知如何著手。針對(duì)這種情況,我嘗試了很多方法,并且屢試不爽。現(xiàn)談?wù)勂渲幸恍┲饕氖谡n方法。

(1)對(duì)比教學(xué)法

求學(xué)時(shí)代,聽一位名人講過這樣一句話:對(duì)比中見真理。我把這句話應(yīng)用在我的學(xué)習(xí)和工作中,深深體會(huì)了這句話的真理性。

比如,C語言中使用編譯預(yù)處理命令中的簡(jiǎn)單的宏(#define)來定義符號(hào)常量,而C++中常使用const。仔細(xì)比較,原因很簡(jiǎn)單:雖然C++是C的超集,但由于宏命令是在編譯前進(jìn)行宏展開的,沒有任何語法檢查,非常不安全,故C++中使用const來取代簡(jiǎn)單的宏,也正驗(yàn)證了C++是強(qiáng)類型語言的說法。

另外,為了減少因函數(shù)調(diào)用和函數(shù)返回所花費(fèi)的系統(tǒng)開銷,C語言中使用帶參數(shù)的宏(#define)實(shí)現(xiàn)功能簡(jiǎn)單且不含有復(fù)雜結(jié)構(gòu)的過程,而C++中則采用內(nèi)聯(lián)函數(shù)。內(nèi)聯(lián)函數(shù)與#define預(yù)處理命令很相似。例如,

inlinechar min(char c1,char c2)

{ return c1

#define min(c1,c2) ((c1)<(c2)?(c1):(c2))

二者主要區(qū)別:

① 內(nèi)聯(lián)函數(shù)在擴(kuò)展時(shí),系統(tǒng)要檢查參數(shù)類型;而宏展開只作簡(jiǎn)單的替換,不會(huì)進(jìn)行語法檢查。

② 如果將表達(dá)式傳遞給內(nèi)聯(lián)函數(shù)的形參,則該表達(dá)式只求值一次;而將該表達(dá)式傳遞給宏的形參,則對(duì)表達(dá)式的求值就會(huì)引起副作用。例如,

//使用內(nèi)聯(lián)函數(shù)

#include

inline char min(char c1,char c2){return c1

void main( )

{

charch1='b',ch2='a';

cout<<"min(ch1++,ch2)="<

cout<<"ch1="<

}

運(yùn)行結(jié)果:

min(ch1++,ch2)=a

ch1=c,ch2=a

//使用宏定義

#include

#definemin(c1,c2)((c1)>(c2)?(c1):(c2))

void main( )

{

char ch1='b',ch2='a';

cout<<"min(ch1++,ch2)="<

cout<<"ch1="<

}

運(yùn)行結(jié)果:

min(ch1++,ch2)=c

ch1=d,ch2=a

通過以上主要兩個(gè)方面的比較,學(xué)生就很不難理解為什么C++使用內(nèi)聯(lián)函數(shù)而不使用帶參數(shù)的宏。

以上兩個(gè)問題(簡(jiǎn)單的宏與const、帶參數(shù)的宏與內(nèi)聯(lián)函數(shù))都與編譯預(yù)處理命令中的宏定義有關(guān)系,因此,在講完符號(hào)常量和內(nèi)聯(lián)函數(shù)之后,我進(jìn)行了一個(gè)簡(jiǎn)單且明了的總結(jié):由于編譯預(yù)處理命令中的宏定義存在安全漏洞,因此,C++中使用const取代簡(jiǎn)單的宏來定義符號(hào)常量,使用內(nèi)聯(lián)函數(shù)取代帶參數(shù)的宏來實(shí)現(xiàn)功能簡(jiǎn)單且不含有復(fù)雜控制結(jié)構(gòu)的過程。經(jīng)過總結(jié),兩個(gè)(const和內(nèi)聯(lián)函數(shù))看似毫無聯(lián)系的知識(shí)之間具有一個(gè)共同點(diǎn):取代宏定義。

(2)實(shí)例教學(xué)法

學(xué)生在熟悉且習(xí)慣了面向過程的程序設(shè)計(jì)思想之后,再接觸面向?qū)ο蟮某绦蛟O(shè)計(jì)思想,很難區(qū)分二者究竟有何不同。在C++課程的講解中,我必須首先讓學(xué)生理解面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP)和傳統(tǒng)的程序設(shè)計(jì)有著本質(zhì)的區(qū)別。

比如,現(xiàn)實(shí)世界中的某個(gè)人,不僅僅具有身高、膚色、體重等靜態(tài)特性,而且具有吃飯、說話、行走等動(dòng)態(tài)行為,靜態(tài)特性和動(dòng)態(tài)行為本來就是自成一體的,構(gòu)成了現(xiàn)實(shí)世界中的一個(gè)人?,F(xiàn)在要把現(xiàn)實(shí)世界中類似“某個(gè)人”的實(shí)體映射到計(jì)算機(jī)世界中,就用“對(duì)象”(靜態(tài)特性和動(dòng)態(tài)行為封裝在一起)來表示它,這就是面向?qū)ο蟮乃枷?。而在傳統(tǒng)程序設(shè)計(jì)思想中,是把靜態(tài)特性和動(dòng)態(tài)行為分離開的。

再從程序結(jié)構(gòu)上進(jìn)一步說明,例如,采用不同思想分別定義Time類型:

//面向過程的程序設(shè)計(jì)思想

struct Time

{ int Hour,Minute,Second; };

void ShuRu(Time *pt) //定義輸入過程

{ cout<<"請(qǐng)輸入小時(shí)、分和秒:";

cin>>pt->Hour>>pt->Minute>>pt->Second;

}

void ShuChu(Time *pt) //定義輸出過程

{ cout<Hour<<"小時(shí)"<Minute<<"分"<Second<<"秒"<

}

//面向?qū)ο蟮某绦蛟O(shè)計(jì)思想

class Time //定義Time類類型

{

private:

int Hour,Minute,Second; //private成員

public:

void ShuRu() //定義public成員:輸入操作

{ cout<<“請(qǐng)輸入小時(shí)、分和秒:”;

cin>>Hour>>Minute>>Second;

}

void ShuChu() //定義public成員:輸出操作

{ cout<

};

借助實(shí)例描述和直觀的程序結(jié)構(gòu)比較,學(xué)生就非常容易接受了,老師的講解也起到事半功倍的效果。

(3)啟發(fā)式教學(xué)法

教學(xué)中,善于且靈活使用啟發(fā)教學(xué),有助于活躍學(xué)生的思維,使學(xué)生由被動(dòng)接受知識(shí)狀態(tài)積極轉(zhuǎn)化為主動(dòng)獲取知識(shí)狀態(tài),能夠充分挖掘他們的學(xué)習(xí)潛能,激發(fā)學(xué)習(xí)的積極性和主觀能動(dòng)性,從而培養(yǎng)學(xué)生的創(chuàng)新思維能力。

比如,在將數(shù)組概念之前,出現(xiàn)了下面的我和學(xué)生之間的一問一答:

我:如何存放3個(gè)學(xué)生的C語言成績(jī)?

學(xué)生:定義3個(gè)變量。

我:10個(gè)學(xué)生的成績(jī)?

學(xué)生:定義10個(gè)變量。

我:100個(gè)、1000個(gè)、10000個(gè)學(xué)生的成績(jī)?

學(xué)生:變量太多啦,不容易表示。

我準(zhǔn)備的問題很自然地被學(xué)生發(fā)現(xiàn)并提出,這個(gè)時(shí)候我就可以順理成章地提出數(shù)組是解決的最佳辦法。了解了數(shù)組的應(yīng)用環(huán)境,學(xué)生在編程過程中就可以靈活使用。

(4)課堂提問

為了使學(xué)生能夠很好參與到課堂教學(xué)活動(dòng)中,在必要時(shí),我也經(jīng)常隨機(jī)課堂提問,一方面是為了提醒有些走神的學(xué)生;另一方面是為了檢驗(yàn)學(xué)生是否真正理解和掌握前面所學(xué)知識(shí),這樣我就可以有針對(duì)性地進(jìn)行后面內(nèi)容的講解。

課堂教學(xué)中的例子還有很多,在此不再一一列舉。

3 結(jié)束語

靈活結(jié)合和使用不同教學(xué)方法,提高教學(xué)質(zhì)量,是我們老師的責(zé)任和義務(wù)。教是為了不教,授學(xué)生以魚,更要授之以漁。

參考文獻(xiàn):

[1]張鴻、馮文新.C++面向?qū)ο蟪绦蛟O(shè)計(jì)教程.武漢大學(xué)出版社,2008.

[2]譚浩強(qiáng).C程序設(shè)計(jì)(第三版).清華大學(xué)出版社,2005.

作者簡(jiǎn)介:

張鴻(1975-),女,講師,碩士,主要從事計(jì)算機(jī)程序理論和數(shù)據(jù)庫技術(shù)的研究;畢業(yè)院校:鄭州大學(xué),專業(yè):計(jì)算機(jī)軟件與理論。

猜你喜歡
面向?qū)ο?/a>C語言程序設(shè)計(jì)
基于OBE的Java程序設(shè)計(jì)個(gè)性化教學(xué)研究
項(xiàng)目化教學(xué)在Python程序設(shè)計(jì)課程中的應(yīng)用
C++程序設(shè)計(jì)課程教學(xué)改革研究
醫(yī)學(xué)專業(yè)“Python程序設(shè)計(jì)”課程教學(xué)改革總結(jié)與思考
“C語言程序設(shè)計(jì)”課程混合教學(xué)探索
基于C語言的計(jì)算機(jī)軟件編程技術(shù)探究
中職C語言單片機(jī)課堂教學(xué)中的趣味性探討
計(jì)算機(jī)原理中C語言的應(yīng)用價(jià)值
面向?qū)ο蟮挠?jì)算機(jī)導(dǎo)論課程教學(xué)
基于Web的科研項(xiàng)目管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
承德县| 台中市| 玉田县| 绥滨县| 旬阳县| 朝阳市| 商洛市| 新余市| 温泉县| 武义县| 岚皋县| 土默特右旗| 泽普县| 泰兴市| 醴陵市| 阳原县| 沅江市| 从化市| 正阳县| 理塘县| 子长县| 雅江县| 桐柏县| 宿迁市| 应用必备| 昂仁县| 舞阳县| 和顺县| 临高县| 嘉义市| 虹口区| 大竹县| 泰州市| 贡嘎县| 永吉县| 岳池县| 通道| 斗六市| 石楼县| 清流县| 长汀县|