王倩 浙江省嵊州市剡城中學教育集團
在教學Python的過程中,部分學生對程序設計知識的接受能力強,只需要教師適當點撥和指導就能進行自主學習,而另一部分學生即使教師手把手教,其對算法、數據類型、運算符等知識仍是一知半解。因此,在教學過程中要根據學情明確教學目標,斷絕無關任務。
教學中需要根據學生具體情況,確定教學目標、重點、難點。在保證課程進度的基礎上,下沉教學目標,找準著力點,讓學生花時間討論、思考、質疑、體驗編程,強化相應抽象思維理念內涵。大小寫、中英文切換、標點符號等不需要這節課堂培養的細節,可以先暫時斷絕,讓教學的思路更清晰,讓教學的目標更明確。
筆者在教學《海龜模塊畫圖》時,將某節課的教學目標定為掌握海龜的坐標方位。教師整節課給予學生四個命令,即前進、后退、左轉、右轉。學生掌握了基本命令,并能準確畫出正方形,說明目標已經達到。雖然教學內容少,但是學生真正理解了知識點,還能用多余時間進行自由創作,如繪制“日”“田”等。
生活中的一些問題看似煩瑣,但如果用編程思維抓住本真就會變得簡單。教師以問題驅動引導學生抓住問題的關鍵,斷絕多余的問題,進而根據解題思維與步驟有效聯系Python語言進行表述,能有效促進學生邏輯思維和構建思維的發展。一般解題步驟為:首先,對生活問題進行抽象,獲取關鍵信息建立數學模型;其次,將問題進行分解,并轉化成計算機可以處理的模型。
筆者在教研活動中聽過一堂課,印象很深刻。該教師用餐廳點餐系統引入,學生很興奮,說自己在飯店吃飯有過類似經驗。但在布置任務、要求學生也完成同樣的點餐系統時,教室卻鴉雀無聲。接著該教師細細分析,把看似復雜的餐廳點餐系統分解成三個模塊,即歡迎模塊、訂制套餐模塊、計費模塊。歡迎模塊為順序結構,獲取年齡數據age;訂制套餐為多分支結構,根據不同年齡獲取不同的選擇結果為數據food;計費模塊為循環結構,根據food列表進行累加計費獲得數據momey。學生在明白其實是學過的三大基本結構后,逐漸對完成該任務有了信心。該教師逐步引導學生抓住問題的關鍵age—food—money,理解并完成導學案上的任務就能最終完成整個項目的設計。
《算術運算符和表達式》一課中研究的實例是科學教材中涉及的溫度轉換的問題。筆者在教學時以簡單的小問題為切入點,幫助學生理清思路,如“看圖表分析攝氏和華氏這兩個變量的數據關系”“明確輸入什么變量、計算什么變量、輸出什么變量”“在Python代碼中輸入數據怎么實現,計算表達式怎么書寫,輸出數據怎么實現”等(如圖1),問題層層遞進,幫助學生體驗計算機解決問題的過程,體驗信息技術人員真實的工作模式和思考方式。

圖1
教師要根據實際教學環境對教材進行舍棄,讓教學根植于問題情境,解決真實復雜的現實生活問題。
教師要靈活機動處理教材,教材里安排的內容不一定都要在一節課講完,可以對一個問題進行細講,講精講透,多給學生思考的時間和練習的時間。
例如,《算術運算符和表達式》一課的重點為理解并能準確書寫算術表達式。教學過程為先學習基本的算術運算符,然后拋出生活問題,讓學生抽象出變量,書寫最關鍵的變量表達式。在完成課本例題后,繼續提出若干生活問題,如計算圓形花壇面積、計算BMI等。為幫助學生理解變量、賦值、運算符等知識點,筆者在小結環節使用思維導圖(如圖2),其核心是展現數據計算賦值的過程,利用PPT的動畫功能不僅一步步呈現出本堂課的知識點,還能清晰展現出知識間的關系脈絡。

