999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

從錯誤中成長:工程教育認證視角下程序設計能力培養

2021-03-24 09:13:08李環宇林曉霞徐燕妮李保銀
現代計算機 2021年2期
關鍵詞:細節程序能力

李環宇,林曉霞,徐燕妮,李保銀

(山東科技大學智能裝備學院,泰安271000)

針對程序設計課學習效果欠佳的情況,分析學生在學習過程中遇到的細節處理能力差的情況。以工程教育認證為契機,提出反向利用錯誤程序,以學生為中心,讓學生自主分析錯誤程序,分析錯誤發生的原因,總結編程規律,達到提高學生綜合素質的要求。

工程教育認證;錯誤程序;設計細節;反向利用;素質提高

0 引言

《C程序設計》是中國高校理工科類各專業普遍開設的一門基礎課。《中國高等院校計算機基礎教育課程體系》在2006年、2008年以及2014年三次調整相關課程時,一直將其列為中國大學生計算機教育的基礎課程[1],這也從側面印證了該課程在中國大學計算機教育中不可或缺的基礎性地位。

但是眾所周知,C語言的程序十分繁瑣,大多數學生是在大一剛入校的時候開始學習該課程,對程序設計的概念相當陌生,算法基礎幾乎為零,所以在理解有關語法、程序結構時會感覺吃力,容易產生抵觸心理,主動去理解、探索程序設計的內在規律就更為困難,因此及時有針對性地解決程序設計教學中凸顯出來問題一直是相關專家和任課教師重點關注的研究方向。

1 程序設計教學研究現狀分析

很多專家學者對改進C語言的教法進行了積極有益的探討和改進,例如:針對學生雖然記住了簡單的語言知識,但卻不知道總體如果布局下手編程的問題,柴群提出了“五步編程法”,指出了一個“編程路線圖”,讓學生在編程過程中有路可循[2];算法是程序的靈魂,離開了算法,編程就像沒有明燈指引走夜路。安廣勇老師提出了以“數學算法為基礎的編程技巧”[3],深入剖析數學算法在C程序設計中的指導性作用;楊琴等人提出基于“互聯網+”平臺下載翻轉課堂教學改革,目的是增強學生學習的主動性,提高課堂教學效率,使課堂教學更有針對性[4]。綜合各種教改成果,這些改革的思路側重于系統化的改革,對于程序設計教學過程中的細節涉及不多。

另外,近年來,隨著新工業革命時代的到來,與之相對應的工程教育認證蓬勃發展。早在2013年,同濟大學副校長陳以一教授就在教育部人文社會科學研究專項任務項目中指出了新工業革命對工程教育的影響,并且提出了在新工業革命背景下工程教育改革的新課題,例如專業整合、課程重構、學習模式變革等[5]。工程教育認證強調教學“以學生為中心,產出為導向,持續改進”的標準。以此為標準,許多教師也提出了自己的教學思考,例如蔡美琴老師提出在教學內容上需要重構,在學生“怎么學”上,要要充分發揮學生的自主性、能動性和創造性,提高學生的參與度[6]。凡此種種研究成果,本文不再贅述。

2 程序設計教學中問題分析

按照工程教育認證的標準,要使學生主動參與,提高整體素質,能夠著手的地方很多。“細節決定成敗”。本文擬從提高設計細節角度來談談設計綜合能力的提高。

2.1 設計細節能力對學生是影響

設計中需要關注的細節很多,“轉化”能力就是設計細節中容易被忽略,但卻又是一種不可或缺的基礎性能力。文獻[7]以介紹“打擂臺”法為“鋪墊”,“轉化”為選擇法排序,降低了理解算法的難度。不過在實際的教學中,即便是學生對題目的算法、程序設計步驟都已經非常清楚了,在具體編程實現過程中,仍面臨著“轉化”的問題,“轉化”能力較差,就會產生了一系列編程錯誤。這類錯誤無論是從教師角度看,還是從學生自身角度看,都好像是淺層次的問題。但是此類錯誤一而再,再而三的出現,就成了系統性問題,需要重點關注和解決。從這類問題實際產生的影響看:一是降低了學習效率,因為學生總是在低層次問題“徘徊”;二是打擊了學生的自信心和學習的積極性,因為這種問題一般出現在學習的入門階段,反復出現的此類問題,好像是掉入了“錯誤的海洋”,由此影響學生的學習熱情。

