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