羅愷韻 朱成彪 呂遠(yuǎn)方
摘要:從三本程序設(shè)計(jì)實(shí)踐教學(xué)出發(fā),在教學(xué)中堅(jiān)持“以學(xué)生為主體,教師主導(dǎo)”的原則,通過(guò)多種教學(xué)方法并用,全方位調(diào)動(dòng)學(xué)生參與的積極性,使學(xué)生的學(xué)習(xí)目標(biāo)不再單純定位全國(guó)計(jì)算機(jī)等級(jí)考試,而是能充分理解和掌握計(jì)算機(jī)語(yǔ)言學(xué)習(xí)的方法和規(guī)律,從專業(yè)發(fā)展角度重視計(jì)算思維的培養(yǎng),逐步體驗(yàn)計(jì)算原理的相互影響,享受問(wèn)題有效解決的愉悅。
關(guān)鍵詞:C語(yǔ)言; 程度設(shè)計(jì);教學(xué)方法;計(jì)算思維;非計(jì)算機(jī)專業(yè)
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)17-4101-03
The Teaching Research and Practice in C Programming
LUO Kai-yun, ZHU Cheng-biao, LV Yuan-fang
(Furong College of Hunan University of Arts and Science, Changde 415000, China)
Abstract: From the practical teaching of three-base programming design,insisting on the principle of "student-centered,teacher-led" in the teaching,using various teaching methods together to mobilize comprehensively the enthusiasm of students to participate in, making the students aim at understanding and mastering principles and laws of computer language instead of National Computer Rank Examination simply, emphasizing on cultivating the computational thinking from the perspective of professional development,experiencing gradually the interplay of calculation principles and enjoying the happiness of problems solved effectively.
Key words: c language; programming; teaching methods; computational thinking; non-computer speciality
1 概述
“C語(yǔ)言程序設(shè)計(jì)”作為大學(xué)程序設(shè)計(jì)的入門課程,理論性和實(shí)踐性要求較高,是一門既難教也難學(xué)的公共基礎(chǔ)課。C語(yǔ)言所涉及的概念和語(yǔ)法規(guī)則較多,面對(duì)不斷壓縮課時(shí)的現(xiàn)狀,傳統(tǒng)的“滿堂灌”教學(xué)法使學(xué)生始終處于被動(dòng)接受狀態(tài),學(xué)習(xí)積極性和主動(dòng)性下降,不利于學(xué)生分析問(wèn)題和解決問(wèn)題能力的培養(yǎng)。如何在C程序設(shè)計(jì)教學(xué)中引導(dǎo)非計(jì)算機(jī)專業(yè)學(xué)生克服編程畏懼感,培養(yǎng)計(jì)算思維能力,是我們此次針對(duì)獨(dú)立學(xué)院非計(jì)算機(jī)專業(yè)C語(yǔ)言教學(xué)的改革選題之一。
2 精心設(shè)計(jì)第一堂課,激發(fā)學(xué)生的學(xué)習(xí)興趣
“C語(yǔ)言程序設(shè)計(jì)”是大學(xué)新生進(jìn)校后接觸的第一門程序設(shè)計(jì)語(yǔ)言課程,第一堂課上得好不好,直接關(guān)系到學(xué)生對(duì)課程的認(rèn)可度。我們從五個(gè)方面入手:
2.1 從日常小事入手
和學(xué)生一起探討英文字典中查找單詞SUM的方法:第一種,依次翻頁(yè)找到;第二種,采用順序法,先找到字母S,在范圍內(nèi)依次找U和M;第三種,翻到字典中部,判斷當(dāng)前頁(yè)字母與S的順序,并通過(guò)反復(fù)使用對(duì)數(shù)級(jí)的方式查找、判斷,直至找到單詞。通過(guò)這樣的方式讓學(xué)生了解:程序是解決問(wèn)題的過(guò)程。但計(jì)算機(jī)技術(shù)的重點(diǎn)不全在編程,而是充分利用計(jì)算機(jī)的運(yùn)算能力,將各領(lǐng)域所關(guān)心的問(wèn)題轉(zhuǎn)換成許多簡(jiǎn)單的子問(wèn)題并進(jìn)行求解,程序設(shè)計(jì)是其中的手段。
2.2 讓每個(gè)人都參與的游戲
和學(xué)生一起統(tǒng)計(jì)教室人數(shù):第一步,全體起立,每個(gè)人都代表“1”;第二步,位置最近的兩人將各自的數(shù)字相加求和,先報(bào)出結(jié)果者坐下,另一個(gè)則帶著結(jié)果繼續(xù)戰(zhàn)斗;第三步,重復(fù)第二步。如此循環(huán),最后一位得到的結(jié)果就是教室的總?cè)藬?shù)。這個(gè)過(guò)程不僅渲染課堂氣氛,而且在教師的引導(dǎo)下讓學(xué)生具體感知程序、算法和處理方法。
2.3 展演C語(yǔ)言編寫的小游戲
向?qū)W生展示并讓他們?cè)囃嬷T如俄羅斯方塊、貪食蛇、五子棋等多款C語(yǔ)言編寫的游戲程序,并鼓勵(lì)學(xué)生——只要愿意,每個(gè)人都可以編寫小游戲。通過(guò)發(fā)掘游戲的樂(lè)趣,激發(fā)學(xué)生學(xué)習(xí)C語(yǔ)言程序設(shè)計(jì)的熱情。
2.4 精典咒語(yǔ)“Hello,C!”
通過(guò)對(duì)輸出“Hello,C!”程序代碼的分析,讓學(xué)生明白C語(yǔ)言程序設(shè)計(jì)入門并不困難,從而打消他們心中的畏懼,增強(qiáng)學(xué)習(xí)的自信心。
2.5 總結(jié)C的上天下地的超能力
C語(yǔ)言不是“很高級(jí)”的語(yǔ)言,但因?yàn)橄拗粕?,所以可以處理大部分?jì)算機(jī)能夠處理的對(duì)象:比如字符、數(shù)字和地址;也不“龐大”——較小的篇幅即可描述,表示能力很強(qiáng),非常高效;C語(yǔ)言簡(jiǎn)潔的表達(dá)式,流行的控制流和數(shù)據(jù)結(jié)構(gòu),及豐富的運(yùn)算符集適合編寫各種軟件,通用性強(qiáng),已成為公認(rèn)的令人愉快的通用程序設(shè)計(jì)語(yǔ)言。
3 根據(jù)學(xué)生特點(diǎn),在教學(xué)過(guò)程中多種教學(xué)方法并用
第一堂課后,我們會(huì)針對(duì)學(xué)生的特點(diǎn),并參照專業(yè)特性,多種教學(xué)方法并用,進(jìn)一步提高學(xué)生學(xué)習(xí)熱情及課堂教學(xué)質(zhì)量。
3.1 案例教學(xué)法
我們選用教務(wù)管理系統(tǒng)中的學(xué)生成績(jī)管理部分作為案例,以便讓學(xué)生在理解項(xiàng)目功能及開(kāi)發(fā)過(guò)程中不出現(xiàn)盲點(diǎn),且有機(jī)會(huì)提出建議并實(shí)現(xiàn)。案例的實(shí)現(xiàn)貫穿了整個(gè)C語(yǔ)言的教學(xué)過(guò)程(如表1):endprint
通過(guò)這樣的方式,改變了傳統(tǒng)教學(xué)中理論與實(shí)踐脫節(jié)的局面。每一階段教學(xué)中都呈現(xiàn)一段相對(duì)完整的程序,前一階段的結(jié)果成為下一階段教學(xué)的基礎(chǔ),下一階段的工作又對(duì)前一階段的成果進(jìn)行改進(jìn)和完善。學(xué)生也在知識(shí)點(diǎn)的反復(fù)使用中不斷加深對(duì)基礎(chǔ)理論的理解,并借助案例和技能訓(xùn)練,逐步學(xué)會(huì)思考,有效提升問(wèn)題求解能力、動(dòng)手能力及團(tuán)隊(duì)協(xié)作精神。
3.2 問(wèn)題教學(xué)法
由于學(xué)生的整體知識(shí)架構(gòu)不穩(wěn)固,我們創(chuàng)建問(wèn)題時(shí)既要考慮鞏固已學(xué)知識(shí)點(diǎn),又要嘗試通過(guò)學(xué)生解決問(wèn)題時(shí)在認(rèn)知上的沖突,來(lái)激發(fā)他們的學(xué)習(xí)興趣,并主動(dòng)進(jìn)行探索求解。比如我們?cè)谔接憽皸l件語(yǔ)句表達(dá)式”時(shí),創(chuàng)建了如下程序:
#include
main()
{int a=0,x=35;
printf("條件判斷之前x的值為:%d\n",x);
if (!a) x=3;
else x=4;
printf("條件判斷之后x的值為:%d\n",x);}
大多學(xué)生的答案是:條件判斷之前x值為35,之后x值為4。而正確結(jié)果是:條件語(yǔ)句之前x值為35,之后x值為3。
答案完全出乎學(xué)生的意料。這種“沖擊”讓學(xué)生的學(xué)習(xí)欲望高漲,他們會(huì)主動(dòng)向教師闡述對(duì)已學(xué)知識(shí)點(diǎn)的理解及得出答案的理由,并請(qǐng)求教師共同分析原因,為教師的知識(shí)講述埋下了絕佳伏筆。學(xué)生也在解決問(wèn)題的過(guò)程中,不斷鞏固知識(shí)點(diǎn)、領(lǐng)會(huì)計(jì)算思維方式并運(yùn)用所學(xué)解決問(wèn)題,最終完成自我構(gòu)建知識(shí)的過(guò)程。
3.3 類比式教學(xué)
指針是C語(yǔ)言中的一個(gè)重要概念。因?yàn)樯婕皟?nèi)存的動(dòng)態(tài)分配,加之經(jīng)常與鏈表等動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)搭配使用,其強(qiáng)大靈活的數(shù)據(jù)操縱方式一直讓學(xué)生望而生畏。通過(guò)實(shí)際教學(xué),我們發(fā)現(xiàn)在講解存儲(chǔ)單元、存儲(chǔ)單元地址及存儲(chǔ)單元內(nèi)容等基本概念時(shí)運(yùn)用類比法效果較好——學(xué)生宿舍恰似一個(gè)個(gè)存儲(chǔ)單元,宿舍號(hào)就是存儲(chǔ)單元的地址,宿舍里的學(xué)生就是存儲(chǔ)單元的內(nèi)容。當(dāng)我們要找到某位學(xué)生時(shí),只要知道他(她)所在的宿舍號(hào)即可。相應(yīng)的,要使用存儲(chǔ)單元中的數(shù)據(jù)就必須知道存儲(chǔ)單元的地址,只不過(guò)指針地址用了一個(gè)變量存放,這個(gè)變量即指針變量。通過(guò)類比,將抽象的問(wèn)題具體化,學(xué)生在理解指針即地址時(shí)更容易。在此基礎(chǔ)上,可以進(jìn)一步對(duì)比指針類型和一般數(shù)據(jù)類型的特性,讓學(xué)生發(fā)現(xiàn)指針操縱簡(jiǎn)單變量的用處,更好地理解指針如何處理多字節(jié)變量等內(nèi)容。
3.4 啟發(fā)式教學(xué)
教學(xué)過(guò)程中根據(jù)教學(xué)任務(wù)和學(xué)生的實(shí)際情況,適當(dāng)采用啟發(fā)法,能調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性和主動(dòng)性。比如,我們會(huì)利用求1+2+3+…+100的值來(lái)講解程序循環(huán)結(jié)構(gòu)。這是一個(gè)循環(huán)累加問(wèn)題,每次循環(huán)累加一個(gè)遞增的自然數(shù),經(jīng)過(guò)100次循環(huán)后,得到這個(gè)數(shù)列之和。我們會(huì)讓學(xué)生思考后再表述他們的想法,自然引出課堂的知識(shí)點(diǎn)——循環(huán)和嵌套循環(huán),然后讓學(xué)生根據(jù)知識(shí)點(diǎn),確定循環(huán)條件(i<=100),循環(huán)體(sum+=i)及循環(huán)增量(i++),并嘗試用while循環(huán)、do while循環(huán)和for循環(huán)分別寫出程序,以區(qū)分異同及各自優(yōu)勢(shì)。
在此基礎(chǔ)上,通過(guò)求表達(dá)式1+3+5+…+99的值,提示學(xué)生注意由于步長(zhǎng)值的變換,程序中循環(huán)增量就由i++變成了i+2。繼續(xù)增加難度,讓學(xué)生發(fā)現(xiàn)在求表達(dá)式l-2+3-4+…-100的值時(shí),數(shù)列的相加項(xiàng)呈加減交替,在相加項(xiàng)中增加變量t即可解決符號(hào)變換的問(wèn)題。增設(shè)的t項(xiàng)初始值為1,相加項(xiàng)表示成t*i,i仍是一個(gè)遞增序列,循環(huán)一次后t=-t,循環(huán)體也就相應(yīng)變成了sum+=t*i。這樣由淺入深的引導(dǎo)讓學(xué)生比較容易理解問(wèn)題,并產(chǎn)生一定興趣。很多時(shí)候,他們會(huì)主動(dòng)要求進(jìn)一步增加難度。我們也會(huì)將類似求表達(dá)式1!+2!+3!+…+100!的值,或是求表達(dá)式1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+…+(1*2*3*…*n)/(3*5*7*…*(2*n+1))的值這類題目拋給大家。不僅活躍了課堂氣氛,也使得一題多解多問(wèn),達(dá)到從點(diǎn)到面啟發(fā)學(xué)生主動(dòng)思考,逐步從“授人以魚”到“授人以漁”的教學(xué)轉(zhuǎn)變。
4 課外延伸展望
對(duì)初學(xué)者而言,理解程序設(shè)計(jì)的思想和能動(dòng)手編程是兩碼事。在編程中他們不可避免地會(huì)遇到很多的困難,如果得不到及時(shí)的幫助,一定會(huì)影響學(xué)習(xí)的信心和興趣。我們?cè)诒A魝鹘y(tǒng)的師生面對(duì)面答疑基礎(chǔ)上,又增加了網(wǎng)絡(luò)在線答疑方式,集課堂、實(shí)驗(yàn)、網(wǎng)絡(luò)教學(xué)于一體,拓展“教”與“學(xué)”的空間和時(shí)間。并嘗試籌建學(xué)生俱樂(lè)部,由學(xué)生自行組織、管理,主要是針對(duì)各級(jí)賽事、科技創(chuàng)新和應(yīng)用性軟件項(xiàng)目開(kāi)發(fā),教師僅僅提供稍許業(yè)余指導(dǎo),真正實(shí)現(xiàn)學(xué)生的主體作用。
5 結(jié)束語(yǔ)
“C語(yǔ)言程序設(shè)計(jì)”課程的理論性和實(shí)踐性要求較高,在實(shí)際的教學(xué)過(guò)程中必須針對(duì)學(xué)生的層次,結(jié)合專業(yè)的需求,充分選用各種有效的教學(xué)方法調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性,提高自覺(jué)能力,使學(xué)生真正地成為課堂內(nèi)外的“主體”,教師則輔以“主導(dǎo)”角色最大程度地提高教學(xué)質(zhì)量。
課題組在C語(yǔ)言課程的教學(xué)實(shí)踐中注重了學(xué)生心理的把握,并針對(duì)不同知識(shí)點(diǎn)采用相宜的教學(xué)方法,收效良好,具體表現(xiàn):①教學(xué)有的放矢,學(xué)生自信增加。針對(duì)三本學(xué)生的具體情況,我們?cè)O(shè)立的課程目標(biāo)是:讓每個(gè)學(xué)生都聽(tīng)得懂,愿意聽(tīng),并逐漸進(jìn)行自覺(jué)思考。教學(xué)中,我們充分考慮學(xué)生在理解知識(shí)點(diǎn)中可能出現(xiàn)的問(wèn)題,利用多種教學(xué)方法從他們能理解的角度著手講解、引導(dǎo),使學(xué)生逐步加深對(duì)C語(yǔ)言的認(rèn)知。課題實(shí)踐后,我院C語(yǔ)言程序設(shè)計(jì)課程的逃課率急劇下降,并激發(fā)了部分學(xué)生學(xué)習(xí)程序設(shè)計(jì)的興趣和創(chuàng)造性。②突出重點(diǎn),提高效率。盡管我院C語(yǔ)言程序設(shè)計(jì)的教學(xué)課時(shí)在逐年遞減,課程中還不斷增加一些關(guān)于C++面向?qū)ο蟮膬?nèi)容,由于把握了C語(yǔ)言教學(xué)中重點(diǎn),并與學(xué)生有效溝通,使得課程通過(guò)率并不低于過(guò)往。③學(xué)生綜合應(yīng)用能力整體提升。由于學(xué)生對(duì)C語(yǔ)言特性的理解及應(yīng)用方法掌握較好,實(shí)驗(yàn)課時(shí)能較為準(zhǔn)確地發(fā)現(xiàn)編程中的常見(jiàn)錯(cuò)誤,并對(duì)程序調(diào)試有了一定的想法,團(tuán)隊(duì)協(xié)作能力也進(jìn)一步增強(qiáng)。
參考文獻(xiàn):
[1] 蘇小紅,陳惠鵬,孫志崗. C語(yǔ)言大學(xué)實(shí)用教程[M].2版.北京:電子工業(yè)出版社,2011.
[2] 譚浩強(qiáng). C語(yǔ)言程序設(shè)計(jì)[M]. 北京:清華大學(xué)出版社,2008.
[3] Brian W. Kernighan, Dennis M. Ritchie. C程序設(shè)計(jì)語(yǔ)言[M].2版.北京:機(jī)械工業(yè)出版社,2012.
[4] 陳國(guó)良,董榮勝. 計(jì)算思維與大學(xué)計(jì)算機(jī)基礎(chǔ)教育[J]. 中國(guó)大學(xué)教育, 2012(1):7-11.
[5] 馬英. C語(yǔ)言程序設(shè)計(jì)課教學(xué)之我見(jiàn)[J]. 山西財(cái)經(jīng)大學(xué)學(xué)報(bào),2011,33(2):131-132.
通過(guò)這樣的方式,改變了傳統(tǒng)教學(xué)中理論與實(shí)踐脫節(jié)的局面。每一階段教學(xué)中都呈現(xiàn)一段相對(duì)完整的程序,前一階段的結(jié)果成為下一階段教學(xué)的基礎(chǔ),下一階段的工作又對(duì)前一階段的成果進(jìn)行改進(jìn)和完善。學(xué)生也在知識(shí)點(diǎn)的反復(fù)使用中不斷加深對(duì)基礎(chǔ)理論的理解,并借助案例和技能訓(xùn)練,逐步學(xué)會(huì)思考,有效提升問(wèn)題求解能力、動(dòng)手能力及團(tuán)隊(duì)協(xié)作精神。
3.2 問(wèn)題教學(xué)法
由于學(xué)生的整體知識(shí)架構(gòu)不穩(wěn)固,我們創(chuàng)建問(wèn)題時(shí)既要考慮鞏固已學(xué)知識(shí)點(diǎn),又要嘗試通過(guò)學(xué)生解決問(wèn)題時(shí)在認(rèn)知上的沖突,來(lái)激發(fā)他們的學(xué)習(xí)興趣,并主動(dòng)進(jìn)行探索求解。比如我們?cè)谔接憽皸l件語(yǔ)句表達(dá)式”時(shí),創(chuàng)建了如下程序:
#include
main()
{int a=0,x=35;
printf("條件判斷之前x的值為:%d\n",x);
if (!a) x=3;
else x=4;
printf("條件判斷之后x的值為:%d\n",x);}
大多學(xué)生的答案是:條件判斷之前x值為35,之后x值為4。而正確結(jié)果是:條件語(yǔ)句之前x值為35,之后x值為3。
答案完全出乎學(xué)生的意料。這種“沖擊”讓學(xué)生的學(xué)習(xí)欲望高漲,他們會(huì)主動(dòng)向教師闡述對(duì)已學(xué)知識(shí)點(diǎn)的理解及得出答案的理由,并請(qǐng)求教師共同分析原因,為教師的知識(shí)講述埋下了絕佳伏筆。學(xué)生也在解決問(wèn)題的過(guò)程中,不斷鞏固知識(shí)點(diǎn)、領(lǐng)會(huì)計(jì)算思維方式并運(yùn)用所學(xué)解決問(wèn)題,最終完成自我構(gòu)建知識(shí)的過(guò)程。
3.3 類比式教學(xué)
指針是C語(yǔ)言中的一個(gè)重要概念。因?yàn)樯婕皟?nèi)存的動(dòng)態(tài)分配,加之經(jīng)常與鏈表等動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)搭配使用,其強(qiáng)大靈活的數(shù)據(jù)操縱方式一直讓學(xué)生望而生畏。通過(guò)實(shí)際教學(xué),我們發(fā)現(xiàn)在講解存儲(chǔ)單元、存儲(chǔ)單元地址及存儲(chǔ)單元內(nèi)容等基本概念時(shí)運(yùn)用類比法效果較好——學(xué)生宿舍恰似一個(gè)個(gè)存儲(chǔ)單元,宿舍號(hào)就是存儲(chǔ)單元的地址,宿舍里的學(xué)生就是存儲(chǔ)單元的內(nèi)容。當(dāng)我們要找到某位學(xué)生時(shí),只要知道他(她)所在的宿舍號(hào)即可。相應(yīng)的,要使用存儲(chǔ)單元中的數(shù)據(jù)就必須知道存儲(chǔ)單元的地址,只不過(guò)指針地址用了一個(gè)變量存放,這個(gè)變量即指針變量。通過(guò)類比,將抽象的問(wèn)題具體化,學(xué)生在理解指針即地址時(shí)更容易。在此基礎(chǔ)上,可以進(jìn)一步對(duì)比指針類型和一般數(shù)據(jù)類型的特性,讓學(xué)生發(fā)現(xiàn)指針操縱簡(jiǎn)單變量的用處,更好地理解指針如何處理多字節(jié)變量等內(nèi)容。
3.4 啟發(fā)式教學(xué)
教學(xué)過(guò)程中根據(jù)教學(xué)任務(wù)和學(xué)生的實(shí)際情況,適當(dāng)采用啟發(fā)法,能調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性和主動(dòng)性。比如,我們會(huì)利用求1+2+3+…+100的值來(lái)講解程序循環(huán)結(jié)構(gòu)。這是一個(gè)循環(huán)累加問(wèn)題,每次循環(huán)累加一個(gè)遞增的自然數(shù),經(jīng)過(guò)100次循環(huán)后,得到這個(gè)數(shù)列之和。我們會(huì)讓學(xué)生思考后再表述他們的想法,自然引出課堂的知識(shí)點(diǎn)——循環(huán)和嵌套循環(huán),然后讓學(xué)生根據(jù)知識(shí)點(diǎn),確定循環(huán)條件(i<=100),循環(huán)體(sum+=i)及循環(huán)增量(i++),并嘗試用while循環(huán)、do while循環(huán)和for循環(huán)分別寫出程序,以區(qū)分異同及各自優(yōu)勢(shì)。
在此基礎(chǔ)上,通過(guò)求表達(dá)式1+3+5+…+99的值,提示學(xué)生注意由于步長(zhǎng)值的變換,程序中循環(huán)增量就由i++變成了i+2。繼續(xù)增加難度,讓學(xué)生發(fā)現(xiàn)在求表達(dá)式l-2+3-4+…-100的值時(shí),數(shù)列的相加項(xiàng)呈加減交替,在相加項(xiàng)中增加變量t即可解決符號(hào)變換的問(wèn)題。增設(shè)的t項(xiàng)初始值為1,相加項(xiàng)表示成t*i,i仍是一個(gè)遞增序列,循環(huán)一次后t=-t,循環(huán)體也就相應(yīng)變成了sum+=t*i。這樣由淺入深的引導(dǎo)讓學(xué)生比較容易理解問(wèn)題,并產(chǎn)生一定興趣。很多時(shí)候,他們會(huì)主動(dòng)要求進(jìn)一步增加難度。我們也會(huì)將類似求表達(dá)式1!+2!+3!+…+100!的值,或是求表達(dá)式1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+…+(1*2*3*…*n)/(3*5*7*…*(2*n+1))的值這類題目拋給大家。不僅活躍了課堂氣氛,也使得一題多解多問(wèn),達(dá)到從點(diǎn)到面啟發(fā)學(xué)生主動(dòng)思考,逐步從“授人以魚”到“授人以漁”的教學(xué)轉(zhuǎn)變。
4 課外延伸展望
對(duì)初學(xué)者而言,理解程序設(shè)計(jì)的思想和能動(dòng)手編程是兩碼事。在編程中他們不可避免地會(huì)遇到很多的困難,如果得不到及時(shí)的幫助,一定會(huì)影響學(xué)習(xí)的信心和興趣。我們?cè)诒A魝鹘y(tǒng)的師生面對(duì)面答疑基礎(chǔ)上,又增加了網(wǎng)絡(luò)在線答疑方式,集課堂、實(shí)驗(yàn)、網(wǎng)絡(luò)教學(xué)于一體,拓展“教”與“學(xué)”的空間和時(shí)間。并嘗試籌建學(xué)生俱樂(lè)部,由學(xué)生自行組織、管理,主要是針對(duì)各級(jí)賽事、科技創(chuàng)新和應(yīng)用性軟件項(xiàng)目開(kāi)發(fā),教師僅僅提供稍許業(yè)余指導(dǎo),真正實(shí)現(xiàn)學(xué)生的主體作用。
5 結(jié)束語(yǔ)
“C語(yǔ)言程序設(shè)計(jì)”課程的理論性和實(shí)踐性要求較高,在實(shí)際的教學(xué)過(guò)程中必須針對(duì)學(xué)生的層次,結(jié)合專業(yè)的需求,充分選用各種有效的教學(xué)方法調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性,提高自覺(jué)能力,使學(xué)生真正地成為課堂內(nèi)外的“主體”,教師則輔以“主導(dǎo)”角色最大程度地提高教學(xué)質(zhì)量。
課題組在C語(yǔ)言課程的教學(xué)實(shí)踐中注重了學(xué)生心理的把握,并針對(duì)不同知識(shí)點(diǎn)采用相宜的教學(xué)方法,收效良好,具體表現(xiàn):①教學(xué)有的放矢,學(xué)生自信增加。針對(duì)三本學(xué)生的具體情況,我們?cè)O(shè)立的課程目標(biāo)是:讓每個(gè)學(xué)生都聽(tīng)得懂,愿意聽(tīng),并逐漸進(jìn)行自覺(jué)思考。教學(xué)中,我們充分考慮學(xué)生在理解知識(shí)點(diǎn)中可能出現(xiàn)的問(wèn)題,利用多種教學(xué)方法從他們能理解的角度著手講解、引導(dǎo),使學(xué)生逐步加深對(duì)C語(yǔ)言的認(rèn)知。課題實(shí)踐后,我院C語(yǔ)言程序設(shè)計(jì)課程的逃課率急劇下降,并激發(fā)了部分學(xué)生學(xué)習(xí)程序設(shè)計(jì)的興趣和創(chuàng)造性。②突出重點(diǎn),提高效率。盡管我院C語(yǔ)言程序設(shè)計(jì)的教學(xué)課時(shí)在逐年遞減,課程中還不斷增加一些關(guān)于C++面向?qū)ο蟮膬?nèi)容,由于把握了C語(yǔ)言教學(xué)中重點(diǎn),并與學(xué)生有效溝通,使得課程通過(guò)率并不低于過(guò)往。③學(xué)生綜合應(yīng)用能力整體提升。由于學(xué)生對(duì)C語(yǔ)言特性的理解及應(yīng)用方法掌握較好,實(shí)驗(yàn)課時(shí)能較為準(zhǔn)確地發(fā)現(xiàn)編程中的常見(jiàn)錯(cuò)誤,并對(duì)程序調(diào)試有了一定的想法,團(tuán)隊(duì)協(xié)作能力也進(jìn)一步增強(qiáng)。
參考文獻(xiàn):
[1] 蘇小紅,陳惠鵬,孫志崗. C語(yǔ)言大學(xué)實(shí)用教程[M].2版.北京:電子工業(yè)出版社,2011.
[2] 譚浩強(qiáng). C語(yǔ)言程序設(shè)計(jì)[M]. 北京:清華大學(xué)出版社,2008.
[3] Brian W. Kernighan, Dennis M. Ritchie. C程序設(shè)計(jì)語(yǔ)言[M].2版.北京:機(jī)械工業(yè)出版社,2012.
[4] 陳國(guó)良,董榮勝. 計(jì)算思維與大學(xué)計(jì)算機(jī)基礎(chǔ)教育[J]. 中國(guó)大學(xué)教育, 2012(1):7-11.
[5] 馬英. C語(yǔ)言程序設(shè)計(jì)課教學(xué)之我見(jiàn)[J]. 山西財(cái)經(jīng)大學(xué)學(xué)報(bào),2011,33(2):131-132.
通過(guò)這樣的方式,改變了傳統(tǒng)教學(xué)中理論與實(shí)踐脫節(jié)的局面。每一階段教學(xué)中都呈現(xiàn)一段相對(duì)完整的程序,前一階段的結(jié)果成為下一階段教學(xué)的基礎(chǔ),下一階段的工作又對(duì)前一階段的成果進(jìn)行改進(jìn)和完善。學(xué)生也在知識(shí)點(diǎn)的反復(fù)使用中不斷加深對(duì)基礎(chǔ)理論的理解,并借助案例和技能訓(xùn)練,逐步學(xué)會(huì)思考,有效提升問(wèn)題求解能力、動(dòng)手能力及團(tuán)隊(duì)協(xié)作精神。
3.2 問(wèn)題教學(xué)法
由于學(xué)生的整體知識(shí)架構(gòu)不穩(wěn)固,我們創(chuàng)建問(wèn)題時(shí)既要考慮鞏固已學(xué)知識(shí)點(diǎn),又要嘗試通過(guò)學(xué)生解決問(wèn)題時(shí)在認(rèn)知上的沖突,來(lái)激發(fā)他們的學(xué)習(xí)興趣,并主動(dòng)進(jìn)行探索求解。比如我們?cè)谔接憽皸l件語(yǔ)句表達(dá)式”時(shí),創(chuàng)建了如下程序:
#include
main()
{int a=0,x=35;
printf("條件判斷之前x的值為:%d\n",x);
if (!a) x=3;
else x=4;
printf("條件判斷之后x的值為:%d\n",x);}
大多學(xué)生的答案是:條件判斷之前x值為35,之后x值為4。而正確結(jié)果是:條件語(yǔ)句之前x值為35,之后x值為3。
答案完全出乎學(xué)生的意料。這種“沖擊”讓學(xué)生的學(xué)習(xí)欲望高漲,他們會(huì)主動(dòng)向教師闡述對(duì)已學(xué)知識(shí)點(diǎn)的理解及得出答案的理由,并請(qǐng)求教師共同分析原因,為教師的知識(shí)講述埋下了絕佳伏筆。學(xué)生也在解決問(wèn)題的過(guò)程中,不斷鞏固知識(shí)點(diǎn)、領(lǐng)會(huì)計(jì)算思維方式并運(yùn)用所學(xué)解決問(wèn)題,最終完成自我構(gòu)建知識(shí)的過(guò)程。
3.3 類比式教學(xué)
指針是C語(yǔ)言中的一個(gè)重要概念。因?yàn)樯婕皟?nèi)存的動(dòng)態(tài)分配,加之經(jīng)常與鏈表等動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)搭配使用,其強(qiáng)大靈活的數(shù)據(jù)操縱方式一直讓學(xué)生望而生畏。通過(guò)實(shí)際教學(xué),我們發(fā)現(xiàn)在講解存儲(chǔ)單元、存儲(chǔ)單元地址及存儲(chǔ)單元內(nèi)容等基本概念時(shí)運(yùn)用類比法效果較好——學(xué)生宿舍恰似一個(gè)個(gè)存儲(chǔ)單元,宿舍號(hào)就是存儲(chǔ)單元的地址,宿舍里的學(xué)生就是存儲(chǔ)單元的內(nèi)容。當(dāng)我們要找到某位學(xué)生時(shí),只要知道他(她)所在的宿舍號(hào)即可。相應(yīng)的,要使用存儲(chǔ)單元中的數(shù)據(jù)就必須知道存儲(chǔ)單元的地址,只不過(guò)指針地址用了一個(gè)變量存放,這個(gè)變量即指針變量。通過(guò)類比,將抽象的問(wèn)題具體化,學(xué)生在理解指針即地址時(shí)更容易。在此基礎(chǔ)上,可以進(jìn)一步對(duì)比指針類型和一般數(shù)據(jù)類型的特性,讓學(xué)生發(fā)現(xiàn)指針操縱簡(jiǎn)單變量的用處,更好地理解指針如何處理多字節(jié)變量等內(nèi)容。
3.4 啟發(fā)式教學(xué)
教學(xué)過(guò)程中根據(jù)教學(xué)任務(wù)和學(xué)生的實(shí)際情況,適當(dāng)采用啟發(fā)法,能調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性和主動(dòng)性。比如,我們會(huì)利用求1+2+3+…+100的值來(lái)講解程序循環(huán)結(jié)構(gòu)。這是一個(gè)循環(huán)累加問(wèn)題,每次循環(huán)累加一個(gè)遞增的自然數(shù),經(jīng)過(guò)100次循環(huán)后,得到這個(gè)數(shù)列之和。我們會(huì)讓學(xué)生思考后再表述他們的想法,自然引出課堂的知識(shí)點(diǎn)——循環(huán)和嵌套循環(huán),然后讓學(xué)生根據(jù)知識(shí)點(diǎn),確定循環(huán)條件(i<=100),循環(huán)體(sum+=i)及循環(huán)增量(i++),并嘗試用while循環(huán)、do while循環(huán)和for循環(huán)分別寫出程序,以區(qū)分異同及各自優(yōu)勢(shì)。
在此基礎(chǔ)上,通過(guò)求表達(dá)式1+3+5+…+99的值,提示學(xué)生注意由于步長(zhǎng)值的變換,程序中循環(huán)增量就由i++變成了i+2。繼續(xù)增加難度,讓學(xué)生發(fā)現(xiàn)在求表達(dá)式l-2+3-4+…-100的值時(shí),數(shù)列的相加項(xiàng)呈加減交替,在相加項(xiàng)中增加變量t即可解決符號(hào)變換的問(wèn)題。增設(shè)的t項(xiàng)初始值為1,相加項(xiàng)表示成t*i,i仍是一個(gè)遞增序列,循環(huán)一次后t=-t,循環(huán)體也就相應(yīng)變成了sum+=t*i。這樣由淺入深的引導(dǎo)讓學(xué)生比較容易理解問(wèn)題,并產(chǎn)生一定興趣。很多時(shí)候,他們會(huì)主動(dòng)要求進(jìn)一步增加難度。我們也會(huì)將類似求表達(dá)式1!+2!+3!+…+100!的值,或是求表達(dá)式1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+…+(1*2*3*…*n)/(3*5*7*…*(2*n+1))的值這類題目拋給大家。不僅活躍了課堂氣氛,也使得一題多解多問(wèn),達(dá)到從點(diǎn)到面啟發(fā)學(xué)生主動(dòng)思考,逐步從“授人以魚”到“授人以漁”的教學(xué)轉(zhuǎn)變。
4 課外延伸展望
對(duì)初學(xué)者而言,理解程序設(shè)計(jì)的思想和能動(dòng)手編程是兩碼事。在編程中他們不可避免地會(huì)遇到很多的困難,如果得不到及時(shí)的幫助,一定會(huì)影響學(xué)習(xí)的信心和興趣。我們?cè)诒A魝鹘y(tǒng)的師生面對(duì)面答疑基礎(chǔ)上,又增加了網(wǎng)絡(luò)在線答疑方式,集課堂、實(shí)驗(yàn)、網(wǎng)絡(luò)教學(xué)于一體,拓展“教”與“學(xué)”的空間和時(shí)間。并嘗試籌建學(xué)生俱樂(lè)部,由學(xué)生自行組織、管理,主要是針對(duì)各級(jí)賽事、科技創(chuàng)新和應(yīng)用性軟件項(xiàng)目開(kāi)發(fā),教師僅僅提供稍許業(yè)余指導(dǎo),真正實(shí)現(xiàn)學(xué)生的主體作用。
5 結(jié)束語(yǔ)
“C語(yǔ)言程序設(shè)計(jì)”課程的理論性和實(shí)踐性要求較高,在實(shí)際的教學(xué)過(guò)程中必須針對(duì)學(xué)生的層次,結(jié)合專業(yè)的需求,充分選用各種有效的教學(xué)方法調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性,提高自覺(jué)能力,使學(xué)生真正地成為課堂內(nèi)外的“主體”,教師則輔以“主導(dǎo)”角色最大程度地提高教學(xué)質(zhì)量。
課題組在C語(yǔ)言課程的教學(xué)實(shí)踐中注重了學(xué)生心理的把握,并針對(duì)不同知識(shí)點(diǎn)采用相宜的教學(xué)方法,收效良好,具體表現(xiàn):①教學(xué)有的放矢,學(xué)生自信增加。針對(duì)三本學(xué)生的具體情況,我們?cè)O(shè)立的課程目標(biāo)是:讓每個(gè)學(xué)生都聽(tīng)得懂,愿意聽(tīng),并逐漸進(jìn)行自覺(jué)思考。教學(xué)中,我們充分考慮學(xué)生在理解知識(shí)點(diǎn)中可能出現(xiàn)的問(wèn)題,利用多種教學(xué)方法從他們能理解的角度著手講解、引導(dǎo),使學(xué)生逐步加深對(duì)C語(yǔ)言的認(rèn)知。課題實(shí)踐后,我院C語(yǔ)言程序設(shè)計(jì)課程的逃課率急劇下降,并激發(fā)了部分學(xué)生學(xué)習(xí)程序設(shè)計(jì)的興趣和創(chuàng)造性。②突出重點(diǎn),提高效率。盡管我院C語(yǔ)言程序設(shè)計(jì)的教學(xué)課時(shí)在逐年遞減,課程中還不斷增加一些關(guān)于C++面向?qū)ο蟮膬?nèi)容,由于把握了C語(yǔ)言教學(xué)中重點(diǎn),并與學(xué)生有效溝通,使得課程通過(guò)率并不低于過(guò)往。③學(xué)生綜合應(yīng)用能力整體提升。由于學(xué)生對(duì)C語(yǔ)言特性的理解及應(yīng)用方法掌握較好,實(shí)驗(yàn)課時(shí)能較為準(zhǔn)確地發(fā)現(xiàn)編程中的常見(jiàn)錯(cuò)誤,并對(duì)程序調(diào)試有了一定的想法,團(tuán)隊(duì)協(xié)作能力也進(jìn)一步增強(qiáng)。
參考文獻(xiàn):
[1] 蘇小紅,陳惠鵬,孫志崗. C語(yǔ)言大學(xué)實(shí)用教程[M].2版.北京:電子工業(yè)出版社,2011.
[2] 譚浩強(qiáng). C語(yǔ)言程序設(shè)計(jì)[M]. 北京:清華大學(xué)出版社,2008.
[3] Brian W. Kernighan, Dennis M. Ritchie. C程序設(shè)計(jì)語(yǔ)言[M].2版.北京:機(jī)械工業(yè)出版社,2012.
[4] 陳國(guó)良,董榮勝. 計(jì)算思維與大學(xué)計(jì)算機(jī)基礎(chǔ)教育[J]. 中國(guó)大學(xué)教育, 2012(1):7-11.
[5] 馬英. C語(yǔ)言程序設(shè)計(jì)課教學(xué)之我見(jiàn)[J]. 山西財(cái)經(jīng)大學(xué)學(xué)報(bào),2011,33(2):131-132.