羅月
(廣西省百色市凌云縣中學,廣西 百色 533199)
百年大計,教育為本。教育是一個國家長久發展的基礎與動力,教育水平的高低直接影響著一個國家人才的數量和質量,教育的發展逐漸成為各個國家關注的焦點。隨著社會的進步與發展,新一輪的科技革命在全世界拉開序幕,互聯網、云計算、人工智能、大數據等現代化的信息技術正在深刻地改變著人類的思維、生產、生活和學習方式,國際競爭日益激烈,人才培養和爭奪成為全世界的焦點[fll0《教育信息化十年發展規劃(2011-2020 年)》的發展目標之一是“信息技術與教育融合發展的水平顯著提高”,讓信息化對教育變革的促進作用充分顯現,最終實現教育信息化整體上接近國際先進水平的總目標。《國家中長期教育改革和發展規劃綱要(2010-2020 年)》明確指出信息技術在教育發展中的重要作用:“信息技術對教育發展具有革命性影響,必須予以高度重視”。縱觀全球,在信息化革命的浪潮下,各個國家都把教育信息化提升到國家戰略的層面,教育信息化己經成為推動教育現代化的重要動力,信息技術課程的良好實施在教育發展中的作用不言而喻。
《普通高中信息技術課程標準(2017 年版)》將信息技術課程分為必修、選擇性必修、選修三類。必修課程是依據是學生升學、個性化發展需要設計的;選擇性必修為學生將來進入高中繼續開展與信息技術相關方向的學習以及應用信息技術進行創新、創造提供條件;選修是為滿足學生的興趣愛好、學業發展、職業選擇而設計的自主選修課程,為學校開設信息技術校本課程預留空間。“算法與程序實現”是新課標中模塊一的子模塊。
現有的“程序設計”課程教材大都只有一些簡單的例題和習題,缺少對綜合問題算法的分析和研究。筆者通過一些典型的案例教學,對學生特別感興趣而又具有一定難度和復雜性的綜合性問題進行研究型教學,提高學生的程序設計能力。
通過講授實際生活中的一些經典的案例,如約瑟夫問題、漢諾塔問題、表達式的求值、燙手的山芋問題、哈夫曼編碼、多岔路口交通信號燈問題、七橋問題、教學計劃的編制和網絡路由選擇協議等,在教學中引入順序表、單鏈表、雙鏈表、循環單鏈表和循環雙鏈表、堆棧、隊列、二叉樹和圖等經典的數據結構。通過講授這些常用數據結構的數據存儲方式、基本操作和應用場景等提高課程教學的深度。
在“程序設計”課程教學中,當學生學習完各種程序控制結構(如順序結構、選擇結構和循環結構)、數組、函數和結構體后,就需要加強算法分析和設計的教學強度,如從時間和空間這兩個維度強化算法的優化和程序的優化概念等。計算機常用的算法很多,筆者選取了如下5 個常用算法。
1.一般數據組織算法。主要講解和分析查找算法(順序查找、二分查找和分塊查找)、排序算法(直接插入排序、折半插入排序、希爾排序、簡單交換排序、快速排序、直接選擇排序、堆排序、歸并排序)、字符串匹配算法(字符串匹配的典型算法和KMP 算法)等。
2.算法設計中函數遞歸調用和函數嵌套調用的應用。主要采用一些典型的案例,如漢諾塔問題,求n 個數的階乘n!,求x 的n 次方。函數調用中重點需要考慮函數的參數傳遞,函數的參數傳遞主要有3 種方法:如果傳遞的是基本數據類型參數,通常按值傳遞比較有效;如果傳遞的是非基本數據類型參數,并且在函數中要改變參數,可選用指針來傳遞;如果傳遞的是非基本數據類型參數,在函數中不需要改變參數,可采用對常量的引用來傳遞。
3.枚舉算法、遞推算法和迭代算法等。主要講解和分析整幣兌零等典型問題。在整幣兌零等實際案例中,可以讓學生領略遞推設計相對于枚舉設計的優越性。應用遞推設計求解,關鍵在于根據問題進行歸納與探索,尋求符合要求的遞推關系。
4.用回溯法求解“馬走日問題”。回溯法是一種比枚舉“聰明”的搜索技術,在搜索過程中動態地產生問題的解空間,當發現某節點肯定不包含問題的解時,立即向其祖先節點回溯,縮減無效操作,可大大提高搜索效率。
5.動態規劃方法與貪心算法。主要講解和分析0-1 背包問題。動態規劃方法與貪心算法都是求解最優化問題的常用算法,但它們之間是有區別的:動態規劃方法著眼全局,其結果總是最優的,而貪心算法著眼于局部,有時并不能求得全局的最優解。
縱觀現有的“程序設計”課程教材,幾乎都沒有涉及“學生編寫程序的思路和過程是怎樣的了有沒有提高編寫程序代碼能力的方法,有沒有有效的學習程序設計方法了”等問題。這部分內容其實非常重要,需要教師多思考,多與學生進行交流和溝通,尋求一種適合自己和學生的教學方案。在研究型教學中,要求學生主動地運用在大腦中所構建的知識圖譜,采用計算思維的方式來分析實際問題、建立計算機模型、編寫和調試程序,在調試程序過程中不斷地完善程序,擬合實際問題,提升程序設計能力。同時在解決實際問題的過程中,增強學生的成就感,使學生產生濃厚的程序設計興趣,這樣學生就可以不斷地獲取新知識,在大腦中構建更全的知識圖譜,產生思想碰撞的火花,逐漸升華所形成的創新意識和創新能力。
綜上所述,高中《算法與程序設計》模塊的設置是時代發展的需要、人才培養的需要,對學生計算思維能力及其他方面能力的培養有極大的促進作用,將是信息技術教學中的“點睛之筆”。