資源描述:
《編程基礎(chǔ)_劉汝佳.ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、編程基礎(chǔ)(NOI培訓(xùn))劉汝佳一些常見的語言(和我的個人觀點)PascalCC++JavaC#PythonRuby次常用的最怕的回憶…最常用的最直白的最喜歡的最早學(xué)的一些常見的語言(和我的個人觀點)想知道答案嗎?一些常見的語言(和我的個人觀點)PascalCC++JavaC#PythonRuby次常用的最怕的回憶…最常用的最直白的最喜歡的最早學(xué)的關(guān)于Pascal多數(shù)學(xué)生學(xué)會的第一門語言方便教學(xué),方便自學(xué)陷阱比C/C++少,但比Java多競賽之外,應(yīng)用范圍很受限競賽之中,仍是主流語言,但高水平選手使用Pascal的比例逐漸減
2、少由于應(yīng)用范圍太窄,Pascal不能在ACM/ICPC、TopCoder和一些商業(yè)比賽中使用關(guān)于C/C++應(yīng)用范圍更廣,以后可以直接做事很多陷阱!非法內(nèi)存訪問、遞歸棧溢出時不會顯式提醒非常靈活,很多程序難以閱讀。例:IOCCC宏:可以定義自己的語言,例如“PINYINC++”操作符:豐富的操作符也是個麻煩:a=a+++++a;STL:模板、迭代器看上去比較恐怖沒有致命缺點,是惟一一門即可在OI中,又可在ACM/ICPC中使用的編程語言關(guān)于Java目前不能在NOI中使用,但個人十分喜歡。希望在不久的將來成為NOI/IOI的
3、官方語言之一語法語義更清晰合理:沒有宏、沒有多繼承、沒有指針,沒有delete,完善的異常處理機(jī)制,更合理的對象繼承樹(例如,數(shù)組也是對象)函數(shù)庫更加強(qiáng)大:更方便的字符串函數(shù)、正規(guī)表達(dá)式函數(shù)、高精度整數(shù)和實數(shù)、基本二維幾何運算、常用數(shù)論函數(shù),以及很多競賽里用不上但在其他領(lǐng)域非常有用的函數(shù)可以在ACM/ICPC和TopCoder中使用如何學(xué)習(xí)一門語言瀏覽文檔。成熟語言的文檔都已成熟獨立編寫自己的程序,閱讀他人的程序多思考小程序:熟練度和準(zhǔn)確性優(yōu)先大程序:合理的設(shè)計、編碼、調(diào)試與測試程序閱讀:風(fēng)格和技巧不同的語言,能找到的別
4、人的程序也不同文檔閱讀舉例:FreePascal自帶必讀user.pdf用戶手冊(167pages)ref.pdf語言參考(136pages)需要時查閱prog.pdf程序員手冊(160pages)rtl.pdf運行時刻庫參考(1586pages)其他文檔chart.pdf局部/全局編譯開關(guān)fcl.pdf組件庫指南fpdoc.pdf代碼文檔工具吳文虎教授:“四句話”編程輸入(cin),輸出(cout),分支(if),循環(huán)(for)稍微上層一點:數(shù)據(jù)結(jié)構(gòu)再上層一點:編程范式模塊化編程:函數(shù)、遞歸、作用域規(guī)則面向?qū)ο缶幊蹋悍?/p>
5、裝、繼承、多態(tài)盡管工程上使用的工具(如OOP)對競賽而言往往過于笨重,但工程上的原則和方法仍然適用“交寫字板上的程序”???寫字板和IDE的區(qū)別?語法高亮、代碼補(bǔ)全、方便的編譯和運行跟蹤調(diào)試:單步、斷點、Watch、修改內(nèi)存編碼編譯測試調(diào)試不被重視花費太多時間設(shè)計幾乎總是被忽略反復(fù)迭代我的方法和建議我寫算法程序不用IDE語法高亮:很多編輯器都有此功能代碼補(bǔ)全:完全不用。學(xué)會查資料編譯和運行:用插件、執(zhí)行外部腳本跟蹤調(diào)試:完全不用。學(xué)會斷言和打印調(diào)試信息給NOI選手的建議使用IDE,并記住一些常用快捷鍵,但不依賴其跟蹤調(diào)試
6、功能學(xué)一點簡單的linux命令(NOI目前使用Ubuntu作為操作系統(tǒng)),若能會一點bash腳本的編寫則更好具體的迭代方法“一次只寫一點點”,確保它正確后再繼續(xù)寫問題:寫多少之后需要停下來?模塊化如何確保它寫對了?測試寫程序的順序:自頂向下vs自底向上模塊化關(guān)鍵:兼顧低耦合與高內(nèi)聚測試的關(guān)鍵:單元測試、自動測試提問時間