張瑜+張欣+王希
摘要:C語(yǔ)言程序設(shè)計(jì)課程廣泛應(yīng)用于計(jì)算機(jī)專(zhuān)業(yè)及相關(guān)專(zhuān)業(yè)的基礎(chǔ)課教學(xué)中。但是經(jīng)過(guò)調(diào)查顯示,而在C語(yǔ)言程序設(shè)計(jì)在具體教學(xué)中存在很多問(wèn)題,嚴(yán)重制約著整體的計(jì)算機(jī)教學(xué)的應(yīng)用。以引導(dǎo)學(xué)生在具體的計(jì)算機(jī)課程教學(xué)中進(jìn)一步完成對(duì)于計(jì)算機(jī)思維模式的探索發(fā)現(xiàn),讓學(xué)生形成良好的計(jì)算思維是教學(xué)改革的必然趨勢(shì)。
關(guān)鍵字:計(jì)算思維;C語(yǔ)言;抽象;程序設(shè)計(jì)
通過(guò)長(zhǎng)時(shí)間教學(xué)發(fā)現(xiàn),在學(xué)習(xí)C語(yǔ)言課程前面的語(yǔ)法規(guī)則、變量表的時(shí)候初學(xué)者能跟上進(jìn)度,但一旦學(xué)習(xí)后邊比較復(fù)雜的知識(shí)章節(jié)時(shí)候就困難。甚至有學(xué)生C語(yǔ)言學(xué)習(xí)完成后,考試成績(jī)非常好,但是要用C語(yǔ)言解決一個(gè)實(shí)際問(wèn)題時(shí)候就無(wú)從下手,沒(méi)有清晰的程序設(shè)計(jì)思路與合理的解決方案,總之學(xué)生在學(xué)習(xí)程序設(shè)計(jì)時(shí)有兩種情況,一種是面對(duì)繁雜的知識(shí)點(diǎn)無(wú)從下手,脫離的程序設(shè)計(jì)的思維,第二種是即使記住了很多知識(shí)點(diǎn),仍然不知道靈活使用,不知道在什么時(shí)候用什么知識(shí)去解決什么問(wèn)題。那么啟發(fā)學(xué)生使用正確的思維模式來(lái)學(xué)習(xí),比仔細(xì)分析,詳細(xì)講解知識(shí)點(diǎn)更為重要。
計(jì)算思維就是幫助學(xué)生降低程序設(shè)計(jì)的難度,它指的是運(yùn)用現(xiàn)代的計(jì)算機(jī)科學(xué)的程序和理念進(jìn)行解決問(wèn)題并得到正確結(jié)果的系統(tǒng)設(shè)計(jì),包含一系列的涵蓋計(jì)算機(jī)科學(xué)程序語(yǔ)言的思維活動(dòng)的統(tǒng)稱(chēng)。要想使得計(jì)算思維能夠更加充分的解決計(jì)算機(jī)的常見(jiàn)應(yīng)用問(wèn)題,需要融合更多的計(jì)算機(jī)的基礎(chǔ)知識(shí)去完善計(jì)算思維,最終得到最優(yōu)答案。
計(jì)算思維中涵蓋了很多能夠解決問(wèn)題的數(shù)學(xué)思維的方式,比如對(duì)于循環(huán)結(jié)構(gòu)的講授,基本都是以求“1+2+……+n”的值引入的,這時(shí)一定要注意提醒學(xué)生不要采用數(shù)列前n項(xiàng)和的公式去求解,這是數(shù)學(xué)思維,而不是“計(jì)算機(jī)思維”。如果將表達(dá)式中的加號(hào)改為乘號(hào),在程序設(shè)計(jì)中只需做很小的改動(dòng),而從數(shù)學(xué)的角度則很難實(shí)現(xiàn)??梢砸龑?dǎo)學(xué)生用累加的方法,這正是計(jì)算機(jī)的思維方式:計(jì)算機(jī)最擅長(zhǎng)處理一些有規(guī)律且需要大量重復(fù)性的工作。當(dāng)學(xué)生形成這種計(jì)算思維后,接下來(lái)就是語(yǔ)法方面的問(wèn)題了。
其次,抽象是計(jì)算思維中本質(zhì)的內(nèi)容,計(jì)算思維當(dāng)中的抽象是能夠徹底超越物理的一種時(shí)空觀,所以其完全可以使用符號(hào)來(lái)進(jìn)行表示,計(jì)算思維中的抽象相較于物理和數(shù)學(xué)中的抽象,其實(shí)是一種更為復(fù)雜,同時(shí)也更為豐富的抽象。要用計(jì)算機(jī)實(shí)現(xiàn)一個(gè)系統(tǒng),實(shí)際就是使用符號(hào)系統(tǒng)對(duì)求解問(wèn)題進(jìn)行準(zhǔn)確無(wú)誤的描述,那么,建立系統(tǒng)模型的過(guò)程就是抽象的過(guò)程。學(xué)生首先面對(duì)的就是數(shù)據(jù)的存儲(chǔ)和表示,即系統(tǒng)的數(shù)據(jù)要全部轉(zhuǎn)化成二進(jìn)制,兩個(gè)簡(jiǎn)單的“0”和“1”,再轉(zhuǎn)化成任何用戶想得到的視覺(jué)、聽(tīng)覺(jué)、觸覺(jué)等感官信息。C語(yǔ)言中數(shù)據(jù)類(lèi)型的概念是學(xué)生接觸的第一個(gè)抽象概念。例如short x=-1;unsigned short y;y=x;無(wú)符號(hào)數(shù)為什么能夠賦值給有符號(hào)數(shù)呢?其實(shí)在內(nèi)存中y變量的物理形式也是如同x,但在邏輯上我們將數(shù)據(jù)類(lèi)型分為帶符號(hào)和無(wú)符號(hào),所以輸出的時(shí)候x為-1,y值為65535。邏輯層面實(shí)際是虛擬出來(lái)的是一種抽象。
第三,計(jì)算思維是一種能夠建立在計(jì)算過(guò)程能力與限制之上的一種思維,它主要是由人和機(jī)器共同來(lái)執(zhí)行的。因此在C語(yǔ)言中計(jì)算思維就是通過(guò)約簡(jiǎn)、嵌入、轉(zhuǎn)化和仿真等方法,把一個(gè)看來(lái)困難的問(wèn)題重新闡釋成一個(gè)我們知道怎樣解決的問(wèn)題,這就是C語(yǔ)言的“程序”思維。程序思維是對(duì)系統(tǒng)的建模,既要對(duì)系統(tǒng)的操作對(duì)象建模,又要對(duì)系統(tǒng)的行為建模。對(duì)于C語(yǔ)言程序來(lái)說(shuō),建模的過(guò)程就是使用C語(yǔ)言符號(hào)進(jìn)行精確表述的抽象過(guò)程。例如,將學(xué)生的基本信息進(jìn)行存放,并進(jìn)行排序和簡(jiǎn)單的分類(lèi)篩選。向?qū)W生提出問(wèn)題“如何使用C語(yǔ)言在程序中定義一個(gè)班學(xué)生的信息?每個(gè)學(xué)生的信息包括學(xué)號(hào)、姓名、出生日期、性別、考試成績(jī)等內(nèi)容”。通過(guò)這一問(wèn)題,首先讓學(xué)生聯(lián)想班級(jí)學(xué)生信息表,再和學(xué)生一起回顧變量的定義。這里用定義單獨(dú)變量是將信息表中所示的數(shù)據(jù)信息進(jìn)行縱向組織,實(shí)質(zhì)上是定義了一個(gè)班的學(xué)號(hào)、姓名、性別等信息,而非一個(gè)班的學(xué)生信息;用簡(jiǎn)單數(shù)組僅能夠定義一個(gè)班學(xué)生的出生年、月、日信息。上述兩個(gè)問(wèn)題都使得基于數(shù)組定義的相關(guān)信息無(wú)法與實(shí)際生活中的認(rèn)知完全對(duì)應(yīng),不利于程序員對(duì)程序的組織,也不利于他人對(duì)程序的理解。為此應(yīng)該為單個(gè)學(xué)生定義一個(gè)特有的數(shù)據(jù)類(lèi)型,從而自然地引申出結(jié)構(gòu)這一數(shù)據(jù)類(lèi)型。對(duì)于一個(gè)班的學(xué)生信息自然的就引出了結(jié)構(gòu)體數(shù)組的概念。這種思維方式的引導(dǎo)重要的是讓學(xué)生體會(huì)到計(jì)算機(jī)的可構(gòu)造思想,培養(yǎng)學(xué)生的計(jì)算思維。針對(duì)結(jié)構(gòu)體數(shù)組的排序和分類(lèi),屬于系統(tǒng)的功能,用函數(shù)來(lái)完成。排序函數(shù)和分類(lèi)函數(shù),要求功能獨(dú)立,高耦合低內(nèi)聚,各功能之間的協(xié)調(diào)運(yùn)行,需要在主函數(shù)中通過(guò)函數(shù)調(diào)用來(lái)完成。這樣就將一個(gè)學(xué)生信息管理程序完成了。
上述是將計(jì)算思維融入到具體知識(shí)點(diǎn)中,在平時(shí)的教學(xué)過(guò)程中還可以將計(jì)算思維融入教學(xué)方法。1.案例教學(xué)法中的計(jì)算思維,如從生活中簡(jiǎn)單的例子來(lái)引入C語(yǔ)言的計(jì)算思維,可以舉例求解1至100的連加和。通過(guò)上述兩個(gè)例子,可以使學(xué)生對(duì)計(jì)算思維有一個(gè)初步的認(rèn)識(shí),學(xué)生也可以從一個(gè)更高層級(jí)的思維高度去思考問(wèn)題和理解C語(yǔ)言編程,這對(duì)學(xué)習(xí)C語(yǔ)言的學(xué)生無(wú)疑是一個(gè)非常好的方式。2.交互式教學(xué)法。教師要注重課堂的互動(dòng)方式,教師不能一直在講解知識(shí)點(diǎn),而是要適當(dāng)?shù)嘏c學(xué)生互動(dòng),進(jìn)行問(wèn)題的探討,引導(dǎo)學(xué)生主動(dòng)思考問(wèn)題,激發(fā)學(xué)生主動(dòng)學(xué)習(xí)的熱情,充分提高課堂效率。3.課程設(shè)計(jì)。教師在課程設(shè)計(jì)中也應(yīng)該融入計(jì)算思維的模式,比如課程設(shè)計(jì)題目為酒店入住管理系統(tǒng),從實(shí)際問(wèn)題出發(fā),從解決思路出發(fā),使學(xué)生在整個(gè)課程設(shè)計(jì)中,將設(shè)計(jì)題目分成幾個(gè)功能模塊,對(duì)每個(gè)模塊進(jìn)行思考、討論、驗(yàn)證。
C語(yǔ)言程序設(shè)計(jì)旨在讓教師從計(jì)算思維的角度對(duì)于計(jì)算機(jī)的基礎(chǔ)課程的教學(xué)進(jìn)行創(chuàng)新性的程序設(shè)計(jì),突出學(xué)生在教學(xué)中的主體地位,最終切實(shí)提高計(jì)算機(jī)教學(xué)的教學(xué)效果。同時(shí),C語(yǔ)言程序設(shè)計(jì)可以幫助學(xué)生養(yǎng)成良好的計(jì)算思維能力,引導(dǎo)學(xué)生利用計(jì)算思維來(lái)解決好實(shí)際中遇到的問(wèn)題。這個(gè)過(guò)程是循序漸進(jìn)的。鼓勵(lì)學(xué)生持之以恒,堅(jiān)持獨(dú)立思考,多方位看待問(wèn)題,假以時(shí)日就會(huì)有突飛猛進(jìn)的提高。