国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

計(jì)算機(jī)程序設(shè)計(jì)教學(xué)中問題求解能力的培養(yǎng)探索

2019-06-20 09:17徐建軍尹良澤陳立前
課程教育研究 2019年13期
關(guān)鍵詞:教學(xué)案例

徐建軍 尹良澤 陳立前

【摘要】針對計(jì)算機(jī)程序設(shè)計(jì)教學(xué)中實(shí)際存在的問題,教學(xué)過程中把知識講授轉(zhuǎn)化為對問題求解能力的訓(xùn)練以及計(jì)算思維的培養(yǎng),并以二維數(shù)組的為例展示了一個(gè)具體的教學(xué)設(shè)計(jì),最后介紹了課程實(shí)踐所采取的措施,取得了良好的教學(xué)效果。

【關(guān)鍵詞】計(jì)算機(jī)程序設(shè)計(jì) ?問題求解 ?教學(xué)案例

【中圖分類號】G64 【文獻(xiàn)標(biāo)識碼】A 【文章編號】2095-3089(2019)13-0243-02

計(jì)算機(jī)程序設(shè)計(jì)目前是各個(gè)高校理工科的基礎(chǔ)課和必修課,是一門理論和實(shí)踐并重的課程。但在實(shí)際教學(xué)過程中,這門課難教、難學(xué)已經(jīng)成為師生的共識,傳統(tǒng)的程序設(shè)計(jì)教學(xué)一般是以教師為中心,學(xué)生是被動的參與者,教學(xué)過程中偏重知識和理論的傳授,而忽視思維和能力的培養(yǎng)訓(xùn)練。大多數(shù)學(xué)生都認(rèn)為程序設(shè)計(jì)艱澀難懂、學(xué)難致用、學(xué)完即忘,遇到具體問題往往無從下手。

實(shí)際上,計(jì)算機(jī)程序設(shè)計(jì)這門課除了掌握一種高級程序設(shè)計(jì)語言之外,更加重要的是訓(xùn)練學(xué)生分析問題和利用計(jì)算機(jī)進(jìn)行問題求解的能力,在這個(gè)過程中培養(yǎng)學(xué)生的計(jì)算思維[1]。計(jì)算思維是指運(yùn)用計(jì)算機(jī)科學(xué)的基礎(chǔ)概念進(jìn)行問題求解、系統(tǒng)設(shè)計(jì)以及人類行為理解等一系列思維活動,具體內(nèi)容包含抽象、分解、迭代、遞歸、折中、并行、容錯(cuò)等。作為計(jì)算機(jī)類的基礎(chǔ)課程,計(jì)算機(jī)程序設(shè)計(jì)課必須要改革教學(xué)方式,更新教學(xué)理念,樹立以培養(yǎng)問題求解能力為核心的教學(xué)目標(biāo)[2,3]。

1.教學(xué)設(shè)計(jì)

目前,我校的《計(jì)算機(jī)程序設(shè)計(jì)》課程講授的是C語言,C語言功能強(qiáng)大、應(yīng)用靈活,但是其語法細(xì)節(jié)特別多,所以在課堂講授時(shí)不能面面俱到,需要抓住重點(diǎn)和難點(diǎn)進(jìn)行精講。從問題求解能力培養(yǎng)的角度來說:基本表達(dá)式和控制結(jié)構(gòu)是基礎(chǔ),要求熟練掌握;函數(shù)則是課程的重點(diǎn),這是進(jìn)行封裝和抽象的主要語言機(jī)制;數(shù)組、字符串、結(jié)構(gòu)等復(fù)合數(shù)據(jù)類型則是解決實(shí)際問題經(jīng)常使用的,應(yīng)結(jié)合實(shí)際問題加強(qiáng)練習(xí);指針是C語言的精髓,但也是傳統(tǒng)的難點(diǎn),這部分內(nèi)容可以結(jié)合教學(xué)實(shí)際情況進(jìn)行合理取舍。

