李咪咪 中學(xué)二級教師,華東師范大學(xué)科學(xué)與技術(shù)教育碩士,現(xiàn)于上海市普陀區(qū)曹楊第二中學(xué)任教信息技術(shù)學(xué)科。在教學(xué)中善于將學(xué)科特征與新媒體、新技術(shù)進(jìn)行融合,提升學(xué)生的學(xué)習(xí)興趣,培養(yǎng)學(xué)生的計算思維。
課程背景
互聯(lián)網(wǎng)平臺“外賣騎手與時間賽跑”的問題,多次引發(fā)了社會各界的廣泛關(guān)注。外賣騎手需在系統(tǒng)規(guī)定的時間內(nèi)按時送達(dá)商品,這種算法忽視了天氣、路況等因素對送達(dá)時間的影響。算法是工具還是機(jī)器?這個問題不禁引發(fā)公眾的無限思考。而信息技術(shù)學(xué)科旨在培養(yǎng)學(xué)生信息意識、計算思維、數(shù)字化學(xué)習(xí)與創(chuàng)新、信息社會責(zé)任四個方面的核心素養(yǎng),其中“信息社會責(zé)任”鼓勵學(xué)生“關(guān)注信息技術(shù)革命所帶來的環(huán)境問題與人文問題”。所以,本節(jié)課我將與學(xué)生一起探索如何利用分支結(jié)構(gòu)改進(jìn)外賣騎手計時系統(tǒng),使得該系統(tǒng)更加靈活和人性化。
教學(xué)目標(biāo)
知識與技能 描述分支結(jié)構(gòu)的特點和執(zhí)行過程;設(shè)置正確的分支判斷條件;繪制規(guī)范的分支結(jié)構(gòu)算法流程圖。
過程與方法 根據(jù)問題情境,化歸算法問題,使用分支結(jié)構(gòu)解決問題;合理使用關(guān)系運算符、邏輯運算符表示分支結(jié)構(gòu)的判斷條件。
情感態(tài)度與價值觀 在使用算法解決問題的過程中,摒除算法的“唯工具論”,思辨算法的社會倫理,明白要讓算法為人服務(wù)而非人為算法服務(wù);關(guān)注信息技術(shù)革命所帶來的人文問題,嘗試用算法知識解決上述相關(guān)問題。
教學(xué)重點與難點
教學(xué)重點 使用分支結(jié)構(gòu)解決“外賣騎手模擬計時”問題。
教學(xué)難點 根據(jù)不同情境,設(shè)置正確的分支判斷條件。
教學(xué)過程
一、溫故“思”新——順序結(jié)構(gòu)到分支結(jié)構(gòu)的過渡
1.何時取到外賣(復(fù)習(xí)順序結(jié)構(gòu))
構(gòu)建問題情境:騎手距離客戶1.5km,假設(shè)騎手平均速度(含行進(jìn)路程、上樓等)是2m/s,請問顧客多少分鐘后可以取到外賣?
化歸為算法問題:已知騎手與客戶的距離s、騎手的平均速度v,依次輸入距離s和平均速度v,根據(jù)“時間=距離/速度”公式求得所需時間(單位為秒),再將其轉(zhuǎn)換為以“分鐘”為單位進(jìn)行輸出。學(xué)生根據(jù)已學(xué)順序結(jié)構(gòu)的相關(guān)知識,使用流程圖表達(dá)算法思路,并上機(jī)編程實現(xiàn)。
2.如何幫助外賣騎手走出計時困局(引出分支結(jié)構(gòu))
教師設(shè)問:教師展示網(wǎng)絡(luò)上針對外賣騎手送餐計時算法的討論,外賣騎手長期被困在系統(tǒng)規(guī)定的時間里,而系統(tǒng)忽視了客觀因素對騎手行進(jìn)時間的影響,啟發(fā)學(xué)生思考。
教師進(jìn)而設(shè)問:如何改進(jìn)外賣平臺計時系統(tǒng)的算法,使得該系統(tǒng)更加貼近騎手生活,更加靈活和人性化?
小組討論:影響外賣騎手配送時間的因素具體有哪些?
交流總結(jié):根據(jù)各小組討論結(jié)果,匯總影響外賣騎手配送時間的主要因素(用戶所在樓層數(shù)、行進(jìn)路況、天氣條件等)。
二、多一種選擇,多一點溫暖(走進(jìn)分支結(jié)構(gòu))
1.前方路況影響配送時間
構(gòu)建問題情境:騎手距離客戶1.5km,假設(shè)騎手平均速度(含一般行進(jìn)路程)是2m/s。如果前方修路,那么最終配送時間為原始時間的1.1倍;否則,按照原始方式計算時間。請問顧客多少分鐘后可以取到外賣?
化歸為算法問題:已知騎手與客戶的距離s、騎手的平均速度v、前方道路狀況flag,首先依次輸入距離s、平均速度v和前方道路狀況flag的值。然后判斷前方是否修路,如果修路,時間系數(shù)為原始時間的1.1倍;否則,根據(jù)“時間=距離/速度”公式求得所需時間(單位為秒),再將其轉(zhuǎn)換為以“分鐘”為單位進(jìn)行輸出。
走進(jìn)分支結(jié)構(gòu):學(xué)生思考已學(xué)“順序結(jié)構(gòu)”的流程圖能否表示此算法,并闡釋原因;教師展示用分支結(jié)構(gòu)表示上述算法的流程圖,如圖1,并讓學(xué)生嘗試用語言描述此流程圖;教師由特殊到一般,闡釋分支結(jié)構(gòu)的定義(根據(jù)給定條件是否成立而決定執(zhí)行不同路徑的算法結(jié)構(gòu));教師解釋分支結(jié)構(gòu)的執(zhí)行過程,并講授分支結(jié)構(gòu)的語法格式。
程序?qū)崿F(xiàn):學(xué)生編程實現(xiàn)并測試結(jié)果。
2.樓層數(shù)影響配送時間(關(guān)系運算)
構(gòu)建問題情境:騎手與客戶的實時距離為1.5km,假設(shè)騎手平均速度(含一般行進(jìn)路程)是2m/s。如果用戶所在樓層大于3層,那么最終配送時間為原始時間的1.1倍;否則,按照原始方式計算時間。請問顧客多少分鐘后可以取到外賣?
化歸為算法問題:先輸入距離s、平均速度v和樓層數(shù)f,再判斷用戶樓層是否大于3層。如果大于3層,那么時間系數(shù)乘以1.1;否則,按照原始計算時間的方式。算法流程圖如圖2。
走進(jìn)關(guān)系運算:(1)問題引發(fā)思考:“樓層大于3”如何用表達(dá)式表達(dá)?判斷結(jié)果又是什么?(2)由算術(shù)運算遷移到關(guān)系運算:算術(shù)運算——求大小,關(guān)系運算——比較大小;關(guān)系運算的結(jié)果是邏輯值(True或False)。(3)求關(guān)系運算的值。
程序?qū)崿F(xiàn):學(xué)生編程實現(xiàn)并測試結(jié)果。
3.樓層數(shù)與路況共同影響配送時間(邏輯運算)
構(gòu)建問題情境:騎手與客戶的實時距離為1.5km,假設(shè)騎手平均速度(含一般行進(jìn)路程)是2m/s。如果用戶所在樓層大于3層或者修路長度大于500米,那么最終配送時間為原始時間的1.1倍;否則,按照原始方式計算時間。請問顧客多少分鐘后可以取到外賣?
化歸為算法問題:輸入距離s、平均速度v、樓層數(shù)f、修路長度l,再判斷“用戶樓層大于3層或者修路長度大于500米”條件是否成立。如果條件成立,那么時間乘以系數(shù)1.1;否則,按照原始計算時間的方式。算法流程圖如圖3。
走進(jìn)邏輯運算:邏輯運算符用于連接簡單的邏輯表達(dá)式。其運算規(guī)則及范例值見下表。
程序?qū)崿F(xiàn):學(xué)生編程實現(xiàn)并測試結(jié)果,具體VB代碼如下。
Dim s As Single, t As Single, v As Single,f As Integer,l as Single
s = Val(InputBox("請輸入騎手與顧客之間的距離(注意:單位為m)"))
v = Val(InputBox("請輸入騎手平均速度(注意:單位為m/s)"))
f = Val(InputBox("請輸入樓層數(shù)(注意:單位為層)"))
l=Val(InputBox("請輸入修路長度(注意:單位為m)"))
If? (f>3 or l>500) Then
t = (s / v) * 1.1
Else
t = s / v
End If
t = t / 60
Label1.Caption = t & "分鐘后送達(dá)"
教學(xué)反思
本課從社會熱點問題“外賣員計時算法”入手,以“什么時候取到外賣”情境貫穿課堂首尾,由“樓層數(shù)大于3”引出關(guān)系運算,由“樓層數(shù)大于3或者修路長度大于500米”引出邏輯運算,問題依次過渡,知識層層遞進(jìn),情境貫穿流暢。
人與機(jī)器之間的關(guān)系是近年來常討論的話題。是機(jī)器為人服務(wù),還是人為機(jī)器服務(wù)?外賣騎手計時問題也是上述問題的縮影。學(xué)生在學(xué)習(xí)運用算法知識解決問題、讓社會生活變得高效的同時,還需要關(guān)注算法應(yīng)用帶來的社會、人文問題。本節(jié)課學(xué)生雖然只是模擬改進(jìn)外賣騎手的計時算法,但是通過理解情境、設(shè)計算法、編程實現(xiàn)等環(huán)節(jié),他們進(jìn)一步理解并踐行了算法的人文性,思辨了算法的社會倫理。