前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇c語言程序范文,相信會為您的寫作帶來幫助,發現更多的寫作思路和靈感。
關鍵詞:考試系統;多媒體技術;數據源;連接數據庫
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2007)03-10854-03
1 課題研究的意義和目的
1.1研究意義
現在,多媒體技術日趨成熟,多媒體系統以其能輸出精彩的圖形和圖像、美妙的聲音、動感的畫面贏得了用戶和社會各界廣泛的關注和應用。如果把按傳統考試方式同現代化的多媒體技術相結合,并且用多媒體著作工具及其它多媒體技術,編制一套符合高校考試需求的系統及其配套的多媒體教學軟件,利用多媒體技術生動、直觀、形象展示信息的特點,輔助教師授課和學生進行考試,尤其對部分有限制性的實驗環節,可利用活動視頻技術進行展示,這將會解決一系列目前存在的問題。總之,該課題是在計算機輔助教學及考試上進行的一次積極有意義的嘗試,為其他實踐性較強的課程進行多媒體輔助教學開辟一條新的路子,具有一定的理論和現實意義。
1.2目的
傳統的考試手段主要依靠有紙試卷,幾乎沒有可重用性。本課題將實現:用計算機輔助考試系統,把多媒體生動、直觀的顯示出來,使學生不再將考試視為一種枯燥無味的東西,提高了考試效果,使學生在一種愉悅的心情中進行考試,把枯燥的重復變為充滿樂趣、具有啟發性的考試過程,使學生能比較全面的學習知識,掌握技能,達到素質教育的要求。
2 系統流程圖設計
2.1初始化流程設計
在使用Authorware創建任何多媒體項目的時候,都應該先設置當前項目文件的窗口大小,將其設置為“800×600”,然后選擇“演示居中屏幕”,同時取消對“顯示標題欄”和“顯示菜單欄”復選框的選擇。
2.2主界面的設計
本界面采用了Photoshop7.0圖形圖像處理軟件來繪制。為了避免界面的單調和呆板,用蒙版和濾鏡技術加以美化。該界面把Photoshop中的圖層技術、圖層蒙版技術、文字效果及濾鏡等功能完美的結合了起來。并且在底部設置了一個Flas,增加視覺效果。
2.3背景音樂的交互控制
該多媒體教學以MIDI作為背景音樂,背景音樂的交互控制包括背景音樂的隨機選曲播放、停止等功能,另外當該教學程序處于活動狀態時,能夠隨時調整背景音樂和講解聲音的大小及比例,讓使用者在一種輕松悅耳的環境中考試(調出WINDOWS的音量控制實現),還能夠暫停背景音樂,當再次進入活動狀態時則能重新播放背景音樂。
為了充分考慮用戶計算機的不同配置情況,首先利用BUDAPI.U32的BASOUNDCARD函數判斷用戶機器是否已經安裝了聲卡,如果已經安裝則執行背景音樂播放,否則不允許播放任何背景音樂操作.程序如下:
IF BASOUNDCARD() THEN
MIDI:=1
TEST(MIDI,MIDILOOP (FILELOCATION^”MUSIC\\MUSIC-”^RANDOM(1,5,1)^”.MID”),STOPMIDI())
END IF
軟件中的背景音樂交互控制是通過交互響應來實現的。在程序執行過程中,用戶始終可以通過按鈕控制背景音樂的播放與暫停。在計算圖標“播放音樂”后添加一交互圖標并命名為“音樂控制”,并在交互圖標右邊添加三個計算分支。設置“STOP/PLAY”分支為按鈕響應交互,其功能是實現對背景音樂的控制。由于在整個程序執行過程中它都是有效的,因此須設置其為永久按鈕,即選擇“PERPETUAL”屬性選項,同時設置“ACTIVE IF”條件為:BASOUNDCARD(),即檢測到用戶沒有安裝聲卡的情況下該按鈕及響應分支無效。
2.4內容的導航設計
該多媒體教學涉及內容繁多,不僅包括文本、圖片、聲音和動畫,而且還有其它多媒體工具與Authorware 配合,同時,還把視頻文件導入,以增加實用性。為使用戶操作簡單方便,設計了合理的教學內容導航。主文件與各章節之間的導航設計根據結構規劃中的該章節內容的欄目劃分,在流程設計中為這些欄目設計了導航,如圖1為主程序內容導航的設計流程圖。
這樣的流程設計使整個主程序結構清晰,可讀性強。由于該文件結構是主-分結構,即主文件調用各章節模塊文件的方式,因此在主文件的章節內容中實際存放的是一個起鏈接橋梁作用的調用腳本,而具體的考試試題題型內容則放在各章節的模塊文件內。
2.5各模塊的內容流程設計
圖中的考試模式、練習模式、教學模式及退出系統這四部分主要程序流程圖如下圖2、圖3、圖4、圖5所示。
第五部分的原理演示則是通過熱區交互以及調入用VC6.0制作的演示內容的庫文件,抽象的工作原理形象化,具體化。在打包的過程中采用了分步打包,首先對每部分進行打包。通過主文件調用其它各部分,這樣避免了主文件過大,影響運行速度。
3 以完成單選題為例來看具體實現過程
從單選題的數據庫題庫中隨機抽取相應題數的問題;每一題只能選擇一個答案;用戶可以按次序做答,可跳過不答,在回答過程中,可以隨時返回已做過的題目進行修改;交卷后會給出完成情況可以查看每題的回答情況.最后回到選題主界面,并把學生所做的答案成績保存到數據庫中。
當用戶在主界面中,選擇了“考試模式”后,系統就會進入到登錄界面系統會提示輸入用戶名和密碼,當輸入后,點擊“確定”后,系統將會進入到題型選擇界面。在提示框中輸入用戶名和密碼,我們點擊“確定”后,就會進入到正式的單選題型界面中,選擇“單選題”單擊。
C語言程序設計考試系統的選擇題從數據庫中取出選擇題,在一個界面上顯示。利用三個熱區域交互按鈕“上一題”“下一題,”“完成”,按鈕和四個熱區域設置計算圖標用來記錄學生所選擇的答案。在學生選擇“完成”后,彈出學生做題的情況界面,然后回到選題主界面,并把學生所做的答案成績保存到數據庫中。
3.1“未命名”用來擦除以前的圖像
(1) 打開“未命名”的屬性,進入“未命名”的屬性窗口。
(2)在“屬性窗口”中單擊擦除標簽在設置過渡效果進行設置。
(3)單擊“確定”按鈕
3.2 設置“單選界面”插入一個圖像
(1)雙擊“單選界面”圖標進入顯示圖標窗口
(2)單擊繪圖工具箱 圖標進行繪制一個和窗口矩形一樣大的矩形
(3)設置矩形的顏色為“綠色”
(4)單擊顯示圖標窗口的關閉按鈕,關閉保存對“單選界面”的設置。
3.3 設置交互“進入”
(1)在交互圖標的右邊拖放一個群組“單選”。
(2)設置單選的熱區為“按鈕”。
(3)單擊確定后,雙擊“選擇”。
3.3.1“未命名”用來擦除上次運行的圖形
3.3.2 在“打開數據庫”的輸入如下源程序:
hint0:="您的數據庫沒有連接上......"
--顯示連接數據庫的信息
title:="數據庫連接...."
ODBChandle:=ODBCOpen(WindowHandle,"","database","","")
--得到數據源
getrecord:="select count(sequence) from erigister"
--得到記錄的個數
record:=ODBCExecute(ODBChandle,getrecord)
if ODBChandle=0 then--測試連接數據庫是否連接成功
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數據庫的記錄個數,以便產生隨機數
sssum:=0
number1:=1
sui:=[]
sui[1]:=Random(1,record,1)
--下面程序用來產生一個隨機數不能出現相同的題目
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 在“做選擇的背景”顯示圖標中設計單選題的界面如上圖5.4
3.3.4 在“數據庫的操作”中輸入如下代碼:在這里,我們就要實現對數據庫的隨機讀取和跟蹤答案的長短來選擇界面
x:=0
ran:=sui[number1]
result:=""
record1:=Number(record)
record:=record1--得到記錄的個數
sqlstring1:="select topic from "^ssdatabase^" where sequence="^ran^""分別得到選擇題各項
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得到選擇題目內容
get2:=ODBCExecute(ODBChandle,sqlstring2)
--get2得到選擇項A內容
get3:=ODBCExecute(ODBChandle,sqlstring3)
--get3得到選擇項B內容
get4:=ODBCExecute(ODBChandle,sqlstring4)
--get4得到選擇項C內容
get5:=ODBCExecute(ODBChandle,sqlstring5)
--get5得到選擇項D內容
get6:=ODBCExecute(ODBChandle,sqlstring6)
--get6得到選擇題的答案
inputa:=1 --用來設置熱區域的激活條件
3.3.5空“操作”用來設置跳轉標志
3.3.6在交互圖標右邊拖入四個熱區域
在計算圖標中從左到右的四個計算圖標中輸入: result:="A" result:="b" result:="c" result:="d"在交互屬性中設置激活條件為inputa=1: ,鼠標指針設置為標準鼠標指針,其它的為默認設置.其中result變量用來記錄用戶所選的答案.
3.3.7拖一個交互圖標“未命名”在它的右邊拖兩個計算圖標為“上一題”和“下一題”,再拖一個群組“完成”放在“下一題”右邊 ,設置熱區為按鈕。在“上一題”的激活條件中輸入number1>1,鼠標指針設置為:標準的鼠標指針。在“下一題”的激活條件中輸入:number1
4 結束語
根據對教師上課時課堂練習的分析,開發出該考試系統,主要是能夠方便課堂練習,同時還可用于期中期末測試,該系統主要是針對《C語言程序設計》課程來設計的。對該系統做簡單修改,即可用于其它課程。
參考文獻:
[1]王嘉寧,朱雋.Photoshop7.0中文版新概念百例[M].中國水利水電出版社,2004,4.
[2]龔祥國.主編.Photoshop圖像處理實用教程[M].科學出版社,2002,2.
[3]王龍,金海.主編.Flash MX實戰入門新概念[M].中國水利水電出版社,2005,5.
[4]李恒.Authorware 6.0多媒體實例大制作》[M] 冶金工業出版社,2002,4.
[5]袁海東.Authorware 7.0教程[M].電子工業出版社,2004,9.
關鍵詞:C語言;程序設計;學習方法;學習興趣
中圖分類號:TP312.1-4
《C語言程序設計》是計算機專業的一門核心專業基礎課程,是專升本、考研和等級水平考試的必考科目,也是學生學習中感到比較吃力的一門課。那么,如何學習《C語言程序設計》這門課程呢?現根據自己多年在教學中的體會,談一些粗淺的認識。
1 為什么要學習《C語言程序設計》
《C語言程序設計》是用C語言來編寫程序的,每個程序員在他們的編程生涯中都應該學習C語言,因為它有太多難以忽視的好處了。除了它會給你提供更多的工作機會之外,C語言還會教給你更多的關于計算機的知識。它的好處如下:
1.1 C語言是一種計算機程序設計語言
它既具有高級語言的特點,又具有匯編語言的特點,既可以用來編寫系統軟件,又可以用來編寫應用軟件。它不僅具有繪圖能力強,還具備很強的數據處理能力,因此也適于編寫三維,二維圖形和動畫。
1.2 C語言具有功能強大、使用靈活、豐富的數據類型和運算符、結構化的控制語句、目標代碼運行效率高、適用范圍大、可移植性好等優點。
1.3 C語言是各大操作系統的基礎,Unix、Linux、Windows其內核都清一色是C語言開發的,(某些地方是和匯編語言混合開發的),還有各種語言的編譯器,包括java虛擬機,各種嵌入式設備,如手機、PDA等都是C語言開發的。
1.4 C語言是基礎,如果你學習過C語言,你就能學習現在任何的高級編程語言
因為所有的高級語言都是以C語言為基礎的(像JAVA,C++,C#等等)。C語言學好了,將來想學其他的語言,就比較好入門了。
2 如何學習《C語言程序設計》
2.1 克服畏難心理,充滿自信的學習《C語言程序設計》
大多數學生一看到《C語言程序設計》課程的教材,就有畏難的情緒,覺得C語言難學,學不會,因為他們對計算機語言不了解,另外有些英語差的同學,看到計算機編程是用英語編寫的,就未學先棄了。其實學習語言并沒有他們想象的那么難,英語差也對學習計算機語言影響不大,比如學C語言,真正要記的關鍵字不多,語法也不復雜,只要大家不帶著畏難的心理,充滿自信,一定能學好的。
2.2 要明確《C語言程序設計》的學習目的
通過《C語言程序設計》課程的學習,掌握C語言基本知識,掌握程序設計的基本方法并逐步形成正確的程序設計思想,能夠熟練運用基本程序結構解決簡單問題,理解模塊化程序設計原則并能熟練使用C語言進行程序設計,具備調試程序的能力,為后繼課程及其他程序設計課程的學習和應用打下基礎。
2.3 要明白《C語言程序設計》與一般的計算機操作課程有所不同
《C語言程序設計》是計算機的一門軟件編程課程,是用C語言來編寫程序的,它具有難度性、抽象性、連續性和邏輯嚴密性。如果你第一次課來聽了,第二次課沒來,第三次課很可能就聽不懂了。比如,第一次課講的是數字1,2,3,4……,第二次課講的是運算符號+,-,*,/,第三次課老師讓你算1+2=?,如果你前兩次課都來聽了,那么你就能算出它的結果,否則你就算不出它的結果。因此,如果要想學好《C語言程序設計》,必須堅持每次課都來,如果那天確實不能來,就應在家自學,不懂的地方應及時向老師請教,一定不能落課。
2.4 要整體把握《C語言程序設計》
C語言是一種通用的程序設計語言,在開發系統軟件和應用軟件中得到廣泛的應用,已成為當今計算機世界最流行的語言之一。C語言是一個整體,各個方面是有機聯系的,要從總體上把握它,不要把它割裂成互不關聯的部件。它包括C語言概述、數據類型(整型、實型、字符型、數組類型、指針類型、結構體類型、共用體類型等)、運算符和表達式、流程控制語句、函數、數組、字符與字符串、指針、結構體、文件等。通過《C語言程序設計》的學習,掌握程序設計的基本概念、基本思想、基本方法和基本技能,進而學會利用C語言解決實際問題,培養計算機程序設計的能力和素質,以及思維方法,為以后學習其它計算機程序語言和后續的專業課程打下基礎。
簡單的C程序是由主函數和函數體兩大部分組成。它的基本框架如下:
main()
{
}
其中main表示“主函數”。每一個C程序都必須有一個main函數,而且只能有一個main函數,它表示程序從這里開始執行。由花括號“{ }”括起的部分是函數體。其中函數體又包括定義變量、變量賦值、函數調用、輸出打印等。
例:一個簡單的求和程序
main() /*主函數*/
{
int a,b,sum; /*定義變量*/
a=123;b=456; /*變量賦值*/
sum=a+b; /*求兩數之和*/
printf(“sum is %d\n”,sum); /*輸出和值*/
}
這是一個簡單的求和程序。/*...*/表示注釋部分,只給人看的,對編譯和運行不起作用。第3行是聲明部分,定義變量a、b、sum,指定a、b、sum為整型(int)變量。第4行是兩個賦值語句,使a和b的值分別為123和456。第5行使sum的值為a+b,第6行中“%d”是輸入輸出的“格式字符串”,用來指定輸入輸出時的數據類型和格式,“%d”表示“以十進制整數形式輸出”。Printf函數中括弧內最右端sum是要輸出的變量,現在它的值為579(即123+456之值)。因此輸出一行信息為:
sum is 579
從這個例子可以看出,想要把《C語言程序設計》這門課學好,不僅要知道《C語言程序設計》的基本框架,還要學好函數體中的內容(變量類型、定義變量、變量賦值、輸入輸出格式字符串、輸入輸出函數格式、調用函數等)。另外還要學好C語言的運算符、運算順序 、四種程序結構(順序結構、分支結構、循環結構、模塊化程序結構 )、掌握一些簡單的算法等。
2.5 熟練C程序的上機步驟
在編好一個C源程序后,如何上機運行呢?要經過編輯、編譯、連接和運行四個步驟。
(1)編輯源文件。在編輯(Edit)狀態下輸入或修改源程序。
(2)編譯源程序。選擇“C編譯”菜單并選擇“編譯到OBJ”,進行編譯,得到一個后綴為.obj的目標程序。
(3)然后再選擇菜單“L連接EXE文件”,進行連接操作,可得到一個后綴為.exe的可執行文件。
(4) 運行程序。在“RUN”菜單中選擇“R運行程序”項,或直接按Ctr+F9鍵,系統就會運行已編譯好的可執行目標文件。此時,TC集成環境窗口消失,屏幕上顯示出程序運行的結果。如果程序需要輸入數據,則應在此時,從鍵盤輸入所需數據,然后程序會接著執行,輸出結果。
2.6 要加強編程訓練
《C語言程序設計》是實踐性非常強的課程,要求學員要理論聯系實際,在掌握C語言的基本語法和基本知識后,重點應放在提高編程能力的訓練上。根據學生學習的認知特點,我認為主要應從以下幾個方面進行強化訓練:
(1)吃透課本例子。每學完一次新課,讓學生對課本例子先分析任務、再仔細閱讀程序,然后按書上的源代碼敲出來,編譯執行輸出結果,如果結果跟書上一致就算完成,如果不一致,就要仔細找原因。再后不看書自己編寫代碼與課本對照,找出自己的不足,然后改進。最后在此例的基礎上自己加以改造,舉一反三,變為其它的例子,如此反復練習,不僅培養了學生動腦思考的習慣,而且養成了遇事三思、認真、周密的作風。
(2)精選上機題目,要求調試通過。每章找出一個或兩個綜合性的具有代表性的應用題目,如編寫一個程序,計算一個整數的名位數字之和;用選擇法對數組中10個整數,按由小到大的順序進行排序等,要求用C語言編寫可執行的源程序,上機調試。這樣不僅鍛煉了學生解決實際問題的能力,更重要的是激發了學生學習課程的興趣,抽象變具體 ,理論變實踐,對這門課有了更深的認識。
(3)閱讀填空法。找一些經典程序,配上必要的說明,適當去掉語句或表達式,讓學生通過閱讀填補空白,訓練學生的程序設計能力。例編寫一個程序,輸入月份號,輸出月的英文月名,還有求和、排序、報號等。
(4)準備一個經驗本,記下C語言重要的語法和知識點,還有自己出錯的解決方法及老師講解的其他同學出現的常見錯誤,抽空常翻看,逐步積累經驗,加深印象,使以后避免。
(5)帶著作業去上機。每次理論課結束后,老師都會給學生布置一些作業(如習題)讓學生做,那么學生一定要認認真真的把作業完成好,先把程序編寫在作業本上,上機時再把這些程序敲到計算機上,進行修改、調試、運行,最后輸出結果。如果學生不帶作業去上機,第一次老師警告下次一定帶作業上機,如果第二次還沒帶作業,不準學生進機房,讓學生到教室把作業做完后再到機房上機調試。有人說學生可以直接在機器上編寫程序,固然沒錯,但對于初學者來說,如果在機器上邊思考邊編寫,也就是說想一句編一句,再想一句再編一句,這樣太浪費時間,一節課說不定連一個程序都編不好,所以老師一定要求學生在課下把程序編好,上機只需把程序敲出來進行修改、調試、運行,這樣能節約大量的時間,學生上機時間本身都是有限的。
上述方法在教學實踐中證明是行之有效的,學生對問題分析、程序設計的自覺性和能動性得到提高,動手能力加強,對后繼課如《C++》、《面向對象程序設計》等,學習起來倍感輕松,較好地完成了該門課程的學習目標。總之,實踐出真知,多學、多練、多思、多交流,勤奮好學才能學成。
參考文獻:
[1]嚴桂蘭.C語言程序設計與應用教程[M].福建:廈門大學出版社,2001.
[2]譚浩強.C程序設計(第三版)[M].北京:清華大學出版社,2005.
[3]陳東.計算機多媒體教學改革的一些嘗試[J].福建師范大學學報(自然版),2004,20(3):98.
[4]王蘭.學好《C程序設計》的幾點建議[J].科技信息,2007(9).
程序設計對于各個計算機類高校而言,都是非常重要的一類課程,尤其是理工類院校的必修課。而要進行程序設計,必須掌握一門計算機語言來做為編程工具。目前,很多計算機類高校都把C語言作為程序設計的入門課程來教學。我們知道可供選擇的計算機語言是非常多的,如C++,C#,java等等,之所以選擇C語言是由于C語言功能豐富,表達能力強,使用靈活方便,應用面廣,目標程序效率高,可移植性好,它既有高級語言的優點,又有低級語言的許多特點。可以說,學好C語言對打好程序設 計基礎起到至關重要的作用。
由于很多高校在學生進入大學學習的第一學期就開設C語言課程,大多數學生在高中時因為高考的壓力而沒有接觸過計算機,對計算機的基本操作并不了解。這就導致了學生在學習C語言的過程中,感覺C語言語法枯燥,難以掌握;對基本概念能夠理解,但是當實際應用到程序編寫的時候又感覺無從下手;學生沒有養成良好的程序編寫習慣,使寫出來的程序漏洞百出……等等這些問題都跟教師的教學方法、學生的學習方法有很大的關系。針對學習C語言中的種種問題,根據筆者多年的C語言教學經驗,下面提出C語言教學中的一些新思路供大家共同探討。
1 掌握基本要求,打好學習基礎
在學生階段,C語言的學習主要是學習程序設計的方法,訓練程序設計的思維,為以后進一步的學習和應用打下良好的基礎。但在實際教學當中,很多學生改變不了高中時期的學習方法,對課本上的概念和程序死記硬背,總以為把書背熟了就能夠學好C語言,而沒有把精力放在最基礎、最常用的內容上,以至于基礎薄弱,在程序的編寫時經常會出現一些不應有的錯誤。筆者在教學中發現學生經常會出現以下一些問題。
(1)編寫程序時不區分標示符的大小寫。例如,int myname和int MyName就是完全不同的兩個變量。在C語言里面,對標示符大小寫敏感,但是很多同學就是會忽略這最基本的要求,造成程序出錯。
(2)對“=”和“==”混淆使用。“=”是C語言里的賦值符號,把右邊的值賦給左邊的變量;而“==”是關系運算符,它的作用是判斷“==”兩邊的值是否相等,返回的結果是一個邏輯值,即“真”或“假”。例如:a=1,是把1這個數據放在變量a里面,而a==1,表示a變量的值是否跟1相等,如果相等返回“真”,如果不相等就返回“假”。
(3)顛倒printf()函數值的輸出順序。直接看個例子:
輸出的正確值應該分別為10,11,10,10。
很多學生出現錯誤是因為不理解printf()函數執行的順序,printf()函數在執行時是從右到左,而輸出時是從左到右。
從以上3個學生容易出錯的例子我們可以看出,正是由于學生對基礎知識掌握的不理想,導致這些極其簡單錯誤的出現。在我們的教學當中,教師也必須把最基礎的知識跟學生講透,讓學生改變學習觀念,對學生加以引導,懂得學習C語言并不是一朝一夕就能夠一下子變成編程高手,而應該腳踏實地,實事求是地打好基礎。
2 重視算法的學習
算法是程序的靈魂,沒有好的算法,就編寫不出好的計算機程序。在C語言教學中,教師在很多時候都不注重算法的教學,導致學生上課時候能聽得懂,看得懂課本上的程序例題,但是當布置作業讓學生自己去完成程序編寫的時候,學生又感覺無從下手。這些都是由于學生只注重去背課本上的程序例題,而不注重程序的算法思想照成的。教師在教學中要注意對學生算法邏輯思維的培養,在講解程序時,應該首先分析程序中所需要用到的算法,要把重點放在例題的解題思路上,一步一步地引導學生,讓學生知道程序為什么要這樣編寫。在授課階段初期,我們也可以給學生舉一些簡單的、有生活氣息的例題來引發學生對算法的興趣。例如,我們可以舉這樣的一些例子。
(1)家里有個微波爐可以同時燒烤2份牛排,每份牛排有兩面,每面需要燒烤2分鐘才可以食用,問用微波爐燒烤3份可以食用的牛排需要多少時間?這個問題用算法來解答的話,我們可以有2種方案。第1種,先把第1份牛排和第2份牛排放進去燒烤2分鐘,然后再把這2份牛排翻一面過來再燒烤2分鐘,接下來把第3份牛排放進去,燒烤兩面共花去4分鐘,由此可知整個過程一共要用掉8分鐘。第2種,同樣的把第1份牛排和第2份牛排放進去燒烤2分鐘,然后把第2份牛排先取出來,把第1份牛排翻一面過來跟第3份牛排一起放進去燒烤2分鐘,最后把第3份牛排翻一面過來跟第2份牛排的另一面一起燒烤2分鐘,這樣3份牛排就都烤好了,這種方法,我們只需要6分鐘。很顯然,用這樣一個簡單的例子,可以讓學生知道算法的重要性,好的算法可以節省程序大量的執行時間。
(2)有甲乙兩人,甲現在26歲,乙現在8歲,求多少年之后甲的年齡是乙年齡的兩倍?對于這個問題,我們可以引導學生使用循環體來解答。我們知道年齡是逐年增長的,假設甲為變量m,乙為變量n,則循環體就是m++、n++的一個過程,當甲和乙的年齡相差兩倍時,循環結束。所以我們設定循環體的執行條件應該是m!=2*n。最后當循環體結束時輸出m和n的值。通過這樣的一個分析過程,相信學生很快就能夠寫出這個問題的程序。
由此可見,通過一些例子的算法講解,一方面能夠讓學生理解解題的過程,一方面還可以鍛煉學生的算法思維,讓學生感受到算法的重要性。
3 上好實驗課
上機實驗也是C語言教學中的一個重要環節,學生僅僅聽課是學不好C語言的。學生不僅要能夠掌握基礎的概念,還要自己動手編寫程序,最后要親自上機調試程序的運行并對程序進行修改。所以,如何上好C語言課程的實驗課,也是教師要思考的一個問題。在筆者平時的教學中遇到這樣的一些問題,如很多學生在上實驗課時,沒有把精力放在學習上,而是在玩游戲看小說;還有些學生上實驗課前沒有很好的預習,浪費了大量時間在知識的復習上;在實驗過程中,學生一遇到問題就會向老師提問,以至于老師疲于解答甚至由于問的人數過多而無法一一進行解答。這些問題都影響到實驗課的效果,甚至會影響到部分學生的學習積極性。如何改變這種狀況,筆者采用以下幾種方法。
(1)在上實驗課之前就把實驗題目布置給學生,學生在上課之前就需要提交給教師一份預習報告,這份報告里面應該包含學生對實驗題目的解題思路及初步的解題程序。然后讓學生帶著這份報告上機調試程序。這樣就可以避免學生在上實驗課時無所事事的情況。
(2)對于有條件的學校可以配置多名實驗指導教師。學生在實驗中經常會遇到一些問題需要教師幫助解決,當問的人比較多的時候,教師就沒有辦法一一解答,而部分學生由于得不到解答而會停止程序的調試轉做其他事情,如果一直得不到幫助的話,就會影響他們的積極性,所以配置一到多名指導教師是很有必要的。如果沒有足夠教師的話,我們可以讓班級里面學習比較好的同學,組成一個學習興趣小組。讓這些學生在實驗課時對一些有問題的同學進行幫助,這樣既能夠增進學生之間的友誼,又能夠完成教師布置的實驗任務。
(3)改變實驗的考核方式。很多教師一般都是在下課的時候讓學生提交作業,這樣可能會讓一些學生鉆空子,拷貝別人的作業提交。所以建議在課堂上當場對學生的作業進行評分,遇到有雷同的作業,要求學生重做。在期末的時候,也必須要強調平時的成績,不能把期末成績作為衡量學生成績的唯一指標。
通過以上的一些措施,可以有效地促進學生對C語言的學習效果,對鞏固C語言的課堂教學起到了巨大的作用。
關鍵詞關鍵詞:C++;程序設計; 教學方法;教學改革
中圖分類號:G433
文獻標識碼:A 文章編號:16727800(2014)002018902
0引言
C++語言廣泛應用于基礎軟件、桌面系統、網絡通信、音頻視頻、游戲娛樂等諸多領域,是世界上使用最廣泛的編程語言之一。隨著物聯網技術的發展,C/C++技術在3G網絡通信、多媒體處理、智能識別等領域得到了進一步的推動和發展。但人才短缺依然制約著行業的發展,很多高校都認識到這一點,相繼開設《C++語言程序設計》課程,目的在于讓計算機專業的學生多學會一門編程語言,進一步培養學生獨立思考、分析和解決問題的能力,增加就業砝碼。然而《C++語言程序設計》這門課程學起來并不容易,不僅有很強的理論性,更具有實用性,課堂理論教學和代碼編寫缺一不可。在傳統教學過程中,由于教學目標不清晰,部分學生會質疑開設這門課程的必要性,并且教學內容或教學方法上的不足,也使得學生學起來枯燥,逐漸產生畏難心理。因此,高校《C++語言程序設計課程》的教學改革勢在必行。本文根據多年來的實際教學情況和C++培訓市場調研分析,從該課程的教學目標、教學內容以及教學實施方法等方面進行探索性的改革。
1教學中存在的普遍問題
1.1學生無法明確教學目標
以武漢東湖學院的《計算機語言程序設計》課程為例,4年的時間依次開設了《高級語言程序設計——C》、《面向對象程序設計——Java》、《C++語言程序設計》《.net 程序設計》4門課程。學校的出發點是全面培養學生的軟件開發編程能力,不斷提高學生獨立思考、分析和解決問題的能力,從而增加學生就業砝碼。4門課程跨越不同的教學學期,由不同的教師授課,教師如果只關注自己所授課程,沒能從全局比較分析,學生很可能無法明確教學目標。
C++語言比較難學,課程教學中牽涉到的概念比較復雜、規則繁多;C++使用靈活、容易出錯,不少學生感到學習困難;同時C++是面向對象程序設計語言,但又不是純面向對象語言,它在過程語言中增加了面向對象的結構。這種特性使得C++語言能夠保持與C語言的兼容。在教學初期,學生會覺得C++很親切,許多C語言代碼不經修改就可以為C++語言使用[1]。此時如果不讓學生明確學習的目標和意義,學生很容易誤解甚至會置疑:學了C為什么還要學C++,既然不是純面向對象語言,用Java替代C++不就可以了嗎?這樣,C++語言教學自然不會有良好的教學效果。
1.2教學內容注重語法,課后延伸不多
教學內容更多關注語法。C++語言同所有算法語言一樣都由自己特定語句組成,每條語句又有自己的一些特定使用規則[2]。在傳統的《C++語言程序設計》課程教學中,無論是教材還是教師授課,都是先介紹概念,再介紹規則,最后講解例子。有關概念規則的內容相對來說較為枯燥難記,在講授過程中,難以引起學生的興趣。雖然最后有例子講解,但通常都是彼此孤立的、按章節對應教學內容的一些小數學問題[2],學生還是很難從中感受到實際應用價值。
受課程學時所限,課程教學內容大多也只能以基本的語法、規則、小案例形式來呈現。如果課后不加以延伸或適當學習,學生對C++的學習就只能停留在皮毛。
1.3教學方法與企業實際脫節
學生在學習《C++語言程序設計》課程時,往往有種“只見樹木,不見森林”的感覺。因為傳統教學往往都是簡單地按照教材順序循序漸進地進行,每節課都會讓學生學習并記住許多概念和規則,但他們并不知如何綜合起來解決問題[3]。即使安排大量實驗課,也多是圍繞每個章節分散地進行相關概念或者規則的實踐。一段時間后學生往往對這門課感到厭倦,學到的知識也不足以駕馭實際項目開發。
2教學改革策略
針對上述現象,本文從以下幾方面探討了對課程的教學改革,實際運用中也取得了良好的教學效果。
2.1明確學習目的,激發學生的內在動力
教育心理學指出,學習動機是學習活動得以發生、維持進行,直到完成的內在動力。現代大學生對自己的學習活動、學習內容以及其對未來的就業和發展十分關注,如能在課堂教學初期講清課程的開設目標以及相關就業前景,充分重視學生的這種學習動機,學習效果自然會提高。例如,在講授《C++語言程序設計》課程前,可以收集一些招聘C++語言編程人員的就業信息及畢業生從事C++語言編程工作的收入、工作崗位發展趨勢等學生十分關注的重要信息。到了教學初期,在講授“什么是C++”時,可穿插著介紹這些信息,并讓學生知道“C++語言廣泛應用于基礎軟件、桌面系統、網絡通信、音頻視頻、游戲娛樂等諸多領域。目前,企業招牌C++軟件開發工程的數量占軟件開發工程師總量的1/3左右,薪水居高不下。要盡快使每個學生明確即將學習的知識與社會的關系,因人而異地幫助學生找到各自的學習目標,激發學生的內在動力。
2.2教學內容注重從整體到具體,再從具體到整體
雖然教材的編排大都按照先概念、再規則、最后舉例這一順序,但由于其間知識的分散性,彼此缺乏聯系,使學生不能體會一個完整的編程過程。在教學中,應注重教學內容從整體到具體,再從具體到整體,使學生通過一個完整案例先快速了解C++語言程序設計的全過程,然后增添程序設計的教學內容,具體分析實現步驟中的各個知識點,學習更高標準和要求的程序,最后學生在學完所有知識點后完成一個完整的設計。這種思路特別適合程序設計類的其它課程。
2.3教學方法注重同中求異、異中求同
這樣可使學生學會抓住事物的本質特點,加深對事物的理解,有利于培養學生的創造性思維。為了能使學生的學習更深入,采用對比的方法進行教學,可以達到很好的教學效果。例如,學生在學習C++語言時可以拿它與C語言作比較,C++程序語言與C語言在程序設計思路上存在著不同:一個是面向對象的程序設計語言,將數據與數據方法捆綁在一起;一個是面向過程的程序設計語言,由上至下,采用分模塊方式。但兩者之間的共同之處也比較多,C++語言是對C語言的改進與擴充,是C語言的一個超集,它保持了對C語言的兼容,也即在C語言中使用的命令,可以直接在C++中使用。通過比較,學生更能體會到教學的目的性。
2.4校企聯合,模擬職前培訓
計算機專業的畢業生為了快速就業,有時會選擇到培訓機構進行職前培訓。培訓并不意味著一定就業或高薪,關鍵還是看學生。高校進行《C++語言程序設計》課程教學時,如能實現校企聯合,在后期的實踐環節注入培訓機構的授課法,即通過多個項目讓學生掌握C++的軟件開發技能,將大量的開發經驗融入教學;并且,每學完一個專題就配一個項目實戰,最后完成一個即時通信或多媒體音/視頻項目,積累開發經驗,模擬職前培訓,對學生能力的提高大有益處。
3結語
本文提出了《C++語言程序設計》課程的教學改革思路,即通過改善教學方法,調整教學內容,真正以激發學生學習興趣為導向,校企聯合或者注入培訓機構的授課法模擬職前培訓,讓學生積累開發經驗。教學實踐證明,這些教學改革舉措在一定程度上能夠提高教學效果,同時其非常適用于其它編程語言課程的學習。
參考文獻:
[1]楊庚.面向對象程序設計與C++語言[M].北京:人民郵電出版社,2006.
關鍵詞:c語言程序設計;研究型教學;評價體系;協同學習
文章編號:1672-5913(2010)08-0115-03
中圖分類號:G642
文獻標識碼:B
c語言程序設計是計算機科學與技術以及相關專業的重要專業基礎課程。c語言程序設計課程的開設對提高學生分析問題和解決問題的能力,提高邏輯思維的嚴謹性,培養學生從問題空間到計算機程序空間的轉變起到了重要的作用。但長期以來,教師感到c語言難教,學生反映c語言難學,教和學的效果都不盡人意。具體地說,C語言教學中存在以下問題:一是在教學中沒有發揮學生的主體地位,一直以教師講學生聽的模式進行教學。二是強調語言語法知識的傳授,忽視學生思維能力的培養。三是對學生成績的評價不合理,以一張試卷決定學生的成績。四是忽視了對學生工程觀念的培養,學生只會編寫一些簡單的程序,而缺少綜合開發能力。
為解決這些問題,我們學院對c語言程序設計的教學模式進行探索,在以“學生中心,教師主導,因材施教,案例教學,團隊協作,評價合理”的教學思想指導下,從教學觀念、教學內容、實驗方法、輔導方式、評價手段和教學手段等方面進行了探索性研究,著力推進研究性教學。主要體現在以下幾個方面。
1 以研究促進教學,通過高水平的研究帶動高質量的教學
以教研室為單位,建立學術研究群體,緊密結合專業建設與課程建設,成立c語言課程研究小組,了解課程知識體系的發展動態,把研究成果融入課堂教學中。在教學中實施創新型教學,創新型教學是創新人才培養的基礎,不同于傳統教學模式,它具有目標性原則、因材施教原則、教學相長原則、合作競爭原則、綜合評價原則等特征。創新型教學以學生為主體,以學生的能力培養為教學核心,強調師師、師生、生生全方位交流,以師生共同參與的多元化增量式評價為基準,培養出知識、能力、素質協調發展的、與社會需求接軌的應用型人才。
2 轉變教學觀念和教學模式,著力提高教學效果
在“教”的方面,要由傳統的只重視知識和技能的淺層教學,轉變為綜合培養學生的興趣、動機、態度、信念、思維判斷能力和表達能力的深層教學。在“學”的方面,要由應試教育下的被動接受、考試投機取巧的被動學習,轉變為自主探究、合作學習、善于思考、積極進取的主動學習。要重新界定教師的教學活動中的地位,教師在教學中的地位表現在:①課程的設計者。要求老師構建出理論教學中要搭建的知識框架,設計出課程討論題目或實際操作項目,由學生通過合作學習來填充,從而完成知識體系的構建。在c語言教學中,教師合理構建案例,通過案例教學,培養學生的邏輯思維能力和解決實際問題的能力,為學生架構完整的知識體系結構。②合作學習的組織者。要求教師在教學中應扮演合作學習情景的創設者、良好人際關系氛圍的協調者的角色,積極地對合作學習過程進行有效的組織和調控。在c言語教學中,通過異質學習小組的建立,給他們創建實際的應用場景,使學生了解C的學習的作用和意思。目標性原則是學習動力產生的動因。如果學生根本不知道這門課程的作用,就會感到迷茫,這是大部分高校學習的學習計算機相關專業中遇到的問題。在這種情況下,學生不可能產生強烈的學生興趣。③合作學習的伙伴。教師是學生合作學習的同伴,解決問題,因材施教,由于不同學生在思維方式上的差異,他們的興趣點和興奮點是不同的,因此,在c語言的教學中要充分發揮學生的特長,不可一刀切,給不同群體設計不同的學習目標。以“跳一下能觸摸”為原則,不能過分超出學生的承受能力,否則會扼殺學生的學生興趣。④教學反思的實踐者。教師要對自己的教育觀、學生觀、學習觀進行反思,對教學知識、教學實踐中的不足進行反思,總結經驗,不斷進步,以提升自己的教學能力與素質。c語言教學經歷了許多年,不同學校、不同教師也經歷了各種改革,應該對改革的內容進行不斷反饋,保留成功的,改革不足的,去除不適的。
3 構建異質學生小組,實施協同學習與合作研究方式。發揮群體力量
信息技術發展迅速,而個人獲取知識的能力有限。在課程教學開始,讓學生明確課程學習的目標與考核要求,建立目標式學習方式。在課程教學過程中,推行小組式學習方式,充分發揮群體智慧,互相學習,互相啟發,達到共同提高的學習目的。根據學生的學業水平、能力傾向、個性特征、性別等的差異合理構建異質學生小組。創設一種只有當小組成功時小組成員才能達到個人目標的情境,即小組成員不僅要努力爭取個人目標的實現,更要幫助小組同伴實現目標。他們為了理解和掌握一個知識點以及最后完成全組的學習任務相互幫助、相互學習、共同討論問題、傾聽他人意見、從他人那里學習到自己不懂的內容、向他人闡述自己的觀點、同他人辯論填補相互間在理解方面的不足。在c語言教學中,通過教師對實訓項目的合理設計,由組長實施對項目的分工,在分工過程中要根據學生的能力水平和個性差異,合理分配模塊,同時注意對學生編程過程的引導,從而達到總體目標。
4 改變傳統教學內容,編寫符合學生思維規律的講義
以往的c語言教學一直偏重語法,教材的知識組織是根據其語法的難易程度來編排的,不適合培養學生的程序設計能力和邏輯思維能力。從而導致學生能聽懂,但不能解決實際應用問題。我們將c語言課程分為兩學期開設,第一學期通過若干案例使學生熟悉c語言的基本語法、積累基本算法、培養邏輯思維能力。第二學期為C語言項目實訓。實訓項目為數據文件的增、刪、改、查。內容涉及排序算法、遞歸算法、指針運用、結構體運用、文件讀寫、鏈表操作等。訓練的能力有需求說明書撰寫能力、溝通能力、自主學習能力和編碼測試能力等。同時培養學生的綜合開發能力和團隊協作意識,培養學生的程序員職業素養。講義的編寫由四個教研室主任牽頭,精心選擇案例,從以傳統的語法講解為主的教學模式轉變為案例教學模式,讓學生通過案例的學習自然加深對語法的理解。這種教學模式符合學生的思維習慣和認知規律,從而激發了學生的學習興趣,也使學生真正理解學習語言的作用是用來解決實際問題的。
5 建立多元評價體系,培養學生綜合素質與創新能力
擯棄一張試卷與一次考試的學生評價模式,注重對學生平時表現的記載和在最終成績中所占的比例。學生的成績由作業成績、課堂表現、小組答辯成績、創新程度和期末考試成績綜合評定。第一學期的考核方式為考試,考試形式為開卷,分理論考試和上 機考試兩部分,成績評定方式為:平時占30%,理論占20%,機考占50%。突出對學生實踐能力的考核。采用開卷考試有利于學生從純粹的語法認知,轉變為對算法的積累和理解,有利于邏輯編程能力的培養。第二學期的考核方式為考查,成績評定方式為:平時占30%,期末占70%。期末考核采用小組答辯的形式。根據小組答辯情況給出組的總體成績,再根據每位學生的自身表現和在項目中的貢獻,最終給出每位同學的成績。這樣的考核方式有利于培養學生的團隊協作能力和溝通能力,貫徹公平性原則。有助于學生改變學習方式和學習側重點,將更多的精力集中于實踐能力的培養。
6 豐富教學方法和教學手段,提高教學效果
聯系課程實際和學生現狀,采用多種教學方法進行教學,改變教師講、學生聽的老模式,組織觀摩,推廣教學名師的成功經驗。在教學過程中依托多媒體和網絡技術,運用現代化教學手段,提高授課質量。特別是對于難于理解的知識點通過Flas進行展示,主要涉及函數調用、遞歸方法、指針概念、鏈表建立等。特別注重教師教學的邏輯性和嚴密性。將項目實訓完全移至實驗室,通過教師的分模塊提示,引導學生逐步完成程序的編寫。請軟件協會的優秀學生參與c語言實踐教學的輔導。一方面提高了實踐教學的效果,另一方面也培養了軟件協會學生的實踐能力和表達能力。
7 加強校企合作,進一步明確學習目的
不少學生反映,c語言已經過時,現在已進入面向對象時代,C語言的作用己不大,對學習本門語言的目的不夠明確。為此,我們邀請企業資深的工程師,為學生做講座,探討c語言的相關領域的應用背景,以及企業對c語言人才的需求與學校C語言教學之間的差異,為學生對c語言的進一步學習指明了目標。如我院與昆山中創集團和花橋安博集團建立良好的合作關系,就程序代碼編寫規范以及C言語實訓等內容進行了廣泛的交流合作。我院引進了企業項目的基本流程,使學生所學知識更符合社會的需求。
8 構建協同學習情境,建立C語言研究型教學實驗區
我院對兩個專業機房進行了改造,建立c語言研究型教學實驗區。將整個機房分成六個小組,每組兩臺計算機,每組六名同學,為每位同學設立了桌卡,選舉組長一名,每組配備黑板一塊,并為整個實驗室配備了資料柜,存放c語言的相關學習材料。從而為同學之間的協同學習構建了良好的環境。