2.2 設計細節能力較差現象的分析

教師在指導學生編程時,一般是先分析問題,得到一個具體的算法,然后用流程圖、偽代碼等算法語言把算法表達清楚。下一步,就是學生把前面得到流程圖或偽代碼等算法“轉化”為符合C語言語法的程序了。但就在這個以“轉化”階段為代表的細節處理,在具體實現算法的這個環節就出現了各種各樣的問題。以“轉化”環節來說,細節處理出現的問題主要體現在以下幾個方面:

(1)數學公式轉化為合法C語言表達式的能力較差。

在編程過程中,有很多數學公式需要轉化為C語言的表達式。例如編程中常用到的一元二次方程的兩個根。學生基本了解要把求根公式分解為兩部分:p=但在實現p或q的時候,編程就出現了“轉化”錯誤。以實現p為例,學生常犯的錯誤經常是:

(2)對基本概念轉化為具體語句的能力差

這類問題經常出現在選擇結構和循環結構中。例如算法描述:“if a>b,將a和b交換”。實現語句為:if(a>b){t=a;a=b;b=t;},該語句實現了一個選擇結構,其中使用了“復合語句”這個概念,但初學者往往把“花括號”忘記,導致程序可能出錯。

(3)從算法語言到合法C語句的轉化能力差

該類問題很多,例如閏年的表示問題,涉及到關系表達式和邏輯表達式的綜合應用。素數問題,算法本身不復雜,但涉及到循環的正常結束與非正常結束的問題。在遇到這種上述算法時,學生們經常是算法明白了,但仍然是寫不出正確的程序。

(4)對具體問題中已知條件轉化為函數參數能力較差

函數的定義和調用是學習C程序設計中的難點。具體到函數參數的設置,學生更是屢屢出現問題。究其原因:是學生不了解參數的本質是解決一個問題的已知條件,不是在程序設計過程中用到過度變量;從表現形式上說,不清楚已知條件的表達方法,特別是涉及到數組和指針作為函數參數的時候。

凡此種種的“轉化”過程出現的問題,其實是的細節處理能力薄弱的表現,實質是都是編程能力低下的具體體現。錯誤的細節處理必然產生錯誤的程序。因此細節處理能力差就是編程能力差。而基于工程教育認證模式下,尤其重視能力的培養。編程能力差,尤其與以目標為導向的工程教育認證原則相背離。

3 程序設計細節處理的方法探討

3.1 程序設計細節處理能力提高的基本思路

上文提到的細節處理能力不足,主要的自主學習能力和實踐能力不足所致。解決這個問題的傳統方法是強調正面引導,強調正確的轉化過程。當學生出現錯誤時,就告訴學生,你的程序錯了,然后告訴他正確的應該是怎樣的。而對學生編程過程中出現的錯誤案例(錯誤程序)反而重視不夠,忘記了“教訓”本身也會在學生成長過程中扮演重要的角色。

文獻[8]就提出重視錯誤程序的觀點,并引用了ACM計算機教育專家Robert M.Panoff博士在SIGCSE 2014大會所作的主題報告中提出一個鮮明觀點:“Right Answer=Wrong Answer+Corrections”(正確答案=錯誤答案+更正)。因此重視錯誤程序,從中發現錯誤發生的規律可以從反向提高學生的編程能力。

