在了解程式設計思維之前,首先,要和大家說一說什麼是程式設計。
程式設計就是和電腦對話,用電腦能聽懂的語言,告訴它我們想讓它做的事情。
舉個例子
如果我們想要休息,我們會搬個凳子,放下,然後坐上去休息。
如果我們想讓電腦聽懂這句話,就需要這麼和電腦表達。
步驟
1、定義物件:什麼是「凳子」;
2、把凳子向上移動20厘公尺;
3、往前移動兩公尺;
4、把凳子向下移動20厘公尺。
這樣,電腦就完成了我們想要它做的事情。
所以,相比於人類之間交流的隨意與感性,和電腦對話時,必須具備嚴謹、理性的思路,每一步都要給出準確的指令,這樣就能讓電腦按照自己的想法行動,不會讓結果跑偏。
想要讓電腦聽懂我們說的話,需要讓自己變得理性、嚴謹,思維具有條理。當我們試著從電腦的角度去思考問題時,也就學習並鍛鍊到了我們常說的「程式設計思維」。
很多人都聽過程式設計思維,但對它了解的卻不多,甚至會產生這種誤解——程式設計思維就是程式設計演算法。
其實,程式設計思維並不是編寫程式的技巧,而是一種高效解決問題的思維方式,它是「理解問題——找出路徑」的高效思維過程,由分解、模式識別、抽象、演算法四個步驟組成。
1、分解:鍛鍊拆解複雜問題的能力
分解,就是把乙個複雜的大問題,拆解成更可執行、更好理解的小步驟。
假如,要為自己全家人做一次出遊規劃,「全家旅遊規劃」聽起來非常龐大、繁瑣,而懂得「分解」的話,就可以把這個大難題分解成幾個容易解決的小步驟:確立目的地、安排行程、預定機票和酒店、準備行李清單。
所以,在學習程式設計的過程中,就是在不斷地訓練他們把複雜的問題拆解、理順的過程。這個過程是解決問題的基礎,把問題拆解清楚,才有接下來實現的可能。
2、模式識別:發現並整合「重複規律」的能力
模式識別,就是識別不同問題的模式和趨勢(共同點)的過程,在我們的經驗庫里找出類似問題的解決辦法,套用解決。識別的模式越多,解決問題的速度也就越快。
例如,如果需要畫100只貓,你會怎麼辦?是找100只貓來臨摹還是找出貓的「模式」?
對貓進行模式識別,我們會發現貓有這些共同點:有眼睛、耳朵、尾巴、四條腿……
我們根據這些特點建立起貓的「模式」,按照這個模式就能批量畫貓了。不用每次畫乙個新動物,只需要變換區域性特徵(例如毛髮顏色、尾巴長短)就能輕鬆解決。
這樣看來效率是不是瞬間飆公升n倍?
在程式設計過程中,其實我們一直在進行著這樣的訓練,當發現一些可重複的步驟,就會把它們整合起來,建立模式;再遇到類似問題時就能讓計算機套用此模式,快速解決。
3、抽象:鍛鍊找出問題本質的能力
抽象,是指聚焦最重要的資訊,忽視無用細節。簡單來說就是找到問題的本質,過濾掉其他無關緊要的因素。
例如,面前有一套房子,我們看到的是這樣的:
但是在建築師眼中,這套房子可能是這樣的:
通過抽象,建築師過濾掉對他來說無用的因素,找到了房子最重要的資訊。
抽象思維,能夠讓我們在大量資訊中抓住關鍵資訊,提高學習效率。
4、演算法:鍛鍊高效解決問題的能力
演算法,是一步步解決問題的過程。根據前面對問題的分析與理解,設計每一步的路徑方法,解決整個問題。
在具體解決問題的過程中,最關鍵的是邏輯思維能力和除錯糾錯能力。
電腦程式需要很強的邏輯性,邏輯順暢才能順利執行。例如,正確**呈現出的五角星動態圖這樣的:
而只是把其中兩行**交換下順序,結果就成了這樣:
所以,我們需要嚴格遵循程式設計的規則,把解決問題的步驟轉換成計算機能理解的語言。在這個過程中,我們的邏輯思維能力能得到很好地鍛鍊。
而除錯糾錯,就是當出現結果與預期不符時,需要找出演算法之中的漏洞並解決。
在程式設計練習中,任何一行**出問題,程式都會出錯無法正常執行下去。這時,就必須要自己一步步執行步驟、梳理邏輯,找出問題並想辦法解決。
蘋果ceo賈伯斯曾說過:「每個人都應該學習程式設計,因為它教會你如何思考。」程式設計思維在各個行業都用得到,是未來人工智慧時代每個人都應具備的一種思維。
關於static方法和變數,舉例說明
有些朋友不太清楚static變數和方法的使用,特此舉例說明 public class teststatic 使用的時候,teststatic ts1 new teststatic ts1.i 3 ts1.j 5 teststatic ts2 new teststatic ts2.i 7 ts2.j ...
sizeof 和 strlen 的區別(舉例說明)
sizeof 獲得位元組數 包括 0 是運算子,不做運算,只做計算。strlen 測試字串長度 不包括 0 是函式。sizeof 在計算陣列的時候,是計算這個陣列的最大長度,而不是陣列內部資料的長度。sizeof可以用型別做引數,還可以用函式做引數。strlen只能用char 做引數,且必須是以 0...
什麼是拆箱和裝箱 舉例說明
1.裝箱,值型別向引用型別轉換 在託管堆中分配記憶體,分配的記憶體量是型別各字段所需的記憶體量 型別物件指標所需的記憶體量 同步塊索引所需的記憶體量。值型別的字段複製到分配好的記憶體中 返回物件位址,現在物件位址是物件引用 2.拆箱,引用型別向值型別轉換 獲取已裝箱型別中的未裝箱部分,也就是物件的原...