圖2
浙教版教材在前面幾課時里集中安排了數據類型、變量、運算符等知識點,過多的理論講解讓學生既無法全部理解也會覺得枯燥乏味,更不能激發學習興趣。所以,筆者尋找貼近學生真實生活的實例,融入理論知識,適當調整教材內容的前后順序,把知識點串聯起來變成一個項目,讓學生在學中用,積極尋找解決方案。
例如,在剛接觸編程時,可以讓學生打印圖形、名片等,主要練習print函數。接下來可以解決計算問題,如已知三角形三邊長求周長、求面積,主要練習運算符。之后解決已知問題,如已知三角形三邊長求面積問題,主要練習賦值和輸出語句。在學習順序結構后,重點解決輸入三角形三邊長求面積的問題,主要練習輸入語句。在學習分支結構后,重點解決三角形的構成問題,主要分析問題中的判斷條件。學生在做中學,需要什么學什么,知識點少,易于掌握,將基礎打扎實便于后續的深度學習。為了貼近學生的生活,筆者也嘗試引入課本外的實例——制作體重計算器。先學習設計男生版或女生版的體重計算器,接著設計通用版的體重計算器,越貼近實際生活,學生思考得就越周全,學生體驗制作軟件是一個需要不斷完善的過程。
課堂是學生的學習場,教師可以脫離其他無關環節,讓學習在活動、實踐、操作中真實發生,讓學生通過實踐活動的驗證將知識內化為“真知識”。教師要以學生為出發點,敢于遠離舒適區,挑戰自己課堂中的問題,打破常規,用多種嘗試不斷完善課堂。
①讀記說模式。Python語言中的基本概念、常見函數、基本結構是必須理解的內容,筆者通過“讀記說”的方式讓學生加深印象,這樣學生在代碼里看見新詞就不會感到陌生。例如,變量的命名規則是非常基礎的知識點,筆者首先讓全班齊讀初步了解規則,接著通過出題讓學生練習,考點為命名的組成成分、不能數字開頭、不能與關鍵詞同名和區分大小寫,使學生理解關鍵點。最后通過在線測試軟件現場反饋學習情況,不僅學生能直接看到測評結果知道自己的薄弱點,而且教師能根據測評結果及時干預,反思重新設計教學過程。
②互動游戲模式。教師要善于觀察學生的日常生活,發現趣味的主題,通過設計游戲,讓知識變得簡單有趣。在課堂上加入游戲環節,既能活躍課堂氣氛,又能讓學生體驗編程的魅力。例如,“一二三四五六七我愛Python”報數游戲,在要求報到與七有關的數時只能說“我愛Python”。首先要讓學生明確規則參與報數游戲,然后分析游戲中的主要計算思維——對所有數進行遍歷,篩選出符合危險數字“七”特征的數字。遍歷需要通過循環結構來實現,篩選需要分支結構來實現,兩者的有效結合就能把問題解決。學生通過親身參與游戲,理解了基本語句結構相互嵌套可以解決復雜的問題(如圖3)。

圖3
①精選習題。Python習題主要來源于課本及網絡資源。教師要多關注相關網站,抓住習題中的知識點,或借鑒,或改編,及時進行分類整理。另外,如果學生基礎薄弱,則以填空題、選擇題為主,給學生部分代碼讓其補充完整。隨著學生編程能力的提升,可以通過多變、多解的方式,引導學生從觀摩、模仿、嘗試等階段逐漸過渡到獨立思考階段,最終總結出解決問題的一般規律。例如,針對教材中的問題“比較a、b、c三個數,輸出其中最大的數”,可以從多個角度思考。若只使用分支結構,可以通過多次條件判斷,先假設a大于b,從肯定的角度出發,再判斷a和c的大小。從否定的角度出發,判斷b和c的大小,一步步判斷出最終結果。當然,也可以通過兩次判斷來解決問題,先判斷a是否是最大數,如果不是那么最大數在b和c里,再判斷一次b和c的大小就能得到結果,還可以用一個多分支結構來寫條件。隨著學習難度的增加,同樣的問題還可以用列表、函數等方法解決。
②分層練習。考慮到學生基礎參差不齊,可以設定分層任務。教師設置的作業有難易之分:基礎型作業,在課堂上已經練習分析過,所有學生必須完成;提高型作業,大部分學生完成;挑戰型作業,學有余力的學生完成。學生可以根據自身情況進行選擇。
總之,在教學Python程序設計時會有一定的困難,需要教師在備課過程中花時間、下功夫,要“敢于斷絕,下沉教學目標;敢于舍棄,整合教學內容;敢于脫離,打破常規思路”,抓住解決問題的關鍵,勇于在課堂上實踐、反思、再創造。