李鑫 謝健
摘要“C程序設(shè)計(jì)”是計(jì)算機(jī)類(lèi)專(zhuān)業(yè)新生最早接觸的專(zhuān)業(yè)基礎(chǔ)課之一,是否能以一種恰當(dāng)?shù)姆绞綄W(xué)生引入全新的專(zhuān)業(yè)知識(shí)領(lǐng)域,對(duì)本門(mén)課程乃至后續(xù)的專(zhuān)業(yè)課程都至關(guān)重要。本文根據(jù)作者的教學(xué)實(shí)踐經(jīng)驗(yàn),以學(xué)生的基本情況分析為依據(jù),結(jié)合C程序設(shè)計(jì)課程的知識(shí)特征,提出一種基于數(shù)學(xué)函數(shù)的引導(dǎo)式教學(xué)探索,以期實(shí)現(xiàn)新生從中學(xué)到大學(xué)的順利過(guò)渡,激發(fā)其專(zhuān)業(yè)學(xué)習(xí)的興趣。
關(guān)鍵詞 C程序設(shè)計(jì) 本科教學(xué) 遞進(jìn)式教學(xué)
中圖分類(lèi)號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:A DOI:10.16400/j.cnki.kjdkx.2016.07.018
0引言
對(duì)于計(jì)算機(jī)類(lèi)專(zhuān)業(yè)的新生而言,“C程序設(shè)計(jì)”是最早接觸的專(zhuān)業(yè)基礎(chǔ)課之一,學(xué)生對(duì)該專(zhuān)業(yè)課程的學(xué)習(xí)具有標(biāo)桿性作用,對(duì)其后續(xù)專(zhuān)業(yè)課程的學(xué)習(xí)產(chǎn)生具有重要的影響,對(duì)學(xué)生的專(zhuān)業(yè)能力的培養(yǎng)至關(guān)重要。然而,由于部分新生在中學(xué)階段對(duì)計(jì)算機(jī)專(zhuān)業(yè)知識(shí)的了解過(guò)于欠缺,若按照傳統(tǒng)教材的模式開(kāi)展教學(xué),計(jì)算機(jī)專(zhuān)業(yè)術(shù)語(yǔ)及程序設(shè)計(jì)語(yǔ)言的概念細(xì)節(jié)將會(huì)導(dǎo)致與中學(xué)知識(shí)儲(chǔ)備的脫節(jié),影響學(xué)生學(xué)習(xí)興趣與動(dòng)力。
本文擬從學(xué)生基礎(chǔ)出發(fā),探索基于中學(xué)函數(shù)概念的漸進(jìn)式程序設(shè)計(jì)教學(xué),引導(dǎo)學(xué)生逐漸向大學(xué)計(jì)算機(jī)專(zhuān)業(yè)的學(xué)習(xí)方式與認(rèn)知方式轉(zhuǎn)化。
此外,內(nèi)存分配是C程序設(shè)計(jì)相關(guān)內(nèi)容的本質(zhì)核心,例如變量、數(shù)據(jù)類(lèi)型、函數(shù)、數(shù)組、指針、結(jié)構(gòu)體等。在充分了解內(nèi)存分配本質(zhì)的基礎(chǔ)上,對(duì)上述知識(shí)點(diǎn)的學(xué)習(xí)大有裨益,且有利于培養(yǎng)分析程序動(dòng)態(tài)執(zhí)行的能力。
作者基于自我學(xué)習(xí)經(jīng)歷以及對(duì)大一新生的C程序設(shè)計(jì)課程教學(xué)經(jīng)驗(yàn),分析新生面臨的若干問(wèn)題,思考中學(xué)知識(shí)儲(chǔ)備與大學(xué)教學(xué)方式的差異與關(guān)系,針對(duì)C程序設(shè)計(jì)的特點(diǎn),提出基于數(shù)學(xué)函數(shù)的引導(dǎo)式教學(xué);并圍繞內(nèi)存分配這一核心知識(shí),探索基于內(nèi)存解析的闡釋性教學(xué)過(guò)程。
1學(xué)生基本情況分析
對(duì)于剛?cè)胄5男律?,?jīng)歷了瘋狂的高考和長(zhǎng)假,對(duì)大學(xué)階段的專(zhuān)業(yè)學(xué)習(xí)仍是比較懵懂的,這集中體現(xiàn)在如下幾個(gè)方面。
(1)思想方面:新生剛剛經(jīng)歷了緊張的高考以及愜意的長(zhǎng)假,入學(xué)時(shí)仍有部分同學(xué)難以集中精力專(zhuān)注于學(xué)習(xí)中。若在初學(xué)的專(zhuān)業(yè)課上缺少恰當(dāng)?shù)倪^(guò)渡和引導(dǎo),一開(kāi)始便如同天書(shū)一般,可能會(huì)滋生學(xué)生的厭學(xué)情緒,影響后續(xù)專(zhuān)業(yè)課程的學(xué)習(xí)成效。
(2)學(xué)習(xí)方式方面:新生在中學(xué)階段的學(xué)習(xí),以學(xué)習(xí)經(jīng)典知識(shí)為主,主要是教師的講述式傳授并輔以大量的練習(xí),對(duì)知識(shí)背后的原理較少關(guān)注。然而,這種方式并不適用于大學(xué)階段的專(zhuān)業(yè)學(xué)習(xí)。大學(xué)的專(zhuān)業(yè)學(xué)習(xí)需要深挖知識(shí)背后的原理,并自主學(xué)習(xí)廣泛的知識(shí)。因此,“C程序設(shè)計(jì)”課程應(yīng)著重解釋程序設(shè)計(jì)語(yǔ)言的機(jī)制原理,并引導(dǎo)學(xué)生自主開(kāi)展實(shí)踐,在實(shí)踐中進(jìn)行探索和思考。
(3)基礎(chǔ)知識(shí)儲(chǔ)備方面:客觀(guān)來(lái)講,雖然現(xiàn)在的信息化水平快速提升,中學(xué)生的計(jì)算機(jī)技能水平也逐年提高。然而,由于高考的壓力和地區(qū)發(fā)展的差異,仍有相當(dāng)比例的新生沒(méi)有掌握基本的計(jì)算機(jī)基礎(chǔ)知識(shí),抑或只是熟悉了基本的計(jì)算機(jī)應(yīng)用操作,對(duì)計(jì)算機(jī)專(zhuān)業(yè)性的結(jié)構(gòu)與描述仍很欠缺。在中學(xué)的知識(shí)體系中,與“C程序設(shè)計(jì)”課程最相關(guān)的概念當(dāng)屬中學(xué)數(shù)學(xué)里的函數(shù)概念,且函數(shù)是中學(xué)數(shù)學(xué)中最重要的內(nèi)容,新生對(duì)此必不陌生。因此,以中學(xué)數(shù)學(xué)中的函數(shù)概念為起始點(diǎn),逐漸引導(dǎo)學(xué)生熟悉計(jì)算機(jī)(類(lèi))專(zhuān)業(yè)術(shù)語(yǔ),程序設(shè)計(jì)的專(zhuān)業(yè)術(shù)語(yǔ)與過(guò)程,并完成對(duì)計(jì)算機(jī)專(zhuān)業(yè)認(rèn)知的轉(zhuǎn)化。
基于上述學(xué)生基本情況分析,在尊重客觀(guān)事實(shí)的基礎(chǔ)上,開(kāi)展基于函數(shù)概念的引導(dǎo)式教學(xué),降低新生對(duì)新知識(shí)的理解難度,推動(dòng)新生專(zhuān)業(yè)學(xué)習(xí)的過(guò)渡;開(kāi)展圍繞以?xún)?nèi)存分配為核心的程序設(shè)計(jì)語(yǔ)言機(jī)理分析,講述程序及程序設(shè)計(jì)的(部分)執(zhí)行本質(zhì),提高新生對(duì)計(jì)算機(jī)運(yùn)行原理的基本認(rèn)識(shí)以及專(zhuān)業(yè)認(rèn)知。
2基于數(shù)學(xué)函數(shù)的引導(dǎo)式教學(xué)
在“C程序設(shè)計(jì)”課程中,函數(shù)作為一種功能抽象的手段,與中學(xué)數(shù)學(xué)中的函數(shù)概念有相通之處。數(shù)學(xué)函數(shù)中,函數(shù)名、自變量、應(yīng)變量是其基本要素,本文擬采用如下方式開(kāi)展進(jìn)行引導(dǎo)式教學(xué):(1)以數(shù)學(xué)函數(shù)的基本概念為基礎(chǔ),講授程序(main函數(shù))的功能;并在數(shù)學(xué)函數(shù)單一輸出的基礎(chǔ)上進(jìn)行擴(kuò)展,泛化函數(shù)“輸出”(返回值)的概念。以“將一個(gè)程序看作一個(gè)函數(shù)”的方式實(shí)現(xiàn)從數(shù)學(xué)函數(shù)到程序設(shè)計(jì)函數(shù)概念的過(guò)渡,并介紹程序的基本結(jié)構(gòu)。(2)以數(shù)學(xué)函數(shù)中的函數(shù)名、自變量為基礎(chǔ),講解函數(shù)名、變量名的命名及其規(guī)則,并逐漸擴(kuò)展為一般標(biāo)識(shí)符的命名及其規(guī)則,初步引入語(yǔ)法的概念。(3)以函數(shù)的具體展開(kāi)形式為基礎(chǔ),引出過(guò)程式程序設(shè)計(jì)以及順序結(jié)構(gòu)的基本概念。(4)以數(shù)學(xué)函數(shù)中自變量的定義域概念為基礎(chǔ),引出數(shù)據(jù)類(lèi)型的概念。(5)以一元數(shù)學(xué)函數(shù)和多元數(shù)學(xué)函數(shù)的概念為基礎(chǔ),講授函數(shù)參數(shù)及函數(shù)定義的知識(shí)。(6)以數(shù)學(xué)函數(shù)的抽象表示與自變量取值為基礎(chǔ),引出函數(shù)調(diào)用的概念。(7)以數(shù)學(xué)函數(shù)的復(fù)合運(yùn)算為基礎(chǔ),引出函數(shù)嵌套與遞歸調(diào)用的知識(shí)。(8)以數(shù)學(xué)函數(shù)中函數(shù)的分段定義為基礎(chǔ),引出條件選擇控制語(yǔ)句的知識(shí);并由此擴(kuò)充為程序的選擇結(jié)構(gòu)以及循環(huán)結(jié)構(gòu)。
基于上述知識(shí)的介紹,使得學(xué)生初步具備了程序設(shè)計(jì)的基本知識(shí),并促使其向?qū)I(yè)階段的學(xué)習(xí)過(guò)渡,為更復(fù)雜的數(shù)組操作、指針操作等內(nèi)容提供支撐。
3基于內(nèi)存分析的闡釋性教學(xué)
內(nèi)存分配是程序設(shè)計(jì)中變量、數(shù)組、函數(shù)、指針等內(nèi)容背后的核心本質(zhì)。為了加強(qiáng)學(xué)生對(duì)程序設(shè)計(jì)本質(zhì)的理解,有必要闡述清楚內(nèi)存分配的基本概念與基本形式。(1)首先簡(jiǎn)述典型的計(jì)算機(jī)馮·諾伊曼結(jié)構(gòu),突出內(nèi)存的功能及其重要性,并闡述輸入/輸出的概念,為后續(xù)講解文件操作進(jìn)行鋪墊。(2)以數(shù)字在計(jì)算機(jī)中的存儲(chǔ)與運(yùn)算為基礎(chǔ),講解計(jì)算機(jī)基本的工作方式以及二進(jìn)制形式的數(shù)據(jù)表示與存儲(chǔ)。(3)以變量的存儲(chǔ)為切入點(diǎn),將變量的定義、初始化、值更改與內(nèi)存的分配、初始化、更新相結(jié)合;并以變量的賦值為例,講述變量問(wèn)的值傳遞以及內(nèi)存空間分配的本質(zhì)。(4)結(jié)合數(shù)學(xué)函數(shù)的概念,講述函數(shù)的聲明、定義和調(diào)用等操作,闡述函數(shù)參數(shù)在內(nèi)存中的存儲(chǔ)以及變量生存期和作用域的概念,講解函數(shù)參數(shù)值傳遞的內(nèi)存本質(zhì)。(5)針對(duì)數(shù)組概念的講授,闡述內(nèi)存連續(xù)分配的含義,結(jié)合數(shù)組訪(fǎng)問(wèn)的方式,解釋數(shù)據(jù)越界訪(fǎng)問(wèn)的原理。(6)針對(duì)指針的概念,明確指針作為一種數(shù)據(jù)類(lèi)型,其自身的指針變量具有特定的內(nèi)存空間,并區(qū)分指針變量的內(nèi)存空間與所指向內(nèi)存空間的差異和關(guān)系。
4課程規(guī)劃
在實(shí)際教學(xué)過(guò)程中,應(yīng)以程序設(shè)計(jì)自身的邏輯為主線(xiàn),將上述兩方面內(nèi)容有機(jī)地融合到課程講授中。此外,實(shí)踐是程序設(shè)計(jì)課程的重要構(gòu)成部分,應(yīng)盡早讓學(xué)生上機(jī)實(shí)踐,但又必須讓學(xué)生先具備基本的程序設(shè)計(jì)知識(shí)。以筆者承擔(dān)的40學(xué)時(shí)C程序設(shè)計(jì)理論課為例,擬將課程設(shè)計(jì)如下:
(1)課程概述(2學(xué)時(shí))。以調(diào)整學(xué)生的學(xué)習(xí)心態(tài)為目的。通過(guò)調(diào)研學(xué)生對(duì)計(jì)算機(jī)專(zhuān)業(yè)知識(shí)的了解。(2)從數(shù)學(xué)到計(jì)算機(jī)(4學(xué)時(shí))。以經(jīng)典的馮·諾依曼結(jié)構(gòu)為出發(fā)點(diǎn),講解計(jì)算機(jī)的基本工作原理以及內(nèi)存的功能和重要性。以數(shù)學(xué)中的十進(jìn)制加法運(yùn)算為例,講述數(shù)據(jù)(數(shù)字)在計(jì)算機(jī)中的存儲(chǔ)方式、運(yùn)算方式,從而形成對(duì)二進(jìn)制的認(rèn)知,以及機(jī)器語(yǔ)言的基本概念和背后蘊(yùn)含的原理。(3)C程序設(shè)計(jì)速覽(2學(xué)時(shí))。以數(shù)學(xué)中的函數(shù)概念為出發(fā)點(diǎn),將程序類(lèi)比成函數(shù),講解基本的輸入、輸出、返回值等概念;以自變量及其定義域?yàn)榛A(chǔ),簡(jiǎn)述變量的定義、變量類(lèi)型等概念:以函數(shù)的展開(kāi)形式為基礎(chǔ),講述程序設(shè)計(jì)基本的順序結(jié)構(gòu)及過(guò)程式程序設(shè)計(jì)的基本概念。此后,學(xué)生應(yīng)具備基本的上機(jī)實(shí)踐能力,初始階段的上機(jī)實(shí)踐當(dāng)以模仿為主,并逐步自我探索。(4)基本語(yǔ)法(4學(xué)時(shí))。以上一章節(jié)為基礎(chǔ),系統(tǒng)講述C語(yǔ)言程序設(shè)計(jì)中的基本語(yǔ)法,包括標(biāo)識(shí)符命名規(guī)則、變量、數(shù)據(jù)類(lèi)型、運(yùn)算符、表達(dá)式、語(yǔ)句等。并以變量的內(nèi)存分配為例,講述變量類(lèi)型與內(nèi)存分配的關(guān)系,賦值語(yǔ)句及其內(nèi)存更新的關(guān)系。(5)控制語(yǔ)句(4學(xué)時(shí))。以數(shù)學(xué)函數(shù)中的分段函數(shù)為基礎(chǔ),講解條件選擇語(yǔ)句的含義與功能,并引入程序設(shè)計(jì)的選擇結(jié)構(gòu)。以數(shù)學(xué)中的求和運(yùn)算為例,引出循環(huán)語(yǔ)句并講述其功能,闡釋控制結(jié)構(gòu)的含義。(6)函數(shù)(4學(xué)時(shí))。如上所述,結(jié)合數(shù)學(xué)函數(shù)的基本概念,解析函數(shù)名、函數(shù)參數(shù)、參數(shù)類(lèi)型、返回值、函數(shù)調(diào)用等基本概念。(7)后續(xù)知識(shí)點(diǎn):數(shù)組、指針、自定義、文件讀寫(xiě)操作等。
5小結(jié)
本文針對(duì)大一新生在心理、基礎(chǔ)知識(shí)儲(chǔ)備、學(xué)習(xí)方式等方面情況,提出了一種基于數(shù)學(xué)函數(shù)的引導(dǎo)式教學(xué)思路,筆者將結(jié)合實(shí)際教學(xué),進(jìn)一步完善并優(yōu)化這一教學(xué)方法。