摘 要 運用自然語言的思維建構C語言程序設計教學,不僅可以降低C語言本身的抽象性、提高學生的學習興趣,而且還可以加強學生對C語言的理解和記憶,最終真正掌握C語言程序設計的方法和技巧。
關鍵詞 自然語言 建構 C語言 教學
1 引言
語言是交流思想的工具,日常生活中使用的漢語、英語是人與人交流思想的自然語言,而C語言則是人與計算機交流的計算機語言。C語言具有易寫、易讀、易修改等優點,已成為一門非常流行、深受計算機程序設計愛好者歡迎的通用高級計算機語言,許多高校把它作為大學生進行計算機文化基礎教育的入門語言。然而,經過多年的教學實踐發現,對于非計算機專業的大學生來說,由于它自身的抽象性很強,學生普遍反映學不懂,有的學生甚至產生了抵觸的情緒,直接導致他們失去了學習C語言的興趣,甚至影響到他們進一步學習計算機的其他知識,C語言似乎變成了一門“可望而不可及”的計算機語言。
2 關于建構主義教育理論
建構主義教育理論是當今國際教育界影響較大、并日益顯示其強大生命力的一種新教育理論,它對于我們深化教育改革、進行學科教育研究都有重要的借鑒和啟示作用。建構主義教育理論的核心觀點是:人作為認知主體對知識的獲取不是被動地接受、而是主動加工建構的,即學習知識是“認知主體”的內部心理過程、并把學習者看作是“信息加工主體”,而不再將學習視為“刺激——反應” 的行為過程、把學習者看作對外部刺激做出被動反應的“知識灌輸對象”。也就是說,學習是學習者在原有知識的基礎上借助外來信息、通過雙向、交互作用來加工建構的認知過程。建構主義教育理論的主要目的是讓學生自主建構自身知識,教師只是起到通過科學的教學方法和手段幫助學生積極主動完成知識建構的輔助、指導作用。
以建構主義教育理論為指導,運用自然語言的思維建構C語言程序設計教學,為我們解決“C語言抽象性強、學生難以學通”的教學難題提供了很好的解決思路和方法。
3 運用自然語言的思維建構C語言的基礎知識
大學生作為授課對象,對英語的基本詞匯和句法都已經熟練掌握,這為他們學習C語言創造了良好條件。教師應該充分發揮英語這一“天然拐杖”作用,把學生作為“學習主體”、“教學中心”,通過多媒體課件將C語言基礎知識的要點用精煉的英文關鍵字或短句顯示出來,同時提示一些必要的數學知識,演示幾個經典的具體實例,引導和啟發學生運用自然語言的思維,自主地建構C語言的語法規則和句法結構。在整個教學過程中,教師只起到適時和必要的提示、激勵作用;學生始終作為主體直接參與教學,“外化”已學過的英語知識,并不斷產生正遷移,學習興趣和學習熱情、主動性和建構性不斷被激發,學生完全是在一種“探索與發現”式的學習過程中,積極主動地建構自己的C語言基礎知識。
3.1運用自然語言的思維建構C語言中的關鍵字
C語言中的關鍵字(又稱保留字)一般是英文單詞或其縮寫形式,其含義完全是相應英文單詞含義的遷移和引申。例如:int是定義整型變量的關鍵字,它是英文單詞integer的縮寫,而integer本身就有“整數”的含義,由此用int定義C語言的一個整型內存變量就顯得自然而然了。如果教師本著這樣一個思路,首先將C語言關鍵字的功能講授清楚,再提示相應的英文單詞,學生便可運用自然語言的思維輕松地建構起C語言的詞匯表,進而在學習伊始就揭開了C語言的神秘面紗,并建立起學習C語言的興趣,真正掌握C語言的詞匯表。
3.2運用自然語言的思維建構C語言的語法結構
C語言的語法格式即計算機能夠“看懂”的語句格式,是由人創造發明的,因此,C語言語法結構所體現的邏輯思維模式就是人自然語言的思維模式,不同的是:C語言的語句格式比自然語言更精煉和簡約,同時結合了一些簡單的數學知識。
例如,C語言中定義變量兼賦值的一個簡單語句“ int n=90;”,它是將英語句子“There is an integer n ,its value is 90.”中介詞、副詞等不重要的詞去掉,再結合數學中賦值(“=”)的含義演變而來的,至于語句后面的“;”標點符號,如同自然語言中每個語句之后需要有標點標識一樣,在C語言程序中每條語句之后也要有標識,即“;”是C語言中表示每條語句的結束符。
又如:C語言最大的函數是主函數main( ) 。在英語中,main就有“主要的”含義,如果將此含義遷移、再結合數學中“函數”的概念y=f(x),學生便可自主地建構起C語言中main( )函數的準確概念:它是任何一個完整C語言程序都必須具有、且只能有一個的最大函數,只是C語言中的main( )函數通常既不要求設置參數,也不要求取得返回值,它也是整個C語言程序的開始標志;至于緊跟在它下的“{ }”一對大括號則定義了main( )的函數體,其間包含了用戶需要計算機完成一定功能的具體操作,即計算機可以讀懂、執行的語句組合。換句話說,一個完整的C語言程序其實就是一個main( )函數,編寫一個C語言程序就是編寫一個main( )函數。
總之,教師在講授C語言的語法結構時,除了通過必要的提示,讓學生產生聯想,實現知識的正遷移,還應該演示一些結構簡單而且經典的實例,將抽象和具體充分結合,會更有助于學生運用自然語言的思維總結歸納出C語言的相應語句格式。這樣,學生不再是被動地接受知識,而是經過自己積極、創造性地思考來加工建構C語言的語法結構,學生的創造性思維得到有效培養,最終激發了他們學好C語言的興趣并掌握它。
3.3 運用自然語言的思維建構C語言的三大基本結構
C語言的三大結構分別是順序、分支和循環結構,其語法格式所反映的邏輯思維模式與英語中相關語句的邏輯思維模式十分相似。例一,分支結構的基本語句格式之一:if (條件) 語句塊1Else 語句塊2 ,這與英語中if語句的邏輯思維過程完全一致,即當滿足“條件”時執行“語句塊1”,否則執行“語句塊2”。例二,循環結構的基本語句格式之一:For (表達式1,表達式2,表達式3) 循環體,它同樣與英語中for語句的邏輯思維過程相一致,即當循環變量滿足For后面“表達式1,表達式2,表達式3”的變化要求時,執行“循環體”。至于順序結構的邏輯思維結構,則完全是自然語言的邏輯思維順序,即順序地執行此結構中的每條語句。
因此,教師適時地將自然語言中的相關詞匯、相關句法予以提示,學生不斷將其涵義引申和遷移,輕松地建構起C語言中的三大結構,并在具體程序設計中應用自如。
4 運用自然語言的思維建構C語言程序設計
計算機的本質就是將數據轉化為有用信息,它被告知每一步具體的操作,通過高速、精確執行計算,將用戶輸入的相關數據變成有用信息輸出。計算機具體執行的操作是一系列指令集合即程序。計算機執行操作的先后邏輯則是算法,通俗講,就是用戶解決問題的具體想法、思路。因此,編寫C語言程序就是把用戶解決問題的思路、方法用計算機能夠讀懂的語法格式表示出來,即運用自然語言的思維建構C語言程序設計。
例如,計算一個員工的薪酬。如果我們自己去計算,思路一般是:首先,我們必須知道“員工每小時掙多少錢”和“員工總共工作了多少小時”;然后,將上面兩個值相乘得出這名員工的實際薪酬。如果讓計算機來完成計算,它的算法為:它先接受鍵盤輸入的數據fPayrate(表示“員工每小時掙多少錢”的變量)和fHours(表示“員工總共工作了多少小時”的變量);之后再將這兩個變量的值相乘,并將它們的積存入fTotPay(表示“員工實際薪酬”的變量);最后,在屏幕上打印輸出fTotPay的值,即員工的實際薪酬。具體實現這一計算任務的C語言程序代碼如下所示。
# include
main ( )
{
/*定義變量*/
float fPayrate;/*定義“員工每小時掙多少錢”的變量*/
float fHours;/*定義“員工總共工作了多少小時”的變量*/
float fTotPay;/*定義“輸出員工實際薪酬”的變量*/
/*輸入數據---初始化變量*/
printf ( “請輸入員工每小時掙多少錢: ¥”);
scanf ( “ %f ”, fPayrate);
printf ( “請輸入員工總共工作了多少小時: H”);
scanf ( “ %f ”, fHours);
/*計算實際薪酬---處理數據*/
fTotPay=fPayrate*fHours;
/*在屏幕上輸出實際薪酬---輸出結果*/
printf ( “ \ 員工的實際薪酬為: %6.2 ”, fTotPay);
}
在這樣一個完整的C語言程序中,主要包括四大部分。第一部分定義變量,即定義算法所需的所有變量:如float fPayrate、float fHours和float fTotPay,分別定義了計算機參與乘法運算的所有變量。第二部分為輸入數據,即完成算法中變量的初始化:程序調用了系統的內部函數scanf (“ %f” , fPayrate)和scanf ( “ %f ”, fHours),來完成“薪酬率”和“工作小時”兩個數據的輸入;只是為了使輸入的數據更明確,才調用了系統的內部函數,如printf (“請輸入員工每小時掙多少錢: ¥”)和printf ( “請輸入員工總共工作了多少小時: H”),確保用戶正確輸入“薪酬率”和“工作時間”所對應的數據值。第三部分則是整個程序的核心——處理數據,即計算機完成計算的核心部分:fTotPay=fPayrate*fHours。第四部分是輸出結果,即完成結果數據的輸出:再次調用了系統的內部函數printf (“ \員工的實際薪酬為:%6.2 ”, fTotPay),將員工的實際薪酬輸出到屏幕上。顯然,這四個部分結構清晰明了,就是我們人腦處理類似問題具體思維(自然語言思維)過程的再現。因此,一個C語言程序的設計過程實際上就是將人處理類似問題的思路和方法翻譯、變換成計算機所能識別的語句集合的過程。
這樣,通過經典實例對比自然語言的思維與C語言的程序代碼,解析出C語言程序結構及其設計方法,一方面大大降低C語言程序設計的難度,增強了學生學習C語言程序設計的興趣,另一方面更有助于學生自主建構C語言程序設計的方法和技巧。
5 結束語
在我校計算機文化基礎教育中,利用建構主義教育理論作指導,運用自然語言的思維建構C語言程序設計教學,取得了明顯成效:既降低了C語言自身的抽象性,使廣大學生克服了對C語言學習的畏難心理、增強了學習興趣,又有助于他們掌握C語言程序設計的方法和技巧,在多次學科評估中受到好評,并被評為創新精品課程。當然,作為教學改革和教學探索,在具體的教學實踐中仍需不斷總結經驗、改進不足,努力提高。
參考文獻
[1] 王載新,曾大亮,楊有安等.程序設計基礎(C語言)[M].北京:清華大學出版社,2004.
[2] 何克抗,李文光.教育技術學[M].北京師范大學出版社,2005.
[3] 馮忠良,伍新春,姚梅林等.教育心理學[M].北京:人民教育出版社,2002.
[4] David Jonassen, et al. Constructivism and Computer-Mediated Communication in Distance Education, The American Journal of Distance Education Vol.9 No.2, 1995.
[5] 張建偉,孫燕青.建構性學習[M].上海教育出版社,2004.