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

C++/C語言的多重指針課堂教學設計

2012-04-29 00:00:00黃文曉
中國外資·下半月 2012年8期

摘要:依照“先易后難”、“循序漸進”等教學原則,給出了一個“C++/C語言的多重指針”課堂教學設計,并且結合例子給出了具體的教學過程、給出了其中各個主要步驟的教學目的、分析了該設計的教學效果。

關鍵詞:C++/C 指針 教學設計

引言

“C++/C”是一門計算機程序設計高級語言,內容豐富,其中的“指針”部分是重要內容之一。“指針”中的“多重指針”是教學難點,普遍認為這個內容“難教難學”。如何突破這個教學難點?在現有的相關文獻中是否有成功的方法可以借鑒?文獻[1]是介紹“C++”的著名教材。在這本書里,作者用兩個例子完成了“多重指針”的介紹:第一個例子是“指針數組”,第二個例子是“指向該數組元素的指針”,即“指向指針的指針”。這兩個例子,難度跨度過大,學生不容易理解和掌握該概念。文獻[2]將二重指針分別和變量以及數組結合在一起, 討論了二級指針變量與二級指針數據的用法與區別。除了上述文獻之外,還有不少文獻討論C++/C教學法。文獻[3] 提出了C++/C教學的“指導思想”:“正確處理新理論、新技術與舊內容的關系”等。文獻[4] 提出了如下教學方法:采用啟發式教學、采用任務驅動教學法、采用“框架法”和“求異法”和采用“多媒體”等。文獻[5] 結合教學實踐,提出了“漸進式教學法”和“啟發式教學法”,主張通過“編程”來理解新概念,通過“由易到難”啟發學生并引入新概念。

受以上參考文獻啟發,本文將提出一個突破該教學難點的教學過程,以課堂教學設計的形式介紹于下:

一、C++/C多重指針的課堂教學設計

我們先將教學的基本條件以及學生的基本情況做一介紹,然后再談課堂教學設計的內容和步驟。

(一)教學的基本條件

一間教室,可容納100人左右,配備有多媒體教學設備。

(二)學生的基本情況

學生在接觸C++/C之前僅學過《計算機應用基礎》,從未接觸過另外的編程語言,也沒有學過另外的計算機課程。對于該課程,學生已學過“函數”、“數組”和“單重指針”等內容。

(三)教學目的

讓學生理解并掌握概念:“二重指針”和“多重指針”。

(四)教學設計的基本思想

基于以上的教學基本條件和學生的實際情況,筆者認為應該按以下原則進行教學:

先簡后繁,先易后難,循序漸進,前后對比,歸納總結。

下面我們按這個原則設計教學過程。

(五)教學過程

預備:在課堂上,老師降落銀幕,打開投影儀,啟動電腦,啟動VC系統,進入編輯界面;老師組織學生簡單地復習一下指針的概念,然后介紹下面的內容:

1、多重指針(含單重指針,下同)與變量的關系

我們將通過一個簡單例子,引入多重指針的概念,并舉例該概念的初步應用。在這里,老師結合下例指出:一個變量對應一個內存單元,我們可以用一重指針變量指向這個內存單元,如果有必要的話,也可以用多重指針變量通過特定的傳遞關系指向這個內存單元。

老師將下列程序輸入系統并運行,將結果輸出到銀幕上:

void main()

{int a=12,*p, **q,***r ;

p=a;

q=p;

r=q;

cout<

a=13;

cout<

*p=14;

cout<

**q=15;

cout<

***r=16;

cout<

}

銀幕上顯示的結果是:

12,12,12,12

13,13,13,13

14,14,14,14

15,15,15,15

16,16,16,16

當上面的程序運行結束之后,老師面向學生分析上述程序:

該程序的前三條語句“p=a; q=p; r=q;”,其功能對應下面的示意圖:

變量a是一個已經初始化或者賦值的整形變量,語句“p=a;”規定了一重指針變量p指向變量a;語句“q=p”規定了二重指針變量q經過一重指針變量p指向變量a;語句“r=q;”規定了三重指針變量連續經過兩個指針變量q和p而指向變量a。四條語句“a=13; *p=14;**q=15;和***r=16;”的功能都是對同一個變量a賦值,以上程序運行結果也驗證了這一點。

老師還應指出:三條語句“p=a; q=p; r=q;”是有序的,是由p、q、r的定義所規定的,不可顛倒順序,也不能“越級”,譬如“*q=a;”或者“q=a;”都是錯誤的,當然“**r=a”或者“*r=p”也是錯的。另外,“(a)”總是錯的,因為符號“”是取變量的地址,而地址,譬如a,是“值”而不是變量,所以 “(a)”無意義。

