A. 想學編程,c語言學完之後,怎麼再繼續
javascript等,不過我是學C#的,其它也有很多像軟體測試,演算法設計看你對哪一方面更感興趣,決定之後的道路,如果你對版面設計感興趣,你可以從事前端工作,如果你對資料庫與程序設計感興趣,你可以從事後端,等等有很多,當然想繼續C語言也不錯,不過C語言現在學的不夠精的話還是有點難的,編程語言都是基礎,所以我認為先了解多個行業和多個語言,不能只死懂一門,但必須精一門,系統架構之類的,如果你想從事後端,像數據結構,演算法,需要的知識點都不同,編譯原理之類的也需要學會,如果決定不好的話可以先學這些通用的知識,無論以後從事什麼工作,反之學的精的話C語言相關的工作待遇也不錯,新手的話還是推薦學些易於入門的,想學前端就學html5,css3,想學後端的話C#和JAVA都是現在的熱門,當然偏向web方面的還有PHP等
B. C語言學完後應該……
暫時先不要繼續學習新的語言了。 看離散數學,數據結構 數據結構才是編程的核心。說白了,學某種語言就是在學語法,編程核心的東西永遠是不會變的,就是數據結構和演算法,數據壓倒一切,等你這C語言這一門比較深入了,跳到其它語言不費吹灰之力。 編程的核心 1.你無法斷定程序會在什麼地方耗費運行時間。瓶頸經常出現在想不到的地方,所以別急於胡亂找個地方改代碼,除非你已經證實那兒就是瓶頸所在。 2.估量。在你沒對代碼進行估量,特別是沒找到最耗時的那部分之前,別去優化速度。 3.花哨的演算法在 n 很小時通常很慢,而 n 通常很小。花哨演算法的常數復雜度很大。除非你確定 n 總是很大,否則不要用花哨演算法(即使 n 很大,也優先考慮原則 2 )。 4.花哨的演算法比簡單演算法更容易出 bug 、更難實現。盡量使用簡單的演算法配合簡單的數據結構。 5.數據壓倒一切。如果已經選擇了正確的數據結構並且把一切都組織得井井有條,正確的演算法也就不言自明。編程的核心是數據結構,而不是演算法。 6.沒有原則 ——Notes on C Programming(英文原文),Rob Pike PS:根據? 我覺得你可以看看《IT學生解惑真經》這本電子書 還有這張圖片。。。C. 學完了C語言這門課,自己可以做什麼樣的項目去鞏固裡面學過的重點知識呢
參加一些程序設計比賽,既可以鞏固知識也可以得獲獎證書。
經常舉辦比賽的網站:TopCoder(以下簡稱 TC):這個網站可以說是一個程序設計比賽的網站,該網站每個月都有兩到三次在線比賽,根據比賽的結果對參賽者進行排名。參賽者可根據自己的愛好選用Java, C++, C#, VB或python進行編程。參賽者須在規定的時間內完成三道不同難度的題目,每道題完成的時間決定該題在編程部分所得的分數,而比賽可分為三部分:Coding Phase, Challenge Phase和System Test Phase。CodeForces(以下簡稱 CF):這是一個演算法競賽網站,接下來給大家介紹一下CF傳統比賽的規則。在CF,所有的用戶根據在以往比賽中的表現被賦予一個Rating並冠以不同的頭銜,名字也會以不同的顏色顯示。在比賽中,選手有2個小時的時間去解決5道題,而解決某題得到的分數由該題當前的分數減去(不成功的提交次數)*50,這里,某道題的分數是由比賽開始時的分數隨時間線性減少得到的.同時,這里的「解決某道題」是指Pretest Passed,即,通過了一次僅含部分測試點的測評,而最終決定是否得到這道題的分數,要看比賽結束後的統一測評(System Test),如果在這時沒有通過,就稱FST(Failed System Test),在比賽中的提交可以看到在哪個測試點出了什麼問題。Oxcoder(猿圈):猿圈是國內最大最專業的技術人員測評服務商,可以幫企業招聘到最適合的程序員。猿圈是一家專注於it技術人才成長的網站,經常會舉辦各類線上編程大賽,猿圈和TC、CF有相似的地方,也有不同的點。相似之處是這三家網站都是以促進技術人才成長為目的,而且經常舉辦線上比賽,你只需提交程序源代碼,程序會在伺服器上遠程執行。你的程序如果想要被認定為正確,需要在指定的時間和內存限制下運行,產生正確的輸出。不同之處是猿圈的最終目的是為了促進參賽者更好的成長,在參賽者完成了題目之後,猿圈會根據參賽者的答題情況,分析出相關知識點的掌握情況,幫助參賽者查漏補缺。猿圈和不少企業都有合作,比賽通常會設置獎品、現金獎勵和企業offer為獎勵,這對於求職者來說是一個鍍金、求職的好機會。
D. 如何學c語言是不是該多做練習
1、程語語言其實是一個很初級的工具,但是又必須熟練的掌握它,學懂一門編程語言就好像學會了寫字,但是會寫字的人不見得會寫文章,而會寫文章又不見的寫得好。可是如果不會寫字,那就一定寫不出文章來。
2、在學習C語言之前,應該學好計算機基礎。裡面的很多概念對於C程序員都是非常重要的。如果在著手學習C之前,或者已經開始學習C,但是碰到了很多問題,應該再把計算機基礎的書拿來好好看看。如果有足夠的耐心,十足的毅力,應該再學習C語言之前學學匯編,這會對許多比較細膩的概念有清醒的認識。那麼可以在看完一遍C語言的教材後再看,但是一定要看一遍,一定會受益匪淺。不管看什麼書,先認真地看懂,不要貪速度,應該力求深入的理解。如果能夠比較熟練的解決一本教材上的所有習題,那麼就應該轉入對演算法的學習,盡管此時的C語言還稱不上精通,有許多細節問題還不了解,許多問題還沒有碰到,但是這些問題會在後面的工作和學習中得到解決的。
3、不需要多少資料,掌握一本《The C Programming Language》就足夠了。繼續學習就更加容易。建議不要找捷徑,通過考試除外,真正的水平提高是建立在編程實踐積累基礎上的,必須一個一個程序的完成才能提高。
E. c語言編程學完後學什麼
呵呵,c語言知識只是入門哦。
首先推薦你精進理論知識,數據結構和演算法,不說精通,但絕對要了解。
其次,根據你的興趣和愛好,選擇方向。
c/c++主要針對底層系統,以及對速度和性能要求較高的軟體,比如3d繪圖,資料庫,操作系統,網路服務端等等。
JAVA針對手機平台,以及網路方面的應用開發。
python,php,javascript等腳本語言適合web開發。
也可以做DBA,學資料庫。
總之有很多種,你自己上網去查,這里就不累述了。
當然,掌握一門甚至多門語言,不代表就萬事ok了。比如你用c++開發圖形圖像類軟體,那麼你必需對圖形圖像的相關理論知識有所了解,又如用java開發網路類程序,你必須對計算機網路,Tcp/ip協議有所了解,要開發文件系統,就必須對操作系統的有所了解。
如果需要參加實際的項目,那麼你還要學一些框架類的知識,比如.NET框架,J2EE框架,MFC框架等等,從事圖形學,你得學習OPENGL,DirectX等等。只有掌握了相關框架的API這樣才能夠構架大的系統。
總之呢,給你的建議就是:數據結構+演算法+你感興趣的方向
其中,你感興趣的方向=相關理論知識+具體的實踐語言+對應的框架API
F. 學習C語言應遵循哪些步驟
第1步:定義程序的目標
在動手寫程序之前,要在腦中有清晰的思路。想要程序去做什麼首先自己要明確自己想做什麼,思考程序需要哪些信息,要進行哪些計算和控制,以及程序應該要報告什麼信息。在這一步驟中,不涉及具體的計算機語言,應該用一般術語來描述問題。
第2步:設計程序
對程序應該完成什麼任務有概念性的認識後,就應該考慮如何用程序來完成它。除此之外,還要決定在程序(還可能是輔助文件)中如何表示數據,以及用什麼方法處理數據。
學習C語言之初,遇到的問題都很簡單,沒什麼可選的。
第3步:編寫代碼
設計好程序後,就可以編寫代碼來實現。也就是說,把設計的程序翻譯成C語言。這里是真正需要使用C語言的地方。可以把思路寫在紙上,但是最終還是要把代碼輸入計算機。
程序清單1.1C源代碼示例
#include <stdio.h>
int main(void)
{
int dogs;
printf("How many dogs do you have? ");
scanf("%d", &dogs);
printf("So you have %d dog(s)! ", dogs);
return 0;
}
在這一步驟中,應該給自己編寫的程序添加文字注釋。最簡單的方式是使用C的注釋工具在源代碼中加入對代碼的解釋。
第4步:編譯
接下來的這一步是編譯源代碼。再次提醒讀者注意,編譯的細節取決於編程的環境,稍後馬上介紹一些常見的編程環境。現在,先從概念的角度講解編譯發生了什麼事情。
編譯器是把源代碼轉換成可執行代碼的程序。可執行代碼是用計算機的機器語言表示的代碼。這種語言由數字碼表示的指令組成。如前所述,不同的計算機使用不同的機器語言方案。C編譯器負責把C代碼翻譯成特定的機器語言。
此外,C編譯器還將源代碼與C庫(庫中包含大量的標准函數供用戶使用,如printf()和scanf())的代碼合並成最終的程序(更精確地說,
編譯器還會檢查C語言程序是否有效。如果C編譯器發現錯誤,就不生成可執行文件並報錯。理解特定編譯器報告的錯誤或警告信息是程序員要掌握的另一項技能。
第5步:運行程序
傳統上,可執行文件是可運行的程序。在常見環境(包括Windows命令提示符模式、UNIX終端模式和Linux終端模式)中運行程序要輸入可執行文件的文件名,而其他環境可能要運行命令(如,在VAX中的VMS[2])或一些其他機制。
例如,在Windows和Macintosh提供的集成開發環境(IDE)中,用戶可以在IDE中通過選擇菜單中的選項或按下特殊鍵來編輯和執行C程序。最終生成的程序可通過單擊或雙擊文件名或圖標直接在操作系統中運行。
第6步:測試和調試程序
程序能運行是個好跡象,但有時也可能會出現運行錯誤。查找並修復程序錯誤的過程叫調試。學習的過程中不可避免會犯錯,學習編程也是如此。因此,把所學的知識應用於編程時,最好為自己會犯錯做好心理准備。
第7步:維護和修改代碼
創建完程序後,發現程序有錯,或者想擴展程序的用途,這時就要修改程序。例如,用戶輸入以Zz開頭的姓名時程序出現錯誤、想到了一個更好的解決方案、想添加一個更好的新特性,或者要修改程序使其能在不同的計算機系統中運行,等等。
G. 我想自學軟體測試,我現在有C語言的基礎,還要看些什麼書呢要學習哪些測試工具呢以後能在企業中用到的
測試入門
軟體測試(第2版)
Software Testing (2e), Ron Patton
一本測試入門的好書,較全面地介紹了各種測試領域和方法,為測試新手提供了正確的觀念和寬泛的基礎。
軟體測試工程師面試指導
蔡為東
面向初學者,介紹了軟體測試行業、測試工程師素質要求、基本測試技術、求職策略、面試技巧、典型試題,對於測試新手或邁向測試行業的朋友有較高的參考價值。此書還收錄了一些對讀者來信的回復,內容涉及職業規劃、大學生就業、測試學習、測試實踐等,針對當前常見的困惑,做出了謹慎且深思熟慮的回答。附文《我在微軟做軟體測試外包》對於了解微軟中國的流程與文化很有參考價值。
軟體測試的藝術(第2版)
The Art of Software Testing (2e), Glenford J. Myers, Corey Sandler, Tom Badgett, Todd M. Thomas
一本「久經考驗」的測試經典:1979年,第一版面試;25年後,第二版登場。平心而論,有些觀點已經不能直接應用在測試實踐中,但是仔細品味仍有所收獲。畢竟,這是一本需要思考的書,而不是操作手冊。
軟體測試實戰–測試Web MSN
蔡為東
以Web MSN為測試對象,形象生動地介紹了針對圖形界面的黑盒測試技術,有很強的實踐性。圍繞一個實例,全面地的介紹各種測試方法,是此書區別於其他測試書籍的一大特色。附文《膠著》是作者一段開發經歷的回顧與小結,有笑有淚,僅憑此文便值回書資。
通用測試技術
探索式軟體測試(強烈推薦)
《探索式軟體測試》涉及以下重要問題:為什麼自動化測試無法消除所有缺陷,如何才能讓這些缺陷無處遁形?哪些技術可幫助我不斷發現和消除致命錯誤?如何更高效地進行手工測試,增加些許輕松和愉悅的感覺?對於每個項目,如何確定最高效的高級測試策略?在我無法進行全部測試時,哪些輸入是必須測試的?哪些測試用例能提供最理想的特性覆蓋率?在結合使用探索測試和傳統腳本或場景測試時,如何才能獲得理想效果?如何體現來自開發過程的反饋意見,代碼更改嗎?
計算機軟體測試(第2版)
Testing Computer Software (2e), Cem Kaner, Jack Falk, Hung Quo Nguyen
一本值得反復參考的好書,」The bestselling software testing book of all time」 的美譽絕非浪得虛名。作者將多年的實踐經驗用平實的語言娓娓道來,內容涉及測試技術、測試管理、開發流程、思考方法、實踐模式,可謂是一本測試典籍。部分內容看似有些過時,但是其思想和方法仍舊有很高的借鑒價值。
微軟的軟體測試之道
How We Test Software at Microsoft, Alan Page, Ken Johnston, Bj Rollison
微軟的資深測試者審視微軟當前的測試方法,並展望軟體測試的未來發展。缺點是沒有結合Windows或Office這樣的著名且復雜的產品,詳細討論具體項目的具體技術。優點是提供了許多小故事,講述了Windows、Office、Live等產品開發中的點滴。從經驗傳承、啟發思路的角度,這些故事是全書的精華,具有很高的參考價值。
測試有道:微軟測試技術心得
梁博, 許珊, 徐歆愷
內容由一系列技術點組成,每一個點都有精要的描述和作者的心得體會,力圖以小搏大,以精粹勝廣博。但是沒有提供一個理論框架將這些點有機地聯系起來,讀起來有隻見樹木、不見深林之感,也缺少「授人以漁」的獨到見解。最大優點是介紹了一批免費且實用的工具,可以放在案頭備查。
軟體測試基礎:方法與度量
Software Testing Fundamentals: Methods and Metrics, Marnie L. Hutcheson
以風險分析為核心,討論了測試計劃、測試組織和測試設計。其中,關於「測試價值的可說明性」和「利用Office Suite來撰寫、管理測試計劃」的內容有啟發性。適合有一定工作經驗的測試人員參考。
軟體測試(第2版)
Software Testing A Craftsmaj』s Approach (2e), Paul C. Jorgensen
將理論與工藝結合在一起的測試教科書。比較嚴謹地討論了軟體測試的基礎理論,適合軟體測試研究者研讀。
面向對象的軟體測試
A Practical Guide to Testing Object Oriented Software, John D. McGregor, David A. Sykes
介紹了面向對象軟體測試的基本思路和方法。第7章「測試類的層次結構」比較有啟發性,討論了針對繼承的測試設計和組織,相關內容在其他測試書籍中並不多見。
軟體測試技術大全:測試基礎、流行工具、項目實戰
陳能技
該書由多位作者共同撰寫,內容涉及測試理念、測試技術、測試開發、測試自動化、測試管理和常見的測試工具,不愧「測試大全」的書名。有些內容失之於粗糙,一些論述也不夠嚴謹,缺乏參考文獻更是此書的硬傷。瑕不掩瑜,此書理論和實踐結合緊密,仍值得測試工作者學習和思考。
測試管理
笑傲測試–軟體測試流程方法與實施
魏偉
以小說為體裁的測試管理書籍。通過令狐沖和風清揚的對話,從一個逐漸成長的新人的角度,介紹了測試管理的點點滴滴。全書輕松幽默,全無技術讀本的枯燥乏味。附錄所收錄的文章「從新鮮人到新仙人」對於行業新人頗有幫助。
步步為贏–軟體測試管理全程實踐
蔡為東
以「管理就是負責人」為核心,介紹作者擔當測試領導的切身經驗:自我管理、自我成長、編寫測試計劃、編寫測試用例、執行測試、溝通、測試計劃/用例評審、測試總結、員工管理、測試思想等。也適合第一線的測試工作者閱讀,所涉及內容皆和他們的日常工作密切相關。
專項測試技術
軟體安全測試藝術
The Art of Software Security Testing: Identifying Software Security Flaws, Chris Wysopal, Lucas Nelson, Dino Dai Zovi, Elfriede Dustin
軟體安全測試的入門書,用很短的篇幅涵蓋了軟體安全測試的多個領域,為測試人員提供了模型、方法和工具。對於Threat Modeling的介紹很精彩,為進一步的行動提供了良好的理論與實踐基礎。
Web安全測試
Web Security Testing Cookbook: Systematic Techniques to Find Problems Fast, Paco Hope, Ben Walther
一本實踐性很強的Web安全測試手冊。從網路安全的角度,介紹了一批免費的網路通信分析、監控、修改、調試工具;以條目為組織,介紹了的測試方法或策略;以實踐切入,穿插介紹理論知識,通過精心選材和組織,降低了Web安全測試的門檻。
實用軟體測試指南
How to Break Software: A Practical Guide to Testing, James A. Whittaker
軟體測試專家編寫的實戰指南,指導測試人員從攻擊的角度展開軟體測試。介紹了一些實用的測試工具,對於壓力測試、極限測試有較強的參考價值。
軟體測試新技術與實踐
於秀山, 於洪敏
介紹了組合測試技術在測試中的應用。適合組合測試研究者參考。
Web應用程序性能測試指南
Performance Testing Guidance for Web Applications, J. D. Meier, Carlos Farre, Prashant Bansode, Scott Barber, Dennis Rea
微軟模式與實踐(pattern & practices)團隊的佳作,介紹了性能測試的正確觀念、流程和實踐。篇幅短小,內容深邃,值得在實踐中反復參考和體會。
應用程序性能測試的藝術
The Art of Application Performance Testing: Help for Programmers and Quality Assurance, Ian Molyneaux
經驗豐富的軟體性能測試專家分享他的經驗,內容包含性能測試的架構、模型、典型方法和結果分析。適合有一定經驗的測試者參考。
測試自動化
.NET軟體測試自動化之道
.NET Test Automation Recipes:A Problem-Solution Approach, James D. McCaffrey
該書講解了在.NET平台上編寫輕量級測試程序的實用技術。作者曾經在微軟工作,該書與微軟測試開發工程師的培訓材料的契合度很高,實踐性很強。對於Windows平台的測試工程師而言,此書的參考價值很高。
集成測試框架–用Fit進行敏捷軟體測試
Fit for Developing Software: Framework for Integrated Tests, Rick Mugridge, Ward Cunningham
Fit是一種編寫系統測試的測試框架,作為一種業務交流工具,它深刻地反映出敏捷軟體開發的若干特質。此書由Fit之父親自編寫,不但可以了解Fit的方方面面,還能從中體會大師的感悟與實踐。
互聯網單元測試及實踐
陳衛俊, 趙璨, 周磊, 陳洪
介紹了常見的單元測試框架,並結合具體項目講解了單元測試的基本理論和技術。對於Web測試的新手,有較高的參考價值。
經驗總結
軟體測試經驗與教訓
Lessons Learned in Software Testing, Cem Kaner, James Bach, Bret Pettichord
值得反復研讀的經典好書。Tom DeMacro的贊美——「這些經驗中的任何一個,都抵得上這本書的價錢」,所言非虛。
完美軟體–對軟體測試的各種幻想
Perfect Software: And Other Illusions about Testing, Gerald M. Weinberg
該書沒有介紹具體的軟體測試技術,它討論的是軟體開發中的人、他們對測試的認知、軟體測試的目的、實現目的的社會學和心理學上的探索。它試圖建立正確的軟體測試觀念、協調的心理情緒和有效的思考方式。這些要素最終會決定在具體的項目中採用何種具體測試技術的組合。
贏在測試:中國軟體測試先行者之道
蔡為東
介紹了一批測試先行者的個人經驗的書。學習他人經驗可以用較低的成本去擴大自己的體驗,自然是他山之石可以攻玉,開卷有益。不過,個人經驗非批判性地閱讀與理解,不能有效,甚至有害,所以該書適合願意學習且有能力學習的測試愛好者。不足是大部分被采訪者都是管理者,沒有真正的測試技術專家。
軟體測試精要
董傑
作者分享他在測試領域的經驗與思考,其熱情和思辨躍然紙上。缺點是內容卻有些散亂,即便是一章,其系統性也有些不足;對於測試工具背後的測試思想,挖掘得比較淺,沒有上升到測試理論的高度。
H. 學完c語言後
我的情況和你一模一樣 現在只學會了C的基礎語法 只會做一點超級簡單的數學題
看我們學校數據結構的教材 上面多的是偽碼 完全看不下去
不過沒辦法 你是學這個的這些東西就一定要會 我想這不是你我少數人煩惱的問題,很多人一定也經歷過這樣的階段,
我覺得看書一定看的懂,重要的是堅持,有時候看書上的東西實在是沒有門路就放在一邊不管他了,這樣一定學不好的。你第一次看C語言的時候看的懂嗎?反正我是沒有看懂,我個人覺的計算機方面的書都是在看的過程中有很多理解不了的東西,可是看完了全書 很多問題也都知道是怎麼回事了,還有學我們這行的,語言C++和java是一定要會的,就算不怎麼用但是今後會經常看到C++,java的代碼,所以如果看數據結構真的是很頭疼的話可以先看看這兩門語言,也許那個時候再看數據結構就突然覺得豁然開朗了。
學習就是靠平時的積累,積累的多了,有一天會突然發現以前完全搞不懂的問題怎麼這么簡單,俗語也叫開竅,現在我們都還沒開竅,所以繼續努力,堅持下去,一定沒問題的
I. 學完了C語言基礎後該做什麼
你可以寫一個萬年歷的程序,輸入某一年,列印出這一年的日歷,
這個比較簡單,練習一下可以。
做完了,再找些類似的練習。
J. 一開始沒有接觸過,剛學習C語言有哪些要求和要注意的啊
(一)「項目驅動」式教學
目前最著名、最有影響、應用最廣泛的windows、linux和UNIX三個操作系統都是用C語言編寫的。0S是計算機系統(由軟硬體兩個子系統構成)的核心和靈魂,它是軟體中最龐大最復雜的系統軟體。既然如此龐大復雜的0S都可以用c語言編寫,從狹義而言,還有什麼系統軟體和應用軟體不能用c語言編寫呢?由此可以肯定的說,c語言是一門十分優秀而又重要的語言。
c語言程序設計是過程性程序設計語言,它的發展貫穿了計算機發展的歷程,它蘊含了程序設計的基本思想,囊括了程序設計的基本概念,所以它是理工科高等院校的一門基礎課程。
從市面上有關c語言的書籍和高等院校採用的教材來看,它們有一個共性,那就是:脫離了實際應用(全是小打小鬧的小例子),純粹的過程性程序設計,沒有軟體工程思想的體現,沒有一定程序設計風格,僅僅是為了讓大家明白什麼是c語言而已。
高等院校開設c語言程序設計的目的是讓學生對程序設計有個入門,有個直觀的理解,同時為其他後續課程作鋪墊。但是如果教學僅僅以此為目的,那麼教學本身就效果而言是個大大的失敗。
大家知道,在商業上講究唯利是圖,「利」是商業追求的目標,離開了「利」經商,則商無動力,其結果是必敗無疑。在c語言程序設計教學當中,教師應該把「唯用是圖」作為教學的首要目標。如果拋開了實際應用進行程序設計教學,就是紙上談兵,就是「說明書」式的教學。印度的程序設計課程採用「事件驅動式」教學,我認為在中國的c語言程序設計教學中應該採用「項目驅動式」教學。「項目驅動式」教學就是以項目為目的,以c語言理論教學為過程,最終能用c語言設計項目,實現項目的要求。「項目驅動式」教學的關鍵在於培養學生「如何做什麼」和「可以干什麼」。一個項目就是一個工程,在「項目驅動式」教學中,首先應該讓學生簡單了解什麼是軟體工程思想,其次在c語言理論教學過程中,讓學生懂得面向對象的程序設計的風格,最後引導他們來設計項目。
(二)「項目驅動」式教學應注意的問題
1.c語言程序設計教學要幫助學生樹立面向工程的觀點
在計算機行業中,軟體是通過人們的智力活動、把知識與技術轉化成信息的一種產品。軟體的設計已經用工程的觀念來進行管理。軟體設計工作被當作一項系統工程來對待。軟體的的生存周期一般可分為以下階段:問題定義、可行性研究、需求分析、概要設計、詳細設計、編碼、測試、運行與維護。我們不難看出軟體工程的復雜程度是很大的。理工科高等院校把c語言作為一門基礎課程,也是為了給社會培養信息技術人才。眾所周知,養成一個好的習慣是非常重要的,所以c語言程序設計作為大多數工科院校學生接觸的第一門程序設計語言(有的院校講pascal),就應該讓學生樹立正確的觀點。那麼當前的程序設計教學也必須以切合將來軟體工程開發的實際需要為第一目標,使學生在學習程序設計的初級階段就樹立正確的軟體工程觀點。這樣做不僅可以為學生將來從事計算機應用設計打下良好的基礎,而且有利於培養學生分析問題的完備性,以及統籌全局,協調關系的基本素質。
2.理論教學應從單一的「結構化程序設計」向「結構化與面向對象並舉」轉變
「結構化程序設計」方法是程序設計的基礎,必須讓學生掌握得堅實可靠。結構化程序設計的過程是培養學生思維能力的過程,在教學中經常發現有些學生的思維混亂。這些都是缺乏思維訓練的結果。結構化程序設計的訓練不僅可以讓學生養成良好的程序設計習慣,而且可以有效地培養學生思維的條理性和邏輯性。所以在授課過程中要注意講解結構化程序設計的思想時應突出兩點:(1)程序的質量首先取決於它的結構。(2)程序設計的基本方法是自頂向下地逐步求精和模塊化。
在c程序教學過程中,越到後面的章節,學生越會產生設計程序逐漸變難的感覺,這是不符合邏輯的一種怪現象。按照常理,C語言學的越多,說明你的程序設計知識越多,設計起程序來應該更加得心應手,那麼出現這種現象的原因何在呢?當然該問題的出現的原因是多方面的,但是其中最重要的一點就是長期以來程序設計的觀念不是以如何處理好對象為出發點,而是以如何使用好語言為基本點。受這種思想的影響,我們的程序設計教學大多數不是以如何解決好問題為重點,而是以講解語法規則和語句格式為重點,是「說明書」式的教學。這樣做造成的結果就是見到一個程序後學生首先想到是該用哪條語句,而不是思考怎樣合理的解析。要切實解決這個問題,首先應該改變程序設計的觀念。「面向對象程序設計」思想是目前最為流行、極為實用的一種程序設計方法,但是讓學生直接接觸「面向對象程序設計」,肯定不能對程序設計打下牢固的基礎。「結構化與面向對象並舉」是現代計算機程序設計的發展趨勢,應該認真探索研究,讓學生有一個較為輕松的學習過程。程序設計的實質就是編寫處理對象的過程,所以將c與c++有機的融為一體的教材應該是首選教材,在教學過程中,我們應該從社會發展的角度進行探索研究,將目前最為流行又極為實用「面向對象程序設計」思想融合到c語言教學中。
3.c語言教學應培養學生良好的程序設計風格
具有良好的設計風格應該是程序員所具備的基本素質,在實際的項目中程序員往往都有自己的一些編程風格。目前95%以上的程序設計書籍不注重程序設計風格問題,這導致了很多學生沒有良好的程序設計風格,在他們剛剛畢業踏入社會時,如果周圍的同事沒有良好的編程風格,那麼很難通過環境來使自己提高這方面的素質,即使有提高也不容易比較全面的提高。因此在學生接觸的第一門程序設計語言教學中,就應該培養學生良好的程序設計風格,使他們一進工作環境就具備這個素質。
Pascal設計者N.Writh教授十分重視程序設計風格的養成,他堅信「教給學生們以表達他們思維的語言會深深地影響他們思維和創造發明的習慣,而正是這些語言本身的混亂直接影響著學生們的程序設計的風格」,他這里所指的「這些運用」是當時那些主要用於程序設計教學的計算機語言。對學生來講,一開始就強調程序設計風格很有必要,良好的程序設計風格不僅有助於提高程序的可靠性、可理解性、可測試性、可維護性和可重用性,而且也能夠促進技術的交流,改善軟體的質量。所以培養良好的程序設計風格對於初學者來說非常重要。
程序設計風格,實際上是指的是編碼風格。在教學過程中應從源程序文檔化,數據說明的原則,輸入/輸出方法這三個方面培養學生的編碼風格,進而從編碼原則探討提高程序的可讀性、改善程序質量的方法。
(1)源程序文檔化。編碼的目的是產生程序,但是為了提高程序的可維護性。源代碼是需要實現文檔化的。源程序文檔化包括選擇標識符(變數和標號)的名字、安排注釋以及標準的書寫格式等。
①選擇標識符的命名規則。標識符包括模塊名、變數名、常量名、標號名、子程序名等。這些名字應能反映它所代表的實際東西,應有一定實際意義,使其能顧名思義。另外在模塊名、變數名、常量名、標號名、子程序名中使用下劃線是一種風格。使用這一技術的一種廣為人知的命名規則就是匈牙利命名法(變數類型由一個或兩個字元表示,並且這些字元將作為變數名的前綴)。當然使用匈牙利命名法與否都沒有錯誤,重要的是要保持一致性——在整個程序中使用相同的命名規則。這就是說,如果你在一個小組環境中編程,你和其他小組成員應該制定一種命名規則。並自始至終使用這種規則。如果有人使用了別的命名規則,那麼集成的程序讀起來將是很費勁的。此外,你還要與程序中用到的第三方庫(如果有的話)所使用的風格保持一致。如果可能的話,你應該盡量使用與第三方庫相同的命名規則,這將加強你的程序的可讀性和一致性。
②注釋。程序中的注釋是程序設計者與程序閱讀者之間通信的重要手段。注釋能夠幫助讀者理解程序,並為後續測試維護提供明確的指導信息。因此,注釋是十分重要的,大多數程序設計語言提供了使用自然語言來寫注釋的環境,為程序閱讀者帶來很大的方便。注釋分為功能性注釋和序言性注釋。
a.功能性注釋。功能性注釋在源程序中,用以描述其後的語句或程序段是在做什麼工作,也就是解釋下面要「做什麼」,而不是解釋下面怎麼做。對於書寫功能性注釋,要注意以下幾點:第一描述一段程序,而不是每一個語句。第二利用縮進和空行,使程序與注釋容易區別。第三注釋要准確無誤。
b.序言性注釋。序言性注釋通常位於每個程序模塊的開頭部分,它給出程序的整體說明,對於理解程序具有引導作用。有些軟體開發部門對序言性注釋做了明確而嚴格的規定,要求程序編制者逐項列出。有關內容包括:程序標題;有關該模塊功能和目的的說明;主要演算法;介面說明:包括調用形式,參數描述,子程序清單;有關數據描述;模塊位置(在哪一個源文件中,或隸屬於哪一個軟體包);開發簡歷:模塊設計者、復審考、復審日期。
③用標準的書寫格式。源程序清單的書寫建議採用以下幾點:
a.每行只寫一條語句;
b.用分層縮進的寫法顯示嵌套結構層次,這樣可使程序的邏輯結構更加清晰,層次更加分明。
c.書寫表達式時適當使用空格或圓括弧作隔離符。
d.在注釋段周圍加上邊框;
e.注釋段與程序段、以及不同的程序段之間插入字行; (2)數據說明採用的原則。在編寫程序時,要注意數據說明的風格。
數據說明的次序如果規范,將有利於測試,排錯和維護。首先說明的先後次序要固定,例如,按常量說明、簡單變數類型說明、數組說明用數據塊說明、所有的文件說明的順序說明。當然在類型說明中還可進一步要求,例如按如下順序排列:整型量說明、實型量說明、字元量說明、邏輯說明。
其次當用一個語句說明多個變數名時,應當對這些變數按字母的順序排列。
最後對於復雜數據結構,應利用注釋說明實現這個數據結構的特點。(3)輸入/輸出方法。輸入/輸出的方式和格式應當盡量避免因設計不當給用戶帶來的麻煩。這就要求,源程序的輸入/輸出風格必須滿足能否為用戶接受這一原則。所以在設計程序時,應考慮以下原則:輸入數據時,要使輸入的步驟和操作盡可能簡單,應允許使用自由格式輸入;應允許預設值;對輸入的數據要進行檢驗,以保證每個數據的有效性。
(三)結束語
在教學過程中,我們讓學生設計一個程序模擬體育彩票的銷售與對獎的過程,取得了良好的效果。他不僅啟發和誘導了學生獨立思考、積極思維的主動性,而且充分調動了學生學習的自覺性和積極性,使學生融會貫通地掌握了所學知識,提高了分析問題和解決實際問題的能力。
搞好c程序設計的教學工作涉及的因素很多,如果以項目來驅動教學,首先讓學生樹立面向工程的思想,其次把教學從單一的「結構化程序設計」向「結構化與面向對象並舉」轉變,最後特別要培養學生養成良好的編碼風格,從而使他們學會能夠「干什麼」,那麼我們認為教學目的就達到了。