導航:首頁 > 編程語言 > 編程內功心法

編程內功心法

發布時間:2024-09-23 07:59:08

❶ 學數據結構(C++)有什麼值得推薦的好書

遠標老師以前推薦我看《數據結構》可以拿來入門。然後可以根據自己的實際情況來安排怎麼樣學習數據結構。很多人是看一遍書,然後在遇到演算法之後再去實現它。在這里列出一些我知道的演算法書籍,以供參考。(我也只看過演算法導論,編程之美)

1. CLRS 演算法導論
演算法網路全書,只做了前面十幾章的習題,便感覺受益無窮。
2. Algorithms 演算法概論
短小精悍,別據一格,准經典之作。一個壞消息: 同演算法導論,該書沒有習題答案。好消息:習題很經典,難度也適中,只需花點點時間自己也都能做出來。不好也不壞的消息:我正在寫習題的答案,已完成前三章,還剩九章約二百道題,順利的話二個月之後發布。另有中文版名《演算法概論》,我沒看過,不知道翻譯得怎麼樣。如果有心的話,還是盡量看原版吧,其實看原版與看中文版花費時間不會相差很大,因為大部分時間其實都花費在做習題上了。
dr. dobb's essential books on Algorithm and daba structure
3. Algorithm Design 演算法設計
很經典的一本書,很久之前看的,遺憾的是現在除了就記得它很經典之外其它都忘光了。
4. SICP 計算機程序的構造和解釋
六星之書無需多言,雖然這不是一本講演算法的書,但看完此書有助於你更深入的理解什麼是遞歸。我一直很強調習題,看完此書後你至少應該做完前四章的太部分習題。否則那是你的遺憾,也是作者的遺憾。
5. Concrete Mathematics 具體數學
有人說看TAOCP之前應該先弄清楚這本書的內容,要真是如此的話那我恐怕是看不到TAOCP了。零零碎碎的看了一大半,很多東西都沒有時間來好好消化。如果你是剛進大學不久的本科生,有著大把的可自由支配時間,那你幸運又幸福了,花上幾個月時間好好的讀一下此書吧,收獲絕對大於你的期望值。
6. Introction to The Design and Analysis of Algorithms 演算法設計與分析基礎
很有趣的一本演算法書,有許多在別的書上找不到的趣題,看完此書絕對能讓你大開眼界,實在是一本居家旅行,面試裝逼的必備佳作。
7. 編程之美--微軟技術面試心得
雖說是一本面試書,但如果把前面十幾頁扯掉的話,我更願意把它看作是一本講解題思維的演算法小品。在書中,作者通常是給出一個平常解法,然後再一次又一次的優化改進,你可以很清楚的看到基本的演算法設計思想是如何得到運用以解決實際問題的。如果你已經有了一些演算法的基礎,看完本書應該能使你的演算法應用能力得到一定的提高。另外,本書生動有趣,也同樣適合於初學者。
8. Fundamentals of Algorithmics 演算法基礎
也是很久之前在學校圖書館借來看的,內容記不太清楚了,只隱約記得此書的動態規劃章節猶為出彩。應該是很經典的一本書,個人以為足以和演算法導論等所謂當世經典平分秋色,但是怎麼好像被人提到的不多,或許是我孤陋寡聞了。
9. How to solve it 怎樣解題
二十世紀最偉大的數學思想家之一波利亞的力作,講一般性的解題方法:怎麼認識問題,怎麼轉換問題,怎麼解決問題,如何在問題中得到啟發,如何找到一個通往答案的方向。
10. Programming interviews exposed 程序員面試攻略
一本消遣之作。個人以為要比國內的某「XXX面試寶典」純粹一些,至少也有一些啟發性的內容,而不單單是面試題解庫。
11. Programming Pearls 編程珠璣
學習演算法不僅需要像Alogrithms,演算法導論這樣的重量級的內功心法,像《編程之美》、《編程珠璣》這樣的輕量級的輕功身法也必不可少。前些年網上不是很流行像「給你10億個數,找到最大的n個」或者「給你10億個數,找出現次數最多的那個數」之類的網路面試題嗎?看了此書你就知道怎麼解決了。相比於《編程之美》來說,本書中的示例技巧性略低一些,但是也更有實際應用價值一些。
12. 演算法藝術與信息學競賽
如果演算法導論是九陽神功,那這本無疑就是九陰真經。本書是專為參加一些諸如ACM之類程序設計比賽的同學而寫的,江湖人稱「黑書」。裡面講的都是一些在編程比賽中常用的演算法、數據結構,以及一些數論和計算幾何等。我雖然並不搞競賽,但也從此書中受益頗多。
13. An Introction to Probability Theory and Its Applications
准備看的,現在才發現概率論有多麼重要,可惜本科的時候沒有好好學。前不久一個同學問我個問題,我半天弄了一個程序給他,他說:這里就不是相關系數么,Excel一下就完事!我暈,我還真不知道那就是相關系數。
14. Numerical Analysis
這本的作者是Richard L. Burden,J. Douglas Faires
數值分析,討論各種數值演算法,比如插值、擬合、積分、微分方程的求解、線性和非線性方程組求解等。准備詳細看。
15. TAOCP 計算機程序設計藝術
傳說中的TAOCP,說的人多,看的人少。TAOCP四卷堪稱是演算法藏經閣中的易筋經或者是少林七十二絕技。天下武學,盡出少林,天下演算法,盡出TAOCP也。這點你可以順便翻開一本演算法書看看他的引用文獻就知道了。我只讀了第四卷的部分章節,前三卷暫時還沒敢看,還在讀書計劃表中被無限期擱置。

