前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇c程序范文,相信會為您的寫作帶來幫助,發(fā)現(xiàn)更多的寫作思路和靈感。

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