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

“C語言程序設(shè)計(jì)”課程指針的教學(xué)設(shè)計(jì)

2019-04-17 13:00:46馬振嬰
科教導(dǎo)刊 2019年7期

馬振嬰

摘 要 《C語言程序設(shè)計(jì)》課程的指針概念抽象晦澀,且容易混淆。在教學(xué)中引入游戲、動畫加強(qiáng)課程的趣味性,并采用漸進(jìn)式、對比式和啟發(fā)式方法,提高學(xué)生的主動參與性。關(guān)卡式實(shí)驗(yàn)設(shè)計(jì)和程序改錯(cuò)練習(xí)鞏固了學(xué)生的編程能力。

關(guān)鍵詞 指針 C語言 內(nèi)存地址 數(shù)組 函數(shù)

中圖分類號:G424 文獻(xiàn)標(biāo)識碼:A DOI:10.16400/j.cnki.kjdks.2019.03.047

Abstract In "C programming" course, pointer is abstract, obscure and confusing. Games and animation are used to make the course more interesting, and the progressive, contrast and heuristic methods are applied in order to promote the students' active participation. Level-by-level checkpoint experiment and error-correction practice can improve the students' programming ability.

Keywords pointer; C Language; computer memory; array; function

0 引言

“c語言程序設(shè)計(jì)”的課程內(nèi)容中,指針是公認(rèn)的難點(diǎn)。原因之一是學(xué)生無法理解內(nèi)存地址和存儲計(jì)算的概念,原因之二是傳統(tǒng)的教學(xué)方法生動性和系統(tǒng)性不足。因此,學(xué)生們對這個(gè)章節(jié)有畏難情緒,學(xué)習(xí)積極性極低。針對上述情況,筆者進(jìn)行了教學(xué)和實(shí)踐環(huán)節(jié)的一些設(shè)計(jì),以求拋磚引玉,與大家共勉。

1 課堂教學(xué)環(huán)節(jié)設(shè)計(jì)

1.1 內(nèi)存地址和存儲計(jì)算

傳統(tǒng)教材對計(jì)算機(jī)內(nèi)部數(shù)據(jù)存儲和計(jì)算過程的敘述比較抽象和枯燥,因此筆者設(shè)計(jì)了以游戲的方式來增進(jìn)學(xué)生對這部分內(nèi)容的興趣。用一個(gè)分格的紙盒模擬內(nèi)存,每個(gè)格子用二進(jìn)制地址編號;用卡片代表變量,卡片上寫上變量名和變量值。學(xué)生們兩個(gè)人為一組。一個(gè)同學(xué)隨機(jī)喊出指令,另一個(gè)同學(xué)做出相應(yīng)的動作。例如指令是“int a=0;”同學(xué)必須新建名字為a值為0的卡片放入隨機(jī)空格里。指令是“return 0;” 必須把所有的卡片都從格子中取出。“輸出&a的值;”指令對應(yīng)著念出a變量存放格子的地址。“++*a”指令對應(yīng)著把a(bǔ)變量卡片上的值加1。一輪20條指令,然后再交換角色進(jìn)行。這個(gè)游戲反復(fù)多加練習(xí),有助于同學(xué)們區(qū)分變量名,變量值和地址的概念。

1.2 指針和數(shù)組

這部分教學(xué)采用循序漸進(jìn)的方法,從指針操作一維數(shù)組逐漸遞進(jìn)到二維數(shù)組。

1.2.1 指針與一維數(shù)組

對方格和卡片游戲進(jìn)行升級。由普通變量卡片的隨機(jī)空格存放,變?yōu)閿?shù)組變量卡片的順序存放,數(shù)組變量卡片存放的格子連續(xù)編址。另外開辟空格存放指針變量卡片,并涂上不同的顏色區(qū)分。游戲中用到的指令增加了定義指針變量、指針變量賦值、指針運(yùn)算以及用指針取用一維數(shù)組元素等等操作。

在游戲的基礎(chǔ)上,在課上用動畫的方式給大家演示用循環(huán)控制指針使一維數(shù)組的元素逆序存放,以及一維數(shù)組排序經(jīng)典算法的運(yùn)算過程。動畫和游戲給同學(xué)們帶來了更直觀更生動的體驗(yàn)。

1.2.2 指針與二維數(shù)組

二維數(shù)組的知識點(diǎn)中出現(xiàn)了更多的易混淆概念,宜采用對比法進(jìn)行教學(xué)。

