周曉明
在小學(xué)信息技術(shù)課程綱要的教學(xué)建議中,提倡采用來源于生活的基于項(xiàng)目的學(xué)習(xí)方式,并圍繞信息技術(shù)課程內(nèi)容,實(shí)現(xiàn)信息技術(shù)課程目標(biāo)?!懊艽a箱”是源于生活的、非常神秘的物體,它可以通過Scratch編程軟件來進(jìn)行簡(jiǎn)單的模擬,甚至可以進(jìn)行創(chuàng)客硬件的拓展,因此,在用Scratch程序設(shè)計(jì)“變量”一課中,筆者以“制作密碼箱”為項(xiàng)目實(shí)踐的主題,帶領(lǐng)學(xué)生在學(xué)習(xí)過程中結(jié)合數(shù)學(xué)、工程等多方面的知識(shí)開展研究。
● 通過聯(lián)想、對(duì)比,感知項(xiàng)目的研究價(jià)值
工程師作為工程活動(dòng)的主體,必須全面把握人與自然、與其他成員乃至與整個(gè)人類社會(huì)的互動(dòng)關(guān)系,避免單純從技術(shù)的角度考慮工程問題,避免僅僅著眼于工程對(duì)象本身而忽視工程“系統(tǒng)”與“環(huán)境”的相互作用。在課堂的導(dǎo)入環(huán)節(jié),教師出示一個(gè)帶密碼按鈕箱子的Scratch文件,讓學(xué)生思考:“密碼箱”有什么作用?自己是否需要一個(gè)密碼箱?接著提問:“猜一猜,怎樣才能打開這個(gè)箱子?”教師下發(fā)“密碼箱”文件,以小競(jìng)賽的形式讓學(xué)生尋找打開箱子的方法。學(xué)生通過讀程序不難發(fā)現(xiàn)按鈕不起作用,因?yàn)榘粹o角色沒有腳本,而從箱子角色的腳本中能發(fā)現(xiàn)只要在箱子上點(diǎn)擊就能打開。學(xué)生通過交流討論,體會(huì)到“密碼箱”的價(jià)值,也體會(huì)到制作一個(gè)“密碼箱”的意義,由此教師提出本節(jié)課的研究任務(wù):當(dāng)小工程師,把這個(gè)箱子制作成真正的密碼箱。
● 站在全局的角度,統(tǒng)籌規(guī)劃整個(gè)項(xiàng)目
工程思維是一種抽象思維,需要將復(fù)雜的工程問題進(jìn)行簡(jiǎn)化,去掉不重要的信息,抓住問題的關(guān)鍵,從而構(gòu)建起能夠描述問題的抽象模型。在新授環(huán)節(jié),通過變量實(shí)現(xiàn)輸入并對(duì)密碼進(jìn)行判斷,結(jié)合之前學(xué)過的條件語句等知識(shí)實(shí)現(xiàn)開箱的效果,完成“密碼鎖”項(xiàng)目原理的初探,為學(xué)生以后不斷深入探索埋下一粒求知的種子。
1.分析本質(zhì),提出核心的問題
教師通過“密碼箱是怎么打開的?”這個(gè)有針對(duì)性的問題引導(dǎo)學(xué)生分析密碼箱和普通箱的本質(zhì)區(qū)別。學(xué)生從生活經(jīng)驗(yàn)中可知,輸入密碼就能打開密碼箱。教師一方面教育學(xué)生考慮問題要周全,即要輸入正確的密碼;另一方面幫助學(xué)生用完整的自然語言“如果輸入的密碼正確,就能打開寶箱”描述密碼箱的本質(zhì)特點(diǎn),從而引導(dǎo)他們用已學(xué)的條件語句來修改箱子的腳本。
當(dāng)學(xué)生認(rèn)為能夠通過搭建“如果”模塊制作密碼箱時(shí),卻發(fā)現(xiàn)用于判斷的六邊形模塊中找不到可以表示密碼是否正確的模塊,于是提出了制作密碼箱的核心問題:“輸入的密碼是否正確”條件該用哪個(gè)模塊呢?
2.整理思路,建立系統(tǒng)的邏輯關(guān)系
“輸入的密碼是否正確”條件,包括“要通過按鈕輸入字符”和“對(duì)輸入的字符和密碼箱預(yù)設(shè)的密碼進(jìn)行判斷”兩層含義。學(xué)生通過觀察用于判斷的六邊形模塊,發(fā)現(xiàn)邏輯運(yùn)算中的“=”符號(hào)可以解決字符判斷,“=”的一側(cè)填寫密碼箱預(yù)設(shè)的密碼數(shù)字,但另一側(cè)表示輸入的數(shù)字怎么辦?于是教師追問:“這個(gè)數(shù)字是由什么來控制的?”學(xué)生通過生活經(jīng)驗(yàn)回答:“按不同的按鈕,會(huì)產(chǎn)生不同的數(shù)值?!?/p>
此時(shí),本課的重點(diǎn)“變量”已經(jīng)呼之欲出,為了加深學(xué)生的認(rèn)知,教師提問:“老師的寶箱里藏著一份秘籍,你們想看嗎?”接著教師請(qǐng)學(xué)生輸入正確密碼并打開寶箱,秘籍上寫著:變量是計(jì)算機(jī)中的一個(gè)數(shù)據(jù)存儲(chǔ)器,里面可以存放一個(gè)能變化的數(shù)據(jù)。學(xué)生展開探究:如何新建變量?新建變量后出現(xiàn)了哪些命令?學(xué)生通過探究發(fā)現(xiàn),變量成了箱子和按鈕之間聯(lián)系的紐帶(在按鈕角色上分別給變量賦值,在箱子角色上調(diào)用變量模塊,變量中存放的數(shù)據(jù)與正確的密碼就能夠進(jìn)行比較,箱子和按鈕之間的邏輯關(guān)系就建立起來了)。在這個(gè)環(huán)節(jié)中,部分學(xué)生受原有數(shù)學(xué)知識(shí)的影響,會(huì)將條件判斷中的“=”符號(hào)和變量的賦值相混淆,教師應(yīng)有意識(shí)地讓學(xué)生用自然語言來反復(fù)讀程序,從而理解判斷與賦值的區(qū)別。
● 進(jìn)行需求分析,推動(dòng)項(xiàng)目的持續(xù)迭代
工程思維是一種分析性思維、批判性思維,也是邏輯演繹的思維,軟件工程的核心是分析問題和解決問題,在此過程中有很多假定和推理,需要我們做出正確的判斷,而在做出判斷前,要質(zhì)疑??梢哉f,任何一個(gè)項(xiàng)目都是不完美的,持續(xù)的維護(hù)和更新才是一個(gè)項(xiàng)目具有生命力的關(guān)鍵。如何實(shí)現(xiàn)多位數(shù)密碼、如何刪除輸錯(cuò)的密碼等引發(fā)的一系列需求問題,讓學(xué)生站在工程師的視角,用工程思維的方式推動(dòng)項(xiàng)目的持續(xù)迭代。
1.完成項(xiàng)目的基礎(chǔ)功能
學(xué)生在給各個(gè)數(shù)字按鈕作變量賦值時(shí),發(fā)現(xiàn)賦值數(shù)字的特點(diǎn),即再次按鍵,變量中新的數(shù)字會(huì)替換掉原來的數(shù)字。此時(shí)教師提醒學(xué)生,把密碼箱的初識(shí)密碼改成一位數(shù),先檢測(cè)剛才分析的邏輯關(guān)系到底能否實(shí)現(xiàn)基礎(chǔ)密碼判斷的功能。教師反饋階段問題:①賦值的程序能用單擊綠旗嗎?②在單擊按鈕前,變量的初始值是什么?通過學(xué)習(xí)探究,學(xué)生展示基礎(chǔ)的一位數(shù)密碼箱,通過單擊正確數(shù)字按鍵,箱子可以打開。
2.實(shí)現(xiàn)項(xiàng)目的安全升級(jí)
考慮到一位數(shù)密碼不夠安全,需要將保險(xiǎn)箱改為多位數(shù)密碼。學(xué)生首先通過剛才的基礎(chǔ)密碼箱制作,確定了需要修改的是變量的賦值。教師通過動(dòng)畫逐步出示依次單擊按鈕,之前輸入的數(shù)字可以保留,學(xué)生通過觀察、分析后發(fā)現(xiàn)輸入變量值的特點(diǎn),即前面的數(shù)字是剛才的輸入變量值,后面的是按鍵數(shù)字;隨后開始嘗試修改按鈕腳本中的變量賦值命令,使用直觀的連接符實(shí)現(xiàn)多位數(shù)密碼的修改。對(duì)于部分思維敏捷的學(xué)生,教師鼓勵(lì)他們從數(shù)學(xué)的角度來考慮數(shù)據(jù)的變化,嘗試用“變量*10+按鈕數(shù)字”的表達(dá)式作為變量的賦值。
3.探討項(xiàng)目的人性化設(shè)計(jì)
學(xué)生在使用的過程中又發(fā)現(xiàn)問題:輸入的過程中如果不小心輸入錯(cuò)誤,該怎么辦?此時(shí)教師鼓勵(lì)學(xué)生從用戶的角度出發(fā),結(jié)合生活經(jīng)驗(yàn),全面考慮給密碼箱增加功能。學(xué)生通過小組討論,提出了一些人性化的方案,即使用“刪除”按鈕,可以修改輸入錯(cuò)誤的數(shù)字,使用“設(shè)置”按鈕,可以直接修改密碼箱的密碼等。
本課遵循工程思維的基本性質(zhì)即造物思維,以項(xiàng)目實(shí)踐的方式進(jìn)行系統(tǒng)設(shè)計(jì),在核心問題處有針對(duì)性地展開新知識(shí)的學(xué)習(xí);通過探索實(shí)踐,讓學(xué)生學(xué)會(huì)從宏觀的角度去把握全局,并根據(jù)實(shí)際的規(guī)律和條件對(duì)每一個(gè)細(xì)節(jié)統(tǒng)籌規(guī)劃,從大到小,層層分析,主動(dòng)而扎實(shí)地學(xué)習(xí)理論知識(shí)和實(shí)踐技能,讓工程思維的培養(yǎng)貫穿于一系列問題解決的過程中,最終實(shí)現(xiàn)理想客體對(duì)象化、現(xiàn)實(shí)化。