❷ 孩子為什麼一定要學習scratch編程

2007年5月,一款革命性的免費編程工具開始向公眾開放,它就是我們的主角——Scratch。這樣的工具究竟有怎樣的魔力,能夠吸引全球的青少年學習編程呢?

其實在Scratch設計開發之初,麻省理工媒體實驗室的開發者們就以設計出讓即使是沒有學習過任何編程語法的人也能夠設計出合適的產品的編程語言為目標。而這個任務的產物就是我們的Scratch啦!在這樣的一個完全使用圖形化設計和拖拽式編程的系統中,即使是完全沒有學習過編程語言的人也可以輕松地設計出能夠完成特定目標的程序來。

所以,朋友們,當你還不知道它是什麼的時候,已經有一些人開始默默地帶著自家孩子學習了。。。

❸ 計算機基礎知識對程序員來說有多重要

非常重要,必須認真學習。
學習基礎知識從來都是枯燥的,而且很多時候會給我們一個錯覺,就是基礎知識沒有用。這主要是因為,我們未來工作以後,更多的是面向應用,更直接的就是面向工具的使用,基礎知識基本是不可能直接拿出來用的,所以,大家就會覺得我只要懂應用方面的知識就好了,基礎知識根本不需要去學。
就拿程序員來舉例:
很多的程序員培訓機構,他們並不會教任何的基礎知識,直接就是教編程語言,然後設計一些案例做練習,3個月-6個月基本就結束。這樣教出來的程序員能夠寫代碼嗎?當然是能的,不然這些培訓機構早垮了。而很多大學本科4年讀完的應屆生,說不定寫代碼都沒有這些培訓幾個月的學生強,大學4年對於程序員來說難道就是白費嗎?
並不是的。
基礎知識決定的是你未來的高度,可能你作為一個初級、中級程序員,你不一定會用到數據結構、演算法、編譯原理。但初中級的程序員就是你未來幾十年的全部嗎?
如果是的,在你30多歲的時候,應該就會面對裁員了並且很難找到下一份工作。
程序員是一個干到老學到老的工作,每天都需要去學習一點新的知識,技術也是在不斷的演進,需要去了解未來的技術發展方向,這樣才能夠一直產生價值。而基礎知識是什麼呢,就是當你對技術了解越深入時,越需要用到的東西。
例如:你要做大數據的工作時,你需要數據建模,需要在海量的數據中抽取自己需要的數據,還需要不影響系統的性能,運算速度更快。那麼你就必須要了解演算法,了解時間復雜度。如果你曾經大學時好好的學習了這些知識,並且時不時會溫習一下,那麼你更高更快的勝任這份工作。
但是,對於一個只是了解應用知識的程序員來說,他需要想辦法學習你用4年時間堆積起來的知識,而且還不一定有可靠的老師能夠教他。
再舉個例子,現在華為需要一些技術人才,來做他方舟編譯器的迭代,待遇非常可觀。
而這時,對於懂數據結構、懂演算法、懂編譯原理的人來說,查的無非就是一些應用實踐的知識,這些知識只要有基礎、有環境,1-2周就可以上手。
但是對於只懂應用知識的人,他可能就是看都看不懂,華為也就不可能去招聘這樣的人。
所以,程序員也是有高低之分的,有的年薪百萬,有的年薪可能就十來萬。誰不想拿百萬年薪呢?可能他們也覺得某些知識沒有用,所以沒有去認真的學吧。

❹ 要不要給孩子選擇一個少兒編程輔導班

關於少兒編程,我們先一起了解一下國外少兒編程的情況:
韓國:從2018年起將編程納入小學正規必修課程;
美國:小學信息課程內容,幾乎都是少兒編程類產品。(美國至少一半以上的高薪工作需要一些編程知識和技能);
英國:早在2014年規定將電腦編程學習納入當地中小學必修課程, 學齡5歲以上的兒童必須學習電腦編程;
日本:2016年,日本政府將中小學校必修編程科目加入到了新的成長戰略草案中;
新加坡:多所中小學推出編程學習項目;
而我們中國在今年3月,教育部公布的文件中表示,將在中小學設置編程課程,以推動編程教育的發展。
所以說,編程是孩子必須要掌握的一門技能,早一點學,將受益終身。報班學習編程是非常有必要的,對孩子未來都非常的有幫助,鍛煉思維,培養技能
玩轉創造力 《硬體與編程課程輔導班》
教學目標:培養學生運用編程軟體在發明過程中應用能力和鵝邏輯思維能力
教學內容:硬體編程SCRATCH圖形化編程軟體,使用基於ARDUINO圖形化編程的電子元器件和復雜電路。

❺ ACM國際大學生程序設計大賽(ICPC)

需要跟自己學校聯系,一般都是通過指導老師網上報名
一、ACM/ICPC競賽介紹

(一)有關ACM

美國計算機協會(Association of Computing Machinery, 簡稱ACM) 創立於1947年, 是一個世界性的計算機從業人員專業組織,也是世界上第一個科學性及教育性計算機學會,同時它也是全球歷史最悠久和最大的計算機教育和科研機構。目前ACM提供的服務遍及100餘國家,會員人數達80,000多位專業人士,涵蓋工商業,學術界及政府單位,並有近1000個機構會員。 ACM致力於發展信息技術教育、科研和應用。全球計算機領域的專業人士將ACM 的出版物和會議記錄視做最具權威和前瞻的領導者。

(二)有關ACM/ICPC

ACM/ICPC(國際大學生程序設計競賽)是由ACM組織的年度性競賽,始於1970年,是全球大學生計算機程序能力競賽活動中最有影響的一項賽事,素來被冠以「程序設計的奧林匹克」的尊稱,可以說是大學級別最高的腦力競賽。它為參賽選手展示計算機才華提供了廣闊的舞台,是著名大學計算機教育成果的直接體現,是信息企業與世界頂尖計算機人才對話的最好機會。
大賽開始至今已有30年歷史,其涵蓋的范圍很廣,大致劃分如下:Direct(簡單題),Computational Geometry(計算幾何),Number Theory(數論),Combinatorics(組合數學),Search Techniques(搜索技術),Dynamic Programming(動態規劃),Graph Theory(圖論),Other(其他)。