教學(xué)過程中,筆者結(jié)合教學(xué)內(nèi)容引入了豐富的教學(xué)案例[4],見表1所示。表中這些原生態(tài)的案例都有實(shí)際的工程應(yīng)用背景,授課時(shí)圍繞如何分析解決這些真實(shí)的問題,啟發(fā)學(xué)生一步步思考,在過程中讓學(xué)生體會如何把一個(gè)現(xiàn)實(shí)問題轉(zhuǎn)成計(jì)算機(jī)求解的步驟,以此來培養(yǎng)學(xué)生針對實(shí)際問題的分析和求解能力,從而實(shí)現(xiàn)把編程知識的講授有機(jī)植入到問題求解能力的訓(xùn)練中。

程序設(shè)計(jì)的經(jīng)典公式是:程序=數(shù)據(jù)結(jié)構(gòu)+算法。教學(xué)內(nèi)容就是按照數(shù)據(jù)結(jié)構(gòu)(如何表示數(shù)據(jù))和算法(如何處理數(shù)據(jù))兩條線索進(jìn)行組織的,對于每個(gè)實(shí)際問題啟發(fā)學(xué)生分析出數(shù)據(jù)結(jié)構(gòu)和算法。同時(shí),在這個(gè)過程中還要強(qiáng)調(diào)對程序從結(jié)構(gòu)和效率等方面進(jìn)行持續(xù)優(yōu)化,并結(jié)合工程實(shí)踐經(jīng)驗(yàn)介紹編程技巧,最后還設(shè)計(jì)合適的課堂練習(xí)進(jìn)一步加強(qiáng)學(xué)習(xí)效果。

2.案例分析

這里以多維數(shù)組為例進(jìn)行具體教學(xué)展示。多維數(shù)組是學(xué)完一維數(shù)組之后,一般以二維數(shù)組為例來學(xué)習(xí)多維數(shù)組。這一講是以“地形導(dǎo)航”為教學(xué)案例實(shí)施教學(xué)。

地形導(dǎo)航是無人機(jī)等系統(tǒng)設(shè)計(jì)的關(guān)鍵部分,系統(tǒng)預(yù)先存儲了任務(wù)區(qū)域的地形信息,然后根據(jù)當(dāng)前所處位置和目的地,自動規(guī)劃出飛行路線等。可以考慮把地面劃分成網(wǎng)格,逐塊存儲各類地形信息(如海拔高度)。首先給出說明:山峰是四周海拔都低于中心點(diǎn)的位置(排除邊界上的位置),山谷是四周海拔都高于中心點(diǎn)的位置(排除邊界上的位置)。如圖1所示,可以把地形網(wǎng)格中的海拔高度用一個(gè)二維數(shù)組進(jìn)行表示,圖1(b)中橢圓框標(biāo)出的就是符合條件的山峰節(jié)點(diǎn)。這一講的任務(wù)是編寫一個(gè)地形導(dǎo)航分析程序,分析輸出地形網(wǎng)格中山峰、山谷的位置和數(shù)量等信息。

1)數(shù)據(jù)結(jié)構(gòu)

首先提出問題:程序中如何表示地形網(wǎng)格?因?yàn)榈匦尉W(wǎng)格有多行多列,可以用多個(gè)一維數(shù)組,但地形網(wǎng)格大小不確定,所以多個(gè)一維數(shù)組并不合適。由此自然過渡到用矩陣來表示,然后引出C語言是用二維數(shù)組來表示矩陣。在給出二維數(shù)組的概念和聲明形式之后,得出求解“地形導(dǎo)航”問題所使用的數(shù)據(jù)結(jié)構(gòu):用二維浮點(diǎn)數(shù)組來表示地形網(wǎng)格。

接下來的問題是如何給地形網(wǎng)格存入數(shù)據(jù),首先介紹初始化二維數(shù)據(jù)的語法和示例代碼,重點(diǎn)強(qiáng)調(diào)初始化二維數(shù)組時(shí)只能省略第一維,然后示范初始化地形網(wǎng)格的代碼。

2)算法設(shè)計(jì)

