国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

問題求解在C程序設計實驗教學中的應用

2009-08-31 07:45華冠萍
計算機教育 2009年13期
關鍵詞:實驗教學

華冠萍

摘要:在程序設計實驗教學中,一直以來“難學”、“難教”成為師生共識,實驗效果不夠理想。本文通過引入問題求解法,改變傳統(tǒng)實驗教學模式,以達到更好的教學效果。

關鍵詞:C程序設計;實驗教學;問題求解

中圖分類號:G642 文獻標識碼:A

1引言

“程序設計基礎”是高校計算機專業(yè)重要的專業(yè)基礎課,是一門理論與實驗同步教學的課程。其中,實驗在整個程序設計教學中起著非常重要的作用,學生只有通過上機實驗,親自動手設計、編寫程序,才能真正掌握程序的邏輯設計及語言的基本規(guī)則,加深對理論知識的鞏固、鍛煉程序設計的邏輯思維,提高軟件開發(fā)能力。

傳統(tǒng)的程序設計實驗教學是以教師傳授為中心,教師在教學過程中的占主導作用,學生往往是被動的參與者,并不起主體作用。大多數(shù)學生都認為程序設計艱澀難懂、學難致用,程序設計常常處于一種機械、被動的狀態(tài),設計水平徘徊不前,更有甚者,做完實驗還不知道為什么要做這個實驗,“難學”、“難教”成為師生的共識。如何有效地開展程序設計實驗教學,探討實驗教學的新思想、新方法,成為程序設計實驗教學改革中亟待解決的問題。

作者在多年程序設計實驗教學的基礎上,引入以問題求解為中心的實驗教學方法。該方法順應學生的認知規(guī)律,注重學生的主體性,教師在其中主要起“導”的作用,引導學生從問題著手,啟發(fā)學生分析問題,進而解決問

題。這樣不僅能培養(yǎng)學生的學習興趣,還能提高學生的實際編程能力,成為真正的問題解決者。

2問題求解法簡述

問題是學生學習的引導者,是最好的老師,沒有問題便沒有深入。今天的大學生所面對的是一個高度發(fā)展、變化迅速的信息時代,他們每一個人時刻面臨著各種各樣的問題,解決問題將是他們生活的重要組成部分,問題解決能力也無疑成為他們的生活是否成功的關鍵因素。而程序設計也正是以解決問題為根本目的。

以問題求解為中心的實驗教學模式從問題入手,啟發(fā)學生思考、分析問題,引導學生在問題解決中構造算法,進而掌握相關的概念、語法、功能及應用,真正達到實驗教學目的。以問題求解為中心的實驗教學模式可分為以下步驟。

(1) 問題引入:通過問題來展開教學,創(chuàng)設問題解決的情境,引導學生思考程序需求,對需求有個清晰的了解,找到根本問題所在。

(2) 分析問題:分析題意,弄清要解決什么樣的問題,即程序要實現(xiàn)什么樣的功能。具體為確定問題的輸入(要處理的數(shù)據(jù))、問題的輸出(希望的結果)、以及解決方案的附加需求或約束條件;同時,規(guī)劃好存儲結構,即如何存放數(shù)據(jù)和中間結果,確定要使用的變量、函數(shù)等,并把簡單情況描述出來。本階段還應同時列出問題的變量及其相互關系,這些關系也可用公式的形式來表示。

(3) 算法設計:設計算法來解決問題,按照結構化的思想,先粗后細,逐步畫出求解問題的N-S流程圖。具體可采用自頂向下的方法將問題描述成幾個子問題或子功能,然后再根據(jù)具體情況將子問題進一步細化、逐步深入,直到所有子問題或子功能都能用語句描述為止,通過解決每一子問題最終解決原始問題。

值得一提的是,在此階段,教師不光要引導學生解決問題,還應鼓勵學生尋求不同的解法,使一題多解,積極嘗試新的方法,拓寬邏輯編程思路,并在此基礎上分析最簡捷解法(考慮經(jīng)濟性、復雜度等),引導學生對算法進行優(yōu)化。

