吳芳
摘? 要:闡述程序設計與學生邏輯思維能力培養(yǎng)的重要性,如何在程序設計中逐步培養(yǎng)學生邏輯思維的方法,程序設計應分析問題且精心設計算法并調試成功的過程,進而更好地發(fā)揮學生的學識和才智。
關鍵詞:程序設計? 算法設計? 調試? 邏輯思維
中圖分類號:TP311.52 ? ?文獻標識碼:A 文章編號:1672-3791(2019)12(a)-0222-02
在程序設計中較為關心的是程序效率與正確性。程序效率常由算法的效率來決定。程序設計有一個特點,就是它必須與實踐密切相聯。在計算機上進行實際操作是學好程序設計的重要環(huán)節(jié),它直接關系著教學質量的好壞。因此,在上機實踐中,我們應該培養(yǎng)學生掌握正確的邏輯思維方法,只有養(yǎng)成好的程序設計習慣,才能使其編制的程序具有良好風格。心理學家紐威爾在總結人類大量的思維活動經驗的基礎上發(fā)現,人在解決各種不同的問題時,存在某些共同的規(guī)律。概括起來主要為以下3個方面:首先先想出大致的“解題計劃”,其次根據理論和推理規(guī)則,去“組織解決”,最后進行“方法—目的分析”。因此,我們編制程序時應提倡獨立思考,要講點思維邏輯。程序設計一般要經過分析問題、確定算法、編制程序、上機調試這樣幾個步驟。
1? 在分析問題時逐步培養(yǎng)學生獨立思維的能力
上機操作前,我們強調讓學生做好前期準備工作,最好把程序寫好。一般來講,寫完一個程序只能說完成了設計任務的一半。往往有這樣的情況,有的程序編好了,在上機時又全部被否定?,F象一:程序的運行沒有得到預期的結果。現象二:想讓程序做的事,程序并沒有去做或者是做錯了。
為什么會發(fā)生這樣的現象呢?有的學生對客觀實際問題了解得不夠全面,有的則是沒有掌握好解決問題的方法??梢赃@樣說,各種計算機語言都是用來解決客觀問題的工具。編制程序時,除掌握好工具之外,更要有解決客觀實際的科學思維方法。我們常在學生提出問題時,不是馬上去告訴其如何去做,而是啟發(fā)他“再想一想”。以問題促進思考,用問題啟發(fā)思維,這個“再想一想”就是一個培養(yǎng)其從借助于感覺和表象認識客觀事物的外部,聯系到借助于判斷和推理逐步認識客觀事物的內部聯系的思維過程。為了解決一個問題,學生們都在進行思考,有的同學善于看到問題的焦點,有的同學卻走了許多彎路,可見,這個過程不是一朝一夕就能完成的。
2? 在程序設計中有意識地運用邏輯思維
計算機技術具有實踐性很強的技術。要求從事這一領域的人不僅應了解和熟悉有關理論和方法,還要求自己動手實踐。計算機可以像“人腦”一樣進行計算、進行邏輯判斷,但計算機的計算和判斷都是受到程序制約的。用高級語言編寫程序,可以擺脫計算機本身的特性限制,而集中精力于算法本身。
2.1 注重算法設計
算法設計是整個程序設計的核心。算法設計必須精益求精,算法要經得起各方面的推敲。如果算法有誤,可能導致整個程序的失敗。對于一般的數值運算,有成熟的算法可供參考。我們要求學生掌握這些算法,并能根據需要做必要的修改,善于從基本常用算法中歸納總結出解決同類問題的算法。比如:學習了遞推法,知道求N!的算法,這個算法做點修改就可以得到用近似公式,求自然對數底的值算法。對于非數值的算法,由于實際問題多樣化,沒有統(tǒng)一的算法,學生應能根據需要認真分析問題,設計所需算法。一旦程序運行結果不對,很多同學懂得這樣去想:“我這個算法對嗎?”“錯在哪?”。
算法用于解決客觀實際問題,要求同學們要進行周密的思考,思維方式要符合客觀實際的邏輯規(guī)律,才能盡量避免出現邏輯錯誤。解題常常需要借助于一定的邏輯規(guī)律,我們要求學生從題目出發(fā),對整個問題不斷分析,一步步細化,直至每一個子問題都簡明易解。引導學生由淺入深,由表及里,即可輕而易舉地設計算法框圖,再用高級語言來描述之。在算法設計的過程中,逐步培養(yǎng)學生的邏輯思維能力和嚴謹的科學作風。
2.2 程序的邏輯結構要嚴密
程序的邏輯結構是程序的骨架,我們目前大多數程序都是用模塊化結構來設計的。一個程序的邏輯結構安排是否合理,也是程序能否編制好的關鍵問題之一。學生編制的程序有時會出現這樣的情況,程序結構松散不能將算法和各模塊緊密結合起來,我們要求學生要學會分析,全面細致地分析各模塊之間的內在聯系,只有通過分析明確各模塊之間的內在聯系,才能用綜合方法把解決不同問題的各個模塊聯系起來,以便完成程序的整體邏輯結構。
程序應當是深思熟慮且通盤思考精心設計的結果,而不應是信手拈來或東拼西湊的產物。
在“軟件工程”的課程設計過程中經常要完成復雜的題目,有的學生花幾小時編完了程序,修改與調試的時間往往比編程所花費的時間要多好幾倍,這就是由于該同學忽視程序的邏輯結構設計,沒有遵循一定的規(guī)律,他希望把結構設計是否合理留給計算機系統(tǒng)去判斷,當出現問題再去修改,這樣的程序即使勉強通過,質量也會很差,最可惜的是它還浪費了寶貴的機時。
因此,如果程序的邏輯結構嚴密,在編制各個模塊的程序代碼時相對出現的問題較少,這給程序調試節(jié)省了時間。
3? 排除程序的邏輯錯誤
編寫好的程序是否有錯誤是我們極其關心的問題,盡管我們在編寫時十分認真,但程序有時難免蘊含著各種錯誤。程序設計的各個環(huán)節(jié)都是密切相關的,哪一個環(huán)節(jié)出現錯誤,其最終都以非正常的運行結果表現出來。
由于缺乏程序設計的經驗,所以在程序調試時會遇到這樣那樣的問題。為了盡量減少排除人為疏忽造成的紙面上的靜態(tài)錯誤所占用的時間,我們要求學生在上機前編寫程序,并經人工檢查無誤時才輸入程序,以提高上機效率。
程序中的語法錯誤比邏輯錯誤容易排除。下面我們來看看,在C語言中要實現:1+2+3+…+100之和為多少這樣一段程序。
Main()
{int? i,sum=0;
i=1;
while (i<=100)
sum=sum+i;
i++;
printf(”sum=%d\n ”,sum);}
這段小程序中無語法錯誤,源程序的編譯和鏈接都能通能通過,但程序的運行結果卻不對,while語句的循環(huán)只能到其后的第一個分號為止,所以這段程序只能重復sum=sum+i的操作,無輸出結果,而循環(huán)不終止(其錯誤在于沒有用花括號將循環(huán)體的復合語句括起來)。C編程系統(tǒng)無法辨別程序的語句是否符合設計者的意愿,只是忠實地執(zhí)行sum=sum+i這條指令。程序出現的這種錯誤就是常說的“這個程序有邏輯問題”,即廣義上指的是一種思維混亂現象,它是由于人為因素而造成的對客觀事物的非準確反應。這種邏輯錯誤必須排除,否則會使程序設計的結果難以預料。
對于程序的邏輯錯誤而言解決的方法很多,通常需要檢查流程圖或設置輸出“斷點”,或檢查算法或使用DEBUG(調試)工具來找出邏輯錯誤,避免在以后的程序設計中產生類似的錯誤。我們調試程序的目的,不僅僅是證明程序是正確的,而且要去找出并排除程序的邏輯錯誤。
4? 結語
總之,程序設計是一項細致而復雜的工作,需要學生多動腦多動手。在實際操作中總結經驗,用合乎邏輯規(guī)律的方法分析解決不同程序設計中的問題,我們對程序設計的目的不僅僅要使程序正確,更重要的是要使學生提高程序設計的科學邏輯思維能力,更好地發(fā)揮學生的學識和才智,為今后的學習和工作打下良好的程序設計基礎。
參考文獻
[1] 梁宇.數學教育中邏輯思維能力的培養(yǎng)策略[J].教學與管理,2017(5):86-88.
[2] 譚浩強.C程序設計[M].5版.北京:清華大學出版社,2017.
[3] 李文生,吳舜歆.面向計算思維能力培養(yǎng)的程序設計課程[J].計算機教育,2014(3):57-60.
[4] 張晨靜.用計算機思維知道程序設計課程[J].科教文匯. 2013(36):63-65.