《計算機(jī)程序設(shè)計教學(xué)中的抽象思維能力培養(yǎng)》由會員分享,可在線閱讀,更多相關(guān)《計算機(jī)程序設(shè)計教學(xué)中的抽象思維能力培養(yǎng)(3頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、計 算 機(jī) 教 育
Computer Education
第 3 期
2012 年 2 月 10 日
27
中圖分類號:G642
文章編號:1672-5913(2012)03-0027-03
計算機(jī)程序設(shè)計教學(xué)中的抽象思維能力培養(yǎng)
劉衛(wèi)國,施榮華
(中南大學(xué) 信息科學(xué)與工程學(xué)院,湖南 長沙 410083)
摘 要:提高學(xué)生的程序設(shè)計能力是計算機(jī)程序設(shè)計教學(xué)需要解決的關(guān)鍵問題。本文結(jié)合教學(xué)實踐,
指出學(xué)生的抽象思維能力薄弱是重要的制約因素,從教學(xué)方法角度提出培養(yǎng)學(xué)生抽象思維能力的途徑
和方法。
關(guān)鍵詞:程序設(shè)計;抽象思維;能力
計算機(jī)程序設(shè)計的教學(xué)關(guān)鍵是培養(yǎng)學(xué)
2、生的程
序設(shè)計能力。我們在教學(xué)過程中發(fā)現(xiàn),學(xué)生的抽 象思維能力薄弱是制約程序能力培養(yǎng)的重要因素。 這里的抽象思維能力可以理解為如何從計算機(jī)的 基本工作原理出發(fā),將具體的解題步驟抽象為一 般的解題程序,或者可稱為計算機(jī)化的思維。
人們分析和解決問題的思維活動轉(zhuǎn)化成計算機(jī)程
序的過程 [1]。這就決定了在進(jìn)行程序設(shè)計時的思 維方式應(yīng)該是計算機(jī)化的思維,即從計算機(jī)工作 的角度來設(shè)計操作步驟,使問題一步一步地得到 解決。
2
程序設(shè)計難在哪里——直觀到抽象的
1
程序設(shè)計的本質(zhì)——“教會”計算機(jī)
跨越
如何解決問題
程序設(shè)計教學(xué)中碰到的普遍現(xiàn)象,是在講
授某一個程序的設(shè)計思路(算
3、法)時,學(xué)生往往 聽得懂,但合上書本,要自己來寫程序時就犯 難了,除了記憶性地羅列一些語句外,難以形 成明確的編程思路、編出正確的程序,不知從 何下手。但如果能將問題分解,采用各個擊破的 方式,學(xué)生就容易理解。這說明學(xué)生習(xí)慣于直
計算機(jī)是在程序的控制下自動工作的,完成
各種不同的任務(wù),需要不同的程序。但計算機(jī)本 身不能形成解決實際問題的程序,而必須由人來 編寫。在使用計算機(jī)求解問題時,必須從計算機(jī) 工作原理的角度,將實際問題的求解過程用計算 機(jī)所能理解的程序語言表達(dá)成程序,最終計算機(jī) 執(zhí)行程序并在程序的控制之下完成解題任務(wù)。從 這個意義上說,程序設(shè)計的本質(zhì)就是“教會”計 算機(jī)如何解決問題。
4、
程序設(shè)計的關(guān)鍵是設(shè)計算法。算法是為解決 問題而采用的方法和步驟,如果從計算機(jī)完成任 務(wù)的角度,一個計算機(jī)程序就是利用程序設(shè)計語 言對算法的一種實現(xiàn)。本質(zhì)上講,程序設(shè)計是將
觀形象思維,面臨的主要困難在于直觀到抽象、
特殊到一般的跨越,所以程序設(shè)計教學(xué)中如何
實現(xiàn)直觀思維到抽象思維的轉(zhuǎn)變是需要解決的 關(guān)鍵問題。
程序設(shè)計反映了利用計算機(jī)解決問題的全 過程,在這個過程中離不開抽象思維 [2]。當(dāng)用計 算機(jī)對問題進(jìn)行求解時,首先要對問題進(jìn)行詳
計 算 機(jī) 教 育
Computer Education
28
2012
細(xì)分析,明確問題的要求,然后要抽象成適合
在計算機(jī)中表示
5、的數(shù)據(jù)結(jié)構(gòu)和形式化的數(shù)學(xué)模 型,最后把問題的數(shù)學(xué)模型或處理需求轉(zhuǎn)化為 有效的算法,并編碼實現(xiàn),從而得到問題的結(jié) 果,這就是計算機(jī)的問題求解機(jī)制。在這個機(jī)制 中,面臨的主要問題就是對問題進(jìn)行抽象和形 式化,并構(gòu)建算法 [3-4],這是一個科學(xué)抽象過程, 所以抽象思維是程序設(shè)計的基礎(chǔ)。從提高學(xué)生的 程序設(shè)計能力上講,對學(xué)生抽象思維能力的培 養(yǎng)十分重要。
兩個數(shù)兩兩進(jìn)行比較,使小的在前,大的在后。
先考慮第 1 輪比較:x[1] 與 x[2] 比較,如果 x[1] 大于 x[2],則將 x[1] 與 x[2] 互換,否則不交 換。然后,將 x[2] 與 x[3] 比較,如果 x[2] 大于 x[
6、3],則將 x[2] 與 x[3] 互換。如此重復(fù),最后將 x[n-1] 與 x[n] 比較,如果 x[n-1] 大于 x[n],則將 x[n-1] 與 x[n] 互換,否則不互換,這樣第 1 輪比
較 n-1 次以后,x[n] 中必定是 n 個數(shù)中的最大數(shù)。
再考慮第 2 輪比較:將 x[1] 到 x[n-1] 相鄰的
兩個數(shù)兩兩比較,比較 n-2 次以后,x[n-1] 中必
定是剩下的 n-1 個數(shù)中最大的,n 個數(shù)中第二大的。
3
教會學(xué)生如何編程序——抽象思維能力
如此重復(fù),最后進(jìn)行第 n-1 輪比較:x[1] 與
培養(yǎng)
x[2] 比較,把 x[1] 與 x[2] 中
7、較大者移入 x[2] 中,
x[1] 是最小的數(shù)。最后 x 數(shù)組按從小到大順序
排序。
最后歸納總結(jié)如下:用雙重循環(huán)來組織排 序,外循環(huán)控制比較的輪數(shù),n 個數(shù)排序需比較 n-1 輪,設(shè)循環(huán)變量 i,i 從 1 變化到 n-1。內(nèi)循環(huán) 控制每輪比較的次數(shù),第 i 輪比較 n-i 次,設(shè)循 環(huán)變量 j,j 從 1 變化到 n-i。每次比較的兩個元 素分別為 x[j] 與 x[j+1]。
又如,程序設(shè)計中有一類數(shù)字問題。數(shù)字 問題的提法往往是求某一范圍內(nèi)符合某種條件的 數(shù)。這一類問題的算法設(shè)計思路如下。
針對程序設(shè)計的難點,教學(xué)中應(yīng)充分考慮初
學(xué)者的認(rèn)知特點,從初學(xué)者的角度來理解學(xué)生的
8、 學(xué)習(xí)心態(tài),幫助學(xué)生理清思路,展現(xiàn)程序設(shè)計的 過程,從而幫助學(xué)生建立程序設(shè)計的清晰思路。
1)采用自頂向下、逐步求精的結(jié)構(gòu)化方法, 將復(fù)雜問題進(jìn)行分解,幫助建立明確的程序設(shè)計 思路。
結(jié)構(gòu)化方法是一種重要的程序設(shè)計方法, 即便在面向?qū)ο笤O(shè)計中,它仍是類的內(nèi)部代碼 設(shè)計應(yīng)遵循的重要方法。結(jié)構(gòu)化方法中“自頂向 下,逐步求精”的過程就是將問題求解由抽象逐 步具體化的過程,這種方法符合人們解決復(fù)雜 問題的普遍規(guī)律,對初學(xué)者建立明確的程序設(shè) 計思路很有幫助,因此程序設(shè)計教學(xué)也應(yīng)充分 利用這一方法。
先看將 n 個數(shù)排序的問題,可以分為如下 3
個步驟。
① 將需要排序的 n 個數(shù)存放到一個數(shù)組
9、中
(設(shè) x 數(shù)組)。
② 將 x 數(shù)組中的元素從小到大排序,即 x[1]
最小、x[2] 次之……x[n] 最大。
③ 將排序后的 x 數(shù)組輸出。 其中第②步是關(guān)鍵。 以冒泡排序法為例,其基本思路是將相鄰的
① 考慮判斷一個數(shù)是否滿足條件的算法。
有時可以直接用一個關(guān)系表達(dá)式或邏輯表達(dá)式來
判斷,如判斷奇數(shù)、偶數(shù)。但更多的情況無法直 接用一個條件表達(dá)式來判斷,這時可根據(jù)定義利 用一個循環(huán)結(jié)構(gòu)進(jìn)行判斷,例如判斷一個數(shù)是否 為素數(shù)。
② 在指定范圍內(nèi)重復(fù)執(zhí)行“判斷一個數(shù)是 否滿足條件”的程序段,從而求得指定范圍內(nèi)全 部符合條件的數(shù)。這里用的策略是窮舉。
2)從直觀入手,幫助構(gòu)造
10、復(fù)雜的程序結(jié)構(gòu)
(循環(huán)結(jié)構(gòu)),理解計算機(jī)解題的特點。 學(xué)生的思維能力在很大程度上與其感性經(jīng)驗
相聯(lián)系,他們習(xí)慣于直觀、具體的思維方式,所
人才培養(yǎng)
29
第 3 期
以在程序設(shè)計教學(xué)中要采用形象直觀的方法,充
分利用學(xué)生已具備的知識,誘發(fā)形象思維向邏輯 思維的躍變。
例如,循環(huán)結(jié)構(gòu)是一種重要的程序結(jié)構(gòu),也 最能體現(xiàn)計算機(jī)解題的特點,但學(xué)生往往在構(gòu)造 循環(huán)結(jié)構(gòu)時有困難,主要表現(xiàn)為不清楚循環(huán)體要 包括哪些語句、如何設(shè)置循環(huán)的條件、如何設(shè)置 循環(huán)變量的初值,等等。如何幫助學(xué)生構(gòu)造復(fù)雜 的循環(huán)結(jié)構(gòu)是教學(xué)的重要內(nèi)容,為了體現(xiàn)循環(huán)結(jié) 構(gòu)的形成過程,可以把問題先用直觀的順序結(jié)構(gòu) 一步
11、一步表示出來,然后再幫助學(xué)生尋找規(guī)律, 找出重復(fù)執(zhí)行的語句,這些重復(fù)執(zhí)行的語句就是 循環(huán)體。這方面的例子是很多的 [5]。
也可以利用數(shù)學(xué)中的直觀概念,適時過渡到 循環(huán)結(jié)構(gòu)。例如,累加與累乘問題是最典型、最 基本的一類算法,實際應(yīng)用中很多問題都可以歸 結(jié)為累加與累乘問題。下面看累加問題。
累加的數(shù)學(xué)遞推式如下。
S0 = 0
Si = Si-1+X(i i = 1,2,3,…)
其含義是第 i 次的累加和 S 等于第 i-1 次時 的累加和 S 加上第 i 次時的累加項 X。從循環(huán)的 角度講,即是本次循環(huán)的 S 值等于上一次循環(huán)時 的 S 值加上本次循環(huán)的 X 值,這可用下列
12、賦值 語句來實現(xiàn):
S=S+X
顯然,上述賦值語句重復(fù)執(zhí)行若干次后,S
的值即若干個數(shù)之和。
特例 1 當(dāng) Xi 恒為 1 時,即 Si = Si-1+1,S 用
于計數(shù)。
特例 2 當(dāng) X0 = 0,且 Xi = Xi-1+1(i = 1,2,
3,…,N)時,S 為 1 + 2 + 3 +…+ N 的值。
累乘問題的道理是一樣的。 遞推問題常用迭代方法來處理,即賦值語句
S=S+X 或 P=P*X 循環(huán)執(zhí)行若干次。相應(yīng)的算法 設(shè)計思路如下。
① 寫出循環(huán)體中需要重復(fù)執(zhí)行的部分。這 一部分要確定兩個內(nèi)容,一是求每次要累加或累 乘的數(shù),二是迭代關(guān)系 S=S+X 或
13、P=P*X。
② 確定終止循環(huán)的方式。一般有事先知道
循環(huán)次數(shù)的計數(shù)循環(huán)和事先不知道循環(huán)次數(shù)的條 件循環(huán)兩種方式,依具體情況而定。計數(shù)循環(huán)可 用一個變量來計數(shù),當(dāng)達(dá)到一定循環(huán)次數(shù)后即退 出循環(huán)。條件循環(huán)可根據(jù)具體情況確定一個循環(huán) 的條件,當(dāng)循環(huán)條件不滿足時即退出循環(huán)。
③ 確定循環(huán)初始值,即第一次循環(huán)時迭代 變量的值。
④ 重新檢查,以保證算法正確無誤。
4 結(jié)語
“授之以魚,不如授之以漁”。程序設(shè)計教學(xué)
不能僅僅羅列現(xiàn)成的程序,而要從初學(xué)者的學(xué)習(xí)
心理和思維習(xí)慣出發(fā),站在計算機(jī)解題的角度,
努力呈現(xiàn)程序的構(gòu)造過程。在這個過程中,培養(yǎng)
學(xué)生的抽象思維能力十分重要。
參考文
14、獻(xiàn):
崔進(jìn)平. 論程序設(shè)計教學(xué)與創(chuàng)新能力培養(yǎng)[J]. 山東教育學(xué)院學(xué)報, 2004(1): 37-40.
張樹粹, 張玉林, 譚征, 等. 高級語言程序設(shè)計與計算思維能力培養(yǎng)[C]. 全國第五次程序設(shè)計語言發(fā)展與教學(xué)學(xué)術(shù)會議、第三 屆全國Web信息系統(tǒng)及其應(yīng)用學(xué)術(shù)會議暨全國首屆語義Web與本體論學(xué)術(shù)研討會, 2006.
阮一文, 姚朝灼. 論程序設(shè)計語言教學(xué)與思維方法的培養(yǎng)[J]. 高等理科教育, 2006(6): 76-79.
高敬陽, 朱群雄, 山嵐, 等. 貫穿在系列課程中的程序設(shè)計能力的培養(yǎng)[J]. 中國大學(xué)教學(xué), 2008(11): 47-48.
王力. 程序設(shè)計教學(xué)中的幾個關(guān)鍵問題研究[J]. 計算機(jī)科學(xué), 2008, 35(4A): 361-362.
[1]
[2]
[3]
[4] [5]
(編輯:姚彥如)