(1)一級地址和二級地址。在二維數(shù)組中,內(nèi)存編址變得更加復(fù)雜,出現(xiàn)了行地址、一級地址和二級地址。數(shù)組名(指向行地址的地址)為一級地址,行地址(指向元素的地址)為二級地址。因此在游戲中增加行指針,一級地址和二級地址的模擬。用二維方格表示二維數(shù)組(邏輯結(jié)構(gòu)),用紅色標(biāo)記一級地址,藍(lán)色標(biāo)記二級地址,并分別模擬指針的縱向(沿行)移動和橫向(沿列)移動。

(2)邏輯結(jié)構(gòu)和物理結(jié)構(gòu)。二維數(shù)組在計(jì)算機(jī)內(nèi)存中的存儲是一維線性的,但是在邏輯上卻表示為m行n列的矩陣形式。這是必須讓學(xué)生明確區(qū)分開的兩個(gè)概念。虛擬的行地址是物理結(jié)構(gòu)向邏輯結(jié)構(gòu)轉(zhuǎn)化的關(guān)鍵。在學(xué)生能夠辨別指針中存儲的是一級還是二級地址后,開始加入邏輯(二維)模式和物理(一維)模式地址之間的相互轉(zhuǎn)化練習(xí),即邏輯模式下的i行j列元素地址對應(yīng)物理模式下的第i*M+j個(gè)元素。

(3)綜合范例演示:用動畫演示用指針操作二維數(shù)組轉(zhuǎn)置的過程。

1.3 指針和函數(shù)

這部分的重點(diǎn)是指針做函數(shù)的參數(shù)。采用漸進(jìn)和對比教學(xué)法,以及啟發(fā)式討論法。先給出兩個(gè)完成相同功能的程序,結(jié)構(gòu)都是主函數(shù)加一個(gè)子函數(shù)。兩個(gè)程序的子函數(shù)分別采用普通變量做參數(shù),以及指針做參數(shù)。提出以下問題并引導(dǎo)學(xué)生分組討論:(1)函數(shù)聲明及定義時(shí)形參寫法的區(qū)別。(2)函數(shù)調(diào)用時(shí)實(shí)參數(shù)據(jù)類型的區(qū)別。(3)傳遞數(shù)組地址和傳遞數(shù)組單元素的區(qū)別。(4)函數(shù)體內(nèi)部對形參處理方式的區(qū)別。(5)函數(shù)計(jì)算結(jié)果返回方式的區(qū)別。學(xué)生完成分組討論后,做得好的小組給予表揚(yáng)和獎(jiǎng)勵(lì),并在全班同學(xué)面前進(jìn)行展示,最后由教師點(diǎn)評。

2 實(shí)驗(yàn)教學(xué)環(huán)節(jié)設(shè)計(jì)

2.1 關(guān)卡式

指針與數(shù)組的實(shí)驗(yàn)設(shè)計(jì)成關(guān)卡式,共三個(gè)關(guān)卡,由簡單到復(fù)雜。實(shí)驗(yàn)內(nèi)容是掃雷游戲的模擬(布雷過程)。

(1)一維區(qū)域布雷。在個(gè)一維格子(用一維數(shù)組模擬)里隨機(jī)布m個(gè)雷,有雷的格子用*表示,無雷的格子用#表示。如圖1。這一關(guān)學(xué)生可以初步體驗(yàn)通過指針移動取用數(shù)組元素的原理。

(2)生成對應(yīng)的數(shù)值矩陣,有雷的格子記9,無雷的格子記該格周圍(左右)所有格子中的雷的數(shù)量。如圖2 。這一關(guān)加強(qiáng)指針對一維數(shù)組的操作練習(xí)。

(3)二維區(qū)域布雷。從n個(gè)元素的一維格子拓展到n*n的二維格子。布雷的規(guī)則同關(guān)卡1和關(guān)卡2,但計(jì)算格子周邊的雷數(shù)目的算法更加復(fù)雜。如圖3和圖4。這一關(guān)學(xué)生練習(xí)用指針操作二維矩陣行,列元素。

2.2 對比式(函數(shù))

指針做函數(shù)參數(shù)的編程錯(cuò)誤率高,容易打擊學(xué)生的信心。因此采用程序改錯(cuò)法,使學(xué)生先了解易錯(cuò)的地方,然后再進(jìn)行正式編程。

