福建廈門市金尚中學(361009)鄒 斌
信息技術(shù)主題式單元教學是指以信息技術(shù)的一個單元為基本單位,以某一個主題或內(nèi)容為教學核心,在一定的情境化教學背景下,讓學生自主建構(gòu)知識、深入探究學習某一特定學習主題的一種教學模式。在信息技術(shù)主題式教學中,教師應結(jié)合信息技術(shù)的關(guān)鍵能力、必備品格和學科素養(yǎng)的培養(yǎng)目標,科學凝練單元主題,分析、整合單元教學資源,精準制訂單元教學方案,精心組織課堂教學。本文以閩教版信息技術(shù)(2020 年修訂版)七年級下冊“走進程序世界”單元教學為例,闡述初中信息技術(shù)主題式單元教學的實踐與探索。
在實施初中信息技術(shù)主題式單元教學前,教師應認真研讀信息技術(shù)課程標準、教材,分析學生的具體學習情況,確定單元教學目標和課時教學目標,結(jié)合信息技術(shù)學科的特點,圍繞目標的靶向做好單元教學方案和教學活動設計。
“走進程序世界”單元主要由程序設計基礎(chǔ)、程序設計的三種基本結(jié)構(gòu)和綜合活動等三個部分組成。
在學習本單元之前,學生學過文字處理、圖片處理、動畫制作,甚至學過Scratch 編程,絕大多數(shù)學生有一定的數(shù)字圖像處理基礎(chǔ),對解決問題的算法表達有一定的認知基礎(chǔ),但對于編程的認知很少或僅僅停留在操作與實踐層面,缺乏對程序?qū)崿F(xiàn)方法的設計與思考。通過研讀中小學綜合實踐活動課程指導綱要和教學文本材料以及教學基本要求,筆者確立了這一單元的教學主旨:結(jié)合具體事例情境,利用流程圖描述解決簡單的實際問題的算法,利用三種程序結(jié)構(gòu)編寫程序解決簡單的實際問題,培育學生的計算思維,提升學生的思維品質(zhì)。
“走進程序世界”單元的教學明線是讓學生在學習程序設計基礎(chǔ)及程序設計的三種基本結(jié)構(gòu)后,能將所學知識運用于“猜價格游戲”“石頭、剪刀、布”游戲的程序設計?!盎A(chǔ)知識+基本結(jié)構(gòu)+綜合活動”的教學模式體現(xiàn)了活動與體驗、遷移與應用的深度學習特點。其中,“基礎(chǔ)知識”部分要求的關(guān)鍵知識或技能是兩個“了解”、一個“掌握”、一個“運用”及一個“操作”:了解程序與指令,了解程序設計語言及其編譯;掌握C 語言的基本語法;能運用自然語言和流程圖描述算法;能編寫一個簡單程序?!盎窘Y(jié)構(gòu)”部分中的“順序結(jié)構(gòu)”要求了解數(shù)據(jù)類型、常量與變量的定義與使用,掌握算術(shù)運算與賦值運算,能運用輸入函數(shù)與輸出函數(shù);“分支結(jié)構(gòu)”要求了解關(guān)系運算、邏輯運算、三目運算,能運用單分支結(jié)構(gòu)、雙分支結(jié)構(gòu)以及理解多分支結(jié)構(gòu);“循環(huán)結(jié)構(gòu)”則要求會運用for 循環(huán)和while 循環(huán)?!白哌M程序世界”單元的教學暗線是問題的解決以及算法的描述。描繪完本單元的知識圖譜后,筆者又列出了本單元的預設教學方法和教學設計要點。
單元教學和課時教學目標的實現(xiàn),要有明確的知識評估分類與之配套,這便于課時作業(yè)、分層作業(yè)、單元作業(yè)、階段測評等的設計,有利于教學的診斷、分析、反思、調(diào)整和改進,體現(xiàn)了集教、評、學、研于一體,符合教學可觀察、可測評、可操作的重要設計理念。教學中,筆者按核心知識和目標歸類,把評估要素分為記憶、說明性理解或掌握、探究性理解或靈活運用。“走進程序世界”單元中的這幾個評估要素之間是有一定的邏輯遞進關(guān)系的,與思維的不斷推進相緊扣。比如程序及其執(zhí)行要求達到說明性理解,由于暫時不涉及具體的程序含義與表達,也沒有具體語句的描述,因此只需要了解程序與常見程序設計語言。程序設計的一個重要目的是應用程序解決需要解決的問題。因此,在本單元的教學中,教師應引導學生掌握流程圖,運用流程圖描述具體算法,從而培養(yǎng)學生的計算思維;讓學生在反復的實踐操作中理解性地記憶數(shù)據(jù)類型、常量和變量,著重掌握int、float、double 的區(qū)別以及變量的取名規(guī)則和常量的定義;讓學生能夠探究性理解賦值運算、算術(shù)運算、輸入與輸出函數(shù)、if 語句、for語句、while語句、關(guān)系運算和邏輯運算。對學生學習的評估關(guān)鍵是看他們能不能將所學知識靈活運用于程序編寫。
在“走進程序世界”單元中,通過學習編程的基本知識、C 語言的變量等基本概念和printf 等基本語句以及順序、分支、循環(huán)三種結(jié)構(gòu)的表達和應用,學生逐步認識到程序和算法是計算機自動化的重要基礎(chǔ)工具,并對計算機軟件的工作原理有一個全局性的認識,從而逐步建立起計算思維。
具體來說,本單元的教學目標是聯(lián)系生活實際問題的解決,掌握利用流程圖描述簡單算法的方法,提高解決問題的能力;了解C 語言的基本數(shù)據(jù)類型和常量及變量,掌握輸入與輸出函數(shù)、算術(shù)運算、賦值運算、關(guān)系運算、邏輯運算;學會用if 語句編寫簡單的分支結(jié)構(gòu)程序;學會用for 循環(huán)和while循環(huán)語句編寫程序解決簡單的實際問題。
本單元的教學重點是掌握C 語言的基本語法結(jié)構(gòu)、程序及其執(zhí)行過程;理解數(shù)據(jù)類型、賦值運算、算術(shù)運算;掌握關(guān)系運算以及if語句、while語句和for 語句,能進行簡單的程序功能需求分析并設計流程圖。教學難點是運用流程圖描述算法;編譯和調(diào)試程序;掌握輸入與輸出函數(shù)、邏輯運算符及算術(shù)運算符“/”“%”“++”“--”的功能;運用if 語句、for語句、while語句編寫程序解決實際問題;綜合應用分支語句、循環(huán)語句進行編程和調(diào)試。
教師要結(jié)合教學實踐、教研交流和必要的循證分析,預判學生在學習本單元時將會遇到的主要困難,在此基礎(chǔ)上優(yōu)化問題的設計,在問題設計上做足文章,啟發(fā)、引導、點撥學生深度學習。
首先,初學者容易出現(xiàn)標點符號和語法錯誤,比如在輸入逗號、分號、圓括號、雙引號時,將半角字符輸入成全角字符;句末“;”、大括號、頭文件漏輸或輸不全;在if 語句后直接加“;”從而變成空語句。
其次,學生容易將調(diào)用的函數(shù)輸錯,比如調(diào)用C語言標準庫函數(shù)中的格式輸出函數(shù)printf、格式輸入函數(shù)scanf時會習慣性地少輸入字母“f”;printf格式字符串出現(xiàn)多個輸出控制符,但在輸出列表中沒有對應好或列表中的變量個數(shù)少了;前后的數(shù)據(jù)類型沒有匹配好或是不一致,導致出現(xiàn)輸出控制符弄錯的提示;scanf 的變量地址少了“&”,與printf 的控制符相混淆;調(diào)用隨機函數(shù)時忘記先通過srand((unsigned)time(NULL))利用時間來獲取隨機數(shù)種子而變成偽隨機數(shù)。
再次,學生容易在條件表達式的理解和運用上存在偏差,比如因為沒有建立起包含關(guān)系的概念,所以在理解“或”和“與”的關(guān)系時出現(xiàn)混淆,得出不同的取值范圍;不能很好地理解取模的運算,不清楚為什么要取模,什么情況下要用上模運算,且容易忽視取模只能是整數(shù)運算,不自覺地會帶小數(shù)進行模運算;對除(“/”)運算中整數(shù)除整數(shù)得整數(shù)不能透徹理解。
最后,學生容易將賦值運算符“=”與關(guān)系運算符“==”相混淆。由于學生是首次學習計算機編程語言,他們一看到“=”馬上會想到數(shù)學中的等于號,對計算機的存儲及變量沒有建立起相關(guān)的概念,而對于語句中的“A1=B1=9;”或是”A1>=B1==9;”更是摸不著頭腦。讓學生了解賦值運算符“=”與數(shù)學中的“等于”是一種什么關(guān)系,以及“==”與“=”表示什么,這是教學的難點。
對于本單元中“程序設計基礎(chǔ)”部分的程序與指令、程序語言及其編譯,教師可課前給學生提供微課程、自主學習單及相應的輔助理解練習等,讓學生進行針對性預學。對于流程圖,教師則可讓學生通過參與完成一項家務活動而掌握其畫法。比如可讓學生在家長的指導下做一道菜,之后先用自然語言把這道菜的烹飪過程記敘下來,再用流程圖把這道菜的烹飪過程畫出來,最后在班級群中進行交流。在交流過程中,教師應針對學生暴露出的問題進行有針對性的講解,為學生掃清學習障礙。此外,數(shù)據(jù)基本類型、變量和常量、算術(shù)運算、邏輯運算、關(guān)系運算等都可讓學生自主預學,教師可設計一定量的鞏固練習來幫助學生理解和掌握。課堂上,教師可借助希沃軟件上的雙人比賽、填空、連線等游戲活動,來了解學生的自主學習情況,并據(jù)此精講相關(guān)重要概念。
本單元的核心內(nèi)容是算法和程序,重點培養(yǎng)的核心素養(yǎng)是計算思維。基于此,教學中筆者緊抓案例主線來展開教學,把相關(guān)內(nèi)容串聯(lián)起來。筆者以自己設計的第一個程序為切入點,引導學生通過printf 這個函數(shù),“說出”“HELLO WORLD”或者其他帶各種圖案的“話語”。學生在這過程中逐步掌握了相關(guān)環(huán)境參數(shù)的設置和程序基本語句的表達要求。對于順序語句,筆者引入生成隨機數(shù)的程序,進一步生成隨機數(shù)種子,再由rand 語句隨機生成規(guī)定范圍的隨機數(shù)。對于分支語句,筆者先以曹天元《上帝擲骰子嗎》一書以及一個關(guān)于隨機數(shù)生成的小程序,承、轉(zhuǎn)、啟地引入人機單個骰子的擲骰子游戲。由于骰子的點數(shù)是隨機生成的,由此可引入“隨機”大概念,建構(gòu)骰子點數(shù)這一具體事物抽象化成隨機數(shù)由計算機自動生成的計算思維,判斷人和機擲骰子后所得點數(shù)的大小后顯示輸贏結(jié)果;再以閩南“博餅”游戲活動為例,由單個骰子過渡到三個甚至六個骰子。在這過程中,筆者根據(jù)學生不同學力層次進行分層要求,引導學生自主學習與思考,培養(yǎng)學生的計算思維。學生展示程序編寫過程并改進程序,在糾錯與改進程序的過程中不斷生成新的認知,從而實現(xiàn)深度學習。在此基礎(chǔ)上,筆者再逐步強化學生對分糖果、打車計費、青蛙益智接龍、猴子摘桃、韓信點兵、競猜價格等經(jīng)典游戲編程實例的學習,充分激發(fā)學生的編程興趣。
本單元設計了“猜價格游戲”和“石頭、剪刀、布游戲”的程序來展開綜合活動。“綜合活動”部分,教師既可以通過項目式學習活動來組織教學,也可以從真實情境中提煉出問題,以問題為導向?qū)嵤┤蝿镇?qū)動教學。在綜合活動中,教師可引導學生運用一定的編程技能,編寫結(jié)構(gòu)清晰、結(jié)果正確、界面友好的程序,讓學生對程序進行理解、應用與遷移。教師還要引導學生自我診斷評估運用程序解決問題的優(yōu)勢與不足,針對具體問題形成解決的算法,并通過流程圖可視化表示,以程序語言來正確表達,再把所理解的算法通過程序表達出來。在課堂中,有的學生在判斷語句中把“if a>b==1”作為條件表達語句,這一課堂生成尤為珍貴。筆者組織學生討論,引導學生思考“‘==1’這一表述是否有錯?這樣表述是否有必要?”,從而加深學生對邏輯運算的理解,訓練學生的計算思維。
筆者對一學年所任教的三個班級的教學過程和結(jié)果及學生填寫的調(diào)查問卷進行循證分析,結(jié)果發(fā)現(xiàn):
筆者所任教的三個班級共有161 名學生。在本單元的教學過程中,學生自主學習預學單,或是參與游戲環(huán)節(jié),或是進行小組合作學習,每個學生都有機會參與活動,并且能自然融入各個分層活動中。每個活動環(huán)節(jié)總有一個層級適合學生去進階學習,學生“吃得飽”且“還想吃更多”,持續(xù)的思考使學生的思維能力得到了很好的提升。
本單元的教學通過真實的游戲情境來推進。在游戲過程中,筆者引導學生形成解決問題的算法,在此基礎(chǔ)上完成流程圖的建立,并將流程圖轉(zhuǎn)化成計算機語言,把分析出來的需求通過計算機程序語言“說”出來,從而實現(xiàn)問題的解決。學生在真實游戲情境引領(lǐng)下,一步步尋求問題的解決途徑,在解決問題的過程中完成程序設計。這樣的教學,有利于學生計算思維的培養(yǎng)。
本單元教學以擲骰子游戲為主線,把零散的知識點串聯(lián)起來,并創(chuàng)設問題情境引導學生探討程序設計基礎(chǔ)知識、程序設計的三種基本結(jié)構(gòu),促使學生主動建構(gòu)知識框架,有效遷移應用知識,進一步給學生提供分層的拓學單,以拓展學生的視野,讓學生真正實現(xiàn)深度學習。