この章ではcontinueの使い方を説明します。
continueは現在進行している周回を抜けたとしても、ループ自体は続けたい場合に使います。
主にfor文やwhile文などでよく使われます。
では例をみてみましょう。 if(i==g)の条件がTRUEの場合、下の行にあるを実行することなく、forの先頭に戻ります。
例の場合はgが4なので「4つのリンゴ」と言う文は実行しません。 例ではiとgがイコールになったら、forの先頭に戻って条件判定をしてループを続けるかどうか決めます。
先頭に戻ってiは5になりますが、5はまだTRUEなので「5つのリンゴ」を出力します。
breakと違いループ自体を止めることはしません。
タグ: if
whileとifとbreakを組み合わせて使おう
forとifとbreakを組み合わせて使おう
この章ではfor文の中でのbreakの使い方について説明します。
switch文の中でbreakを使用しましたが、これは一連の流れを強制的に中止したい時やブロックを抜けたい時に使いました。
このbreakはfor文の中でも使用することが出来ますので、例を見てみましょう。 for文のブロックの中にif文が入っていますが、
このif文の意味はbreakを使用しているので「もし、iが4になったらfor文を抜けますよ」と言う意味です。
ですので、「4つのリンゴ」「5つのリンゴ」を出力することなくループを終了します。
breakはこのように一連の流れを強制的に中止したい時に使用します。 次の例はforの入れ子の中でbreakを使用しています。 この例では上から2つ目のforの中でbreakを使っていますが、forの中でbreakを使った場合、breakで抜けることができるのはbreakのあるfor文(例の場合は上から2つ目)だけです。
つまり例の場合は上から2つ目のfor文の中のif文の条件部分が3を超えたら、(上から2つ目の)for文をbreakするのですが、breakした後はまた一番前のに戻ってループを繰り返します。 次の例をみてみましょう。 一つ前の例のように入れ子の中のfor文でbreakを使用した場合、抜けることが出来るのは内側のfor文だけですが、一気に外側のブロック(一番前のfor)を抜けたい場合の方法について説明します。
ある条件になったら繰り返しを止めたいと思う箇所にと記述してください。
次に抜けたい箇所にと言う形式で記述すると、そこまで実行位置を移すことが出来ます。
ラベル名は変数名と同じ規則で自由に付けることが出来ます。
この例では の箇所での結果が3より大きければが実行されて、のある場所まで実行位置を移すので二重ループそのものを抜けます。 for以外でもgotoは使うことが出来ます。
以下の例ではif文の中でgotoを使用しています。 初めにint number = 0;の箇所でnumberに0を代入しています。
次にの箇所で「ループ」を出力します。
次にnumber++;の箇所で1を足しているので1になります。
次にif文の中での場合にの箇所まで飛び、ではない場合にはの箇所まで飛びます。
ですので、初めに5回「ループ」を出力します。
この後にがTRUEになるのでが実行され、の箇所に実行位置が移ります。
そして、が実行されてプログラムを終了します。
if文で星座の判定をしよう
この章ではif文で星座の判定のプログラムを作成します。
scanfでユーザーに誕生月と誕生日を入力させて、それに対して星座を出力させるプログラムです。
少し長いプログラムですが、if文が連なっているだけです。 ここで使っているif文は入れ子になっています。
つまり、if文の中にif文が入っている構造になっています。
この例では初めにmonthの数値が1から12までのどの数値なのかを以下の条件式で確認します。
次に2つ目のif文でdayの数値により星座の分別を行います。
2つ目の条件式は2つの星座の日付を扱っているのでという形式で書きます。
例えばMonthが1であれば山羊座か水瓶座なので、dayが18であれば山羊座になります。
また、dayの値が31を超えていればが出力されます。
if文の条件式に変数を入れよう
これまでは条件式に比較演算子を使っていますが、のように条件式に変数を入れることも出来ます。
この場合、条件式に0以外の整数値が入っている場合にはTRUEになります。
以下の例では条件式にchar型が入っていますが、char型は整数で表せることを学習しました。
つまり、以下の例の条件式には0以外の数字が入っていることになり、条件式がTRUEになっています。
では例をみてみましょう。 これを書き換えると以下のようになります。
変わっている箇所はifの条件式です。 つまり、最初の例はの部分を省略して書いているわけです。
つまり、この例ではaが0でない時にTRUEになります。
この場合、aは0ではないので、が実行されます。
if文について理解しよう。if文の基本構文3
if文について理解しよう。if文の基本構文2
この章でもif文について説明します。
ifの基本構文1では条件式がFALSEの場合にはif文の中は無視されて何の処理も行われません。
そこで、条件式がFALSEの場合にも何かしらの処理を実行したい時に使用するのがです。 では例をみてみましょう。 「wallet=15000;」は財布に15000円入っていると言う意味です。
そして条件式は「財布に入っているお金が10000より少ないのならば」と言う意味なのですが、財布には15000円入っているので、条件式はFALSEです。
FALSEなので「条件式がFALSEのときに実行される文;」つまりが実行されます。
もう1つ例を挙げます。 ユーザーに入力させたaとbの値が同じ数値、つまりTRUEであるならばを実行します。
ユーザーに入力させたaとbの値が違う数値、つまりFALSEであるならばを実行します。
例えば45を2回入力した場合の結果は以下の通りです。
if文について理解しよう。if文の基本構文1
この章ではif文について説明します。
if文はどのような時に使われるのかを日常生活の場面で説明します。
例えば、「もし、今日財布にお金が10000円あったらフランス料理にして、20000円あったら中華料理にする」などの選択を繰り返して人は生きていますが、プログラムでもこのような表現ができるのです。
このように条件によって表現を変えることを条件分岐と言います。
条件分岐にはifを使用します。 条件式は条件を満たしていればTRUEを返し、条件を満たしていないならばFALSEを返します。
そして、TRUEの時にブロックの中の文が実行されます。
TRUEは「真」
FALSEは偽」
とも言います。
次の例でTRUEやFALSEについて説明します。 条件式には比較演算子の「>」を使用していますが、常識的に考えて5は2より大きいですので、条件を満たしていると考えるのです。
これがTRUEです。
TRUEですので が実行されます。
では以下のif文は条件を満たしているでしょうか? 2は5より大きくないので条件を満たしていません。
これがFALSEです。
FALSEの場合はが実行されません。
つまり、何も実行されないので何も表示されません。
次は比較演算子の中から「= =」を使います。 aとbの値が等しい場合にTRUEになります。
aとbの値が等しい場合にTRUEになりますので、この例では「aとbは等しい」が出力されます。
この章ではwhile文の中でif文を使うことと、さらにはwhile文の中で「強制的に繰り返し文を終了させたい時に使用するbreak」を使った例について説明します。
では例をみてみましょう。 結果は以下の通りです。 では詳しく説明します。
①iに1を代入します。
②(i <= 10)の条件を判定します。
iは1でtrueなので、whileの処理文を実行します。
③iは1なので、if文の条件部分にはマッチしないので、そのままif文はスルーします。
④を実行して「ループ1回目」を出力します。
⑤i++で1を足して、2になります。
⑥(i <= 10)の条件を判定します。
iは2でtrueなので、whileの処理文を実行します。
⑦iは2なので、if文の条件部分にはマッチしないので、そのままif文はスルーします。
⑧を実行して「ループ2回目」を出力します。
⑨i++で1を足して、3になります。
⑩(i <= 10)の条件を判定します。
iは3でtrueなので、whileの処理文を実行します。
⑪3回目のループで初めて、if文にマッチして を実行します。
そして、次にbreakがあるのでここでwhile文を抜けます。
この章で説明することはfor文の中でif文を使うことと、さらにはfor文の中で「強制的に繰り返し文を終了させたい時に使用するbreak」の使い方について説明します。
breakは、現在実行中の 繰り返し文の実行を強制的に終了させます。
では例をみてみましょう。
結果はです。
for文のブロックの中にif文が入っています。
このようにfor文にif文を入れることも出来ます。
この例のif文の中にはbreakが入っているので「もし、iが4になったらforループを抜けますよ」と言う意味です。
ですので、「4つのリンゴ」を出力することなくループを終了します。
breakはこのように「一連の流れ(ループ)を強制的に中止しブロックを抜ける」と言う意味になります。
iが4になった時にfor文をbreakするので、それ以降の「4つのリンゴ」「5つのリンゴ」は表示されません。
for文の入れ子の中でbreakを使う場合には注意が必要です。
では例を見てみましょう。 結果は以下の通りです。上から2つ目のforの中でbreakを使っていますが、2つ目のforの中でbreakを使った場合breakで抜けることができるのはbreakのあるfor文(例の場合は上から2つ目)だけです。
つまり例の場合は上から2つ目のfor文の中のif文の条件部分が3を超えたら、(上から2つ目の)for文をbreakするのですが、breakした後はまた一番前のに戻ってループを繰り返します。
ですので
2掛ける2=4
2掛ける3=6
3掛ける2=6
3掛ける3=9
は ifの条件式(i*j>3)を超えているので表示されません。
では次に進みます。
for文の入れ子の場合、内側のfor文の中に
あるbreakはbreakを含むfor文のブロックしか抜けませんが、一気に外側のブロック(一番前のfor)を抜ける方法について説明します。
では例をみてみましょう。 ある条件になったら繰り返しを止めたいと思う箇所に と記述してください
(例の場合はbreak OUT;)。
次に抜けたいところにと言う形式で記述すると、そこまで実行位置を移すことが出来ます(例の場合は「OUT:」)。
ラベル名は変数名と同じ規則で自由に付けることが出来ます。
この例では の所で「i*j」の結果が3より大きければ、のある場所まで実行位置を移すので二重ループそのものを抜けます
結果は以下の通りです。