交互式學習在20世紀70年代就已經提出,它強調以學生為主體,注重教育者與學習者之間的平等交流和自由互動[9],與工程教育認證的以學生為中心的思想是相同的。根據程序設計課程的教學和學習特點,在面對學生的錯誤程序的時候,通過交互式雙向討論的方式改正學生的錯誤,采用了以下的教學環節。

(1)收集學生的錯誤案例

教師應該在日常教學工作中,注重發現學生在編程過程中所犯的錯誤程序。為了能夠使各種錯誤程序有代表性,應該對錯誤程序進行分類,使每一類錯誤程序都能代表某一個方向性問題,提高教學效率。

(2)對學生進行分組

根據學生的編程水平,對學生進行分組。每組人數不宜太多,以四到五為宜,讓每個學生在這個小組中都有具體的任務。小組人員組成水平最好有層次之分,以層次較高的學生帶動較差的學生。

(3)教師分配討論任務

教師將不同類別的錯誤程序分配給不同的學生組。為了提高下面在課堂討論時的效率,每個小組分配的題目盡量的不同,但是每個類型的錯誤程序都要有。分配討論時機應與課堂正面教學相配合。

(4)學生按照分組討論并記錄總結

學生分組討論可以在自習期間,也可以再自建微信群或QQ群中討論。把討論發現的程序中的錯誤記錄下來,并分類保存形成文字內容。討論時的內容既可以包含語法細節,也可以包括宏觀算法思路。特別是算法思路,程序可能并沒有語法錯誤,僅僅是邏輯錯誤,與預定的結果不符。這樣的情況可以鼓勵學生將各自的想法程序化,然后運行看結果,然后從結果倒推錯誤成因。

(5)教師引導啟發

學生在討論的過程中,教師應該適時的加入討論,可以提高學生討論的層次,并將討論引入更寬的視角,點出所涉及問題的難點并對相關知識進行適當的拓展。

(6)課堂總結歸納,學生撰寫本次差錯報告

在整個教學環節中,課堂總結是交流討論的收尾階段。在這個階段,教師在課堂上要對各個小組的討論結果分別進行總結。教師應該站在更高的層次上,把各個小組的討論結果背后的知識點進行串聯。經過這個階段,對相關知識點從正反兩個方面進行強化。經過強化串聯之后,學生應該能從宏觀和微觀兩個方面對知識進行掌握,學會從局部到全局的學習方法。

3.2 程序設計細節處理能力提高的使用范例

本文采用的案例是筆者在教學過程中遇到的真實案例,錯誤程序片段以照片的形式原樣呈現,如圖1所示。原題目要求編程完成數學上的一個分段函數:

圖1 錯誤程序段樣例

將該錯誤程序提供給學生討論。學生容易發現兩個錯誤:首先,“y=5x”這個錯誤最容易被發現,很顯然與“y=-5x”這個句子不一致,形成對比,當然從表達式的組成的定義也容易判斷;其次,“x=0”這個錯誤的發現困難些,主要原因是數學概念對學生的影響太大了,學生對兩種話語體系區別還體會不深。

如果教師不介入討論,很多時候學生發現的錯誤就到此為止了。教師在這個時候的介入就可以拓展學

生的思路。例如可以向學生提出該程序整體的結構是什么?當筆者給學生提出這個問題的時候,部分學生誤以為這是if語句的三分支結構呢!而沒有意識到這是連續使用了兩個選擇結構的順序結構,并且第一個選擇雙分支選擇結構使用的還很不規范!

在課堂總結歸納階段,可以首先總結學生們發現的錯誤,其次應重點介紹隱藏比較深的邏輯錯誤,編譯階段發現不了,但實際上算法是錯誤的程序段。另外不良的編程風格也應該及時給學生指出,例如圖1中的第一個雙分支選擇結構,是一個不規范的用法。此外編程風格不好,例如本例中代碼沒有形成縮進。最后學生將本次差錯的心得各自寫成文字保存,方便以后查詢,逐漸改正錯誤,形成良好的編程習慣。

