>> DOUG LLOYD：すべての権利なので、 それでは、ループについて説明しましょう​​。
だから、ループは一種のクールです 彼らはあなたのプログラムを可能にするので
コー​​ドの行を実行します 何度も繰り返し。
繰り返し、コピーすることなく、 および貼り付けるか、そうでなければそれらを繰り返します。
主要な3つがあります。 あなたが表示されますループの種類。
あなたは、おそらく使用する機会があるでしょう あなたはCS50を経て進行として、それぞれ1。
これらのループの一部はかなりあります スクラッチからあなたに馴染み、
そうもう一度、私たちは条件付きで行ったように、 私たちは並んでそれらを入れます
アナロジーがある場合、我々は描くことができます。
>> まずスクラッチから永遠にあり、 これはしばらく（真）に匹敵します。
これは無限ループと呼んでいます。
カーリー間のコードの行 多くのパズルのピースのように中括弧、
C内のそのフィット 永遠にブロックの、
上から繰り返し実行されます 下に、何度も繰り返し、
永遠に。
結局のところ、あなたは私たちを思い出した場合 ブール式の議論、
trueが常に真です。
だから我々はやっている場合 真のように長いもの
それは少しsilly--が真思わtrue--されます 常に真であるため、常に実行されます。
それは永遠に実行されますと、 永遠我々まで
で、それから抜け出す方法​​を見つけます break文は、再度、
我々は少し前、私たちを見ました スイッチを話していました。
>> またはそうでなければ、単に私たちを殺します プログラム、偶然、
あなたは今までに自分自身を見つける場合 無限ループの状況
あなたが停止する方法がわかりません 実行中のプログラム。
ただ、コントロールとCを押すと それはあなたのためにプログラムを強制終了します。
しかし、これは、再び、あります 無限ループと呼ばれます。
それは永遠に実行されたループです。
さて、ループはありませんしながら、 常に無限、また理由
我々は、ブールを置き換えることができます 何かを持つ式
もう少しだけ、真よりも便利。
そこでここでは別の例です。
一方、いくつかのブール 表現して、中括弧。
それはかなり類似してい 最初から、まで繰り返します。
第二に、私はよが、 違いを説明します。
>> ブール式の場合、Cでそう whileループの内側
線は、trueと評価 中括弧の間のコード
何度も繰り返し実行されます オーバーブール式まで
偽と評価されます。
したがって、たとえば、あなたがかもしれません カウンタのいくつかの並べ替えを持っています。
だから、の初めに言います このループは、int型xがゼロに等しいと言います。
xが100未満ですが、カップルを行います その中括弧内のもの、
その後、あなたのループの最後に、あなたが言います Xプラスプラス、あなたは、xをインクリメントしています。
最終的にxが得られます 100へと必要になります
条件ため停止 xが100未満であります
もはや真でなくなります すぐにxと100に等しいです。
100は、100以上です。
>> 今やや紛らわしい、行動 スクラッチブロックの逆になります。
これがあれば、本当に気をつけて ループを使用中にあなたの最初の進出。
基本的には、繰り返し スクラッチでブロックまで
何かを繰り返すことになります 何度も繰り返し、
表現まで、ブール 六角形の式が真です。
だから、やって維持します それはそれは本当であるまで。
一方、whileループはなります それが偽になるまでそれを行うには続けています。
そこで、彼らは非常に似ているが、 ちょうどその少し違いがあります
あなたが作るよう特に注意するの 移行の最初の進出
Cにスクラッチします。
ループの次のようなものです 実際にはかなり似ています。
それがdo whileループと呼ばれています。
このループは、すべての行を実行します 一回中括弧の間のコードの、
そしてそれがチェックされます ブール式。
ブール式の場合 trueと評価され、
それが戻って繰り返します 何度もそのプロセス
オーバーブールまで 式はfalseと評価されます。
したがって、このループは、whileループとは異なり、 少なくとも1つの時間を実行するために保証されています。
これはかなり便利です。
>> 最後に、我々はループのために持っています。
ループのために種のあります 構文的に魅力のありません
そして、行くがたくさんあり​​ます ここで、そのように私と一緒にクマ
我々がしようと離れてこれらの作品を破るよう。
一般的には、ユースケース forループのはあなたです
何かaを繰り返したいです 特定の回数。
ここで、この例では、 私はリピートブロックを持っています
スクラッチから、あります forループに類似
Cにおいて、何かを10回繰り返します。
また、ループのために これは、そこに残さ
4ループがあること 同じことをするだろう。
これは10回行くだろう。
ゼロから数えて、我々 ループの各パスをインクリメントします。
そして、我々はそれをやり続けます 私は10未満になるまで。
>> だから何が起こりますか？
そこにコードの全体の多くがあります。
にそれを打破するのをしてみましょう 何ステップが起こっています
ステップによって、私たちは、forループを掘るよう。
起こった最初のものであり、 カウンタ変数が中心です。
その最初の左にあるすべてのもの 括弧内のセミコロン
実行されます。
ここでは、あります 私は0に等しいintを言って。
私と呼ばれる新しい変数を宣言、 変数は整数型であること
私たちは内部の値を言っています その変数がゼロになるだろう。
>> 私たちは2つ目は 我々は直ちに評価します
ブール式。
ブール式はです 2つのセミコロンの真ん中。
私は10未満です。
そう、ここに本当ですか？
私達はちょうど私がに等しいと述べました ゼロ、従って0は、10未満であります
そして、なるように条件 真であり、我々は今意志
ループの本体を実行するために進んでください。
それが偽だった場合。
例えば、私が言ったの代わりに、場合 私は私が15に等しいと述べたそこに0に等しいです
私は15に等しいint型。
まあ15は、10以上であるので、我々 ループの本体を入力しません
ブール式理由 偽があるように評価します。
>> 私たちは上から下に通過した後、 我々は、中括弧を閉じることに遭遇します
第三のことが起こります。
カウンタ変数です インクリメント、またはむしろ、行
文のコードの後に 内部二セミコロン
ループの括弧のために実行されます。
だから我々はによって開始します 私は0に等しいintを言って。
その後、我々はかどうかをチェック ブール式が真です。
0は、それは本当だ10未満です。
だから我々は、続行しようとしています ボディループに。
物事はループ内で発生しますし、 我々はその閉じカーリーが発生したとき
ブレース、次のことを私たち 行う私たちは私プラス、プラスと言っています。
私は今、私は1つであるゼロでした。
その後、我々は再びの値をチェックします 真ん中のブール式。
一つは、10未満です。
だから我々は、この通過します 何度も何度も処理します。
我々は閉鎖になるでしょう 再び中括弧。
私たちがiをインクリメントします 2の2から3の1。
などなどなどなど、まで 最終的に私の値は10になります。
10以上10以下ですか？
いいえ。
0から数えて、我々が行ってきました ループの10回の反復を経て。
私達はちょうど、10回繰り返してきました 我々はスクラッチブロックで行ったように。
そして、そのためには、基本的にです 4ループのためのプロセス。
>> 今奪います 実際のコードとそれを入れ
ただ、いくつかの基本的な一般的な記述です。
ここでは何が起こるかです。
すべてのステートメントで 最初に実行され始めます。
あなたは、1以上のものを持っている可能性があります。
次に、ブール式がチェックされます。
式の評価結果がtrueの場合、 ボディループ1時間を実行します。
式が評価された場合 falseに、我々は完了です。
我々は実行されません。 まったくループの本体。
私たちが実行した後 ボディループ1時間、
私たちはその後である何を そこインクリメント部分。
通常になるだろうされています 私のようなものプラス、プラス
そのようか何か、その カウンタ変数を変更します。
その後、我々はインクリメントした後、我々は、 もう一度式をチェック
そして、何度もこれらの手順を繰り返します 式がオーバーまで
もはや真。
>> だから、ループのためのユースケースは何ですか？
あなたはときにwhileループを使用して使用します あなたはループを繰り返したいです
回の未知の数が、 それはおそらく、すべての実行されない場合があります。
本当に一般的な例 一方では、使用されているループ
ゲームのための制御フローを実行することです。
あなたは知らないかもしれないどのくらい ユーザーが演奏されようとしています、
しかし、あなたは維持したいです 同じことをやって。
の位置を更新します ボード上のさまざまなスプライト。
あなたは物事を維持したいです 常に移動します、
しかし、あなたはときに知っていません ユーザーが再生を停止しようとしています
または、彼らが行っているとき 生活の外に実行します。
だから、whileループは実際にあります そのようなことのために良いです。
それは良いユースケースです。
>> do-whil​​e文については、 それはかなり似ています。
あなたは、ループが未知を繰り返したいです 回数が、少なくとも一回。
あなたはこのゲームのためにこれを使用する場合があります あまりにも、本当に一般的な使用例
ユーザーに入力を促しています。
一般的に、あなたが何かを言うかもしれません 以下のように、私に正の整数を与え、
そしてあなたはそれを置くことがあるかもしれません do-whil​​e文の内部。
だから、常にでそれらを聞いてきます 少なくとも一度は正の整数のために。
彼らはあなたの正の整数を与えると、 あなたはループから抜け出す可能性があります。
あなたが行われる可能性があります。
ブール式で やるしばらくは偽かもしれません。
>> そして、あなたはそれらを再度要求しません。
彼らはどこに負の数を与えると 彼らはいくつかの単語や何かを入力
には本当に便利ではありません あなたは、あなたが使用する場合があります
ループが戻って行うようにしながら行います それ何度も何度も何度も。
あなたは間違いなく聞いてみたいです 彼らはかつてあなたの番号を与えるために、
しかし、あなたは何回かわかりません その後、彼らは害虫であるかもしれません。
それは偉大な使用ですしながらそう ユーザーに入力を促すためのケース。
そして、ループの使用します 場合は、通常時です
あなたは、ループを繰り返したいです 回の離散的な数、
あなたがないかもしれないが 回数を知ります
モーメントは、プログラムがコンパイルされます。
>> したがって、たとえば、多分あなたは、プログラムを持っています どこに番号の入力をユーザーに求めます。
そして、彼らは100を入力してください。
そして、あなたのループの意志のための その場合には100回を実行します。
それとも、彼らが入ります あなたのプログラム1,000
そして、ループを1000回実行します。
これは、特定の回数です。
彼らは必ずしもありません 何その番号を知っています
プログラムがコンパイルされた瞬間です。
これは、whileループのようではないです それは無限の可能性があります。
それはむしろ数です あなただけ知らないことを。
今、私はしたにも関わらず、 概説したすべてのこれらのユースケース、
あなたはかなりのものを知っている必要があります ずっとあらゆる状況、
あなたはすべてを交換することができます これらのループの3。
どこあなたは、forループを使用することができます それ以外の場合は、whileループを使用します。
あなたはどこのループのために使用することができます あなたがdo whileループなどを使用すると思います。
それは時々少しトリッキーなことができ、 そう一般的には良い方法です
典型的なユースケースに付着します。
do-whil​​e文を使用します場合 少なくとも、一度何かを望んでいました。
あなたがしたい場合は、forループを使用します 何か特定の回数。
そこにある理由結局のところ、それはです ループ3種類。
>> そこで、彼らは使用することができます 右コンテキストインチ
しかし、あなたは交換することができます 彼らはあなたがしたい場合。
あなたは、whileループと快適に感じる場合 あなたは常にループしながら使用します。
それは何かであります あなたはそれが、行うことができます
少し文法的であるかもしれません トリッキー、どこforループ
多くの方が簡単でしょう。
>> 私の名前はダグロイドであり、これはCS50です。