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