C#入門與框架設計 (三) 循環的力量
我們來練習一下上堂課的代碼:
string sayHiText = "Hello World!";nConsole.WriteLine(sayHiText);nConsole.WriteLine(sayHiText);nConsole.WriteLine(sayHiText);nConsole.WriteLine(sayHiText);nConsole.WriteLine(sayHiText);nConsole.WriteLine(sayHiText);nConsole.WriteLine(sayHiText);nConsole.WriteLine(sayHiText);nConsole.WriteLine(sayHiText);nConsole.WriteLine(sayHiText);n
看下結果:
Hello World!nHello World!nHello World!nHello World!nHello World!nHello World!nHello World!nHello World!nHello World!nHello World!n
好,輸出了十次Hello World!,在之前,我們學習了變數和Console.WriteLine。這件事情我們做起來就比較容易了。
下面我們有了新的任務,我們想要讓程序輸出1000次Hello World!。
做起來的話也是很容易的,只不過要花很多時間。
比如以上的Console.WriteLine部分的十行代碼,複製粘貼100次。自己還要去數100個數,比較麻煩。通過現有的知識是沒法很好地完成任務的。所以我們要去學新的概念。
首先我們要為新的概念做一些準備。
我們上堂課講了,sayHiText是一個string類型,也就是一個字元串類型。 字元串我們理解為文本。但以後我們就不叫文本了,就叫字元串類型。 sayHiText變數存儲了HelloWorld的值。 除了字元串類型,其實還有其他類型。 比如整數類型
int times = 1000; n
這行代碼跟我們上堂課學習的string變數聲明的代碼結構很相似。
string sayHiText = "Hello World!";
都是前邊有個類型關鍵字描述後邊變數的類型。 times變數是int類型。int的全稱叫integer,是整型的意思。 所以它可以存儲的值是整數值。就是1000,因為1000是整數。 我們看下代碼的輸出結果。
int times = 1000;nConsole.WriteLine(times); n
輸出結果
1000 n
OK,到這裡。
我們為什麼要學習整型呢?是用來進行一個計數的操作。我們需要從0計到1000,計的這個過程我們需要進行一個加法操作。每次都要進行一個加1的操作。
加法怎麼去做呢?
我們先了解一下變數的特性,代碼如下
int times = 0;nConsole.WriteLine(times); n
第一行代碼,我們讀出來的話叫變數的聲明並賦值。 變數聲明之後,在後邊的代碼中不用在前邊加個int了。 times聲明了之後,就代表在程序裡邊已經有了times這個變數了。我們可以重複地去利用這個變數了。
然後我們看下一個簡單的加法操作
Console.WriteLine(1 + 1); n
看下結果
2 n
1 + 1 的話肯定就是2了。
然後我們要用一個變數來存儲1 + 1的內容。 跟剛才一樣,我們就用sum來存儲。
int sum = 1 + 1; nConsole.WriteLine(sum); n
把之前代碼中的1 + 1提取成變數,用sum變數來代替。 看下結果:
2 n
輸出的結果一樣的。
再介紹一個稍微難一點的運算方式。
int sum = 0; nsum = sum + 1; nsum = sum + 1; nConsole.WriteLine(sum); n
初始值我們默認為0。 sum = sum + 1是什麼意思呢?
在程序語言里,我們的計算都是從右向左開始進行的。
在第二行代碼里等號右邊的sum值是0,可以翻譯為 sum = 0 + 1; 也就是sum = 1;
到第三行的時候等號右邊的sum值已經是上一行sum的結果,也就是是1,可以把第三行翻譯為翻譯為 sum = 1 + 1;也就是sum = 2;
我們來輸出下結果,驗證一下:
2 n
好,結果就是2.
所以我們的加一操作都會sum = sum + 1;這樣的方式去寫。 在程序語言里,我們經常會進行加一的操作。所以程序語言的設計者為此做了一些簡化,簡化為sum++,代碼如下:
int sum = 0; nsum++; sum++; nConsole.WriteLine(sum); n
看下結果:
2n
好,結果和上邊的一樣。
除了加法我們還要在學一個比較大小操作。
再學習比較大小之前我們要介紹一個新的類型。 這個類型叫布爾(bool)類型。
bool isEqual = false; n
以上這種結構的代碼我們已經學習了兩次了,分別是int和string類型的聲明並賦值。 bool 關鍵字描述了isEqual變數是bool類型。 bool是什麼類型呢? 「真」的話在這裡我們用true表示,」假」的話就用false,是用來做條件判斷的。看看一個條件是否是成立的,成立的就是true,不成立的就是false。
我們看下輸出的結果是什麼樣的。
bool isEqual = false; nConsole.WriteLine(isEqual); n
結果:
False n
那麼我們從哪裡得到這個false和true的值呢?
bool isEqual = 1 == 1; nConsole.WriteLine(isEqual); n
兩個等號代表判斷兩個1是否相等,如果相等則值為true,不相等則值為false。很明顯1肯定等於1 ,所以isEqual的值最終是true。 1 == 1這種的叫它布爾表達式。
好我們看下結果:
True n
OK,bool類型我們就學到這。
bool表達式中除了判斷兩個整數是否相等之外,還可以判斷1是否大於2。 我們來看下代碼:
bool isBigger = 1 > 2; nConsole.WriteLine(isBigger); n
很簡單,我們看下結果。
False
OK,結果沒問題。
準備階段就到這裡了,我們學習新的概念,叫做循環。 我們看下代碼是什麼樣的。
for (int i = 0;i < 1000; i++)n{ntConsole.WriteLine("Hello World!");n}ttn
功能是將Hello World執行1000次。 for (int i = 0;i < 1000; i++)這行是一個計數的過程。從0到999,總共1000次。
其中第一個分號前邊的部分代碼int i = 0隻執行一次,對計數變數進行了初始化。第一個分號後邊的代碼是什麼意思呢?i < 1000是一個表達式,就是我們剛才學習的bool表達式。每當執行完花括弧內的代碼時,都會執行一次i < 1000的代碼。當這個條件為true是繼續下一次循環。否則就跳出循環。
第二個分號後面的代碼i++,是進行一個累加操作,它其實是i = i + 1。是當每次循環執行結束之後,會執行一次i++。
好,當第一次進入循環時,代碼在計算機里是這樣的。
for (int i = 0;0 < 1000; i++) i = 0n{ntConsole.WriteLine("Hello World!");n}tn
當i 是0時,i < 1000是true,所以滿足條件可以執行循環代碼。 執行完循環代碼之後,進行累加操作,這時在計算機里代碼是這樣的。
for (int i = 0;0 < 1000; i++) i = 1n{ntConsole.WriteLine("Hello World!");n}tn
再之後進入下一次循環,還是先判斷一次i < 1000,這時候i是1,1 < 1000是true。所以可以執行循環里的代碼。 就這樣一種反覆,到第1000次執行完後,i的值是1000,再次進行判斷i < 1000,這時候1000 < 1000就是false了。就會結束這次循環,接著執行循環結構後邊的代碼了。
以上四行代碼已經是,本堂課的問題的解決方案了,問題是如何輸出1000次Hello World。 我們看下結果
Hello World! nHello World! n... n
好本堂課的內容到這裡為止,我們下堂課見。
本文為視頻課程Unity 遊戲框架搭建 __C#入門與框架設計:http://edu.manew.com/course/431)]的講稿,如果覺得內容不錯,可以購買課程來支持我的事業哦~,
第三課課程內容更新日誌:
- 視頻:時長從15:08優化到12:54。
- 視頻:去掉了口頭禪。
- 視頻:邏輯不清晰的部分進行了重新配音。
相關鏈接:
我的框架地址:https://github.com/liangxiegame/QFramework
QFramework&遊戲框架搭建QQ交流群: 623597263
C#入門課程交流群: 609819797
轉載請註明地址:涼鞋的筆記http://liangxiegame.com/
微信公眾號:liangxiegame
http://weixin.qq.com/r/gjumvifEAHp-rWPd926Q (二維碼自動識別)
推薦閱讀:
※計算機領域的大牛、大神們(包括歷史上的以及現在的)有哪些奇聞軼事?
※從 0 開始學習 GitHub 系列之【如何發現優秀的開源項目?】
※未來我們該學什麼語言?
※面向對象的哲學思考