摘? 要:“程序設計”課程是數學專業重要的必修課,針對“程序設計”課程內容的特點,采用混合式的教學方法,根據課程具體的內容特點以及數學專業學生的學習情況,采用不同的教學方法進行教學,把枯燥的程序設計語言的語法、規則等內容變的易于學生理解和接受,對提高學生學習效率有較好的效果。
關鍵詞:混合式教學法;程序設計課程;數學專業
中圖分類號:TP311.1-4 ? ? ? 文獻標識碼:A 文章編號:2096-4706(2019)08-0101-03
Abstract:“C Language Programming” courses is an important required course,mathematics according to the characteristics of the “C Language Programming” course content,teaching method,adopt the hybrid according to the content and features of the courses and mathematics majors,adopt different teaching methods in teaching,it is easy for students to understand and accept the grammar and rules of dull programming language,which has a good effect on improving students’learning efficiency.
Keywords:hybrid teaching method;programming course;mathematics major
0? 引? 言
隨著信息社會的發展與變化,數學專業的“C語言程序設計”課程(以下簡稱:“程序設計”課程)也面臨巨大的挑戰,為適應教學改革的發展,“程序設計”課程的教學模式、教學內容需要不斷地更新。“程序設計”課程是計算機專業課程體系的核心課程,也是諸多非計算機專業的理工科專業課程體系的基礎課程。“程序設計課程”對數學專業學生知識結構的構建是很重要的,對培養學生分析問題、構建解決問題方案的能力有著不可替代的作用。通過“程序設計”課程的學習,挖掘學生對數學專業的學習興趣,調動學生的專業課學習熱情,把相對乏味的數學融入到程序設計過程中,提高學生對新知識和新技術的敏感性,培養學生的專業探索精神,使學生能夠更好地適應社會的發展。
1? 程序設計課程教學存在的問題
首先,“程序設計”課程是數學專業開設的第一門涉及程序設計的課程,對多數學生而言,編程是全新的概念,“程序設計”課程包含理論教學與實踐教學兩部分內容,理論教學包括編程思想、編程原理教學等,實踐教學包括在編程環境下,編寫源程序、編譯程序教學等。面對新的知識,在課程的理論與實踐環節,學生都會感覺到壓力與困難。
其次,一方面,由于課時有限,而“程序設計”課程各章節之間的內容相對獨立,如基本內容部分主要是程序設計的規范,包括變量名命名規則、語句的書寫規則以及保留字等,內容的知識點之間沒有很強的關聯,也就是說,課程內容之間的關聯與銜接不是很明顯;另一方面,在應用或實例部分,程序設計則體現了對知識的綜合運用的課程形態。課程內容存在的這些問題,增加了學生理解與掌握知識的難度。
2? 混合式教學方法的運用和與實施
所謂混合式教學方法,是對教學環節中不同的內容、知識點采用不同的教學方法進行教學,使教學內容讓學生更易于接受的方法。
2.1? 虛擬現實輔助教學法
傳統的“程序設計”課程教學,大多采用從“概念到實驗”的簡單的教學模式,極易造成原理與實踐相脫節的現象,為了完成教學內容,大多數老師只能采用“大容量、快節奏”的教學方式,造成了教學容量大,而出現了部分學生對這樣節奏快、容量大的課不適應的現象,教學步入“負擔重、效率低”怪圈,導致課堂教學效果很不理想。虛擬現實技術恰好彌補了傳統教學方法的不足,因為虛擬現實技術可以模擬實驗過程中每個過程的結果,讓學生及時了解程序設計基本算法實現的來龍去脈、前因后果,更好地理解算法中涉及的數學思想與數學模型,并充分利用虛擬現實的仿真技術模擬實驗環境,通過網絡的先進技術,打破傳統的教學模式與方法。一方面,它可以給“程序設計”課程教學提供更豐富的實驗過程、細節和實驗結果,幫助學生加深對程序運行流程及算法的理解;另一方面,它可以打破傳統教學各環節的時空限制,在實現教學信息的高度有秩序、大容量共享的同時,提供給學生一個模擬的實踐環境,從而全方位的通過實現人與計算機、人與人的交流來提高“程序設計”課程教學的效率,從而達到提高教學效率的目的。
“程序設計”課程中每一條語法,都有其實際的意義以及具體的操作,在編程、解決實際問題中發揮著作用。在程序設計語法的教學過程中,通過虛擬現實的方法,將程序運行過程形象地表現出來,將程序運行“透明化”,有助于加深對相關知識點的理解,如變量聲明、變量初始化、變量的類型等,這些術語看似抽象不好理解,其實描述的都是數據對內存的讀與寫的一系列操作,但這些操作的過程是看不見摸不著的,對初學者來說,是一個較難掌握的難點。變量聲明是分配內存的基本操作,規定內存的類型是更高效地管理內存,變量初始化是寫內存操作等,由于內存的運行是看不見的,因此,教學過程配合帶有交互式的虛擬現實課件,將內存運行過程形象表現出來,將抽象的過程形象化。
2.2? 類比教學法
“程序設計”課程內容中的常量、變量和函數是程序設計語言中的基本內容之一,而常量、變量和函數的概念來源于數學,但與數學中的概念又不完全相同。
數學中函數的概念,從初一的一次函數開始到高三的二次曲面都與函數概念密不可分,也就是說,函數的概念貫穿于整個中學數學的內容之中,學生對函數的概念并不陌生,因此,程序設計語言中常量、變量和函數的教學內容,可采用類比教學方法。例如:以兩個函數概念的異同為切入點,圍繞比較兩者之間的關系、性質與功能展開討論,通過比較的方式,把程序設計語言中函數的概念講透。數學中的函數是一個沒有被賦予任何實際意義的抽象概念,自變量與因變量相互依存,缺一不可,強調自變量與因變量的映射關系,定義域和值域并存。當函數關系可以用一個解析式表示時,函數關系往往表現為一個計算公式。
(1)兩個不同函數定義的比較。程序設計語言的函數來源于數學,它關于函數的定義(以下簡稱:函數定義1)的格式如下:
類型名? 函數名(類型名1? 參數名1,類型名2? 參數名2,…)={函數體}
數學中關于(多元)函數的定義(以下簡稱:函數定義2)為:
設D為一個非空的n元有序數組的集合,f為某一確定的對應規則。若對于每一個有序數組(X1,X2,…,Xn)∈D,通過對應規則f,都有唯一確定的實數y與之對應,則稱對應規則f為定義在D上的n元函數。
函數定義1中的參數相當于函數定義2中的自變量,給定自變量(參數)的值,通過關系,都有函數值與之對應,但是,定義1的函數值有確定的數據類型,定義2的函數值沒有具體的類型。在教學過程中通過這樣的比較,可以讓學生更好地理解程序設計語言中函數的內涵。
(2)有參函數與無參函數的比較。在程序設計語言關于函數的定義1中,參數相當于自變量,返回值相當于因變量(函數),一個參數相當于一元函數,兩個參數就相當于二元函數,等等,返回值只能有一個。參數的個數可以取0,沒有參數,稱為無參函數,無參數函數的函數名后面的括號里是空的,沒有參數列表。無參函數也可以有返回值,也可以是某個操作功能等,這是與數學上函數定義不同的,在函數定義2中,自變量的個數至少是一個,數學中關于函數的定義必須有自變量。
(3)有返回值與無返回值的比較。程序設計語言中帶參數的函數功能更加強大,也更加靈活。與此相反,有的函數有參數但是沒有返回值。一般情況下,程序設計語言中的無返回值函數,函數名需用void保留字修飾,無參數而有返回值的函數一定要聲明其返回值的類型。
(4)結構體與二維表格的比較。在程序設計語言中,結構體是一種自定義數據類型,也是C++中類的原型,結構體與類的區別在于前者不帶函數,結構體在程序設計語言教學內容中是非常重要的。結構體是對二維表格結構的描述,用結構體聲明的變量,其真正的目的就是分配內存的復合單元,用于存放二維表格某一行的數據。因此,在教學過程中,可將結構體的內容與二維表格的結構進行比較,讓學生真正理解結構體的定義、聲明變量的目的,進而加深理解結構體數據類型以及結構體變量的內涵,更好地掌握對結構體變量的讀寫操作。
(5)嵌套調用與復合函數的比較。復合函數通俗地說就是函數套函數,是把幾個簡單的函數復合為一個較為復雜的函數。復合函數中不一定只含有兩個函數,有時可能有兩個以上函數,如y=f(u),u=φ(v),v=ψ(x),則函數y=f{φ[ψ(x)]}是x的復合函數,u、v都是中間變量。
而在程序設計語言中,函數的定義都是相互平行、相互獨立的,也就是說在函數定義時,函數體內不能包含另一個函數的定義,即函數不能嵌套定義,但可以嵌套調用。
在程序設計語言中,函數的調用是一級調用一級,可以嵌套,甚至可以自己調用自己(遞歸),所有定義的函數都是用來被調用的,所以都是被調函數。但是,某些函數又調用了其他函數,所以,就是相對的主調函數了。主調用和被調,就類似于父與子,子與孫,……,是相對的。main()主函數是程序的入口點。
總之,將舊知識與新知識進行比較,利用舊知識理解、掌握新知識,是提高學習效率和構建知識結構的有效方法。在實際的課堂教學過程中,教師需要在備課時,找到新知識與舊知識相似的內容,有機融入教學過程中。所以,利用舊知識理解新知識更多是一種學習框架和指導理念。同時又需要學習者對舊知識擁有全棧的知識結構和系統化的知識樹,這兩者的建立又依賴于“利用舊知識理解新知識”。通過分析、類比、對比,將掌握的舊知識,提煉及找出其規律,平移到新的知識上來,實現更好地理解和掌握新知識。
2.3? 任務驅動教學法
任務驅動教學法根據教學要求設計出具有實際意義的、符合學生認知水平的任務,把教學內容隱含在任務中,當學生能在教師的指導下或學生自己能獨立地完成任務時。學生也就建構了本節課所學的新知識體系。
“程序設計語言”是一門工具性的課程,教學的最終目的是讓學生能夠運用程序設計去解決實際問題,教學內容中的實例具有目標具體,內容實用的特點,教學目標清楚明確,在教學過程中,教師根據教學內容設計教學任務,教學過程以解決任務為中心,以完成任務為目標,不求理論的系統性,只求內容的實用性,以此為目標展開教學,培養學生發現問題、解決問題的綜合應用能力,提高學生對學習的主動參與意識,激發學生的學習興趣。
3? 結? 論
“程序設計”課程的教學目的是培養學生的編程思想與方法,使學生深刻理解編程原理與程序運行機制,在解決實際問題中靈活運用,因此,在教學過程中,對教學內容進行細分,根據不同的、具體的教學內容,運用不同的教學方法,制定不同的教學方案,針對不同的教學內容,從教學方法、實踐教學和評價體系等角度提出針對性的教學改革方案并組織教學,對提高C語言教學效果,讓學生更好地理解掌握編程思想與程序運行機制,對培養學生運用計算機編程方法去解決實際問題有積極的意義。
參考文獻:
[1] 宛西原,汪霞.非計算機本科專業計算機程序設計課程的改革思考 [J].計算機工程與科學,2014,36(S1):56-59.
[2] 張云峰,高春穎,劉俊,等.《程序設計基礎》實驗教學模式改革研究 [J].計算機工程與科學,2016,38(S1):265-268.
[3] 秦新強,趙鳳群,趙康,等.大學數學實踐教學改革的探索 [J].中國大學教學,2012(11):16-17.
[4] 陳曉龍,彭志平.計算機科學與技術特色專業建設研究與實踐 [J].計算機教育,2013(6):61-63+67.
[5] 丁海燕.計算機程序設計課程中計算思維的培養 [J].實驗技術與管理,2015,32(12):16-18+21.
作者簡介:趙智(1962.10-),男,壯族,廣西龍州人,副教授,畢業于廣西師范大學數學系,本科,主要研究方向:虛擬現實技術、智能計算。