時間:2023-05-30 08:55:22
開篇:寫作不僅是一種記錄,更是一種創造,它讓我們能夠捕捉那些稍縱即逝的靈感,將它們永久地定格在紙上。下面是小編精心整理的12篇c程序設計語言,希望這些內容能成為您創作過程中的良師益友,陪伴您不斷探索和進步。
關鍵詞:值類性;引用類型;值傳遞;引用傳遞
中圖分類號:TP312文獻標識碼:A文章編號:1009-3044(2007)15-30749-02
Analyzing the Parameter Pass in C# Language
BAI Xue-bing
(Zhejiang Institute of Traffic, Hangzhou 311112, China)
Abstract: the article narrates the parameter pass in c# language, which includes number, array and object parameter pass, and it also tells the difference between the call by value and call by reference.
Key words: value type; reference type; call by value; call by reference
1 引言
目前,隨著程序設計語言的不斷發展,.NET平臺在windows平臺上已站穩腳跟,成為主流的開發平臺,C#語言作為.Net平臺的主流語言,重要性不言而喻。目前,C#語言已成為唯一能與Java抗衡的語言,而日益受到程序員的喜愛。
在C#程序設計中,常常會運用參數來傳遞對象,然而,在程序設計語言中,參數的傳遞常常使人含混不清,因此,有必要好好的分析一下參數的傳遞,才能使你在運用C#語言時更加的心應手。
首先,我們需要了解C#語言的數據類型,C#語言的數據類型可分為兩大類:一種是值類性(value type),它的數據存放入棧內的一個變量之中。例如整型、浮點與結構體(int、double、struct)。另一種是引用類型(reference type),它的數據不駐留在棧中,而是存儲在堆中。當訪問一個具有引用類型的數據時,需要到棧中檢查變量的內容,該變量引用堆中的一個實際數據。例如類,數組,字符串class,array,string)。由于這兩種類型的數據在參數傳遞時是如此的不同,我們需要分別討論。
2 值類型傳遞
在C#語言中參數的傳遞可分為值傳遞(call by value)與引用傳遞(call by reference),值傳遞中函數將參數復制到子程序的參數中。因此,改變子程序的參數不會影響用于調用的參數。而引用傳遞視將參數的引用傳遞給子程序。在子程序內部,該引用用來訪問調用中的實際參數。
下面我們用例子來說明區別。引用傳遞在C#中使用關鍵字ref或out。
2.1 值傳遞
在給方法傳遞數值類型時,如int類型或double類型,它們是通過值傳遞。因此,在給這種類型進行值傳遞時,函數的調用并不會影響在主函數的原先的值。
示例如下。
using System;
class Test {
public void noChange(int i, int j) {
i = i + j;
j = -j;}}
class CallByValue {
public static void Main() {
Test ob = new Test();
int a = 15, b = 20;
Console.WriteLine("a and b before call: " + a + " " + b);
ob.noChange(a, b);
Console.WriteLine("a and b after call: " + a + " " + b);
}}
程序產生的結果如下:
A and b before call:15 20
A and b after call:15 20
由此可見,noChange()內部發生的操作不影響調用中的a和b的值。
2.2 引用傳遞
但是如果你在函數調用參數前使用ref參數,表示使用引用傳遞。
示例如下:
using System;
class Swap {
public void swap(ref int a, ref int b)//參數前加ref表示引用傳遞
{int t;
t = a;
a = b;
b = t; }}
class SwapDemo {
public static void Main() {
Swap ob = new Swap();
int x = 10, y = 20;
Console.WriteLine("x and y before call: " + x + " " + y);
ob.swap(ref x, ref y);
Console.WriteLine("x and y after call: " + x + " " + y); }}
程序產生的結果如下:
A and b before call:1020
A and b after call:2010
由此可見,swap函數()內部發生的操作影響調用中的a和b的值。如果不使用ref參數,a和b仍然不會變化。
3 引用類型參數傳遞
由于在C#程序設計中,類作為引用類型常常被使用。在參數的傳遞中,類的實例對象常常被用來作為函數參數,因此我們就以對象作為研究對象。另外我們也討論一下數組。
3.1 對象值傳遞
由于對象本身即是引用。因此,當對象被用來當作參數傳遞時,對象本身是通過值傳遞,但是由于對象本身是引用傳遞,改變參數所引用的對象依然改變將影響參數所影響的對象。
示例如下
using System;
class Test {
public int a, b;
public Test(int i, int j) {
a = i;
b = j; }
public void change(Test ob) //調用test類對象ob 值調用
{ ob.a = ob.a + ob.b;
ob.b = -ob.b; }}
class CallByRef {
public static void Main() {
Test ob = new Test(15, 20);
Console.WriteLine("ob.a and ob.b before call: " + ob.a + " " + ob.b);
ob.change(ob);
Console.WriteLine("ob.a and ob.b after call: " + ob.a + " " + ob.b); }}
程序產生的結果如下:
A and b before call:15 20
關鍵詞:實驗教學;競賽理念;在線評價系統;探索性實驗
中圖分類號:G642.0 文獻標志碼:A 文章編號:1674-9324(2017)16-0254-02
引言
《高級程序設計語言C++》是計算機專業課程中非常重要的一門學科基礎課。隨著信息技術的發展,該課程不僅成為了許多計算機專業課程的先修課,同時也成為了非計算機專業的必修課。學習好這門課程對于學習其他計算機課程,比如數據結構、軟件工程等有非常大的幫助。由于C++語言本身的特點決定了該課程的學習需通過上機編程調試程序,因此實驗教學環節在該課程的教學過程中是關鍵,有效的實驗不僅可以鞏固理論學習的概念和原理,而且還可以培養學生的實踐應用能力和計算思維能力。
目前有不少高校教師和學者對此課程的教學進行了一定的研究和探索,提出了一些可行的方法和措施[1-2],但專門針對課程的實驗教學的研究和改革仍需進一步加強。筆者所在高校盡管在近年來針對該課程的教學計劃和培養方式進行了一定的改革,在該課程上的實驗、實訓等相關環節的教學上進行了一定的創新和改革,然而這些環節相互之前仍然沒有連續性,教學計劃與就業導向、學科發展相互脫離,急需由上至下環節的整合。本文結合近年來的實驗課程教學經驗,從計算機相關專業的“C++程序設計”課程實驗教學實際出發,針對實驗教學中存在的問題,探討如何才能更合理的設計實驗課程內容,切實提高實驗教學質量,培養學生的面向對象程序設計能力和創新能力,促進學生的全面發展。
一、實驗教學過程改革
(一)引入競賽理念,提高積極性,培養團隊協作能力
目前的程序設計語言課程的實驗教學基本上是理論驗證性實驗,無論從實驗目的、實驗內容、實驗方法還是實驗步驟都由實驗指導大綱提前規定好,學生被動地上機實踐,完成教師布置的作業,導致學生的參與積極性不高,常常出現為交作業而交作業的情況,且在一定程度上限制了學生獨立思索與能力提高,也不利于挖掘學生的思維能力與想象能力,不利于針對目前就業導向、就業能力需求培養學生的綜合素質。目前IT業急需具有一定團隊合作能力,協同工作能力的綜合性人才。因此將基于ACM的競賽模式引入實驗教學中,讓學生組隊完成綜合試題,從而在一定程度上培養了學生的團隊協作能力。
因此,針對這一問題,同時考慮軟件工程專業持點,我們采用“競賽―探索性實驗―實訓”[3-6]的實驗教學流程。將ACM程序設計大賽模式引入C++程序設計課程的實驗環節中,利用在線評價系統平臺建立試題庫,實驗穿插學生個人與組隊模式完成題目,實時刷新排行榜,此種模式基于在線評價系統的競賽機制突出學生的主體地位,因而學生在課程實驗中能由淺入深地掌握基礎理論知識。該在線評價系統對學生開放使用,允許學生登陸系統刷題練習,并記錄給同學的刷題量,此種模式一定程度上提高了學生的參與度,激發了學生的熱情,也有利于學生綜合能力的培養。
(二)引入在線評價系統,依托科研項目,進行探索性實驗
除此之外,該模式引入在線評價系統,在競賽試題中結合科研項目引入一些探索性實驗題目[7],從而既能挖掘高水平程序設計人才,又能推動科研項目的進行,從而將學科建設的推動、學生綜合能力及團隊合作能力的培養結合起來[8,9]。教師還可以在后續教學環節(例如實訓環節)針對學生的實驗學習情況制定相應的內容,從而讓理論教學、實驗教學、實訓等環節綜合起來鞏固學生的程序設計能力。
二、實驗成績評價方法改革
該課程實驗成績結合在線評定機制綜合考慮學生的實驗能力,包括學生的基礎能力和拓展能力,考核體系[5,10]如圖1所述。
(一)基礎能力考核
根據個人帳號在在線評價系統的競賽記錄,教師將個人考勤、個人競賽排行榜和個人刷題題量總數加權綜合計算得出個人的基礎能力考核分。學生的考勤體現了學生的學習態度,而學生的個人排行榜和刷題量在一定程度上體現了學生的學習動態,對知識點的掌握程序,因此三者組成了基礎能力的綜合評價要素。
(二)拓展能力考核
在線評價系統中結合科研項目引入了一些探索性實驗題目,這些題目為可選題目,在計劃外的實驗機動時間內允許學生組隊以競賽方式完成。這種策略既能鍛煉學生的團隊合作能力,又能挖掘高水平程序設計人才。根據學生在團隊競賽中的團隊排行榜、學生在團隊中的貢獻度(由團隊內部互評分數決定)、完成的探索性實驗題量三者加權綜合計算得出個人的拓展能力考核分。
(三)教學效果
基于競賽模式的高級程序設計語言C++實驗教學在本人所在學院已在2屆本科生上實施,實驗教學效果已從以下幾個方面得到提高。
學生參與實驗的主動性得到較大的提升,學生完成規定的競賽題目后,學生能通過排行榜實時了解自己的學校效果,即在班級中的相對學習效果。
部分學生通過在在線評價系統的刷題訓練,加入了學院的ACM集訓隊,參加國內和國際比賽,取得了一定的成績。
在線評價系統通過加入探索性實驗題目,促進了學生的科研興趣萌芽,促使一些學生通過SRP項目進入實驗室進行科研輔助工作,促進了本學院學科的發展。
三、結束語
實驗教學是高等院校應用性人才培養的重要途徑和手段。建立基于競賽模式的高級程序設計語言C++實驗教學,旨在引入競賽理念,結合在線評價系統,加入探索性實驗元素,激發學生的創新思維能力,提高學生的團隊協作能力和主動意識。最后結合實驗考核方式改革,提升了學生的專業素質,進一步促進了學科發展。
參考文獻:
[1]魏玉芬,丁艷清,袁玉萍.C++程序設計實驗教學方法研究[J].高師理科學刊,2016,(06).
[2]張曉孿.基于實踐的C++程序設計實驗教學模式探索[J].微型電腦應用,2016,(08).
[3]彭源,田秀霞,張安勤,等.基于ACM競賽理念的C++程序設計教學模式改革[J].計算機教育,2013,(07):70-73.
[4]祝昌宇,陳廣貴.從ACM競賽談計算機實驗教學改革[J].實驗科學與技術,2011,(S1):300-302.
[5]齊文.基于ACM競賽理念的C程序設計教學改革[J].軟件導刊,2011,(11):180-181.
[6]王月海,王ケ觶王景中.競賽驅動的地方高校電子信息類實踐教學體系建設[J].實驗技術與管理,2015,(12):190-193.
[7]姚芬,張艷美,彭青,等.探索性實驗教學的體會與思考[J].當代醫學,2009,(13):154-155.
[8]何麗明,蔣群,閆曉梅,等.實驗教學對提高本科生科研素質的探索[J].實驗室研究與探索,2016,(08):197-199.
cpp格式這個詞在中國大陸的程序員圈子中通常被讀做C加加,而西方的程序員通常讀做Cplusplus,它是一種使用非常廣泛的計算機編程語言。C++是一種靜態數據類型檢查的,支持多重編程范式的通用程序設計語言。它支持過程化程序設計、數據抽象、面向對象程序設計、泛型程序設計等多種程序設計風格。
CPP是程序設計語言C++的另一種書寫形式。
它是CPlusPlus的簡稱。是繼C語言之后又一種計算機編程語言,C++編程語言同時支持所有的C語言語法。C++和C相似,但C是面向過程的程序設計語言,而C++是面向對象的程序設計語言,不過C++語言保持了對C語言的兼容,也就說是在C++程序可以不用修改的插入C語言代碼。
cpp是用C++語言編寫的源代碼文件的后綴名。它對類的強大支持可以使它編寫出更優質的程序。
(來源:文章屋網 )
關鍵詞:C語言;IT;程序設計語言;優勢
眾所周知,C語言是1972由美國的Dennis Ritchie設計發明的,自今仍是國際上廣泛流行的計算機語言,一般用來寫系統軟件,應用軟件等。例如,Linux,DBASE IV等著名的系統和軟件就是用C語言編寫的。所以,學習C語言還能夠讓初學者深入了解程序底層和操作系統。
1 C語言的特點
首先,C語言的結構簡單,編寫程序效率高,便于描述算法。其次,表達方式靈活實用,語法接近英語,關鍵字如if,else,switch,break等。第三,C語言的數據結構和運算符豐富,共34種運算符,整形,實型,字符型,數組型,指針型,結構體型等數據類型。第四,可移植性好,C語言的設置一般為3-5MB,非常易于安裝和操作。第五,C語言是一種結構化程序設計語言,這種結構使程序調試和維護更加簡單。最后,隨著計算機技術的發展,很多新的程序設計語言都是以C語言為基礎發明的,學習C語言可以更方便的掌握其他Z言。
2 C語言的內容
C語言的內容一般分為:第一,C語言的運算符與運算順序,是學習C語言的基礎。第二,C語言的順序,選擇,循環結構,是C語言的三個基本結構,組成程序最基本的框架。第三,數組,數組就是一個同類型元素的集合。第四,函數,函數是C語言源程序中的基本模塊,一般分為庫函數和用戶定義函數。第五,指針,指針是C語言中廣泛使用的一種數據類型,是C語言的精髓,是檢驗我們是否掌握C語言的標準。第六,結構體與共用體,一般使用結構體存放一組不同類型的數組。第七,文件,C語言中把文件當做一個“流”,并按字節進行處理。
3 C語言的優勢
3.1 C語言在工業控制領域中廣泛使用
大到操作系統,小到網頁瀏覽器,小游戲一般都是由C語言,或與C相關的編程語言編寫。并且,它也是最被人們廣泛使用的可編程嵌入式處理器語言,由它編寫的嵌入式處理器,可以控制汽車,機器,交通燈,玩具以及家用電器,與我們息息相關。因此掌握了C語言,會有諸多實踐創作的同時,還會了解其工作原理。
嵌入式系統是指軟,硬件可以裁剪且適用于應用系統對其功能,成本,體積功耗等有著嚴格要求的專用計算機系統,與單片機相似,依賴于匯編語言編寫的程序。但由于C語言的出現使得嵌入式系統開發變得簡單。由于C語言靈活的語言結構比匯編語言編程更人性化,可以程序與硬件更好的結合,可以忽略一些不必要的細節,從而更專注功能和算法,使控制系統開發變得高效,而且C語言的可移植性和可讀性都比匯編語言好。C語言的結構模塊完善,其良好的程序結構十分適合模塊化的程序設計,因此運用C語言設計控制系統程序時,充分發揮其模塊化程序優勢,將其功能模塊化,不同的模塊完成不同的功能。使得控制系統的結構清晰,也便于調試和維護。所以,C語言在開發嵌入式系統和單片機的效率上提高很多,甚至直接影響了科技的發展。因此,C語言在硬件方便不僅應用廣泛而且扮演著十分重要的角色。
3.2 C語言在軟件工程中的應用
C語言是一種高級語言,能狗直接訪問硬件的物理地址,進行位操作。還有一些匯編語言的特點,可用來編寫系統軟件和開發應用軟件,作為一種通用的程序設計語言,在軟件工程的開發中收到廣泛關注。
由于C語言既有高級語言又有低級語言,兩者有效的結合編程工作單元,和對函數的合理應用,能夠有效提高系統的層次性和清晰度等方面。C語言自身的優勢也很重要,運算符和數據類型十分豐富,可移植性好,方便調試和維護等。對于軟件工程來說,需要C語言編寫程序滿足多元化需求,能夠實現相對復雜的數據運算任務,而C語言具有靈活性和實用性,能夠通過指針對位地址,字節地址進行操作。運用C語言編寫程序,不僅高效而且多種機型和操作系統支持C語言,幫助人們直接訪問地址,及時檢查和提示我們語法錯誤。既保證系統質量高,效率高,又為其更好的移植和修改奠定基礎。同時可以和匯編語言完美結合,在系統編程中能夠進一步發展。另外,C語言還具有強大的圖形功能,不僅支持多種顯示器和驅動器,且計算功能和邏輯判斷功能強大。
3.3 C語言是大多數編程語言的基礎
由于C語言的功能強大,隨著計算機技術的不斷進步,便出現了以C語言為基礎的新的跨平臺的程序設計語言和腳步語言,如我們所熟悉的C++,C#,JAVA,PHP,Python,ObjectiveCC等,都是通過C語言衍生出來的,引用了C語言中大量的語法和功能,借鑒了C語言的優點,這些語言都使用相似的操作符,表達式,控制結構,數組,函數等。幾乎所有的大眾程序設計語言都能與C語言連接,同時也能利用大量的C語言庫。其中,這些語言的許多模板也是由C語言所寫。所以,掌握了C語言不僅可以編寫系統源代碼,也可以使你更有效的學習其他腳本語言或程序設計語言。
4 結語
雖然C語言是在20世紀90年明的,但是在今天,它的應用范圍依舊廣泛,無論是軟件開發還是硬件處理器的編程,它的地位依然重要。C語言不僅是現代信息技術和計算機科學的基礎,還是大學最常用的程序設計語言之一,C語言對計算機的基本工作原理和軟件開發都有詳細說明,我們也可以通過學習C語言去更加深入地了解到編程的原理,掌握C語言還能為你對其他程序設計語言的學習打下基礎。因此,C語言的重要性極其存在價值,不只是它的歷史久遠,還有它的經典和實踐中的作用。所以作為有創新意識的新型人才,一定要認識到C語言的重要性,并且在實踐中熟練運用。
參考文獻:
[1] 趙黎,范君君. C語言編程技巧在C語言學習中的應用研究[J].信息與電腦(理論版),2014(09):252.
關鍵詞:Java語言;高校教學;問題;措施
中圖分類號:TP312.1-4
在Java程序設計語言中,包含了完整的程序設計以及程序的應用框架,對于開發智能卡、手機軟件應用、以及企業級的應用等多數領域都得到廣泛的使用,當前極為火熱的Android手機操作系統的應用程序也是通過強大實用的Java語言來編寫完成的。目前我國Java程序語言方面的高級人才相對短缺,為了滿足市場對于這類人才的需求,國內多數高校都在計算機相關專業開設了Java程序設計語言的課程,因此,Java程序設計語言在高校計算機專業教學中的地位和重要作用逐漸凸現出來。
雖然目前我國很多高校都開設了Java程序設計語言課程,但多數學生還是缺乏動手能力,實際程序編寫的技能和經驗也不足,遠遠不能達到企業對于實際人才的要求,導致剛剛畢業的高校生很難找到合適的工作,從而產生了“學生難就業,企業難招工”的奇怪現象,這種現象的產生就要求我們對高校Java程序設計語言課堂教學的情況進行反思。如何針對目前市場對于人才的需求情況來培養人才,提高Java程序設計語言課程的教學質量,成為亟待解決的問題。
1 Java程序設計語言教學中的問題
1.1 課堂教學內容滯后。當今時代,計算機技術迅速發展,課堂教學中學習的內容多數較為基礎,同時也比較滯后,隨著技術的發展,Java體系中不斷融入新的理論和方法,這些新的方法不斷被企業采用。與實際企業中Java技術的發展相比,高校Java程序設計語言課程教學的內容相對滯后,與企業技術的發展嚴重不協調,造成了高校教學與企業實際應用之間的脫軌,不能滿足企業對于高質量可用代碼開發的要求。
1.2 對于應用體系架構的講授不夠完整。目前,多數高校雖然開設了Java程序設計語言課程,但由于受到課程安排時間的限制,多數高校主要講授的是J2SE基礎部分,這是整個Java語言體系中最基礎的部分,而只有少量開設或者沒有開設JavaWeb、JavaEE,使得學生的編程開發能力不能得到鞏固,從而導致學生只學習了基礎,而對后續課程沒有了解,無法系統的弄清楚Java程序設計語言體系,同時也使學生的學習興趣下降。
1.3 教學過程缺乏實踐。Java程序設計語言課程所涉及的理論知識比較抽象,同時邏輯性很嚴密,并且有很多復雜的框架和結構。在目前很多開設了Java程序設計語言課程的高校中,仍然是采用傳統的課堂講授方式,過分的強調基本理論的學習,在學生腦子里堆砌起大量的語法知識,在教學中學生實際動手的機會很少,使得學生雖然理論知識扎實,但缺乏實際編程操作的能力。
在這種程序設計語言教學的傳統模式下,學生的學習一直處于被動的接受,而不是主動的探索,這樣一來就很難做到讓學生真正的掌握Java程序設計語言的精髓,更加阻礙學生對基礎理論的理解和應用,同時Java編程的基本功也得不到有效的鍛煉。
1.4 忽視強化學生的自學能力。在日常Java程序設計語言的學習中,也由于教學模式的限制,多數學生的學習方法只有看書和聽課,在課下很少會親自動手進行編程練習,或者由于缺乏探索嘗試的勇氣而不敢動手調試Bug,在學習和操作中一旦遇到問題,首先就想到請教老師,教師一般也會直接給學生進行講授。在這種學習方式下,學生的學習比較被動,教師的講授和學生的學習都相對輕松,但是如果長期處于這種狀態,會使學生更加缺乏獨立思維以及獨立解決問題的能力,使學生逐漸喪失學習的積極主動性,沒能做到理論與實踐相結合的教學目的。
2 對于Java程序設計語言教學的建議
鑒于Java程序設計語言課堂教學存在的問題,結合課程教學的要求以及就業情況和市場需求,對于改進課程教學方法提出一些建議。
2.1 合理設計教學內容,完善知識體系。高校要改善Java語言的課程體系建設,基礎的Java屬于編程的入門語言、教學中以Java作為一個基礎的開發平臺,并且圍繞著這個基礎開發平臺,以平臺應用為主要出發點來構建課程教學體系。確定“學懂、會編、實用”的教學目標,以Java語言的基礎知識為脈絡,同時適當融入Java語言的續課程,比如JavaEE、JavaME等,以構建出一個完整、實用的課程教學體系,確保學生學以致用,在學習中充分掌握Java語言的完整知識體系和專業技能。教學的內容要緊跟市場需求,將企業常用新技術、新理念及時引入課堂。采用這樣的方式,不僅可以讓學生了解Java程序設計語言在程序設計知識中的地位和價值,更能使學生明確自己的學習目標和目的。
2.2 注重啟發式教學,激發學習興趣。教學中教師要改變傳統的灌輸、講授式教學,而應嘗試啟發式的教學,根據學生的基礎和思維能力來確定與知識相關的問題,來引導學生進行主動思考,使學生在問題的啟發中完成知識的學習。
例如,學習過C語言的學生的語言基礎多數都是面向過程的程序設計,這時,教師就可以通過舉例子來引導學生理解面向對象和面向過程的程序語言的區別。以泡茶為例,按照面向過程的思維進行分析,其步驟分為:取水、燒水、準備杯具、沏茶。如果是面向對象的思維進行分析,首先要分析問題中的對象,即茶葉、杯具、水壺,再通過這些對象來提取出對應的類,通過中方法,循序漸進的引導學生了解什么是類、類的屬性變量、什么是對象等等,進一步展開分析兩種方法的優劣對比等,把枯燥的知識和現實生活結合起來,提高學生的學習興趣。
2.3 采用理論實踐結合教學法,強化操作能力。這種方法首先引導學生讀代碼,讓學生閱讀大量優秀源碼,來加強對于程序語言編寫的基礎性理解,同時也能夠開闊學生的知識面,模仿優秀的代碼變成習慣,形成自己的風格;其次是讓學生編代碼,在大量閱讀的基礎上,改變一些條件,來使學生自己動手編寫代碼,增強對所學知識的理解,使對知識的感性認識提升為理性認識;最后,在學生編寫代碼的過程中,如果出現問題或者錯誤,教師應當引導學生自己進行“改代碼”,引導學生利用所學知識在API和網絡上尋找解決方案,培養學生對于代碼糾錯和程序調試的能力。
2.4 高校開設創新性的實訓教學。針對低年級的學生,可以把實際企業的案例進行精心的安排,在難度和技巧方面進行區分的基礎上來布置設計課題,有策略性的指導低年級學生學習程序編碼和系統設計。
對于高年級的學生,要對先進企業的先進技術進行分析,針對學生的學習程度制定科學合理的訓練課題。同時選拔一批理論扎實、經驗豐富的教師對學生的實訓進行指導,帶領學生來進行分析和設計。通過這種方式,可以有效提高學生對于所學知識的運用能力,達到實訓的目的。
3 結語
Java程序設計語言的教學應當以培養學生的實際設計操作能力為目標,同時結合目前人才需求的動向、企業技術的新發展,及時更新教學內容,使學生學習內容與社會接軌。本文提出啟發式教學、案例教學等教學方法,以此來提高學生學習的積極主動性和動手解決實際問題的能力,使培養的學生成為專業的Java程序設計語言人才。
參考文獻:
[1]楊超宇.《Java程序設計》課程的教學方法研究與探索[J].電腦知識與技術,2009(5):92-93.
[2]陳.《JAVA程序設計》課程教學改革探討[J].信息系統工程,2010(1):128-130.
[3]劉仁輝,張熠.基于Internet的遠程教育系統中Java語言的應用[A].高等教育改革的理論與實踐研究――黑龍江省高等教育學會2002年學術年會交流論文集[C].2002.
[4]高林,高峰,甘露.基于Structs架構的營銷管理程序開發[A].全國第十屆企業信息化與工業工程學術年會論文集[C].2006.
高職計算機專業的培養目標,是使學生掌握計算機軟件、硬件的基本理論、基本方法和基本技能,能夠從事計算機軟硬件維護、一般應用系統的開發設計及相關領域的應用技術工作。程序設計語言課程是高職計算機專業的核心課程,對其教學內容、教學方法的改進,已經成為高職院校普遍關注和重點研究的課題。
一、程序設計語言教學中存在的問題
l、教學課時少
與普通高校本科計算機專業相比,一方面,高職學生的學習基礎相對較差,導致他們接受較慢,學習困難;另一方面,目前我國高職院校的學制一般是3年,計算機專業的程序設計語言的課時較少,這就導致了實際教學中存在理論課時和實踐課時不夠的情況。因此,教師只能傳授最基礎的程序設計知識,不能提高學生應用程序設計語言解決實際問題的能力。
2、學生的學習動力不足
有些學生認為學習程序設計語言既枯燥又無用,不如學習多媒體或網絡的一些課程;有的學生是因為學習程序設計,需要較強的邏輯思維能力和一定的數學、英語基礎,因而在學習程序設計時顯得力不從心,不能掌握應用計算機解題的基本思維方式,對計算機程序設計產生畏懼感,就知難而退了。
3、實踐環節不能滿足高職教學的要求
計算機專業本身就是技術應用專業,而且高職院校是以提高實踐能力為主的職業教育。然而,現今高職程序設計語言教材,存在的普遍問題就是實踐性教學內容不足,沒有體現教材的實用性和職業性,不能保證對學生實踐能力的培養,不能體現高等技術應用型人才的培養要求,缺少高職教育特色。
4、教學方法落后、考核方式單一
高職程序設計語言課程一般采用的教學方法是教師課上講授加學生實驗的形式,教師在理論課上常常采用“填鴨式”教學,學生很少主動思維,編程題不能獨立作答案。上機實驗時學生僅僅是對書本上現有的一些實例進行編輯調試,一旦調試成功就完成任務。這種教學方法根本不能讓學生掌握如何從一個實際問題人手分析問題、解決問題。單一的筆試考核方式也使教師和學生忽視實踐課環節,舍本逐末。
二、解決程序設計語言教學存在問題的對策
l、調整教學安排,改進教學內容,適應高職人才培養目標要求
高職計算機教育必須突出“以培養技術應用型人才”為核心的教學思想,注重學生實踐能力的培養。針對程序設計語言課程而言,主要包括三個方面。
一是在課程的設置上針對課時少和學生的特點,可以在學習程序設計之初,先開設一個結構化程序設計語言,如C語言、PASCAL或FORTRAN等。適當增加其課時,使教師足以引導學生獨立應用計算機程序設計解決實際問題。計算機程序設計語言雖多,但程序設計的基本知識和方法相同,結構化程序設計語言易于理解和掌握,學生一旦通過它掌握了應用計算機解題的方法和技巧,就可以觸類旁通,很輕松地學習其他程序設計語言。
二是針對高職程序設計語言課程普遍存在課時少的問題,教師要認真設計課堂知識結構,不必追求學科的系統性、完整性,使教學內容充分體現應用性的特點。對易學、易懂的知識及一些基本概念有針對性地講解,對難記的、難懂的知識少講,與今后運用無關的、理論性過強的不講,突出重點,抓住關鍵,將重點放在實際工程應用中需要涉及的知識和通用性較強的編程應用上來。
三是教師在授課的同時,為學生傳授良好的學習方法,提高學生的自主學習能力。計算機知識更新很快,尤其是軟件的發展更是日新月異。學生在課堂上學到的知識與技能遠跟不上社會發展的要求,教師必須使學生認識自主學習的重要性,培養學生學會學習。這樣不但可以提高課堂學習的效率,而且可以使學生在新舊知識間構建起新的信息鏈接,形成新的知識與技能,終身受益。要精講多練,因需施教。
2、采用多種方法,調動學生的學習積極性
首先要使學生充分認識到程序設計語言的重要性,如投其所好,向其講解一些小動畫制作、軟件維護或網絡應用的方法。其次,要幫助學生建立學好程序設計語言的自信,如在開課之初帶領學生學習教材目錄部分,說明進度和標記重點、難點章節,做科目介紹時給學生的壓力適當,使其消除對計算機程序設計產生的畏懼感。對學生要以鼓勵為主,多關注學生,了解學生的學習狀況,有的放矢,并根據情況調整講課內容、重點和進度。
3、解決實踐性教學內容不足問題的措施
一方面在教材的選用上應盡量地選擇帶有大量實驗內容的教材,以提高高職學生運用該程序設計語言進行編程和綜合創新的能力。另一方面任課教師也可以根據學生的學習情況,自己設計實驗課內容。而且,要加大實踐教學的比重,提高學生的實踐應用能力。具體來說可以設置兩個實踐環節,即課內實驗與課程設計。程序設計語言課程的實踐性較強,僅僅通過課內實驗環節是很難達到預想目標的,為此在課程基本內容結束后應增加課程設計教學環節。
4、改進教學和考試方法
一是加強課堂互動,注重啟發式教學。教師要在激發學生創新意識的基礎上,加強培養學生發現問題、提出問題和解決問題的能力。在教學中可利用新舊知識的聯系,提出需要解決的問題,并由易到難,設計一系列具有啟發性的問題,引導學生一步步完善程序設計。
二是精心設計教學實例。零散實例可以加深學生對某些知識點的理解,但實例的內容不連貫,不利于學生從整體上掌握教學內容。因此,還要設計一個規模較大的、典型的、學生熟悉且感興趣的核心實例貫穿于教學全過程。該實例從小到大,隨章節的發展開而逐步成長,呈現為逐步進化的多個版本。例如,在visualBasic程序設計教學中,可以設計一個“學生成績管理系統”作為核心實例,貫穿始終,從而加深對該程序設計語言的整體理解。
三是將軟件工程的思想融合到程序設計語言課程的教學過程中。教師在教學中從一開始就明確應用于工程開發的教育目的,以工程實踐的方式,將軟件工程的基本觀念與課程的全部內容糅合為—體傳授給學生。
四是采用書面考試、上機考試、課程設計相結合的方式全面考核學生學習效果。書面考試可以側重于對基本概念的理解和掌握方面,以考查學生對基礎知識的掌握情況;上機考試可以讓學生在規定的時間內對給定的設計題目編出程序,并在計算機上調試通過,以此考查學生的綜合應用能力和快速編程能力;課程設計可將學生分成若干小組,每組布置一個稍大的有實際應用背景的程序設計題目,由小組成員分工完成,目的是考核學生運用程序設計語言解決實際問題的能力和協作編程的能力。
參考文獻:
[1]葉幼林.對計算機C語言教學的探討與研究[J].中南民族大學學報(人文社會科學版),2004,(4).
[2]解晨光.關于高職高專計算機教學改革的研究[J].教育探索,2006,(8).
[3]袁鋒.談VB程序設計教學方法改革的幾個轉變[J].中國成人教育,2004,(2).
[關鍵詞]VC++程序設計 課程建設 多元化模式 教學改革
一、引言
作為計算機應用基礎,計算機程序設計語言已成為各類高等院校各種專業培養方案中的重要內容。在諸多的計算機程序設計語言中,C語言系列受到普遍關注,其中,Visual C++是在1995年由微軟公司開發并推向市場。由于Visual C++在編譯器和綜合發展環境方面的領先優勢,一經推出便獲得市場好評。隨后,Visual C++一路高歌猛進由最初的1.0版升級至6.0版,并最終發展為網絡時代的C#,可謂計算機程序設計語言的典范。Visual C++作為功能強大的可視化應用程序設計語言,已成為計算機界公認的優秀應用開發工具,她不僅使得開發Windows應用程序變得容易,而且還是各種系統軟件、應用軟件、網絡軟件、游戲軟件等開發的良好平臺。目前,許多包括國內外大公司在內的企事業單位在招募人員時,都把Visual C++編程與實踐作為考核被招募人員計算機應用能力的一個重要方面。因此,我國許多高等院校的理工科專業均開設了VC++程序設計語言課程,并以此作為學生計算機應用基本能力培養的主要方面。
為了有效地開展VC++程序設計語言的課程教學,許多高校相關課題與教學組結合本校的實際情況,從課程計劃安排、課程目標確定、課程內容選擇,教學方法與教學手段運用,教學評價實施等各方面,對VC++課程教學改革進行了有益的實踐與探索,在不同程度上取得成效。例如,將負反饋教學原理運用于課程教學實踐,及時發現和解決學生在學習過程中出現的問題,以提高教學效果;采用實例教學法,培養學生的學習興趣,提高學生自主分析問題和解決問題的能力;從分析學生的認知現狀入手,充分利用現代教學手段,解決VC++課程教學出現的種種困難;從學生綜合能力培養角度出發,注重實用性教學,采用實例教學和現場編程等方法,同時融入工程化思想,引導學生寫好程序,等等。
江蘇科技大學十分重視計算機基礎教育,設立專項基金支持計算機基礎課程的教學改革。學校計算機基礎部VC++課程教學小組根據本校計算機基礎教育的實際情況,以學生掌握VC++程序設計的基本方法與基本技能為基準,同時,結合江蘇省計算機程序設計語言等級考試的基本要求,提出了基于多元化模式的VC++課程教學改革思想,并從課程計劃、課程教學、實驗教學、輔助教學、課程評價、教材建設等各個環節進行了有益的實踐與探索,取得良好效果。本文介紹基了多元化模式課程教學改革的基本思想與方法,并對該思想在VC++課程建設各個環節的運用以及所取得的成效進行總結。
二、多元化VC++課程教學改革
我校Visual C++程序設計語言課程以Visual C++6.0為藍本實施教學,為更好地開展Visual C++程序設計語言課程的教學與實踐,我們引入多元化思想,在課程教學各個環節實施方面進行改革,其特點主要表現在以下幾個方面:
1.課程教學目標多元化
通常,VC++課程教學的目的是讓學生全面了解和掌握Visual C++程序設計語言的基本概念、基本方法和基本技巧,為進一步開發應用打下良好基礎。除了一般意義上的VC++課程教學外,江蘇省每年舉行兩次計算機等級考試,其中VC++為二級考試內容之一,參加對象為省內高等院校完成了VC++課程學習的學生。考試結束后,根據參加考試學生的平均成績對高校進行排名,這一舉措在無形中使得計算機等級考試成為衡量高校計算機基礎教學水平的一種標準,因而各高等院校對次十分重視。雖然一般意義上的VC++課程教學與等級考試在教學內容上可以實現有機的統一,但是在課程教學目標的制定、教學的組織、教學方法與教學手段的運用、課程教學評價等方面卻存在一定差異。如果說VC++課程教學的目的是讓學生掌握VC++程序設計的基本知識與基本技能,那么,等級考試則更加注重學生對VC++基本概念在細節方面的理解與判斷;如果說VC++課程教學旨在培養學生的算法意識,使其在整體上了解和掌握VC++程序設計的基本方法,通過練習與實踐,編程能力不斷提高并能最終解決實際問題,那么等級考試更看重的是學生閱讀程序的能力,同時能發現其中局部的錯誤并加以改正。前者以素質教育為主,后者或多或少帶有應試教育成份,但我們認為兩者都十分重要。VC++課程教學不僅要讓學生掌握應有的知識和技能,而且要讓更多地學生能夠通過等級考試,這無疑對課程教學目標的設定提出了更高要求,即既要考慮一般意義上的課程教學,又要兼顧到等級考試。此外,由于學校在學位授予方面對等級考試沒有硬性要求,有些學生不參加等級考試。對這部分學生,允許他們放棄一些非計劃內教學環節的學習,在成績評定上另行標準。如此做法,不僅從整體上能有效地組織和開展課程教學,而且也較好地體現了“以人為本”、“因材施教”的教育理念。
2.課時計劃多元化
由于課程教學目標同時考慮課程自身以及等級考試等多方面的要求,因此需要一定數量的課時來支持。根據課程教學目標的要求,我們對省內一些高校VC++課程的建設和教學實施情況作了調查,并采取了課內與課外相結合的培養策略。即除了課程計劃內學時外,增加一定數量的計劃外學時作為補充,同時對各個學時段按功能進行分解。課程教學總學時為120學時,其中計劃內學時為96學時,主要用于課程知識與課程試驗教學;計劃外學時為24學時,主要用于階段性測試和強化訓練。各學時段的教學內容、教學目的、授課時間安排見表一。其特點主要表現為:在課時計劃編排過程中,我們不僅考慮課程目標要求,也考慮到了等級考試的要求;不僅考慮了平時學生學習情況的及時反饋,也考慮到了學生從課程學習到備戰等級考試的連貫性。
3.成績綜合評定多元化
為了讓學生能夠以積極的態度完成各個課時段的學習,我們將課程總成績按各個課時段的功能進行了分解,形成了多元化成績評定辦法。該辦法既考慮了參加計劃外課時學習的學生,也考慮到了不參加計劃外課時學習的學生;既要求學生重視課程學習,又鼓勵學生積極參加等級考試。為了讓學生能夠利用假期時間認真復習,積極備考,進一步鞏固所學知識,我們將學生課程最終評定放在第二學期計劃外強化練習與測試完成之后。學生課程學習成績形成包括以下幾個方面:
(1)VC++程序設計語言課程總成績由課程學習成績和課程實驗成績構成。其中,課程學習成績占課程總成績的60%,課程實驗成績占課程總成績的40%。
(2)課程學習成績由課程考試成績和平時成績構成,其中,課程考試成績占課程學習成績的80%,平時成績占課程學習成績的20%。課程考試由學校統一組織,試卷由學校教務部門在試卷庫中隨即抽取。課程考試形成課程考試成績。
(3)學生的平時成績由教師根據學生平時的學習情況評定。參加階段性測試的學生在4次測試中以最好一次的成績納入平時成績的計算。
(4)課程實驗成績在第二學期產生。參加模擬上機考試的學生以4次上機模擬測試中最好一次的成績計為課程實驗成績。未參加模擬上機考試的學生以最后一次上機模擬測試(必須參加)的成績計為課程實驗成績。
(5)經折算后,學生的課程學習成績和課程實驗成績必須同時分別大于36分和24分方能合格。不合格者,其成績大于等于50分時,以50分計,小于50分時,以實際分計。
(6)凡通過江蘇省“VC++程序設計語言”計算機二級等級考試的學生,其考試成績可充抵VC++程序設計語言課程學習成績,具體辦法按學校教務處有關文件規定的辦法執行。
三、多元化課程管理
在高校中,任何一門課程的教學與建設都不只是教師和學生的事情,需要學校以及相關部門大力支持,對全校性開設的基礎課程更是如此。在我校進行的VC++課程改革中,由于采用課外計劃外課時,要求學生根據自身的需要,本著志愿的原則交納一定費用,主要用于階段性測試和上機強化訓練的成本支出與教師課外教學工作量補貼;在學生課程成績形成過程中采用跨學期最終評定,成績的錄入又需得到教務考試中心和成績管理部門的支持;為了讓學生了解課程改革的意義和具體實施辦法,更好地做到有目的、有計劃的學習,我們編寫了《VC++程序設計語言》學習手冊,要求班主任在開課之前組織學生學習等等。這些措施與辦法的采用,使得課程教學的實施與課程管理呈現出多元化特點,主要表現在:課程教學組負責制定課程教學大綱、教學計劃、案、題庫建設、教材建設、課程網站建設等課程建設任務,并具體組織實施課程教學、階段性測試、強化訓練、輔導答疑、閱卷分析等工作;教務處考試中心負責學生成績管理、課程試卷庫管理、階段性測試和課程統考教室安排等;校財務部門負責計劃外收費管理;校區學生管理辦公室負責組織班主任搞好課前對學生的宣傳工作,并協助任課教師組織學生開展模擬實訓。各部門協調統一的課程教學多元化管理,保證了課程教學各個環節有條不紊地進行,為提高課程教學質量提供了有利保障。
四、結束語
前面,我們介紹了我校VC++課程教學改革的一些具有一定特色的做法。此外,課程建設的其他環節也在逐步進行。如題庫的建設與維護、課程學習網站的建設與維護、集體閱卷分析和集體備課、為課程主講教師配備助教強化輔導環節等等,為了適應課程教學目標的要求,VC++課程教學組還編寫并出版了教材和習題集。經過3年多的教學實踐,VC++課程改革取得明顯成效。在嚴格實行考教分離的情況下,學生課程考試的及格率明顯提高,補考與重修率大幅度下降;省VC++等級考試通過率由原先的20%左右上升到50%左右,學校在省內VC++等級考試排名也由過去的30名以下上升到15名左右,在今年春季的VC++等級考試中,我校主校區學生考試平均成績排名位居全省第7位。更為重要的是,通過課程改革,大大提高了學生學習的積極性和教師的工作熱情,增進了教師與學生、教師與教師以及學校部門之間的交流,教風和學風得到明顯改善。目前,我們正在進行VC++課程改革經驗的推廣工作,最終完成整個計算機基礎課程群的課程建設。
參考文獻
[1]陳天華.面向對象程序設計與Visual C++6.0教程[M].北京:清華大學出版社,2006.
[2]孫永強. Visual C#.NET Web應用程序設計入門與提高[M].北京:清華大學出版社,2003.
[3]陳建平,劉維富等.Visual C++程序設計課程建設研究與實踐[J].計算機教育,2007,(6):18-20.
[4]劉傳平.《C++語言程序設計》課程教學改革的探討[J].中國科技信息,2005,(11):86.
[5]黃曉萍,林偉華,方芳.信息工程類專業“計算機高級語言VC++”課程改革研究與實踐[J].高等立刻教育,2007,(4):63-66.
[6]李俊揚,陳漢武.工科專業C++語言教學目標與方法的探討[J].計算機教育,2007,(8):16-18.
【關鍵字】程序設計 實驗教學 ACM
一、引言
近來年,隨著信息技術在社會各個應用領域的滲透和普及,程序設計類課程已經發展為高校計算機教育的重點課程。理論教學與實驗教學是程序設計類課程的重要組成部分,其中,實驗教學是完整教學過程中的不可或缺的實踐性教學環節。實驗的目的不僅僅是為了驗證所編程序的正確與否,也是為了加深對程序設計語言知識的充分理解,更重要的是培養學生的實際操作能力和積累豐富的編程經驗,從而引導他們利用程序設計語言編程來解決實際問題。基于此,本文對如何更好的進行程序設計類課程的實驗教學作一些探討。
二、現狀分析
目前,我校計算機學院開設了高級語言如C、C++等多門程序設計類課程,這些課程的共同目標就是讓學生通過上機實驗和課程設計來鞏固課堂上講解的語法規則和算法技巧,鍛煉編程能力。但是現有的程序設計類課程實驗教學存在著很多問題,導致整個教學效果得不到提高,與教學目標的要求不相符。本節將主要從三個方面對其存在的問題進行總結:
2.1 實驗教學安排
我院程序設計類課程的上機實驗課時是有限的,一般都是每周安排兩個課時,或者最多四個課時,通常會在連續的幾周內結束。由于一般程序的編寫和調試比較費時間,要是學生不事先做好充分的準備,僅僅靠在兩個課時內去完成一個完整的程序編寫是不太可能的,對所學內容也沒能充分理解,很難在課堂上培養學生的實際編程能力。
2.2 實驗教學內容
我院專業實驗中心的機房環境是一個內部的局域網,不能連接到互聯網,教師都是通過課件投影或屏幕廣播教學軟件來完成主要的實驗教學過程。實驗內容基本卜^都是對課堂理論教學內容進行驗證和實現,學生按照教材或課件來完成實驗。整個的實驗教學環節中,教師根據實際的情況來選擇是否進行案例教學,而當前多數實驗教學過程中的案例所覆蓋的知識點范圍不夠理想,不能將新舊知識點都包含進來。案例陳舊,缺少更新,實用性和趣味性也不強,因此不能很好的激發學生的學習熱情,不利于培養學生的獨立思考和動手操作能力,未能達到教學目標的要求。
2.3 實驗教學考核
實驗課程主要是通過實驗報告中的程序編寫情況來考核的。由于時間有限,實驗報告的批改都是教師在課后另找時間檢查,教師往往只能通過紙質的實驗報告來分析學生的程序,要求程序能正常通過,看到運行結果就可以了,而忽略了程序中的調試環節,而這些環節中通常都是學生未掌握的知識點。這種考核方式不利于教師對學生學習情況的掌握,也不利于培養學生的創新能力。
三、ACM學習模式的特點
現在,隨著ACM國際大學生程序設計競賽(簡稱ACM)在高校中的推廣,越來越多的學生參與進來了。在迎接ACM競賽的學習過程中,形成了一種具有ACM競賽特點的學習模式,這種學習模式的特點如下:
l、ACM競賽所涉及的知識面十分廣泛,算法電極具復雜性。通常在平時的訓練過程中為了能深刻而透徹的理解各個知識點,教師會引入大量的案例教學。運用典型案例可以將學生帶人特定的問題進行案例分析,通過學生的獨立思考或團隊合作,進一步提高其解決具體問題的能力。
2、ACM競賽是通過在線測評系統上實時提交程序代碼,給出評判結果的競賽形式。ACM測評系統能夠實時的給出參賽隊的排名情況和每道題的通過率以及通過人數,教師可根據題目的通過率來掌握學生對知識點的學習情況,也可以反思其教學方法和教學內容中存在的問題。
四、基于ACM模式的程序設計類課程實驗教學的做法
將ACM學習模式應用到我院現有的程序設計類課程實驗教學過程中,具體措施運用如下:
4.1 實驗課程的開設
我院高級語言(C、C++)程序設計實驗課程都是在大一這一學年開設的,大一第一學期是面向過程的C語言編程學習,大一第二學期是面向對象的C++語言編程學習。這樣開課的結果就使得大多數學生連面向過程的編程都還沒有完全搞清楚,就直接跳到了面向對象的編程,可以說整個大一學期都是處于混沌的編程狀態。因為對程序設計語言的思想和語法還沒完全掌握,所以很多學生不具備基本的編程能力,甚至對編程有恐懼感。為了解決這些問題,我們結合ACM的競賽模式來調整開課計劃,把原計劃2個學期的高級語言程序設計實驗課程的教學時間調整為5個學期,這樣可以貫穿整個計算機專業課的學習過程,從而將程序設計語言和其他計算機專業課的學習更好的結合起來,讓學生有時間去深刻地理解程序設計語言的思想和方法,不斷地鍛煉實踐操作能力和積累編程經驗。
4.2 實驗內容的選取和實驗課程的考核
對實驗環境來說,要求將我院專業實驗中心機房連接到我校的源程序在線測評(Onlinejudge,簡稱OJ)平臺上。根據程序設計類課程的實驗內容和具體要求,每次實驗前,教師可以從我校或者其他高校的OJ平臺上的ACM競賽題庫中挑選或改造2-3個相關題目作為實驗內容掛到我校的OJ上。在實驗課階段,由學生獨立完成或者自由組隊來編寫程序,調試程序,解決問題,編寫好的程序提交給OJ來判斷正確與否。通過每次實驗在OJ上完成的做題數量,教師可以由此掌握到學生對知識點的學習情況,對欠缺的知識點再給與重點講解。同時教師可以根據OJ上的排名很輕松的完成實驗課程的考核。學生也可以通過每次實驗的做題和排名情況,來檢查自己的學習方法和學習內容,從而達到熟練掌握所學內容的實驗教學目的。
關鍵詞:管理信息系統;程序設計;面向對象
中圖分類號:TP315 文獻標識碼:A 文章編號:1009-3044(2013)17-4027-03
縱觀我系各年級、各層次人才培養方案,除去專業實習與畢業設計環節,我校專科學生總共在校5學期,程序設計語言類的課程開設共持續4學期,本科學生總共在校7學期,程序設計語言的開設共持續6學期,雖然經過長時間的系統學習,但是效果并不是很理想,雖然我系的人才培養定位希望在廣度上和深度上均有所突破,針對面向過程和面向對象兩類程序設計類課程,開設有《C語言程序設計》、《面向對象程序設計》、《Java語言程序設計》、《Delphi語言程序設計》、《C#語言程序設計》、《.Net語言程序設計》等一系列程序設計類課程,企圖用程序設計語言的高覆蓋率換取高就業率,但大多數同學均感覺投入了過多的精力,卻沒有精通任何一門程序設計類語言,而且我系從事計算機相關工作的畢業生人數比例不到25%,這與我們人才培養的初衷出現了嚴重的不一致,通過跟蹤走訪,就業后兩到三年的時間內,從其他行業轉入計算機行業的比例顯著增加,針對該現象[1-2],我們以《C語言程序設計》〉和《C++面向對象程序設計》兩門課程為研究對象,采取利用此兩門語言編寫同一套軟件等方式,讓學生深刻理解面向對象和面向過程的區別,從而推廣到其他面向對象類程序設計類課程的教學中,達到在縮短單門課程教學周期的同時,提升學生實戰經驗的目的。
1 需求分析與概要設計
《C語言程序設計》作為我系開設的第一門程序設計類語言課程,在第二學期開設,學時為72,為使學生以最快的速度進入實戰狀態,我們選擇數據庫編程方向對學生進行訓練,只需滿足增加、刪除、修改和查詢四種基本功能,由于學生在此時還沒有開設數據結構和數據庫的相關知識,故數據我們采取文本的方式進行存儲[3]。基于此,學生管理信息系統的功能模塊圖如圖1所示。
2 具體實現
3 結束語
本系統雖然功能簡單,但是對處在僅僅開設了《C語言程序設計》課程階段的同學來說,在對C語言程序設計課程進行全方位的理解來講,意義卻是重大的,其中對函數知識點熟練的運用,對后續面向對象程序設計類課程的學習也打下了良好的基礎。
參考文獻:
美國加利福尼亞大學戴維斯分校程輝教授所設計和開發的C/C++解釋計算平臺(Ch)是一個適合于中國計算機程序設計教學的解釋計算平臺。
首先,Ch支持跨平臺執行C/C++程序,它可以在Linux、Unix、Windows等多種操作系統上運行,特別適合中國的國情。眾所周知,《國家中長期科學和技術發展規劃綱要(2006-2020年)》所部署的“核高基”重大專項研究中,中國將大力發展“基礎軟件產品”,其中最重要的就是操作系統。在該專項研究的支持下,中國將發展基于Linux等開源軟件的操作系統,或基于自主開發并與Linux兼容的操作系統,因此,中國今后的操作系統平臺將不再是Windows一統天下,而是朝著Linux、Windows等多種操作系統多元化發展的方向邁進。與此相適應,中國的程序設計語言教學也不應當只教VC、VB這類依賴于Windows平臺的語言,而是應當教一些跨平臺語言,在像Ch這樣的平臺上流暢運行,這是落實國家軟件發展戰略的需要。
其次,Ch平臺既可編譯執行,又可解釋執行,具有良好的交互性。過去,很多學校將BASIC語言作為程序設計的入門語言,就是考慮到解釋執行的BASIC語言比一般編譯執行的語言更容易學。可是BASIC語言的用途有限,不宜作為程序設計語言的首選,而C/C++語言的功能強、應用廣,但卻難教、難學。現在,Ch語言平臺支持了C語言的所有特性和C++語言的大部分特性,又具有解釋執行語言易教、易學的優點,很適合作為程序設計語言教學的首選。一些學校的教學實踐表明,采用Ch教學的效果比較明顯,老師和學生的反映良好。
此外,Ch還是一個可嵌入的腳本引擎,可以無縫地嵌入到已編譯的程序中,因此可以用C/C++腳本做柔性編程,這使Ch特別適合應用于嵌入式系統。目前中國已成為一個制造大國,但中國制造業的附加值和利潤大多很低,缺乏競爭力。為了優化我國制造業的產業結構,就要大力發展嵌入式系統提升制造業的競爭力,因此我國迫切需要大批掌握嵌入式系統核心技術的人才。如果學生掌握了Ch,就會比較適合承擔與嵌入式系統相關的工作,較好地適應人才市場的需求。這是因為,一方面,大多數嵌入式系統是用C/C++編程的,另一方面,Ch作為一個可嵌入的腳本引擎,可以提高嵌入式系統的效能。
最近的“黑屏”事件促使人們重新審視中國的信息安全問題和計算機的教育培訓問題。人們發現,過去中國的計算機教育培訓體系過分傾向于微軟一家公司的產品,而其他大國都不是這樣。如美國排名靠前的十多所名牌大學的大多數計算機系都配備Unix或Linux實驗室,許多大學只有Unix或Linux實驗室,只有極少數只配備Windows實驗室;俄羅斯信息技術和通信部長要求,到2009年,俄羅斯所有學校都安裝Linux(Rissian OS)。近年來,我國有關部門也已著手改革(如在40所重點大學建立Linux技術培訓與推廣中心等),但要完全糾正上述傾向,還要繼續努力。我們相信,在程序設計語言教學中推廣Ch平臺,將會有助于推進計算機教育培訓體系的改革。
C語言 結構化程序設計 循環結構 效率
一、引言
學習和應用計算機高級程序設計語言的人都知道,在這些語言中為實現結構化程序設計,一般都會采用三種最基本的結構,即順序結構、選擇結構和循環結構。因此,掌握這三種基本結構的使用方法,是學習和掌握高級程序設計語言課的基礎。這三種基本結構中,順序結構和選擇結構和我們平常的思維習慣相似。因此,最容易理解和掌握;而循環結構是這三種基本結構中最復雜的一種結構,與我們日常的思維習慣不盡相同,因此理解起來相對來說比較困難。但是,幾乎所有的程序都離不開循環結構,利用它可以簡化程序、提高工作效率。因此,學習和應用高級程序設計語言的人又必須要掌握循環結構。但是,通過本人近幾年的教學發現,大多數學生在學到循環結構一段時間后,干脆將這門課給放棄了,原因是他們覺得循環結構太難理解了。用順序結構和選擇結構做一個小程序還可以,用循環結構實在難理解。鑒于這個原因,本人將日常授課中總結出來的一點心得從初學者的角度寫出來,希望能對即將和正在學習高級程序設計語言課的人有所幫助。當然,我們在這里是以C語言為例來說的,其實這方面的知識對其他語言比如Visual Basic語言等同樣適用。
在C語言中,循環結構主要是由For語句、While語句、Do-While語句三種結構來實現的。而在這三種循環結構語句中又以for語句的應用更為廣泛。因為for語句在其開頭語句中就已經包含了循環變量的初始值、循環變量的終止值、循環的判斷條件以及循環變量的變化趨勢等這些內容,因此在編寫其循環體時,只用考慮其循環體應該包含的主要功能就行了,而不用在For語句之前對循環變量的初始值進行過多地考慮,同樣也不用在循環內部考慮其循環變量如何變化。對大多數有程序設計經驗的人來說,使用for語句實現循環結構是一件輕而易舉的事情。但是,對于沒有經驗的初學者來說,要想將for語句的作用及使用方法掌握住也不是一件容易的事情,更不用說While語句、Do-While語句的使用了。因此,本文從初學者的角度,闡述了C語言中循環結構的幾種典型應用。
二、用循環結構輸出幾何圖形
在教學過程中,不管開設哪一種高級程序設計語言課,只要一講到循環結構,大多數老師幾乎不約而同地選擇輸出簡單的幾何圖形來作為講解循環結構的最好實例。
對于這種類型的題目,初學者往往最容易想到的方法就是采用多條輸出語句來完成程序的設計。雖然這種方法很快能夠實現所要效果,但其缺陷也是很明顯的:缺乏靈活性、程序修改起來不方便,也不符合程序設計的思想。比如,我想讓大家輸出8行,每行36個“*”。這個時候,我們就不得不在輸入“*”的時候特別仔細,因為一不小心可能個數就不對了。
但是,這樣的問題如果用循環語句來實現的話,程序不但可以簡化多,并且可以很靈活地將其修改成我們想要的效果。
因此,在講解這一類圖形時,授課教師最好引導學生按照正常的程序設計思想,先分析圖形的組成結構,找出其中變化的規律,然后按照所找到的規律用循環結構來編寫出相對應的程序代碼,這樣一旦要求有一點點變化不用大篇幅地修改程序,而只用找到關鍵的幾個地方修改一下就可以了。教師在講解的過程中,可以舉一反三,多次修改、讓學生反復練習,直到他們理解為止。
現在,我們來具體分析一下該圖形,看看它有什么樣的特點,然后我們利用For循環將它的程序代碼編寫出來。
三、結束語
以上關于循環結構的使用基本上都是在程序設計教學過程中的一些體會與總結,可能比較膚淺,但是對于初學者來說,掌握這些知識還是有必要的。在進行課程教學的過程中,將自己在學習過程中得到的一些好的方法傳授給學生,讓他們從中去實踐、體會,從而引起他們更大的學習興趣是必要的。如何讓一名初學者盡快擺脫日常的思維定式,更加透徹地理解和掌握程序設計中的基本思想,領會程序設計的精髓,是高級語言程序設計這門課程在講授過程中,應該時刻注意的問題。更希望學生在學習的過程中不只是從老師這里拿一些現成的經驗去使用,更重要的是讓學生學會自己去發現問題、解決問題,總結出一些更好的程序設計方法,為以后進行軟件開發與設計打下良好的基礎。
參考文獻:
[1]譚浩強.C程序設計(第三版)[M].清華大學出版社,2005.
[2]蘇運霖.計算機程序設計藝術第1卷?基本算法[M].北京:國防工業出版社,2002.
[3]譚浩強.C語言程序設計(第二版)[M].北京:清華大學出版社,1999.
一九九三年美國的克林頓政府提出了“信息高速公路”計劃,從而,這十多年間在全球范圍內引發了一場信息風暴,信息技術幾乎觸及了現代生活的方方面面,毫不夸張地說沒有了信息技術,現代文明的生活將無從談起;作為信息技術中最重要的部分,計算機技術無疑是其發展的核心問題,而我們知道計算機只是一臺機器,它只能按照計算機語言編好的程序運行,那么正確認識計算機語言的過去和未來,就是關系到計算機發展的重中之重;以自然辯證法的觀點認識和分析計算機語言的發展歷程,將有助于更加全面地推動計算機技術的發展,有助于更加準確地掌握計算機語言發展趨勢。
一、科學認識大門的鑰匙
當代自然辯證法,是對于自然界和科學技術發展的一般規律以及人類認識自然改造自然的一般方法的科學,是辯證唯物主義的自然觀、科學技術觀、科學技術方法論。它主要研究自然界發展的總規律,人與自然相互作用的規律,科學技術發展的一般規律,科學技術研究的方法。馬克思、恩格斯全面地、系統地概括了他們所處時代的科學技術成功,批判地吸取了前人的合理成分,系統地論述了辯證唯物主義自然觀、自然科學發展過程及其規律性,以及科學認識方法的辯證法,以恩格斯的光輝著作《自然辯證法》為標志,創立了自然辯證法繼續發展的廣闊道路。自然辯證法是哲學的一個重要組成部分。在辯證唯物主義哲學體系中,自然辯證法與歷史唯物論相并列。它集中研究自然界和科學技術的辯證關系,是唯物主義在自然界和科學技術領域中的應用,它的原理和方法主要適用于自然領域和科學技術領域。學習和運用自然辯證法將有助于我們搞清科學和哲學的關系,從而更加清楚地認識科學的本質和發展規律,更加全面的觀察思考問題,只有加深了認識,我們才能更好地發揮主觀能動性,迎接新的科學技術的挑戰。下面我將以自然辯證法的觀點來分析計算機語言的發展歷程。
二、計算機語言的發展歷程和
發展趨勢
計算機語言的發展是一個不斷演化的過程,其根本的推動力就是抽象機制更高的要求,以及對程序設計思想的更好的支持。具體的說,就是把機器能夠理解的語言提升到也能夠很好的模仿人類思考問題的形式。計算機語言的演化從最開始的機器語言到匯編語言到各種結構化高級語言,最后到支持面向對象技術的面向對象語言。
1、計算機語言的發展歷史:
二十世紀四十年代,當計算機剛剛問世的時候,程序員必須手動控制計算機。當時的計算機十分昂貴,唯一想到利用程序設計語言來解決問題的人是德國工程師楚澤(konrad zuse)。幾十年后,計算機的價格大幅度下跌,而計算機程序也越來越復雜。也就是說,開發時間已經遠比運行時間來得寶貴。于是,新的集成、可視的開發環境越來越流行。它們減少了所付出的時間、金錢(以及腦細胞)。只要輕敲幾個鍵,一整段代碼就可以使用了。這也得益于可以重用的程序代碼庫。隨著c,pascal,
fortran,等結構化高級語言的誕生,使程序員可以離開機器層次,在更抽象的層次上表達意圖。由此誕生的三種重要控制結構,以及一些基本數據類型都能夠很好的開始讓程序員以接近問題本質的方式去思考和描述問題。隨著程序規模的不斷擴大,在60年代末期出現了軟件危機,在當時的程序設計模型中都無法克服錯誤隨著代碼的擴大而級數般的擴大,以至到了無法控制的地步,這個時候就出現了一種新的思考程序設計方式和程序設計模型——面向對象程序設計,由此也誕生了一批支持此技術的程序設計語言,比如eiffel,c++,java。這些語言都以新的觀點去看待問題,即問題就是由各種不同屬性的對象以及對象之間的消息傳遞構成。面向對象語言由此必須支持新的程序設計技術,例如:數據隱藏,數據抽象,用戶定義類型,繼承,多態等等。
2、計算機語言的發展現狀:
目前通用的編程語言有兩種形式:匯編語言和高級語言。匯編語言的實質和機器語言是相同的,都是直接對硬件操作,只不過指令采用了英文縮寫的標識符,更容易識別和記憶。用匯編語言所能完成的操作不是一般高級語言所能實現的,而且源程序經匯編生成的可執行文件不僅比較小,而且執行速度很快。高級語言是目前絕大多數編程者的選擇。和匯編語言相比,它不但將許多相關的機器指令合成為單條指令,并且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。同時,由于省略了很多細節,編程者也就不需要有太多的專業知識。 高級語言主要是相對于匯編語言而言,它并不是特指某一種具體的語言,而是包括了很多編程語言,如目前流行的vb、vc、foxpro、delphi等,這些語言的語法、命令格式都各不相同。
高級語言所編制的程序不能直接被計算機識別,必須經過轉換才能被執行,按轉換方式可將它們分為兩類: 解釋類和編譯類。
3、計算機語言的發展趨勢:
面向對象程序設計以及數據抽象在現代程序設計思想中占有很重要的地位,未來語言的發展將不再是一種單純的語言標準,將會以一種完全面向對象,更易表達現實世界,更易為人編寫,其使用將不再只是專業的編程人員,人們完全可以用訂制真實生活中一項工作流程的簡單方式來完成編程。
三、面向未來的漢語程序設計
語言
從計算機誕生至今,計算機自硬件到軟件都是以印歐語為母語的人發明的。所以其本身就帶有印歐語的語言特征,在硬件上cpu、i/o、存儲器的基礎結構都體現了印歐語思維狀態的"焦點視角",精確定義,分工明確等特點。計算機語言也遵照硬件的條件,使用分析式的結構方法,嚴格分類、專有專用,并在其發展脈絡中如同他們的語言-常用字量和歷史積累詞庫量極度膨脹。實際上,計算機硬件的發展越來越強調整體功能,計算機語言的問題日益突出。為解決這一矛盾,自六十年代以來相繼有500多種計算機語言出現,歷經五代,至今仍在變化不已。漢語沒有嚴格的語法框架,字詞可以自由組合、突出功能的整體性語言。在計算機語言問題成為發展瓶頸的今天,漢語言進入計算機程序設計語言行列,已經成為歷史的必然。
1、 發展漢語程序設計語言的理由:
1)計算機語言問題解決,只能從人類語言中尋找解決方案;
2)計算機語言的現存問題是形式狀態與功能需求的矛盾;
3)計算機硬件的發展已為整體性語言-漢語進入計算機程序設計語言提供了條件
2、 漢語程序設計語言的技術特點:
1)漢文字的常用字高度集中,生命力極強,能靈活組合,簡明準確地表達日新月異的詞匯,這些優點是拼音文字無法企及的。
2)漢語言的語法簡易靈活,語詞單位大小和性質往往無一定規,可隨上下語境和邏輯需要自由運用。漢語言的思維整體性強,功能特征突出。
3)漢語程序設計語言的發明者采用核心詞庫與無限寄存器相結合的方法,實現了漢語言的詞素自由組合;將編譯器與解釋器合一,使漢語程序設計語言既能指令又能編程;以獨特的虛擬機結構設計,將數據流與意識流分開,達到漢語程序設計語言與漢語描述完全一致,通用自如。具有漢語言特性的漢語程序設計語言的出現,打破了漢語言不具備與計算機結合的條件而不能完成機器編碼的神話。還為計算機科學與現代語言學研究提出了一條嶄新的路徑,它從計算機語言的角度,從嚴格的機械活動及周密的算法上,向世人證實漢語的特殊結構狀態,及其特殊的功能。
四、計算機語言之父
尼蓋德幫助因特網奠下了基礎,為計算機業做出了巨大貢獻。 尼蓋德是奧斯陸大學的教授,因為發展了simula編程語言,為ms-dos和因特網打下了基礎而享譽國際。克里斯汀•尼蓋德于1926年在奧斯陸出生,1956年畢業于奧斯陸大學并取得數學碩士學位,此后致力于計算機計算與編程研究。1961年~1967年,尼蓋德在挪威計算機中心工作,參與開發了面向對象的編程語言。因為表現出色,2001年,尼蓋德和同事奧爾•約安•達爾獲得了2001年a.m.圖靈機獎及其它多個獎項。當時為尼蓋德頒獎的計算機協會認為他們的工作為java,c++等編程語言在個人電腦和家庭娛樂裝置的廣泛應用掃清了道路,“他們的工作使軟件系統的設計和編程發生了基本改變,可循環使用的、可靠的、可升級的軟件也因此得以面世。”尼蓋德因其卓越的貢獻,而被譽為“計算機語言之父”,其對計算機語言發展趨勢的掌握和認識,以及投身于計算機語言事業發展的精神都將激勵我們向著計算機語言無比燦爛的明天前進。
五、用科學的邏輯思維方法