如果你喜愛我們小說狂人的話,可以多多使用登入功能ヽ(●´∀`●)ノ
登入也能幫助你收藏你愛的小說~跟我們建立更深的連結喔 ♂
《程序媛養成計劃》第24章 輪回法則(中)
  我聞言後點了點頭,有了之前的應用場景做鋪墊,再加上老爹說得這麽仔細,所以即便老爹沒有故事來借喻,我也把這個for的用法聽懂了。

  「老爹老爹,我發現輪回變數那部分代碼完全可以放在輪回執行的內容裡邊啊?對不對?」

  結合這老爹在畫圖工具上打出的那一段代碼,再加上老爹給我講解時備注的那一段文字,我得出了這麽一個結論。

  「的確如此!至於為什麽要放在那個地方嘛,老爹不知道開發這門語言的人當時是怎麽想的,所以也給不出確切的答案。」

  老爹點了點頭,而後笑著對我說道。

  我臉一紅,看來老爹已經猜到我要問什麽了,得到這麽一個不算答案的答案,我雖然有些不甘心,但也隻好作罷。

  「還有一個問題,一維數組的賦值和取值的確可以用for來完成,那二維數組怎麽辦呢?二維數組需要用兩個輪回分別控制行和列才行啊?」

  「哈哈,你自己都已經說出答案了,為什麽還要問我啊?」

  聽了我的提問後,老爹哈哈笑道。

  「我說出答案了?你是說!可是我不知道怎麽使用連個輪回啊!」

  我愣了一下,意識到了問題的所在。

  「一分鍾等於多少秒鍾?」

  「啊?60秒啊,怎麽了?」

  我原本以為老爹會給解疑,沒有想到他卻突然問了一個莫名其妙的問題。

  「那你見過那種指針式的鍾表吧?」

  「嗯,我們教室裡面還掛了一個呢。」

  我點了點頭。

  「好,你看哈,秒針走一圈,分針也才走一個刻度。如果我們把一個刻度比作一次輪回的話,那麽分針輪回一次,秒針要輪回60次,這個沒有問題吧?」

  老爹見我點了點頭,又接著說道:「如果我們用一個變量min來代表分針,用給一個變量sec來表示秒針,你覺得怎麽用for來表示它們的關系?」

  「

  int min = 0;

  for(int sec = 0; sec < 60; sec++)

  {

  min++;

  }

  」

  「嗯,你說得也沒有錯了,不過老爹想告訴你的不是這樣,而是這樣的:

  for(int min = 0; min < 1; min++)

  {

  for(int sec = 0; sec < 60; sec++)

  {

  }

  }

  你看,是不是min輪回一次,sec要輪回60次?」

  「可是,sec在輪回的時候,為什麽min就停下來了?」

  我不解道。

  「你忘了,我一開始就和你說過,當for在開啟輪回的時候,它所在的空間時間會停止。同樣sec在輪回的時候,min的輪回也就停止了,必須等到sec輪回完成,min才能開啟下一輪輪回。」

  「等等,我要捋一捋這其中的關系,感覺有些混亂了。」

  經過長達十分鍾的思考,我總算理順了思路,不過問了確認我是對的,我特意寫了一個遍歷二維數組的案例。在得到老爹的肯定後,我總算是松了一口氣。

  真是沒有想到,就想偷懶加載一個地圖而已,居然弄出了這麽多么蛾子。不過這下好了,推箱子這個遊戲加載地圖這一塊的功能總算是要完成了。

  像這種程序編寫起來才有意思嘛,之前那些案例簡直……

  「那個……不好意思哈,還有一個知識點沒有講完,你忘了,還有一個同樣掌管輪回的while呢。」

  我心裡正得意的時候,老爹不合時宜地澆了我一盆冷水。我剛剛那點得意瞬間消失得無影無蹤,小臉苦得跟苦瓜似的。

  「while的用法比for簡單多了,而且剛剛已經提到它了哦!」

  「我說了麽?我怎麽不記得了?」

  我摸著下巴想了一會兒,確認自己沒有說過和這個叫「while」的混沌先民相關的東西。

  「你剛剛不是說for的輪回變數可以放在輪回內容裡面麽?如果你這麽做的話,就和while的形式一樣了,你看,while的格式是這樣的:

  while(輪回條件)

  {

  輪回內容;

  }

  如果我們同樣要完成給int array[1000]賦值的話,用while就是這樣:

  int i = 0;

  while(i < 1000)

  {

  array[i]= i;

  i++;

  }

  相信我不說,你現在能知道while的特性吧?」

  「嗯,的確很簡單,現在應該可以繼續完成加載地圖的功能了吧?」

  我有些迫不及待地問道。

  不知道從什麽時候開始,我總想趕快把這個遊戲給完成了過過癮,順便在上電腦課的時候拿出來在班上的同學面前炫耀炫耀。

  到時候大家都用驚歎、崇拜的目光看著我,這場面想想都讓人激動。

  「不著急,不著急。說完了while,老爹還要給你說一下while的小夥伴,do while,以及for和while命中注定的兩個宿敵。從for和while出生到現在,它們倆對上它們的宿敵都從來沒有贏過。」

  老爹悠悠地感歎了一聲。

  聽老爹這麽一說,我感覺這不是說的我的小弦子麽?我也是從來都沒有贏過小弦子一次,經常會生出一種「既生瑜,何生亮?」的感歎。如此,我倒是要看看for和while的宿敵有什麽能耐。

  老爹見成功吸引了我的好奇心,嘴角勾起了一絲不易察覺的弧度。

  「先說說do while,剛剛說的while給數組賦值的例子來說,如果一開始i 大於等於1000的話,此時while的輪回條件不成立,輪回內容一次都不會執行,對吧?」

  「嗯,的確是這樣。」

  我點了點頭。

  「這個do while恰好和這個相反, 因為它能夠保證輪回的內容至少執行一次!其他的特性就和while一模一樣了。我們先看看它的格式:

  do

  {

  輪回內容

  }

  while(輪回條件);

  它的執行過程是先執行do裡面的輪回內容,然後再判斷while中的輪回條件,成立就繼續輪回,否則退出輪回。所以輪回內容一定會被執行一次。」

  「嗦嘎!」

  「說完了夥伴,接下來就要說它們的宿敵了。它們的宿敵有兩個,一個是continue,另一個你認識——break。」

  「break它不是switch的小夥伴麽?怎麽哪兒都有它!」

  「哈哈,既然如此,我們就先說break是怎麽把for和while按在地上摩擦的。其實你只要記住一句話,break會結束離它最近的for或者while的輪回。

  比如:

  for(int i = 0; i < 100; i++)

  {

  if(i == 2)

  {

  break;

  }

  }

  原本這個for要輪回100次,但是在第三次的時候遇到了break,於是整個輪回就結束了。

  同樣的,while也是如此。之所以給你強調『最近』這兩個字,是因為在多重for、while嵌套,它們相互嵌套的時候,很多初學者不知道break停掉的是誰的輪回。」
鍵盤左右鍵 ← → 可以切換章節
章節問題回報:
翻譯有問題
章節內容不符
章節內容空白
章節內容殘缺
上下章節連動錯誤
小說很久沒更新了
章節顯示『本章節內容更新中』
其他訊息