【摘 要】本文針對高中信息技術(shù)課程的算法與程序設(shè)計模塊教學(xué)難的問題,論述算法與程序設(shè)計模塊教學(xué)策略:根據(jù)教學(xué)內(nèi)容因材施教,采用任務(wù)驅(qū)動教學(xué)法;充分利用第一節(jié)課,加強(qiáng)算法思維訓(xùn)練;與其他學(xué)科融合,夯實(shí)程序設(shè)計語言基礎(chǔ);對知識進(jìn)行拓展延伸,提高學(xué)生的綜合實(shí)踐能力。
【關(guān)鍵詞】算法 程序設(shè)計 教學(xué)探究
【中圖分類號】G? 【文獻(xiàn)標(biāo)識碼】A
【文章編號】0450-9889(2021)18-0140-02
高中信息技術(shù)課程的算法與程序設(shè)計模塊,一直以來都是教學(xué)的重難點(diǎn),程序設(shè)計的概念和思維方式對學(xué)生來說基本都是全新的,比較難理解,學(xué)生不知道如何運(yùn)用這種思維來分析解決問題,而教師采用傳統(tǒng)的講授法教學(xué)效果不佳。高中算法與程序設(shè)計課程的教學(xué)目標(biāo)是讓學(xué)生在學(xué)習(xí)過程中,運(yùn)用計算機(jī)思維與方法解決生活和學(xué)習(xí)的實(shí)際問題,鼓勵學(xué)生將所學(xué)的知識積極地應(yīng)用到各項(xiàng)實(shí)踐活動中,在實(shí)踐中創(chuàng)新,在創(chuàng)新中實(shí)踐;對算法和程序設(shè)計的作用和地位有清晰的認(rèn)識,進(jìn)一步體驗(yàn)算法思維;掌握使用一種程序設(shè)計語言編制程序的能力。因此,在算法與程序設(shè)計的教學(xué)中,最重要的是進(jìn)行基本方法的教學(xué),加強(qiáng)學(xué)生的算法思維。本文基于筆者對算法與程序設(shè)計模塊教學(xué)的思考,提出相關(guān)教學(xué)策略,以便和同行交流與探討。
一、根據(jù)教學(xué)內(nèi)容因材施教,采用任務(wù)驅(qū)動教學(xué)法
為了激發(fā)學(xué)生的學(xué)習(xí)主動性,調(diào)動學(xué)生的學(xué)習(xí)激情和內(nèi)在潛力,在教學(xué)過程中,教師可采用基于“任務(wù)驅(qū)動”的小組協(xié)作學(xué)習(xí)的教學(xué)方法。任務(wù)驅(qū)動教學(xué)法是一種建立在建構(gòu)主義學(xué)習(xí)理論基礎(chǔ)上的多維互動式教學(xué)法,在學(xué)生完成任務(wù)的過程中,以學(xué)生為主體,是一種探究式的學(xué)習(xí)模式,教師可以根據(jù)學(xué)生的實(shí)際設(shè)計任務(wù),使學(xué)生處于積極的學(xué)習(xí)狀態(tài),學(xué)會運(yùn)用已有的知識提出方案、解決問題,從中體驗(yàn)成就感和優(yōu)越感,從而增強(qiáng)自信心。這種方法能夠很好地培養(yǎng)學(xué)生的自學(xué)能力、合作與創(chuàng)新精神,極大地提高學(xué)生的動手能力。
例如,在“運(yùn)算符與表達(dá)式”課程中,對重難點(diǎn)內(nèi)容“算術(shù)運(yùn)算符和表達(dá)式”采用講與練結(jié)合、分組討論、練習(xí)搶答等多種教學(xué)形式,學(xué)生參與度高,能較好地掌握該內(nèi)容;對“邏輯運(yùn)算符和表達(dá)式”亦采用講練結(jié)合方法,加強(qiáng)學(xué)生的理解;對“關(guān)系運(yùn)算符和關(guān)系表達(dá)式”的教學(xué)內(nèi)容采用問題驅(qū)動式,讓學(xué)生帶著問題自主學(xué)習(xí),通過練習(xí)檢驗(yàn)學(xué)習(xí)效果;對“表達(dá)式的執(zhí)行順序”,通過講練結(jié)合、學(xué)生分組討論進(jìn)行學(xué)習(xí)。“運(yùn)算符與表達(dá)式”課程根據(jù)知識點(diǎn)的難易程度及重要程度的不同,可分別采取不同的教法、學(xué)法。通過鞏固練習(xí)、師生交流檢驗(yàn)教學(xué)效果,筆者發(fā)現(xiàn)學(xué)生基本都能較好理解和掌握本節(jié)課內(nèi)容,教學(xué)效果良好,也為后續(xù)語句的學(xué)習(xí)打下堅(jiān)實(shí)的基礎(chǔ)。
二、充分利用第一節(jié)課,加強(qiáng)算法思維訓(xùn)練
在第一節(jié)課里,教師可以從生活實(shí)例出發(fā),激發(fā)學(xué)生的學(xué)習(xí)興趣,慢慢滲入計算機(jī)算法思維,讓零基礎(chǔ)的學(xué)生了解并掌握計算機(jī)解決問題的方法與步驟,認(rèn)識到算法的重要性,從而深刻體會算法是程序設(shè)計的靈魂。
例如,第一節(jié)課《如何用計算機(jī)解決問題》,以“韓信點(diǎn)兵”這個例子作為主線,分三步走,第一步和第二步先了解是如何解決“韓信點(diǎn)兵”這個問題,讓學(xué)生從不同的角度思考,并尋求解決問題的途徑和答案;第三步引入算法的概念,掌握用計算機(jī)解決問題的方法與步驟。
第一步,方程式解法。學(xué)生想到的方法一般是這種方法。設(shè)S為滿足要求的一個數(shù),S滿足條件為被3除余2,被5除余3,被7除余2,這樣的數(shù)即為所求的一個數(shù)。得出議程方程式“S=A*3+2,S=B*5+3,S=C*7+2”,往往此時學(xué)生發(fā)現(xiàn)無法求解。
第二步,介紹明朝數(shù)學(xué)家程大位《算法統(tǒng)宗》的口訣,“三人同行七十(70)稀,五樹梅花二一(21)枝。七子團(tuán)圓正半月(15),除百零五(105)便得知”。即用3的余數(shù)乘70,5的余數(shù)乘21,7的余數(shù)乘15,三者相加,若超過105,就減掉105,一直減到得數(shù)比105小為止。這樣,所得的數(shù)就是最小解。最小解加上105的正整數(shù)倍都是解。學(xué)生可以根據(jù)口訣直接算出答案。
第三步,著重導(dǎo)入算法的概念、特征、描述方法,并且采用算法的三種方法來描述“韓信點(diǎn)兵”的解題步驟,也就是描述算法。
根據(jù)算法描述從自然語言到流程圖,到偽代碼,讓學(xué)生逐步靠近計算機(jī)語言,最后把偽代碼修改完善成一個可以到VB上運(yùn)行的源代碼程序(如圖1所示),從而得到“韓信點(diǎn)兵”的解,和第二步的解是相一致的。讓學(xué)生感嘆古人智慧的同時,也認(rèn)識算法在程序設(shè)計里的關(guān)鍵作用,并掌握描述算法的三種方法。這樣的學(xué)習(xí)過程,讓學(xué)生對計算機(jī)語言不再感到陌生和神秘,并逐漸形成計算機(jī)思維,為計算機(jī)程序設(shè)計的相關(guān)知識學(xué)習(xí)做好鋪墊。
三、與其他學(xué)科相融合,夯實(shí)程序設(shè)計語言基礎(chǔ)
(一)與數(shù)學(xué)學(xué)科相融合
算法知識的講解可以和數(shù)學(xué)里的算法內(nèi)容進(jìn)行融合教學(xué)。在程序設(shè)計里,數(shù)據(jù)的表示與處理的知識中有關(guān)常量變量、數(shù)據(jù)類型、運(yùn)算符與表達(dá)式、函數(shù)等內(nèi)容,都與數(shù)學(xué)有著千絲萬縷的聯(lián)系。結(jié)合學(xué)生已有的數(shù)學(xué)基礎(chǔ)知識來講解程序設(shè)計知識,能讓學(xué)生快速掌握程序設(shè)計里相應(yīng)的知識點(diǎn)。
例如,在“運(yùn)算符與表達(dá)式”講解過程中,算術(shù)運(yùn)算符里只有“加減”兩種符號與數(shù)學(xué)里的符號表達(dá)一樣,其他運(yùn)算符號不一樣,而且還增加了求余和整除兩種運(yùn)算符,但運(yùn)算級別與數(shù)學(xué)是一致的。通過對比學(xué)習(xí),可以讓學(xué)生在原有的數(shù)學(xué)基礎(chǔ)上更好更快地掌握這部分的內(nèi)容(見表1),同時通過實(shí)例來加深學(xué)生的記憶。同理,關(guān)系表達(dá)式、邏輯表達(dá)式等VB常用表達(dá)式,都可以用與數(shù)學(xué)融合教學(xué)的方法來進(jìn)行講解,強(qiáng)調(diào)對比學(xué)習(xí)。表達(dá)式是代碼的重要組成部分,對編程的理解和掌握起到關(guān)鍵性的作用。
(二)與英語學(xué)科相融合
在開始算法與程序設(shè)計教學(xué)之初,教師往往會舉一些代碼實(shí)例,即使進(jìn)行大量的注釋,仍讓學(xué)生們倍感迷茫。但是,這些代碼來自英語詞匯,此時可以引導(dǎo)學(xué)生學(xué)習(xí)代碼閱讀,與英語學(xué)科進(jìn)行融合。VB常用窗體(Form)、命令按鈕(Command Button)、文本(Text)、標(biāo)簽(Label)控件里的屬性、方法與事件的講解,可以結(jié)合英文單詞進(jìn)行理解。程序的三個基本結(jié)構(gòu)中,選擇結(jié)構(gòu)語句if...then...else、循環(huán)結(jié)構(gòu)語句for...to...next和do...while等,及一些常用的語句print、end和函數(shù)left()、mid()等,都可以采用這種方式。在程序結(jié)構(gòu)講解時,可以讓學(xué)生根據(jù)實(shí)例及內(nèi)容難易程度,對語句模塊、程序的三種結(jié)構(gòu)模塊進(jìn)行閱讀,并且逐步深入,掌握重難點(diǎn)。這三大內(nèi)容在算法與程序設(shè)計模塊中占主體位置,其中,程序結(jié)構(gòu)模塊的循環(huán)結(jié)構(gòu)是重點(diǎn)難點(diǎn),針對該內(nèi)容采取多講多練的方法,一步步剖析循環(huán)結(jié)構(gòu)的執(zhí)行流程,反復(fù)講解典型例子。通過分模塊進(jìn)行不同層次的學(xué)習(xí),逐一突破重難點(diǎn),學(xué)生能更好地掌握算法與程序設(shè)計選修模塊的內(nèi)容。
四、對知識進(jìn)行拓展延伸,提高學(xué)生的綜合運(yùn)用能力
拓展延伸教學(xué)是教師從基本的知識點(diǎn)出發(fā),通過經(jīng)典案例對知識進(jìn)行延伸與擴(kuò)展,培養(yǎng)學(xué)生的發(fā)散思維,提高學(xué)生的創(chuàng)造力以及綜合運(yùn)用能力,營造良好的課堂氛圍。
例如,對累加的編程問題,s=1+2+3+…+100,在循環(huán)語句的執(zhí)行過程中,有一個累加的公式:s=s+i,可以對增量step進(jìn)行適當(dāng)變化,step為2時就是s=1+3+5+……+99的公式,再對循環(huán)變量i進(jìn)行變通,變成s=s-i,s=s+1/i等此類型的題目;再把加減變成乘法得出階乘公式s=s*i(注意:s初值不能為0)。在此案例教學(xué)中,有時候代碼模板就相當(dāng)于巨人的肩膀,學(xué)生可以在此基礎(chǔ)上通過補(bǔ)充修改程序模板中的關(guān)鍵代碼,逐步認(rèn)識此類問題并找出規(guī)律性,歸納出一般格式加以變通。
算法與程序設(shè)計的課程教學(xué),需要教師有極高的教學(xué)水平和綜合的教學(xué)藝術(shù)。只有不斷學(xué)習(xí)、不斷總結(jié)、不斷創(chuàng)新,教師才能提高自身的教育教學(xué)水平,達(dá)到理想的教學(xué)效果。
【參考文獻(xiàn)】
[1]高士娟,曹恒來.算法與程序設(shè)計[J].教學(xué)探析教與學(xué),2013(11).
[2]于曉強(qiáng),趙秀巖,閆丕濤.計算機(jī)程序設(shè)計課程中計算思維能力的培養(yǎng)[J].計算機(jī)教育,2011(13).
[3]吳斌.高中信息技術(shù)選修模塊《算法與程序設(shè)計》教學(xué)探究[J].中小學(xué)電教,2006(10).
【作者簡介】劉淀梅(1971— ),女,壯族,廣西貴港人,碩士研究生,一級教師,研究方向?yàn)樾畔⒓夹g(shù)。
(責(zé)編 蘇 羽)