何南思 馬曉晨
摘要:針對(duì)以往C語(yǔ)言程序設(shè)計(jì)課程教學(xué)中存在的語(yǔ)法灌輸式教學(xué)模式,初學(xué)者感到函數(shù)及邏輯概念抽象難懂,導(dǎo)致學(xué)生動(dòng)手能力的培養(yǎng)較弱,語(yǔ)言學(xué)習(xí)效果較差的現(xiàn)狀。文章提出了在程序設(shè)計(jì)教學(xué)中引入模塊教學(xué)法的觀點(diǎn),結(jié)合教學(xué)實(shí)踐過(guò)程說(shuō)明在C語(yǔ)言教學(xué)過(guò)程中如何實(shí)施模塊教學(xué)法,此類教學(xué)方法在高級(jí)語(yǔ)言程序設(shè)計(jì)課程中取得了良好的教學(xué)效果。
關(guān)鍵詞:模塊教學(xué);教學(xué)設(shè)計(jì);程序設(shè)計(jì)語(yǔ)言
由于C語(yǔ)言本身并非是一種大型語(yǔ)言,語(yǔ)法簡(jiǎn)單,應(yīng)用起來(lái)靈活多變,因此從開(kāi)發(fā)至今,與其他語(yǔ)言相比c語(yǔ)言有著十分驚人的生命力,從工業(yè)控制再到大型軟件系統(tǒng)的開(kāi)發(fā),C語(yǔ)言的應(yīng)用方面十分全面。從應(yīng)用和邏輯思維培養(yǎng)方面出發(fā),做好C語(yǔ)言程序設(shè)計(jì)課程的教學(xué)對(duì)于理工科學(xué)生的培養(yǎng)有著十分重要的意義。
基于C語(yǔ)言程序設(shè)計(jì)的教材和教學(xué)方法有很多,多數(shù)教材都是采用以語(yǔ)法作為學(xué)習(xí)入門的切入點(diǎn),教學(xué)方法大多也是依托教材,采用語(yǔ)法灌輸式教學(xué),此類填鴨式教學(xué)方法看似系統(tǒng)性很強(qiáng),但是通過(guò)在教學(xué)調(diào)研過(guò)程中的觀察發(fā)現(xiàn),此類教學(xué)方法的教學(xué)效果不佳。究其原因,主要是作為剛剛接觸程序設(shè)計(jì)和計(jì)算機(jī)語(yǔ)言的學(xué)生來(lái)講,其自身的接受能力是有限的,大批量的學(xué)習(xí)語(yǔ)法,不但不能激發(fā)他們的興趣,反而會(huì)因?yàn)閷W(xué)習(xí)的內(nèi)容較為龐雜使其產(chǎn)生畏難的心里,這樣對(duì)于學(xué)生自學(xué)能力和自信心的培養(yǎng)都是不利的。其次,程序設(shè)計(jì)最終的目的是使學(xué)生形成“算法”思維。在學(xué)生學(xué)習(xí)的入門階段,若采用語(yǔ)法填鴨式教學(xué),容易導(dǎo)致學(xué)生陷入語(yǔ)法的泥潭,不能形成合理的“算法思維”,對(duì)于剛剛?cè)腴T學(xué)生的學(xué)習(xí)是不合理的。作為計(jì)算機(jī)教育工作者,如何改進(jìn)教學(xué)方法以提高學(xué)生學(xué)習(xí)計(jì)算機(jī)編程的興趣,增強(qiáng)學(xué)生動(dòng)手編程能力和工程實(shí)踐能力,需要我們深入思考。根據(jù)上面存在的問(wèn)題,在教學(xué)實(shí)踐過(guò)程中結(jié)合學(xué)生學(xué)習(xí)發(fā)展的需求,我們?cè)O(shè)計(jì)了一種模塊教學(xué)法。
1 模塊教學(xué)法的含義
模塊教學(xué)法可以理解為階段教學(xué)法,首先通過(guò)創(chuàng)設(shè)情景,提出問(wèn)題,激發(fā)學(xué)生的學(xué)習(xí)興趣;通過(guò)知識(shí)點(diǎn)的介紹,將一些模塊化的知識(shí)傳授于學(xué)生,學(xué)生可根據(jù)這些知識(shí)模塊,自由組合知識(shí),構(gòu)建相應(yīng)的項(xiàng)目。十分重要的一點(diǎn),模塊教學(xué)重視知識(shí)的鏈接,不斷加入新的模塊元素,拓展思路,實(shí)現(xiàn)知識(shí)的累積,當(dāng)課程教學(xué)任務(wù)完成后,學(xué)生掌握的不僅僅是分解后的模塊,而是一個(gè)銜接合理的系統(tǒng)的語(yǔ)法知識(shí)網(wǎng)絡(luò)。
2 模塊教學(xué)法的優(yōu)勢(shì)
其一,注重知識(shí)的模塊化構(gòu)建,讓學(xué)生自己動(dòng)手操作,幫助他們構(gòu)建知識(shí)網(wǎng)絡(luò)。其二,模塊教學(xué)法從教學(xué)過(guò)程來(lái)看,采用了“雙主型”混合式學(xué)習(xí)教學(xué)過(guò)程,它吸收了以“教”為主的傳統(tǒng)課堂的理論教學(xué)和以“學(xué)”為主的網(wǎng)絡(luò)課堂的精華,既使教室的教學(xué)主導(dǎo)作用得到充分發(fā)揮,又使得學(xué)生自主學(xué)習(xí)主體地位得到了凸顯,結(jié)合了教師的“主導(dǎo)性”和學(xué)生的“主體性”的教學(xué)過(guò)程。
3 C語(yǔ)言程序設(shè)計(jì)模塊教學(xué)法的實(shí)施
我們根據(jù)教學(xué)目標(biāo),設(shè)計(jì)出符合教學(xué)情境的一些教學(xué)案例。教學(xué)過(guò)程始終圍繞著這些案例(項(xiàng)目)進(jìn)行,案例的選取與應(yīng)用緊密貼合實(shí)際生活。本文以“成績(jī)管理工具軟件”小程序的開(kāi)發(fā)教學(xué)情景為案例,結(jié)合《C語(yǔ)言程序設(shè)計(jì)》教材,介紹模塊教學(xué)法的具體實(shí)踐過(guò)程。
3.1 教學(xué)案例介紹
“成績(jī)管理工具軟件”主要具有的功能:顯示菜單項(xiàng);輸入菜單選項(xiàng),并顯示輸出所選菜單項(xiàng),包括:輸入個(gè)人成績(jī),計(jì)算個(gè)人成績(jī)的平均值,計(jì)算學(xué)分,求班級(jí)成績(jī)平均值,如果輸入為非選項(xiàng)的數(shù)值,則顯示“退出軟件”;如果輸入選項(xiàng)值為選項(xiàng)值,則要輸入學(xué)生成績(jī),并根據(jù)輸入的分?jǐn)?shù)計(jì)算并輸出相應(yīng)的結(jié)果。
這個(gè)軟件案例的選取具有典型性。首先,這個(gè)軟件案例的使用貫穿于C語(yǔ)言程序設(shè)計(jì)課程的入門篇和基礎(chǔ)篇,通過(guò)引入顯示菜單和輸入、輸出功能,介紹了輸入、輸出函數(shù),讓學(xué)生通過(guò)上機(jī)編程實(shí)踐,加強(qiáng)scanf和printf函數(shù)的理論知識(shí)的理解。其次,通過(guò)在“成績(jī)管理工具軟件”案例加入選擇功能,引入了選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu),通過(guò)循環(huán)選項(xiàng)的使用,強(qiáng)化了學(xué)生對(duì)if語(yǔ)句及其嵌套、多分支switch-case語(yǔ)句;通過(guò)選擇結(jié)構(gòu)的使用,強(qiáng)化了學(xué)生對(duì)for語(yǔ)句、while語(yǔ)句的理解,通過(guò)實(shí)例使學(xué)生更深入地了解了各種結(jié)構(gòu)中功能相似函數(shù)的共通點(diǎn)與不同。
3.2 教學(xué)方法流程
整個(gè)軟件案例的教學(xué)模塊選擇以順序——選擇——循環(huán)3個(gè)結(jié)構(gòu)的教學(xué)順序,通過(guò)軟件的分解講授和程序按步驟合,實(shí)現(xiàn)了理論教學(xué)和實(shí)踐教學(xué)的有機(jī)結(jié)合。
3.2.1 順序模塊的教學(xué)
本模塊的教學(xué)從軟件設(shè)計(jì)的需求分析入手,通過(guò)介紹軟件的菜單顯示和輸入、輸出功能,引入順序結(jié)構(gòu)的概念。作為最“自然”的結(jié)構(gòu),順序結(jié)構(gòu)中程序的執(zhí)行是嚴(yán)格實(shí)行“自上而下,由左而右”的順序。在C語(yǔ)言程序中任何程序的執(zhí)行總是“順序”地完成的,所以這種結(jié)構(gòu)不用通過(guò)任何語(yǔ)句來(lái)控制,它也是其他結(jié)構(gòu)的基礎(chǔ),從選擇結(jié)構(gòu)到循環(huán)結(jié)構(gòu)的程序執(zhí)行也都是遵循了“順序結(jié)構(gòu)”。
3.2.2 選擇模塊的教學(xué)
本模塊的教學(xué)從軟件選項(xiàng)的選擇分析入手,在順序模塊教學(xué)的基礎(chǔ)上,通過(guò)介紹選項(xiàng)及其條件的判定,引入選擇、分支結(jié)構(gòu)。選擇結(jié)構(gòu)在程序設(shè)計(jì)中多用來(lái)對(duì)一些條件進(jìn)行限定和選擇,尤其是將其嵌入在循環(huán)體中,可以實(shí)現(xiàn)眾多操作來(lái)供大家進(jìn)行選擇。在此模塊中主要向?qū)W生介紹分支結(jié)構(gòu)的執(zhí)行特點(diǎn),if-else函數(shù)和switch-ease函數(shù)的使用,讓學(xué)生首先形成判定及分支結(jié)構(gòu)的邏輯思維方式,結(jié)合編寫案例程序,理解選擇結(jié)構(gòu)的形式,體會(huì)二分支和多分支兩種選擇結(jié)構(gòu)的區(qū)別,通過(guò)讓學(xué)生分別使用二分支和多分支兩種選擇結(jié)構(gòu)進(jìn)行選項(xiàng)選擇程序的編寫,使其理解if-else語(yǔ)句這種二分支選擇結(jié)構(gòu)和通過(guò)if語(yǔ)句的嵌套和switch語(yǔ)句來(lái)實(shí)現(xiàn)的多分支選擇結(jié)構(gòu)的異同。并將此程序模塊與顯示菜單模塊程序結(jié)合,進(jìn)一步完善成績(jī)管理工具軟件功能。
3.2.3 循環(huán)模塊的教學(xué)
本模塊的教學(xué)從多次計(jì)算入手,以順序模塊和選擇模塊為基礎(chǔ),通過(guò)介紹重復(fù)選擇與計(jì)算的方法,引入循環(huán)結(jié)構(gòu)。在此模塊主要介紹循環(huán)結(jié)構(gòu)的三種不同的形式——while,do-while和for函數(shù),雖然這三個(gè)函數(shù)可實(shí)現(xiàn)相同的功能,但根據(jù)不同問(wèn)題和各自的執(zhí)行特點(diǎn),分別讓學(xué)生進(jìn)行編程實(shí)踐,理解三者在語(yǔ)法結(jié)構(gòu)和運(yùn)行過(guò)程的不同,在構(gòu)建軟件結(jié)構(gòu)的同時(shí)豐富了語(yǔ)法知識(shí)。在編程實(shí)踐過(guò)程中通過(guò)指教教師的指引,將第三個(gè)模塊的程序與前兩個(gè)模塊的程序進(jìn)行銜接,以完成成績(jī)管理工具軟件的全部功能,最終完成軟件的所有設(shè)計(jì)和功能。
4 結(jié)語(yǔ)
通過(guò)三個(gè)結(jié)構(gòu)模塊教學(xué),使學(xué)生在實(shí)踐中強(qiáng)化理論知識(shí)的學(xué)習(xí),不斷提升學(xué)習(xí)興趣,提高學(xué)習(xí)效率,讓學(xué)生在學(xué)中用,在用中學(xué),加強(qiáng)學(xué)習(xí)的印象。同時(shí)將學(xué)生進(jìn)行分組,建立設(shè)計(jì)團(tuán)隊(duì),通過(guò)團(tuán)隊(duì)交流,頭腦風(fēng)暴,讓學(xué)生從自身出發(fā),找出發(fā)生在自身的錯(cuò)誤,分享交流知識(shí),積累經(jīng)驗(yàn)。
基于C語(yǔ)言的程序設(shè)計(jì)課程的教學(xué)過(guò)程可以是多樣化的、方法可以是靈活多變的,但無(wú)論使用何種方法,我們的目的都是讓學(xué)生了解程序的組構(gòu),養(yǎng)成一種編程的思維,通過(guò)學(xué)習(xí)一種語(yǔ)言,拓展他們自行學(xué)習(xí)其他語(yǔ)言的能力。模塊教學(xué)法正是基于上面的教學(xué)需求形成的一種教學(xué)方法,此種教學(xué)方法始終以某個(gè)具體實(shí)踐案例為導(dǎo)向,讓學(xué)生從設(shè)計(jì)需求出發(fā),從簡(jiǎn)單實(shí)例出發(fā),從模仿案例開(kāi)始,不斷提高自身的程序設(shè)計(jì)能力和創(chuàng)造力。通過(guò)教學(xué)調(diào)研此類教學(xué)法對(duì)于培養(yǎng)學(xué)生學(xué)習(xí)計(jì)算機(jī)語(yǔ)言與程序設(shè)計(jì)有著十分良好的效果。