【最新】《語言程序設(shè)計(jì)》學(xué)習(xí)總結(jié)與心得 (3)doc_第1頁
【最新】《語言程序設(shè)計(jì)》學(xué)習(xí)總結(jié)與心得 (3)doc_第2頁
【最新】《語言程序設(shè)計(jì)》學(xué)習(xí)總結(jié)與心得 (3)doc_第3頁
【最新】《語言程序設(shè)計(jì)》學(xué)習(xí)總結(jié)與心得 (3)doc_第4頁
【最新】《語言程序設(shè)計(jì)》學(xué)習(xí)總結(jié)與心得 (3)doc_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、語言程序設(shè)計(jì)學(xué)習(xí)總結(jié)與心得 如何學(xué)習(xí)程序設(shè)計(jì)語言 經(jīng)常有人會(huì)問,“怎樣才能學(xué)會(huì)某某語言。”、“我該怎么學(xué)好某某語言?!保鋵?shí)在學(xué)習(xí)某種程序設(shè)計(jì)語言之前,你需要弄明白一個(gè)問題,編程的目的是什么。我們?yōu)槭裁匆幊?。編程就是為了解決各種問題,通過一系列的指令來解決這些問題。那我們學(xué)習(xí)編程,到底需要學(xué)什么呢。因?yàn)榫幊痰哪康氖菫榱私鉀Q問題,顯而易見,我們學(xué)編程,就是要學(xué)會(huì)如何解決問題。高手和新手就是看你解決問題的能力。 我們應(yīng)該如何學(xué)習(xí)。舉個(gè)例子,有一天你想買個(gè)空調(diào)(我想學(xué)編程),于是就是市場上了解空調(diào)的情況,進(jìn)行比較,最終確定某個(gè)品牌的空調(diào)(對(duì)目前的編程語言作些了解,根據(jù)自身的情況,最終確定一門語言來

2、學(xué)習(xí))??照{(diào)買來后,有專業(yè)的安裝工人給你安裝調(diào)試(學(xué)習(xí)前先配置好程序的調(diào)試運(yùn)行環(huán)境,讓你編寫的程序能在電腦上跑起來,通過網(wǎng)上的教程或者購買的書本來了解這方面的知識(shí))。安裝工人走了之后,你想學(xué)會(huì)控制空調(diào),這時(shí)你就遇到問題了“我怎么才能學(xué)會(huì)控制它呢?!保ㄎ以撊绾螌W(xué)習(xí)編程呢。)首先,你會(huì)找來空調(diào)的說明書(程序語言的語法手冊(cè),可以從網(wǎng)上查找或者買本書來看)和遙控器(電腦),邊看說明書,邊通過遙控器來控制空調(diào)(邊看資料邊在電腦上編寫程序解決某個(gè)問題),隨著操作的熟練你就不再看說明書了。當(dāng)說明書上的說明和你實(shí)際的操作對(duì)應(yīng)不起來時(shí),你會(huì)向廠家咨詢,問明原因(可以在某個(gè)技術(shù)社區(qū)或聊天工具上向熟手請(qǐng)教)??傊?/p>

3、一句話,學(xué)習(xí)時(shí)邊看資料邊實(shí)踐(在電腦上編寫、運(yùn)行、調(diào)試你的程序)。 在寫代碼前,一定要先養(yǎng)成良好的習(xí)慣,先把握住程序的整體,然后再細(xì)分,一步一步去完善、去實(shí)現(xiàn)全部功能。無論做哪一步時(shí),你都要明白,你的程序在為你解決什么問題。不然,你的解決問題的能力無法提高,學(xué)習(xí)的目的性也不強(qiáng)。不是有句話,“書到用時(shí)方恨少”,就是在你實(shí)際操作時(shí),會(huì)遇到各種各樣問題,你通自己的探索來解決各種問題時(shí),是最有針對(duì)性的學(xué)習(xí),因?yàn)槟阌羞@個(gè)需求“要如何解決這個(gè)問題”,所以當(dāng)你滿足自己的這個(gè)需求時(shí),也是最有動(dòng)力學(xué)習(xí)的時(shí)候了。學(xué)習(xí)編程,特別在程序出現(xiàn)問題,不按照自己的意愿去運(yùn)行時(shí),一定要有耐心,一行、一行的去閱讀程序,想辦法輸

