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