陳麗紅
[摘 要]高中信息技術課程“算法與程序設計”的主要教學任務是引導學生體驗用算法程序思想解決生活中的實際問題,養成計算思維的核心素養,提升創新思維能力,體驗算法和程序給我們的生活和工作所帶來的效率,從而讓學生體驗程序的作用和計算機的程序化思想。
[關鍵詞]計算思維;算法與程序設計;信息技術
[中圖分類號] G633.67 [文獻標識碼] A [文章編號] 1674-6058(2018)21-0049-02
高中信息技術課程標準修訂稿中指出,高中信息技術學科總體目標是發展學生核心素養,包括“信息意識”“計算思維”“數字化學習”和“信息責任”四個方面。“計算思維”是指在運用計算機科學領域的思想方法解決問題的過程中產生的一系列思維活動。算法是計算思維內容的一部分,算法思想與問題求解的思路是程序設計的重點。因此高中信息技術課中“計算思維”素養的培養任務主要落實在“算法與程序設計”課程中。
一、“計算思維”的感知
對于剛接觸“算法與程序設計”課程的學生來說,計算思維習慣是幾乎空白的,讓計算思維從無到有是培養的第一步。例如編寫程序實現求1+2+3+4+5+6+7+…+n之和,在教學過程中教師要讓學生形成如下三個計算思維習慣:
1.計算機是如何處理不確定的數的。例如以上的計算程序中,“n”是一個不確定的數,在程序設計中讓學生形成一個思維,即有不確定的數的程序必須有輸入語句或者相應的賦值語句,把不確定的數變成確定的數。
2.計算機的優勢就在于它可以不厭其煩地重復地工作,因此對于上述n個數的求和問題都用循環套用累加語句“s=s+i”,同時必須通過變量控制累加的值。
3.計算機具有強大的數學邏輯運算能力,這是人腦所無法比擬的,電腦的計算能力要比人腦強得多,不僅速度快而且非常準確,以上的計算程序中“n”數字再大,對計算機來說運算過程都是一瞬間的事情。
二、“計算思維”的強化與發散
習慣的養成不是靠一兩節課就能完成的,而是需要一個舉一反三、不斷強化的過程。例如同樣一個求和問題,可以舉出很多生活化的類似問題給學生強化訓練。比如舉貪吃蛇的例子:有一條貪吃的蛇,在它還是小寶寶的時候胃口也不大,但是隨著身體的長大,吃得也越來越多,它第一天吃1個饅頭,第二天吃2個饅頭,每天吃的饅頭都要比前一天多一個,與此同時,它的身體也在變長,他身體的長度正好是它吃的饅頭的總數。假設蛇寶寶剛出生的身體長度是1,請問到第n天吃完饅頭的蛇的身體有多長?
三、“計算思維”應用與綜合
要用計算機解決復雜的問題,一定要掌握程序設計基礎知識,掌握程序的三種基本結構,掌握算法(枚舉、解析、排序、查找等)的思想,掌握變量、一維數組、二維數組數據結構,在此基礎上舉一反三。“算法和程序設計”的基本知識講完后,可以通過上幾節應用性、綜合性較強的課讓學生應用所學的知識進行程序設計和解決實際問題。
1.情境引入——界定問題,抽象問題特征,建立結構模型。
教師用教學PPT和口頭語言提出本節課需要解決的問題:學校舉行元旦文藝會演,計算每個節目的得分,計分的規則是去掉最高分和最低分后再計算平均分。我們這節課就一起來編程解決這個問題。
提示:讓學生分析問題的特征、需要解決什么問題,目的是為了讓學生通過判斷,分析與綜合之前所學的知識設計解決問題的方案。
教師引導學生回顧所學的四大算法思想,并用PPT呈現。
2.引入課題——合理組織數據,選擇合適的算法
問題探究1:思考用什么算法解決問題,并用語言簡述程序算法。學生可能會答“查找算法”,首先找出所有數據中的最小值和最大值,然后在總和中減去最小值和最大值;也可能會答“排序算法”,先按照評分由高到低排序,然后去掉第一個和最后一個的評分再求和。學生的回答很多,教師要一一引導,讓學生思考用什么算法,最后在課堂上經過討論探究總結出兩種解決問題的算法。
問題探究2:用什么數據結構存儲評委的平均分?學生會答“變量”“數組”等。經過討論探究總結出用“數組”存儲數據比較合適。
3.用排序算法解決問題
教師呈現本節課的學習任務單和半成品的程序素材,讓學生自主完成任務。
【任務單1】問題描述:學校元旦文藝會演要計算每個節目的得分,計算的規則是去掉最高分和最低分后再計算其他評委的平均分。小明同學想用所學的VB知識編一個程序,他說用排序算法解決這個問題,即先把n個評委的數據輸入一維數組a(1 to n)中,然后對其進行從高到低的排序,再對數組的第2個到第n-1個數據進行求平均就可以了。根據給定的界面在text1 中輸入各評委的評分后在list1中顯示各評委的評分,單擊“評分”按鈕command1計算出節目評分,并在text2中顯示最后得分的值。
程序如下(請補充完整):
Dim a(1 To 50) As Single 用于存放評委評分的數組
Dim n As Integer 用于存放評委的個數
Dim s As Single
Private Sub Command1_Click( ) 先排序,然后對第2個到第n-1個的數據計算平均值
Dim i As Integer, j As Integer, m As Integer
Dim s1 As Single
排序算法的程序段
For m=2 To n-1 對第2個到第n-1個的數據計算總和
s = s + a (m)
Next m
s1 = 把第2個到第n-1個數據的平均值保存到s1的變量中
Text2.Text = Str(Int(s1 * 100 + 0.5) / 100) 把平均分的結果四舍五入,保留兩位有效數字
End Sub
Private Sub Form_Load( ) 窗體載入時初始化n 和s的值(程序略)
……
End Sub
Private Sub Text1_keypress(keyascii As Integer) 輸入評委評分,按回車鍵存入數組 a中(程序略)
……
End Sub
4.用查找算法找出最大值和最小值解決問題
【任務單2】問題描述:學校元旦文藝會演要計算每個節目的得分,計算的規則是去掉最高分和最低分后再計算其他評委的平均分。小芳同學想用所學的VB知識編一個程序,即先把n個評委的數據輸入一維數組a(1 to n)中,然后在數組中找出最大值和最小值,最后把所有分數的總和減去最大值和最小值后求平均分。請自行編程解決問題。
5.上交作業,教師展示并用語言表揚評價
根據學生作業的情況進行課堂批改講解。教師與學生一起總結利用計算機解決問題的過程與方法,并將其遷移到解決其他問題的方法與過程。
計算思維是信息時代人們解決問題的一個重要工具,培養學生用計算機解決生活中的問題的能力在當今這個信息化的時代尤為重要。計算思維的習慣會讓學生了解人類與計算機的區別,從而更好地駕馭當今的計算機以及用程序思想工作的機器,能讓學生感受到計算機是他們的第二雙手、第二雙腳,甚至是第二個大腦。
[ 參 考 文 獻 ]
張會,羅南超.計算思維在程序設計教學中的培養[J].阿壩師范高等專科學校學報,2013(3).
(責任編輯 周侯辰)