蔣海華 李俐 鄭爽 崔玲


摘要:文章針對高校非計算機專業C語言課程,分析課程教學中存在的問題,從3個角度探討課程教學改進的方法,進而提高教學效果。
關鍵詞:C語言;非計算機專業;教學方法;計算思維;實踐
中圖分類號:G642.41? ? ?文獻標志碼:A? ? ?文章編號:1674-9324(2019)49-0128-02
C語言程序設計是高校非計算機專業的一門重要的計算機基礎教學課程。通過該課程的學習,有助于學生了解計算機能做什么,知道計算機擅長解決什么,培養學生的計算思維能力,從而更好地利用計算機來解決本專業的實際問題。C語言課程學習的內容和要求是相對的,對不同的人群有不同的要求[1]。非計算機專業的C語言課程學時有限,學生在前期和后期也基本沒有學習計算機相關的其他課程,在課程講授過程中,存在一些問題,影響學生程序設計能力的提高。
一、教學存在的問題
(一)理論與實踐銜接不緊密
通常的授課方式是先在教室安排理論課,再在機房安排實驗課或者布置課后作業。這種方式容易分離理論知識與實踐操作,使兩者銜接不緊密。C語言的語法理論枯燥、抽象,學生在接觸到新的理論知識點后,如果不及時上機動手操作,不利于對抽象概念的理解,也容易將知識遺忘。
(二)學生缺乏計算思維,沒有學習方法
對于數學、英語、物理這些課程,學生們基本都有一套自己的學習方法。不同于這類課程,大多數學生在上大學之前都沒有接觸過計算機程序編程類的課程,學生們基礎薄弱,也沒有學習方法。同時,非計算機專業的學生基本只是孤立地學習C語言課程,沒有其他配套的課程加深理解計算思維。大部分學生能理解教師所講授的案例,但在獨立編寫程序時卻沒有思路。缺乏計算思維,不會采用啟發式推理來尋找答案,不會用計算機解決問題的方式去思考問題[2]。
(三)學生動手實踐能力提高緩慢
課程的教學目標是讓學生具備程序設計能力,學生上機動手能力的高低也決定了課程的教學效果。對于剛編寫完成的程序,大部分都會編譯報錯或者運行結果不正確。作為初學者,學生往往找不見問題,也就無法將程序調試正確。學生得不到成就感,會對上機實踐慢慢地失去興趣,甚至產生抵觸情緒,進而影響編程能力的提高。
二、教學方法改進
(一)緊密銜接理論與實踐
將授課方式改為統一在機房上課。教師在每次通過案例講完一個新的知識點后,學生緊接著就上機進行操作。學生可以模仿已有的案例程序,也可以進行改寫完成新功能,發現自己的不足,進而鞏固理論知識。當學生遇到問題時,教師可以第一時間進行解答,了解學生掌握的情況。這種授課方式需要教師控制好時間,不然很有可能在規定學時內完不成所有理論知識的講授。
(二)啟發漸近式講解案例
為了讓學生學習程序語法不那么枯燥,筆者通過啟發漸講式講解案例的方式講授知識點。首先提出實際問題,讓學生思考并給出解決方案,接著對學生的方案進行點評,再按照計算機解題的方式給出更多的思路,通過這種方式來培養學生的計算思維能力。案例中需要融入包含理論知識的主要語句,在學生對整體程序有大致理解的基礎上,再對其中涉及的相關語法進行解釋分析。例如,在講授循環語句時,教師先提問如何計算數值50到59的和,學生一般給出方案,有利用計算器、筆算、套用數學公式等。教師在肯定學生回答的同時,再進一步提問如何計算數值50到5000的和,或者50到5000的乘積,進而引出循環語句的解法。
對案例具體程序進行講解時,除了程序的基本框架外,筆者將主體程序分為四部分:第一部分是定義變量,第二部分是給變量賦值,第三部分是數據計算處理,第四部分是輸出結果。這樣學生對程序的結構有更清楚的認識,然后再去理解算法部分。學生自己獨立完成任務時,也可以先將基本框架搭建完成,再按這四部分內容進行編寫程序。
對于第三部分數據計算處理,也就是算法部分,是整個程序的核心。這部分的理論知識通常比較抽象,學生不容易理解和掌握,是課程的重點和難點。講授時,筆者將抽象的知識進行具象化,進而啟發學生的思維。例如,在講解循環執行過程的時候,將for和while語句具象化為4步圖,如圖1所示。第一次按1、2、3、4步順序執行,以后每次按2、3、4三步重復執行,形成一個循環的閉合路徑。通過圖形化的方式,強化學生對這兩條語句的理解和記憶。
再例如,在講解break和continue語句時,引入操場跑圈的例子。某同學鍛煉身體在操場跑步,打算跑2000米,也就是5圈循環。但是剛完成2圈準備跑第3圈時,天下雨了,這時該同學就結束跑步,要退出整個循環就用break。如果是在跑到第2圈一半時,后半圈偷懶不跑了,直接從第3圈接著跑,這是退出當次循環就用continue。通過將現實生活中簡單的事件進行類比,使學生更容易理解這些理論知識。
(三)重視培養調試程序能力
筆者采用Dev C++作為開發工具,該工具相對常用的VC++ 6.0而言,具有體積小、安裝方便、新建程序簡易等特點,更適用于初學者。上機編程的初期,學生往往會遇到不少問題,甚至模仿教材中的案例也無法避免報錯。這時需要教師去幫助找出錯誤,由于學生人數較多,每一個都指導下來會花費很多時間。還有小部分學生可能不好意思提問,就硬著頭皮找錯誤,如果沒找到,學生的學習信心會受到打擊。為了提高編程的效率,減少學生找錯誤的時間,筆者將常見的錯誤提示和相應的解決方法羅列出來。這樣,在學生遇到相似的問題時,可以自己解決,有利于增強學生學習的自信心,提高自身的學習能力,體會到編程的樂趣,由“要我學”變為“我要學”[3]。教師也可以從一直解答相同問題的困境中解脫出來,而去幫助學生解決其他錯誤。例如,課程初期,學生常遇到程序編譯沒有問題,但運行程序時被強制中止,提示程序已停止工作的現象,如圖2所示。出現這種錯誤,通常是因為輸入語句中少寫“&”符號。
對于初學者,語法錯誤一般容易被找到并改正,然而邏輯錯誤解決起來卻比較困難。對于邏輯錯誤,學生可以利用Dev C++提供的單步執行,跟蹤程序運行過程,監視其中變量的值,這樣有利于學生厘清思路,從而找到錯誤。單步跟蹤調試首先需要設置好斷點,而后執行的過程中需要認真仔細地觀察變量值的變化。通過跟蹤調試,有助于提高學生的細心和耐心度,減少下次出現編程錯誤的可能。同時也有助于學生理解一些難點知識,例如循環語句的執行過程、指針和變量地址之間的關系等。筆者也讓學生兩兩相互進行調試對方的程序,這種方式既可以提高學生的程序閱讀能力和調試能力,又可以讓學生注意程序書寫規范,進而提高程序可讀性,同時還能讓學生進行互動交流,提高溝通能力。
三、結語
C語言程序設計是一門很注重實踐操作的課程。為了進一步引導學生重視實際動手能力的提高,在課程考核中筆者將上機考試成績占總成績的比例設置為50%,這個比例可能還會提高。目前課程教學還存在一些問題,我們需要努力讓學生從解決實際問題中獲得成就感,盡可能地調動學生的積極性、提高其學習興趣,培養學生通過計算思維的方式利用C語言程序設計能力去解決各自專業中遇到的問題。
參考文獻:
[1]譚浩強.研究計算思維,堅持面向應用[J].計算機教育,2012,(21):45-49,56.
[2]J.M.Wing.Computational Thinking[J].Communications of the ACM,2006,(3):33-35.
[3]段學慶.C語言教學方法之淺析[J].教育教學論壇,2017,(23):263-264.