徐鋼強
摘要:本文以程序設(shè)計教學(xué)為研究陣地,針對程序設(shè)計教學(xué)中從數(shù)學(xué)思維到計算思維、現(xiàn)實問題與計算機結(jié)構(gòu)化問題之間的“斷橋”現(xiàn)象,從問題界定、對象抽象、子問題分解、模式識別和建模自動化實現(xiàn)等方面,將計算思維過程可視化,將頭腦中模糊的、隨性的思維碎片,變成可見的、清晰的、系統(tǒng)的思維流程,讓學(xué)生通過可視化分析,親歷計算思維的整個過程,從而透析計算思維的內(nèi)在實質(zhì),讓計算思維培養(yǎng)落到實處。
關(guān)鍵詞:計算思維;程序設(shè)計;可視化
中圖分類號:G434? 文獻標(biāo)識碼:A? 論文編號:1674-2117(2022)06-0000-04
作為信息技術(shù)學(xué)科核心素養(yǎng)的重要組成部分,計算思維讓信息技術(shù)學(xué)科的思維培養(yǎng)有了明確的指向,廣大一線教師也在教學(xué)中紛紛滲透計算思維培養(yǎng)的意識。但不可否認(rèn),更多的計算思維培養(yǎng)還停留在教師理念和教學(xué)設(shè)計層面,真正讓學(xué)生親身演繹計算思維的過程還較缺乏。針對這種現(xiàn)狀,筆者從程序設(shè)計教學(xué)領(lǐng)域出發(fā),嘗試通過將計算思維過程可視化,讓學(xué)生在可視化分析中去感受、演繹計算思維的過程,從而透析計算思維的內(nèi)在實質(zhì),在潛移默化中實現(xiàn)計算思維的培養(yǎng)。
● 程序設(shè)計教學(xué)中的思維“斷橋”現(xiàn)象
1.現(xiàn)實問題與計算機結(jié)構(gòu)化問題之間的“斷橋”
信息技術(shù)之所以能夠應(yīng)用于現(xiàn)實,推動人類社會發(fā)展,是因為它能夠?qū)ΜF(xiàn)實問題進行計算機化的處理,也就是讓現(xiàn)實中的問題變得可計算。而這就需要對現(xiàn)實問題進行結(jié)構(gòu)化分析,并抽象和建模。對學(xué)生而言,由于固有思維的影響,對現(xiàn)實問題描述的結(jié)構(gòu)化分析和抽象建模是他們所面臨的一個短板。
2.從數(shù)學(xué)思維到計算思維之間的“斷橋”
計算機處理的很多問題其實都是數(shù)學(xué)問題,尤其是對于程序設(shè)計初學(xué)者而言,由于其數(shù)學(xué)思維的先入為主,因此看待問題很容易從數(shù)學(xué)層面去分析,用數(shù)學(xué)方法去解決,這就使得他們的思維停留在數(shù)學(xué)思維層面,而無法跨越到計算思維層面。例如,同樣是計算1+2+3+…+100的和,學(xué)生自然而然地會想到應(yīng)用等差數(shù)列的方式求解,而且確實能夠直接通過公式利用計算機進行解決,并且從效率上來講,確實優(yōu)于計算機利用循環(huán)累加的方式進行求和,但是這樣就限制了學(xué)生利用計算思維方式去看待問題,對于培養(yǎng)他們的計算思維,是存在一定缺陷的。
以上“斷橋”現(xiàn)象,歸根結(jié)底就是計算思維培養(yǎng)離真正落地還有距離。
● 從編程工具可視化到計算思維可視化
1.編程工具的可視化
作為編程語言,從純代碼的Basic、Pascal、C語言等,到基于所見即所得的Visual Basic、Visual C++,乃至積木式、圖形化的,編程工具的可視化極大地簡化了程序代碼的編寫難度,對程序設(shè)計的普及有著極大的促進作用,但從某種程度上來講,這只是一種形式上的簡化,并非思維層面的實質(zhì)提升。
2.計算思維的可視化
計算思維的可視化并非只是簡單地呈現(xiàn)出來,其實質(zhì)是讓學(xué)生從計算思維的視角去分析、解決問題。因為程序設(shè)計要求的思維程度較高,而初學(xué)者對問題進行分解抽象、再加工的能力有限,所以容易造成無從下手的局面,而讓頭腦中的思維過程通過某種形式表現(xiàn)出來,演繹整個思維過程,能讓初學(xué)者對對象、子問題、規(guī)律等有效把握,進而完成抽象加工和數(shù)學(xué)建模。
● 計算思維可視化在程序設(shè)計教學(xué)中的探索
1.問題界定可視化
程序設(shè)計就是在計算思維下解決某個實際問題的過程,但現(xiàn)實中的問題往往缺乏一定的結(jié)構(gòu)性,而且在描述上會有很多其他干擾性因素,也可能會有一些隱含因素,導(dǎo)致學(xué)生對問題看不懂、看不全,其實質(zhì)就是問題界定環(huán)節(jié)缺失。教師可通過對問題的結(jié)構(gòu)化分析,明確需要解決什么、隱含條件或限制條件是什么,這對學(xué)生準(zhǔn)確把握要解決的問題的實質(zhì)非常重要。
例如,有問題描述如下:雙休日,陶陶打算幫爸爸做點事。爸爸對陶陶說:“倉庫中有一批長短不一的鋼管,需要切割成等長的小管,本著節(jié)約的原則不能有零頭浪費,同時因為切割也很麻煩,要讓切割的次數(shù)盡量少一些,你能不能幫我計算一下每根多長最合適。”陶陶犯難了,你能通過編程幫他解決這個問題嗎?
該問題通過情境化的描述,將問題的條件隱含在描述中,這就需要學(xué)生根據(jù)描述對問題進行界定,教師可引導(dǎo)學(xué)生進行結(jié)構(gòu)化分析(如表1)。
通過問題界定的可視化,將問題的需求一一羅列,同時對每個需求進行相應(yīng)分析,形成分析表,最后得出分析結(jié)論,這樣一方面有助于促進學(xué)生對問題描述的把握,另一方面也為學(xué)生分析思維過程提供了支架,降低了難度。
2.對象抽象可視化
利用計算機解決實際問題,從某種程度上來講,就是為了解決“誰做什么”的問題,這里的“誰”指的就是計算思維中的對象,“做什么”就是算法。從現(xiàn)實問題中的“誰”到程序設(shè)計中的數(shù)據(jù)結(jié)構(gòu),需要對對象進行抽象,而這個抽象過程,就是對對象進行結(jié)構(gòu)化加工。對于程序設(shè)計的初學(xué)者而言,如何建立起具體事物到數(shù)據(jù)結(jié)構(gòu)對象之間的抽象至關(guān)重要,這是利用計算思維解決實際問題的關(guān)鍵。
例如,問題“校門外的樹”,描述如下:某校大門外,長度為L的馬路上有一排樹,每兩棵相鄰的樹之間的間隔都是1米。由于馬路上有一些區(qū)域要用來建地鐵,這些區(qū)域在數(shù)軸上用起始點和終止點表示。已知任一區(qū)域的起始點和終止點的坐標(biāo)都是整數(shù),區(qū)域之間可能有重合的部分?,F(xiàn)在要把這些區(qū)域中的樹(包括區(qū)域端點處的兩棵樹)移走,你的任務(wù)是計算“將這些樹都移走后,馬路上還有多少棵樹”。
在表2中,通過將具體對象和抽象對象、具體狀態(tài)和抽象狀態(tài)結(jié)合分析,在可視化狀態(tài)下呈現(xiàn)出來,很容易完成從具體到抽象的過渡,從而建立起問題的數(shù)據(jù)結(jié)構(gòu),為后面的算法設(shè)計打下基礎(chǔ)。
3.規(guī)律抽象可視化
規(guī)律永遠(yuǎn)是程序設(shè)計的重要內(nèi)涵,而規(guī)律的背后,就是利用計算思維對現(xiàn)實問題的可計算加工,也就是發(fā)現(xiàn)“自動化”點,這個過程往往是最有難度的。規(guī)律抽象可視化通過兩個步驟來實現(xiàn):一是發(fā)現(xiàn)規(guī)律;二是規(guī)律的抽象提煉,進而完成數(shù)學(xué)建模,實現(xiàn)計算思維的自動化表達。
例如,數(shù)組數(shù)據(jù)轉(zhuǎn)置問題,即將原數(shù)組n個單元首尾倒置存放。可視化過程如下圖所示。通過圖中的規(guī)律抽象可視化分析,其思維過程從具體到抽象完整地體現(xiàn)了出來,算法的設(shè)計就是臨門一腳的事情了。
4.模式識別可視化
當(dāng)問題具有相同的特征時,它們的解決會變得更簡單,因為當(dāng)存在共同模式時,可以用相同的方法解決此類問題,這就是模式識別。
當(dāng)面對一個程序問題時,引導(dǎo)學(xué)生通過對問題的分析、分解,識別哪些特征是熟悉的,可以用什么數(shù)據(jù)結(jié)構(gòu)來表示;哪些過程似曾相識,可以用之前學(xué)過的哪些方法來解決;哪些問題是目前尚無已有經(jīng)驗可以解決的,它們就是學(xué)習(xí)新知或進行探索的重點。通過模式識別分析,一方面有助于學(xué)生敏銳地發(fā)現(xiàn)問題中的抽象特征,學(xué)會對已有經(jīng)驗進行遷移應(yīng)用,另一方面也有助于學(xué)生發(fā)現(xiàn)未知領(lǐng)域,觸發(fā)探究動力。
例如,求n個數(shù)在數(shù)軸上的最大間隙問題,其模式分析如表3所示。
5.優(yōu)化處理可視化
優(yōu)化處理實質(zhì)上是對現(xiàn)有程序的迭代和再加工,是建立在對現(xiàn)有算法充分分析的基礎(chǔ)上進行的,是對原有算法的全面反芻。可優(yōu)化就意味著現(xiàn)有算法存在著一定的冗余,發(fā)現(xiàn)冗余并提出相應(yīng)的改進,是算法思維的進階和迭代。同時,這也對編程者提出了更高的要求,優(yōu)化處理的可視化分析就是幫助編程者對原有算法進行全面復(fù)盤,進而發(fā)現(xiàn)可優(yōu)化點。例如,素數(shù)判斷算法,如表4所示。
表4中的原始算法是根據(jù)素數(shù)定義進行模擬得到的。通過對比分析,提出優(yōu)化設(shè)想,從而實現(xiàn)對原程序的優(yōu)化,使得整個思維的反芻和迭代過程可視化,讓思維的每一次進階和迭代都有借力的支點。
總之,從問題界定、對象抽象,到子問題分解、模式識別,進而優(yōu)化迭代,其思維過程的可視化就是讓學(xué)生真正融入到思維的演繹中去,讓學(xué)生成為思維過程的主宰者,而不是僅僅停留在師生交互的一問一答中。只有讓學(xué)生沉浸在計算思維的浪潮中,才能使其真正發(fā)現(xiàn)計算思維的深邃魅力,讓整個過程充滿挑戰(zhàn)與樂趣。
參考文獻:
[1]王榮良.基于思維視角的計算思維教育落實[J].中小學(xué)數(shù)字化教學(xué),2020(01):20-23.
[2]費海明.計算歸簡,分合衍變——計算思維內(nèi)涵探析與教學(xué)創(chuàng)意[J].中國信息技術(shù)教育,2020(20):85-88.