回覆列表
  • 1 # 怪獸2894

    我也是初學者,光看是看不會的,程式設計是實踐學科,動手去做吧,錯了看提示改,建議從影片看起,書與影片結合,實際操作學習。

  • 2 # 羅飛

    沒什麼經驗之談,不知你學C語言是幹嘛用的。先試著編幾個小遊戲,老掉牙的貪吃蛇,簡易版俄羅斯方塊等等。把思維鍛鍊下,然後看看了解下WindowsAPI,弄幾個程式看看咋樣。c是做底層的,不要拿他去畫小視窗什麼的,累死你。把資料結構好好學學。

  • 3 # 一個程式設計師的奮鬥史

    看了題主的問題,很顯然是隻看書,沒有實際動手程式設計了;抑或是對著書敲鍵盤 過一遍,卻從未進行更深一步的思考。

    如果不慎選擇了網上鼓吹的《21天精通XXX語言》這種書籍,建議趁早扔掉它。那麼到底應該如何學習C呢?下面說說自己的看法:

    1、看書

    學習任何一門程式語言少不了先學習基本語法。C語言的語法也就是變數,陣列、指標、表示式、邏輯操作、函式,宏定義等等,其精華也就是在指標這塊。這裡推薦兩本書,至於譚浩強寫的C,建議還是慎重使用吧!知識無國界,不得不承認國外的這些教材就是經典。

    《C標準庫》

    《C和指標》

    2、動手編碼

    無論學習哪一門程式語言,如果你僅僅是看書那遠遠是不夠的。一定要多動手程式設計,打斷點除錯。

    Linux下可以試著去學習gdb、gcc的使用;

    Windows下推薦VS2017或者CodeBlocks,像什麼VC6的這種古董就趁早丟掉吧。

    3、總結

    只有透過總結過去,才能將所學所見,內化為人生的積澱,豐富並提升人生的價值。

    子曰,溫故而知新!更是從另一個角度闡釋了總結的意義所在

    這裡推薦使用Markdown語法來總結,它是一種輕量級標記語言,它允許人們使用易讀易寫的純文字格式編寫文件。更多的介紹這裡就不進行了,感興趣的可自行搜尋。

    4、綜合前面所學知識寫個小程式

    這部分涉及到綜合運用呢,比如最簡單的XX管理系統之類的,網路相關的ping小程式、實現類似Linux下ls命令的小工具。

    5、從經典開源專案中汲取營養

    github上有太多的經典開源專案可供我們參考學習,比如「tinyhttp」,原始碼只有500多行卻實現了一個簡易的HTTP伺服器,既能幫你融會貫通C語言基礎知識,又能掌握學習HTTP相關網路知識。

    6、善用搜索引擎

    作為一個合格的程式設計師,一定要懂得善用搜索引擎,學會科學上網,懂得關鍵詞搜尋,多用「Google」「stackoverflow」,遠離某度!

    一句話作為總結,想要自己的程式設計能力突飛猛進,一定要不斷地勤加練習,C/C++足夠博大精深,很多工作多年的C/C++開發者,都不敢自稱精通C/C++,選擇了它,就意味著孤獨,也許很長一段時間你可能面對的都是一個dos的黑視窗,而不是像Web、移動端開發那種可見即可得的開發模式,所以一定要有信心,要相信自己!

  • 4 # 紅楓物聯網

    我記得我翻譚浩強那本c語言翻了可能有1年,最後書都翻爛了,書上所有的試題都反覆練習,剛開始是有點抗拒,就和你跑步是一樣的,跑兩圈後你就覺得腿軟體酥,但如果這時我們如果再堅持跑兩圈,你就會發現腿就開始有力了,又可以跑十圈,學習也是一樣的道理,貴在堅持。

  • 5 # 莊裡小趙

    看書只是熟悉語法知識,實踐才是最重要的,建議從github或者國內的gitee上找一些自己感興趣的專案,看看原始碼作為實踐的開始。

  • 6 # 十口堅果

    我給你一個可行的建議:

    找一本參考教材,快速過一遍打基礎,主要理解資料型別,運算子號,資料結構,函式庫分類等。

    然後以問題為導向,挑選一些問題,比如讀取一個檔案並替換指定的內容,透過來程式設計寫程式碼解決它,這個過程會遇到看參考書時遇不到的問題,這時就要根據自身的短板再回爐參考書,尋求知識的提升,這是一個迴圈往復過程。

    程式設計即資料結構+演算法,透過練習問題提升自己的演算法能力和資料結構的思考能力,在所有計算機語言都是通用的。不同的程式語言只是在語法結構上有差別,本質的數字邏輯原理不變。喜歡C語言簡單就學C語言,喜歡功能強大又複雜那就學C++,喜歡語法簡練就學go,喜歡指令碼解析執行就學python,php,js,他們不用編譯直接解析器執行。計算機語言不分高低好壞,只有語法的簡單與複雜之分,應用場景也有各自的強弱,適用的就是極好的。

  • 7 # Kami575

    如果你所謂的一個月“看書都會”是100%成立的,我可以負責任的告訴你,寫程式碼也是順理成章,除非你一個月的看書都是虛的...所謂的文字都讀得懂,但真正的邏輯和語法沒掌握...在直白點,半桶水,不踏實。

  • 8 # IT劉小虎

    初學者在學習一段時間C語言後,會對語法和結構基本瞭解,再看書常會產生一種“什麼都會”的錯覺。之所以說“錯覺”是因為,真讓自己寫C語言程式碼,不少初學者完全不知道如何下手。

    這是一個比較普遍的現象,題主也不用驚慌,這裡我將介紹一種非常適合初學者的編寫C語言程式的方法。

    從頭開始編寫C語言程式解決某個問題,應該按照什麼步驟來呢?

    我還記得我當初學習C語言時,看人家寫的例子非常順暢,覺得 C 語言也不過如此。可是真的給我一個問題讓我從頭程式設計解決,還真是一臉懵逼,完全沒有頭緒,不知道從何下手。

    現在想想,這是因為當時我還沒有程式設計思想,還不會按照計算機的思維考慮問題,這項能力只能多鍛鍊獲得。

    長征是一步一步走的,再複雜的C語言程式也是一句一句完成的。這裡我將介紹一種“增量式”開發的思路,非常適合還沒有形成“計算機思維”的初學者。

    “增量式”C語言程式開發

    還是以實際問題為例,對這種開發思路做介紹,請看問題:

    一個長方形對角的兩個點座標分別為 (x1, y1) 和 (x2, y2),用 C 語言編寫程式求它的面積。

    從數學上來看,要解決這個問題,顯然可以分三步:

    計算這個長方形的長: L=|x1-x2|計算這個長方形的寬:W=|y1-y2|利用公式:長 x 寬 計算這個長方形的面積 S=L x W

    這裡直接認為長方形的長在 x 軸方向,寬在 y 軸方向了,長寬的方向並不影響計算面積。

    接著,我們看看如何用C語言計算長方形的長。首先應該知道,座標,長寬,面積應該用 double 型別的資料表示,所以計算長方形長的函式可以如下寫:

    初學者寫到這裡就已經不太自信了:這個函式定義寫得對嗎?雖然我是按我理解的語法規則寫的,但書上沒有和這個一模一樣的例子,萬一不小心遺漏了什麼呢?

    既然不自信就不要再往下寫了,沒有一個平穩的心態來寫程式很可能會引入Bug。所以在函式定義中插一個return 0.0立刻結束掉它,然後立刻測試這個函式定義得有沒有錯誤:

    編譯,執行,一切正常。這時你就會建立起信心了:既然沒問題,就不用管它了,繼續往下寫剩下的C語言程式碼。

    如果你不敢確定寫的對,可以就此打住,再來測試一次:

    編譯並執行這段C語言程式碼,程式輸出 2,是正確的。

    至此,就完成了根據座標計算長方形長度的函式,而且測試正確,又有信心往下繼續寫了。下面同樣的方式來完成計算寬度的C語言函式:

    好了,計算長和寬的函式都完成了,現在可以來寫計算面積的C語言函數了。計算面積的話,就需要輸入兩個座標了,也就是四個變數,然後要在計算面積的函數里計算長方形的長和寬,然後再把長寬相乘計算面積。

    如果擔心C語言程式寫的不對,可以寫到這裡停下來,先把長和寬計算後打印出來。因為你已經測試過 width 和 length 函式都正確了,如果寫到這裡出問題了,那就說明肯定是 area 函式寫的有問題,這樣就不用去之前寫的程式碼中找問題了。編譯,執行發現一切正常:

    確定沒問題了,我們就可以繼續往下寫 area 函式的C語言程式碼了。

    area 函式中的,包括之前我們測試 width 和 length 函式中的 printf 都起到了類似腳手架的作用:在蓋房子時很有用,但它不是房子的一部分,房子蓋好之後就可以拆掉了。

    房子蓋好之後可能還需要維修、加蓋、翻新,又要再加上腳手架,這很麻煩,要是當初不用拆就好了,可是不拆不行,不拆多難看啊。寫程式碼卻可以有一個更高明的解決辦法:把 printf 的程式碼註釋掉。

    到這裡我們就寫完了計算面積的程式碼,趕緊放到 main 函式中測試:

    編譯並執行這段C語言程式碼,發現輸出正常:

    成功了,至此,終於一點一點的(增量式)用C語言解決了問題。當然,熟練了以後,可以直接寫出求面積的函式:

    這樣寫簡潔得多了。但是如果出錯了呢?只知道是這一長串表示式有錯,但根本不知道錯在哪,而且 area2 整個函式就一個語句,插 printf 都沒地方插。

    所以用臨時變數有它的好處,程式更清晰,除錯更方便。而且,這樣寫,length和width函式還要不要?不要的話刪掉,如果有些情況,只需求長方形的長和寬呢?

    那留著 length 和 width 函式咋樣?這樣的話,length,width 以及 area2 函式有相同的C語言程式碼,一旦出了錯,修改 length,width 還得記著修改 area2 函式。

    維護重複的程式碼是非常容易出錯的,在任何時候都要儘量避免。因此,儘可能複用以前寫的C語言程式碼,避免寫重複的程式碼

    按照這個思路來看,還是 area 函式好一點。更進一步的,我們發現 width 和 length 函式的C語言程式碼邏輯其實是一樣的,只是變數的名字不一樣,這也應該避免,width 和 length 函式可以用 distance 函式代替:

    整理一下,最終C語言程式碼如下:

    到這裡,我們就一點一點的寫出了自己的C語言程式,可以發現並沒有什麼難度。

  • 9 # Gfilsxin

    你好,這是作為新手必然經歷的一個階段。

    我們在學習英語時都有這樣一種感覺,當有一定的詞彙量時,看一下別人寫的英文文章比較容易看懂,但是讓自己寫一篇英文文章,卻感覺無從下手,你現在的感覺就類似學習英文的情況,為什麼會這樣呢?

    能看懂程式碼,只要學會程式語言的語法,記住關鍵詞即可。看懂程式碼就像閱讀英文文章,本身不需要過多的思考,相對簡單。

    但如果要自己程式設計,除了懂程式語言外,更多的是依靠經驗,只有透過多加練習,掌握各種程式設計處理問題的方法,到時候,你就會覺得寫程式碼也不是一件多麼複雜的事情!

    所以,多多練習才是王道,遇到一些程式設計任務時,先不要看別人是如何實現的,儘量自己實現,然後把自己編寫的程式碼和別人的程式碼相比較,學習別人好的地方,堅持一段時間後,你就會發現可以輕鬆編寫程式碼了。

  • 10 # 法海愛上白娘子

    作為一個程式設計師,我有話說。

    1 程式設計師要想做得好,理論學習當然不可缺少,但更重要的是實際操作,只有經驗多了才會有能力應對各種問題,更重要的是要有很強的邏輯思維能力,知道為什麼計算機專業只招理科生嗎,就是因為理科生的邏輯思維能力比文科生普遍強,但也不是絕對的哈,也有特例,想想自己曾經被數學 物理 化學 生物折磨的死去活來,但挺過來之後,真的發現自己邏輯思維能力比以前好多了,真是痛並快樂著,哈哈,要想寫好程式,得養成程式思維,計算機可不是你哦,你要站在他的角度結合自己的專案,一步一步嚴格按照邏輯來,不然就會漏洞百出,記得我剛入職的時候,老是寫不好程式,後來在前輩的指導下,慢慢培養自己的程式思維,也就越來越順利了。

    2 作為程式設計師,要不斷學習新的東西,社會發展到今天,技術每天都在發展,都在進步,學校裡學的東西撐不了幾年就過時了,所以要想不被淘汰就得時刻學習,再好的程式設計師不勤奮練習一樣會被淘汰,你還得要忍受孤獨,加班,沒日沒夜敲程式碼,除錯程式,有時候幹到你崩潰,所以一般人真不做不了這個。

    個人觀點,不足之處請大神指導。

  • 11 # 大學生程式設計指南

    從事軟體開發多年,對於C語言的使用已經有十幾年了,現在程式設計領域裡面使用C語言作為入門初級入門語言的比例在下降,主要未來程式語言的發展趨勢是整合化發展,但在市場招聘C語言的絕對職位數量依然不在少數,沒有必要介意C語言是不是過時的這種理論論調,想要從事嵌入式,通訊,作業系統等行業的工作C語言也是不可或缺的,很多初學者在學習的時候總是想著分出個最好的程式語言,程式語言對於每個人的來講選擇權不一樣,程式設計的學習建議還是以興趣為主要的導向。

    學習程式語言有哪些困惑

    現在就根據自己程式設計過程遇到的一些具體問題,總結出來分享給大家,在這不僅僅侷限於C語言的方面的講解,因為程式語言在很多方面是相通的。

    選擇糾結症。很多初學者總想著學一門萬能的程式語言,這種程式語言既時尚還能好學,還能方便找到工作,現在主流的程式語言數量也是非常有限的,小眾的程式語言數量倒是很多,現在全球的程式語言的總體數量有500多種,真正被大家認可熟知的也就是十幾種,而且這十幾種裡面真正主流的也就是5種左右,所以選擇起來沒有那麼複雜,而且建議儘量按照自己的興趣導向去走。

    在選擇程式語言的時候,如果沒有明確的方向,那麼就去招聘網站選擇職位最多的程式語言,一種非常簡單直接的辦法。

    老是懷疑自己不是程式設計的料。很多人選擇了一種程式語言就開始信誓旦旦的學習了,一般學習的第一階段屬於興奮期,無論哪種程式設計開始階段都會相對簡單,但任何程式語言在學習過程中總會遇到困難,這個時候其實很簡單的就是死磕,但不是鑽牛角,這是兩種不同的性質,死磕就是不斷的鼓勵自己堅持下去,記住一句話程式語言的學習屬於循序漸進的過程,屬於非常理性的學習過程,不是因為你的一腔熱血就很快把事情給做好了,遇到問題充分調動自己去思考,蒐集相關的資料,現在網路上有關各類程式語言的書籍和影片資料多的很,選擇一個對應去看就可以了。

    由於程式設計是一個相對入門比較難的職業,需要經過一段很長的過渡期,很多自學程式設計的人在過渡期倒下了,堅持不下去了,覺得自己的能力和性格不適合做程式設計師,任何職業想要真正瞭解必須經歷一個痛苦的蛻變過程,所以這個時候有疑慮或者退縮都是正常的,沒有什麼人天生就是做某個職業的料,無論什麼職業想做點成績出來,都是踏踏實實幹出來的。

    總想一蹴而就。這一點非常適合問題中C語言的學習過程,很多人覺得已經學習一個月了,很多東西都能看明白,特別是看書上一些理論都明白了,為什麼放下書本直接去寫程式碼兩眼一抹黑的感覺,這是典型的實踐不夠,需要找到寫程式碼的感覺,這種感覺的培養需要時間,下一個階段就是在掌握理論的基礎上嘗試著獨立完成程式碼,這個需要時間,需要先去看別人寫的程式碼,把別人寫的優秀程式碼吃透了慢慢演化成自己的寫程式碼的習慣,就是不斷的學習觀摩的,沒有什麼捷徑。

    在學習初期還談不上什麼風格,很多程式設計模式程式碼寫法就是要從優秀程式碼中提取,模仿的多了研究多了,有些沉澱下來就是屬於自己骨子裡面的東西了,但這個過程需要時間,所以不要總想著幾個月拿下什麼程式語言之類的豪言壯語,首先從基本的模仿路線開始,熬的時間長了自然也就明白了,學習程式設計沒有捷徑。

    如何學習程式設計

    這是一個非常開放的難以回答的方向,現在只是以自己學習程式設計中一些經驗分成幾個步驟來說明。

    第一以最快的時間選擇程式語言。程式語言在程式設計技巧掌握之後,很多人都會有一種感覺其實屬於程式設計工具般存在,不要選擇的時候看的太重,選擇一個市場上用的比較多的直接入手學習就可以了,沒有必要糾結太多時間,而且選擇的時候最好是以自己興趣為出發點,因為有了興趣就有了動力,即使發現自己感興趣的程式語言在市場受眾不多,也可以繼續自己的選擇,因為任何一種程式語言只要存在就會有存在的價值,在自己掌握之後切換到別的程式語言也會比較順暢。

    第二制定一邊理論一邊實踐的學習計劃。學習程式設計就是一個循序漸進的過程,不是一口氣幹掉的生意,所以先收起幾個月完成一門程式設計的語言的念想,做好打長期戰役的準備,建議不是要直接在網上完全的影片學習,這樣非常容易迷失自我,還是先弄本實體的書讓自己先去研究,先去看必須留下給自己思考的時間,程式設計玩的就是思維模式了,不去經歷過程是學不好透徹的,學習一個章節,先把理論拿下然後是實踐學習,實踐即使不是很順利也要堅持走下去,堅持的時間長了自然就有感覺了,當然不要鑽牛角,因為程式設計過程中總會遇到一些當前知識理解不了的東西,這個時候就是先繞開,真正掌握一定的理論之後再回過頭來學習。

    理論的過程就是要理解,如果一知半解就不要想著先實踐,理論的東西必須有8分以上的理解再去實踐,效果是最佳的。

    第三不斷嘗試總結程式設計模式。這點對於很多初學者有點難,但程式設計最終的結果就是你掌握了多少程式設計模式,程式設計模式的形成是多方面的,可能來源於自己學習書本上理論的過程中,也可能是在書本上練習題目的過程,也可能是在專案實戰過程,專案實戰過程可能經歷的程式設計模式多一點,在自學理論過程中可能會少一點,但離不了最關鍵的兩個字:總結。不想辦法提煉這方面的能力,程式設計之路會走的非常的艱辛。

  • 12 # Hely

    我其實也有類似的經歷,當年學c的時候,也是自己看了幾個月的書,感覺看書上別人寫的程式碼都能看懂,然後自己去寫個東西就不知道從哪下手了,後來總結一下,原因如下:

    1.看書上別人的程式碼都是預設照著別人的思路來的,不需要考慮程式碼設計的思想,能懂c語言的語法基本就能看懂了。

    2.優質程式碼都是透過千錘百煉積累來的,想要寫的一手好程式碼,建議先從小出開始積累,自己來寫一些小演算法:氣泡排序,楊輝三角形,九九乘法表,然後再來自己寫一些小程式,設計一些小遊戲,這樣慢慢就有了積累。

    3.要鍛鍊自己設計程式碼的思想,這點對以後的發展很重要,決定了你的職業上限,寫程式碼的時候多想想為什麼這麼寫,還有哪些方法可以實現目的,條條大路通羅馬,對比參照下來,就是在進步。願一往無前虎山行,撥開雲霧見光明!

  • 13 # 最老程式設計師

    如果學習程式設計想以C語言入門,那麼就要做好打持久戰的準備,一個月時間學習python、PHP、javascript的話,也許可以達到入門的程度,可以上手編寫程式了。而C語言則不同,由於C語偏重底層,偏重計算機應用基礎,沒有強大且方便地庫可供呼叫,也沒有各種語言的語法糖,所以入門是比較困難的。要做好半年一年,甚至兩三年入門的心理準備。

    不清楚樓主看的是哪本C語言的書,只學習一個月書中的內容都會了嗎?比如下面這些內容:

    指標尤其是二重指標,真正理解其含義嗎?

    指向函式的指標怎麼使用?......

    這裡只是給出了幾個簡單的例子,先要衡量一下自己是否真的會了。

    理解一門語言的語法和真正能寫出程式來還是有一定差距的。程式設計實質上是一個解決問題的邏輯思維過程,需要將問題進行分解,然後按照一定步聚分步求解,最後達到解決整個問題的目的。這種思維方式或能力只靠看書是不夠的,需要不斷實踐才行。以我個人的經驗來說,我是完全自學C語言的,看的是譚浩強老師的書,我大概是分成三個階段:

    第一階段:努力理解並記住書中的內容,達到自己可以不看書,對書中的例題,在紙上可以寫出基本正確的程式,在機器上簡單除錯即可透過;第二階段:在紙上先寫出每章後面的習題的程式,然後再上機經過簡單除錯,程式即可執行透過;第三階段:重點掌握關於資料結構章節,如連結串列、雙向連結串列的程式,後續我是配合清華大學出版社嚴蔚敏的資料結構來學習的,也是達到不看書在紙上寫出程式,然後上機除錯透過的程度;

    個人感覺,如果能達到第二階段的話,基本解很多問題就不會一點思路都沒有了。達到第三階段,基本就可以應付絕大多數程式設計任務了。如果還想繼續深入的話,還可以去各種演算法網站去刷題,如leetcode,感覺這種方式對程式設計能力提高幫助會非常大。

  • 中秋節和大豐收的關聯?
  • 大資料學習是自學好還是培訓好?