【摘要】計算機專業的教學目標,不僅僅在于本課程的知識學習,還要兼顧后繼課程的要求和特點,為計算機專業學生的繼續學習打下堅實的基礎。本文討論了計算機專業C語言教學目標與其它專業的不同,以期更好地開展計算機專業的C語言教學工作。
【關鍵詞】C語言 教學目標 程序設計思想 軟件工程
目前,有相當多的高等學校不但將C語言列為計算機專業學生的必修課,而且是理工科非計算機專業的必修課。對于計算機專業學生來說,C語言程序設計是一門專業基礎課,對后續專業課程至關重要;對于非計算機專業的理工科學生來說,這是一門公共基礎課,是各專業學生的計算工具。專業不同,教學目標就應該有所差別。但是,現在很多高校并沒有一定的區分,而是統一的教學目標,統一的教學模式,過于注重語句、語法和一些細節,基本上是以高級語言自身的體系為脈絡展開的。這樣,就給計算機專業學生學習后續課程及研究生階段的課題研究留下了隱患。在這里,筆者對計算機專業C語言的教學目標做一個簡單的探討。
一、程序設計思想的培養
對于計算機專業學生而言。程序設計以及后來的軟件設計是整個計算機專業發展的一個重要方向,因此,程序設計思想的培養對于學生來說至關重要。思想的培養不能單單通過做大量的題目,而是要有一定的方法,循序漸進才能做到事半功倍的效果。
計算機編程思維的形成并不是一蹴而就的,對于從未受過算法設計訓練的學生來說,剛開始編程時,可能會感到無從下手。對此,我們可以從整體到具體細節,一步步引領學生來進行編程。
1.把程序設計簡單歸納為數據輸入、加工處理與結果輸出三個部分。學生遇到問題時,首先,分析已知的數據是什么,需要求解的數據是什么。然后,就是由已知求未知的過程,把這一過程用C語言描述出來就可以了。對于講解的每一道題目,我們都讓學生這樣來分析,慢慢地,學生就會有一個整體的認識了。
2.針對“由已知求未知的過程”,就是我們所說的算法了,它是程序的靈魂。算法就是我們的思考過程。但要把思考過程一步步描述出來還是不簡單的。首先,我們可以通過放慢我們的思考過程或加長我們的思考過程來實現。例如,5個整數求最大值。有的同學說,我一眼就看出來了,根本不需要思考。那我們如果來求50個數或者100個數的最大值,這次我們就不會一眼看出答案了,這時候,我們的思考過程就清晰了,先求出前兩個數的最大值放到變量max中,在拿max和第三個數比較,最大值仍放到max中,max再和第四個數比較……以此類推,最后max里放的就是所有數據的最大值。這就是一種算法。把它用C語言描述出來就可以了。其次,我們需要通過做大量的題目或閱讀大量好的程序,來積累一些好的算法。
3.把算法描述為C程序。這一步,需要學生們認真掌握C語言的語法規則。學生需要做大量的針對性的單項練習,一個一個規則來掌握。還要在具體的程序編寫中進行綜合練習。有具體的使用環境中,這些語法的掌握應該是不難的。
二、與后繼課程密切聯系
過去的C語言教學多注意基本概念的掌握,對于算法與程序設計的風格未能系統的訓練,與后繼課程《數據結構》的教學嚴重脫節。C語言的教學重點固然是C語言的各種數據類型及應用,但是《數據結構》中的許多基本概念與思想也應滲透到C語言的教學中去。
1.C語言的發明就是為了方便操作系統的開發,因此具有豐富的指針結構與位操作功能,這在unix操作系統中已經得到了很鮮明的體現。操作系統的設計涉及許多復雜的數據結構。為了實現這些結構,C語言構造了許多復雜的數據類型,如函數指針,結構指針函數,不一而足。這些模式很簡潔地描述了數據的關聯模式。顯然。C語言許多數據類型本身就是復雜的數據結構的抽象,這一抽象過程就構成了這種結合的基礎,這種交叉、滲透還是學生高漲學習情緒的最好切入點。
2.通過C語言中的數據排序,數據查找這些題目的實現,對于數據排序和查找算法的分析比較,我們就可以和數據結構課程中的查找、排序章節結合起來,對查找排序的各種方法作進一步的了解。
3.學習指針這一章時,通過鏈表的建立、插入、刪除等的學習,可以和《數據結構》課程的線性表中的單鏈表建立聯系,再通過與數組知識的結合,又可以和線性表的順序存儲結構,靜態鏈表產生聯系。這樣不僅使學生們對后繼課程有個較詳細的了解,加強了課程之間的聯系。還進一步提高了大家的學習熱情。
三、把軟件工程的思想融入教學
隨著學生對程序設計語言的學習進步,自然地產生了軟件設計的渴望,老師要適時引入一些軟件的基本設計方法,對啟迪學生悟性很有好處,也使學生找到學習的門路。主要可以從兩個方面加以引入。
1.在教學中加入面向數據流的設計方法,這是一種傳統的結構化軟件設計方法(簡稱SD),對于初學者易于理解,尤其是在C語言程序設計的課程設計中有很好的效果。讓學生了解軟件設計的一般方法,程序的模塊化結構和數據的輸入/輸出結構,明確模塊間的控制關系,從總體上把握軟件的結構,在課程后期的綜合練習中有特別的意義。
2.在編程過程中加入程序健壯性、安全性的問題
在程序設計中,適時提醒點撥學生注意編程安全很有必要。例如,在設計“學生成績管理系統”時,鍵盤錄入的某課程成績或者在數據文件中提供的成績數據的范圍、屬性是否正確的檢查,就是編程的安全問題中的被動式保護性編程。在整個程序設計課程中,到處都是編程安全例子。例如·數組界限是否正確?表達式中是否有0分母情況?使用鏈表結構時,須要檢查其連接情況,等等。
再者,對于程序的健壯性,使學生們認識到,一個程序。不僅僅輸入一個合法數據能得到一個正確的輸出。這個程序就是正確的。而輸入一個非法的數據,他也能給出一個合理的輸出,這才是一個正確的、健壯的程序。例如,輸入三角形的三邊,求面積。如果我們輸入三個數據。就出一個面積數據,那這就不是一個健壯的程序,必須是輸入的三個數據能構成三角形,才輸出面積;如果構不成三角形,就應該輸出一行提示:輸入非法。這樣的程序才是個正確的程序。
,
四、總結
C語言程序設計課程是大學計算機專業的一門非常重要的基礎課程,對學生的程序設計思想的培養至關重要,把教學目標定位到不但學好本課程的知識,還要兼顧后繼課程的學習和引導。在課程中密切聯系數據結構課程的知識,融入軟件工程的思想,把老師的深厚的工程經驗傳遞給學生。既能開闊學生的思維和眼界,又能加強學生深入學習后續專業課的興趣。