老師還應強調指出:此例中的int可用float、double或者char代換,其程序和結論相同,但應該注意的是,當用類型char代換int之后,給變量賦值時可賦字符形的,也可賦整形的。

最后,老師可以補充:此例中的變量a,也可以是數組元素,因為一個數組元素等價一個變量,只是命名規則不同而已。

2、多重指針與字符串(或者字符數組)的關系

這一步驟是為介紹“指針數組和多重指針”做準備,同時也是為了拓寬多重指針的應用范圍。

在討論“多重指針與字符串(或者字符數組)的關系”之前,老師應強調:在C++/C語言里,字符串有其特殊的操作規則,特別是將一個字符串常量賦給一個字符指針或者輸入到一個字符數組時,該指針或者數組名接收該字符串首字符的地址,而不是接收字符串本身,將字符串和多重指針結合時更要注意這一點。另外,要輸出整個字符串,只需將該字符串的首字符地址置入輸出語句即可。

老師將下列程序輸入系統并運行,將結果輸出到銀幕上:

void main()

{ char *bb=\"1234512345\",**qq,***rr;

qq=bb;

rr=qq;

cout<

bb=\"dfDDDDDDf\";

cout<

*qq=\"jhhjhbjhjhb\";

cout<

**rr=\"mmmmmm\";

cout<

}

銀幕上顯示的結果是:

1234512345,1234512345,1234512345

dfDDDDDDf,dfDDDDDDf,dfDDDDDDf

jhhjhbjhjhb,jhhjhbjhjhb,jhhjhbjhjhb

mmmmmm,mmmmmm,mmmmmm

當上面的程序運行結束之后,老師面向學生分析上述程序:

變量bb,qq以及rr的順序關系和上例類似,即兩條語句“qq=bb; rr=qq;”順序不可顛倒。同時,變量rr通過qq指向bb,qq直接指向bb,以上的程序運行結果也驗證了這一點。另外,老師應提醒學生注意語句“cout”,其中列出的是存儲有字符串首字符地址的指針。

3、多重指針與字符串數組的關系

在這里,老師應指出:上面的例子表明存儲字符串的數組應該是指針數組,其中的每一個元素,相當一個指針變量,記錄對應字符串的地址。

老師將下面的程序輸入系統并運行,將結果輸出到銀幕上:

void main()