(4) 算法實現(xiàn):編寫程序,用具體的語言將算法的每一步轉換成一個或多個語句。根據(jù)N-S流程圖,用程序設計語言編寫程序,實現(xiàn)算法。此階段要注意準確表達與語言邏輯,為了使編寫的程序正確,編寫程序時必須要遵循該程序設計語言的基本規(guī)范和表達邏輯,恪守程序語句和函數(shù)等的書寫格式,比如函數(shù)頭的格式、字母的大小寫、標點符號放置、花括號的使用等。同時,避免語言表達的二義性和非語法錯誤,學生在編制程序的過程中會出現(xiàn)各種錯誤,對于語法錯誤,不難依靠編譯工具或解釋工具給出的錯誤信息進行修改,但是要糾正非語法性錯誤,就不那么容易了,比如有效數(shù)字限制、數(shù)字溢出、隱含條件的限制引起的調(diào)用或循環(huán)次數(shù)有異問題等等。因此在程序編寫階段,指導學生不光要掌握基本語法,還得研究非語法性錯誤的出錯特征,提高編制程序質(zhì)量及運行結果和效率。

(5) 編譯調(diào)試:在編寫好源程序的前提下,接著要測試程序是否能夠實現(xiàn)算法設計的目的,所以必須調(diào)試程序。程序調(diào)試是當程序發(fā)生錯誤時,分析錯誤并改正錯誤,作為程序寫作的最后一個環(huán)節(jié),它不僅是保證程序開發(fā)質(zhì)量的重要手段,也是實驗教學的重要環(huán)節(jié)。此階段不光是為了“驗證程序的正確性”,還要掌握分析、解決不同的錯誤及異常,進而掌握編程的方法與技巧,提高分析問題和解決問題的能力。一般程序錯誤有以下幾種。

語法錯誤:當代碼中違反了一條或多條C語法規(guī)則時出現(xiàn),可在編譯階段檢出。如缺分號、未聲明變量、或書法遺漏等。

運行時錯誤:在程序執(zhí)行階段被檢測并顯示出來。如非法num/0,此時會停止程序執(zhí)行,并顯示診斷消息,指出在哪一行檢測到了運行錯誤。

未檢測到的錯誤:許多錯誤執(zhí)行可能并不會阻止程序完成運行,而僅僅是得出不正確的結果。因此,預先知道一些不正確的結果并去檢查實際的輸出是否正確是很重要的。如scanf函數(shù)在對格式參數(shù)%d和%c的處理上有所不同,前者會忽略輸入的空白和回車,而后者則不會忽略。

邏輯錯誤:當程序遵循了一個有缺陷的算法時會發(fā)生。邏輯錯誤不會導致運行錯誤,而且不會顯示錯誤消息,所以該種錯誤比較難以檢測到。只能采用程序調(diào)試功能中的斷點設置和單步調(diào)試相結合,進行“分段檢查”,實時檢測有關變量的變化情況,逐段往下查,直到找到在某一段中代碼不對為止。

(6) 測試:在調(diào)試成功的基礎上,需要測試所編寫程序是否按預期方式完成任務。此階段不能只根據(jù)一次測試就確定,應使用不同的數(shù)據(jù)集合來多次運行程序,從而確保該程序在算法所提供的所有情況下都正常工作并得到正確結果。

3案例分析

下面以程序設計基礎課程實驗教學中“選擇結構程序設計”項目中的一個設計性實驗為例,設計問題求解步驟。

(1) 問題引入:設計一實現(xiàn)公園售票功能的程序,具體要求:計算購票人應付金額,其中每張票零售價為20元,團體價為12元,一次購票超過20張(包含20張)時按團體票售出。

