姜華



● 學科核心素養
信息意識:掌握程序員編程解決問題的過程和方法;明確結構化在程序設計中的重要作用。
計算思維:掌握一種程序設計語言的基本知識,編寫簡單程序解決問題。
數字化學習與創新:針對特定的學習任務,運用一定的數字化學習策略,通過整合跨學科的學習任務,幫助學生運用數字化工具表達思想,養成數字化學習與創新的習慣。
信息社會責任:認識信息技術發展對社會進步和人們生活帶來的影響。
● 課程標準要求與學業要求
課程標準要求:①掌握一種程序設計語言的基本知識,使用程序設計語言實現簡單算法;②通過解決實際問題,體驗程序設計的基本流程,感受算法的效率,掌握程序調試與運行的方法。
學業要求:①能夠根據需要選用合適的數字化工具開展學習;②利用程序設計語言實現簡單算法,解決實際問題。
● 教學內容分析
本節內容源自高中信息技術必修1《數據與計算》(教育科學出版社)的第2單元第3節,對它的教學是在學習了Python相關基礎知識和順序結構、選擇結構的基礎上進行的,所以它是對前面知識和能力的提升,也是后面程序實現的基礎。循環結構作為程序設計的三種結構之一,是程序設計的基礎,也是程序設計中的一個重要知識點。循環結構通常包含兩種類型,一種是重復一定次數的計數循環,另一種是重復直到某種情況結束的條件循環。在Python中使用for語句來創建計數循環。教材介紹了for循環的基本格式、循環體、循環次數的控制等,本課時主要解決計數循環(for循環)的基本結構,由于Python中for循環次數和列表有密切聯系,因此教學中引入了列表。
● 學情分析
通過前面的學習,學生已經熟悉了Python程序的編程環境和基本語法,了解了三種基本結構,掌握了順序結構和選擇結構的格式和使用方法。高中學生對程序設計有一定的興趣,但學習程序設計不同于專業訓練,因此,需選擇能激發學生興趣的實例,并提供有針對性的幫助文檔,幫助學生完成算法設計及編程實現。由簡到繁,層層推進,讓學生理解循環的基本思想,通過三種結構的綜合使用、相互嵌套解決復雜的問題,鞏固和加深對三種基本結構的認識。考慮到學生編寫程序代碼不規范,出錯率比較高,如全角半角混亂、單雙引號缺失、代碼無縮進等,所以合理利用可遇見的失敗組織教學來提高學生的學習效率。
● 教學目標
掌握計數循環(for循環)的基本結構;學會導入Turtle模塊,并了解模塊中常用的方法和屬性的使用;能夠應用range()函數解決循環問題;體驗程序設計的基本流程,能夠應用循環結構解決實際問題。
● 教學重難點
重點:for循環的使用。
難點:解決問題的分析方法與過程。
● 教學策略
教法:任務驅動法(以任務串聯課堂教學)、問題導學(以問題引領學生探究)。
學法:以小組合作探究為主,分成2人小組,形成合力,方便交流分享,組間競爭、共進(作品評比)。
● 教學過程
1.任務引入
教師先呈現一組漂亮的繁花曲線,以及由繁花曲線參與的藝術設計版式。通過對比,讓學生體會規則幾何圖形帶來的感官沖擊以及它們在藝術設計中的實際用途。接著選擇較簡單的繁花曲線,通過靜態和動態兩種觀察方式讓學生分析基本構成單元的形狀。
師:如果讓你來畫,你會用什么工具?怎么畫?(學生思考、討論)今天我們利用Python軟件,看看它能不能幫我們畫出這么美的圖形。
設計意圖:用“美”來激發學生的學習熱情,“實現美”是該任務的目標,解構“美”是任務實施的入口, Python則是任務實施的重要工具。
2.任務實施過程
(1)簡單繁花曲線的解構
師:簡單繁花曲線的基本單元是正方形,而正方形是線與角的關系,所以首先要掌握Python中畫線和角的方法。
Turtle.forward(長度)
Turtle.left(角度)或Turtle.right(角度)
學生畫出一條線段并轉動相應的角度。
師:用這種方法我們能否畫出一個正方形?
學生重復輸入上一操作,直到得到一個正方形。代碼片段如圖1所示。
師:《Python之禪》里說“Simple is better than complex。”有什么方法可以簡化上面的代碼?(引出循環結構和range()函數,這是本節課的重點)
教師講授for-in語句結構:循環變量的值從列表中第一個數開始,對應列表中的每一個值,循環把語句組A中的所有工作執行一次,執行完成后,循環變量賦為列表中的下一個值(如圖2)。教師講授分析for-in語句的執行流程(如圖3),請學生打開給定的程序。學生打開執行learn1.py,體驗for-in語句執行過程和結果。教師展示、講授執行過程(如圖4)。
師:Python非常貼心,為我們設計了range()函數,它可以直接生成一組連續增加的數字,實現列表功能。
學生打開執行learn2.py,體驗for-in語句執行過程和結果。教師展示、講授執行過程(如圖5)。
教師講授Range(start,end,
step)語法,并讓學生嘗試用range()函數輸出2到10之間的偶數。學生嘗試輸出五個偶數,并分析失敗原因,討論“顧前不顧后”、步長的含義(如下頁圖6)。
設計意圖:本環節主要是通過讓學生體驗for-in循環程序,改變其中參數,自主探究語法特征和作用,激發學生的學習興趣,提高學生探究能力。在range()函數使用過程中用幾個可以預見的錯誤讓學生先嘗試,教師再總結,可以幫助學生更好地理解知識點,加深印象,提高學習效率。
學生嘗試把煩瑣的代碼修改簡練,完成一個正方形的繪制。
設計意圖:畫一個正方形,是復原繁花曲線的第一步,通過這個環節,讓學生掌握turtle繪圖的基本函數、for循環的一般結構,以及range()函數的使用。
(2)簡單繁花曲線的重構
教師播放例圖的繪制過程,讓學生思考、討論圖形是如何由基本的正方形變化組合而成的(如圖7)。
學生嘗試用循環嵌套完成簡單繁花曲線的重構。教師對典型的失敗案例進行分析(如圖8),引導學生分析原因。學生找出問題所在,并討論解決方案,了解Python中相同邏輯層保持相同縮進的規則。
設計意圖:與上一環節形成遞進關系,由一個個基本圖形疊加變化形成繁花曲線。該環節的重點是讓學生掌握for循環嵌套,以及循環體的判斷和選擇,在這個過程中,勢必產生一些錯誤的嘗試,通過對比分析,讓學生從失敗的嘗試中了解Python語言使用規則,并讓他們意識到,即便是失敗的作品,仍是一幅不錯的繁花曲線。
(3)更多繁花曲線的解構與重構
師:請大家在提供的繁花曲線中選擇自己喜歡的形狀,嘗試完成,也可以在原有基礎上加上自己的想法,創作一個新的美麗曲線。
學生利用循環結構和函數,實現繁花曲線的創作。
設計意圖:這是一個拓展任務,學生通過本節課所掌握的循環結構和函數,加上自己的理解和創意,嘗試解構并重構繁花曲線,也可以建構新的繁花曲線。通過這個過程體會藝術與編程之間的聯系。
3.任務小結與評價
師:大家的圖案都非常有創意,無限循環的圖形在運動方向和形態上,自然、緊湊、流暢,唯美漂亮令人仿佛進入一個夢幻的奇妙世界。
通過今天的學習,大家能夠掌握利用程序解決問題的一般過程,能夠熟練應用三種結構設計算法,并能夠應用結構的嵌套解決復雜的問題。希望大家課后能把學到的知識應用到實際的學習和生活中去。
● 教學反思
考慮到學生現實解決問題思維與編程思維沖突的現狀,筆者選擇了編程繪圖這一學生比較感興趣的實例,由簡到繁,層層推進,在現實問題與編程場景間搭建良好的思維通道。這節課采用色彩豐富的圖形化設計作為主線任務,通過人體對視覺的敏感和偏好,一改代碼編程的枯燥乏味,改變學生對編程語言的固有見解。另外,針對學生編程語言基本語法不扎實、實踐中錯誤百出的問題,本節課采用了“有效失敗”策略,讓學生在思維呈現的阻滯中發現問題,糾正錯誤的理解,修正認知體系中混沌的部分。但在教學實施過程中,學生差異較大,教師提供的輔導支架不夠充分,也不夠靈活,對學生出現部分顏色不能呈現以及循環嵌套混亂等問題沒有做出及時有效的引導。在之后的教學中,筆者將根據學生在代碼編程方面基礎的差異性,提前合理分組,組內異質、組間同質,優勢互補,增加同伴互助支架。