孫玉玲
新版普通高中信息技術(shù)課程標(biāo)準(zhǔn)詳細(xì)闡述了什么是信息技術(shù)學(xué)科核心素養(yǎng),對(duì)信息意識(shí)、計(jì)算思維、數(shù)字化學(xué)習(xí)與創(chuàng)新、信息社會(huì)責(zé)任這四個(gè)核心要素進(jìn)行了具體描述。其中,計(jì)算思維是采用計(jì)算機(jī)方式界定問(wèn)題,運(yùn)用合理的算法形成解決問(wèn)題的方案,并遷移到與之相關(guān)的其他問(wèn)題解決中;數(shù)字化學(xué)習(xí)與創(chuàng)新是指將信息技術(shù)作為工具,去學(xué)習(xí)和創(chuàng)新。結(jié)合教學(xué)內(nèi)容與所教學(xué)生學(xué)情分析,本課主要從計(jì)算思維與創(chuàng)新意識(shí)兩個(gè)方面來(lái)培養(yǎng)學(xué)生的學(xué)科核心素養(yǎng)。
需求分析
軟件需求分析是一個(gè)項(xiàng)目的開(kāi)端,也是項(xiàng)目實(shí)施最重要的關(guān)鍵點(diǎn)。據(jù)有關(guān)機(jī)構(gòu)調(diào)查表明,我們?cè)O(shè)計(jì)的軟件產(chǎn)品存在不完整性、不正確性等問(wèn)題,其中80%以上是需求分析錯(cuò)誤所導(dǎo)致的,而且由需求分析錯(cuò)誤造成的根本性功能問(wèn)題尤為突出。因此,一個(gè)項(xiàng)目的成功,軟件需求分析是關(guān)鍵的一步。
1.理解需求
需求決定程序的設(shè)計(jì)。在進(jìn)行程序設(shè)計(jì)之前,先弄明白客戶(hù)的需求是什么是很重要的。在編程教學(xué)中,讓學(xué)生明白這個(gè)程序是做什么的,實(shí)現(xiàn)什么功能,對(duì)學(xué)生更好地理解程序、編寫(xiě)程序幫助很大。
2.描述需求
原則上,需求描述應(yīng)陳述程序應(yīng)該做什么,而不包括程序應(yīng)該如何實(shí)現(xiàn)。常用描述需求的方式有結(jié)構(gòu)化自然語(yǔ)言、程序設(shè)計(jì)語(yǔ)言描述和圖形化符號(hào)。由于結(jié)構(gòu)化自然語(yǔ)言存在二義性,表述時(shí)比較煩瑣,而用程序設(shè)計(jì)語(yǔ)言描述用戶(hù)又不容易理解,描述結(jié)果不直觀,所以我們采用了數(shù)據(jù)流圖描述。數(shù)據(jù)流圖(DFD,Data Flow Diagram)是非常方便的工具,圖示直觀,適合于事物處理軟件的開(kāi)發(fā),如圖1所示。
3.分析需求
根據(jù)程序功能描述,可以確定角色有哪些行為。用多分支結(jié)構(gòu)語(yǔ)句“如果……那么……”,來(lái)確定什么條件下執(zhí)行什么語(yǔ)句。用思維導(dǎo)圖把程序結(jié)構(gòu)表示出來(lái),這里僅展示部分指針角色行為設(shè)計(jì),如圖2所示。
總體設(shè)計(jì)
要對(duì)整個(gè)程序進(jìn)行總體設(shè)計(jì),需要?jiǎng)澐止δ苣K,進(jìn)行總體流程設(shè)計(jì)。
1.劃分功能模塊
對(duì)程序的順序結(jié)構(gòu)、分支結(jié)構(gòu)做了粗略分解,形成了各個(gè)分功能模塊。該項(xiàng)目包括背景設(shè)計(jì)、指針指向模塊、指針抽中對(duì)象輸出模塊、抽中神秘大獎(jiǎng)?lì)~外獎(jiǎng)勵(lì)模塊、得分與計(jì)時(shí)等。這里僅展示指針指向模塊的思維導(dǎo)圖,如圖3所示。
2.總體流程設(shè)計(jì)
該環(huán)節(jié)主要是為了便于用戶(hù)理解程序設(shè)計(jì)思路,根據(jù)程序運(yùn)行先后順序,設(shè)計(jì)出模塊之間的邏輯關(guān)系,設(shè)計(jì)出總體程序流程圖,如圖4所示。
編程實(shí)現(xiàn)
完成總體設(shè)計(jì)后,就開(kāi)始著手編寫(xiě)程序,讓項(xiàng)目得以實(shí)施。先進(jìn)行算法設(shè)計(jì),讓每個(gè)功能模塊通過(guò)合理的程序步驟分解,得以實(shí)現(xiàn)該功能。然后用合適的程序語(yǔ)言編寫(xiě)程序。
1.算法設(shè)計(jì)
這一環(huán)節(jié)屬于程序設(shè)計(jì)的核心部分,若想把程序要實(shí)現(xiàn)的功能與程序語(yǔ)句對(duì)應(yīng)起來(lái),重點(diǎn)是要有合理的算法設(shè)計(jì)??梢允褂昧鞒虉D來(lái)表達(dá)算法設(shè)計(jì)思考結(jié)果。圖5所示的是“抽獎(jiǎng)機(jī)”程序中指針指向某個(gè)角度時(shí)的處理辦法流程圖。
2.編寫(xiě)程序
編寫(xiě)程序時(shí),要考慮選用何種編程語(yǔ)言。這里選用圖形化編程工具——編程貓?jiān)创a編輯器。經(jīng)過(guò)前面的學(xué)習(xí),學(xué)生已經(jīng)掌握了源碼編輯器的常用語(yǔ)句與邏輯結(jié)構(gòu)。根據(jù)算法設(shè)計(jì)流程圖,讓學(xué)生開(kāi)始著手編寫(xiě)“抽獎(jiǎng)機(jī)”程序。編寫(xiě)好程序后,讓學(xué)生運(yùn)行程序,根據(jù)運(yùn)行結(jié)果,判斷程序是否符合程序的功能設(shè)計(jì)要求。得分超過(guò)設(shè)定值時(shí)部分程序代碼界面如下頁(yè)圖6所示。
3.調(diào)試程序
在程序編寫(xiě)過(guò)程中,需要大量地調(diào)試程序,因?yàn)樵诰帉?xiě)程序時(shí),會(huì)出現(xiàn)各種各樣的小bug,例如,有的學(xué)生不小心寫(xiě)錯(cuò)了變量名,有的學(xué)生程序語(yǔ)句放在了錯(cuò)誤的循環(huán)語(yǔ)句里,有的學(xué)生把程序語(yǔ)句的先后順序混淆了,等等。這些問(wèn)題都會(huì)引起程序的運(yùn)行結(jié)果與我們的功能設(shè)計(jì)不一致,所以,調(diào)試程序是很重要的。而且調(diào)試程序也可檢測(cè)我們對(duì)整個(gè)程序的邏輯結(jié)構(gòu)是否清晰,對(duì)程序語(yǔ)句使用是否熟練。
同時(shí),在程序編寫(xiě)過(guò)程中,學(xué)生對(duì)程序進(jìn)行再次改編,編寫(xiě)出了各式各樣的抽獎(jiǎng)機(jī),有的學(xué)生編寫(xiě)了勵(lì)志少女必備清單抽獎(jiǎng)機(jī),有的學(xué)生編寫(xiě)了有為青年get技能抽獎(jiǎng)機(jī),熱愛(ài)小動(dòng)物的學(xué)生編寫(xiě)了寵物pet抽獎(jiǎng)機(jī)。學(xué)生在編程過(guò)程中,開(kāi)動(dòng)腦筋,把自己的興趣愛(ài)好加入到編程內(nèi)容中,學(xué)生在掌握編程思想的同時(shí),進(jìn)行編程形式和內(nèi)容的創(chuàng)新,落實(shí)信息技術(shù)學(xué)科核心素養(yǎng)中關(guān)于創(chuàng)新的要求,這樣不僅讓編程學(xué)習(xí)更加有趣,而且把編程作為一個(gè)表達(dá)思維的工具,能激發(fā)學(xué)生更多更好的創(chuàng)意。
分享拓展
在學(xué)生做好作品后,讓學(xué)生彼此間分享交流,碰撞出思維的“火花”,促進(jìn)學(xué)生對(duì)作品進(jìn)行優(yōu)化,產(chǎn)生更新的作品。通過(guò)交流與同伴間的欣賞,提高學(xué)生的自信心,使其在編程學(xué)習(xí)中獲得更多的成就感。通過(guò)分享交流,學(xué)生的思想更加開(kāi)放,能夠分辨出同學(xué)與自己的作品的優(yōu)點(diǎn)與缺點(diǎn),進(jìn)行取長(zhǎng)補(bǔ)短。
采用源碼編輯器除了可以在學(xué)生之間通過(guò)分享作品網(wǎng)址、提交作品的方式進(jìn)行交流,還可以發(fā)布作品到社區(qū),與更多的人進(jìn)行互動(dòng)交流,并且可以進(jìn)行點(diǎn)贊,發(fā)表評(píng)論,對(duì)作品進(jìn)行改編等,進(jìn)一步激發(fā)學(xué)生的創(chuàng)作熱情。例如,在抽獎(jiǎng)機(jī)游戲中,有的學(xué)生提出當(dāng)抽中特殊大獎(jiǎng)時(shí),加入學(xué)生錄音歡呼音效,切換界面出現(xiàn)勝利鼓等;有的學(xué)生提出當(dāng)?shù)梅诌_(dá)到設(shè)定值時(shí),出現(xiàn)酷炫界面等,讓程序更加好玩。
項(xiàng)目教學(xué)引發(fā)的思考
1.花時(shí)間引導(dǎo)學(xué)生分析和設(shè)計(jì)
“抽獎(jiǎng)機(jī)”程序從最基本的“食物抽選機(jī)”(讓轉(zhuǎn)盤(pán)旋轉(zhuǎn),出現(xiàn)主食、飲料、甜品三種食物組合提示)到后來(lái)的“幸運(yùn)大轉(zhuǎn)盤(pán)”(轉(zhuǎn)盤(pán)轉(zhuǎn)動(dòng),抽中某種鮮花,即出現(xiàn)相應(yīng)花語(yǔ)與祝福語(yǔ)),再到后來(lái)的“幸運(yùn)大轉(zhuǎn)盤(pán)”升級(jí)版——“神秘大獎(jiǎng)”,有倒計(jì)時(shí)與得分情況,有抽中神秘大獎(jiǎng)的各種創(chuàng)意設(shè)計(jì),讓學(xué)生從基本的程序結(jié)構(gòu)出發(fā),不斷增添新的功能、新的程序效果。引導(dǎo)學(xué)生分析要實(shí)現(xiàn)某種程序功能,可以用到哪種結(jié)構(gòu)和語(yǔ)句,思考有沒(méi)有其他方法可以達(dá)到同樣的效果。在教學(xué)中,要注意引導(dǎo)學(xué)生多思考程序的邏輯結(jié)構(gòu)與算法思想,讓學(xué)生學(xué)會(huì)舉一反三,觸類(lèi)旁通。
2.小步調(diào)地設(shè)計(jì)與編程
一般來(lái)說(shuō),先分析功能再進(jìn)行程序設(shè)計(jì),再編寫(xiě)程序代碼,是一個(gè)先后有序的過(guò)程。但是在編程教學(xué)中,我們并不總是嚴(yán)格按照這樣的步驟來(lái)進(jìn)行教學(xué),因?yàn)檫M(jìn)行功能模塊設(shè)計(jì)與總體設(shè)計(jì),需要花費(fèi)大量的時(shí)間。我們?cè)诮虒W(xué)中,先編寫(xiě)基本的程序框架,實(shí)現(xiàn)簡(jiǎn)單的功能,再逐步地增加程序難度,豐富程序功能,這符合學(xué)生的認(rèn)知習(xí)慣,可以讓學(xué)生更快地適應(yīng)程序編寫(xiě)流程。
3.開(kāi)展小組合作學(xué)習(xí)
讓學(xué)生開(kāi)展小組合作學(xué)習(xí),集合團(tuán)隊(duì)的力量,讓更多的創(chuàng)意涌出,通過(guò)溝通促進(jìn)學(xué)生進(jìn)行更多的思考,讓學(xué)生體會(huì)到合作的力量。同時(shí),在小組間實(shí)行競(jìng)爭(zhēng)模式,激勵(lì)組員勇?tīng)?zhēng)先鋒小組,在不同小組間形成你追我趕的學(xué)習(xí)氛圍,在競(jìng)爭(zhēng)中快樂(lè)學(xué)習(xí)。
4.線(xiàn)上線(xiàn)下多渠道互助學(xué)習(xí)
利用現(xiàn)在便利的互聯(lián)網(wǎng)終端技術(shù),讓學(xué)生在課余時(shí)間,在家中的電腦軟件上進(jìn)行編程創(chuàng)作,或者在家長(zhǎng)的手機(jī)上下載編程N(yùn)emo APP,在手機(jī)上進(jìn)行程序編寫(xiě)。教師與學(xué)生進(jìn)行在線(xiàn)交流,有問(wèn)題及時(shí)進(jìn)行引導(dǎo)。在編程貓社區(qū)論壇里,也可以發(fā)布學(xué)習(xí)帖,進(jìn)行作品分享與問(wèn)題求助。