“地形導(dǎo)航”重點(diǎn)要解決的問題如何找到所有山峰?啟發(fā)學(xué)生進(jìn)行算法設(shè)計(jì):遍歷二維地形網(wǎng)格數(shù)組中的所有節(jié)點(diǎn)(但要排除邊界上的節(jié)點(diǎn),如圖(b)虛線框所示),依次與四周節(jié)點(diǎn)(上、下、左、右四個(gè)節(jié)點(diǎn))進(jìn)行比較,判斷是否滿足山峰的條件。其中的關(guān)鍵如何遍歷地形網(wǎng)格以及如何與四周節(jié)點(diǎn)進(jìn)行比較,這里需要學(xué)會使用二維數(shù)組。二維數(shù)組的遍歷一般是通過兩層的嵌套循環(huán)實(shí)現(xiàn),對二維數(shù)組元素的訪問關(guān)鍵在于設(shè)置正確的行列下標(biāo)。然后啟發(fā)學(xué)生分析四周節(jié)點(diǎn)的具體行列下標(biāo),最后給出查找山峰節(jié)點(diǎn)的示例代碼。

查找山谷節(jié)點(diǎn)的過程則可以作為課堂練習(xí),由學(xué)生模仿查找山峰節(jié)點(diǎn)代碼自行完成。

3)程序優(yōu)化

在完成查找山峰和山谷的代碼之后,發(fā)現(xiàn)兩部分的代碼非常類似,提出新的問題:能否用函數(shù)對上述代碼進(jìn)行優(yōu)化,從而引入二維數(shù)組如何作為函數(shù)的參數(shù)?在這一部分,重點(diǎn)需要指出C語言中二維數(shù)組作為函數(shù)參數(shù)時(shí)不能省略第二維的大小。在此基礎(chǔ)上,定義一個(gè)查找地形網(wǎng)格節(jié)點(diǎn)的函數(shù),函數(shù)參數(shù)包含一個(gè)表示地形網(wǎng)格的二維數(shù)組,以及查找山峰或山谷的標(biāo)志參數(shù)。

4)課堂練習(xí)

在之前的基礎(chǔ)上,這一講設(shè)計(jì)的課堂練習(xí)是查找地形網(wǎng)格中的鞍點(diǎn),所謂鞍點(diǎn)是指節(jié)點(diǎn)在所在行最大,并且在所在列中最小。這個(gè)問題與之前的教學(xué)內(nèi)容一脈相承,主要目的也是練習(xí)如何使用二維數(shù)組,但比查找山峰和山谷要略微復(fù)雜。具體實(shí)現(xiàn)時(shí),可以先假設(shè)的每個(gè)網(wǎng)格節(jié)點(diǎn)都是鞍點(diǎn),然后把當(dāng)前節(jié)點(diǎn)與所在行(和列)的其它節(jié)點(diǎn)進(jìn)行比較,如果存在反例則不是鞍點(diǎn)。

最后,這一講通過“地形導(dǎo)航”這個(gè)案例,把二維數(shù)組的定義、初始化、應(yīng)用、函數(shù)參數(shù)等主要知識貫穿于問題求解能力的訓(xùn)練中,這個(gè)過程中注重啟發(fā)學(xué)生思考如何設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)和算法,并配合恰當(dāng)?shù)恼n堂練習(xí)以加強(qiáng)教學(xué)效果。

3.課程實(shí)踐

計(jì)算機(jī)程序設(shè)計(jì)是一門實(shí)踐性非常強(qiáng)的課程,而問題求解是一個(gè)復(fù)雜且綜合的過程,真正的求解能力只有在編程實(shí)踐中鍛煉、體會出來的?;谖倚i_發(fā)的Trustie[5]和Educoder[6]兩個(gè)網(wǎng)絡(luò)平臺,課程開展了以下三個(gè)方面實(shí)踐活動。

1)Trustie網(wǎng)絡(luò)教學(xué)平臺

Trustie網(wǎng)絡(luò)教學(xué)平臺除了可以管理課程資源外,一種很重要的功能就是可以在上面布置程序設(shè)計(jì)題,學(xué)生提交代碼后,平臺可以按之前設(shè)計(jì)好的測試用例對學(xué)生提交程序進(jìn)行自動測試,只有所有的測試用例都通過才能分。除了課堂練習(xí)外,課后要在Trustie布置一些編程實(shí)踐題目,內(nèi)容是與本次上課密切相關(guān),除了起鞏固教學(xué)效果的基礎(chǔ)題目,還有部分難度較大的拓展題。