4、出它的運(yùn)行結(jié)果,看看是否符合自己的意愿,然后找出出現(xiàn)錯(cuò)誤的這一行代碼,最后針對(duì)這行代碼進(jìn)行分析、調(diào)試來解決這個(gè)bug。 當(dāng)你完成一個(gè)學(xué)習(xí)任務(wù)后,其實(shí)你已經(jīng)進(jìn)入編程的大門了,以后只要按照這個(gè)思路繼續(xù)學(xué)習(xí),你就會(huì)掌握越來越多的知識(shí)和經(jīng)驗(yàn),解決問題的能力也會(huì)越來越強(qiáng)。 如何學(xué)習(xí)程序設(shè)計(jì) 有許多網(wǎng)友都曾迷惑地問我?!霸趺礃硬拍軐W(xué)好程序設(shè)計(jì)。”,這不是一兩句話能說 清楚的,于是我就寫了這篇文章,給廣大愛好者一個(gè)能解惑的方法,無論你是什么樣的“鳥”相信都能在這篇文章里找到你想要的 什么是程序設(shè)計(jì) 話就從一個(gè)著名的公式說起:程序設(shè)計(jì)=數(shù)據(jù)結(jié)構(gòu)+算法 每當(dāng)我寫下這個(gè)公式的時(shí)候,心中總有一種新的感悟,可是就這個(gè)

5、程序界盡人皆知的公 式卻難倒了一大批想和bill·gates一爭高下的朋友,下面我為大家解剖這個(gè)公式: “程序設(shè)計(jì)”說白了就是大家所謂編程,先不管這個(gè)詞中有什么深刻的內(nèi)涵,先看看等式 右面的這兩個(gè)名詞。 按照官方的定義:數(shù)據(jù)結(jié)構(gòu)即非數(shù)值計(jì)算的程序設(shè)計(jì)問題中的計(jì)算機(jī)的操作對(duì)象以及它 們之間的關(guān)系和操作;算法是對(duì)特定問題求解步驟的一種描述,是對(duì)指令的有序序列。官方的解釋就是經(jīng)典,可是我們看了卻更糊涂了。別急,聽我給大家解釋。 程序設(shè)計(jì)就像蓋房子,數(shù)據(jù)結(jié)構(gòu)就像磚、瓦,而算法就是設(shè)計(jì)圖紙。你若想蓋房子首先 必須有原料(數(shù)據(jù)結(jié)構(gòu)),但是這些原料不能自動(dòng)地蓋起了你想要的房子;你必須按照設(shè)計(jì)圖紙(

6、算法)上的說明一磚一瓦地去砌。這樣你才能擁有你想要的房子。程序設(shè)計(jì)也一樣,你使用的編譯工具中有各種功能語句或基本結(jié)構(gòu),它們不會(huì)自動(dòng)排列成你要的程序代碼。你得按照程序規(guī)定的功能去編寫,而程序的功能是實(shí)現(xiàn)就是算法的具體體現(xiàn)。所以通俗地說:你必須按照特定的規(guī)則,把特定的功能語句和基本結(jié)構(gòu)按照特定的順序排列起來,形成一個(gè)有 特定功能的程序,這就是:程序設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)算法。數(shù)據(jù)結(jié)構(gòu)是程序設(shè)計(jì)這座大廈的基礎(chǔ),沒有基礎(chǔ),無論設(shè)計(jì)有多么高明,這座大廈不可能建造起來的。算法則是程序設(shè)計(jì)的思想,它的靈魂。沒有靈魂的程序不能叫程序,只是一堆雜亂無章的符號(hào)而已。在程序設(shè)計(jì)中,數(shù)據(jù)結(jié)構(gòu)就像物質(zhì),算法就是意識(shí)。這就像哲學(xué)上