上述過程不是一勞永逸的,應該在發現新問題時,反復執行。具體的討論形式也應該與時俱進,不斷鞏固發展,這也是工程教育認證本身所要求的。

4 結語

本文分析了學生在編程細節處理方面出現的問題。基于工程教育認證的編程能力的培養,需要正面的引導和教育,也離不開對錯誤的反向思考。因為在學習編程的過程中,避免不了犯各種各樣的錯誤。要對每一種錯誤進行分析,分析錯誤發生的原因以及避免錯誤發生的方法。放棄對錯誤的研究,意味著失去進步的一個途徑。通過讓學生自己對典型編程錯誤分析和總結,可以起到事半功倍的效果,加深學生對編程的理解,提高學生編程的能力。

猜你喜歡
細節程序能力
消防安全四個能力
以細節取勝 Cambridge Audio AXR100/ FOCAL ARIA 906
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
留心細節處處美——《收集東·收集西》
大興學習之風 提升履職能力
人大建設(2018年6期)2018-08-16 07:23:10
你的換位思考能力如何
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
細節取勝
Coco薇(2016年10期)2016-11-29 19:59:58
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
主站蜘蛛池模板: 久热中文字幕在线| av一区二区三区在线观看| 91欧美在线| 亚洲人成人无码www| 五月丁香伊人啪啪手机免费观看| 国产精品偷伦在线观看| 免费jjzz在在线播放国产| 亚洲欧美不卡中文字幕| 一级毛片免费播放视频| 精品国产一区二区三区在线观看| 亚洲成A人V欧美综合| 亚洲综合二区| 国产91蝌蚪窝| 国产95在线 | 久久精品无码一区二区国产区| 日韩欧美视频第一区在线观看| 亚洲成人在线免费| 91免费国产高清观看| 国产精品偷伦视频免费观看国产| 91久久夜色精品国产网站| 91外围女在线观看| 一本视频精品中文字幕| 欧美一级视频免费| 久久精品最新免费国产成人| 女人18毛片一级毛片在线 | 欧美性精品| 国产电话自拍伊人| 九九九精品视频| 亚洲无码免费黄色网址| 亚洲女同一区二区| 午夜啪啪福利| 国产精品9| 综合亚洲网| 亚洲国产天堂在线观看| 国产日产欧美精品| 综合社区亚洲熟妇p| 亚洲综合第一页| 亚洲床戏一区| 日韩国产欧美精品在线| 亚洲欧美综合另类图片小说区| 91精品啪在线观看国产91| 国产黄色片在线看| 成人在线欧美| 成人欧美日韩| 岛国精品一区免费视频在线观看| 国产69精品久久久久妇女| www.av男人.com| 国产欧美精品一区aⅴ影院| 日韩国产综合精选| 国模视频一区二区| 日韩高清在线观看不卡一区二区| 国产草草影院18成年视频| 丁香五月亚洲综合在线 | 国产欧美网站| 亚洲成A人V欧美综合天堂| 乱码国产乱码精品精在线播放| 国产高清精品在线91| 午夜丁香婷婷| 免费jizz在线播放| 国禁国产you女视频网站| 亚洲第七页| 谁有在线观看日韩亚洲最新视频 | 免费高清a毛片| 制服丝袜亚洲| 亚洲成人免费看| 国产精品视频公开费视频| 日韩无码一二三区| 久久狠狠色噜噜狠狠狠狠97视色 | 午夜福利无码一区二区| 日韩无码真实干出血视频| 大学生久久香蕉国产线观看| 人妻夜夜爽天天爽| 久久香蕉国产线看观看式| 免费又黄又爽又猛大片午夜| 免费一级毛片| 国产视频入口| 久久这里只有精品2| 亚欧成人无码AV在线播放| 国产亚洲高清在线精品99| 免费国产在线精品一区| 国产视频a| 欧美在线观看不卡|