摘要:本文針對高中階段目前普遍存在的“算法與程序設(shè)計”模塊難教難學(xué)的現(xiàn)象,結(jié)合普通高中信息技術(shù)新課程標(biāo)準(zhǔn)的要求,闡述了“易學(xué)、樂學(xué)、巧學(xué)、悟?qū)W”的教學(xué)策略。同時用具體的案例說明了“算法與程序設(shè)計”模塊的教學(xué)對實現(xiàn)信息技術(shù)課程核心價值、促進(jìn)學(xué)生思維發(fā)展的作用。
關(guān)鍵詞:信息技術(shù);算法;程序設(shè)計;教學(xué)策略
“算法與程序設(shè)計”模塊是普通高中信息技術(shù)課程的重要選修模塊之一,是普通高中信息技術(shù)課程發(fā)展過程中積淀的精華。在這一模塊中,對算法的體驗和設(shè)計算法解決簡單問題應(yīng)是教學(xué)的第一重點。祝智庭教授認(rèn)為,學(xué)生在學(xué)習(xí)普通高中信息技術(shù)課程的過程中,批判性思維、算法思維和創(chuàng)新思維是三種“實用思維”。通過“算法和程序設(shè)計”這一模塊的學(xué)習(xí),學(xué)生不僅能掌握算法與程序設(shè)計的一般知識和技能,而且還能讓“算法思維”和“創(chuàng)新思維”得到有針對性的培養(yǎng)和訓(xùn)練,從而促使其進(jìn)一步發(fā)展,讓學(xué)生逐步形成“像計算機科學(xué)家一樣思考問題”的能力。
可是,目前普遍的現(xiàn)象是算法與程序設(shè)計模塊教學(xué)讓很多老師感到頭疼。學(xué)生通常也認(rèn)為這部分內(nèi)容枯燥而乏味,所以一些地方選修這一模塊的人數(shù)比較少。如何化解學(xué)生對這一模塊學(xué)習(xí)的畏懼心理呢?
我根據(jù)利用Pascal語言開展算法與程序設(shè)計教學(xué)的過程和經(jīng)驗,總結(jié)了“易學(xué)、樂學(xué)、巧學(xué)、悟?qū)W”的教學(xué)策略,這一策略的實施,取得了較為良好的效果。
● 易學(xué):突出算法體驗,降低入門難度
在進(jìn)入程序設(shè)計這個單元的學(xué)習(xí)之前,絕大部分學(xué)生對程序設(shè)計和Pascal語言一無所知,甚至?xí)X得程序設(shè)計很枯燥很難。學(xué)生的學(xué)習(xí)產(chǎn)生困難的原因之一是對課程不了解,認(rèn)為程序設(shè)計非常深奧,難以理解。因此,在這一模塊的第一節(jié)課,我并沒有直接與學(xué)生討論程序設(shè)計的問題,而是通過一些有趣的,與信息技術(shù)和學(xué)習(xí)內(nèi)容相關(guān)的故事或事例來吸引學(xué)生的注意力,然后通過一些簡單的例子,讓學(xué)生體驗“通過設(shè)計程序解決問題”的過程。例如問題:甲、乙、丙三人共有24元錢,先由甲分錢給乙、丙兩人,所分給的數(shù)與各人已有數(shù)相同;接著由乙分給甲、丙,分法同前;再由丙分錢給甲、乙,分法亦同前。經(jīng)上述三次分錢之后,每個人的錢數(shù)恰好一樣多。求原先各人的錢數(shù)分別是多少?
這個問題有一定的趣味性,而且對高中學(xué)生來說不難理解,學(xué)生通常都能夠通過“逆推”的方法得出結(jié)果。這個“逆推”的過程就是解決問題的“算法”,把“逆推”過程中的公式寫成表達(dá)式的形式,加上程序首部的變量說明就是一個完整的程序。
在我的教學(xué)設(shè)計中,這節(jié)課的重點是讓學(xué)生體驗計算機解決問題的過程,了解計算機解決問題的算法,而不是讓學(xué)生掌握程序設(shè)計語言的語句和語法。所以,我把事先寫好的程序通過網(wǎng)絡(luò)發(fā)送給所有學(xué)生,并且告訴學(xué)生運行程序的方法,讓學(xué)生直接運行程序。當(dāng)學(xué)生在計算機上看到這段程序運行結(jié)果時,欣喜之情溢于言表,學(xué)生覺得“設(shè)計程序解決問題”原來就這么簡單!通過這樣的課,學(xué)生認(rèn)識了程序,體驗了程序設(shè)計的過程,看到了程序運行的結(jié)果。這樣的課堂上,學(xué)生體驗到的是在進(jìn)行思維訓(xùn)練,而不是去堆積枯燥的代碼,逐漸消除了畏難情緒,對后續(xù)的學(xué)習(xí)充滿了期待。
把算法的體驗和設(shè)計作為課程的重點,不僅有利于降低學(xué)生的學(xué)習(xí)難度,同時也能使學(xué)生的“算法思維”得到進(jìn)一步的訓(xùn)練和培養(yǎng),讓學(xué)生在解決問題的過程中能夠主動、合理地設(shè)計算法,尋求解決問題的最佳途徑,讓學(xué)生的“深層次信息素養(yǎng)”得到提升,逐步形成“像計算機科學(xué)家一樣思考”的能力,這也正是信息技術(shù)課程的核心價值。
● 樂學(xué):分解復(fù)雜問題,培養(yǎng)學(xué)生興趣
我們都知道,當(dāng)學(xué)生對所學(xué)的內(nèi)容產(chǎn)生興趣時,就會從內(nèi)心發(fā)出向往和強烈的求知欲望,產(chǎn)生積極、主動的學(xué)習(xí)動機。培養(yǎng)學(xué)生的興趣,除了引用趣味性的案例,還可以在教學(xué)過程中加以引導(dǎo)。在教學(xué)過程中,通過巧妙地設(shè)置層層遞進(jìn)的問題,引導(dǎo)學(xué)生自主學(xué)習(xí),讓學(xué)生在不斷突破“障礙”的過程中感受學(xué)習(xí)的快樂,使學(xué)生在興趣的“驅(qū)使”下,對程序設(shè)計樂此不彼。例如,在“循環(huán)結(jié)構(gòu)”的學(xué)習(xí)過程中,我在兩課時的內(nèi)容之間給學(xué)生設(shè)置“障礙”。第一課時,我提問:在屏幕上畫一個由10個圈圈組成的圖形。課堂伊始我便把在屏幕上畫一個圓的程序交給學(xué)生,此時學(xué)生很快就能猜到Circle函數(shù)中各個參數(shù)的含義,在他們進(jìn)一步了解了屏幕分辨率與像素點的分布后,基本上都能使用手工修改圓心坐標(biāo)或半徑的方式完成這個任務(wù)。圖1為學(xué)生編程繪制的作品。
雖然學(xué)生采用的是“手動畫圓”的辦法,但從學(xué)生畫圓的結(jié)果來看,學(xué)生不僅畫出了圓,而且對于圓的大小和位置做了精心的設(shè)計,當(dāng)我展示這些由“圈圈”組成的美麗圖案時,學(xué)生發(fā)出了驚嘆。由此可以看出,學(xué)生在程序設(shè)計的過程中不僅理解了相關(guān)的知識,還融入了自己的創(chuàng)意,這樣的學(xué)習(xí)過程顯然是饒有趣味的。
到了第二課時,我提出這樣的問題:畫一個由100個圓組成的圖形怎么畫?當(dāng)學(xué)生認(rèn)為過程實在是太繁瑣而面露難色時,我告訴學(xué)生:“凡是重復(fù)性的工作,計算機一般都會有解決的辦法,重復(fù)就是循環(huán)。”我接著展示了用循環(huán)語句畫10個同心圓的程序,學(xué)生看懂程序后馬上會說:“老師,別說100個圓,1000個、10000個都沒有問題!”
“老師,如何同時改變圓心坐標(biāo)和半徑呢?”有學(xué)生提出了這個問題。結(jié)合學(xué)生學(xué)過的解析幾何知識,一個通過循環(huán)變量計算圓心坐標(biāo)和半徑的表達(dá)式很容易就得出來了。圖2為學(xué)生作品。
我在處理“循環(huán)結(jié)構(gòu)”這一部分內(nèi)容時,沒有讓學(xué)生一步到位達(dá)成最終的學(xué)習(xí)目標(biāo),因為學(xué)生的接受能力存在困難。我將學(xué)習(xí)目標(biāo)分成兩個,讓學(xué)生在獲得成功、產(chǎn)生學(xué)習(xí)成就感之時學(xué)習(xí)興趣得以激發(fā)。
創(chuàng)新思維通常以靈活性、獨創(chuàng)性、流暢性、細(xì)致性或發(fā)散思維為特征。在這兩節(jié)課的學(xué)習(xí)過程中,學(xué)生通過解決“畫圈圈”這一問題,不僅學(xué)習(xí)了Pascal語言中函數(shù)、表達(dá)式、循環(huán)結(jié)構(gòu)等知識,還借助解析幾何的知識,發(fā)揮了學(xué)習(xí)的主動性,得到了具有創(chuàng)造性的學(xué)習(xí)結(jié)果。
算法的多樣性、程序設(shè)計的靈活性,為學(xué)生進(jìn)行獨創(chuàng)性的思維活動、編寫個性化的程序提供了有效的平臺,也為發(fā)展他們的創(chuàng)新思維創(chuàng)設(shè)了條件。事實證明,我們只要教會學(xué)生必要的程序設(shè)計知識,學(xué)生就能編寫出很多個性化的程序。這個新想法、新程序不斷涌現(xiàn)的過程,就是學(xué)生積極思考,創(chuàng)新求異的過程。
● 巧學(xué):構(gòu)建課程體系,化解學(xué)習(xí)困難
對于算法與程序設(shè)計這一模塊,我沒有照搬教材,而是利用eClass網(wǎng)絡(luò)教學(xué)平臺,根據(jù)學(xué)生的特點,對教材進(jìn)行了二次處理,構(gòu)建了自己的“網(wǎng)上教室”。在我的算法與程序設(shè)計網(wǎng)上教室中有學(xué)習(xí)范例、學(xué)習(xí)資源、交流空間和評價工具。學(xué)生的學(xué)習(xí)主要通過參考范例、研究資源、相互交流完成,學(xué)生利用評價工具提交作業(yè)。教師對作業(yè)進(jìn)行及時的批改、展示和點評,學(xué)生也可以相互鑒賞,互相點評。
圖3是“畫圈圈”學(xué)習(xí)內(nèi)容的一部分。在我的“網(wǎng)上教室”中,“程序設(shè)計”這部分的內(nèi)容與現(xiàn)行教材完全不同。沒有傳統(tǒng)教材中,先介紹數(shù)據(jù)類型、命令和函數(shù),再介紹語法、算法的知識呈現(xiàn)順序,而是以問題為核心,以解決問題的思想方法為主線,以解決問題的過程為載體,讓學(xué)生在活動的過程中學(xué)習(xí)算法與程序設(shè)計的相關(guān)知識。
例如,在“畫圈圈”這一例子中,除了給出的范例之外,在“網(wǎng)上教室”的學(xué)習(xí)內(nèi)容中還提供了相關(guān)的資源鏈接,學(xué)生可以通過閱讀、研究這些資源來學(xué)習(xí)相關(guān)的知識(而不是通過教師的說教或講解)。
命令、函數(shù)和語法都是“死”的,解決問題的“思想”和算法卻是活的。應(yīng)該讓學(xué)生從閱讀程序、理解算法入手,嘗試修改程序,進(jìn)而解決問題。這樣的學(xué)習(xí)過程,沒有“滿堂灌”的講解,教師只需對關(guān)鍵的內(nèi)容稍作說明;學(xué)生也不用面對大量枯燥的文字,只要帶著問題有針對性地閱讀,在“網(wǎng)上教室”的學(xué)習(xí)過程中,我常常能夠感受到學(xué)生愉悅的心情和思想的火花。
● 悟?qū)W:及時因勢利導(dǎo),提升情感體驗
根據(jù)課程目標(biāo)的要求,我們的教學(xué)不僅要讓學(xué)生掌握一定的知識和技能,體驗解決問題的過程和方法,培養(yǎng)和發(fā)展學(xué)生的思維能力,同時還要讓學(xué)生獲得愉快的情感體驗,形成科學(xué)的態(tài)度,養(yǎng)成正確的價值觀。
在學(xué)習(xí)程序設(shè)計課程的起步階段,學(xué)生還是碰到不少困難。由于是初次接觸Pascal語言,沒有編寫程序的經(jīng)驗,所以學(xué)生會被各種簡單的錯誤所困擾,如保留字拼寫錯誤、用了中文標(biāo)點、漏了分號和冒號等。但是當(dāng)學(xué)生一個一個改正錯誤,直到程序能夠正常運行的時候,他們感到開心極了。
學(xué)生編寫的程序,往往含有比較多的邏輯錯誤。對于其中比較典型的錯誤,教師可以挑選出來,引導(dǎo)學(xué)生一起糾正。但是如果對所有的錯誤教師都要一一糾正,不僅占用太多時間而且很不必要。教師可以要求學(xué)生將編寫的程序輸入到計算機,進(jìn)行上機調(diào)試。對于語法上的錯誤,教師可以幫助解決;對于邏輯上的錯誤,如得到了不正確的結(jié)果,應(yīng)該讓學(xué)生獨立分析、修正、改進(jìn)程序。
對于程序設(shè)計的學(xué)習(xí),學(xué)生的收獲并不僅僅在知識和技能上。幫助學(xué)生從程序設(shè)計的學(xué)習(xí)過程中總結(jié)出學(xué)習(xí)的規(guī)律,提煉出人生的感悟,進(jìn)而把這些收獲遷移到其他學(xué)科的學(xué)習(xí),甚至影響其一生。學(xué)生走出了我們的教室,即使忘記了所學(xué)的語句或程序,忘記了程序設(shè)計的方法,但能夠留下比這些更為寶貴的精神財富,這也許就是新課程所追求的第三維目標(biāo)吧。
恰當(dāng)?shù)靥幚碚n程的內(nèi)容,采用有效的策略激發(fā)學(xué)生的興趣,引導(dǎo)學(xué)生自主學(xué)習(xí),并對學(xué)生的學(xué)習(xí)過程作出及時準(zhǔn)確的評價,這樣可以使我們的課程得到順利的實施。