7、說的:意識(shí)是依賴與物質(zhì)而存在的,物質(zhì)是由于意識(shí)而發(fā)展。雙方是相互依存、缺一不可的。 數(shù)據(jù)結(jié)構(gòu)內(nèi)容不多僅僅有幾個(gè)系統(tǒng)自帶的基本結(jié)構(gòu)(像順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、函數(shù)過程)數(shù)據(jù)類型(整型、實(shí)型、布爾、字符等)和用戶定義的高級(jí)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)(數(shù)組、集合、文件、指針(隊(duì)列、棧、樹、圖等)······)就這么多。可是算法卻不同了,它是多中多樣的。它可以讓你讓數(shù)據(jù)以你想要的方式排列(當(dāng)然要符合語法和功能要求_)。再打 個(gè)比方,數(shù)據(jù)結(jié)構(gòu)是人體的各種組織、器官,算法則是人的思想。你可以用你的思想去支配你身體的各個(gè)可以運(yùn)動(dòng)的器官隨意運(yùn)動(dòng)。如果,你想去

8、取一個(gè)蘋果,你可以走過去,也可以跑過去,只要你想,你甚至可以爬過去。但是無論如何,你你的器官還你的器官(沒有變),目的還是同一個(gè)目的(取蘋果),而方式卻是隨心所欲。這就是算法的靈活性,不固定性。因此可以這樣說:數(shù)據(jù)結(jié)構(gòu)是死的,而算法是活的?,F(xiàn)在明白許多了吧。 怎樣學(xué)習(xí)程序設(shè)計(jì) 上面說了許多數(shù)據(jù)結(jié)構(gòu)的在程序設(shè)計(jì)中重要性,所以努力學(xué)習(xí)好數(shù)據(jù)結(jié)構(gòu)是學(xué)好程序設(shè)計(jì)的第一步,也是關(guān)鍵的一步。你初學(xué)起來一定會(huì)覺得難,枯燥(其實(shí)我當(dāng)時(shí)也是這么想的_),什么標(biāo)準(zhǔn)文件、標(biāo)準(zhǔn)類型、標(biāo)準(zhǔn)函數(shù)、標(biāo)準(zhǔn)過程搞的你煩不勝煩。于是,就有許多初學(xué)者就厭倦了,停滯不前了,退縮了。你若是想編好程序的話就想:難道就這么一點(diǎn)點(diǎn)小困難就難

9、倒我了嗎。我還要挑戰(zhàn)bill·gates呢。我一定能行,相信自己,一定會(huì)闖過這一關(guān)的。這樣以來,你就具備了程序員最基本的素質(zhì)毅力。這一點(diǎn)是程序員必備的,否則在后面開發(fā)程序的漫長時(shí)間里,你會(huì)熬不住的。而且只有這樣你才能靜下心來學(xué)習(xí)。這一端時(shí)間沒有什么捷徑,只有多看書、多練習(xí),把所有結(jié)構(gòu)和類型的用法都找掌握牢固。不懂就要問。最好呢,有一位老師指引,這樣比自己在這條路是摸黑前進(jìn)強(qiáng)多了,而且往往還事半功倍。切記。只要跨出了第一步,以后就容易多了,萬事開頭難嘛。一定要堅(jiān)持,當(dāng)你過了這一端時(shí)間以后,你就發(fā)現(xiàn)程序設(shè)計(jì)根本沒有你想象的那樣難。當(dāng)你把所有的東東都學(xué)會(huì)時(shí),程序設(shè)計(jì)的大門已經(jīng)向你敞開了一扇

