前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇c程序范文,相信會(huì)為您的寫作帶來幫助,發(fā)現(xiàn)更多的寫作思路和靈感。
第二天上機(jī)的時(shí)候也很快完成了第一步,覺得還行,慢慢來五天完全可以完成。后來也就沒怎么好好思考,沒想到第二天遇到麻煩了,編不出第二步了。第三天下午也沒調(diào)試好,第一步輸入的數(shù)據(jù)在第二步統(tǒng)計(jì)的時(shí)候怎么也數(shù)不出來,我從頭至尾研究了多次,沒發(fā)現(xiàn)一點(diǎn)問題,請(qǐng)舍友幫我檢查也說沒錯(cuò),到了傍晚還是看不出來。哎!又找一個(gè)人給我看了看,竟然錯(cuò)得那么幼稚,類外定義了全局對(duì)象,在數(shù)據(jù)輸入put()函數(shù)里又重新定義了對(duì)象,這樣在put()輸入的數(shù)據(jù)無法用到其他函數(shù)中,自然統(tǒng)計(jì)的時(shí)候都是默認(rèn)值了。
就這么一個(gè)小小的錯(cuò)誤整得我一天一晚上寢食難安。
編程序時(shí)深深感受到要不得半點(diǎn)馬虎,有時(shí)少一個(gè)“}”或“<”都會(huì)導(dǎo)致程序語法錯(cuò)誤;由于編程序經(jīng)常要變換輸入法,很容易輸進(jìn)中文字符,這也會(huì)導(dǎo)致語法錯(cuò)誤;調(diào)用類里重名函數(shù)時(shí)要注明屬于哪個(gè)類的。
第三天的時(shí)候第二步基本都編出來了,傍晚那時(shí)我沒檢查出錯(cuò)誤來的時(shí)候,實(shí)在是把我急壞了,借了臺(tái)電腦,在那安靜專心的研究程序,舍友幫我檢查出錯(cuò)誤來之后,編程序有了感覺,那時(shí)已經(jīng)22:00多了,竟然沒有一絲睡意。
后來舍友們陸續(xù)睡覺了,可我就是不愿睡。可能是出于自尊心需要,別人都編出來了,自己編不出來,讓我無法接受;也可能是第二步出來了急于盡快搞定。從19:00到凌晨4:00一直在那兒編程序了,一次次地聽到鈴聲響竟然沒有上床睡覺的沖動(dòng),滿腦袋只有一個(gè)想法:認(rèn)真編程序,爭(zhēng)取晚上搞定。后來差不多了,只有備份不怎么完善,當(dāng)時(shí)電腦已經(jīng)用了好長(zhǎng)時(shí)間了,實(shí)在不忍心一直用人家的電腦,只好關(guān)機(jī)睡覺了。
這幾天可以說是兩耳不聞窗外事,一心只顧編程序了,電話都懶得打,只想盡快把程序搞定,晚上沒有電腦用,我們?nèi)齻€(gè)女生就去網(wǎng)吧,只是那兒沒有vusual-c++,只好作罷。
雖然我們一直在編程序,覺得挺累的,其實(shí)還有比我們更累的——我們的老師。我們是每天只有半天的實(shí)習(xí)時(shí)間,可是老師卻整天在機(jī)房里,看得出來,老師連坐下休息的時(shí)間都沒有,剛要喝點(diǎn)水,立馬就被一個(gè)同學(xué)叫去了,實(shí)習(xí)完那天下午看見老師都不想走路了。太累了,一天站7小時(shí),還一直給別人檢查程序,太忙了。想想老師這么認(rèn)真,我們還有什么理由不認(rèn)真呢?
只有五天的實(shí)習(xí),卻讓我受益匪淺:這不僅是一次對(duì)我們的c++掌握和運(yùn)用的熟練程度的檢查,更是一次磨練我們耐性、培養(yǎng)認(rèn)真態(tài)度的機(jī)會(huì)。這次實(shí)習(xí)讓我深刻體會(huì)到“細(xì)節(jié)決定成敗,態(tài)度決定一切”;更讓我 從 老師身上學(xué)到了很多在以后工作中需要的優(yōu)秀品質(zhì)。相信這會(huì)在我今后的學(xué)習(xí)和以后的工作很有幫助。
通過完成本次面向?qū)ο蟪绦蛟O(shè)計(jì)的任務(wù),使我熟練和掌握了上學(xué)期所學(xué)的有關(guān)visual c++中的一些主要知識(shí)點(diǎn)和應(yīng)用點(diǎn),如類的定義,類的實(shí)現(xiàn),對(duì)象的定義,類的繼承等等??梢运鶎W(xué)有所學(xué),所有所用,不至于自己所學(xué)知識(shí)由于沒有經(jīng)歷可用過程,而放棄對(duì)它的興趣。
第一天上課時(shí)候聽老師講,第一反應(yīng)是這可怎么做了。當(dāng)時(shí)有些迷茫。但是事在人為,下午回去之后在宿舍苦心研究,終于在整體上有了一定的把握。我們可以先定義一個(gè)基類,再派生三個(gè)子類,然后在類外定義函數(shù)。有人數(shù)規(guī)定,我們就定義相應(yīng)長(zhǎng)度的對(duì)象數(shù)組,最后在實(shí)現(xiàn)程序功能時(shí),用函數(shù)調(diào)用就行。
于是當(dāng)晚很快就完成了第二天的預(yù)習(xí)報(bào)告,上機(jī)調(diào)試時(shí)也沒什么大問題,就這樣第二天順利通過。
雖說接下來的統(tǒng)計(jì)沒那么容易,但就順著數(shù)據(jù)順利輸入的喜悅心情,我還是較好的完成了這個(gè)任務(wù)。在類外定義一個(gè)函數(shù)用來輸出雇員的基本情況,表頭,表尾直接在統(tǒng)計(jì)函數(shù)中輸出,也就是在統(tǒng)計(jì)函數(shù)中調(diào)用函數(shù)。打印與統(tǒng)計(jì)有異曲同工之妙,所以在統(tǒng)計(jì)做出之后,打印自然而然的也就很快完成了。
接下來的數(shù)據(jù)備份中,遇到了一個(gè)小問題,一開始以為也是函數(shù)中調(diào)用打印函數(shù)中用的那函數(shù)。其實(shí)不然,如若那樣,又變成了打印。那我們就直接輸出,但詳細(xì)資料是受保護(hù)的,不能直接輸出,那還得調(diào)用函數(shù)。于是在每個(gè)類中的公共成員中定義了直接返回的函數(shù),接下來順利完成了備份。調(diào)用頭文件<process.h>里的exit(int)函數(shù),可以用if()語句進(jìn)行判斷是否確定退出。程序順利完成。
面向?qū)ο蟪绦蛟O(shè)計(jì)作為一門軟件設(shè)計(jì)的課程,具有極強(qiáng)的實(shí)踐性,使我加強(qiáng)了靈活應(yīng)用理論知識(shí)的能力及面向?qū)ο蟪绦蛟O(shè)計(jì)技能。
關(guān)鍵詞:考試系統(tǒng);多媒體技術(shù);數(shù)據(jù)源;連接數(shù)據(jù)庫(kù)
中圖分類號(hào):TP311文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2007)03-10854-03
1 課題研究的意義和目的
1.1研究意義
現(xiàn)在,多媒體技術(shù)日趨成熟,多媒體系統(tǒng)以其能輸出精彩的圖形和圖像、美妙的聲音、動(dòng)感的畫面贏得了用戶和社會(huì)各界廣泛的關(guān)注和應(yīng)用。如果把按傳統(tǒng)考試方式同現(xiàn)代化的多媒體技術(shù)相結(jié)合,并且用多媒體著作工具及其它多媒體技術(shù),編制一套符合高??荚囆枨蟮南到y(tǒng)及其配套的多媒體教學(xué)軟件,利用多媒體技術(shù)生動(dòng)、直觀、形象展示信息的特點(diǎn),輔助教師授課和學(xué)生進(jìn)行考試,尤其對(duì)部分有限制性的實(shí)驗(yàn)環(huán)節(jié),可利用活動(dòng)視頻技術(shù)進(jìn)行展示,這將會(huì)解決一系列目前存在的問題??傊撜n題是在計(jì)算機(jī)輔助教學(xué)及考試上進(jìn)行的一次積極有意義的嘗試,為其他實(shí)踐性較強(qiáng)的課程進(jìn)行多媒體輔助教學(xué)開辟一條新的路子,具有一定的理論和現(xiàn)實(shí)意義。
1.2目的
傳統(tǒng)的考試手段主要依靠有紙?jiān)嚲?,幾乎沒有可重用性。本課題將實(shí)現(xiàn):用計(jì)算機(jī)輔助考試系統(tǒng),把多媒體生動(dòng)、直觀的顯示出來,使學(xué)生不再將考試視為一種枯燥無味的東西,提高了考試效果,使學(xué)生在一種愉悅的心情中進(jìn)行考試,把枯燥的重復(fù)變?yōu)槌錆M樂趣、具有啟發(fā)性的考試過程,使學(xué)生能比較全面的學(xué)習(xí)知識(shí),掌握技能,達(dá)到素質(zhì)教育的要求。
2 系統(tǒng)流程圖設(shè)計(jì)
2.1初始化流程設(shè)計(jì)
在使用Authorware創(chuàng)建任何多媒體項(xiàng)目的時(shí)候,都應(yīng)該先設(shè)置當(dāng)前項(xiàng)目文件的窗口大小,將其設(shè)置為“800×600”,然后選擇“演示居中屏幕”,同時(shí)取消對(duì)“顯示標(biāo)題欄”和“顯示菜單欄”復(fù)選框的選擇。
2.2主界面的設(shè)計(jì)
本界面采用了Photoshop7.0圖形圖像處理軟件來繪制。為了避免界面的單調(diào)和呆板,用蒙版和濾鏡技術(shù)加以美化。該界面把Photoshop中的圖層技術(shù)、圖層蒙版技術(shù)、文字效果及濾鏡等功能完美的結(jié)合了起來。并且在底部設(shè)置了一個(gè)Flas,增加視覺效果。
2.3背景音樂的交互控制
該多媒體教學(xué)以MIDI作為背景音樂,背景音樂的交互控制包括背景音樂的隨機(jī)選曲播放、停止等功能,另外當(dāng)該教學(xué)程序處于活動(dòng)狀態(tài)時(shí),能夠隨時(shí)調(diào)整背景音樂和講解聲音的大小及比例,讓使用者在一種輕松悅耳的環(huán)境中考試(調(diào)出WINDOWS的音量控制實(shí)現(xiàn)),還能夠暫停背景音樂,當(dāng)再次進(jìn)入活動(dòng)狀態(tài)時(shí)則能重新播放背景音樂。
為了充分考慮用戶計(jì)算機(jī)的不同配置情況,首先利用BUDAPI.U32的BASOUNDCARD函數(shù)判斷用戶機(jī)器是否已經(jīng)安裝了聲卡,如果已經(jīng)安裝則執(zhí)行背景音樂播放,否則不允許播放任何背景音樂操作.程序如下:
IF BASOUNDCARD() THEN
MIDI:=1
TEST(MIDI,MIDILOOP (FILELOCATION^”MUSIC\\MUSIC-”^RANDOM(1,5,1)^”.MID”),STOPMIDI())
END IF
軟件中的背景音樂交互控制是通過交互響應(yīng)來實(shí)現(xiàn)的。在程序執(zhí)行過程中,用戶始終可以通過按鈕控制背景音樂的播放與暫停。在計(jì)算圖標(biāo)“播放音樂”后添加一交互圖標(biāo)并命名為“音樂控制”,并在交互圖標(biāo)右邊添加三個(gè)計(jì)算分支。設(shè)置“STOP/PLAY”分支為按鈕響應(yīng)交互,其功能是實(shí)現(xiàn)對(duì)背景音樂的控制。由于在整個(gè)程序執(zhí)行過程中它都是有效的,因此須設(shè)置其為永久按鈕,即選擇“PERPETUAL”屬性選項(xiàng),同時(shí)設(shè)置“ACTIVE IF”條件為:BASOUNDCARD(),即檢測(cè)到用戶沒有安裝聲卡的情況下該按鈕及響應(yīng)分支無效。
2.4內(nèi)容的導(dǎo)航設(shè)計(jì)
該多媒體教學(xué)涉及內(nèi)容繁多,不僅包括文本、圖片、聲音和動(dòng)畫,而且還有其它多媒體工具與Authorware 配合,同時(shí),還把視頻文件導(dǎo)入,以增加實(shí)用性。為使用戶操作簡(jiǎn)單方便,設(shè)計(jì)了合理的教學(xué)內(nèi)容導(dǎo)航。主文件與各章節(jié)之間的導(dǎo)航設(shè)計(jì)根據(jù)結(jié)構(gòu)規(guī)劃中的該章節(jié)內(nèi)容的欄目劃分,在流程設(shè)計(jì)中為這些欄目設(shè)計(jì)了導(dǎo)航,如圖1為主程序內(nèi)容導(dǎo)航的設(shè)計(jì)流程圖。
這樣的流程設(shè)計(jì)使整個(gè)主程序結(jié)構(gòu)清晰,可讀性強(qiáng)。由于該文件結(jié)構(gòu)是主-分結(jié)構(gòu),即主文件調(diào)用各章節(jié)模塊文件的方式,因此在主文件的章節(jié)內(nèi)容中實(shí)際存放的是一個(gè)起鏈接橋梁作用的調(diào)用腳本,而具體的考試試題題型內(nèi)容則放在各章節(jié)的模塊文件內(nèi)。
2.5各模塊的內(nèi)容流程設(shè)計(jì)
圖中的考試模式、練習(xí)模式、教學(xué)模式及退出系統(tǒng)這四部分主要程序流程圖如下圖2、圖3、圖4、圖5所示。
第五部分的原理演示則是通過熱區(qū)交互以及調(diào)入用VC6.0制作的演示內(nèi)容的庫(kù)文件,抽象的工作原理形象化,具體化。在打包的過程中采用了分步打包,首先對(duì)每部分進(jìn)行打包。通過主文件調(diào)用其它各部分,這樣避免了主文件過大,影響運(yùn)行速度。
3 以完成單選題為例來看具體實(shí)現(xiàn)過程
從單選題的數(shù)據(jù)庫(kù)題庫(kù)中隨機(jī)抽取相應(yīng)題數(shù)的問題;每一題只能選擇一個(gè)答案;用戶可以按次序做答,可跳過不答,在回答過程中,可以隨時(shí)返回已做過的題目進(jìn)行修改;交卷后會(huì)給出完成情況可以查看每題的回答情況.最后回到選題主界面,并把學(xué)生所做的答案成績(jī)保存到數(shù)據(jù)庫(kù)中。
當(dāng)用戶在主界面中,選擇了“考試模式”后,系統(tǒng)就會(huì)進(jìn)入到登錄界面系統(tǒng)會(huì)提示輸入用戶名和密碼,當(dāng)輸入后,點(diǎn)擊“確定”后,系統(tǒng)將會(huì)進(jìn)入到題型選擇界面。在提示框中輸入用戶名和密碼,我們點(diǎn)擊“確定”后,就會(huì)進(jìn)入到正式的單選題型界面中,選擇“單選題”單擊。
C語言程序設(shè)計(jì)考試系統(tǒng)的選擇題從數(shù)據(jù)庫(kù)中取出選擇題,在一個(gè)界面上顯示。利用三個(gè)熱區(qū)域交互按鈕“上一題”“下一題,”“完成”,按鈕和四個(gè)熱區(qū)域設(shè)置計(jì)算圖標(biāo)用來記錄學(xué)生所選擇的答案。在學(xué)生選擇“完成”后,彈出學(xué)生做題的情況界面,然后回到選題主界面,并把學(xué)生所做的答案成績(jī)保存到數(shù)據(jù)庫(kù)中。
3.1“未命名”用來擦除以前的圖像
(1) 打開“未命名”的屬性,進(jìn)入“未命名”的屬性窗口。
(2)在“屬性窗口”中單擊擦除標(biāo)簽在設(shè)置過渡效果進(jìn)行設(shè)置。
(3)單擊“確定”按鈕
3.2 設(shè)置“單選界面”插入一個(gè)圖像
(1)雙擊“單選界面”圖標(biāo)進(jìn)入顯示圖標(biāo)窗口
(2)單擊繪圖工具箱 圖標(biāo)進(jìn)行繪制一個(gè)和窗口矩形一樣大的矩形
(3)設(shè)置矩形的顏色為“綠色”
(4)單擊顯示圖標(biāo)窗口的關(guān)閉按鈕,關(guān)閉保存對(duì)“單選界面”的設(shè)置。
3.3 設(shè)置交互“進(jìn)入”
(1)在交互圖標(biāo)的右邊拖放一個(gè)群組“單選”。
(2)設(shè)置單選的熱區(qū)為“按鈕”。
(3)單擊確定后,雙擊“選擇”。
3.3.1“未命名”用來擦除上次運(yùn)行的圖形
3.3.2 在“打開數(shù)據(jù)庫(kù)”的輸入如下源程序:
hint0:="您的數(shù)據(jù)庫(kù)沒有連接上......"
--顯示連接數(shù)據(jù)庫(kù)的信息
title:="數(shù)據(jù)庫(kù)連接...."
ODBChandle:=ODBCOpen(WindowHandle,"","database","","")
--得到數(shù)據(jù)源
getrecord:="select count(sequence) from erigister"
--得到記錄的個(gè)數(shù)
record:=ODBCExecute(ODBChandle,getrecord)
if ODBChandle=0 then--測(cè)試連接數(shù)據(jù)庫(kù)是否連接成功
MessageBox(WindowHandle,hint0,title,17)
end if
ODBCClose(ODBChandle)
ODBChandle:=ODBCOpen(WindowHandle,"","database","","")
if ODBChandle=0 then
MessageBox(WindowHandle,hint0,title,17)
end if
sqlstring1:="select ssdb from erigister where sequence="^record^"" -從表中選擇單選庫(kù)表題
ssdatabase:=ODBCExecute(ODBChandle,sqlstring1)
getrecord:="select count(sequence) from "^ssdatabase^""
record:=ODBCExecute(ODBChandle,getrecord)
--ssdb數(shù)據(jù)庫(kù)的記錄個(gè)數(shù),以便產(chǎn)生隨機(jī)數(shù)
sssum:=0
number1:=1
sui:=[]
sui[1]:=Random(1,record,1)
--下面程序用來產(chǎn)生一個(gè)隨機(jī)數(shù)不能出現(xiàn)相同的題目
i:=2
repeat while i
flag:=0
repeat while flag=0
sui[i]:=Random(1,record,1)
flag1:=0
repeat with p:=1 to i-1
if sui[i]=sui[p] then flag1:=1
end repeat
if flag1=0 then flag:=1
end repeat
i:=i+1
end repeat
3.3.3 在“做選擇的背景”顯示圖標(biāo)中設(shè)計(jì)單選題的界面如上圖5.4
3.3.4 在“數(shù)據(jù)庫(kù)的操作”中輸入如下代碼:在這里,我們就要實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的隨機(jī)讀取和跟蹤答案的長(zhǎng)短來選擇界面
x:=0
ran:=sui[number1]
result:=""
record1:=Number(record)
record:=record1--得到記錄的個(gè)數(shù)
sqlstring1:="select topic from "^ssdatabase^" where sequence="^ran^""分別得到選擇題各項(xiàng)
sqlstring2:="select a from "^ssdatabase^" where sequence="^ran^""
sqlstring3:="select b from "^ssdatabase^" where sequence="^ran^""
sqlstring4:="select c from "^ssdatabase^" where sequence="^ran^""
sqlstring5:="select d from "^ssdatabase^" where sequence="^ran^""
sqlstring6:="select result from "^ssdatabase^" where sequence="^ran^""
get1:=ODBCExecute(ODBChandle,sqlstring1)
--get1得到選擇題目?jī)?nèi)容
get2:=ODBCExecute(ODBChandle,sqlstring2)
--get2得到選擇項(xiàng)A內(nèi)容
get3:=ODBCExecute(ODBChandle,sqlstring3)
--get3得到選擇項(xiàng)B內(nèi)容
get4:=ODBCExecute(ODBChandle,sqlstring4)
--get4得到選擇項(xiàng)C內(nèi)容
get5:=ODBCExecute(ODBChandle,sqlstring5)
--get5得到選擇項(xiàng)D內(nèi)容
get6:=ODBCExecute(ODBChandle,sqlstring6)
--get6得到選擇題的答案
inputa:=1 --用來設(shè)置熱區(qū)域的激活條件
3.3.5空“操作”用來設(shè)置跳轉(zhuǎn)標(biāo)志
3.3.6在交互圖標(biāo)右邊拖入四個(gè)熱區(qū)域
在計(jì)算圖標(biāo)中從左到右的四個(gè)計(jì)算圖標(biāo)中輸入: result:="A" result:="b" result:="c" result:="d"在交互屬性中設(shè)置激活條件為inputa=1: ,鼠標(biāo)指針設(shè)置為標(biāo)準(zhǔn)鼠標(biāo)指針,其它的為默認(rèn)設(shè)置.其中result變量用來記錄用戶所選的答案.
3.3.7拖一個(gè)交互圖標(biāo)“未命名”在它的右邊拖兩個(gè)計(jì)算圖標(biāo)為“上一題”和“下一題”,再拖一個(gè)群組“完成”放在“下一題”右邊 ,設(shè)置熱區(qū)為按鈕。在“上一題”的激活條件中輸入number1>1,鼠標(biāo)指針設(shè)置為:標(biāo)準(zhǔn)的鼠標(biāo)指針。在“下一題”的激活條件中輸入:number1
4 結(jié)束語
根據(jù)對(duì)教師上課時(shí)課堂練習(xí)的分析,開發(fā)出該考試系統(tǒng),主要是能夠方便課堂練習(xí),同時(shí)還可用于期中期末測(cè)試,該系統(tǒng)主要是針對(duì)《C語言程序設(shè)計(jì)》課程來設(shè)計(jì)的。對(duì)該系統(tǒng)做簡(jiǎn)單修改,即可用于其它課程。
參考文獻(xiàn):
[1]王嘉寧,朱雋.Photoshop7.0中文版新概念百例[M].中國(guó)水利水電出版社,2004,4.
[2]龔祥國(guó).主編.Photoshop圖像處理實(shí)用教程[M].科學(xué)出版社,2002,2.
[3]王龍,金海.主編.Flash MX實(shí)戰(zhàn)入門新概念[M].中國(guó)水利水電出版社,2005,5.
[4]李恒.Authorware 6.0多媒體實(shí)例大制作》[M] 冶金工業(yè)出版社,2002,4.
[5]袁海東.Authorware 7.0教程[M].電子工業(yè)出版社,2004,9.
關(guān)鍵詞:冒泡排序;選擇排序;插入排序
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2012)31-7504-04
排序(Sorting)是C++程序設(shè)計(jì)中基本并且常用的算法,它的功能是將一個(gè)數(shù)據(jù)元素(或記錄)的任意序列,重新排列成一個(gè)按關(guān)鍵字有序的序列。本文將討論三種排序算法的實(shí)現(xiàn),并對(duì)三種排序算法進(jìn)行比較分析。
1 排序的分類
1.1 按是否涉及數(shù)據(jù)的內(nèi)、外存交換分為[1]:
1)內(nèi)部排序: 內(nèi)部排序(簡(jiǎn)稱內(nèi)排序),是帶排序紀(jì)錄存放在計(jì)算機(jī)內(nèi)存中進(jìn)行的排序過程。
2)外部排序: 外部排序(簡(jiǎn)稱外排序),是帶排序紀(jì)錄的數(shù)量很大,以至于內(nèi)存一次不能容納全部紀(jì)錄,在排序過程中,只有部分?jǐn)?shù)被調(diào)入內(nèi)存,并借助內(nèi)存調(diào)整數(shù)在外存中的存放順序的排序方法。
1.2 按策略劃分內(nèi)部排序可分為
1)插入排序,包括:直接插入排序,其它插入排序,希爾排序;
2)快速排序,包括:冒泡排序,快速排序;
3)選擇排序,包括:簡(jiǎn)單選擇排序,樹形選擇排序,堆排序;
4)歸并排序;
5)基數(shù)排序,包括:多關(guān)鍵字的排序,鏈?zhǔn)交鶖?shù)排序。
2 排序的實(shí)現(xiàn)
由于排序有很多種方法,本文主要討論內(nèi)部排序的幾種實(shí)現(xiàn)。
2.1冒泡排序
算法實(shí)現(xiàn)思想:將被排序的數(shù)組R[1...n]垂直排列,即將元素R[1]到R[n]排列垂直如氣泡狀,約定數(shù)據(jù)小的為輕氣泡,大的為重氣泡,根據(jù)輕氣泡不能在重氣泡之下的原則,從下往上掃描數(shù)組R,凡掃描到違反本原則的輕氣泡,就使其向上”飄浮[2]”。如此反復(fù)進(jìn)行,直到最后任何兩個(gè)氣泡都是輕者在上,重者在下為止(圖1)。
2.2 簡(jiǎn)單選擇排序
算法實(shí)現(xiàn)思想: 對(duì)于一組數(shù)據(jù){K1,K2,…,Kn},首先從K1,K2,…,Kn中選擇最小值,假如它是Kz,則將Kz與K1對(duì)換,然后從K2,K3,…,Kn中選擇最小值Kz,再將Kz與K2對(duì)換. 如此進(jìn)行選擇和調(diào)換n-2趟,第(n-1)趟,從Kn-1、Kn中選擇最小值Kz將Kz與Kn-1對(duì)換,最后剩下的就是該序列中的最大值,一個(gè)由小到大的有序序列就這樣形成. 即: 在要排序的一組數(shù)中,選出最小的一個(gè)數(shù)與第一個(gè)位置的數(shù)交換,然后在剩下的數(shù)當(dāng)中再找最小的與第二個(gè)位置的數(shù)交換,如此循環(huán)到倒數(shù)第二個(gè)數(shù)和最后一個(gè)數(shù)比較為止(圖2)。
直接插入排序(Straight Insertion Sort)是一種最簡(jiǎn)單的排序方法,它的基本思想是將任一數(shù)插入到已排好序的數(shù)據(jù)序列中并保持序列的排序。如果數(shù)組a[n]中存放的數(shù)據(jù)序列是升序,當(dāng)插入的數(shù)num比已有序列最后一個(gè)數(shù)大,則將插入到序列的末尾;如果插入的數(shù)num不比序列最后一個(gè)數(shù)大,則將它依次與a[0]~a[n-1]進(jìn)行比較,直到出現(xiàn)a[i]>=num為止,這時(shí)表示a[0]~a[i-1]各元素的值比num小,這時(shí)將a[i]~a[n-1]各元素向后移一人位置,把a(bǔ)[i]空出,最后將num放在a[i]中,最終完成插入排序。
程序設(shè)計(jì)如下:
3 排序算法的分析
3.1 排序算法比較
3.1.1 簡(jiǎn)單選擇排序
1)關(guān)鍵字比較次數(shù)
無論文件初始狀態(tài)如何,在第i趟排序選出最小關(guān)鍵字的記錄,需做n-i次比較,因此總的比較次數(shù)為: n(n-1)/2 = O(n2)。
2)記錄的移動(dòng)次數(shù)
當(dāng)初始文件為“正序”時(shí),移動(dòng)次數(shù)為0??;當(dāng)文件初態(tài)反序時(shí),每趟排序均要執(zhí)行交換操作,其中的移動(dòng)次數(shù)取最大值(n-1)?。?/p>
3)時(shí)間復(fù)雜度
簡(jiǎn)單選擇排序的平均時(shí)間復(fù)雜度[1]為O(n2) 。
4)穩(wěn)定性分析
簡(jiǎn)單選擇排序是不穩(wěn)定的。
3.1.2 冒泡排序
1)關(guān)鍵字比較次數(shù)
若初始序列為“正序”序列,則只需進(jìn)行一趟排序,在排序過程中進(jìn)行(n-1)次關(guān)鍵字的比較。反之,若初始序列為“逆序”序列,則需進(jìn)行(n-1)趟排序,需進(jìn)行n(n-1)/2次比較。
2)記錄的移動(dòng)次數(shù)
當(dāng)初始文件為“正序”時(shí),移動(dòng)次數(shù)為0?。划?dāng)文件初態(tài)“反序”時(shí),每趟排序均要執(zhí)行交換操作,其中的移動(dòng)次數(shù)取最大值n(n-1)/2?。?/p>
3)時(shí)間復(fù)雜度
冒泡排序的平均時(shí)間復(fù)雜度為O(n2) 。但當(dāng)原始關(guān)鍵字序列已有序時(shí),只進(jìn)行一趟比較就結(jié)束,此時(shí)時(shí)間復(fù)雜度為O(n).
4)穩(wěn)定性分析
冒泡排序是穩(wěn)定的。
3.1.3 直接插入排序
1)關(guān)鍵字比較次數(shù)
若初始序列為“正序”序列,則只需進(jìn)行一趟排序,在排序過程中進(jìn)行(n-1)次關(guān)鍵字的比較。反之,若初始序列為“逆序”序列,則需進(jìn)行(n+2)(n-1)/2次比較。
2)記錄的移動(dòng)次數(shù)
當(dāng)初始文件為“正序”時(shí),最小移動(dòng)次數(shù)為0 ;當(dāng)文件初態(tài)“反序”時(shí),記錄移動(dòng)的次數(shù)也達(dá)最大值[1]:(n+4)(n-1)/2??;
3)時(shí)間復(fù)雜度
直接插入排序的平均時(shí)間復(fù)雜度為O(n2) 。
4)穩(wěn)定性分析
冒泡排序是穩(wěn)定的。
3.2 排序算法的分析
1)若n較?。ㄈ鏽≤50),可采用直接插入或簡(jiǎn)單選擇排序。
當(dāng)記錄規(guī)模較小時(shí),直接插入排序較好;否則因?yàn)楹?jiǎn)單選擇移動(dòng)的記錄數(shù)少于直接插人,應(yīng)選簡(jiǎn)單選擇排序?yàn)橐恕?/p>
2)若文件初始狀態(tài)基本有序(指正序),則應(yīng)選用直接插人、冒泡排序?yàn)橐耍?/p>
3)若n較大,則應(yīng)采用時(shí)間復(fù)雜度為O(nlgn)[3]的排序方法:快速排序、堆排序或歸并排序。
快速排序是目前基于比較的內(nèi)部排序中被認(rèn)為是最好的方法,當(dāng)待排序的關(guān)鍵字是隨機(jī)分布時(shí),快速排序的平均時(shí)間最短。
參考文獻(xiàn):
[1] 嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)[M].北京:清華大學(xué)出版社,2002.
關(guān)鍵詞:C程序設(shè)計(jì);教學(xué)方式;實(shí)驗(yàn)教學(xué)
中圖分類號(hào):G642文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2008)11-20290-01
1 引言
C 程序設(shè)計(jì)功能豐富、表達(dá)能力強(qiáng),既具有高級(jí)語言的優(yōu)點(diǎn),又具有低級(jí)語言的許多特點(diǎn),在當(dāng)今系統(tǒng)軟件和部分應(yīng)用軟件的開發(fā)中具有很強(qiáng)的實(shí)用性。[1]C程序設(shè)計(jì)是計(jì)算機(jī)及相關(guān)專業(yè)中一門重要的計(jì)算機(jī)基礎(chǔ)課程,也是《C++程序設(shè)計(jì)》、《數(shù)據(jù)結(jié)構(gòu)》和《操作系統(tǒng)》等課程的前導(dǎo)課程。由于作為程序設(shè)計(jì)的入門課程,同時(shí)C語言牽涉到的概念比較復(fù)雜,規(guī)則繁多,使用靈活,容易出錯(cuò),使不少初學(xué)者感到學(xué)習(xí)困難。這就要求教師深入探討教學(xué)內(nèi)容、方法及手段的改革,尤其是探索一套行之有效的教學(xué)方法。
2 明確教學(xué)目的、引導(dǎo)學(xué)生正確認(rèn)識(shí)課程
C 程序設(shè)計(jì)主要培養(yǎng)學(xué)生正確的設(shè)計(jì)算法以及編程能力,熟練掌握程序設(shè)計(jì)的思想,培養(yǎng)學(xué)生結(jié)合所學(xué)知識(shí)解決實(shí)際問題的能力和正確的編程思維方式。但是《C程序設(shè)計(jì)》課程在學(xué)生心中沒被引起足夠的重視,對(duì)課程的理解普遍存在兩個(gè)誤區(qū):一是在當(dāng)今的軟件領(lǐng)域,C語言已經(jīng)無用武之地,想一步到位學(xué)C++、JAVA之類;二是程序設(shè)計(jì)對(duì)今后的學(xué)習(xí)和工作意義不大。[2]
針對(duì)這兩個(gè)錯(cuò)誤的看法,我們從兩個(gè)方面有意識(shí)地引導(dǎo)學(xué)生正確對(duì)待C 程序設(shè)計(jì):第一、強(qiáng)調(diào)算法,我們通過講解一些常用的、經(jīng)典的算法,使學(xué)生對(duì)學(xué)習(xí)C程序設(shè)計(jì)有更高層次的認(rèn)識(shí),認(rèn)識(shí)到算法是程序的靈魂,只要有了算法,可以用不同的計(jì)算機(jī)語言來實(shí)現(xiàn);第二、理論與實(shí)踐相結(jié)合,收集一些與專業(yè)聯(lián)系緊密的應(yīng)用程序作為范例,同時(shí)可以例舉一些因特網(wǎng)上的應(yīng)用(例如:網(wǎng)站、網(wǎng)絡(luò)游戲的開發(fā)),讓學(xué)生清晰的認(rèn)識(shí)到程序設(shè)計(jì)的重要作用。
3 注重教學(xué)改革,采用多樣化的教學(xué)方式
實(shí)例式教學(xué)注重實(shí)例演示、動(dòng)手實(shí)踐,與計(jì)算機(jī)學(xué)科自身的實(shí)踐性、操作性強(qiáng)的特點(diǎn)相一致。優(yōu)秀的課堂教學(xué)應(yīng)該以程序設(shè)計(jì)為主線, 寓概念于實(shí)例中, 將復(fù)雜枯燥的語法知識(shí)分解到每個(gè)生動(dòng)、有趣、實(shí)用的程序?qū)嵗校苊庖晃兜亟o學(xué)生講解語句的功能和語法規(guī)則,使學(xué)生陷入到繁瑣的語法規(guī)則之中。實(shí)例選取的適當(dāng)與否直接影響學(xué)生的學(xué)習(xí)效果;選取時(shí)應(yīng)注重基礎(chǔ)知識(shí)與基本技能的訓(xùn)練,選取的實(shí)例既有基礎(chǔ)性、典型性,又要盡量保持一定的趣味性。
在實(shí)例式教學(xué)活動(dòng)中,我們不能只給學(xué)生一張n-s流程圖,一個(gè)正確的程序和結(jié)果,而更應(yīng)該展示給學(xué)生的是一個(gè)過程,一個(gè)思想,也就是怎么樣去解決這個(gè)問題。我們的重點(diǎn)在于教會(huì)學(xué)生掌握方法,即幫助學(xué)生學(xué)會(huì)自己解決問題。我們首先介紹實(shí)際問題,針對(duì)問題進(jìn)行分析,然后將實(shí)際問題抽象為數(shù)學(xué)模型(能否得到正確的數(shù)學(xué)模型就決定我們的程序能否得到正確的結(jié)果),接著我們介紹問題的解決辦法(即算法和數(shù)據(jù)結(jié)構(gòu)),最后使用C編程實(shí)現(xiàn)。在教學(xué)過程中,教師切忌采用灌輸式教學(xué),一味的自演自說,而是應(yīng)該有意識(shí)地舉一些例子,由淺入深、由易到難、循序漸進(jìn)、逐步深入的介紹我們的知識(shí)點(diǎn);通過與學(xué)生的不斷互動(dòng),活躍、引導(dǎo)他們的思維,來啟發(fā)學(xué)生發(fā)現(xiàn)問題、解決問題;將自身角色轉(zhuǎn)變?yōu)閷W(xué)生主動(dòng)學(xué)習(xí)的幫助者、促進(jìn)者,培養(yǎng)學(xué)生獨(dú)立思考能力。
這個(gè)過程的重點(diǎn)是介紹程序設(shè)計(jì)方法和思路,在分析程序和程序設(shè)計(jì)中讓學(xué)生逐步熟悉基本的語法和語句。對(duì)于在程序中出現(xiàn)的新的語句或函數(shù),我們據(jù)此實(shí)例對(duì)其進(jìn)行講解,不做詳細(xì)深入講解,進(jìn)而來突出程序設(shè)計(jì)為主線、算法是教學(xué)重點(diǎn)。在學(xué)生掌握實(shí)例的算法以后,我們針對(duì)新出現(xiàn)的語句或函數(shù)給出若干問題作為課下作業(yè),采用問題驅(qū)動(dòng)法來引導(dǎo)學(xué)生對(duì)該語句或函數(shù)進(jìn)行更深入學(xué)習(xí),這樣一方面,我們可以在有限的學(xué)時(shí)內(nèi),更好的講授教學(xué)重點(diǎn)難點(diǎn);另一方面,可以引導(dǎo)學(xué)生在課余時(shí)間充分發(fā)揮自己的思維,突出其在學(xué)習(xí)中的主體作用,培養(yǎng)其自學(xué)能力。
整個(gè)教學(xué)過程中強(qiáng)調(diào)在應(yīng)用中學(xué)習(xí),從而避免了枯燥、繁雜的理論說教,不僅能增進(jìn)學(xué)生的學(xué)習(xí)興趣和積極性,而且對(duì)提高學(xué)生綜合分析和解決實(shí)際問題的能力也大有幫助。
4 強(qiáng)化實(shí)驗(yàn)教學(xué),培養(yǎng)動(dòng)手能力
C程序設(shè)計(jì)是一門理論與實(shí)踐并重的課程。我們應(yīng)該改變實(shí)驗(yàn)教學(xué)為理論教學(xué)的附屬、實(shí)驗(yàn)僅僅是對(duì)理論的簡(jiǎn)單驗(yàn)證的觀念,認(rèn)識(shí)到學(xué)生只有通過實(shí)驗(yàn)環(huán)節(jié)才能在實(shí)踐中真正的掌握C語言語法、語義,培養(yǎng)程序設(shè)計(jì)的能力。因此,我們要加大實(shí)驗(yàn)教學(xué)的力度,對(duì)實(shí)驗(yàn)教學(xué)的各個(gè)環(huán)節(jié)進(jìn)行精心設(shè)計(jì)。
興趣是激發(fā)學(xué)生主動(dòng)學(xué)習(xí)C語言的關(guān)鍵,而加強(qiáng)實(shí)驗(yàn)教學(xué),盡力提高實(shí)驗(yàn)內(nèi)容的趣味性,利用學(xué)生在實(shí)驗(yàn)過程中產(chǎn)生的“求知欲”和“成就感”是激發(fā)學(xué)習(xí)興趣的一種重要方式。精心設(shè)計(jì)實(shí)驗(yàn)內(nèi)容,使其不但與理論教學(xué)同步,而且突出理論知識(shí)的重點(diǎn)與難點(diǎn)。實(shí)驗(yàn)內(nèi)容包括三部分:一、驗(yàn)證型實(shí)驗(yàn)。該部分要求學(xué)生根據(jù)實(shí)驗(yàn)指導(dǎo)書中要求進(jìn)行操作,題目有參考答案可以借鑒。主要通過對(duì)一些知識(shí)點(diǎn)的驗(yàn)證,來幫助學(xué)生掌握基本的知識(shí)點(diǎn);二、簡(jiǎn)單的編程題與程序填空題。該部分內(nèi)容主要針對(duì)所學(xué)的新概念、新語句,是對(duì)他們的簡(jiǎn)單的運(yùn)用,盡量體現(xiàn)出教學(xué)重點(diǎn)與難點(diǎn);三、程序改錯(cuò)。內(nèi)容的選取主要針對(duì)學(xué)生容易疏忽、易犯錯(cuò)誤的知識(shí)點(diǎn),通過這些“反例”幫助學(xué)生扎實(shí)掌握知識(shí)點(diǎn);四、編程題,該部分題目較復(fù)雜,具有一定難度,注重前后知識(shí)的銜接,需要綜合運(yùn)用前面章節(jié)的內(nèi)容,要求學(xué)生綜合所學(xué)的知識(shí)來達(dá)到知識(shí)的系統(tǒng)化[3]。同時(shí),在設(shè)置實(shí)驗(yàn)內(nèi)容時(shí)我們應(yīng)該考慮到不同層次的學(xué)生,通過設(shè)置一部分選做題來引導(dǎo)學(xué)有余力的學(xué)生進(jìn)一步學(xué)習(xí)。多種實(shí)驗(yàn)內(nèi)容的結(jié)合, 即鞏固了學(xué)生的理論基礎(chǔ),又可提高學(xué)生分析問題、解決問題的能力,從而使學(xué)生整體的動(dòng)手能力有所提高。
在指導(dǎo)實(shí)驗(yàn)時(shí),應(yīng)讓學(xué)生先獨(dú)立解決問題,在學(xué)生不能獨(dú)立完成時(shí),教師應(yīng)該先詢問學(xué)生的解題思路,通過與學(xué)生進(jìn)行討論來引導(dǎo)學(xué)生、讓學(xué)生自己發(fā)現(xiàn)問題,分析、解決問題,從而達(dá)到輔導(dǎo)的目的,而不是直接告訴學(xué)生正確的解題思路。
實(shí)踐環(huán)節(jié)要注重學(xué)生調(diào)試程序能力的培養(yǎng)?;菊{(diào)試技術(shù)是深入學(xué)習(xí)和取得實(shí)際編程能力的前提,可通過現(xiàn)場(chǎng)演示等手段,講解C語言的編譯環(huán)境及一些常用的調(diào)試技巧,例如通過單步執(zhí)行、設(shè)置斷點(diǎn)、觀察變量的值等調(diào)試技巧來幫助學(xué)生理解程序的執(zhí)行過程,增強(qiáng)程序的排錯(cuò)能力。教師需要對(duì)實(shí)驗(yàn)操作中遇到的問題和常犯的操作錯(cuò)誤進(jìn)行歸納總結(jié),集中進(jìn)行講授,及時(shí)有效地清除學(xué)生學(xué)習(xí)過程中的障礙。
5 改革課程考核方式
課程考核采用筆試考試、實(shí)驗(yàn)考試及平時(shí)實(shí)驗(yàn)成績(jī)相結(jié)合的方式。其中筆試考試占總成績(jī)的50%,可采用類似計(jì)算機(jī)二級(jí)考試的C 語言部分作為考題,對(duì)學(xué)生掌握理論基礎(chǔ)知識(shí)的程度進(jìn)行全方位考查。實(shí)驗(yàn)考試占總成績(jī)的40%,采用上機(jī)操作的考核方式,考察學(xué)生的編程能力、程序調(diào)試能力。平時(shí)實(shí)驗(yàn)成績(jī)占總成績(jī)的10%,考核依據(jù)為平時(shí)實(shí)驗(yàn)項(xiàng)目的完成情況。
課程的這種考核方式避免了學(xué)生埋頭于書本,死記硬背知識(shí)點(diǎn),忽視實(shí)際操作能力與應(yīng)用能力的培養(yǎng);使學(xué)生將精力集中于程序的設(shè)計(jì)與調(diào)試,有助于實(shí)際動(dòng)手能力的培養(yǎng)。
6 結(jié)束語
C程序設(shè)計(jì)這門課程,作為程序設(shè)計(jì)的入門課程,起著重要的作用。教師要有效地組織教學(xué),以“程序設(shè)計(jì)”為主線,靈活地運(yùn)用多種方法進(jìn)行課堂教學(xué);注重學(xué)生程序設(shè)計(jì)能力的培養(yǎng),抓好實(shí)踐技術(shù)技能的訓(xùn)練;激發(fā)學(xué)生的學(xué)習(xí)興趣,讓學(xué)生主動(dòng)、愉快地學(xué)習(xí),這樣才能取得良好的教學(xué)效果。
參考文獻(xiàn):
[1] 譚浩強(qiáng).C程序設(shè)計(jì)[M](第三版)[M].北京:清華大學(xué)出版社,2005.
關(guān)鍵詞:C語言;程序設(shè)計(jì);機(jī)考;分層教學(xué);課程改革
中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)34-8225-02
《C語言程序設(shè)計(jì)》課程的授課對(duì)象是計(jì)算機(jī)專業(yè)本科學(xué)生,為專業(yè)基礎(chǔ)(必修)課,是學(xué)好后續(xù)各軟件課程必要的基礎(chǔ)。有別于已經(jīng)掌握的漢語、英語語言,作為人與計(jì)算機(jī)交流的語言,C語言不但概念多、符號(hào)多、語法多、規(guī)則多,而且抽象、難懂,再加上需要有一定的理解力以及解決問題的清晰思路,有些學(xué)生在學(xué)習(xí)過程中會(huì)感覺到枯燥、繁雜、無趣。因此培養(yǎng)學(xué)生的學(xué)習(xí)興趣、加強(qiáng)對(duì)課程的重視、提高實(shí)際編程能力、將理論與實(shí)際相結(jié)合,是教師必須解決的問題。
為了提高學(xué)習(xí)質(zhì)量,從2010年秋季學(xué)期開始對(duì)《C語言程序設(shè)計(jì)》課程的教學(xué)過程、成績(jī)考核進(jìn)行了改革,由原來的紙質(zhì)試卷考試變成全程上機(jī)考試。改革實(shí)施多年來,大部分學(xué)生增加了學(xué)習(xí)興趣,有了編寫程序的主動(dòng)性和積極性,增加了專業(yè)學(xué)習(xí)的信心,提升了程序設(shè)計(jì)的能力。
考慮到學(xué)生在基礎(chǔ)知識(shí)、智力因素、學(xué)習(xí)能力上的差異,為了更有效地實(shí)施“因材施教”,從2013年秋季學(xué)期開始實(shí)施分層教學(xué)。在講完C語言基礎(chǔ)知識(shí)、程序基本設(shè)計(jì)方法之后進(jìn)行分層。通過考核,外加自愿的原則,將原來的教學(xué)班打亂,重新組合成兩種班型――高層次、低層次班。分層之后,每個(gè)學(xué)生個(gè)體獲取的知識(shí)趨于最大化,極大地提高了課堂學(xué)習(xí)效率。
1 傳統(tǒng)教學(xué)與紙質(zhì)考試存在的問題
傳統(tǒng)的教學(xué)是按照指定教材,在課上將重點(diǎn)內(nèi)容進(jìn)行講解,典型的問題、方法在TC/VC環(huán)境中進(jìn)行演示,課后留給學(xué)生一定的紙質(zhì)作業(yè)和上機(jī)編程作業(yè)。同樣的講授,理解力強(qiáng)的學(xué)生一聽就懂;理解力弱的學(xué)生,老師需要講多遍才有可能懂。傳統(tǒng)的教學(xué)中,老師只能顧及大多數(shù)中等學(xué)生,照顧不到特殊的學(xué)生。降低了課堂效率,也可以說浪費(fèi)了某一部分學(xué)生的時(shí)間。
由于期末考核采用的是紙質(zhì)考試,只是從紙面上考核學(xué)生對(duì)C語言理論、編程方法的理解、掌握程度,更對(duì)學(xué)生的學(xué)習(xí)產(chǎn)生誤導(dǎo)。部分學(xué)生也只重視理論,不重視實(shí)際動(dòng)手編程。他們只滿足于“紙上談兵”,不考慮結(jié)果。因此,實(shí)際應(yīng)用時(shí),對(duì)上機(jī)環(huán)境不熟悉、編寫的程序不能順利通過,導(dǎo)致很多學(xué)生高分低能,在解決實(shí)際問題時(shí),茫然無措。
2 機(jī)考及分層教學(xué)改革的探索
計(jì)算機(jī)專業(yè)課程的特點(diǎn)是實(shí)踐性強(qiáng),學(xué)生在掌握了基本語法后重點(diǎn)是上機(jī)實(shí)踐,即在計(jì)算機(jī)上解決實(shí)際問題,這里包括問題的分析與抽象、程序的編寫與調(diào)試。
常言道:“實(shí)踐是檢驗(yàn)真理的標(biāo)準(zhǔn)”。在學(xué)習(xí)C語言過程中,上機(jī)實(shí)踐是鞏固理論知識(shí)、增加理解力、提升編程能力的重要途徑。為了提高教學(xué)質(zhì)量,讓學(xué)生真正打好專業(yè)基礎(chǔ),授課教師在教學(xué)內(nèi)容、教學(xué)方法、教學(xué)組織、考試方式等多方面上進(jìn)行了調(diào)整。
2.1 教學(xué)方法以及教學(xué)組織上的改革
為了使教學(xué)效果更好,將兩個(gè)自然班作為一個(gè)授課班,教學(xué)內(nèi)容統(tǒng)一要求。講授時(shí),由淺入深、循序漸進(jìn)。在語言的基礎(chǔ)上,重點(diǎn)放在程序設(shè)計(jì)的思想、方法、技巧的講解,結(jié)合典型例題,培養(yǎng)學(xué)生分析、設(shè)計(jì)、解決問題的能力。通過精心設(shè)計(jì)實(shí)驗(yàn)題目、課后作業(yè)、調(diào)整考核比例、增加課后上機(jī)機(jī)時(shí)、多方位提供答疑指導(dǎo)等環(huán)節(jié)培養(yǎng)學(xué)生學(xué)習(xí)興趣,使學(xué)生重視上機(jī)編程。
對(duì)學(xué)生作業(yè)題目進(jìn)行精心設(shè)計(jì),既覆蓋知識(shí)點(diǎn),又有趣味性,每個(gè)題目都像在講一個(gè)故事,把要解決的問題融在故事中,學(xué)生在讀故事的同時(shí),不自覺地就會(huì)去想解決辦法,增加了興趣,提高了自主性,也鍛煉了思維。
調(diào)整平時(shí)考核內(nèi)容。平時(shí)考核的環(huán)節(jié)包括:上機(jī)小測(cè)試、期中機(jī)考、上機(jī)作業(yè)、考勤,每一個(gè)環(huán)節(jié)的成績(jī)都會(huì)反映到平時(shí)成績(jī)中。平時(shí)成績(jī)的取得完全依賴自己的學(xué)習(xí)態(tài)度。
增加課后上機(jī)機(jī)時(shí)。由于考核重點(diǎn)是對(duì)實(shí)際動(dòng)手能力的考核,光靠課內(nèi)安排的上機(jī)時(shí)間顯然不夠,所以需增加學(xué)生課外自主上機(jī)實(shí)驗(yàn)時(shí)間,并配有指定人員輔導(dǎo)。
多方位提供答疑指導(dǎo)。所有任課教師把答疑時(shí)間錯(cuò)開,這樣每周學(xué)生可以有多次答疑時(shí)間,對(duì)比原來教師只給自己學(xué)生答疑的做法,學(xué)生增加了學(xué)習(xí)解疑的機(jī)會(huì)。
2.2加強(qiáng)上機(jī)實(shí)驗(yàn)過程控制,促進(jìn)考試改革
借助于“課程自動(dòng)評(píng)測(cè)與抄襲檢測(cè)系統(tǒng)”,老師和學(xué)生有了C語言作業(yè)部署、學(xué)習(xí)、檢測(cè)的平臺(tái)。通過這個(gè)平臺(tái),老師可以布置上機(jī)實(shí)驗(yàn)、安排考試、檢查學(xué)生提交的作業(yè)。根據(jù)知識(shí)點(diǎn),每章布置4-5道題,限定學(xué)生在規(guī)定時(shí)間內(nèi)獨(dú)立提交。老師可以隨時(shí)查看學(xué)生提交的程序,及時(shí)與學(xué)生溝通、反饋。學(xué)生可以隨時(shí)把自己編寫的程序提交,系統(tǒng)對(duì)提交到服務(wù)器的程序自動(dòng)判斷對(duì)錯(cuò),學(xué)生可以及時(shí)了解自己程序存在的問題,不斷進(jìn)行修改,直到能夠順利通過所有測(cè)試。
這一環(huán)節(jié)起到了鞏固課本知識(shí)、增加獨(dú)立思考、加強(qiáng)動(dòng)手能力的作用。期末就是利用這個(gè)平臺(tái)進(jìn)行全程兩個(gè)小時(shí)的考試,要求學(xué)生既有編程的能力,又有時(shí)間的緊迫感。
加強(qiáng)過程考核,增加平時(shí)機(jī)考次數(shù)。為了緩解期末機(jī)考時(shí)的緊張情緒,之前會(huì)安排1-2次的上機(jī)考試,成績(jī)記入期評(píng),其中期中考試的考試形式與期末一樣,為全程兩個(gè)小時(shí)的機(jī)考,隨機(jī)組卷。學(xué)生可以盡早了解考試模式,并更加重視對(duì)本門課程實(shí)際動(dòng)手能力的訓(xùn)練,學(xué)會(huì)調(diào)整心態(tài)。
為了滿足不同層次學(xué)生的要求,在平臺(tái)上配備了大量不同難度的習(xí)題,不受提交時(shí)間的限制。學(xué)生可以根據(jù)自身需求,隨時(shí)編程測(cè)試。
2.3分層教學(xué),提升學(xué)習(xí)效率
分層教學(xué)是根據(jù)學(xué)生不同基礎(chǔ)、不同學(xué)習(xí)需求而實(shí)施教學(xué)的一種手段。是在承認(rèn)學(xué)生差異、考慮學(xué)生興趣的前提下,以發(fā)展的眼光看待學(xué)生,給每個(gè)學(xué)生提供符合他們發(fā)展的教學(xué)目標(biāo)與方法,是同時(shí)提高所有學(xué)生能力的理想狀態(tài)。經(jīng)過調(diào)研,從三個(gè)方面進(jìn)行分層教學(xué)。
1)學(xué)生分層。對(duì)學(xué)生能力考核的一個(gè)重要標(biāo)準(zhǔn)就是學(xué)生的學(xué)習(xí)成績(jī),但是在學(xué)習(xí)這門課之初,沒有可依據(jù)的成績(jī)。分層安排在講完兩周課,即學(xué)完了簡(jiǎn)單程序設(shè)計(jì)之后進(jìn)行。學(xué)生根據(jù)自己當(dāng)前對(duì)C語言的理解和接受程度,選擇不同層次。在分層教學(xué)的實(shí)施過程中,這樣的分層是暫時(shí)的、動(dòng)態(tài)的。過一段時(shí)間,視學(xué)生的后期學(xué)習(xí)成績(jī)、學(xué)生的具體情況,可遞進(jìn)或降層。這樣更有利于學(xué)生個(gè)性化發(fā)展。
2)講課分層。對(duì)不同層次的學(xué)生,采取不同課堂。在講授編程思想、必備知識(shí)基礎(chǔ)上,對(duì)高層次學(xué)生,拓寬和加深問題的難度,做到拔尖提高;對(duì)普通學(xué)生,在達(dá)到大綱要求的同時(shí),考慮他們的接受能力,適度增加和加深知識(shí),做到穩(wěn)步推進(jìn)。
3)實(shí)驗(yàn)分層。練習(xí)是對(duì)所學(xué)知識(shí)的鞏固和消化。按照作業(yè)、實(shí)驗(yàn)題目的難易,對(duì)不同層次的學(xué)生提出不同要求。對(duì)普通學(xué)生布置基礎(chǔ)題,進(jìn)行強(qiáng)化訓(xùn)練;對(duì)高層次學(xué)生,以綜合運(yùn)用知識(shí)進(jìn)行練習(xí)。要求學(xué)生多編程解決問題,以提高應(yīng)用知識(shí)的能力。這樣使得不同層次的學(xué)生得到不同程度的提高。
3 教學(xué)改革實(shí)踐效果
實(shí)行考試改革后,學(xué)生的學(xué)習(xí)積極性有了明顯提高。由于考試時(shí)間的有限性,增加了學(xué)生的緊迫感、主動(dòng)性,在程序編寫、調(diào)試程序的實(shí)際動(dòng)手能力方面得到了重視并有所提高,為后續(xù)課程學(xué)習(xí)奠定了良好的基礎(chǔ)。經(jīng)過分層教學(xué),滿足了不同層次學(xué)生學(xué)習(xí)的需要,激勵(lì)了各層次學(xué)生朝著有利于自己的方向努力,有利于學(xué)生個(gè)性能力的張揚(yáng),有利于學(xué)生綜合素質(zhì)的提高,更有利于優(yōu)秀學(xué)生綜合能力的發(fā)揮、較低層次學(xué)生潛在能力的開發(fā)。
3.1帶動(dòng)學(xué)風(fēng),促進(jìn)后續(xù)課程的學(xué)習(xí)
大部分學(xué)生能夠按時(shí)到課,勤于思考,互相研究,答疑的同學(xué)增多了。改變了不良學(xué)風(fēng),營(yíng)造了良好學(xué)習(xí)氛圍。由于課程期間比較重視學(xué)生結(jié)構(gòu)化程序設(shè)計(jì)的方法,要求編寫程序之前理清解題思路、做好算法設(shè)計(jì),經(jīng)過訓(xùn)練后,在后續(xù)的“程序設(shè)計(jì)專題訓(xùn)練”中,面對(duì)稍難一些的問題,學(xué)生也能逐步找到解決辦法,編出程序,順利通過測(cè)試。在小學(xué)期“學(xué)術(shù)工程實(shí)踐”課程中,要求完成一個(gè)小型管理系統(tǒng),有一定的難度。大部分學(xué)生能夠順利編寫由多個(gè)結(jié)構(gòu)體、多個(gè)文件、幾十個(gè)函數(shù)組成的、2000-4000行代碼的程序,并調(diào)試成功,完成管理。
3.2提升學(xué)生的程序設(shè)計(jì)能力和創(chuàng)新能力
競(jìng)賽是考核學(xué)生全面素質(zhì)的一個(gè)平臺(tái),它要求學(xué)生具有扎實(shí)的理論基礎(chǔ)、清晰的算法設(shè)計(jì)能力、嫻熟的編程能力、良好的心理素質(zhì)和快速的臨場(chǎng)應(yīng)變能力。
隨著知識(shí)的積累,學(xué)生的能力和自信心不斷增強(qiáng)。學(xué)生們更加渴求知識(shí),渴望展示自己,參加競(jìng)賽的積極性提高了,人數(shù)也不斷增多。在大二階段,報(bào)名參加全國(guó)軟件設(shè)計(jì)大賽的人數(shù)由09級(jí)的16人次(占09級(jí)學(xué)生人數(shù)14.04%)、10級(jí)的33人次(占10級(jí)學(xué)生人數(shù)26.19%),增加到11級(jí)的66人次(占11級(jí)學(xué)生人數(shù)51.56%)。全國(guó)獲獎(jiǎng)人數(shù)由09級(jí)的1人次(占09級(jí)學(xué)生人數(shù)0.88%),到10級(jí)的12人次(占10級(jí)學(xué)生人數(shù)9.52%),再到11級(jí)的17人次(占11級(jí)學(xué)生人數(shù)13.28%),獲獎(jiǎng)人數(shù)同比增多。
4 結(jié)論
總之,學(xué)習(xí)“高級(jí)程序設(shè)計(jì)語言”不僅要使得學(xué)生在程序表達(dá)和設(shè)計(jì)上得到培養(yǎng),更重要的是在掌握解決問題的思想、方法和手段的同時(shí),實(shí)際動(dòng)手編程能力有所提高,從而增長(zhǎng)設(shè)計(jì)程序的能力。因而,將“C程序設(shè)計(jì)”課程的考試改為上機(jī)考試是很有益的,可以改變不良的學(xué)風(fēng),營(yíng)造良好學(xué)習(xí)氛圍;可以加強(qiáng)學(xué)生對(duì)課程的重視,提高學(xué)生程序編寫、調(diào)試等實(shí)際動(dòng)手能力,提升學(xué)生的程序設(shè)計(jì)能力和創(chuàng)新能力,為后續(xù)課程學(xué)習(xí)、為培養(yǎng)合格的專業(yè)人才奠定良好的基礎(chǔ)。
對(duì)“C程序設(shè)計(jì)”課程實(shí)施分層次教學(xué)也是必要的,可以針對(duì)不同層次學(xué)生的需求給予相應(yīng)的學(xué)習(xí)指導(dǎo),以達(dá)到學(xué)生全面發(fā)展的教學(xué)目標(biāo);可以激發(fā)不同層次學(xué)生學(xué)習(xí)的欲望,向著更高更深的知識(shí)海洋探索;可以鞭策任課教師積極思考、合理取舍,做到充分了解學(xué)生、合理安排進(jìn)度,能夠極大地提升老師的組織與應(yīng)變能力。
參考文獻(xiàn):
[1] 李學(xué)會(huì).C程序設(shè)計(jì)教學(xué)改革與實(shí)踐[J].實(shí)驗(yàn)室科學(xué),2010(4)33-34.