大賽的比賽形式是:經過校級和地區級選拔的參賽組,於指定的時間、地點參加世界級的決賽,由3個成員組成的小組應用一台計算機解決6到10個生活中的實際問題。參賽隊員必須在5小時內編完程序並進行測試和調試。此種大賽對參賽學生的邏輯分析能力、策略制定和腦力方面具有極大的挑戰性。大賽提倡在壓力較大的情況下,培養學生的創造力、團隊合作精神以解決競賽的問題,從而挑選和發掘世界上最優秀的程序設計人才。每屆ACM/ICPC競賽都是精英薈萃、新才輩出,因而倍受全球著名信息企業的高度關注,在過去幾年中,APPLE、MICROSOFT和IBM等知名企業分別擔任過競賽的贊助商。

(三)ACM/ICPC在中國的發展情況

我國大陸高校從1996年開始參加ACM/ICPC亞洲預賽,前六屆ACM/ICPC亞洲區選拔賽在上海設有賽區,由上海大學主辦。2002年,第七屆ACM/ICPC亞洲預賽在我國設有2個賽區:北京賽區和西安賽區。北京賽區由清華大學主辦,西安賽區由西安交通大學主辦。隨著各高校參賽積極性的不斷提高,大陸地區賽站從02年有所增加。至今,中國大陸地區2008年共設置5個賽站北京、哈爾濱、合肥、成都、杭州。

2008年4月,我校將舉辦2008大連理工大學 ACM/ICPC程序設計大賽(暨第二屆ACM/ICPC東北地區賽大連理工大學校內選拔賽),望廣大同學積極踴躍參與。

二、主辦單位 學生處 校團委 創新實驗學院 軟體學院 三、承辦單位 軟體學院創新實踐中心 四、協辦單位 冠名/贊助企業 五、參賽隊員和參賽資格

1.各參賽隊員須為在校研究生一年級、本科學生。 2.以個人為單位參加比賽。3.所有參賽同學必須服從賽事組委會的統一管理。
4.報名資料應具真實性。

六、報名

(一)報名時間 2008年3月19日至2008年3月31日

(二)報名方式 登錄軟體學院網站http://sst.dlut.e.cn或創新實驗學院網站http://tianwei.dlut.e.cn
下載《ACM/ICPC大學生程序設計大賽報名表》ACM競賽報名表.doc

列印紙檔交至如下地點(視報名情況定在現場賽前是否舉行網路預選賽): 軟體學院報名地點:創新實踐中心(教學樓110)報名;
校部報名地點:ACM/ICPC協會( 研教樓814房間)

(三)咨詢電話 0411-87571518;

(四)比賽時間 2008年4月19日 下午 13:30-17:30

(五)比賽地點 軟體學院實驗中心微機實驗室 校部同學將在4月19日中午12:00在主樓毛主席像前發車前往軟體學院參加比賽。

比賽結束後校部同學17:40在軟體學院信息中心樓下坐車回校部。為了方便各參賽隊員與組委會的聯系,我們建立了QQ群,群號碼:56867105 。希望通過即時通訊來為大家提供更多的方便的服務與幫助。

七、競賽相關內容

(一)競賽准備

ACM競賽不要求使用某一種特定的語言,所以各個隊伍可以根據語言的特點和自己的特長選擇,如果對語言的原理語法和特點均能做到成竹於胸、濫熟於心,在比賽的過程中就可以大大縮短調試的時間,從而獲得優勢。
然而編程之道就如武學之道,語言只是各門各派的武功招式,演算法和數據結構則好比內功心法和武學原理。內力深厚,任何招式到了手上都能夠化腐朽為神奇;掌握了武學原理,更能做到無招勝有招。選手在競賽中最重要的素質,正體現於對演算法和數據結構的掌握和理解上,通過對經典問題的分析,掌握各種演算法的應用范圍和數據結構的作用與具體實現,是每個選手在平時學習中的重點所在。

(二)競賽策略

臨近比賽,在實力上已經難有質的提高,這時我們不妨將注意力轉移到競賽技巧方面,做不成武學道師也學個韋小寶。在ACM競賽中,一般來說能成功解決半數或以上題目的隊伍已經是相當優秀的,解決所有問題近乎天方夜潭,也就是說無論你的實力如何,都還有很大的改進餘地,這其中比較重要的就是競賽的策略。