{char *cc[5]={\"abc\",\"defg\",\"89kp\"},**qqq,***rrr; int u=2;

qqq=cc[u];

rrr=qqq;

cout<

cc[u]=\"kkkkk\";

cout<

*qqq=\"LLLLLLL\";

cout<

**rrr=\"RRRRRRR\";

cout<

}

上面程序運行的結果是:

89kp,89kp,89kp

Kkkkk,kkkkk,kkkkk

LLLLLLL,LLLLLLL,LLLLLLL

RRRRRRR,RRRRRRR,RRRRRRR

到此,老師面對學生應做如下分析:語句char *cc[5]={\"abc\",\"defg\",\"89kp\"}定義了一個指針數組,含5個元素,并且給數組cc做了初始化。這里,數組中的5個元素分別指向不同的字符串,譬如元素cc[2]指向字符串“89kp”。類比以上的例子,我們可以用多重指針指向數組中的各個字符串。在這個例子中,我們用多重指針變量qqq和rrr指向字符串cc[u],qqq直接指向cc[u], 而rrr通過qqq指向cc[u]。

4、總結

講完以上內容之后,老師應組織學生簡單回顧以上的三個例子,并且歸納出結論:任何類型的變量,包括指針變量,都對應一個內存單元,我們均可以依照C++/C語法用指針變量或者多重指針變量指向它們。

(六)教學效果分析

就一般情形而言,引進多重指針主要是為了方便訪問指針數組中的元素,譬如輸入和輸出。具體地說,我們主要讓學生理解并掌握上述的第三個例子。但是在第三個例子中,含字符串、數組及指針等三個重要概念。這三個重要概念,特別是第一和第三個,都是教學難點,如果將它們放在一起討論,無疑提高了學生的理解難度。如果我們直接講解第三個例子,學生只能機械地記憶該例子而不是真正的理解。在這里,我們先引入例(1),將多重指針的概念和變量聯系在一起,而其中的單重指針和變量的關系在引入指針概念時學生已經學過。學生有了指針的概念,將“單重指針和變量的關系”過渡到“多重指針和變量的關系”,其難度應該不會太大。在這個例子中,學生了解了多重指針指向變量的概念及其初步應用。當我們引入第二個例子時,學生對其中的問題有了“似曾相識”之感,只要老師引導學生對字符串的概念加以簡單回顧,學生就可以容易理解該例子并初步掌握多重指針的概念。到了例子(3),老師應強調:“例子(3)和例子(2)類似,不同之處在于:例(2)處理單個字符串,而例(3)處理一組字符串,從本質上說兩例幾乎沒有區別”。通過老師的強調和分析,學生就容易理解例(3)了。到此,學生應該理解和掌握多重指針的概念了,預計的教學目的達到。

二、關于本課堂教學設計的實踐

本文提出的教學設計,是經過多年的教學經歷后提出來的。早期,和教材一致,一開始就舉例子講解二重指針與指針數組的關系。課堂上,學生也能夠積極參與,但在考試時無法解答多重指針問題。應用本設計教學以后,大部分學生對多重指針都能夠理解,面對相關問題時有了信心。

三、結論

本文基于實際情況而設計的“C++/C多重指針課堂教學”,體現了“先易后難”、“循序漸進”等教學原則。在教學實踐中,可結合啟發式教學法實施該教學設計,將會取得預期的教學效果,達到預期的教學目的。

參考文獻:

[1]譚浩強.C++程序設計[M].第一版.北京,清華大學出版社,2004.6

[2]韓海.關于二級指針的進一步討論[J].江漢大學學報,Vol.33, No.1, pp.42-44, Mar., 2005

[3]秦玉平,馬靖善.“C語言程序設計”課程教材建設與教學方法研究[J].計算機教育,No。4,pp.157-160,2010.2.25

[4]楊艷梅,劉心軍.C語言程序設計教學探討[J].信息與電腦,2011.2,pp111

[5]張偉宏.“C語言程序設計”教學方法探討[J].科技文匯,下旬刊,pp.95-96. 2009.11

主站蜘蛛池模板: 扒开粉嫩的小缝隙喷白浆视频| 欧美成人区| 色首页AV在线| 国产成人午夜福利免费无码r| 亚洲天堂久久新| 亚洲精品综合一二三区在线| 久久国产拍爱| 波多野结衣第一页| 免费人欧美成又黄又爽的视频| 亚洲日韩高清在线亚洲专区| 日韩精品专区免费无码aⅴ| 精品国产免费人成在线观看| 538精品在线观看| a天堂视频在线| 国产精品思思热在线| 99热这里只有免费国产精品| 在线观看热码亚洲av每日更新| 18禁色诱爆乳网站| 国产91小视频| 国产99欧美精品久久精品久久| 重口调教一区二区视频| 91视频区| 国产91视频免费观看| 亚洲国产午夜精华无码福利| 日本欧美在线观看| 伊人精品成人久久综合| 天堂va亚洲va欧美va国产| 国产美女久久久久不卡| 国产精品欧美日本韩免费一区二区三区不卡 | 人禽伦免费交视频网页播放| 久久婷婷五月综合97色| 国产精品制服| 伊人久久婷婷五月综合97色| 丰满少妇αⅴ无码区| 极品av一区二区| 四虎在线高清无码| 日韩东京热无码人妻| 一区二区自拍| 国产又大又粗又猛又爽的视频| 国产精品久久久久久影院| 97国产精品视频人人做人人爱| 青青热久麻豆精品视频在线观看| 91精品国产一区| 色成人综合| a天堂视频在线| 色噜噜久久| 欧美视频在线不卡| 玖玖精品在线| 精品1区2区3区| 国产拍揄自揄精品视频网站| 国产成人AV男人的天堂| 亚洲欧美在线综合图区| 素人激情视频福利| 91精品专区| 午夜无码一区二区三区在线app| 91精品人妻互换| 国产国拍精品视频免费看| 欧美一区精品| 亚洲综合日韩精品| 日韩第九页| 91热爆在线| 欧美一区二区啪啪| 亚洲第一国产综合| 婷婷六月综合网| 国产精品网拍在线| 亚洲啪啪网| 在线观看国产精品第一区免费| 国产乱子伦一区二区=| 99久久国产精品无码| 欧美精品啪啪一区二区三区| 在线精品亚洲一区二区古装| 91综合色区亚洲熟妇p| 欧美不卡二区| 无码国产偷倩在线播放老年人| 国产精品久久自在自2021| 欧美精品一区在线看| 亚洲视频黄| 国产在线一区二区视频| 久久无码av一区二区三区| 一区二区三区四区在线| 成人韩免费网站| 伊人久久久久久久|