學習C語言一個月了,感覺看書都會,但是讓自己寫代碼完全不知道如何下手怎麼辦?

小虎哥奇異故事


如果你是初學者,就做課後題吧,去找沒做過的,先別說做什麼,沒功底不行的,把功底打好,什麼語言都好學,真的


地球體表精修技師陳


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

學習編程語言有哪些困惑

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

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

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

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

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

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

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

如何學習編程

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

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

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

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

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

以上是個人在編程過程中總結的一些經驗,不一定適用於每個人,但整體的大方向不會偏離太多,如同題目講的看的能懂但就是不會寫,就去找對應的代碼,不停的模仿錘鍊,時間長了變成自己的也就變成了自己的編程模式,拿出時間去錘鍊去思考去實踐,多硬的的石頭也能啃下來,適用於任何編程語言。希望能幫到你。


大學生編程指南


以下所有的回答都是廢話連篇,浪費閱讀人的時間,浪費帶寬,浪費頭條數據存儲空間。大道理一堆,實際沒有一個可以著手操作,實踐。

學c語言->第一步:買本c語言基礎書籍,就是教你在dos命令框中運行程序的哪玩意。 淘寶 天貓鋪天蓋地的 找本銷量靠前的就行。 也可以在網上找教程 講解全面系統的就行。

第二步->買本”windows程序設計”學習windows api的使用。這樣你就能寫出調用操作windows系統的圖形化界面程序了。

第三步->買本“linux程序設計” 或者“linux環境下c程序設計” 因為企業裡多數使用linux系統做為服務器系統。學好了 不管是開發軟件 還是運維都能有口飯吃。

第四步->有時間多閱讀“TCP/IP協議詳解” 卷一和卷二,一本是理論、一本是c語言代碼實現的源代碼舉例。畢竟是網絡時代,程序也需要增強網絡通信的能力。這是socket的爸爸,不只是簡單的開個端口連接下,傳輸個信息就完事了。

更多資料可以上Google搜索查閱

頭條空間第一篇教程,教你上Google


眾雲梯


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

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

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

  • 指向函數的指針怎麼使用?
  • ......

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

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

  • 第一階段:努力理解並記住書中的內容,達到自己可以不看書,對書中的例題,在紙上可以寫出基本正確的程序,在機器上簡單調試即可通過;

  • 第二階段:在紙上先寫出每章後面的習題的程序,然後再上機經過簡單調試,程序即可運行通過;
  • 第三階段:重點掌握關於數據結構章節,如鏈表、雙向鏈表的程序,後續我是配合清華大學出版社嚴蔚敏的數據結構來學習的,也是達到不看書在紙上寫出程序,然後上機調試通過的程度;

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


最老程序員


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

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

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

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

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

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

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

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

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

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

  1. 計算這個長方形的長: L=|x1-x2|
  2. 計算這個長方形的寬:W=|y1-y2|
  3. 利用公式:長 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語言程序,可以發現並沒有什麼難度。


IT劉小虎


作為一個程序員,我有話說。

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

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

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


法海愛上白娘子


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

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

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

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


Hely


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


羅李郎




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

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

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

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

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


Gfilsxin


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


分享到:


相關文章: