王愛(ài)勝


跨學(xué)科學(xué)習(xí)與項(xiàng)目學(xué)習(xí)有著必然的關(guān)聯(lián),兩者的協(xié)調(diào)設(shè)計(jì)是一線教學(xué)最新的發(fā)展趨勢(shì)。本期解碼,讓我們從中小學(xué)不同內(nèi)容的跨學(xué)科視角來(lái)探索如何進(jìn)行真實(shí)的項(xiàng)目設(shè)計(jì)。
在項(xiàng)目學(xué)習(xí)中,最困難的是針對(duì)項(xiàng)目?jī)?nèi)容“真實(shí)性”特征進(jìn)行項(xiàng)目設(shè)計(jì)。在實(shí)踐中,教師往往虛構(gòu)項(xiàng)目應(yīng)用,或者簡(jiǎn)化技術(shù)功能,究其原因往往歸結(jié)為受多種因素的局限,如技術(shù)實(shí)現(xiàn)困難、學(xué)習(xí)時(shí)間不足、主題難以設(shè)計(jì)等。那么,如何打破局限,讓項(xiàng)目真實(shí)設(shè)計(jì)呢?本文結(jié)合高中必修一“數(shù)據(jù)計(jì)算”與必修二“信息系統(tǒng)設(shè)計(jì)”的內(nèi)容,基于計(jì)算思維尋找算法與編程項(xiàng)目思維基礎(chǔ),面向“名著閱讀跨學(xué)科學(xué)習(xí)”尋找項(xiàng)目主題,以“名著朗讀者”為真實(shí)項(xiàng)目設(shè)計(jì)過(guò)程,以“數(shù)據(jù)計(jì)算與信息系統(tǒng)設(shè)計(jì)”為學(xué)科內(nèi)容,研究真實(shí)項(xiàng)目設(shè)計(jì)中的主題規(guī)劃、功能需求、技術(shù)現(xiàn)實(shí)的整體生成過(guò)程。本項(xiàng)目涉及的信息系統(tǒng)的概要設(shè)計(jì)如圖1所示。
項(xiàng)目設(shè)計(jì)價(jià)值定位
因?yàn)楣ぷ鳌r(shí)間等關(guān)系,我們常常不能總盯著電腦看文章,這對(duì)想閱讀名著的計(jì)劃實(shí)施十分不利。筆者曾嘗試?yán)梦淖痔幚砉ぞ咴诰€朗讀,但速度偏慢,因此擬做一個(gè)朗讀文章的工具,并推薦給學(xué)生以“跨學(xué)科學(xué)習(xí)”項(xiàng)目來(lái)開(kāi)展名著閱讀與信息系統(tǒng)設(shè)計(jì)學(xué)習(xí),并在教學(xué)中指導(dǎo)學(xué)生整體體驗(yàn)基于數(shù)據(jù)處理的計(jì)算思維養(yǎng)成,以實(shí)施基于計(jì)算思維核心素養(yǎng)發(fā)展意義的跨學(xué)科項(xiàng)目學(xué)習(xí)。為此,將項(xiàng)目主題設(shè)計(jì)確定為:名著朗讀者。
項(xiàng)目準(zhǔn)備與技術(shù)探索
在項(xiàng)目開(kāi)始時(shí),我們對(duì)全面實(shí)現(xiàn)“朗讀”的方案、技術(shù)并不掌握,所以要先進(jìn)行快速的探索與實(shí)驗(yàn),以形成相關(guān)的創(chuàng)作意識(shí),其可在微項(xiàng)目1~2技術(shù)實(shí)驗(yàn)中逐步形成。
微項(xiàng)目1:朗讀模塊安裝實(shí)驗(yàn)。
在項(xiàng)目設(shè)計(jì)之前,首先準(zhǔn)備要應(yīng)用到的知識(shí)與技術(shù),通過(guò)技術(shù)實(shí)驗(yàn)做到“三軍未動(dòng)糧草先行”。為設(shè)計(jì)“名著朗讀者”項(xiàng)目,查詢到的“朗讀模塊”較多,結(jié)合曾用過(guò)的winsoud模塊判斷不能在操作系統(tǒng)和Python版本上有局限,這樣才能方便不同環(huán)境使用。因此,擬采用跨系統(tǒng)的通用語(yǔ)音合成模塊pyttsx3進(jìn)行技術(shù)實(shí)驗(yàn)。
(1)技術(shù)實(shí)驗(yàn):安裝程序及錯(cuò)誤排除。一般情況下,當(dāng)安裝Python后,模塊安裝程序pip、pip3都是版本過(guò)低,根據(jù)提示更新卻往往不易成功,且pip文件全被刪除。這給模塊安裝造成困難,同時(shí)這也是設(shè)計(jì)類項(xiàng)目最制約初學(xué)者的困難。因此,通過(guò)搜索探討pip的修復(fù)、升級(jí)以及快速安裝的國(guó)內(nèi)鏡像策略等。
(2)實(shí)驗(yàn)結(jié)論。①pip的升級(jí)過(guò)程會(huì)有多種錯(cuò)誤,可進(jìn)行修復(fù)pip、更新,然后安裝模塊。②pip的路徑使用國(guó)內(nèi)鏡像,速度更快,也更穩(wěn)定。③pyttsx3模塊的語(yǔ)音合成與朗讀等基本功能能夠朗讀文本。
(3)實(shí)踐學(xué)習(xí)。①pyttsx3模塊的安裝是否存在問(wèn)題?交流解決的方法。②在技術(shù)實(shí)驗(yàn)中是否有需求萌發(fā)?隨時(shí)記錄想法,對(duì)規(guī)劃設(shè)計(jì)項(xiàng)目會(huì)有幫助。
微項(xiàng)目2:簡(jiǎn)單文本的朗讀實(shí)現(xiàn)。
在測(cè)試中,實(shí)際是對(duì)項(xiàng)目的核心技術(shù)要素進(jìn)行探究,可通過(guò)“簡(jiǎn)單文本朗讀實(shí)現(xiàn)”完成。
(1)模塊測(cè)試實(shí)驗(yàn):模塊安裝是否成功。模塊方法較多,如用help('模塊名')檢測(cè)是否成功。
(2)技術(shù)測(cè)試實(shí)驗(yàn):朗讀與異常處理。結(jié)合try技術(shù),進(jìn)行Bug消除與異常預(yù)處理,也是較好的工程思維,符合計(jì)算思維的功能泛化要點(diǎn),以適應(yīng)更多的情況。進(jìn)行基礎(chǔ)文字朗讀實(shí)驗(yàn),可以體驗(yàn)技術(shù)效果。在非項(xiàng)目學(xué)習(xí)中,至此體驗(yàn)即算完成關(guān)于“語(yǔ)音合成”模塊的純知識(shí)學(xué)習(xí),對(duì)數(shù)據(jù)處理流程卻不能再有學(xué)習(xí),由此可見(jiàn)項(xiàng)目學(xué)習(xí)的綜合價(jià)值更大。
(3)實(shí)驗(yàn)結(jié)論:voice.say(text)是主體應(yīng)用技術(shù)等。
(4)實(shí)踐學(xué)習(xí):text可輸入任意文本進(jìn)行測(cè)試。
項(xiàng)目規(guī)劃與概要設(shè)計(jì)
通過(guò)前期探索,筆者明白了一個(gè)道理:沒(méi)有基本知識(shí)去談項(xiàng)目規(guī)劃是空中樓閣、紙上談兵。所以,只有通過(guò)前面兩個(gè)微項(xiàng)目的學(xué)習(xí),能夠用基礎(chǔ)知識(shí)實(shí)現(xiàn)“出聲朗讀”,才可進(jìn)行項(xiàng)目活動(dòng)的設(shè)計(jì),才能與信息系統(tǒng)設(shè)計(jì)的概要設(shè)計(jì)相結(jié)合——包括需求分析、項(xiàng)目規(guī)劃、界面設(shè)計(jì)等。
微項(xiàng)目3:項(xiàng)目規(guī)劃與系統(tǒng)設(shè)計(jì)。
在信息系統(tǒng)設(shè)計(jì)中,項(xiàng)目規(guī)劃實(shí)際就是系統(tǒng)設(shè)計(jì)的流程,包括可行性分析、需求分析、概要(功能)設(shè)計(jì)與詳細(xì)(功能)設(shè)計(jì)及編程現(xiàn)實(shí)、產(chǎn)品測(cè)試與發(fā)布的整體規(guī)劃。這與項(xiàng)目活動(dòng)過(guò)程設(shè)計(jì)也是一致的。系統(tǒng)設(shè)計(jì)的方法有快速原型、瀑布型兩類,可以兩者兼顧——先基于瀑布型概要設(shè)計(jì),用快速原型快速搭建系統(tǒng)主體與主要功能,再逐步迭代、泛化完善整個(gè)信息系統(tǒng),這正是計(jì)算思維的流程要素。
(1)可行性分析。基于Python的數(shù)據(jù)計(jì)算與信息系統(tǒng)設(shè)計(jì)方法,與名著文本結(jié)合,應(yīng)能設(shè)計(jì)出閱讀、朗讀的基本功能;技術(shù)困難可以通過(guò)搜索、技術(shù)實(shí)驗(yàn)(及后期遇到GPT的Cursor智能編程工具咨詢等)來(lái)解決。
(2)需求分析。能夠根據(jù)名著《瓦爾登湖》《詩(shī)經(jīng)》等txt文件聆聽(tīng)文字朗讀,按篇、分節(jié)學(xué)習(xí)名著;能夠較快地翻頁(yè)瀏覽文字、查找并統(tǒng)計(jì)關(guān)鍵詞等。
(3)概要設(shè)計(jì)。①文件操作:打開(kāi)文件及文件夾,確定選中文件;使用相應(yīng)模塊或功能打開(kāi)文件,讀取數(shù)據(jù);利用循環(huán)程序進(jìn)行基礎(chǔ)的數(shù)據(jù)整理,進(jìn)行數(shù)據(jù)分頁(yè)模型規(guī)劃等。②界面設(shè)計(jì):方案一,用菜單功能操作提示,可用輸入/輸出語(yǔ)句及循環(huán)控制完成;方案二,采用圖形界面GUI設(shè)計(jì)需用GUI設(shè)計(jì)模塊等。③朗讀處理:訪問(wèn)數(shù)據(jù)列表進(jìn)行每頁(yè)數(shù)據(jù)的朗讀,并探索自動(dòng)朗讀與自動(dòng)翻頁(yè)。④數(shù)據(jù)處理:數(shù)據(jù)列表的讀取、屏蔽詞匯制作副本、分頁(yè)檢索、關(guān)鍵詞查詢等相應(yīng)處理。⑤模塊化設(shè)計(jì):使用自定義函數(shù)分別設(shè)計(jì)。
(4)項(xiàng)目實(shí)施。①問(wèn)題分解:根據(jù)需求分析模塊設(shè)計(jì),規(guī)范自定義函數(shù)(或子程序)、變量名等。②模型構(gòu)建:建立數(shù)據(jù)存儲(chǔ)模型、檢索模型等。③編寫代碼:模塊代碼編寫與合成。④程序調(diào)試:分模塊進(jìn)行斷點(diǎn)測(cè)試、整體軟件測(cè)試等。⑤學(xué)習(xí)評(píng)價(jià):過(guò)程評(píng)價(jià)涉及設(shè)計(jì)組織與效率等,作品評(píng)價(jià)包括功能完善、設(shè)計(jì)創(chuàng)新等。⑥策略設(shè)計(jì):采用半成品代碼中留白重要算法,代碼補(bǔ)充、技術(shù)實(shí)驗(yàn)及問(wèn)題解決等。
(5)項(xiàng)目交流。在進(jìn)行功能代碼設(shè)計(jì)時(shí),以哪種系統(tǒng)設(shè)計(jì)模型進(jìn)行設(shè)計(jì)為宜?
微項(xiàng)目4:GUI圖形界面設(shè)計(jì)。
在概要設(shè)計(jì)中,界面設(shè)計(jì)非常重要,它對(duì)功能規(guī)劃、數(shù)據(jù)初步的輸出具有一定的意義,并隨時(shí)延伸到詳細(xì)設(shè)計(jì)進(jìn)行探索。界面設(shè)計(jì)一般有兩種風(fēng)格:一是,代碼編程的即時(shí)命令、菜單功能的風(fēng)格,設(shè)計(jì)容易,代碼簡(jiǎn)潔,但是友好度不高。二是,GUI即圖形用戶界面設(shè)計(jì),涉及窗體、按鈕、標(biāo)簽、文本框、對(duì)話框等控件設(shè)計(jì),直觀、生動(dòng)有趣,因技術(shù)復(fù)雜可借“半成品加工策略”來(lái)提高事件響應(yīng)設(shè)計(jì)的學(xué)習(xí)效率。
下面以簡(jiǎn)化重點(diǎn)代碼解析GUI設(shè)計(jì)過(guò)程。
(1)功能模塊導(dǎo)入(如圖2)。
(2)規(guī)劃全程變量(如圖3)。
(3)主體界面設(shè)計(jì)技術(shù)實(shí)驗(yàn)。
在主程序中進(jìn)行界面設(shè)計(jì),其他功能不斷迭代補(bǔ)充。
(4)事件響應(yīng)。事件響應(yīng)指向自定義函數(shù),可先提示事件已響應(yīng),方法如圖4代碼所示。
(5)實(shí)踐學(xué)習(xí)。①體驗(yàn)控件創(chuàng)建:模仿樣例增加“前一頁(yè)”“退出”“自動(dòng)朗讀”等按鈕控件;探索輸入頁(yè)碼的文本框創(chuàng)建等。②“半成品”加工設(shè)計(jì):補(bǔ)充某些自定義函數(shù)的提示信息等。
(6)項(xiàng)目交流。①GUI控件有按鈕、標(biāo)簽、文本輸入框、消息窗等,基本規(guī)則為定義、激活、布局,在定義中,事件指向自定義函數(shù)即可完成調(diào)用相應(yīng)功能。②在方案設(shè)計(jì)初期,有人提出建議:其一,是把翻頁(yè)和頁(yè)碼放在底部,并增加兩條不同色的間隔線,形成“刻線”效果;其二,增加插圖比較困難,暫時(shí)改為增加LOGO圖像;其三,增加前搜、后搜功能實(shí)現(xiàn)全書(shū)統(tǒng)計(jì)與查詢。學(xué)習(xí)交流很好地體現(xiàn)出設(shè)計(jì)思維和項(xiàng)目設(shè)計(jì)的生成性。
項(xiàng)目數(shù)據(jù)模型與功能設(shè)計(jì)
在項(xiàng)目學(xué)習(xí)中,沒(méi)有真實(shí)數(shù)據(jù)的項(xiàng)目給人的感覺(jué)是只學(xué)技術(shù),而不是解決問(wèn)題。所以,需要探索搭建數(shù)據(jù)模型進(jìn)行數(shù)據(jù)整理,依據(jù)數(shù)據(jù)模型進(jìn)行顯示、查找、朗讀等功能設(shè)計(jì)。
微項(xiàng)目5:數(shù)據(jù)模型的建立與數(shù)據(jù)整理。
(1)數(shù)據(jù)模型。數(shù)據(jù)獲取、處理、顯示、查找等數(shù)據(jù)模型都與GUI設(shè)計(jì)關(guān)聯(lián),如一頁(yè)20行的文本顯示可采取20行標(biāo)簽控件顯示數(shù)據(jù)完成。本項(xiàng)目基礎(chǔ)數(shù)據(jù)模型包括但不限于以下幾種:①數(shù)據(jù)存儲(chǔ)模型:text=['a','b',……]。②數(shù)據(jù)整理模型(長(zhǎng)句切片模型):text=['a','b','c1','c2','c3','d'……],即c=c1+c2+c3。③數(shù)據(jù)訪問(wèn)模型:text[textp+i](每頁(yè)首行位置為textp,0<=i<20)。
(2)圖書(shū)數(shù)據(jù)的獲取與整理。獲得圖書(shū)數(shù)據(jù),并進(jìn)行規(guī)范化數(shù)據(jù)整理,這是信息系統(tǒng)設(shè)計(jì)項(xiàng)目的首要數(shù)據(jù)處理。例如,本項(xiàng)目可以用文件打開(kāi)的方式,再進(jìn)行空行、無(wú)效字符清洗以及長(zhǎng)句的切片等處理。關(guān)鍵算法設(shè)計(jì)略。
(3)數(shù)據(jù)的分頁(yè)顯示技術(shù)實(shí)驗(yàn)。讓數(shù)據(jù)按頁(yè)顯示成文字內(nèi)容,可作為整個(gè)數(shù)據(jù)處理的中心,由它作為動(dòng)態(tài)“模型”來(lái)接駁翻頁(yè)、檢索、朗讀以及后期迭代“屏蔽朗讀詞匯”等功能,所有的功能都可以針對(duì)數(shù)據(jù)訪問(wèn)模型text[textp+i](0<=i<20)進(jìn)行設(shè)計(jì)。
(4)實(shí)踐學(xué)習(xí)。①模仿學(xué)習(xí):參考分頁(yè)顯示文字的功能,構(gòu)造clear()清空20行功能,體驗(yàn)循環(huán)控制對(duì)激活、設(shè)置控件的意義。②半成品加工設(shè)計(jì):可對(duì)while x<tl、while len(t)>textn、text[x]=text[x][0:textn]等關(guān)鍵數(shù)據(jù)或算法進(jìn)行技術(shù)留白,在分析、補(bǔ)充“長(zhǎng)句不斷切片算法”構(gòu)成中完成算法學(xué)習(xí);對(duì)for i in range(1,21)進(jìn)行技術(shù)留白,體驗(yàn)循環(huán)的控制作用。由此深入體驗(yàn)數(shù)據(jù)處理中計(jì)算思維的分解、模型與算法要素。
(5)項(xiàng)目交流。①數(shù)據(jù)模型:按一定格式進(jìn)行數(shù)據(jù)存儲(chǔ)、訪問(wèn),觀察列表text的內(nèi)容構(gòu)成特點(diǎn)。②斷點(diǎn)測(cè)試:部分功能是否成功可以進(jìn)行斷點(diǎn)測(cè)試。例如,text=[str(x)+"讀書(shū)" for x in range(10000)],可不用圖書(shū)數(shù)據(jù)也能輕松產(chǎn)生3萬(wàn)以上的文字進(jìn)行技術(shù)實(shí)驗(yàn)。
至此,通過(guò)5個(gè)微項(xiàng)目,從模塊安裝、技術(shù)實(shí)驗(yàn)、模型構(gòu)建到數(shù)據(jù)顯示,生成項(xiàng)目。在此過(guò)程中,根據(jù)教學(xué)進(jìn)度,通過(guò)半成品策略對(duì)輸入輸出數(shù)據(jù)、列表構(gòu)建數(shù)據(jù)模型、循環(huán)控制切片等基本算法進(jìn)行補(bǔ)充,在學(xué)習(xí)與探索中較完整地實(shí)現(xiàn)真實(shí)項(xiàng)目對(duì)計(jì)算思維、設(shè)計(jì)思維的培養(yǎng)。