10、,而另一扇就是······ 算法,這個(gè)是程序設(shè)計(jì)的重點(diǎn),也是難點(diǎn)。許多菜鳥和老鳥的區(qū)別主要在對(duì)算法掌握的熟練程度上面。有許多朋友曾這樣問我:“我數(shù)據(jù)結(jié)構(gòu)上面的都學(xué)會(huì)了,也知道該怎么樣用,可是我為什么還是在編程時(shí),不知道該怎樣用呢。其實(shí),這就是缺少算法思想的一個(gè)具體表現(xiàn)。并不是學(xué)好了數(shù)據(jù)結(jié)構(gòu)就會(huì)編程了。算法是靈活多變的,它不像數(shù)據(jù)結(jié)構(gòu)那樣有固定的形式。算法是不固定性就決定了它的特點(diǎn),你不可能把所有的算法都學(xué)會(huì),因?yàn)樗菬o窮盡的。但是你要是能把自己學(xué)的有限的算法融會(huì)貫通了,那你就了不起了。就好象你只學(xué)會(huì)了、這三個(gè)數(shù),但是你可以組成、

11、83;·····。所以算法這條路既長有短,既難又易。 學(xué)習(xí)好算法的方法不少,在此詳細(xì)的給大家舉幾個(gè)例子。 首先,你要養(yǎng)成一個(gè)良好的程序設(shè)計(jì)風(fēng)格和習(xí)慣。這也分許多種。其中最重要的是養(yǎng)成 自上向下逐步求精的程序設(shè)計(jì)思想和方法。怎樣才是自上向下逐步求精的程序設(shè)計(jì)呢。舉個(gè)例子。有這樣一個(gè)問題:已知三角形的兩邊及夾角,求第三邊及面積。 現(xiàn)在,當(dāng)你看到這個(gè)問題是,你不要立即下手去編寫,而是要思考一下怎樣才能求解(算法),然后把她寫下來以免忘記。于是就寫了: 一級(jí)算法: 輸入兩邊的長度、以及夾角 計(jì)算第三邊和面積 輸出c以及s 當(dāng)你寫完之后,你若覺得第步不太

