陳莉



高中信息技術學科核心素養由信息意識、計算思維、數字化學習與創新、信息社會責任四個核心要素組成,它們是高中學生在接受信息技術教育過程中逐步形成的信息技術知識與技能、過程與方法、情感態度與價值觀的綜合表現。《普通高中信息技術課程標準(2017年版)》明確了高中信息技術課程旨在全面提升高中學生的信息素養,通過提供技術多樣、資源豐富的數字化環境,幫助學生掌握數據、算法、信息系統、信息社會等學科大概念,了解信息系統的基本原理,認識信息系統在人類生產與生活中的重要價值,學會運用計算思維識別與分析問題,抽象、建模與設計系統性解決方案,理解信息社會特征,自覺遵循信息社會規范,在數字化學習與創新過程中形成對人與世界的多元理解力,負責、有效地參與到社會共同體中,成為數字化時代的合格公民。筆者根據新課標理念的指導,設計了一節基于Swift Playgrounds應用的課——《iPad編程——函數》,以幫助學生領會算法基礎,從容入門程序設計。
● 選材背景
“數據與計算”是新課標指導下高中信息技術課程結構必修部分的重要內容,也是幫助學生提升計算思維的重要途徑,這里要求學生掌握算法與程序設計的基本知識,體驗程序解決問題的一般過程,并能總結利用計算機解決問題的方法遷移到其他與之相關的問題解決中去。
從以往教材的內容來看,很多都輕算法重代碼,而設計算法是編寫代碼的前提,對于起點不一又沒有系統的程序知識鋪墊的學生來說,如果要體驗程序只能照抄代碼,無法理解程序功能的基本原理,所以在編寫代碼之前有必要進行算法的學習。
這里筆者選擇了iPad上基于Swift語言的Playgrounds應用,這是一款門檻低、易學易用的編程語言,很多小學也選用它來幫助學生入門編程,但是學生在不同認知階段對同一事物的理解程度是不一樣的,讓高中生選擇它的理由有:①可以在iPad的APP上學習編程,能夠提高學生的學習興趣;②游戲闖關形式的編程情境,更容易檢驗程序的執行過程,降低了學習難度,弱化代碼的拼寫,更適合算法的學習;③闖關任務答案開放,有利于拓展學生思維,激發學生思考如何進一步優化程序。
● 學習背景
本節課是iPad編程的第2節課《函數》,在上一節課里,學生已了解了Swift語言的編程環境和基本代碼的使用,通過逐步設計都能達成目標。本節課的學習目標是要讓學生在上節課的基礎上進一步去思考程序的效率,雖然條條大路通羅馬,但怎樣走可以減少代碼、節省運行時間、提高執行效率,也是算法設計中要考慮的重要因素。在本節課學生需要認識并理解函數的概念,掌握函數的代碼格式,并能運用函數的方法解決實際問題提高算法效率。
● 流程設計
1.舊任務引發深層思考
課堂開始簡單復習上一節課學過的“向前走”“向左轉”“收寶石”“點開關”四條基本代碼,并用一個熱身任務,幫助學生快速進入狀態。
在完成任務過程中學生遇到一個必須解決的問題,即只學過“向左轉”的代碼,而沒有“向右轉”的代碼,怎樣用已有的知識實現向右轉的任務?
學生不難想到用三次“向左轉”來實現“向右轉”的效果。任務是完成了,但此時教師需要引導學生深入思考:為什么沒有一個現成的“向右轉”代碼?難道每次需要向右轉的時候都要寫上三句“向左轉”嗎?這樣的代碼會不會很煩瑣?帶著這些思考,筆者引出一個可以解決的辦法,也是本節課的學習主題——函數。
2.新概念需要解釋透徹
提到“函數”學生會立即聯想到數學里的y=f(x),自變量、應變量等一堆嚴謹的學術闡述會讓學生畏懼,這里的關鍵是要通過簡單的比喻和形象的描述幫助學生了解程序設計里函數的概念和作用。尤其是要讓學生知道Swift語言里的函數就是用來完成特定任務的一段獨立的代碼塊,更可以用人人都會的“系鞋帶”過程幫助學生理解函數的意義。
“系鞋帶”是大家都非常熟悉的過程,但如果教一個孩子系鞋帶,我們通常會把動作分解成“繞圈”“穿線”“拉緊”三個步驟。整個“系鞋帶”的過程就可以理解為是一個函數,而其中“繞圈”“穿線”“拉緊”三個步驟就是程序塊的每一條代碼。學生熟練掌握了“系鞋帶”這個技能,以后每當再需要“系鞋帶”時就可以直接調用這個函數,而不必再去思考其中的每一步的細節。
同樣的原理,在剛才的任務中,如果需要經常用到“向右轉”或是別的一系列動作,我們完全可以把它做成一個像“系鞋帶”那樣的自定義函數,在每次需要用的時候進行調用。
3.新技能在任務中實踐
本節課不僅要認識并掌握函數的概念及作用,還要掌握自定義函數的格式和調用方法以及使用場合。格式并不難,但要熟練掌握需要在任務中鞏固實踐。本節課圍繞函數的應用筆者設計了三個任務,逐層遞進,合作探究,在任務中發現問題、解決問題,從而升華問題。
(1)基礎任務,解決新動作
與導入部分的熱身任務相比,基礎任務仍然是在解決“向右轉”的問題,但熱身任務只是幫助學生掌握如何解決“向右轉”的方法,而這個任務中需要多次調用“向右轉”函數,更能讓學生理解函數的作用和意義(如圖1)。
基礎任務的目標:①鞏固掌握自定義函數格式的正確使用;②在實踐中體驗如何使用函數設計新動作;③在情境中檢驗程序的正確性。
(2)提高任務,實現重復,優化程序
相對基礎任務而言,提高任務中沒有新動作,但有動作的重復,一個優化高效的程序是不能有重復繁雜的代碼來影響程序的可讀性和效率的,所以需要學生通過自主探究,分析路線,思考使用怎樣的自定義函數來實現重復(如上頁圖2)。
(3)進階任務,使用嵌套
基礎任務使用函數設計新動作,提高任務使用函數實現重復,而進階任務則是課堂的高潮,此任務既需要設計新動作“向后轉”,又需要重復四次每邊的動作,這里就需要考慮“函數嵌套”的使用。所謂的“函數嵌套”即在一個自定義函數中調用之前定義過的函數,雖然有點繞,但對幫助學生理清思路還是很有效果的。而且在本例中,學生最后會發現每邊的動作是完全相同的,也就是最后要連續調用四次單邊的動作函數,由此也可以引出下節課的循環問題(如上頁圖3)。
4.課堂總結實現升華與拓展
課堂的尾聲需要清晰的總結幫助學生理清本節課的所學,這節課的尾聲主要分為三部分。
(1)由程序升華至生活
需要多次調用的任務就可以定義為函數,如程序中多次要用到的程序塊,現實生活中也是一樣,這里可以啟發學生思考。例如,每周晨會中的第一個環節升旗儀式都是固定的內容,也可以理解成函數,那么在下一期的方案中升旗儀式不用另作考慮,直接調用上一周的就行。
(2)總結本課知識要點
本節課認識了函數的概念和作用,學習了自定義函數的格式和使用,在具體的案例中體會了函數嵌套在優化程序中的意義。
(3)拓展任務延伸課堂
40分鐘的課堂即將結束,但知識的學習并未停止,筆者還設計了一個創新拓展任務留給感興趣的學生在課后繼續鉆研(如圖4)。這個任務答案很開放,用各種方法都能完成任務,但可以讓學生相互比一比,看看完成相同的任務誰的程序更優化,誰的執行更高效。
● 輔助技術
信息技術教學尤其是程序設計章節的教學中最頭疼的問題莫過于學生起點不一的矛盾,如何實現課堂中的分層次教學、教師的分身答疑一直都是需要不斷思考的命題。這節課設計的任務較多,且環環相扣,學生如果一步跟不上就有可能步步跟不上,因此,筆者選用了教學平臺進行輔助,每一個案例都做成了微課,學生可以在線獲得幫助。課堂的時間是有限的,知識的探究是無限的,尤其是信息技術的課堂中教師只是引路人,更多的成果需要學生自己探索獲得,所以筆者把更多的學習資源放在學習平臺上引導學生主動學習。
● 課后反思
本節課雖然教學目標基本達成,技術上無卡殼,學生表現積極性高,但整節課時間略顯緊張,每個問題的挖掘深度還可以再有所增加。
本節課設計的創新之處在于:①選用iPad編程為VB程序教學做鋪墊,讓學生在游戲闖關的情境中掌握程序設計的一般過程和算法基礎,為學生降低程序設計的入門門檻,以提升學生的學習積極性;②任務設計環環相扣、層層遞進,推進有力,注重啟發學生積極思考、主動探究,在思考中發現問題、解決問題、升華問題,注重知識與生活相結合;③教學平臺的運用,為課堂的分層次教學、課后的拓展延伸以及學生的數字化學習意識培養提供了實踐的平臺。