何勇
【摘要】 筆者認(rèn)為在高中程序設(shè)計模塊教學(xué)中教學(xué)重點應(yīng)放在程序算法教學(xué),而語句、語法教學(xué)應(yīng)該是我們程序算法教學(xué)的載體。教學(xué)中用自然語言描述算法的能力才是我們課堂教學(xué)對學(xué)生的核心培養(yǎng)目標(biāo),只要有一定的語句、語法知識,學(xué)生就能把自然語言描述算法用計算機(jī)語言表達(dá)出來。
【關(guān)鍵詞】 高中 信息技術(shù)課 編程處理模塊 教學(xué)設(shè)計
【中圖分類號】 G633.67 【文獻(xiàn)標(biāo)識碼】 A 【文章編號】 1992-7711(2017)05-169-02
1.教學(xué)設(shè)計應(yīng)淡化語句教學(xué),注重對算法的教學(xué)
教學(xué)實例1
怎樣求已知兩個數(shù)中的最大值和最小值?
第一步:給出具體的兩個數(shù)值(如:9和5),學(xué)生可以用數(shù)學(xué)方法很快比較出來(是9);
第二步:這時把要求提高一些:已知兩個數(shù)變?yōu)锳、B,要求學(xué)生比較;
學(xué)生可能用數(shù)學(xué)方法進(jìn)行討論:A>Bmax為A、min為B
A 第三步:要求學(xué)生用代數(shù)式把最大值計算出來? 這時學(xué)生就出現(xiàn)思考的難點,體會到找不到方法,教師可以把握時機(jī)引導(dǎo)一下學(xué)生,重點找出兩數(shù)的關(guān)系,得到兩個數(shù)中的最大值和最小值的關(guān)鍵是兩數(shù)的差,把最小值加兩數(shù)的差就能變成最大值,這個問題就解決了:MAX=(A+B+INT(A-B))/2,反知:MIN=(A+B-INT(A-B))/2 對于高中生初學(xué)者來說,算法還不在于優(yōu),而在于是否容易理解,讓學(xué)生能接受。 教學(xué)實例2 如:編程交換兩個變量x、y的值? 有兩種算法: 算法1: ①設(shè)一個中間變量t,將x中的數(shù)據(jù)送給變量t,即t=x; ②將y中的數(shù)據(jù)送給變量x,即x=y; ③將t中的數(shù)據(jù)送給變量y,即y=t. 在講授時把這種算法與交換兩杯水的實驗相結(jié)合,使知識通俗一些,學(xué)生很容易理解。 算法2: ①x=x+y; ②y=x-y; ③x=x-y. 通過三步計算完成交換,是一種優(yōu)的算法,學(xué)生會是一團(tuán)霧水,不知所云。所以在教學(xué)中要把握算法的深度,循序漸近,以學(xué)生理解作為課堂教學(xué)的標(biāo)尺。 2.程序設(shè)計教學(xué)設(shè)計要注意對基本算法的總結(jié) 在教學(xué)就必須要總結(jié)適用于高中生學(xué)習(xí)的理解的基礎(chǔ)算法。 求A、B兩整數(shù)相除后的整數(shù)部分的算法:INT(A/B)*B 求A、B兩整數(shù)相除后的余數(shù)的算法:余數(shù)=A-INT(A/B)*B 對一個數(shù)X的四舍五入算法:INT(X+0.5) 對一個數(shù)X的保留小數(shù)位N位并四舍五入算法:INT(X*10^N+0.5)/10^N 計算A、B兩數(shù)的最大值算法:MAX=(A+B+INT(A-B))/2 計算A、B兩數(shù)的最小值算法:MIN=(A+B-INT(A-B))/2 提取一個整數(shù)A中的十位數(shù)數(shù)值和百位數(shù)數(shù)值及N位數(shù)數(shù)值的算法: 十位數(shù)數(shù)值=A/10-INT(A/100)*10 百位數(shù)數(shù)值=A/100-INT(A/1000)*100 N位數(shù)數(shù)值=A/N-INT(A/(N*10))*N 判斷數(shù)A為奇數(shù)或偶數(shù)的算法:奇數(shù):A/2<>INT(A/2) 偶數(shù):A/2=INT(A/2) 判斷數(shù)A能否被B整除算法:整除:A/B=INT(A/B) 不能整除:A/B<>INT(A/B) 這些算法是后面編程的基礎(chǔ),對這些算法的教學(xué)一定要做到從簡單到復(fù)雜,再與一些具體的程序問題相結(jié)合,循序漸近,通過這些算法的講解和實踐,就可以提高學(xué)生學(xué)習(xí)編寫程序興趣,從而樹立在程序設(shè)計“重算法淡語法”的學(xué)習(xí)理念。 3.教學(xué)設(shè)計要注意教學(xué)的關(guān)鍵點,知識的突破口 程序設(shè)計教學(xué)有一些程序思維方式高中生不易理解,這就是教學(xué)的關(guān)鍵點,怎樣突破這樣的教學(xué)關(guān)健點是我們課堂教學(xué)的難點。應(yīng)緊緊抓住教學(xué)設(shè)計中的由易到難、循序漸近的法寶。 如:在for-next循環(huán)程序教學(xué)中,怎樣提高到累加應(yīng)用就是教學(xué)中的難點。 在實踐教學(xué)中可以采用由易到難、循序漸近的方式: 教學(xué)實例3 例:計算1+2+3+4的問題? S=0 X=1 S=s+x X=2 ‘關(guān)注X的變化可以寫為x=x+1 S=s+x X=3 ‘同樣可以寫為x=x+1 S=s+x X=4 ‘同樣可以寫為x=x+1 S=s+x PrintS End 引導(dǎo)學(xué)生觀察X的變化,是一種數(shù)數(shù)的累加程式,則程序變?yōu)?/p> S=0 X=0 X=x+1 S=s+x X=X+1 循環(huán)體 (重復(fù)執(zhí)行部分) S=s+x X=X+1 S=s+x X=X+1 S=s+x PrintS End 這樣就可以引導(dǎo)學(xué)生用學(xué)過的for-next循環(huán)構(gòu)建循環(huán)簡化程序: 明確循環(huán)體為:X=X+1 S=s+x 循環(huán)次數(shù)(循環(huán)體出現(xiàn)次數(shù))為4次, S=0 X=0 Fori=1to4
X=X+1
S=s+x
Nexti
PrintS
End
再進(jìn)一步觀察X與i的相似性,把程序間化為:
S=0
Fori=1to4
S=s+i
Nexti
PrintS
End
最后進(jìn)行擴(kuò)展求1+2+3+4……+100的和,這樣for-next循環(huán)程序教學(xué)中,怎樣提高到累加應(yīng)用的教學(xué)難點就贏刃而解了。
4.培養(yǎng)學(xué)生能夠獨立地編寫程序,是教學(xué)設(shè)計中最大的難點
在課堂教學(xué)中,一般采用以下幾步措施來逐漸使學(xué)生能夠獨立編一些簡單的程序。
第一步精講例題:詳細(xì)分析其算法,逐一列出解題步驟,給出完整程序;
第二步讓學(xué)生閱讀程序,寫出程序執(zhí)行結(jié)果。這一步十分關(guān)鍵,讀懂理解人家的程序是以后自行獨立編程的前提,一般精心挑選很多程序題,給學(xué)生來閱讀理解;
第三步讓學(xué)生做程序填充題和程序改錯題,即給出相應(yīng)程序,把其中一些關(guān)鍵地方留空,讓學(xué)生填充,或在程序中提供一些錯誤語句,要求學(xué)生修改正確;
第四步出一些類似例題的編程問題,讓學(xué)生模仿完成;
第五步讓學(xué)生獨立編寫簡單的程序。
教學(xué)實例4
為了讓學(xué)生獨立解決求s=1-1/2+1/3-1/4+……+1/99-1/100的程序,我首先詳細(xì)分析了求s=1+2+3+……+99+100的編程,程序如下:
S=0‘S的初始值為0
ForI=1to100step1‘循環(huán)100次,步長為1
S=S+i‘循環(huán)體
Nexti
Print“S=”;S
End
然后,我將上題中Fori=1to100step1這一語句略作改動
①Fori=1to100step2;求100以內(nèi)奇數(shù)之和
②Fori=0to100step2;求100以內(nèi)偶數(shù)之和
其余不變,讓學(xué)生閱讀程序并分析。
再將上題中S=S+i這一語句改成S=S+1/i,其余不變,那又如何呢?
學(xué)生很容易得出程序?qū)嶋H上是求S=1+1/2+1/3+……+1/100,進(jìn)一步引導(dǎo)學(xué)生,這個程序有什么問題?
再引導(dǎo)學(xué)生思考,如要求S=1-2+3-4+……+99-100的編程,上題中循環(huán)體S=S+i應(yīng)該怎樣改動?結(jié)合相關(guān)數(shù)學(xué)知識,學(xué)生很自然得到正確結(jié)果S=S+i*(-1)^(i+1)。有了上述的層層鋪墊,相信學(xué)生是能夠獨立完成s=1-1/2+1/3-1/4+……+1/99-1/100的程序代碼設(shè)計的。
在程序設(shè)計教學(xué)中,要明確重算法的設(shè)計思想,而在教學(xué)的內(nèi)容和深度上應(yīng)根據(jù)實際情況,不同層次學(xué)校的學(xué)生差異很大,分別加以調(diào)整。讓學(xué)生了解程序設(shè)計過程,重點撐握一些簡單的算法設(shè)計,能編一些簡單的程序??傊?,產(chǎn)生結(jié)論的推理過程往往比對結(jié)論的記憶更重要,掌握積極而活躍的思維方法,才是編程的根本,也是學(xué)生終身受用的本領(lǐng)。