吳雙雙
學習者分析
《Swift函數及運用》一課的教學對象是小學四年級學生。在本課之前,學生已初步掌握了Swift命令控制Byte行走的“moveForward( )”(向前走)、“turnLeft( )”(左轉)、“toggleSwitch( )”(切換按鈕狀態)、“collectGem( )”(收集寶石)等基礎指令,并能通過場景目標要求,簡單地編寫指令間組合與排序,幫助Byte順利闖關。但因為學生初步接觸Swift語言編程,在編程中對于“調試”指令的操作還不是很熟悉。小學四年級學生的思維發展水平由具體形象思維向抽象邏輯思維過渡,歸類、對比、推理等能力開始增強。學生通過課前自主探究,增強對Swift的學習興趣,提升數字化學習能力,且在探究中對“函數”會有一個初步的認識,但如何在后面的關卡中熟練使用并理解函數的意義,對學生來說需要引導。故此,本課結合學生熟悉的生活場景如“Swift課前操”導入,引導學生理解“函數”使用的意義,并結合Swift平臺實踐操作,促進其進一步深化理解。在任務情境中,學生在信息獲取、流程圖信息分析、函數解決問題過程中培養計算思維,并在自主探究、小組討論分享中體驗Swift編程的趣味。
學習內容分析
為了發展小學生的信息意識、計算思維、數字化學習與創新等信息技術核心素養,本課是以iPad的Swift Playgrounds軟件為載體的自編課程。本課是自編Swift編程的第2課,在前一課“讓Byte行走”,在第一單元“命令”的前四關認識Swift的四個基本命令。本課的主要內容是:①觀察Byte角色所處場景獲取任務信息;②通過流程圖等方法對信息進行分析;③在認識Swift編程命令的基礎上創建并調用新函數。本課是對翻轉課堂教學法的一種探索嘗試,主要分為三個方面:①課前自主探究,提出問題:完成第一單元“命令”后面三關,自主探究第二單元“函數”的前三關,并借助全景課堂分享自己對“函數”的理解與疑問;②課中解決問題,實踐應用:根據學生課前遇到的問題與難點,課中引導學生通過小組討論分析探究,進一步優化實踐;③認識函數,思維提高:在“收集、切換、重復”與“盡收囊中”任務情境中實踐提高。在三個活動的層層引導下,如何將抽象的函數轉化為學生可理解的思維是本課的難點。
教學目標
通過課前自主探究,熟悉編程的基本過程:信息獲取—信息分析—Swift指令編程—運行調試。
在課前測試中,了解自己對Swift基本指令的掌握情況,并在課中小組討論交流中深化對Swift編程指令的認識。
在“收集、切換、重復”場景探索中,通過流程圖學習工具尋找重復的模式,發現使用函數的機會,提高信息獲取分析能力。
在挑戰“盡收囊中”關卡中,通過創建調用函數,感受函數提高算法的效率和可讀性,體驗高效編程的樂趣,形成用函數解決問題的計算思維。
在小組交流討論中,提升學生的小組合作能力,并在點評分享中提高數字化學習與創新信息技術核心素養。
教學重難點
教學重點:掌握創建并調用函數的過程。
教學難點:理解函數使用的意義,培養用函數解決問題的計算思維。
教學策略
本節課主要的教學方法是基于Swift情境的翻轉課堂教學法。學生課前自主探索闖關學習基本指令與函數,并通過全景課堂提出問題,分享經驗;課中分組交流討論,互助分享,Swift指令優化調試。通過自主探究數字化學習、同伴交流互助解決問題、全班共同分享等方式開展課堂教學。
教學環境及資源準備
蘋果平板iPad、Keynote課件、Playgrounds軟件、Apple TV同屏。
教學過程
1.翻轉自學,課前探究
教師提前在全景課堂學生端布置任務1和任務2,學生自主探究完成Swift第一單元的復習測試通關,嘗試探索“函數”單元的關卡,分享到分享圈,并在分享圈留言寫出自己的疑惑和感受。
設計意圖:嘗試“翻轉課堂”教學,引導學生養成自主學習的習慣,并在全景課堂分享圈中互相分享、共同進步。
2.Swift課前操導入,巧揭主題
師:上課前,老師來檢測一下大家是否還記得我們在上節課說的指令,請聽指令:0。
學生合上Pad,輕輕放好。
師:同學們對指令的反應能力很快嘛,也能做到輕拿輕放。再聽指令:1。
學生打開Pad,擺放坐好。
師:今天老師要再教大家一套新的指令,請看老師的動作,第一個指令:伸出左手,第二個指令:伸出右手,第三個指令:雙手拍一下,第四個指令:雙手拍一下,第五個指令:雙手拍一下。同學們,如果讓你給這一段動作起一個名字,你會怎么叫它呢?
生:拍手指游戲。
師:好,我們大家一起來一遍“拍手指”游戲。
學生跟著教師一起拍兩遍。
師:我們用“拍手指”代替了前面一系列動作的名稱,大家覺得哪個比較好?
生:我覺得拍手指比較好,因為這個名稱比較有趣,而且簡單。
師:可以用“拍手指”指令代替前面的五個動作指令,那這個過程叫什么呢?
生:函數。
師:看來同學們課前都在自主探究中認識了函數,那我們一同走進今天的課程《Swift函數及運用》。
教師揭示并書寫課題。
設計意圖:通過學生可理解的指令動作導入,引導學生初步理解“函數”的含義。
3.初建函數,深入探究
(1)課前探索總結。
教師打開教師端全景課堂分享圈,展示學生課前自主探索的過關練習和留言。
師:同學們在全景課堂的分享圈里的分享老師都看到了,總結一下同學們的疑惑和遇到的問題如下(Keynote同屏):Swift為何會卡住?“函數”如何使用及命名?編程時,如何更加高效?
師:同學們,“函數”到底是什么呢?是否有方法可以幫助提高我們的編程效率呢?讓我們帶著這些問題一同開始探索之旅。
設計意圖:通過總結學生在課前學習中遇到的問題,以生為本,確定本課的重難點,為本堂課接下來的交流討論做好鋪墊。
(2)Swift指令特點分析。
師:同學們還記得這些指令的意思嗎?
教師貼黑板展示指令:moveForward( )、collectGem( )、turnLeft( )、toggleSwitch( )。
生:向前走、收集寶石、向左轉、切換開關狀態。
師:那大家有沒有發現,這些指令有什么相同的特點?
生1:都是由英文單詞組成,并且第一個單詞首字母小寫,第二個單詞首字母大寫。
生2:每個指令最后都有小括號。
教師展示Swift指令特點:英文+首字母大寫英文+小括號。
設計意圖:幫助學生回顧Swift指令含義,并從中觀察到Swift指令的特點。
(3)走進Swift“函數”,流程圖分析。
師:課前大家自主探究了“創建新函數”這一關,那我們一起來分析一下Byte行走的路線,誰來分享?
生:向前1步—向左轉—向前1步—向右轉—向前1步—向右轉—向前1步—向右轉—向前1步—向左轉—向前1步—切換開關。
師:大家分析得都很到位,那我們在這個過程中為了幫助Byte順利通關,經歷了哪些過程?
教師和學生一起概括并黑板展示:明確任務要求—流程圖分析—編寫Swift指令—調試運行。
設計意圖:帶領學生一起分析流程圖,學習分析路線,將具體路線思維化,培養學生編程思維。
師:我們分析好路線,接下來要將其轉化為“Swift指令”,那“右轉”的Swift指令是什么呢?我們一起看一看同學們在分享圈里的分享。
教師打開學生分享的“創建新函數”流程圖分析及指令截圖。
師:我想請一位同學來分享一下,你為何使用turnRight( )函數,你覺得它有什么功能?
生:Playgrounds平臺在這一關的提示里給出了turnRight( )向右轉的含義,但沒有turnRight( )的指令,所以用三個turnLeft( )指令組合為一個turnRight( )。
師:turnRight( )函數簡化代替了三次向左轉turnLeft( )指令,那向右轉的函數如何定義和調用呢?
設計意圖:本課重點是掌握創建并調用函數的過程,學生在課前探究、課中交流分享中總結提升,從定義turnRight( )函數體會創建并調用函數的過程。
(4)函數實踐,感悟提高。
任務探究:探究“收集、切換、重復”,流程圖分析,觀察路線有何特點,并編寫Swift指令,再運行調試,完成任務3分享。
分層實踐:闖過3、4關的學生,根據流程圖,修改優化函數指令,截圖分享到分享圈,也可進一步探索下一關挑戰。
學生自主探究。
師:同學們已經設計優化了這一關的流程圖,現在我們來觀察分析一下這個路線有何特點?
設計意圖:在理解創建新函數基礎上,通過趣味任務情境進一步實踐探索,提高應用能力。在課前學生自主探究中,不同層次的學生探索能力不同,因此通過“分層實踐”進行指令優化與進一步探索。
師:請同學們根據自己剛才的觀察,打開Playgrounds將流程圖轉換成Swift語言,看看小Byte會如何行走吧。
分享圈里,A同學將“向前走1步+收集寶石+向前走1步+切換開關”四個指令看為一個重復模塊,并定義tuyixiang( )函數將這四個指令進行重組。B同學將“向前走1步+收集寶石+向前走1步+切換開關+向前走1步”五個指令看為一個重復模塊,并定義mot( )函數將這五個指令進行重組,雖然最后1個組合只有四步,但不影響Byte的闖關。
設計意圖:在流程圖編寫后,用Swift語言將之轉換為Byte可以執行的指令,并在實踐函數的定義、調用、執行的全過程中進一步突破本課的重難點,并將自己的想法截圖分享到全景課堂分享圈,全班同學進行互評互學。
4.函數應用與生活,分組分享
(1)任務探究:函數應用與生活。
AB組討論主題:在“收集、重復、切換”關卡中,統計一下,你們小組闖關的同學,分別使用了幾行指令?
CD組討論主題:在“收集、重復、切換”關卡中,統計一下,你們小組分別給函數起了什么樣的名稱?函數包含的指令內容相同嗎?
EF組討論話題:你們覺得函數的使用是否提高了編程的效率,為什么?你們覺得生活中哪些比較像“函數”?函數和生活有什么關系?
學生打開分享圈,互相觀看分享,每個小組總結后分享小組討論結果。
小組代表上臺分享如下:
AB組:分別用了11行、8行、11行、8行。
CD組:1號同學給函數取名為Jin( ),包含5個指令;2號同學給函數取名為myFunc( ),包含3個指令;3號同學給函數取名為Hxy( ),包含5個指令;4號同學給函數取名為wsd( ),包含4個指令。
EF組:①函數提高了編程效率,因為它把幾個重復的指令結合在一起,所以更簡便,檢查非常方便。②比如有些餐廳把好幾個菜都放在一個套餐里,這樣的話點菜就會方便一點。
設計意圖:學生分組有針對性地討論后,請小老師上臺分享小組總結,充分調動學生互幫互助的積極性。
(2)Swift函數意義。
師:本節課,我們在課前實踐探究、課中疑難解惑與進一步探究中,認識到在編程中使用函數使編程更加高效、程序更精簡、可讀性更強。希望同學們借助學習Swift語言指令,在編程中學習使用函數,鍛煉編程思維,并用“函數”思考生活,提高做事效率。
設計意圖:學生在課前函數探究中感知,在課中深入討論實踐中認知,在課后討論交流中總結。