DOUG LLOYD:好吧,所以 讓我們來談談循環。 因此,循環是一種很酷 因為它們可以讓你的程序 要執行的代碼行 一遍又一遍又一遍。 反复,而不需要複製 和粘貼或以其他方式重複。 有三個主要 種類的循環,你會看到的。 你可能有機會使用 每一個你通過CS50進步。 其中一些循環是相當 熟悉你從頭開始, 如此反复,當我們用條件語句一樣, 我們把他們並排 如果有一個比喻,我們可以借鑒。 首先是永遠的從無到有, 與之相比,而(真)。 這就是我們所說的無限循環。 代碼捲曲之間的界線 牙套,就像拼圖 那放不下的C 永遠阻斷, 將從頂部反复執行 到下,一遍又一遍又一遍, 永遠。 畢竟,如果你還記得我們的 布爾表達式的討論, 真正的總是正確的。 因此,如果我們正在做 東西只要真 是true--似乎有點silly--真 永遠是真實的,所以它會始終運行。 它會永遠運行和 永永遠遠,直到我們 找到一種方法來擺脫它 break語句,這再次, 我們看到前一陣我們 談論開關。 或只是殺死我們 節目,順便說一句, 如果你發現自己在一個 有一個無限循環的情況 你不知道如何停止 你的程序運行。 只要按下控制和C 這會殺了你的計劃,你。 但是,這又是 所謂無限循環。 它是一個將永遠運行一個循環。 現在,while循環不 總是無限的,因為還 我們可以代替布爾 的東西表達 比多一點有用的只是真實的。 因此,這裡是另一個例子。 雖然有些布爾 表達式,然後大括號。 這幾乎是類似的 重複,直到從頭開始。 雖然在第二,我會 解釋這種差異。 因此,在C,如果布爾表達式 while循環內 計算結果為真,行 大括號之間的代碼 會一遍又一遍地重複執行 又一遍,直到布爾表達式 計算結果為false。 因此,例如,你可能 有某種形式的計數器。 所以說,你在開始 這個循環說INT x等於為零。 當x小於100,做一對夫婦 裡面那個大括號的事情, 然後在循環結束時,你說 X加再加,你遞增x。 最終x將得到 100,你會 停止,因為條件 x小於100 將不再是真實的作為 一旦x等於100。 100是不小於100。 現在有點混亂,行為 划痕塊的反轉。 所以要非常小心,如果這是 您的第一個進軍使用循環。 基本上,重複 直到塊划痕 將重複的東西 一遍又一遍又一遍, 直到表達,布爾 在六邊形表達式為true。 因此,它會繼續做 它,直到它是真實的。 同時,while循環 繼續做它,直到它是假的。 所以他們是非常相似的,但 有那麼一點區別只是 要特別為您做出謹慎 你從過渡首次嘗試 刮成C。 接下來的循環方式是 其實很相似。 這就是所謂的do while循環。 這個循環將執行所有的行 曾經的大括號之間的代碼, 然後它會檢查 布爾表達式。 如果布爾表達式 計算結果為true, 它會回去重複 這一過程一遍又一遍 又一遍,直到布爾 表達式的值為false。 所以這個循環,不像while循環,是 保證運行的至少一個時間。 這可能是非常有用的。 最後,我們有一個for循環。 For循環是一種 語法上沒有吸引力 這裡面的很多事情 在這裡,所以我承擔 當我們嘗試和突破這些作品分開。 通常,用例 for循環是你 要重複東西 的時間的特定次數。 在這裡本實施例中, 我有重複塊 從無到有,這是 類似於for循環 在C,重複的東西10倍。 而for循環的 左邊有,這 是一個四循環 會做同樣的事情。 這將去10次。 從零算起,我們 遞增循環的每個通行證。 我們繼續這樣做, 直到i小於10。 所以會發生什麼? 有一大堆的代碼中有。 讓我們打破它 發生了什麼步驟 一步,因為我們通過一個挖掘循環。 發生的第一件事是 計數器變量為中心。 一切到第一左側 分號括號內 被執行。 在這種情況下,我們 他說INT I等於0。 聲明一個叫我新的變量, 該變量是一個整數類型 和我們說裡面的值 該變量將是零。 我們做的第二件事是 我們然後立即評估 布爾表達式。 布爾表達式是在 中間的兩個分號。 餘小於10。 這是真的在這裡,對不對? 我們只是說,我等於 零,所以0小於10, 並使得條件 是真實的,現在我們將 繼續執行該循環體。 如果是假的。 如果,例如,我說,而不是 我等於0那裡,我說我等於15, INT I等於15。 阱15不小於10,所以我們 會不會進入循環體 因為布爾表達式 將有評價是假的。 之後我們通過自上而下, 我們遇到右大括號, 第三個事情​​發生。 計數器變量 遞增,或者說,該線 的語句代碼之後 的內側第二分號 for循環的括號被執行。 因此,我們開始通過 他說INT I等於0。 然後我們檢查是否不 布爾表達式為true。 0小於10所以這是真的。 因此,我們將繼續 入體循環。 事情會發生在循環裡面, 當我們遇到右大 梅開二度,接下來的事情我們 做的是我們說我加分,加分。 我是零,現在我是其中之一。 然後,我們再檢查的價值 布爾表達式在中間。 一小於10。 因此,我們將通過這種 一次又一次的處理。 我們會得到閉幕 大括號了。 我們會增加我的 1至2,從2至3。 等等等等等等,直到 最後,我的價值變成10。 比10小10? 第 從0開始計數,我們已經走了 經過10次迭代循環。 我們已經重複10次,只是 就像我們在划痕塊。 所以這基本上是 過程中產生的四環路。 現在收走了 實際的代碼,並把它 在短短的一些基本的一般性發言。 這裡會發生什麼。 所有的發言 先開始執行。 你可能有不止一個。 然後,布爾表達式進行檢查。 如果表達式的值為true, 執行主體的循環一次。 如果表達式的計算 為假,我們就大功告成了。 我們不執行 體循環可言。 我們已經執行後, 體循環一次, 然後,我們做的是什麼 增量部分出現。 這通常將是 像我加分,加 或者類似的東西,那 修改計數器變量。 然後,當我們增加,我們 再次檢查表達 並且一遍又一遍地重複這些步驟 又一遍,直到表達式 不再是真實的。 那麼,什麼是用例為一個循環? 使用您使用whil​​e循環時, 你想有一個循環重複 一個未知的次數,但 它可能可能無法運行所有。 一個真正常見的例子 正在使用,而循環 是運行一個遊戲的控制流程。 你可能不知道多久 用戶將被播放, 但你要保持 做同樣的事情。 更新的位置 各種精靈在黑板上。 你要保持事物 在任何時候移動, 但你不知道什麼時候 用戶要停止播放 或者當他們要去 用完的生命。 因此,while循環是真的 良好的類似的東西。 這是一個很好的用例。 對於一個do while循環, 這是非常相似的。 你想要一個循環重複未知 次數,但至少一次。 您可以使用它來遊戲 太多,但一個真正的常見用例 是提示用戶輸入。 通常情況下,你可能會說些什麼 喜歡,給我一個正整數, 你可能把那個 裡面的do while循環。 因此,它總是會問他們在 至少一次為一個正整數。 如果他們給你一個正整數, 你可能會打破循環。 你可能會做。 布爾表達式 在做,而可能是假的。 你會不會再問問他們。 如果他們給你一個負數,其中 他們鍵入一些文字或東西是 不是真的有用 你,你可能會使用 do while循環回去做 一遍又一遍。 你肯定要問 他們給你一個數字一次, 但你不知道多少倍 在那之後他們可能是害蟲。 所以,一個做,而這是一個偉大的使用 情況下,用於提示用戶輸入。 而一個for循環使用 通常情況是,當 要重複循環 離散的次數, 雖然你可能不 知道的次數 此刻程序編譯。 因此,例如,也許你有一個程序 在那裡你提示輸入數字的用戶。 他們進入100。 然後,你的循環將 在這種情況下,運行100次。 或者,也許他們進入 1000在你的程序 然後運行循環1000次。 它的特定次數。 他們不一定 知道這是什麼號碼 是編譯時刻程序。 它不象while循環 它可能是無限的。 這是相當一些 你只是不知道。 現在,即使我 列出所有這些用例, 你應該知道,在相當 每很多情況下, 你可以交換所有 這三個循環。 您可以使用一個for循環,你 否則將使用whil​​e循環。 您可以使用一個for循環的地方 你會使用一個do while循環等。 它可以是一個有點棘手,有時, 所以一般這是一個很好的做法 堅持一個典型的用例。 使用do while循環,如果你 想要的東西一次,至少。 如果你想要做的使用for循環 東西的特定次數。 畢竟,這就是為什麼有 三種不同類型的循環。 因此,他們可以使用 在正確的範圍內。 但是你可以互換 他們,如果你想要的。 如果你覺得舒服,而循環 而你總是想使用whil​​e循環。 這是一些 你可以這樣做,但它 可能有點語法 棘手的,其中一個for循環 將是一個簡單得多。 我的名字是道格·勞埃德,這是CS50。