改錯(cuò)范例:用指針做函數(shù)參數(shù)的方式實(shí)現(xiàn)數(shù)組的每個(gè)元素加1 。

#include

#define N 3

void addone(float * g); //易錯(cuò)點(diǎn)1

int main()

{

float number[N]={60,75,80};

addone(number); //易錯(cuò)點(diǎn)2

for(int i=0;i

printf(“%.3f\n”,number[i]);

}

void addone(float * g)

{

for(int i=0;i

(*(g+i))++; //易錯(cuò)點(diǎn)3

}

在以上三個(gè)易錯(cuò)點(diǎn),模擬各種出錯(cuò)的可能,反復(fù)讓學(xué)生進(jìn)行程序調(diào)試和改錯(cuò)。然后再讓學(xué)生改寫這個(gè)范例,用void addone(float g[])和float addone(float g)的形式實(shí)現(xiàn)同樣的功能。

3 教學(xué)效果及結(jié)論

《指針》章節(jié)的單元小測平均分為65.326,比去年提高了7.1%。實(shí)驗(yàn)報(bào)告8分以上的同學(xué)人數(shù)占比提高10%。藍(lán)墨云答疑活動的參與人數(shù)和問題數(shù)量分別增加22%和36%。由此可證本文所述教學(xué)設(shè)計(jì)取得了一定的成效,但是仍需要進(jìn)一步提高教學(xué)方式和實(shí)驗(yàn)內(nèi)容的豐富性、趣味性和系統(tǒng)性。

參考文獻(xiàn)

[1] 霍艷玲,王黨利.c語言中指針使用技巧探[J].邢臺職業(yè)技術(shù)學(xué)院學(xué)報(bào),2006.23(5):71-73.

[2] 王必晴.論c語言指針的啟發(fā)式教學(xué)[J].福建電腦,2010(8):40-42.

主站蜘蛛池模板: 国产成人精品在线1区| 欧美午夜在线播放| 爆操波多野结衣| 九色视频一区| 91免费观看视频| 国产精品久久久久婷婷五月| 国产欧美视频在线| 丰满人妻一区二区三区视频| 亚洲网综合| 亚洲欧洲一区二区三区| 激情六月丁香婷婷四房播| 亚洲小视频网站| 国产欧美自拍视频| 国产超碰一区二区三区| 亚洲av成人无码网站在线观看| 亚洲首页在线观看| 国产在线视频福利资源站| 国产丝袜一区二区三区视频免下载| 国产十八禁在线观看免费| aⅴ免费在线观看| 毛片免费视频| 亚洲天堂2014| 2021国产v亚洲v天堂无码| 国产精品欧美日本韩免费一区二区三区不卡 | 亚洲h视频在线| 老司机午夜精品视频你懂的| 亚洲天堂首页| AV老司机AV天堂| 99精品这里只有精品高清视频| 亚洲日本中文字幕乱码中文| 在线色国产| 免费高清毛片| 99热这里只有精品免费| 天堂亚洲网| 国产主播一区二区三区| 亚洲二三区| 日本精品αv中文字幕| 国产亚洲精品无码专| 国产成人毛片| 91精品国产自产在线老师啪l| 天堂在线视频精品| 久久久久久久蜜桃| 99激情网| 国产成人精品高清不卡在线| 国产91丝袜| 日韩高清欧美| 国产激爽大片在线播放| 99在线观看国产| 免费AV在线播放观看18禁强制| 国产精品一区二区无码免费看片| 亚洲二区视频| 久久国产精品国产自线拍| 欧美成人综合视频| 亚洲高清日韩heyzo| 99精品国产高清一区二区| 91国内在线视频| 国产一级在线播放| 91 九色视频丝袜| 国产精品播放| 国产农村精品一级毛片视频| 久久国产精品麻豆系列| 国产精品亚洲va在线观看| 无码乱人伦一区二区亚洲一| 国产精品香蕉在线| 欧美日韩午夜| 国产成+人+综合+亚洲欧美| 91精品国产自产91精品资源| 午夜影院a级片| 青青青国产视频手机| 免费毛片视频| 亚洲成人精品在线| 国产白浆一区二区三区视频在线| 午夜a级毛片| 午夜电影在线观看国产1区| 麻豆精选在线| 国产内射一区亚洲| 国产激情无码一区二区APP| 99人体免费视频| 久久久精品无码一二三区| 欧美色图第一页| 99re免费视频| 成人韩免费网站|