Re: [請益] 怎麼練程式~~??

看板Master_D作者 (Algorithms)時間14年前 (2009/11/08 08:46), 編輯推噓4(400)
留言4則, 4人參與, 最新討論串2/2 (看更多)
※ 引述《imtkd (風倩)》之銘言: : 進研究所要用C或C++寫程式 : 之前有學過迴圈、變數定義etc : 看是看的懂但要自已寫都不知怎麼開始或 : 下一步該寫什麼 : 要怎麼"練"程式阿?? : 感覺比數學還難>_< 學習寫程式至少可以分成兩個層次來討論: 1.熟悉程式語言(及相關的開發工具/函式庫等) 2.用來解決問題 (透過電腦)解決問題是我們學習程式語言的主要目的。事實上許多研 究顯示,程式學習的困難點不是在於「程式語言」本身,而是不知道如 何應用來「解決問題」。其實語言本身沒什麼特別的,大部分都是一些 死東西,查書都可以查得到。倒是「如何利用程式語言解決問題」確實 有點難學。 我不曉得您說的「看得懂程式碼」是什麼意思,是逐行的理解程式碼, 或是能夠摘要式的說明某個函式的用途、或某支程式概念上的結構?如 果只能夠逐行理解、合起來卻不知道在做什麼,可能有點見樹不見林, 此時建議試著用更宏觀的角度來閱讀程式碼,先了解他們要解決什麼問 題,如何做的、又為什麼這麼做。用概念式的理解能夠學到更多的東西 (像是程式的架構、某些問題的可能解決方法) 要善用一項工具前必須先熟悉那樣工具,我想您也同意這點看法。程式 語言是在電腦上執行的,所以了解電腦對您使用工具有絕對的好處。我 猜想您應該不是資訊本科的學生、而且應該只是用程式語言來做一些輔 助工具性的應用,儘管如此,我還是覺得至少應該要修習過/旁聽計算 機概論、資料結構、與演算法等基礎課程,這些都可以對您「使用程式 語言」、以及「如何將問題轉化成可計算的定義」有一定的幫助。 如果您對程式語言與電腦已經有一定程度的熟悉與理解,接下來就是「 練」程式--利用程式來解決問題。 解決問題首先要定義、分析問題,過程有點類似寫數學應用題,要領不 外乎是把問題映射到我們已知領域,透過已知領域中變數的相關特性計 算出我們要的結果。撰寫數學應用題時,我們是透過數學的方法、自然 是將問題轉化成可用數學解決的方式;在撰寫程式時,我們要利用電腦 的計算能力、自然是把問題轉化成可用電腦計算解決的方式。如何將問 題轉化成可計算的定義取決於您對問題、電腦與程式語言的熟悉程度。 程式語言教本上的練習題是一個很好的索引,可協助您理解程式語言的 某些特性與可用來解決哪些問題,換言之,如果您可將問題轉化成具備 那些特性的描述便可利用程式語言來解決。 程式語言的特性 |------> o <------| 問題的定義 上面那行我想表達的是,透過程式語言解決問題是兩個方向的探索: 一個是從語言的特性出發,試著想這些特性可應用來解決怎樣的問題 一個是從問題的定義出發,試著想這些問題如何轉化成可計算的定義 (符合語言特性的定義) 如果要工作順暢,我想需要對兩邊都有一定程度的了解。 或許您可以回想一下以前是怎麼開始學習數學應用題的,那些學習的技 巧應該也可套用到學習用程式語言解決問題這件事情。我記得那時的學 習方式是先對基本的數學做大量練習、然後學習如何解應用題(如何定 義問題),接著是開始大量模仿一些類似的應用題的計算方法,於是考 試時開始能解決相似的應用題。 您是問題領域的專家,所以可以就您對問題本質的理解、將之轉化成、 或重新定義成可透過計算的方式解決;而程式語言的特性,除了查書之 外,透過練習與模仿應該能協助增進熟悉的程度。我在此提供幾個可供 大量練習的網站,希望對您有所助益。 http://zerojudge.tw/Problems http://axp1.csie.ncu.edu.tw/~rick/acmguide/ http://uva.onlinejudge.org/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.71.65 ※ 編輯: foxzgerald 來自: 140.117.71.65 (11/08 08:56)

11/08 21:23, , 1F
11/08 21:23, 1F

11/09 01:10, , 2F
11/09 01:10, 2F

11/11 23:04, , 3F
推 認真文
11/11 23:04, 3F

12/25 20:56, , 4F
12/25 20:56, 4F
文章代碼(AID): #1AzXJw2e (Master_D)
討論串 (同標題文章)
文章代碼(AID): #1AzXJw2e (Master_D)