我大二,學了一年c,現在學Java,感覺自己遇到一個編程題完全沒有邏輯,想寫不知道從哪裡下手。邏輯方面我離散學的挺好的


個人感覺,編程主要還是一種「工科思維」,邏輯思維在分析業務,處理邏輯類業務,分析演算法的原理時最有用。

什麼是「工科思維」呢?假想你面前有一堆各種各樣的積木零件,現在給你各種要求,你能按照要求把零件組合好么?甚至,遇到特殊需求,你能自己設想一種零件,然後再和現有零件組合么?

怎麼理解?

以helloworld程序為例,可以把「helloworld"變數想像成一個小車,裝了一些東西(內存),小車沿軌道(IO)把貨運到處理站(顯示器上),我們就看到了字元。

以常見的計算程序為例,每個變數就是你在紙上打草稿計算加減時寫的一些臨時數據。

以排序為例,你可以把每個數據想像成長短不一的小木棍,你該如何以最快的方式把他們排列好呢?嘗試想像課本中的演算法,是怎麼移動這些小木棍的?

以面向對象的程序為例,你可以想像計算機的主板,有些對象好比CPU,有些對象好比顯卡。它們都有參數(屬性),會相互通信(方法),組成在一起構成了"計算機"這個整體,完成整體的功能。而我們每次只用專註做好每個零件(自身功能以及和其它零件間的介面)就行了。

總之,理科喜歡從具體中進行抽象,用以歸納和指導;工科則相反,要從抽象中設計出具體的解決方案。所以,當自己覺得不著道時,不妨試著把編程中遇到的多數問題具象化。時至今日,我遇到一些過於抽象的問題時,也會經常會嘗試把他們變得具體,變得具體了,才能更好看清整體是什麼,整體的組合間缺失了什麼。這個過程中,圖是好東西。

---

ps:現在想一下那些移動小木棍的演算法,有多少(你能表達出的)邏輯么?似乎沒有,我們只知道來回如是移動就可以讓它們變得整齊了。這有點像一些機械,baidu一下 風力獸,我買了一個拼起來搞懂了它的工作原理,但要說邏輯似乎也說不上來,我只知道幾個曲軸那麼組合就可以讓它跑起來了。或許,我該叫它是一組"組合的智慧"。


那是寫的太少。

多找些例子實踐一下,理解原理,應該會好很多,題主的問題可能在於還沒有編程的感覺。

你想讓電腦幫你計算個什麼東西,那就得用編程語言來指揮它。

最後,個人理解,編程是個實踐型的學科,所有的經驗還是需要落實到代碼上,寫的代碼越多,經驗越多。


瀉藥,我也只是個大二學生哈哈,JAVA學的還算好,c和c++很困難,個人覺得編程的時候得把內存啊堆啊棧啊隊列啊之類的搞清楚,所以這就是為啥要學計算機原理,每個數據參數的內存地址什麼的都要有思路,個人覺得這些地方還蠻重要的,簡單編程就像做數學題,通過各種演算法得出答案,像平時我們實訓要求做的系統,就涉及版面設計,產品設計,慢慢來吧,多看看書總歸沒錯,共勉。


多動手多動手多動手

常實踐練習

感覺編程沒有怎樣才能學會這一說

只是會得多少


謝邀!兩個問題,寫的太少,思考的太少。


目前也是大二,身邊好多同學也有類似狀況。大概表達一下個人觀點(不知道題主所說的編程題是指的演算法還是java中實現各種功能的那種。。姑且認為是後者,前者的話各種語言基本差別不大,重在演算法的學習)

我的理解總結為一點大概是這樣:沒有理解透徹(如果其他語言(C)的編程題有思路能寫出來,可能就是沒有理解java的基本知識,要麼的話就是對編程思想的理解還有所欠缺,或者直接點說就是還沒有從面向過程的世界走到面向對象的世界裡,這樣的話就要好好研究一下了)。

你說自己遇到編程題沒有邏輯。我覺得應該從問題本身要做什麼出發,先把問題分成幾部分然後再細分下去,比如,前幾天我們寫解壓縮程序。這個問題的思路就可以很簡單的展開為壓縮和解壓,然後繼續再進一步展開成壓縮要用什麼演算法啊,怎麼實現文件讀取存儲啊等等一個個的小問題。這樣一個程序題就能有條不紊的完成。

個人覺得,如果理解了編程的思想,編程其實很簡單就像生活中解決各種瑣事一樣。而編程思想就是你解決各種問題的思想或者原則。

--------------------------------------------------------

僅表達個人想法,才疏學淺外加表達的不是那麼準確,各位大佬莫見怪。。。


對於java學習來說,語法熟悉,可以對報錯信息準確找出並修改;熟悉JDK命令及常用配置;熟練使用一種IDE開發工具;熟練掌握OOP的思想;JAVA基礎知識紮實,並且具有開發java項目實戰經驗就算是學的可以了

想學的系統一些建議還是報班學。


可能是還沒有建立起編程思維。建議多多練習,沒什麼捷徑可走。

建議初期可以從演算法題入手,leetcode 簡單級別的問題等。演算法題可以看成是已經將實際的問題或者問題的一部分歸納成為了計算機要解決的問題。演算法題的解題也就是在將問題進一步拆解為計算機每一步需要進行的操作。

做演算法題是一定先需要自己多思考,沒有思路時可以先在網上看下別人的解題思路(先不直接看別人的代碼),然後自己編程實現。實在自己知道思路也實現不出來的時候再直接看別人的代碼,看完理解完之後思考是哪一步讓自己無法用代碼表達出解題思路,然後自己再敲一遍。多做多總結。

演算法題能較輕鬆的解決後再參加一些項目,鍛煉自己將實際問題抽象為計算機問題的能力。可以跟同學組隊做實際的項目,也可以在網上如git等加入一些小的項目。


推薦閱讀:
相关文章