摘 要:本文所討論的是高校計算機專業C語言教學的課程性質、教學目標、教學內容、教學理念四個方面的定位問題。作者從教學的實際情況,目前計算機行業的實際需求,計算機專業C語言編程學習的方法,學習意義等方面談高校計算機專業C語言的教學定位問題。
關鍵詞:C語言;編程基礎;教學
當今社會,在我們看到計算機行業的美好就業前景的同時,也看到了計算機專業教育的美好前景。同許多學科的教學過程一樣,計算機專業教育也要重視專業基礎課程的教學。目前,大多數高校將C語言作為計算機專業的編程基礎課程,作者認為將C語言作為高校計算機專業的編程基礎課程是必須而必要的,但是,在C語言的教學中,往往因為目的不夠明確,理念不夠準確,而使我們的C語言教學沒有達到應有的效果。因此,在這里提出C語言教學的四個定位問題。
一、教學課程性質的定位
C語言課程性質的定位:C語言是一門計算機專業的編程基礎課程。
20世紀70年代,在B語言的基礎上設計出了C語言。其中,UNIX操作系統,以及運行這一系統中大部分程序都是用C語言寫成的。而被我們廣泛使用的微軟Windows操作系統的核心代碼也是用C語言來編寫的。1983年形成了C語言的ANSI(American National Standards Institute)標準,1989年ANSI C被ISO(International Standards Organization,國際標準化組織)所接受,這就是常說的C89標準,C89標準成為C語言的國際標準。而標準化委員會又于1999年再次修訂C89,成為了C99標準。從這些事情上,不難想到C語言的重要作用和歷史地位。因此C語言的通用性和規范性要普遍強于同時代其它的任何一種編程語言。當今編程語言以C++,C#和JAVA為主流,而他們正是從C語言發展而來。因此,從編程技術的發展過程和編程技術的前后銜接性而言,C語言也是最恰當的。所以,將C語言定位于計算機專業的編程基礎課程是最合適的選擇。
二、教學目標的定位
C語言作為計算機專業的編程基礎課程,在開展C語言教學時,必須對C語言課程的教學目標有明確的定位。
目前,社會IT行業中,C語言實際應用的程度和廣度都在大大的縮減,C語言的開發應用能力被他的后繼編程語言所取代。C語言的職業應用領域更多的是結合匯編語言在單片機開發中的應用,如AVR單片機C語言開發,這突現在C語言的低端開發能力上。計算機或者單片機低端的開發應用是建立在對硬件相當熟悉的基礎之上的,在這種情況下,要求編程基礎課程的C語言突出其職業能力培養是不現實的。
因此,C語言課程的教學目標應該定位在計算機編程技術應用理念、編程邏輯思維、實際問題在編程中數學模型抽象能力等方面,即思維方式和模式上的培養認知上。C語言教學的開展不是去追求其職業能力,而是鍛造和培養學生的編程思維能力,為后繼專業課程的學習打下良好的基礎。因為,沒有編程思維的理念認識,編程思維模式的轉變,計算機專業課程的學習是事倍功半的。
三、教學內容的定位
C語言本身所涉及的開發應用能力是一個很龐大的系統,C語言本身也是一個中級編程語言。C語言在低級方面,它允許在算法邏輯中通過詳細的定義,來達到最高的計算機效率;C語言在高級方面,它隱含了計算機的結構細節,提高編程的效率。因此,C語言是介于低級編程語言和高級編程語言之間的中級編程語言。C語言本身也有著豐富而復雜的函數庫。所以,在C語言的教學中還應該注意教學內容的篩選。從國內絕大多數面向高校編寫的C語言教材來看,C語言的教學主要是側重在學生運用其高級能力方面,解決數理問題方向,這也充分說明我國計算機專業教育大環境對C語言課程的定位。
在C語言教學中,結合C語言常規教材的特點,對教學內容的定位應當做到既有全局的認識,又要有所側重;既要注重學生在C語言應用方面能力的培養,更要注重學生通過C語言對編程理念的認知。因為,C語言的教學內容的取舍不再是單純的為C語言本身而定,更多的是想達到拋磚引玉的效果。
C語言的教學可以分為四個部分:數據類型和運算、邏輯結構、模塊化思想、輸入輸出。
(1)數據類型和運算應該包括:普通變量與類型、指針、數組、結構以及基本的運算,盡管指針、數組、結構是在后期的教學中才涉及,但是它們依然是屬于數據類型的范疇,只能說它們是一種特殊的變量。
在普通變量與類型階段,教學內容的重點應該放在對變量的存儲機制和運算機理的認識和概念理解方面。而到了指針和數組方面,就要求學生能夠靈活應用變量的存儲機制和運算機理。而結構部分是早期編程語言對于實際問題抽象方面最好的數據模型,有助于進一步提高學生的數據抽象能力。
(2)邏輯結構的主要內容是三大結構:順序,選擇,循環。這是所有成熟編程語言的重要邏輯結構模式。在這個部分,側重于引領學生如何將實際問題的解決思維方式轉變為用三大結構來解決的邏輯思維方式。在教學中,單純的就結構談語法,會限制學生的眼光,相反,應該就語法談結構,編程中的邏輯結構才是計算機所有編程語言的理念之一。
(3)模塊化思想是指C語言中的函數部分:標準庫函數,自定義函數。C語言的函數思想是編程模塊化思想的前身。在C語言中,將指定問題的處理過程放到函數里解決,函數的相對獨立能力,使函數能夠多次或者多處被使用。避免代碼重用,提高了執行效率。
函數的應用,模塊化的思維模式在編程技術的應用中,為程序的分工協作,或者把一個大問題分成多個小問題來解決提供了最佳的途徑。所以在教學中,應當使學生充分認識到編程的模塊化思想應用的重要性和必要性。
(4)輸入輸出即I/O。這里的輸入輸出既包括控制臺的輸入和輸出(scanf函數和printf函數),也包括文件的輸入和輸出(fscanf函數和fprintf函數)。在技術上,控制臺I/O和文件I/O只有微小的差別,但在概念上,兩者是截然不同的范疇。
輸入輸出的內容能夠使學生明確,程序代碼的編寫過程和運行過程是完全不同的兩個過程,編寫過程是從程序開發者的立場出發,而運行過程就要從程序使用者的立場出發。輸入輸出部分的內容是一個強化,強化學生在編程理念上有程序員和用戶的立場差別。
四、教學理念的定位
在C語言教學中,教學理念的定位將直接引領教學的開展過程,直接影響教學方法、手段的設計與使用。把握好教學理念,是教學成功開展的捷徑。
(1)實例性教學,先應用再理解。
C語言課程同許多計算機專業課程一樣,是一門應用型的工具學科,我們這里的應用不指行業應用或者職業需求應用,而是指建立在計算機硬件條件下的軟件的運用過程,這些都有一定的標準,典型的說,比如C語言本身的C89,C99標準,對于這些標準的理解,對于計算機初學者而言是非常困難的。在教學中,學生常習慣去追求為什么要這樣?這就涉及到C語言本身內在運作機制的理解,很容易造成知難而退。在教學中引入實例性教學模式,目的在于使學生在學習中首先關注的是怎么用,而不是為什么,然后再去關注程序的運行過程,最后理解程序的存儲機制和運作原理。在IT行業中,許多程序員也可以證明這一點,對于他們而言,應用是第一位的, 理解是第二位。
所以,在C語言教學中以實例教學方法為主,把握先應用再理解的原則,從而使學生在應用的基礎上,再加強對編程的理解。
C語言教學中,新語法新知識的學習過程,通過對同一問題的舊新知識解決過程的對比,突顯新知識的優越性,突出新知識的必要性和重要性。我們稱之為“實例對比法”。
在知識的展開、強化、復習過程中,通過多個實例的解題過程,關注學習內容的變化過程,在解題過程中,引導學生的思考過程,接受和形成自己的經驗,我們稱之為“實例經驗法”。
經歷了一個階段的學習,在學習內容的總結中,讓學生從事一個相對綜合的實例的開發過程,在教學中,引導學生對這個綜合實例進行功能拆分和模塊分析,而這個實例的分析和開發過程,可以讓學生獨立完成,或者分小組完成。強化學生的綜合知識能力,培養學生實際問題的分析解決能力。最后教學中,對綜合實例進行分析,探討,教學相長。我們稱之為“綜合實例法”。
(2)培養學生的邏輯思維為主,強化源代碼為輔
C語言課程作為計算機專業編程的基礎學科,教學中把如何引導學生用編程的思維模式去分析問題、解決問題能力的培養放到重中之重,而把學生是否能夠寫出正確的C語言源代碼做客觀的分析。如果學生的源代碼符合編程邏輯思維模式的要求,解題的邏輯結構準確,僅在C語言語法上有錯誤,對于這種情況,教學中應當作出肯定。學生在學習中,重視對編程理念的認識,要遠比他們重視源代碼要重要的多,當然兩者兼顧自然最好。同時也要說明,這種觀念只適應在編程的基礎教育中。
(3)打破常規思維模式習慣,打造良好的編程習慣
計算機專業的編程基礎是培養學生的編程邏輯思維模式。對于這種思維模式有別于常規的思維模式。常規上,人們使用的一種思維模式是來自于一般數學的思維模式,而這種一般數學思維模式是“集中型”的,在多個已知條件下,結論是明確的或者是唯一的。而計算機專業的編程中要求的思維模式是“發散型”的,在編程理念中解決實際問題時,要求歸納的是解決問題的方法,處理在各種可能條件下得到結論的過程。簡單一點說,使用編程的方法解決實際問題時,對于一個“點”上的問題,往往要在一個“面”上分析,歸納這個“面”上所有點的條件,在程序控制過程中,篩選所滿足條件的“點”;在編程中,對這個面的每一點都要妥當的處理,這樣寫出的程序才不至于漏洞百出。
打造學生良好的編程習慣,比如說:變量名的命名規則,變量聲明定義方法、源代碼分層次分段書寫;把大問題分解成若干個小問題使用函數來解決,即模塊化思想。這些小的習慣的運用,對于程序而言,也許并不影響結果,而對于學生而言,也不存在困難的技術問題,但是這些小的習慣的形成,將會直接帶來良好的程序風格和可讀性,為以后寫出高質量的程序代碼打下基礎。
綜上所述,高校計算機專業C語言課程是專業編程的基礎課程,教學中弱化其社會實際職業應用能力,強化編程思維理念的培養,明確教學的目的,定位準確的教學理念,使用強化訓練的教學手段,為以后后繼的專業知識學習構建良好的基礎和框架。
參考文獻:
《C++ 程序設計教程》 錢能 清華大學出版設
《C++ 參考大全》 [美]Herbert Schidt電子工業出版設
《C# 精髓》[美]Chris H.Papps 人民郵電出版設
(作者單位:河南經貿職業學院)