辛巴學院-Unity-劍英陪你零基礎學c#系列(二)順序

瘋光無線發表於2015-09-14

這不是草稿

辛巴學院:正大光明的不務正業。

 

上一次的教程寫出來之後,反饋還是挺多的,有很多都做了修改,也有一些讓人崩潰,不得不說上幾句。
有些人有些很奇怪的地方,你寫篇東西,被看了以後不說他感覺怎麼樣。
而是說你做個幹啥?能賺錢麼?
而是說你做這個對我沒有用,你還不如做點啥啥啥呢。
我在此鄭重申明:

  1. 我寫只因為我想寫,能不能賺錢或者取得其他好處,關你鳥事。
  2. 我寫只因為我想寫,我寫的東西對你有沒有用,關我鳥事。

我還會繼續寫下去,並且寫什麼選題全憑我自己。我不是一個職業寫手,我沒有任何責任為誰寫什麼東西。

作為一個在內容產業瞎混了十來年的人,非常痛心於我沒做出來任何有價值的內容。
何曾忠於過自己?羨慕獨立遊戲的非商業屬性,有獨立的立場,獨立的思考。
為何獨立遊戲在中國就是一潭死水?為何中國很多的遊戲公司一直在copy。
何嘗不是這種你做這個幹啥?你做這個幹啥?這種不知所謂的質疑、噪音,充斥著空氣,讓獨立、讓個性想要往前,就一定要衝破重重的阻力。
中國的經濟發展,早已成就了個性化的土壤。可是我們卻不具備個性化的空氣。處處是噪音,請各位想一想,你做這個行業,真就要用這種惡俗的心態去做麼。
如果你不能忠於自己,最起碼當你阻擋別人忠於自己時,請你閉上你的嘴。也許你覺得:這又怎麼樣?我說了他就不做,那是他不真的想做。
是的,沒錯,是我們不堅決,讓我們不行動。人是社會化動物,我們會被別人影響,量變引起質變。語言真的沒有力量麼?
一個沒有人會質疑你忠於自己做點什麼的空氣中,或許有那麼一些人就做了什麼。
一個很多人都會質疑你忠於自己的空氣中,或許有那麼一些人就什麼都不做。

為了守護這一點點或許,我願意同任何人友盡。

然後讓我們畫風突變

從圖靈開始

當你完成了你的helloworld之後,你就可以算一個程式設計師了。
是的,沒錯,做一個程式設計師,就這麼簡單。寫過程式碼,就是程式設計師。
讓我們來拜見一下我們的祖師爺,圖靈大爺。

給祖師爺上香

圖靈是個gay,性別男,愛好男。

我們沒有圖靈那麼厲害,也許和愛好也有點聯絡?

圖靈提出了用機器處理問題的理論模型,"圖靈機"。

(我們團隊有一位名叫"曰天"的同學,在負責錄製一段"圖靈機"的模擬遊戲視訊,希望不日我們可以附上這則視訊的連結。)

而馮諾依曼奠定了計算機的工程結構和二進位制這一基本思想

給兩位祖師爺上香

如果還要算上個人電腦,見我的另一篇《施樂傳奇》,那我們這小熊貓要擺滿一螢幕,我們就先拜兩位祖師爺。

今天的電腦還是這兩位大爺設計的那樣,或許你知道這樣一個奇妙的現象:

很多寫了三年程式的人,都搞不明白二進位制是個什麼鬼。

所以我們不講二進位制,我們不講很多東西,我們也會經常提醒你,有些東西,不懂也沒關係。程式設計這件事,好大一堆坑,不必每坑必跳。
讓我們蕩起雙槳,繼續往泥潭深處去。

提起這兩位就是計算機原理,我們學個程式碼,和計算機原理有關係麼?有很大的關係。

計算機是順序執行的,計算機執行的那個玩意叫機器指令,而c系語言,都是將自然語言翻譯為機器指令的。並且,保持著和機器指令高度相關的順序一致性。
可能上面那段繞口令式的表達,讓你覺得崩潰,記住三個字:

