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