(2) 問題分析:通過對該問題的分析,明確了程序要求通過對輸入票數(shù)的判斷,確定票價是以團體價還是以零售價進行計算,進而利用計算公式求出應付金額,問題描述為:

程序變量:團體票價,零售票價,購票數(shù)量,應付金額

問題輸入:購票數(shù)量

問題輸出:應付金額

相關公式:應付金額=購票數(shù)量*團體票價(購票數(shù)量<20)

應付金額=購票數(shù)量*零售票價 (購票數(shù)量<20)

(3) 算法設計:根據(jù)問題分析結果,按照結構化的思想,畫出求解問題的N-S流程,如圖1所示。

(4) 算法實現(xiàn):根據(jù)上述N-S圖,算法代碼編寫如下:

#include <stdio.h>

void main()

{ int price1,price2,num,total;

char c;

price1=20;

price2=12;

c='y';

while(c!='n')

{

printf("請輸入購買票數(shù):");

scanf("%d",&num);

if(num>=20)

total=num*price2;

else total=num*price1;

printf(" 應付金額:%d",total);

printf(" 繼續(xù)嗎?(y/n)");

getchar();

scanf("%c",&c);

}

}

(5) 調(diào)試測試:在VC++ 6.0環(huán)境中編輯、編譯、調(diào)試源程序,程序調(diào)通后進行數(shù)據(jù)測試,我們設定購票數(shù)20

和10分別測試結果,進行正確性驗證。

4總結

在程序設計實驗教學中,以問題求解來驅動教學可以更好地發(fā)揮學生的主體性,有效地培養(yǎng)了學生的學習興趣,提高了學生分析問題、解決問題的能力,其優(yōu)勢是明顯的,但也存在一些問題。由于教師主要是進行方法的引導,學生有更多時間自主學習,而學生的學習能力是不同的,因而在同一課堂內(nèi),全班同學所掌握的知識會有所不同,容易造成學生成績兩極分化和教學知識點的疏漏。這就需要教師在教學中加強課堂或階段小結和知識點的交流或回顧,使學習能力差的同學或操作有疏漏的同學能通過教師的總結和回顧跟上教學進度,全面掌握知識點,達到教學目標,促進同步發(fā)展。

參考文獻:

[1] Hanly,J.R.,Koffman,E.B..問題求解與程序設計C語言版[M]. 4版. 朱劍平,譯.北京:清華大學出版社,2007.

[2] 沈建英.計算機程序設計實驗教學改革探索[J]. 實驗技術與管理,2003,20(4):105-107.

[3] 吳冬芹.大學生程序設計學習心理研究與教學對策探討[D].揚州大學碩士論文,2006.

[4] 關忠仁. C 語言教學質(zhì)量的思考與實踐[J]. 計算機教育,2007(6):56-57.

[5] 張曉慧,喬成立,等.問題式教學法在綜合性和設計性實驗教學中的研究與實踐[J]. 教育探索,2008(11):81-82.

The Application of Problem Solving Method in C Language Programming Experiment Teaching

HUA Guan-ping

(College of Information Science, Zhejiang Shuren University, Hangzhou 310015, China)

Abstract: It is a common view in experiment teaching of programming that “hard to learn” and “hard to teach”. The experiment effect is not very ideal. This text introduces problem solving method to change traditional experiment teaching model and achieve the better teaching effect.

Key words: C language programming; experiment teaching; problem solving

猜你喜歡
實驗教學
LabVIEW下的模擬電路實驗教學創(chuàng)新對策
基于科學探究的高中生物實驗教學探索
網(wǎng)絡與云技術在實驗教學中的應用
浪漫的材料
以人為本:初中物理科學探究素養(yǎng)在實驗教學中的落實
復變函數(shù)級數(shù)展開的可視化實驗教學
復變函數(shù)級數(shù)展開的可視化實驗教學
以人為本:初中物理科學探究素養(yǎng)在實驗教學中的落實
初中化學實驗教學中“微課”教學模式的探討
談初中化學實驗教學的初探