鄭續(xù)玲 宋喜榮
● 教材分析
《感受信息的編程加工》是教育科學(xué)出版社出版的《信息技術(shù)基礎(chǔ)》第三章第二節(jié)的內(nèi)容。本節(jié)課主要是通過編制一個(gè)小程序,讓學(xué)生初步了解信息編程加工的一般過程,初步認(rèn)識(shí)程序代碼,感受利用計(jì)算機(jī)編制程序解決問題的魅力。教材沒有詳細(xì)介紹編程加工的關(guān)鍵步驟“算法”,但是這部分內(nèi)容是學(xué)業(yè)水平考試的考點(diǎn),所以引入算法的定義及算法的作用對(duì)學(xué)生了解編程加工的各個(gè)環(huán)節(jié)更有幫助。
● 學(xué)生分析
學(xué)生已經(jīng)學(xué)過第一節(jié)的內(nèi)容,知道了什么是編程加工,但是對(duì)編程加工的過程不了解,更不了解編程加工的關(guān)鍵步驟“算法”。所以,這節(jié)課我對(duì)算法從詳處理。由于算法有三種描述方法,其中流程圖這種描述方法在數(shù)學(xué)等其他學(xué)科中均已接觸過,流程圖描述方法的介紹可以從略處理。
● 教學(xué)目標(biāo)
知識(shí)與技能目標(biāo):理解算法的概念;了解信息編程加工的一般過程;認(rèn)識(shí)程序代碼。
過程與方法目標(biāo):通過信息編程加工的一般過程,鍛煉學(xué)生思維,培養(yǎng)他們解決問題的能力。
情感態(tài)度與價(jià)值觀目標(biāo):使學(xué)生感受計(jì)算機(jī)解決問題的獨(dú)特魅力。
● 教學(xué)重點(diǎn)與難點(diǎn)
重點(diǎn):認(rèn)識(shí)算法的定義及重要性;算法的三種描述方法;熟悉編程過程及調(diào)試過程。
難點(diǎn):算法中的偽代碼描述方法;編程過程及調(diào)試過程。
● 教學(xué)資源
計(jì)算機(jī)安裝VB6.0簡體中文版。
● 教學(xué)過程
任務(wù)一:玩游戲體會(huì)什么是算法
師:我知道大家都喜歡玩游戲,今天給大家推薦一款小游戲,這個(gè)游戲叫“過河”。游戲的規(guī)則是這樣的:把人和獅子都送到對(duì)岸,任何一邊的獅子都不能比人多,否則獅子吃人;船每次只能承載兩個(gè)。同學(xué)們能否成功?大家試試看。
學(xué)生嘗試。
師:有哪位同學(xué)過河成功了?
個(gè)別學(xué)生“過河”成功,表述并演示做法。
師:為什么大多數(shù)同學(xué)沒有成功呢?是因?yàn)闆]有正確的過河方法!請(qǐng)“過河”沒有成功的同學(xué)按照正確的方法再試一次。
師:解決問題是要講究方法的。解決問題的方法和步驟就是算法。我們這節(jié)課要學(xué)習(xí)信息的編程加工,算法是信息編程加工的關(guān)鍵步驟。
任務(wù)二:琢磨生活實(shí)例,認(rèn)識(shí)優(yōu)秀算法的重要性
師:是不是所有解決問題的方法都是合適的呢?帶著這個(gè)問題,我們?cè)賮砜匆豢次覀兩磉叺睦?。王虹從早上起床到上學(xué)前這段時(shí)間要做以下幾件事(如表1)。
師:王虹同學(xué)安排這些事情共需要28分鐘的時(shí)間。從節(jié)約時(shí)間的角度考慮,你會(huì)如何安排呢?
生:先刷鍋,把雞蛋煮上,在煮雞蛋的同時(shí),可以疊被、洗臉、刷牙,然后再吃早點(diǎn)(如下頁表2)。
師:咱們一起來比較這兩種做法。
教師引導(dǎo)學(xué)生思考:同樣的任務(wù),按照方法二安排,為什么會(huì)節(jié)約7分鐘呢?
生:利用煮雞蛋的時(shí)間去疊被、洗臉、刷牙,所以節(jié)約了時(shí)間!
師:解決問題不僅要講究方法,還要尋求最佳的算法。
任務(wù)三:用數(shù)學(xué)中的例子,體驗(yàn)信息編程加工(課件展示例子)
師:有了這樣的思想基礎(chǔ),我們通過下面這個(gè)數(shù)學(xué)例子來體驗(yàn)一回信息的編程加工。有一個(gè)三角形,邊長分別是3、4、5,三個(gè)角分別是90度、30度、60度。假設(shè)坐標(biāo)系已經(jīng)畫好,你會(huì)如何畫這個(gè)三角形呢?(見圖1)
生:用兩個(gè)點(diǎn)的坐標(biāo)描出線段。
師:不錯(cuò)!還有別的方法嗎?
師:大家都知道一筆畫寫字吧。那我們能不能一筆畫把這個(gè)三角形畫出來呢?
生:從坐標(biāo)原點(diǎn)出發(fā),沿著三角形的形狀,一筆畫畫下來。
師:我們一共找出了兩種方法來畫這個(gè)三角形。方法一:從(0,0)沿x軸正方向開始畫出長度為4的線段,從(4,0)開始左轉(zhuǎn)150度畫出長度為5的線段,左轉(zhuǎn)120度畫出長度為3的線段。方法二:從(0,0)到(4,0)繪制第一個(gè)線段,從(4,0)到(0,3)繪制第二條線段,從(0,3)到(0,0)繪制第三條線段。
師:這兩種方法我們是用自己的話描述出來的。我們?nèi)粘I钪惺褂玫恼Z言是自然語言。用自然語言描述算法可行嗎?這種描述讓算法通俗易懂,但是也有缺點(diǎn),請(qǐng)同學(xué)們看這句話“這個(gè)人誰都不認(rèn)識(shí)。”是什么意思?
這句話包含了兩種意思:“別人不認(rèn)識(shí)這個(gè)人,這個(gè)人不認(rèn)識(shí)別人”??梢?自然語言描述法容易讓人產(chǎn)生誤解。還有更好的方法來描述算法嗎?帶著這樣的疑惑,我給大家介紹第二種描述方法——流程圖。流程圖是算法的一種圖形化表示方法。我們?cè)跀?shù)學(xué)課中已經(jīng)學(xué)過。相信大家已經(jīng)不再陌生。看看用流程圖描述的算法,和自然語言相比,它的優(yōu)點(diǎn)是什么?
生:流程圖描述更形象直觀。
師:我們分析問題、寫出算法,最終的目的就是要編成程序,讓計(jì)算機(jī)去執(zhí)行??墒巧厦孢@兩種描述方法,雖然通俗易懂、形象直觀,但還不能直接轉(zhuǎn)化為程序語言。帶著這樣的問題,下面再給大家介紹第三種描述方法——偽代碼。偽代碼是用介于自然語言和計(jì)算機(jī)語言之間的文字和符號(hào)來描述算法。
師:(給學(xué)生展示偽代碼的描述方法)同學(xué)們打開第1個(gè)文件。看看下列代碼,它沒有填寫完整,請(qǐng)你讀一讀下列代碼,并把它填寫完整(如表3)。
假設(shè)描繪線條的命令如下。(解釋下面單詞的意思)
Forward(參數(shù)):向前走多遠(yuǎn)。
Left(參數(shù)):左轉(zhuǎn)多少度。
line(),():從某一個(gè)點(diǎn)到另一個(gè)點(diǎn)繪制線段。
默認(rèn)箭頭方向朝上。
咱們一起來看看這位同學(xué)的正確答案(如表4)。
師:偽代碼描述算法容易轉(zhuǎn)化為程序代碼,算法簡潔易懂、方便修改和可讀性好。請(qǐng)同學(xué)們比較以上兩種方法,你更容易接受哪一種方法?
學(xué)生討論并闡述觀點(diǎn)。
師:第二種方法所用語句較少,執(zhí)行時(shí)間少,所以更優(yōu)秀。算法是有優(yōu)劣的,通過開動(dòng)腦筋,我們可以找出更好的算法。
我們研究算法的描述,最根本的目的是用于編程,提高編程效率。下面我們將進(jìn)一步將算法用于編程任務(wù)中。
任務(wù)四:認(rèn)識(shí)程序代碼,上機(jī)調(diào)試
師:我給大家推薦一個(gè)可視化的編程工具VB6.0。我們先來認(rèn)識(shí)一下這個(gè)軟件(見圖2)。
①右面第一個(gè)小窗口是工程的屬性窗口。在這里你可以管理你的工程文件。
②左面是控件窗口,你可以選擇你需要的控件把它拖動(dòng)到程序界面上。
③右下是控件的屬性窗口。在這里你可以修改控件的屬性。
④中間是程序的主界面。
如何用VB編出我們這個(gè)程序呢?大家只需要做兩件事情就可以了(如表5)。第一,拖動(dòng)“按鈕”控件到主界面上。修改它的Caption(標(biāo)題)屬性為“繪圖”。 第二,在按鈕的click事件里面加入讓計(jì)算機(jī)繪圖的代碼。由于同學(xué)們沒有編程基礎(chǔ),下面我把按鈕里的代碼介紹給大家。①scale方法:用以定義坐標(biāo)系;②line方法:用于在對(duì)象上畫線;③RGB函數(shù):表示顏色,RGB(red,green,blue)。
師:做好這兩件事情,你就可以運(yùn)行一下程序看看你的成果了!大家動(dòng)手試試吧!編寫程序上機(jī)調(diào)試往往不能一次成功,是一個(gè)反復(fù)修改嘗試的過程。
教師巡視指導(dǎo)學(xué)生編程。
師:成功地完成任務(wù)的同學(xué)幫助遇到困難的同學(xué)。
師對(duì)學(xué)生的操作進(jìn)行評(píng)價(jià)并鼓勵(lì)。
● 課堂總結(jié)
師:這節(jié)課我們主要是體驗(yàn)了信息編程加工的一般過程。請(qǐng)同學(xué)們思考這個(gè)一般過程是什么?哪一步最重要?
教師引導(dǎo)學(xué)生對(duì)本節(jié)學(xué)習(xí)內(nèi)容進(jìn)行歸納。
教師歸納要點(diǎn):分析問題-寫出算法-編寫程序-上機(jī)調(diào)試。寫出算法是最重要的,沒有一個(gè)正確上佳的算法,就不可能編出優(yōu)秀的程序!
● 教學(xué)反思
算法是《信息編程加工》的靈魂,但是學(xué)生卻不太感興趣,所以這節(jié)課引入了一些比較有趣的例子,如“人獅過河”、“早上起床后的安排”,目的是讓學(xué)生認(rèn)識(shí)算法的概念和算法的重要性。這樣安排讓教學(xué)氣氛比較活躍,條理清楚,不同層次的學(xué)生都能積極參與到課堂討論中來。算法描述部分是基于高一數(shù)學(xué)模塊三中的已學(xué)知識(shí),知識(shí)點(diǎn)的難度小,所以整堂課學(xué)生的參與度較高。
本堂課內(nèi)容偏多,有些地方的討論不夠深入。第一,學(xué)生第一次接觸VB里控件的使用,對(duì)控件的使用方法一無所知。如果時(shí)間允許,可以再多舉一些例子,讓學(xué)生加深對(duì)控件的認(rèn)識(shí)。第二,本節(jié)課對(duì)學(xué)生上機(jī)調(diào)試關(guān)注不是很多,其實(shí)上機(jī)調(diào)試學(xué)生會(huì)出很多錯(cuò)誤。如代碼沒有添加在按鈕控件的click事件里面,代碼中的標(biāo)點(diǎn)符號(hào)容易輸成漢語的標(biāo)點(diǎn)符號(hào)等。學(xué)生認(rèn)識(shí)了程序代碼后,最好能親手輸入程序代碼。在這個(gè)過程中,可以認(rèn)識(shí)程序代碼的輸入規(guī)則,如VB程序里標(biāo)點(diǎn)符號(hào)如何輸入?教師也應(yīng)該多給一些輔導(dǎo)和幫助。