(1)分工的問題:團隊的配合十分重要,三個隊員之間的合理分工可以大大改進解題的效率,根據隊員的不同特點,不同的隊伍可以採用不同的分配方式,其間一些細節的處理需要三個人有很好的默契。

(2)演算法的選擇:

在所有可行的演算法當中,我們選擇的應該是最可行的方法,而不是最高明的方法,這是競賽與解決問題的一個重要區別,按照熟悉的程度由高到低選擇一個演算法,通過計算演算法的時間和空間復雜度(在必要的情況下)和特殊的測試數據找出一切使該演算法不成立的理由,如果找不到就確定該演算法並選用相應的數據結構。在確定思路的時候注意比較常見的思維方式分析,比如逆向的分析,對稱的分析等等。

(3)程序的編寫:

最好首先編寫輸入和輸出的部分,然後逐步細化,一個部分一個部分地填充調試,其間通過適量的注釋來刻畫程序的邏輯結構和特殊的技巧。在完成全部代碼後用一般的測試數據驗證代碼的正確性,然後處理特殊的情況和邊界問題,試圖盡可能地找出錯誤的情況並加以改正。關於程序的優化主要考慮的是最壞情況下所用的時間是否滿足要求,優化的程度以題目要求為准,足夠即可,盡量避免使用指針和動態分配,在空間允許的情況下一律採用靜態分配。

(4)調試中的問題:

調試中會遇到的許多問題需要在事前有所准備並定出總體設計,當然具體的情況還要臨場分析,考慮的方麵包括程序中的BUG,演算法的正確性和數據結構的合理性,什麼時候該放棄這個問題,什麼時候該返回到先前放棄的問題,是否需要做到或已經做到足夠的優化等等。所有關於調試的輸入輸出都不要刪除,將它們注釋起來即可。

(5)競賽中的雜題處理

在競賽中有時會出現一些新穎的題型,解決它們的演算法很難歸到經典的演算法中去,每個這類的題都有自己鮮明的特點,對於它們根本沒有一般的解法。對於這樣的挑戰,一個新穎的數據結構或一套特殊的循環或判斷常常是必須的。解決這種問題的關鍵在於仔細地閱讀題目的敘述,靈感經常來自於將敘述的邏輯條理整理得十分清楚之後,同樣,對這類題的優化也是需要的,至少需要避免過多的循環嵌套。

(三)編程與競賽

學習編程並不是為了參加競賽,競賽對於多數選手的意義還是在於參與,以及在備戰過程中對自己的鍛煉和提高。在這一點上,ACM競賽和其它一系列競賽是一樣的,只是它的影響力和規模大些罷了,所以筆者希望對編程有興趣的同學都能夠關注競賽,即使不參加,通過了解競賽中涉及的編程知識達到課內很難達到的高度,這對每個人都是有益無害的。
ACM主頁:http://www.acm.org/

閱讀全文

與編程內功心法相關的資料

熱點內容
51單片機學多久 瀏覽:737
源碼內存泄漏分析工具 瀏覽:796
次梁梁口可以不加密嗎 瀏覽:506
數控車g71粗加工編程 瀏覽:849
有什麼掙錢的app 瀏覽:523
歐姆龍人機界面編程軟體 瀏覽:171
手機nfc可以刷加密門禁卡嗎 瀏覽:80
上海坐地鐵用什麼app 瀏覽:344
win命令行編譯qt應用 瀏覽:802
steam搜索文件夾 瀏覽:399
披荊斬棘的哥哥哪個app播放 瀏覽:791
java正則測試 瀏覽:493
如何查詢軟體伺服器的ip 瀏覽:42
程序員學管理 瀏覽:34
android驅動開發權威指南pdf 瀏覽:39
9減7有幾種演算法 瀏覽:442
編程語言的就業前景 瀏覽:147
女程序員的常態 瀏覽:249
騰達如何設置代理伺服器 瀏覽:285
義大利斜體pdf 瀏覽:734