999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

提升C++程序設計課程學習質量方法探析

2009-04-29 00:00:00高永麗
電腦知識與技術 2009年32期

摘要:作為面向對象程序設計方法的示范性語言,C++以其高效、靈活獨特的語言機制在計算機科學的教育和各個領域被廣泛的應用,該文結合多年教學經驗,分析一些C++初學者的問題與困惑,提出幾點適合C++學習者的學習方法和技巧,對提升C++程序設計學習者的學習質量將起到積極的意義。

關鍵詞:面向對象;高級語言;編程;匯編工具

中圖分類號:G642文獻標識碼:A文章編號:1009-3044(2009)32-8982-02

Enhance the C++ Programming Courses of the Quality of Learning Methods

GAO Yong-li

(Chuxiong Normal University, Computer Science Department, Chuxiong 675000, China)

Abstract: As a method of object-oriented programming language model, C++ for its efficient and flexible mechanism for the unique language of computer science in various fields of education and has been widely used for many years teaching experience in this paper, analysis of some C++ beginners Problems and confusion, to make a few for C++ learner's learning methods and techniques to enhance the C++ programming of the quality of learning the learner will play a positive significance.

Key words: object-oriented; high-level language; programming; compilation tools

C++語言是面向對象的高級程序設計語言,從最早的C語言開始,它的發展貫穿于整個計算機發展的過程,其高效、靈活獨特的語言機制在計算機科學的各個領域被廣泛的應用。其后產生的C#,JAVA等語言,都是以面向對象程序設計思想為基礎,在其上進行演變和擴充的,面向對象的設計思想是在原來結構化程序設計方法基礎上的一個質的改變,C++很好地體現了面向對象的基本特性。該文通過對近幾年C++教學進行經驗總結,闡述C++語言的一些學習方法和技巧,希望對初學者有所幫助。

1 三種提升學習質量的方法

1.1 試著大量閱讀程序,學習編程思想與方法

在C++課程的教學中,經常發現很多初學者熱衷于語法的學習,在某一種概念類型的表示上,或者某一種語法的格式上,認真的研讀,原因之一是他們對某一個程序調試老不通過,主要原因可能就是寫錯了一個標點或標識符的事情記憶深刻,同時也源于我們出考試題的時候喜歡出各種各樣的語法題考學生。你可能要問:那學程序設計語言不學語法學什么呢?是的,學程序設計語言當然要知道語法,但要學好一門語言課最重要的是學會它的編程思想與方法,這就好比蓋房子,只學會語法,你只能是個泥水匠,只有懂得了編程思想與方法,你才有可能變成建筑師。學會程序設計的編程思想與方法,說起來容易做起來難,我給大家推薦的方法是大量的讀程序,對,你沒有看錯,你不需要一開始就動手編程解決問題,但你應該嘗試帶著你的思想去大量讀程序,看看別人對這個問題是怎么考慮的,為什么可以這樣做,如果是你想得到這樣編嗎?在讀的過程中,不僅要學習別人的編程思想,還要注意良好的編程習慣,不要嫌它的標識符太長,因為從幾十行的小程序讀到幾百行甚至幾千行的大程序,你會發現一個見名識義的標識符對你讀懂程序有多重要,另外象如下的兩個語句,你會使用哪一種呢?1) int flag=0 …..if(flag)…..2) int flag=0……if(flag=1)……,我在看同學的程序設計時大量看到第2種編法,很樸實,但你得改正。在讀程序的過程中,對于你不懂的地方,你自然而然就會去翻閱資料,查教材,語法對你來說就這樣掌握了。而通過大量閱讀,你會漸漸對一類問題產生概念,形成一定思維方式,這樣,你可以試著解決一些小問題了。

1.2 注意一些概念引入的原因和用法

如果我問你什么是const,什么是static?你可能想都不想就告訴我:常類型和靜態類型的修飾符啊,這個回答有什么問題嗎?似乎沒有,但我問在一個類當中,什么樣的成員屬性要使用static? 你能夠給我舉個在函數中const很有用的例子嗎?或者有這樣一個語句,已知:Ta是一個類,成員函數說明如下:Ta::test(const Ta a),你知道這里的const有什么用嗎?你是否能夠會心一笑,輕松回答我。還是當你看到這里,正在為回答我的問題而急急忙忙翻書?對C++中的一些概念,我們不能簡簡單單讀讀它的定義,看上幾個什么也說明不了的教材上的例子,就以為已經學懂了,還是引用我前面說過的方法,去找一些帶有這些概念關鍵字的程序讀讀吧,真正體會這些概念的含義和使用場合。

1.3 學習使用匯編工具來解釋你不理解的程序執行過程

作為計算機相關專業的同學,一定都學過一個東西——匯編語言,好了,試著用C++的匯編指令來幫助你了解C++的執行過程吧,順便你會學到一些C++底層的東西,它甚至可以幫你理解一些你想破腦袋也無法理解的程序執行結果,舉個例子:已知i=6,(++i)+(++i)+(++i)等于幾,你可能會憤怒,出這種題有意思嗎?但如果你必須回答,答案是25,有多少人會答對,這不怪你,題目夠無聊,但先不談題目出的合不合理,即使我告訴你答案,你知道為什么嗎?我現在把C++的匯編給你,你就知道了,以下是(++i)+(++i)+(++i)的匯編碼:

// i 的值存放在[ebp-4]中,a的值存放在[ebp+8]中

1 mov eax,dword ptr [ebp-4]

2 add eax,1

3 mov dword ptr [ebp-4],eax

//1-3步實現++i的操作,此時i=7