2)Educoder編程實(shí)訓(xùn)平臺

Educoder編程實(shí)訓(xùn)平臺可以實(shí)現(xiàn)對于單元知識點(diǎn)的檢測和訓(xùn)練。該平臺是一個(gè)游戲闖關(guān)式的實(shí)訓(xùn)環(huán)境,只有測試用例都通過才能過關(guān)得經(jīng)驗(yàn)值。網(wǎng)站上還提供很多與本單元相關(guān)的背景知識,便于學(xué)生自學(xué)。該平臺的實(shí)踐完成時(shí)間比較寬松,一般是每個(gè)單元開始上課就布置下去,學(xué)生自主選擇時(shí)間完成。

3)綜合實(shí)踐

在課程后期會布置一個(gè)綜合性的實(shí)踐環(huán)節(jié),要求1~2人一組編寫一個(gè)有一定規(guī)模的實(shí)用程序。從最后完成情況看,選題多為掃雷、俄羅斯方塊等小游戲,以及跟學(xué)習(xí)生活相關(guān)的小應(yīng)用,作品的平均代碼在400行以上。

這些教學(xué)實(shí)踐極大程度地調(diào)動了學(xué)生自主學(xué)習(xí)的積極性和學(xué)習(xí)興趣,激發(fā)了學(xué)生的編程潛能,學(xué)生的問題求解能力得到了全面提高。

4.結(jié)語

實(shí)施教學(xué)改革幾年以來,教學(xué)效果顯著。近幾年筆者所負(fù)責(zé)教學(xué)班的期末考試成績在全校都是名列前茅,在課程完結(jié)之后,班上有多個(gè)學(xué)生還積極參加了ACM等程序設(shè)計(jì)競賽,獲得了多項(xiàng)國家級獎勵。在這些工作的基礎(chǔ)上,以問題求解能力的培養(yǎng)為中心的計(jì)算機(jī)程序設(shè)計(jì)的評價(jià)和反饋機(jī)制仍需進(jìn)一步研究。

參考文獻(xiàn):

[1]Jeannette M. Wing.Computational Thinking[J].Communica

tions of the ACM,2006(3):33-35.

[2]謝志英,王靜,陳靜.C語言課程中學(xué)生問題求解能力的培養(yǎng)[J].計(jì)算機(jī)教育,2011,(3):56-61.

[3]裘宗燕.今天的C程序設(shè)計(jì)課教什么, 怎么教——兼議《從問題到程序》的修訂[J].計(jì)算機(jī)教育,2012, (13):24-32.

[4]Delores,M. Etter.宮曉利等譯.工程問題C語言求解[M].北京:清華大學(xué)出版社,2005.

[5]https://www.trustie.net/

[6]https://www.educoder.net/

猜你喜歡
教學(xué)案例
外研社選修六Module 3 Roy’s story教學(xué)案例
程序設(shè)計(jì)課程的教學(xué)理念與教學(xué)方法探究
小學(xué)數(shù)學(xué)課堂導(dǎo)入技巧及案例分析
促進(jìn)初中化學(xué)定量觀建構(gòu)的教學(xué)案例
小學(xué)數(shù)學(xué)“反思型” 教學(xué)的探索與實(shí)踐
石屏县| 孝昌县| 灵山县| 周宁县| 浮山县| 车险| 兴化市| 广东省| 西城区| 常熟市| 珠海市| 大荔县| 三原县| 扎囊县| 蓝田县| 平利县| 伊通| 鄂托克旗| 嵩明县| 大埔县| 南召县| 砀山县| 顺义区| 靖远县| 简阳市| 高安市| 新平| 醴陵市| 梅河口市| 民乐县| 香河县| 正阳县| 宁强县| 沁源县| 兴安县| 深水埗区| 奉新县| 阳谷县| 望江县| 静安区| 徐汇区|