有順序

這篇,整篇就這三個字:有順序。

上一篇,整篇也就三個字:是顆樹。、

程式碼是顆樹
執行有順序

程式碼的執行順序

有一個更專業的講法,叫做結構化程式設計,他也是一個領域。通常學語法的前三個月,都在和你聊結構化程式設計。

請記下來"結構化程式設計",你需要學習他,而且21天絕對學不會

本系列教程屬於課外教輔,我們不會像傳統的教程那樣逐條的把你要學的東西告訴你,我們告訴你一些要學習的東西,幫你理出一些重點,剩下的還是要看你自己。
市面上有很多"21天學會xxx"之類的資料,我們沒那個本事,或者21天可以建立一個習慣,建立一個開啟我們的文章看段子的習慣。

結構化程式設計將程式碼的執行順序 分為 順序、選擇、迴圈 三類。
忽略他們。

很多東西靠看學不會,很多東西靠看學不會,很多東西靠看學不會。重要的事情說三遍。

那我們怎麼來學習這個部分呢,我們教你除錯,教你怎麼去觀察這個執行順序。學會除錯,自己觀察這些順序。

觀察程式碼的執行順序    

還是從這裡開始,預設情況,看起來應該有個啟動按鈕,對我們之前的helloworld專案來說,點這個啟動,就開始除錯啦。

好像你發現和之前沒有任何變化,然後我們讓他有一點變化吧。

開啟除錯選單記住這些快捷鍵,有些很有用,根據你的設定不同,快捷鍵會有不同,我們這裡要記住的是

"切換斷點" F9

"逐語句"F11

選中這一行,他是我們的程式入口,一切從這裡開始,我們按一下F9

多了一個紅點,紅點表示一個斷點,表示程式執行到此處停下來,讓除錯者(你)觀察並決定怎麼做。

現在啟動吧。

不一樣了吧,這時候程式就停了下來,我們只學習觀察程式執行順序,按一下

高亮區域和小黃箭頭動起來了,這就是順序,你現在看我們的控制檯,啥也沒有,因為黃色高亮區域表示將要執行,並未執行。

再按一次

控制檯應該有了一句話

繼續

此時程式還是暫停的,雖然控制檯上會打出按Enter鍵退出程式,但是按了沒反應。

繼續逐語句執行,一直到結束。或者你也可以用"除錯選單下的停止除錯"中斷程式。

來點作業

然後應該做作業了,把程式碼搞複雜一點,除錯看看。

前面說過結構化程式設計將程式碼執行順序分為三類,順序性就是剛才那種,從上至下,一直到底。

讓我們來看一個選擇的順序

在開始之前,別忘了,程式碼是顆樹,這個if else 語句塊,你還能理出這顆樹麼?有括號做標記,應該不難。

然後自己感受一下,選擇順序。二選一,有的經過,有的不經過。

你學過除錯了,自己除錯觀察一下吧。

還有一種選擇語法叫做switch

注意 case 的結尾是冒號,這是一個標籤語法,其他的結尾都是分號。

因為case是標籤語法,所以配合break來做結尾,他也不是一個完整意義的樹,這個不是現在的重點,先除錯看看吧。

然後是迴圈,必然是先從我大for迴圈開始,有人說for迴圈是反人類的,反不反,我不知道,但是寫21天for迴圈,你一定能習慣。


反人類麼?其實一切語法都只是習慣,還有兩種迴圈語法,while 和 do while。這倆沒有啥好說的了,你如果認真的除錯下來。
你通過baidu就可以學會任何語法,你已經掌握了觀察方法。

還有一個遍歷迭代器專用的語法foreach,這個細節更復雜一些,但都是通過除錯可以掌握的東西。

這篇我們不打算說更多的內容,認識到順序是很重要的一件事,學程式,還有比這個更重要的麼?更多的時間留給你自己吧。

下一次我們聊一聊計算與型別。

哈庫拉瑪塔塔。

相關文章