この章ではdo-while文について説明します。
do-while文はwhile文と同じで、繰り返し文を実行します。
while文は条件式を評価してから繰り返しを行うか決定するので、条件式がFALSEの場合は一度も実行されないこともあります。
それに対してdo-while文は一度繰り返しを行った後に条件式を評価するので、最低でも一回は繰り返し処理を行います。 では例をみてみましょう。
カテゴリー: C言語
while文を知ろう
この章ではwhile文について説明します。
何回も同じ処理(ループ)をする必要があるときにwhile文を使えば簡単に記述することができます。
同じような処理を何度も繰り返すプログラムを書く場合、以下のように何度も同じ処理を書くのは面倒ですし、間違いも多くなりがちです。 そこでwhileを使うと簡潔に書くことができます。
基本構文は以下の通りですが、if文と同じように条件式がtrueの時にブロックの中が実行されます。 では例をみてみましょう。 初めにwhileが実行される時に条件式がTRUEもしくはFALSEかどうかをチェックします。
TRUEである場合はwhileの処理文が実行されます。
FALSEである場合、処理文は実行されません。
whileは条件式がTRUEである限り何度でも処理文を実行します。
順を追って説明します。
以下の図を参考に読み進めてください。 もし、i++がないとどうなると思いますか?答えは無限ループと言いまして、の部分が永遠に4より大きくならないので無限にを繰り返します。
switch文を知ろう
この章ではswitch文について説明します。
if文と同じく条件分岐できるのがswitch文です。
switchのカッコ()の中の式が、caseの値と一致するとbreakまでの文が実行されます。
次にbreakの意味について説明します。
breakはブロックを抜けるために存在します。
switch文の場合はbreakでswitchのブロックを抜けることができます。
つまり、式の値がcaseのいずれかの値と一致すれば文を実行して、breakにより抜けます。
ではswitch文の例を見てみましょう
例えば3を入力すると以下のようになります。
先ほどのswitch文と同じことをif文で表すと以下のようになります。
次は仮にbreakが記述されていなかったらどうなるか説明します。 caseの値に一致した場合、それ以降の処理をbreakの箇所まで実行していきますが、 caseの値に一致したのにも関わらずbreakが無いと次のbreakまで もしくはbreakがどこにもなければdefaultの箇所まで処理が実行されます。
仮に上の例で入力したaの値が0だとすると、0はの値と一致するのでを実行して処理が終わるはずのところ、breakが無いがために、そこで止まらず抜けて行ってしまいます。
さらに「case 1:」にもbreakが無いので、そこの処理も実行されて、結局は最後のdefaultまで実行されてしまいます。
次の例を見てみましょう。
今までのcase文は1つずつでしたが、上の例のようにcase文を複数まとめて設置することができます。
switchの条件文が複数のcaseの中でどれか1つのcaseの値と合致した場合は、そこの処理文を実行してbreakで抜けます。
if文で星座の判定をしよう
この章ではif文で星座の判定のプログラムを作成します。
scanfでユーザーに誕生月と誕生日を入力させて、それに対して星座を出力させるプログラムです。
少し長いプログラムですが、if文が連なっているだけです。 ここで使っているif文は入れ子になっています。
つまり、if文の中にif文が入っている構造になっています。
この例では初めにmonthの数値が1から12までの、どの数値なのかをから以下のif文で確認します。
次に2つ目のif文でdayの数値により星座の分別を行います。
星座が2つあるので、条件式はという構文で書きます。
例えばmonthが1であれば1月は山羊座か水瓶座なので、dayが18であれば山羊座になります。dayの数値が31を超えていればが実行されます。 結果の一例は以下の通りです。星座の日決めには説があり、上のif文では必ずしも自身の星座が出力されない可能性がありますので、その辺の誤差はご勘弁ください(星座の切り換わりの日が説により1日ずれています)。
論理演算子について知ろう
この章では論理演算子について説明します。
「if文について理解しよう。if文の基本構文1」の箇所で比較演算子について説明しましたが、if文でもっと複雑な条件式を設定したい場合に論理演算子を使用します。
では次は論理演算子の例を見てみましょう。 論理演算子は条件式をもっと詳しく表現したい時に使用します。
例えば「3より大きく かつ 10より小さい」と言うような複雑な条件式にしたい時に使用します。
例ではの中でを使用していますが、次のような意味があります
「aは0よりも大きいかつaは100よりも小さい 」と条件式を設定しています。
この2つの条件をつないでいる「かつ(そして)」の部分が論理演算子です。
この例のはを挟んだ両辺ともTRUEでなければifの条件式はTRUEにはなりません。 「&&」は「&&」の左右の値が2つともTRUEの場合に条件式がTRUEになります。
「||」は「||」の左右の値のどちらか一方がTRUEの場合に条件式がTRUEになります。
「||」の使用例をみてみましょう。 この例は年齢が20歳以上もしくは身長が170センチ以上であるならばTRUEです。
つまり「||」を挟んだ両辺のどちらかがTRUEであるならばTRUEですが、この例ではの部分がTRUEですので、が出力されます。
次は「!」の使用例をみてみましょう。 この例は年齢が80歳以上ではない場合はTRUEになります。
この例の条件式は「20は80より大きい」の否定なのでTRUEです。
比較演算子と一緒に「!」を使用する場合には例のように比較演算子をカッコでくくって、その前に「!」を置きます。
次は論理演算子の優先度について説明します。
上の例では論理演算子は1つでしたが、論理演算子が複数使われている場合はどこが先に実行されるのかが重要になります。 では例をみてみましょう。 また、以下のようにカッコを付けることで優先順位を変えることが出来ます。
if文の条件式に変数を入れよう
if文について理解しよう。if文の基本構文3
if文について理解しよう。if文の基本構文2
この章でもif文について説明します。
ifの基本構文1では条件式がFALSEの場合にはif文の中は無視されて何の処理も実行されませんでした。
そこで、条件式がFALSEの場合にも何かしらの処理を実行したい時に使用するのが
「if-else」です。
では例をみてみましょう。 「wallet=15000;」は財布に15000円入っているという意味です。
そして条件式は「財布に入っているお金が10000円より少ないのならば」と言う意味なのですが、財布には15000円入っているので(10000円より多いので)、条件式は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なのかを次の例で説明します。 この例は条件式に比較演算子のを使用していますが、常識的に考えて5は2より大きいですので、条件を満たしています。
これがTRUEです。
TRUEですので、が実行されます。
では以下のif文は条件を満たしているでしょうか? 2は5より大きくないので条件を満たしていません。
これがFALSEです。
FALSEの場合はが実行されません。
次は比較演算子」のを使います。 aとbの値が等しい場合にTRUEになりますので、この例ではが出力されます。