淺談演算法
⑴ 淺談如何在面上中學開展《演算法與程序設計》教學
高中信息技術學科選修模塊《演算法與程序設計》內容枯燥、嚴謹,對於我們學生來說缺乏相關的知識背景,在高中階段才開始學習信息技術課難度大,也容易產生畏難情緒。那麼對於學生來說怎樣才能上好這門課呢?
一、首先教師應根據學生的實際情況,處理教材,分散難點
新課標指出:「學習本模塊旨在使學生進一步體驗演算法思想,了解演算法和程序設計在解決問題過程中的地位和作用;能從簡單問題出發,設計解決問題的演算法,並能初步使用一種程序設計語言編製程序實現演算法解決問題。」演算法是程序設計的靈魂,演算法教學是程序設計語言教學的基礎,程序設計語言教學是演算法教學的必要的延續。
教科版的《演算法與程序設計》,使用的編程語言是VisualBasic6.0。它和大多數程序設計語言書籍一樣,先花大量的篇幅介紹與VB語言開發環境及語法相關的基礎知識和基本概念,而後才開始程序三種基本結構的教學。教師根據學生的實際情況,對教材進行了處理、對內容進行調整,改變了教材中原有知識的邏輯結構順序。這樣學生可以邊用邊學,以用促學。
教師在每節課教學過程中都以簡單有趣的小問題為切入點,通過分析問題、設計演算法、編寫程序、調試運行,讓學生對演算法和程序設計有一個感性的認識,以降低學生的學習難度,並激發學生的學習興趣,觀摩、模仿、嘗試等階段逐漸到學生能獨立操作。開始選擇的例子比較簡單,如「在屏幕上輸出『studyVB』」、「已知三邊之長求三角形面積」、「計算前100個自然數之和」等。在此過程中適當忽略VB的可視化開發環境,其中數據的輸入只要求用inputbox()函數完成,數據的輸出直接用print語句在窗體完成,整個事件只要求由命令按鈕command1_click()來觸發,這樣的目的一方面是減少太多新知識對學生學習演算法思想的干擾,將難點分散,另一方面控制項少的程序也更容易上機調試通過,讓學生體驗成功的喜悅。
二、其次教師應聯系學生的數學知識,進行演算法與程序設計練習
演算法是解決問題的方法和步驟,計算機解決問題,必須嚴格地按步驟進行,這和我們平時解決問題是有區別的。因此在演算法設計中,應將解題的每一步都想清楚,對學生邏輯思維能力要求較高,許多同學剛開始不太適應。因此教師在教學過程中,精選教學案例,聯系學生的數學知識,從學生熟悉的或感興趣的數學問題出發,進行演算法與程序設計的練習。學生剛剛學習過海倫公式,在順序結構和選擇結構的教學中可採用「已知三邊長利用該公式來求三角形的面積」這個例子。因為學生有數學基礎,只要將解題步驟稍加修改就寫出如下演算法:
1.輸入三邊長;
2.求面積;
3.利用海倫公式s=p(p-a)(p-b)(p-c),p=a+b+c2,求出面積s;
4.輸出面積s;
5.結束程序。
根據此演算法編寫好程序,在調試運行中發現如果三邊長為10,10,30時就不會輸出結果。那麼是為什麼呢?學生很快就想到這樣的三條邊是組不成三角形的,怎麼改?自然是輸入的a、b、c要先滿足兩邊之和大於第三邊才能組成三角形的,所以要在第二步之前添加一句,「如果不能同時滿足,就輸出『輸入數據錯誤』,轉5;否則轉2」。通過以上的例子,既體會到了演算法的嚴謹性,學生也學會了順序和選擇兩種結構的演算法描述。
教師還用趣味數學題來激發學生的興趣,如在學習過程中老師通過講解「水仙花數」、「百雞百錢」、「韓信點兵」、「棋盤上的麥粒」、「雞兔同籠」等問題來激發學生的學習興趣,以使大家的積極性得到提高。
三、一題多變,提高學生對知識的理解能力和編程能力
學生固有的認識框框和習慣的思維方式是學好演算法與程序設計的一大障礙。只有多實踐才能體會和認識到計算機解決問題的過程。然而由於課時限制,不可能有太多的時間來進行這方面的訓練。教師如能恰當地運用「一題多變」和「一題多解」等方法,精心選擇一道例題,讓它由淺入深循序變化,引導學生分析和比較,總結解決問題的一般規律,對弄清基本概念,提高解題能力以及培養思維的靈活性都是有益的。例如,對於「求s=1+2+3+4+5+6的一個演算法」就可以拓展以解決一類問題,如s=12+22+32+42+52+62,s=1+12+13+14+15+16,s=1-2+3-4+5-6,s=1×2×3×4×5×6等許多問題。這樣引導學生對比for-next以及do-loop循環的語法及適用情況。通過「一題多變」和「一題多解」的教學手段,使課堂效率得到了大大地提高。
四、教師應授之以漁,教會學生自己調試程序
《演算法與程序設計》模塊是作為計算機應用的技術基礎設置的,不能忽視技術,但我們強調的技術不再是以前那種「軟體說明書」式的操作。實際上對學生來說,犯的錯誤具有共性,主要是標點符號錯誤,比如「:」和「;」,關鍵詞與變數名之間沒有空格,語句書寫不完整,有if沒有endif,有for沒有next,變數名、對象名引用時出現拼寫錯誤等,其實學生只要掌握一點調試、運行程序的方法就能大大提高上機效率。通過訓練學生不但能自己調試程序,更能加深對程序的理解,尤其是到循環結構以後,這種作用就更明顯了,而且這種能力完全可以遷移到今後的學習和生活中去。
新課程目前還處在實驗階段,存在著很大的探索空間。對學生來說,激發他們的學習興趣、提高他們的積極性、不斷進行創新的同時提高教師自身的信息素養水平。教師不再只是教學者,更應該成為研究者和學習者,教師應加強教學反思,才能提高教學水平。