前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇程序設計語言范文,相信會為您的寫作帶來幫助,發現更多的寫作思路和靈感。
關鍵詞:程序設計語言;VB;中職;高職單招;教學策略
一、中職生能力水平與高職單招考試現狀分析
中職生普遍學習能力水平不高,部分學生未養成良好的學習習慣,對學習有較大的畏難情緒。多表現為課堂上不注意聽講,不記筆記,課后作業完成情況差,不復習功課。VisualBasic程序設計語言是一種面對對象的可視化編程語言,包含大量需要理解并識記的基礎知識點,同時具有較強的實踐操作性。學生在學習VB程序設計語言時,常因該科目過于困難而遭遇學習挫折,甚至產生厭學情緒。從2015年開始,福建省高職單招考試改革,除筆試外,新增技能考試。因此,對志在升學的中職生來說,書本知識的掌握與技能實踐能力,這二者的培養同等重要。教師在授課過程中,不僅要重視基礎知識點的講解,更要注重上機操作技能的培養。因此,激發學生的學習興趣,使學生積極主動參與到學習活動中,掌握基礎知識點并培養優秀的上機操作能力,是教師制定教學策略的首要目的。
二、教學策略
(一)優秀案例設計導入新課
VB程序設計語言枯燥難懂,傳統的教學模式中,教師常采用“講授法”授課。從課堂一開始,就不斷灌輸程序設計語言的基本概念知識,不斷講解,致使學生難以理解概念,甚至喪失學習興趣,事倍功半。為了激發學生學習興趣,教師應設計生動有趣的優秀案例導入新課。例如,在教授計時器控件這一小節內容時,教師根據計時器控件能夠通過設置時間間隔從而達到定期做一些程序處理的特點,與寓言故事“龜兔賽跑”相結合,設計一個烏龜與兔子賽跑的小程序??菰锏某绦蛟O計語言轉換為生動的小游戲,引導學生直觀認識并體驗程序設計的實用性,從而激發學生學習興趣。
(二)合理教學方法提高課堂教學效率
VB程序設計語言學科內容繁多,理論性與實踐性兼有,教學方法應根據教授知識點的不同,靈活轉變組合,提高課堂教學效率。
1.詳細講解基礎知識,掌握基本結構語句。教師采用講授法,使學生掌握基礎知識點。例如在計時器控件教學中,演示完小程序,導入新課,教師首先講解計時器控件的特有屬性、事件,計時器控件處理程序的特點,使學生打好扎實的基礎。
2.結合基礎知識,演示上機操作。教師采用任務驅動法,結合基礎知識,演示上機操作,并布置任務讓學生完成。中職生的學習能力水平不高,教師首先采用演示法,降低學習難度,設置簡易任務,督促學生完成,并一一檢查,保證完成率。程序設計語言是一門實踐性極強的學科,上機操作練習后,更能加深學生對程序語言的直觀理解。
3.教師總結錯誤,改正鞏固知識。學生上機操作過程中,教師巡視指導。上機操作中,學生易出現錯誤,教師可于巡視過程中發現指導,最后總結經常出現的錯誤,統一講解,鞏固學生的基礎知識。
4.設置思考題,強化自主學習能力。布置簡單任務,是為了降低學習難度,提高學生的學習成就感。之后應設計難度較高的思考題,強化學生的自主思考能力。采用自主探究方法,學生可幾人一組,探索如何完成任務。程序設計語言最終是一門靈活性極強、創造性極高的科目,單一的講授法與演示法雖能使學生掌握最基礎的知識點,卻不能培養學生設計程序的自主思考能力。因此,適當提高任務難度,能激發學生的探究興趣,促進他們積極思考。
5.綜合式項目,整合所學知識。VB程序設計語言實用性極強,設計綜合式題目,將所學知識都整合到一個綜合項目中,能讓學生深刻認識到程序設計的實用性。例如在計時器控件的上機練習題目中,用到的并不止計時器一個控件,更包括圖片框、命令按鈕、標簽框等控件,應用的知識除了計時器控件的Timer事件、Interval屬性外,還包括Left、Enabled屬性和基本賦值語句等。將學過的多個知識點整合到一個題目中,既能讓學生梳理學過的知識,又能提高學生綜合運用VB程序設計語言解決實際問題的能力。
(三)漸進式教學任務提高學習成就感
班級授課經常存在學生學習能力高低不一,理解程度有好有壞的情況。教師授課若過于簡單,全體學生皆能理解并完成,對一部分優生而言,學習喪失挑戰性,容易失去學習興趣,且無法更好地培養學生自主思考能力。而授課若太難,則水平較低的學生易遭遇學習挫折,產生厭學情緒。因此,設計教學任務時,教師應做好課前準備,鉆研教材,將基礎概念與練習題目緊緊結合,以學生的理解能力為基礎,將難度設計為漸進式,由易到難。這樣既能讓學生獲得學習成就感,激發學習興趣,又能培養學生自主探究的精神。
(四)講授與上機操作相結合,理論與實踐并重在VB程序設計語言學科教學中,上機操作實踐十分重要,教師課前應認真準備教材、上機任務,授課過程中安排合理充分的上機練習時間。VB程序設計語言是一門可視化編程語言,操作性極強,只有充分的上機練習才能保證學生對技能的完全掌握。高職單招考試中,筆試過后,仍有技能實踐考試,理論與實踐并重。
(五)課后鞏固基礎知識點
中職生學習習慣較差,大部分學生并無課后復習的習慣。教師在制定教學策略時,應考慮到課后鞏固知識這一環。通過布置作業任務、課后習題督促學生完成課后鞏固;通過小測、考試等手段激勵學生的競爭心理,增強他們的學習主動性;通過批改作業、小測,發現學生的知識薄弱點,再加以強化。
三、結語
中職教育是職業技術教育,實踐操作能力的培養至關重要;由于高職單招已成為中職生升學的重要渠道,掌握書面知識也同等重要。學生的計算機操作水平與教師的教學質量緊密相關,教師應根據VB學科的特性,分析其重難點,靈活運用多種教學方法,提高教學質量,提高課堂教學效率,以學生為主體,激發學生學習興趣,同時不斷提升教師的教學水平。
參考文獻:
[1]梁徳賽.VB程序設計課程教學探討[J].科教導刊,2012,2.
[2]張華.中職計算機實踐教學法的應用與教學創新探討[J].計算機光盤軟件與應用,2011,5.
[3]高曉青.中職計算機教學方法探究[J].學周刊,2013,6.
關鍵詞: 《C程序設計語言》 誤區 感悟
《C程序設計語言》課程是電子信息工程專業開設的第一門程序設計類課程。該課程在本專業的課程體系中處于承上啟下的地位,對于學習后續高級編程語言具有很好的導引作用。筆者經過一個學期的系統學習后感覺受益匪淺,不僅學到了基礎的編程語言知識,更重要是的掌握了邏輯性較強的編程思想。為了讓更多學生很好地學習這門課程,筆者借此文總結出《C程序設計語言》課程學習時常見的誤區,并給出解決上述誤區的方法和途徑,供廣大同仁借鑒。
一、學習《C程序設計語言》課程時常見的誤區
1.只注重寫程序,而忽視讀程序。
很多學生在剛學習這門課程時就希望自己能夠獨立編寫出一些程序,但實際情況大相徑庭,此時挫敗感油然而生,甚至一些學生因為這種挫敗感產生對這門課程的厭學情緒。其實就筆者的學習經歷而言認為剛開始學習時,不要急于自己編程,因為此時你還沒掌握好基礎知識,不可能獨立完成程序的編寫,認真研讀別人的優秀程序才是學習該課程入門最快,也是最好的方法,在讀別人程序的過程中慢慢領悟別人的編程方法和思想。
2.沒能將理論學習和上機實踐進行有效銜接。
《C程序設計語言》課程的教學分為理論講授和上機實踐兩個環節,因為學校主客觀原因的限制二者之間存在一定的時間間隔,但二者在內容上又是相互連貫的。時間上的不連貫和內容上的連貫性會使得一些學習不主動的學生不能將理論課上老師所講的知識和技能在上機實踐中得到有效的驗證和消化。因此,一些學生在上機實驗時面對老師布置的作業會覺得無從下手,學習興趣就會大大降低。而C課程的知識是承前啟后的,前一部分知識沒有掌握好,后面章節內容的學習也會大受影響,這樣就進入了一個惡性循環。最大的問題是這部分學生不僅自身學不好內容,而且會影響其他學生,這樣班級的整體學習效果就會大打折扣。
3.缺乏一定的邏輯思維能力。
很多學生錯誤地認為C程序設計語言就是變量、控制結構、函數、過程、數組的簡單結合,認為只要掌握這些就可以編寫出良好的程序了。其實不然,真正優良的程序是需要靠自己的邏輯思維對變量、控制結構、函數、過程、數組這些要素進行創造性的整合。所以C程序設計語言是一門鍛煉學生邏輯思維能力的課程。當你具有抽象邏輯思維能力和弄清楚了變量、控制結構、函數、過程、數組相關知識后,編寫C程序就是易事。
二、走出上述誤區的方法
1.端正學習態度,充分認識到本門課程的重要性,并保持良好的學習心態和學習習慣。
《C程序設計語言》是很多高校學生接觸的第一門編程語言,該課程對于培養學生較強的邏輯思維能力具有非常重要的導引作用,而邏輯思維對于處于信息社會的大學生而言是必不可少的,但是邏輯思維能力的培養又不是一朝一夕的,需要持之以恒地努力。對于學生而言,只有從內心認識到這一點才可以使自身在遇到學習困難時迎難而上。對于一些偏文專業的學生而言,在學習初期肯定會覺得一些概念晦澀難懂,與自己的思維方式存在差異,此時千萬不能有畏難情緒,一定要相信自己,在自身努力、同學幫助和教師引導的三方努力下共同渡過難關,而自身的認真努力是首要的。課前一定要認真預習,對自己通過預習不能理解和解決的知識點和概念進行標記,上課時當老師講授到這部分內容時要認真聽講,如果通過教師的講解依然不能理解,千萬不能就此擱置,一定要及時向老師和同學請教。C程序設計的入門學習并不難,卻是一個十分重要的過程,因為程序設計思想就是在這時形成的,良好的程序設計習慣也在這個階段養成的。
2.學習時要注重理解一些重要的概念,勤于動手編寫程序,并借鑒別人編寫的好程序。
C程序設計課程就其本質而言并不是很復雜,其核心無非就是變量、函數、過程、數組、控制結構(順序結構、選擇結構、循環結構)、文件和數據庫等概念和相關操作。但這些概念雖然一些同學在數學課程中聽說過,感覺似曾相識,但此概念非彼概念,二者還是有所不同,要真正理解這些概念就必須多動手、多思考。程序設計是高強度的腦力勞動,不是聽會的,也不是看會的,而是練會的。因此在學習過程中要勤于自己獨立編寫一些小程序,在編寫過程中肯定會犯一些錯誤,在錯誤的解決過程中可以提升自己的編程能力,在能力提升的同時增強自身對該課程的學習興趣。對于初學者而言,一方面要自己獨立編程,但由于自身編程知識儲備不充分,也要借鑒別人優秀的解題思路與方法,探究別人的思維過程,增強自己的思維能力,然后結合自身實際嘗試實現或者說模仿著實現。
3.在學習過程中要避免孤軍奮戰、單打獨斗,注重團隊協作和互助。
筆者所在學校C程序設計課程的教學遵循先理論講授后上機實驗的步驟。一個教學班的學生人數在30至40人,實驗課和理論課都只有一個教師。理論課和實驗課之間的時間差會使一部分基礎較薄弱的學生在實驗課上會碰到各式各樣的問題,而基礎較好的學生在實驗課上會很自如地完成老師布置的實驗任務,因為只有一個老師進行輔導,如果那些基礎不是很好的學生在學習過程中遇到問題后請教老師,老師此時可能正在輔導另外一個學生,在這種情況下就可以選擇向身邊基礎較好的同學請教,這樣既可節省時間又可加深同學之間的交流協作。經過半個學習基礎知識的學習,老師會布置一些綜合編程題讓學生融會貫通并有效應用以前所學知識,筆者認為此時同學之間可以以團隊形式進行答題,這樣可以達到取長補短的效果。
參考文獻:
[1]馬麗潔.高職計算機和軟件專業語言類課程改革探析――以C程序設計語言為例[J].電子商務,2015(07).
關鍵詞:在線 程序設計 評測 系統
中圖分類號:TP311.51 文獻標識碼:A 文章編號:1007-3973(2013)003-065-02
1 引言
如今計算機技術發展迅速,計算機已經成為了人們在日常生活和工作中不可缺少的一種現代化工具。而要想充分的利用計算機的高效處理能力,程序設計就顯得尤為重要。在高校中,很多專業都開設的有程序設計課程,要求學生具備一定的程序設計能力,以便能夠借助于計算機這種現代化工具解決一些學習和工作中遇到的實際問題。因而學好一門計算機程序設計語言,具備一定的程序設計能力已經成為現代大學生必不可少的一種技能。在學習計算機程序設計語言時,學生們往往要編寫大量的程序,教師要對學生們所編寫的每一個程序進行調試運行,以便指出并糾正學生們在程序設計中出現的一些錯誤。從學生提交程序開始,到教師編譯、調試,運行,到最后對程序做出評價結果。每一個階段都是一個非常繁瑣的過程,學生提交的程序越多,教師在程序設計評測過程中所花費的時間和精力就越多,大大增加了教師的工作量。
設計一套在線的程序設計與評價系統,可以讓學生們在線進行程序設計,并能通過網絡直接提交給系統,由系統對學生們提交的程序自動進行編譯運行,自動反饋編譯運行中的錯誤信息或程序運行的最終評價結果。該系統即方便了學生提交程序,也減少了教師對程序評測的工作量。同時,學生們能通過系統的評測,較快的了解程序設計中所出現的錯誤,以及時更正,提高學習程序設計的效率。
2 系統功能設計
系統以減少教師工作量,提高學生學習計算機程序設計語言的效率為目的,應具有以下功能:
(1)學生在線答題。
學生可通過系統頁面登錄,登錄后選擇程序試題,在線進行答題并將編寫好的程序源程序提交到Web服務器端。
(2)自動程序評測。
Web服務器端對學生提交的程序進行在線評測,并給出評測結果。
(3)在線成績查詢。
學生可在線查詢自己所提交程序的評測結果。
(4)在線考試與競賽組題。
系統可用于平時計算機語言課程的考試與競賽??荚嚮蚋傎悤r允許教師指定相應考試題目,學生對教師指定的考試和競賽題目在規定時間內答題,答題后在線提交并能實時查詢自己的答題成績。
3 系統總體設計
整個系統的設計采用B/S(Browser/Server)的模式,開發遵循MVC的三層架構,及底層Model層負責數據模型、中間層Control層負責業務邏輯的處理、高層View層負責用戶界面。三個層次功能上相互獨立,有益于系統的日常維護及進一步的擴展。
Browser客戶端頁面主要用來實現View層,負責用戶界面,學生可通過客戶端頁面進行用戶注冊、登錄以及在線答題和成績查詢;教師則可通過客戶端頁面進行試題與試題答案和要求的編輯與上傳,還可根據考試或競賽的需要進行試題的組織與編排。
業務邏輯層主要在Web服務器端能夠對數據庫中的程序源代碼進行讀取并生成相應語言的源程序以進行編譯運行和評測,并最終給出評測結果,將評測各階段的數據信息寫入數據庫中。
底層的數據模型主要用來保存學生和教師的信息、試題相關信息、學生提交的程序源代碼信息、學生程序在服務器端的編譯運行信息,以及學生最終的程序評測結果信息。
4 系統詳細設計
根據系統的功能需要和總體設計,系統的詳細設計主要分為以下幾個模塊:
(1)用戶注冊與登錄模塊。
學生或教師可通過系統進行注冊,注冊后不同身份對系統有不同的權限,如學生可在線答題,而教師可在線試題錄入與編輯。
(2)學生在線答題與成績查詢模塊。
程序試題按不同難度級別進行分類,學生可根據自己的學習程度選擇不同難度的試題。選題后,學生可選擇不同的計算機程序語言來進行具體實現,實現后學生通過系統頁面將編寫好的源程序代碼直接提交給Web服務器。
待服務器端對程序做出評測結果后,學生可在線訪問服務器端數據庫中的評測信息與結果。如果沒有編譯通過,學生能查詢到未通過編譯的錯誤信息,可進一步修改程序后再次提交;如果通過了編譯,學生可查詢自己的程序是否執行正確以及程序運行的效率程度和最終的評測結果。
(3)程序在線評測模塊。
學生在線答題的程序源代碼提交到Web服務器端的數據庫。在Web服務器端運行著一個守護線程,該守護線程不斷檢測提交到數據庫中的源程序代碼,一旦檢測到尚未評測的代碼,守護線程自動將該程序代碼從數據庫中讀取出來,根據學生所選的計算機程序語言類別建立相應的源程序文件,并在Web服務器端調用相應的計算機語言編譯環境進行源程序的編譯,將編譯時的編譯信息寫入數據庫。若編譯錯誤,則將編譯時的錯誤信息寫入數據中,可在線反饋給學生;若編譯正確則進入程序運行測試階段。運行測試時,需從數據庫中讀取該試題的測試數據,一般有三到五組的測試數據,一一代入編譯后的程序中進行測試運行,運行后將每次運行的結果與運行時所花費的時間復雜度與空間復雜度記錄到數據庫中,并將每次運行的結果與數據庫中該試題的正確結果進行比對,以判斷該程序是否運行正確。進一步判斷程序每次運行的時間復雜度與空間復雜度是否在該試題規定的時間復雜度與空間復雜度內,以確定該程序的運行效率是否達到試題的規定要求。系統將根據程序運行的正確程度以及運行效率給出不同的評測等級結果。
教師在客戶端頁面錄入并編輯試題更新到服務器端的數據庫中,完成試題的編制工作。
5 開發與實現
使用Eclipse開發工具,綜合Spring技術、Hibernate技術,數據庫使用MySQL,系統整體部署在Tomcat服務器,所有開發工具、數據庫、服務器、框架全部為開源的免費軟件,并且根據各個軟件的授權協議進行使用。系統功能,構建具有良好的擴展性、開放性的系統,易于維護,升級方便。
底層使用Hibernate框架訪問數據庫,主要的類有BaseDao。BaseDao為所有DAO的父類,使用了泛型。BaseDao定義了數據庫操作的常用方法,子類只需繼承便可使用對應的方法,因為使用了泛型,所以更新操作的返回值為各個實體類Entity,返回的Entity向上層提供給Service進行業務邏輯處理。
數據庫表所對應的類為實體類,一個實體類進行數據庫的映射,默認自動對應的數據庫表是和類名同名的數據表,如果數據庫表和類名不同名可以設置@Table(name="users")進行映射。同樣數據庫字段名默認情況下是和類的屬性名同名的,如果不同名可用@Column(name="user_id")進行映射設置。@Id說明該屬性對應的字段為數據庫主鍵。
Service為業務邏輯層,通過Spring的依賴注入,注入不同的DAO,進行數據庫操作。DAO返回給Service的是Entity,在service的不同方法里面通過DataTransferUtil類進行轉換,轉換為頁面需要的域模型Domain,提供給上層。
6 總結
該系統的設計可完成在線計算機程序設計的評測工作,一定程度上減少了教師閱讀程序和調試程序的工作量。但在程序效率的評測上還不夠精確,這取決于程序運行時的時間復雜度與空間復雜度的測定算法,系統中該算法的應用尤為重要,應著重設計實現。
(2012年河南省信息技術教育研究項目 ITE 12165)
參考文獻:
[1] (美)威爾頓,麥可匹克.JavaScript入門經典(第3版)[M].施宏斌,譯.北京:清華大學出版社,2009.
[2] (美)Marty Hall,Larry Brown.Servlet與JSP核心編程(第二版)[M].趙學良,譯.北京:清華大學出版社,2004.
[3] 孫衛琴.精通Struts:基于MVC的Java Web設計與開發[M].北京:電子工業出版社,2004.
[4] 張孝祥.Java就業培訓教程[M].北京:清華大學出版社,2003.
[5] 王國輝,李立文,楊亮.JSP數據庫系統開發完全手冊[S].
[6] 陳鵬,程勇.J2EE項目開發實用案例[M].北京:科技出版社,2006.
[7] (美)Bruce Eckel.Java編程思想[M].陳昊鵬,譯.北京:機械工業出版社,2007.
關鍵詞:VB;程序設計;實例;多層次
一、教學中遵循理論與上機循序漸進,基本實例與綜合實例有機結合
(一) 對書本知識進行精心編排,注重背景知識和基本概念的結合
我們注意到,在VB程序設計語言的教材布局上,往往是先從基本的語法現象入手,比如先介紹數據類型常量變量等,實際上,教學過程中演示這些基本數據類型的例子本身就會涉及對象、屬性、事件、方法。VB課程的教學是面對非計算機專業學生,缺乏對windows程序運行機制的相關背景知識。因此,VB教學中,講解基本概念和VB的事件驅動機制、可視化程序設計必須結合在一起。如果教師在講解基本概念的時候照本宣科,演示數據類型的程序實例的時候,由于對VB的運行機制和可視化程序設計的方式不了解,學生的注意力并不關注也不理解教師講解的內容,而是去思考這個程序的實現過程是什么,可是由于沒有關于對象的基本概念,立刻造成了理解障礙,不但對應該掌握的知識點一頭霧水,對程序設計也產生了一種恐懼心理,這個是我在VB教學中的深刻體會。
因此,在VB教學中教師應當時刻關心學生的知識結構,從學生的思維角度去考慮問題,必要的整合教材的相關知識點,特別要注意相關知識點的穿插講解,打破學生的思維障礙。比如在講解VB循環結構的時候,可以和后面的數組知識聯系起來,使學生明白為什么在有了變量這個概念以后還需要引入數組,而且通過循環結構對數組元素的打印,深化對循環結構的認識。有機地改變課本知識的邏輯結構,以相關的知識點靈活組織課堂教學,通過讓學生觀看,在實際操作中主動模仿,領悟這些概念,最終引導學生明白抽象的理論知識并不神秘,讓學生在輕松愉快的氣氛中接受新知識。
(二)VB程序設計是面向應用的科學,注重理論和動手的結合
1.注重基本問題的上機操作。對VB有恐懼心理的同學往往是在學習的初期沒有能夠理解VB的上機環境,數據類型,變量等最基本的概念,而這些概念通過上機的直接觀察是很容易理解的。教師在教學中一定要把握住學生的思維和背景知識,一個簡單的概念經常成為學生學習程序設計語言的重大障礙,對學生的自信心和學習熱情都會產生影響。因此,在VB教學的初期,要把基本的上機操作和基本的語法知識結合介紹相關的背景知識講透,為學生的上機操作和后續學習掃清不必要的障礙。
2.演示實例,引導學生模仿。教師可以通過對實例系統的調試、改進,開拓學生編程思路,融合相關的知識點,必要時候允許學生通過模仿、達到熟練掌握的目的。模仿是學習程序設計重要的一環,即使對熟練的程序設計人員而言,也常常需要參考,或者說模仿別人成熟的代碼,整個是程序開發的基本特點。因此,教師應鼓勵學生采用模仿的方式去實現不同的應用需求,達到靈活應用,舉一反三。
3.深化實踐教學,以理論課教學為基礎,通過案例的整合,形成不同層次的上機項目,供學生選擇。對于理解能力強的學生而言,可以通過有一定難度的實踐課,達到培養學生分析問題和解決問題的能力,為今后的深入自學打下良好的基礎。對掌握綜合案例有困難的學生,老師更應以基本案例為基礎,強化基本知識點,逐步提高這類學生對VB的學習能力。教師應親自指導,與學生一起上機實驗,隨時監控學生實驗過程。對學生提出的問題及時予以指導,發現學生常犯的共性錯誤,可在理論課上進行點評。
(三)教學手段多樣化
根據程序設計課程的特點,除了采用傳統的教學方法如:引入問題、問題討論、概念解析外,可以采用教學手段結合進行:
1.獨立實例和綜合實例結合進行
獨立實例教學法可以加強對每個知識點的運用和理解,但對前后知識往往沒有連貫性,對學生的實際應用能力提高不大。因此在教學實踐中體會到,除經典的獨立實例外,將一個有實用價值的、典型的、規模較大的、綜合實例的實踐應用于教學全過程,不但可以對整個VB應用程序的開發有觀念上的認識,也可以全面提高學生的編程能力。如提出問題:設計一個“學生管理系統”。首先,用最基本的概念和最簡單的界面,給出該系統的第一個框架版本,以后的每一次課,都對該系統提出新的功能和結構上的要求,并用本次課介紹的新概念和新方法對它進行功能上的擴充和結構上的改進。每次得到該系統的一個增強的新版本。學生隨著教學的深入,會更有興趣地積極投入到對實例系統的調試、改進中,不但掌握了所學的基本知識,同時也提高了編程能力。
2.通過分析上機錯誤,引導學生理解課本上的概念,學習調試方法。
學生對數據類型、變量、運算符、表達式等語言規則的掌握需要一個過程,對結構化程序設計的知識需要不斷積累。經常聽到學生反映能聽懂老師授課的內容,但自己編制的程序往往在機器上難以運行。課堂上,可以將容易出錯的概念以反例形式展示給學生,讓學生主動找錯誤,通過上機運行去發現,比如下面錯誤使用邏輯運算符的例子。
用if語句編程計算下列分段函數值:
|x2+x-3 x<0且x≠-3
f(x)= |x2-5x+60≤x<10且x≠2及x≠3
|x2-x-1其他
學生往往編寫為:
Private Sub Command1_Click()
Dim x!, y!
x = Val(InputBox(“x=”))
y = x * x - x 1
If x < 0 And x -3 Then
y = x * x + x 6
ElseIf 0
y = x * x - 5 * x + 6
End If
Print “x=”; x, “y=”; y
End Sub
ElseIf 0
乍看起來,似乎程序沒有什么錯誤,實際上學生把數學符號的用法和VB中符號的用法混淆了。在VB中0
(四)用直觀的方式培養學生利用程序設計語言理解和實現算法的能力
算法(Algorithm):計算機解題的基本思想方法和步驟。學生算法思維的形成是程序設計語言教學中的難點,也是學好程序設計語言最重要因素。程序本質上就是用一定的語法去實現算法思想,教學中,我往往采用直觀教學法來讓學生去理解算法,因為算法本身就是一種解題方法和步驟,可以讓學生代表不同的數字排列起來,通過表演的方式模擬冒泡排序,課堂不但活躍,而且學生也非常輕松地理解了。
二、結束語
通過VB程序設計語言的教學,使我逐步認識到程序設計語言教學是一項復雜的系統工程,隨著計算機科學的發展,對教師的教學水平的要求也越來越高,盡管在教學實踐中總結的一些經驗,獲得了一些效果,但與因材施教的教學模式仍有差距。教學上的改革和探索一定要與實際相結合,遵循因時、因地、因人而異的原則,采用靈活多樣的教學手段、教學方法,充分調動學生的積極性,培養學生自主學習的能力,為學生今后各個領域的學習和研究打下堅實的基礎。
參考文獻:
摘 要 針對學生學習計算機程序設計語言的困難,以提高學生的實際編程能力為目標,提出了分層次的基于問題(Problem Based Learning,PBL)的程序設計學習方法。包括:以激發學習興趣為目標的教學情景案例、以培養“計算思維”為目標的宏觀問題和以培養實際編程能力為目標的微觀問題等。教學實踐表明基于PBL的教學取得了良好的效果。
關鍵詞 基于問題的學習 教學情景 宏觀問題 微觀問題
中圖分類號:G424 文獻標識碼:A DOI:10.16400/ki.kjdkz.2015.08.061
Programming Design Language Teaching Cases Base on PBL
BAI Hongtao[1], HE Lili[2], HU Chengquan[2]
([1] Center for Computer Fundamental Education, Jilin University, Changchun, Jilin 130012;
[2] College of Computer Science and Technology, Jilin University, Changchun, Jilin 130012)
Abstract: For students to learn computer programming languages difficult, in order to improve students' ability to target the actual programming is proposed based on hierarchical problem (Problem Based Learning, PBL) learning programming. Including: to stimulate interest in learning the target of teaching case scenario, to develop macro issues "computational thinking" as the goal, and to develop practical programming capabilities targeted micro issues and so on. The practice shows that the good results achieved based on the teaching of PBL.
Keywords: problem-based learning; teaching situation; macro issues; micro issues
0 引言
計算機程序設計語言是學生們普遍認同的學習難點,過多的語法知識點以及在考核考評模式下,學習計算機程序設計語言應有的根本目標――編程能力沒有得到很好的鍛煉。當前的教學模式是以教師為主體,教師是教學過程的主導,學生是知識的被動接受者和思想的跟隨者。因此,培養學生的創造力,構建以學生“學”為中心的教學體系是非常必要的。
基于問題(Problem Based Learning,PBL)的教學模式率先由美國神經病學教授Barrows創立。①PBL已從國際醫學界擴展到工程、法學、工商管理等諸多學科,從大學高等教育逐步延伸到中小學教育。②③PBL在國內的起步較晚,上世紀90年代才引起研究者的關注,全國教育科學“十五”項目規劃將PBL的網絡化設計列為重點課題。1994年開始,陸續有關PBL理論研究的文章發表,且側重于醫學教育領域,2000年后擴展到其他領域,但理論研究比例較大。④⑤PBL在高等院校計算機程序語言學課程中的實踐,則較為少見。
本文引進PBL教學模式,通過基于“問題”的學習,探尋一條適合學生學習計算機程序設計語言的有效途徑,同時為教師在教學中提供可參考的方法和思路。
1 教學情景案例
1.1 什么是計算機語言
對于初學者而言,最直接的問題就是:“什么是計算機語言?”我們從《通靈芯片》一書⑥中對計算機語言既抽象又形象的解釋來闡述這一問題。
石頭上我蝕刻了一副圖案,內有幾何圖形種種,在不明者眼中,顯得神秘而又復雜,但我明白,只要布局正確,這塊石頭將被賦予一種特殊的能力,即對一種至今無人說過的咒語做出反應。我用這種語言提問,石頭會顯靈應答:那是一個我用符咒創造的世界,一個在石頭圖案內想象的世界。
石頭是硅片(硬件),咒語就是程序(軟件)。
1.2 計算機語言與人類語言的關系,學習計算機語言與學習外語的相似性
語言也是我們人類的主要交流途徑,要說對方能夠聽得懂的話。若我們想讓計算機遵從我們的意愿工作,就必須對計算機“說”它能夠“聽得懂”的“語言”。
學習和使用計算機語言與我們學期一門外語(如英語)一樣,有兩種方式:
先學習單詞、語法,再學習語義。
學習一定的語法,在使用(編程)中學習語義,融會貫通。
我們建議采用第二種學習方法,竭力避免為了語法而語法,死記硬背的學習是沒有意義的。
1.3 結構化程序設計的好處
我們吃中餐都有這樣一個體會,同樣一個菜品,在不同的飯店,由不同的廚師做出來的味道迥異。而比如KFC,無論在世界上的哪個店面,口味幾乎是一樣的。同學們想為什么呢?對,因為KFC建立了一套標準化的食品制作流程,每個環節都是規定好的,細致的,不需要個人主觀“發揮”的。同樣,程序設計既可以是“京醬肉絲”,也可以是“漢堡包”??梢允撬囆g,也可以是工程。比較而言,我們更側重于用工程化的思想和方法來進行程序設計。進而,有了結構化程序設計方法,就是為了規范程序設計的個人行為的。使得程序有更好的可讀性、可理解性和可移植性。
1.4 正確理解編譯器的提示信息
同學們在用編譯器對高級語言源程序進行編譯的時候,若有語法錯誤,通常編譯器會告知我們語法錯誤出現在哪一行。有時僅僅有一個語法錯誤,但是編譯器會顯示有很多行都有錯誤。很多同學不理解,以為出了什么問題,其實這是可以解釋的,如圖1所示:
圖1 編譯器匹配規則
第一行有5個正確的匹配,如果我拿走了其中的一個(黃色一對中的一個),則高級語言順序編譯器根據至上而下檢查的原則,會出現4個(而不是一個)失配的錯誤。只要更正了黃色的部分,則所有錯誤消失。
2 宏觀問題
(1)如何才能學好計算機程序設計語言?
回答:從模仿開始。
人類學習母語是模仿,學習計算機程序設計語言也可以從“照葫蘆畫瓢”開始,在模仿的過程中修正錯誤,掌握知識點,培養程序設計的思路、方法和技能。
類比,學習外語如英語的方法也不該只是大量地背單詞,應該是從說話、閱讀、寫作當中學習,學會用是最終目的,否則再多的單詞也是沒有生命力的。
(2)if 語句和switch…case語句都能實現選擇分支,是不是二者用哪個都可以?
回答:雖然從語法上,switch…case結構相當于多個if嵌套。也有一些題目來考察兩者的相互轉換。但語法不該被亂用或濫用,switch…case結構只有在特定的多分支選擇時才適合使用。
(3)條件表達式可以代替if語句,那么就多用條件表達式對嗎?
回答:這個問題類似于switch…case結構一樣,不能被濫用。只有類似于下面的條件語句
if ( a>b )
Max = a;
else
Max = b;
才能使用 Max = a>b?a:b;來代替,不是任何if語句轉換成條件表達式都是合適和易于理解的。
(4)為什么C語言有“指針”?是必須的嗎?
回答:包括C語言在內的任何一種計算機程序設計語言,都是從實用性出發的,而不像數學定理那樣追求“當且僅當”。C語言的指針并不是必須的,比如C#就沒有指針的概念,但有了“指針”,能夠使程序更具靈活性,在實現某些功能時更方便、快捷。當然,C語言的指針也有一些負面的作用,如野指針。對初學者來說,C語言的指針也確實是一個難點。但無論如何,同學們完全可以通過勤學多練,掌握“指針”。隨著學習和應用的深入,同學們會慢慢體會到C語言的“指針”不僅不是阻礙,而且還是解決問題的“利器”。
3 微觀問題
(1)數組既然是多個數據元素的集合,是否可以對數組所有元素進行整體輸入和輸出?
例如:int a[10];
scanf(“%d”, a);
回答:C語言規定,數組的名字代表了數組首元素的地址(或理解為數組在內存中的起始地址),雖然scanf的參數表列的要求是地址,但不允許用一個地址將數組所有元素都輸入,除非要輸入的字符串,且字符串是放到字符數組中,并當作一個整體來看待的。
正確的方法是:
int a[10], i;
for (i=0; i<10; i++)
scanf(“%d”, &a[i]);
對于字符數組而言,可以:
int c[10];
scanf(“%s”, c);
(2)如何驗證對浮點數在“足夠接近”情況下的等值。
回答:浮點數的定義決定它的絕對精確度會隨著其代表的值變化, 所以比較兩個浮點數的最好方法就要利用一個精確的閾值。這個閾值和作比較的浮點數值大小有關。不要用下面的代碼:
double a, b;
...
if (a == b) /*錯!*/
要用類似下列的方法:
#include <math.h>
if (fabs(a - b) <= epsilon * fabs(a))
epsilon 被賦為一個選定的值來控制“接近度”。你也要確定a 不會為0。
(3)莫要亂寫“;”
C語言程序的一行是以“;”為結尾的,但不意味著任何一行程序的末尾都要加“;”。比如:
for ( i=0; i<100; i++ )
sum = sum + i;
有很多同學在for ( i=0; i<100; i++ )后加了一個“;”,這使得本來完成一個功能的語句,硬生生地被“分開”了。
4 結束語
熟練掌握一門計算機程序設計語言,無論是對計算機還是非計算機專業的學生都是非常重要的。教學實踐表明,通過不同層次基于問題的學習,能夠顯著增強學生的主觀能動性,提升學習興趣。本文是在我校教育教學改革項目的支持下的教學研究成果。期望在政策的指引下,通過師生的共同努力,探索出適合當代大學生學習計算機程序設計語言和相關課程新道路。
參考文獻
2013.09,吉林大學本科教學改革研究項目,在線“非計算機專業計算機程序設計PBL教學”內容研究,項目編號:2013097;