天天看點

C++程式設計實踐學材系列(23)——1.5.3 體會“自頂向下,逐漸求精”思想

 

  接下來,我們的胃口開始大了。

  提出來一種考慮問題的思路,其實已經蘊涵在例1.7輸出7行星号的程式中了。

  這種解決問題的思維方式是——“自頂向下,逐漸求精”。

  要輸出的是:

C++程式設計實踐學材系列(23)——1.5.3 體會“自頂向下,逐漸求精”思想

  寫出的程式(例程ch1-13.cpp),循環7次。每次的循環,輸出1行。是以,輸出了7行,如下面左側的代碼所示。

   

C++程式設計實踐學材系列(23)——1.5.3 體會“自頂向下,逐漸求精”思想

  這時再多想一些,輸出一行方面可以動些腦子。于是在循環裡面,又加了一個循環(例程ch1-15.cpp),如上面右側的代碼所示。

  相對而言,左側就是一個項層設計,展現了整體到細節的思維。從宏觀上,這個圖就是有7行。将圖看成是一個整體,再看出了有7行,于是寫出這樣的代碼順理成章。

  右側是左側的細化。這時,輸出7行的結構已經确定,思維的角度落實在更具體的、規模更小的問題上來了:考慮怎麼輸出一行的問題。

  顯然,輸出一個星号圖的問題,要比輸出一行星号複雜。我們借助着“自項向下”,掌握住了思考這個問題的節奏,在“逐漸求精”中,清晰地給出了問題的解答。“自頂向下,逐漸求精”的思維,不至于讓你看到一個星号圖就是一堆星号,以至于狗咬刺猬,無從下口。

  問題變得更複雜的時候,這種“有節奏的思考”成了解決問題的關鍵,能夠幫助你做好頂層設計,再逐級落實,直到給出最直接的實施方案。所謂程式設計要有邏輯思維,那隻是戰術層面的事了,這種戰略層面的思維并不常被人提到。

  有初學者哀歎:“我就沒有邏輯思維,我就沒有設計能力。”其實,還可以列舉出一大堆來。這樣的歎息帶來強烈的負面情緒,以緻于事情無法進展。事實上,多慮了。每一位程式設計的專業人員者是從初學者而來的,大家都是從零基礎起步的。學習不是應聘,不是因為你有了什麼能力才要你來做這個事。學習的目的在于提高,因為你不具備某些思維方式和能力,是以才來學習。

  學習程式設計,學到的并不隻是一項“手藝”,裡面蘊藏着不少通用的道理,并且,程式設計的實踐,能夠使人将這樣的道理,轉變成思維的習慣。

  将來,你有可能是一個機關的進階技術人員或管理人員。之是以進階,是要負責一些很大的事情,做低級職務的人不能做的事。你負責的事,無論是技術工作還是别的,需要很多人完成。在程式設計實踐中練就的“自頂向下,逐漸求精”習慣,将是真正的依靠。你首先想到的不應該是雞毛蒜皮的小細節,而是條縷分明地厘出大格局,據此分解任務交給下屬負責,甚至細節該如何完成不用你做,也不用你想。

  是以,有人說,大學,學的是思維方式。抽象的思維方式要通過具體的學習載體傳達和表現。如果有人對專業心懷成見,若無更好的變通,也請靜心下來。大道可以從每個學科中得來,為何不從正在學習的程式設計中得到更多的啟發和訓練呢?

繼續閱讀