4mov ecx,dword ptr [ebp-4]

5 add ecx,1

6 mov dword ptr [ebp-4],ecx

// 4-6步實現上步得到的i(7)再加1的操作,此時i=8

7 mov edx,dword ptr [ebp-4]

8add edx,dword ptr [ebp-4]

// 問題在此,本意是將第一步的++i與第二步的++i相加,存放在edx中

// 但第二步的值已經覆蓋了第一步的值,因此得出的值為16,而正確值是15

// 此時edx=16

9mov eax,dword ptr [ebp-4]

10add eax,1

11 mov dword ptr [ebp-4],eax

// 9-11步實現第三步++i操作,此時i=9

12 add edx,dword ptr [ebp-4]

13mov dword ptr [ebp+8],edx

//12-13步將第三步++i的值[ebp-4]與前兩步之和(edx)相加,結果為25

再舉一個例子,大家知道this指針是由C++系統自動提供的指向對象的特殊指針,用來指向正在對某個成員函數進行操作的對象,一般情況下,該指針是隱藏使用的,很多同學不理解它存在的意義,看如下一段程序:

1 #include

2 class A

3{

4public:

5A() {a=b=0;}

6A(int i,int j) { a=i; b=j;}

7void copy(A aa);

8void print() {cout<

9private:

10 int a,b;

11};

12void A::copy(A aa)

13{ if(this==aa)return;

14 *this=aa; }

15void main()

16{A a1,a2(3,4);

17 a1.copy(a2);

18 a1.print();

19}

將第6行改為A(int i,int j) {this->a=i; (*this).b=j;},this指針顯式使用,語句功能沒有改變。

第14行 *this=aa;匯編如下:

00401087 mov ecx,dword ptr [ebp+8]

0040108A mov edx,dword ptr [ecx]

0040108C mov eax,dword ptr [ecx+4]

0040108F mov ecx,dword ptr [ebp-4]

00401092 mov dword ptr [ecx],edx

00401094 mov dword ptr [ecx+4],eax

通過上面的匯編代碼就可以看到this指針跟一般的函數參數的區別:一般的函數參數是直接壓入棧中(push 0Dh),而this指針卻被放到了ecx寄存器中。在類的非成員函數中如果要用到類的成員變量,就可以通過訪問ecx寄存器來得到指向對象的this指 針,然后再通過this指針加上成員變量的偏移量來找到相應的成員變量。通過上面的分析,我們可以從底層了解C++程序的執行過程。

2 結束語

以上是對初步入門者的一些教學心得,“C++ 是個難學易用的語言”, C++程序設計語言的學習者應當把重心放在編程理念和學習方法的探索上,多讀程序,讀懂程序,揣摩個中的編程思想和方法,找一些提升學習層次的輔助方法,為自己將來用好這門神奇的語言努力探索。

主站蜘蛛池模板: 国产成人永久免费视频| 中文字幕色在线| 成人精品视频一区二区在线| 欧美精品亚洲二区| 中文字幕久久精品波多野结| 91福利免费| 好紧太爽了视频免费无码| 99re在线免费视频| 亚洲精品日产精品乱码不卡| 欧美性久久久久| 久久精品无码一区二区日韩免费| 久久精品国产亚洲麻豆| 国产乱肥老妇精品视频| 亚洲欧美不卡视频| 成人在线综合| 亚洲动漫h| 国产成人免费视频精品一区二区| 亚洲国产欧美目韩成人综合| 亚洲综合在线网| 国内毛片视频| 国产精品人人做人人爽人人添| 国产小视频a在线观看| 亚洲有无码中文网| 精品国产成人国产在线| 无码中文AⅤ在线观看| 九九久久精品免费观看| 波多野结衣中文字幕久久| 极品国产在线| 伊人久久大线影院首页| www.狠狠| 中文字幕乱妇无码AV在线| 中文无码影院| 亚洲第一视频网站| 国产成人亚洲日韩欧美电影| 欧美精品v| 亚洲国产成人麻豆精品| 久久黄色毛片| 呦女亚洲一区精品| 久久人人妻人人爽人人卡片av| 日本欧美午夜| 熟妇人妻无乱码中文字幕真矢织江 | 伊人查蕉在线观看国产精品| 国产夜色视频| 亚洲国产日韩欧美在线| 园内精品自拍视频在线播放| 婷婷丁香在线观看| 正在播放久久| 久久精品91麻豆| 欧美亚洲欧美区| 成人免费黄色小视频| 在线欧美日韩| 亚洲另类国产欧美一区二区| 亚洲成av人无码综合在线观看| 天天综合网色中文字幕| 国产福利在线观看精品| 18禁色诱爆乳网站| 精品无码一区二区三区电影| 四虎影视库国产精品一区| 蜜芽国产尤物av尤物在线看| 99国产精品免费观看视频| 青青青国产视频手机| 中文字幕欧美日韩| 亚洲第一区欧美国产综合| 国产女人18水真多毛片18精品 | 色综合狠狠操| 一本久道久久综合多人| 在线观看网站国产| 最新痴汉在线无码AV| 国产亚洲现在一区二区中文| 国产黑人在线| 美女被操黄色视频网站| 色婷婷狠狠干| 亚洲一区二区日韩欧美gif| 99久久精品国产自免费| 欧美在线视频a| 国产视频资源在线观看| 国产精品爽爽va在线无码观看| 国产精品无码影视久久久久久久| 亚洲三级成人| 日本精品αv中文字幕| 青青青视频蜜桃一区二区| 中文字幕亚洲乱码熟女1区2区|