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