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