12、清晰,還不能寫出代碼,那就繼續(xù)求精。二級(jí)求精: 2- 1、將的角度轉(zhuǎn)換為弧度; 2- 2、c=sqrt(a*a+b*b-2*a*b*cos(); 2- 3、s=1/2*(a*b*sin() 哈哈,這樣問題不就得到解決了嗎。接著就可以輕松的編代碼了。再仔細(xì)看看上面的步驟:先寫出一級(jí)算法,如果覺得由此還是得不到源代碼,或者是其中有一步還有很多步驟要寫,那么就繼續(xù)求精,直到你認(rèn)為可以很清晰的寫出代碼為止。但是求精可以因人而異,像上面的題目,若是一個(gè)編過很多程序的大蝦來說,可能不用什么求精,代碼就可以直接寫出來了;但要是一個(gè)菜鳥(像我一樣)就可能要寫到二級(jí)求精。 這樣說來,你可能認(rèn)為這個(gè)求精是不是太慢

13、,抑或根本就是在浪費(fèi)時(shí)間。我大聲告訴你:根本不是。這可是眾多的編程先驅(qū)、編程達(dá)人們推薦的基本方法。你知道編程中,主要時(shí)間用在了哪里嗎。不是編寫代碼,而是用在了求解算法和調(diào)試程序上了。而算法的求精就是縮短這些時(shí)間的最好的方法。它可以使你不用再很費(fèi)力的苦思冥想到底該怎樣構(gòu)造算法,使這個(gè)過程更條理、更簡明;它也很可能使你不用再為了一個(gè)小小bug而調(diào)試半天,因?yàn)椋o出的算法已經(jīng)趨于完美。其實(shí),列一個(gè)小提綱(算法)就可以解決很多的問題,生活中不也是如此嗎。所以,第一,求精算法這個(gè)最重要的習(xí)慣一定要養(yǎng)成哦。 還有一個(gè)好的習(xí)慣就是要做到。程序源代碼的清晰度與可讀性一定要高。 這是為什么呢。在源代碼中,每行

14、代碼前面的空格的有無與多少并不影響程序的運(yùn)行,但是它影響人的閱讀。你想,當(dāng)你看到一片代碼,格式雜亂無章,沒有什么主次內(nèi)外一定會(huì)頭痛不已,絕對(duì)是看了第一遍就不想再看第二遍了。而且當(dāng)你調(diào)試這樣的代碼時(shí),也會(huì)被一 個(gè)小錯(cuò)誤弄的找不到北了。如果格式很清晰的話,這樣的代碼就非常易讀,結(jié)構(gòu)很清晰,begin.end都看的清清楚楚。我想這樣的代碼閱讀和調(diào)試起來一定很順手的。 還有就是在有些重要的代碼塊后加入注釋,也可以提高程序的可讀性。不說別人,就說我就深有體會(huì):以前代碼不加注釋,當(dāng)時(shí)對(duì)其結(jié)構(gòu)很清楚,可是過了幾個(gè)星期之后,再看代碼簡直就像看另外一個(gè)人寫的一樣,要費(fèi)不少工夫才能弄懂,代碼越多越如此。自己還很難

15、理解自己的代碼,更不用說別人了。因此費(fèi)點(diǎn)力氣加上注釋還是值得的。 還有的人喜歡用goto語句跳來跳去,雖然增加了編寫代碼的靈活性,可是卻嚴(yán)重破壞了程序的結(jié)構(gòu)化,容易造成程序運(yùn)行和大腦思維的邏輯混亂,很可能導(dǎo)致一些很不容易發(fā)現(xiàn)的錯(cuò)誤。而且所有的goto都可以用其他的語句來代替。所以在這里建議大家少用goto。能不用就不用。以上是說了要提高代碼的清晰度與可讀性。 上面用了不少字來介紹程序設(shè)計(jì)中良好習(xí)慣的作用與好處,這算是程序設(shè)計(jì)的一個(gè)基礎(chǔ),希望對(duì)大家能有所幫助。下面介紹其他促進(jìn)編程水平的方法。 其次,就是多加練習(xí)和多多與別人交流心得,研究和欣賞別人優(yōu)秀的程序代碼(上面說的清晰度與可讀性的重要的一點(diǎn)

16、就在這里體現(xiàn)了)。無論干任何事情,只有經(jīng)常練習(xí)才能熟練的掌握與應(yīng)用。它不僅能幫你提高對(duì)算法的認(rèn)知程度,還可以使你更好的理解數(shù)據(jù)結(jié)構(gòu);而交流心得與欣賞別人的代碼則是要你學(xué)習(xí)別人優(yōu)秀的獨(dú)特的見解與邏輯思維,許多"老鳥"就是在研究優(yōu)秀代碼中慢慢成長起來的。但研究和欣賞并不是意味著讓你"全盤西化";它是說既不要拘泥于自己一成不變的思考方式,也不要成為別人思想奔馳的高速路,而是讓你取長補(bǔ)短,取其精華,去其糟粕,這才是我要說的。另外,在編譯一個(gè)程序時(shí),要多想幾種不同的算法,反復(fù)比較,看看究竟哪個(gè)更適合這個(gè)程序。這樣,不僅有助于提高你程序的運(yùn)行效率,更重要的是有助于提

17、高你對(duì)算法的認(rèn)識(shí)和思維的廣度。 看完上面這么多,你會(huì)發(fā)現(xiàn)程序設(shè)計(jì)的這半扇門似乎并不是想象的那么容易打開;但是如果你能耐住寂寞與枯燥的考驗(yàn),按部就班、循序漸進(jìn)的練習(xí),思考,不知不覺中你的水平已經(jīng)提高了很多。 除了上面說的求精算法和數(shù)據(jù)結(jié)構(gòu)外,數(shù)學(xué)方法和邏輯思想對(duì)你的程序設(shè)計(jì)也會(huì)有一定的影響(這也屬于算法)先說數(shù)學(xué)方法,它是指導(dǎo)你學(xué)習(xí)的一個(gè)重要的助手。比如你要實(shí)現(xiàn)一個(gè)看似很復(fù)雜的函數(shù),而且你編寫了一大堆代碼,什么結(jié)構(gòu)和類型都用上了,可是還是實(shí)現(xiàn)不了。這時(shí)候先別著急,也許在你做這個(gè)函數(shù)前就要靜下心來,仔細(xì)思考,看看有什么數(shù)學(xué)上學(xué)習(xí)的特別公式能夠?qū)崿F(xiàn)這個(gè)問題嗎。如果你真的靈感大發(fā),把它挖了出來,恭喜你

