李曉昀 陽小華 劉志明 馬淑萍 余穎
摘要:大學計算機作為現代大學通識教育基礎性課程之一,是培養大學生信息素養和科學思維方式的入門課程。文章從多樣性、相關性、一體性、結構性、有序性和動態性思維培養的角度出發。一一說明針對非計算機專業學生的程序設計課程教學內容如何設計,如何將思維訓練融合到知識教學每個環節,潛移默化地對學生進行思維意識及思維技能的培養與訓練。
關鍵詞:程序設計;系統思維;思維訓練;多樣性;相關性;一體性
引言
現代教育是以培養具有自主思維、獨立解決問題能力及創新能力的人才為目標。培養人的科學思維能力已成為教育的核心內容。知識教學轉向思維教學已成必然之勢。系統思維作為科學思維中的一種重要思維方式,一直以來都受到各類學科的重視。CNKI檢索顯示,近十年來,有關系統思維培養的文獻高達35萬篇,涵蓋了經濟、哲學、醫學、語言學、建筑學等多個學科,平均每個學科有數千甚至上萬篇相關文獻。系統思維是將對象視為一個系統來思考,關鍵是要運用系統的概念。中國人民大學苗東升教授發表了一系列論文論述系統思維。他指出系統是由多個組成部分相互聯系形成的一個統一體,具有多樣性、相關性和一體性3個基本屬性,同時派生出整體性、有序性、動態性及不確定性等其他屬性。例如,交通控制系統是一個典型的復雜系統,以其中紅綠燈時長的設置為例,紅綠燈的時長并非每一個路口都一樣。交通燈時長設置不僅要考慮該路口各方向車流量,更要考慮整個大的系統內不同時間點的車流量、周邊路況,甚至節假日、氣象條件等要素。
當然,非計算機專業學生不必開發如此復雜的系統,但即使是求解一個簡單實際問題,運用系統概念來分析、求解問題的思維方式卻是一樣的。程序設計課程的教學方式就是有意識地設計教學內容,將思維訓練融合到知識教學的每個環節中,潛移默化地對學生進行思維意識及思維技能的培養與訓練。由于程序設計自身的特殊性,它對系統思維中多樣性、相關性、一體性、結構性、有序性和動態性這幾個方面的思維訓練有極大的幫助。
1多樣性思維培養
多樣性是系統思維的基本要求。系統多樣性包含兩個要素,一是應有多個組成元素,二是元素之間應有差異性。如果僅僅只有多個組成元素,彼此沒有明顯差異,則無法體現系統思維的價值。對學生多樣性思維的培養,要求所開設課程必須具備這兩個基本要素,而程序設計課程則恰恰完全符合多樣性的兩個要求。
以C語言程序設計為例。C語言有許多基本知識點,例如數據類型、程序結構、算法等,均從不同的角度體現了多樣性原則。C語言中最基本的概念是變量。變量根據存儲數據的不同定義為不同數據類型。生活中數據多種多樣,如整數、小數、字符,還有一些具有復雜的對象,例如學生個人信息、考試成績等,為處理這些不同類型的數據,C語言提供了多樣數據類型,如整型、實型、字符型、結構體、指針、數組及枚舉型等。在求解實際問題時,除了要分析清楚數據對象特征,還要了解各種數據類型之間的差異及其使用方法,并通過大量練習,掌握并靈活應用這些數據類型,這對于訓練學生多樣性思維有極大幫助。
另外,多樣性還體現在求解問題的算法設計中。通常解決同一個問題會有不同算法。算法設計是程序設計的核心。講解循環結構時,以求解1至100的和為例,引導學生思考不同算法。如直接求和:1+2+3+…+100;采用高斯計算法,即:(0+100)+(1+99)+(2+98)+…+(49+51)+50=(50×100)+50;采用等差數列求和公式,即:100(1+100)/2。分析三個算法的特點,引導學生學會利用已有知識,學會從多個角度分析問題。教學過程中,鼓勵學生打開思路、從不同的角度思考,采用不同的類型、結構實現,都能解決問題。同時,引導學生進一步分析各個算法的差異,不僅能夠鞏固知識點學習,也能夠加深學生對不同數據類型、程序結構優缺點的認識,這有助于學生提高獨立思考能力、培養多樣性思維。
2相關性思維培養
系統的相關性是指系統中的多個元素必然是相互關聯、相互作用、相互交往的??疾旄鱾€組成部分之間、變量之間的相互關系,這是系統思維的基本要求。
C語言是一門模塊化程序設計語言。在求解一個復雜問題時,一般采用逐步分解、分而治之的方法,即將一個大問題分解成若干相對較易求解的小問題,再分別進行求解。學生在編寫一個復雜程序時,是將整個程序的功能劃分為若干功能較為單一的程序模塊,即用函數實現每個單一功能。然后再將所有的函數模塊像搭積木一般,組合起來。因此,C語言程序中,函數才是程序的基本組成單位,也是相關性在程序設計中的典型體現。
函數有其獨立性,但卻不是孤立的。只有被其他程序調用的函數才具有生命力,這使得在學習函數時,不僅要分析函數功能的實現過程,更要著眼于函數與程序其他部分之間的調用、。被調用關系。對于調用函數而言,無須了解函數功能實現細節,但應了解如何使用函數的返回類型、函數名稱、形參的個數和類型。對于被調用函數而言,實參所有傳遞過來值(地址)的所有可能性,都應予以考慮,并定義有相應的反饋。由此可見,教學中,鼓勵學生理解這些相關知識、正確編寫調用與被調用函數,不僅是保證函數之間相互交往、相互作用達到預期效果最基本的要求;.同時,通過大量函數運用的練習,能夠很好地訓練學生在分析問題時運用系統思維中的相關性來思考、解決問題。
3一體性思維培養
系統思維中最重要的是每個系統所涵蓋的多個部分如何統一運行,服從統一規律,呈現出怎樣的“個性”。系統囊括對象多、卻無法構成統一體,則稱不上系統。只有按照特定方式關聯起來而形成統一體的才可稱之為系統。
程序設計課程中每一個程序的編寫。都是對一體性思維訓練的強化。同樣以函數為例,函數是c語言程序的基本單位,任何一個函數都有其獨立的功能。學生在編寫程序過程中,為了實現程序自身的整體性功能,或多或少都要用到函數,這要求學生必須遵循函數使用的統一規則,卻又根據不同函數的特點采用不同的函數調用方法;另外,同一函數在不同程序中又能呈現出不同的個性或作用。每一次程序編寫都要求學生具。有一個一體性層面的思維,來整體把握程序中各類函數的定義與調用,從而實現統一的目標。
4結構性思維培養
系統思維中的結構性是指系統內部各組成要素之間的相互聯系、相互作用的方式或秩序,即各要素在時間或空間上排列和組合的具體形式。生活中的實際問題多種多樣,求解問題的方法亦不相同。
C語言提供了3種不同的程序結構來滿足求解問題所需,即順序結構、選擇結構和循環結構。3種結構體現了在求解問題時所需的各類方法特點。C語言中包含大量知識點,能夠訓練學生結構化思維方式。例如函數的使用,只有在對程序整體結構清晰、求解方法明確的前提之下,才能正確地完成函數的定義與調用,又如構造數據類型的學習。結構體是一種典型的構造數據類型,結構體中包含不同成員,這種方式能夠將各種不同類型的數據關聯起來,形成一種特殊的結構,能夠解決生活中許多現實問題。不具備程序整體結構性思維及相應的知識,就無法正確地編寫程序,無法完成課程任務。由此可見,在C語言的學習過程中,能夠不斷強化學生的結構化思維訓練。
5有序性思維培養
有序性是指系統中各要素之間有秩序的聯系。它是保證一個系統的基本特征,并維持一個系統生存與發展的關鍵。在現實系統中,系統有序性的表現多種多樣,不同系統的各要素之間也可能具有不同的關系,遵循不同的秩序。因此,對學生系統有序性思維的培養,體現在程序設計中,即要求學生能夠根據不同的現實問題,合理組織、使用程序設計語言中的各個要素。
事實上,有序性概念貫穿程序設計課程的整個教學過程,對許多知識點的學習以及每一次程序設計練習,都是對有序性思維的強化。首先,程序設計語言中最基礎的一個概念就是變量,對變量的學習就要求學生能夠理解變量的值在計算機內存空間中的有序存儲。之后所學的數組、指針等,都在不斷地強化學生對數據存儲有序的概念。其次,對學生有序思維的培養不僅局限在直觀的物理有序上,更體現在邏輯有序的學習上。因為數據存儲不僅有物理有序,也包括邏輯有序。在學習結構體鏈表時,對鏈表的插入、刪除等操作,能夠讓學生加深對邏輯有序的理解。另外,任何一個程序,無論是簡單的還是復雜的,該程序都是按照一定秩序有序執行的。當學生為解決不同問題而采用不同要素、結構來組織程序時,程序的執行順序也會相應不同。
6動態性思維培養
動態性思維是用一種運動的、調整性的、不斷擇優化的思維方式來求解問題。這種思維方式是根據不斷變化的環境、條件來改變自己的思維程序、思維方向,對事物進行調整、控制,從而達到優化的思維目標。
在程序設計中,有大量概念體現了動態思維。例如,根據運算對象的類型設定不同類型的變量,內存相應分配不同大小存儲空間。如char型分配1個字節,int型分配4個字節,double型分配8個字節,在多種類型數值進行混合運算時,其結果又能根據精度需求動態地向高精度類型轉換。又如循環結構中,循環變量值的變化是程序動態性的最佳體現。學生在單步調試時,能夠清楚地觀察到循環變量及相關變量值的每一步變化。如求解1至100的和,設循環變量為i,i的值將從起始值1逐一變化到100,同時,求和變量sum的值也將隨著i的變化而動態變化。再如在函數定義中形參的設定亦是訓練學生動態思維的重要知識點。每次調用函數時,函數所接收到的實參都是不同的。只有具有了動態性思維,才是真正理解了函數的實參和形參的概念。另外,指針類型的變量,能夠存儲不同地址數據,根據其值的不同,能夠動態地指向不同的地址等。由此可見,程序設計語言中存在大量的知識點,蘊含了動態性思維的需求,對學生動態性思維能力的提高具有極大激勵作用。
7結語
文中所舉之例僅是程序設計語言中較小部分,仍有大量知識點及算法設計思想蘊含著系統思維的應用。非計算機專業學生雖無須在程序設計能力上達到一個較高水平,但在學習過程中,算法設計及程序編寫的訓練,都在一定程度上培養了學生應用系統思維的能力。
理工、醫學、文法等各個學科對系統思維能力都提出了較高要求,大學計算機作為一門必修課,在教學方式、教學內容等方面都應打破傳統的灌輸填鴨式教學模式,代之以思維教學為核心,以培養學生專業修讀所需系統思維能力為目標,同述還需要計算機基礎教師進一步探究,使