18、。 (答對(duì)了。)我想這個(gè)時(shí)候你一定會(huì)高興的手舞足蹈,這種感受,我想大家在做數(shù)學(xué)題or其他難題時(shí)一定深有體會(huì)。 這樣說太空洞,不如舉個(gè)例子。將8個(gè)"車"放在8x8的國際象棋棋盤上,如果它們兩兩均不能互吃,那么稱8個(gè)"車"處于安全狀態(tài)。問總共有多少種不同安全狀態(tài)。對(duì)于這樣的題一般的解法是用"回溯法",即先有順序的固定一個(gè)棋子,然后將剩下的逐行試探,如果可以則擺放下一個(gè),要是不行就把該棋子換一個(gè)位置,直到所有的方法都用(遍歷)一遍。這樣看來這個(gè)方法真的很麻煩,不因需要編寫大量代碼,而且還要用到"遞歸"(編程的一個(gè)重要的算

19、法)。使程序的效率大大降低。但是我們可以想想有沒有更好的數(shù)學(xué)方法??隙ㄓ小D憧丛诘谝恍兄?,棋子可以在8個(gè)空格內(nèi)隨意擺放而不會(huì)受到攻擊;而第二行,棋子則只有在7個(gè)空格內(nèi)再挑選一個(gè)了;第三行就只有6個(gè)依次類推第8行就只剩下一個(gè)空格了。所以這個(gè)方法一共有8x7x6x5x4x3x2x1即8。種解法,這不就是數(shù)學(xué)中的排列與組合的問題嗎。若不進(jìn)一步思考,盲目地逐個(gè)枚舉方案,其笨拙是可想而知的了。所以在設(shè)計(jì)算法時(shí),一定要仔細(xì)思考有沒有更好的數(shù)學(xué)公式或思想與之相關(guān)聯(lián),這樣往往會(huì)收到意想不到的好效果。 說完數(shù)學(xué),再說哲學(xué)。 其實(shí),哲學(xué)是所有學(xué)科是總和。她當(dāng)然也包括程序設(shè)計(jì)這門新興的學(xué)科了。(不要以為它們之間沒有關(guān)系哦。) 世界上所有的學(xué)科都有聯(lián)系。當(dāng)數(shù)學(xué)與邏輯學(xué)擦出"愛情"的火花時(shí),程序設(shè)計(jì)就有了雛形。 其實(shí)還有其他的學(xué)科也會(huì)影響程序設(shè)計(jì),比如英語,地球人都知道,現(xiàn)在絕大多數(shù)程序源代碼是用英文編寫的,而且很多開發(fā)工具、編譯工具還有一些用來參考的小程序幾乎都是英文界面。學(xué)好英語對(duì)代碼的分析、對(duì)數(shù)據(jù)結(jié)構(gòu)的了解以及對(duì)開發(fā)程序或軟件的效率都有

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論