ifとは、「もしも〜」と言う意味で、言葉の通りの役割を持つ文で、制御文と呼ばれている。使い方は様々あり、ここでようやく前項目で紹介した演算子のひとつ、比較演算子が登場する。ifの書き方は伊かのようである。
if( 条件式 ){ 内容 }
関数内で内容を書き、特定の条件を満たしている場合、if文の中のプログラムが初めて動作することになる。if文にはif、else if(elsif)、elseの三種類が存在する。
if( 条件式1 ){ 条件式1を満たしている場合、処理が行われる。 }else if(条件式2){ 条件式1を満たしておらず、条件式2を満たしている場合、 処理が行われる。 }else{ どちらも満たしていない場合、処理が行われる。 }
条件式で使われる比較演算子・論理演算について紹介する。比較演算子・論理演算については後半のfor文とwhile文でも使用していくので、ここで覚えること。
A *Aに値が存在する場合、条件を満たす(定数でも可能)。値が存在しない、というのはNULL(データが空)である。 A == B *AとBがイコールである場合、条件を満たす。 A != B *AとBがノットイコールである場合、条件を満たす。 A > B *AがBを超える場合、条件を満たす。 A < B *AがB未満の場合、条件を満たす。 A >= B *AがB以上の場合、条件を満たす。 A <= B *AがB以下の場合、条件を満たす。 A && B *A and B の条件を満たす。 例) (A == B) && (C == D) AとB かつ CとDがイコールの場合、条件を満たす。 A || B *A or B の条件を満たす 例) (A == B) || (C == D) AとB あるいは CとDがイコールの場合、条件を満たす。
例題として、入力した値が5を超える場合は"5を超えます"、入力した値が4以下の場合は"4以下です"、入力した値が5の場合は"5です。"と表示されるプログラムを作りなさい。
出力結果 入力:5 5です。 入力:8 5を超えます。 入力:6 5を超えます。 入力:4 4以下です。 入力1 4以下です。
解答:ls1_21.c
どうしてもコンパイルエラーが起きる!と言う場合、どこかで全角スペースキーが入力されていないか、文法にミス(最も多くあるのが"かぎかっこ"のつけ忘れ、セミコロン(;)の入力忘れ、領域外に認識できない文字コードが入力されている、などが挙げられる)がないか、を解答と合わせて比較していけばいい。
制御文の中でもよく使われる反復構造、繰り返しの動作をする文をfor文という。繰り返しの条件を設定し、特定の条件を満たしている場合、for文で定義されたソースコードが実行されるという仕組みである。
for(初期設定; 条件; 変化){ 繰り返しが行われる処理 }
初期設定では、for文で使用する変数の初期設定が行うことができ、条件を満たしていれば、処理が行われ、変化は処理が行われてから行われる演算を設定することができる。ただし気をつけなければならない点として、抜け出すことのできない条件は無限ループするため、そういった場合はCtrl + Zで抜け出す事ができる。
int i; int sum = 0; for(i = 0 ; i < 5 ; i++){ sum = sum + i; printf("%d\n",sum); } printf("おわり\n"); ------------------------------------------- 初期設定 で i に 0 をセットし i が 5未満 の場合に sum = sum + i; 処理が行われると、 i は 1 加算される。 ※インクリメント演算子、デクリメント演算子 変数++ ※実行後に1加算 ++変数 ※実行前に1加算 変数-- ※実行後に1減算 --変数 ※実行前に1減算 特殊な演算子ですが、早い話が1足したり引いたりできると 言ったものなので、今はそこまで深く知らなくても問題な い。 i++ についてはi = i + 1と同義である。
出力結果 0 1 3 6 10 おわり
例題として、5の階乗を求めるプログラムをfor文を使って作成せよ。条件として、math.hに標準関数として存在するpow関数の利用は禁止するものとする。
出力結果 120
解答:ls1_22.c
どうしてもコンパイルエラーが起きる!と言う場合、どこかで全角スペースキーが入力されていないか、文法にミス(最も多くあるのが"かぎかっこ"のつけ忘れ、セミコロン(;)の入力忘れ、領域外に認識できない文字コードが入力されていない、などが挙げられる)がないか、を解答と合わせて比較していけばいい。
for文とは違い、条件式のみで制御されている繰り返し構文。そのため、for文よりは簡単に動かす事ができる。大きな違いとして、最初に判定を行うために場合によっては一度も動くことなく終わることもある。
while(条件式){ 処理 }
例題として、2を5乗した値を求めるプログラムをWhile文を使って作成せよ。条件として、math.hに標準関数として存在するpow関数の利用は禁止するものとする。
出力結果 2*2*2*2*2=32
解答:ls1_23.c
どうしてもコンパイルエラーが起きる!と言う場合、どこかで全角スペースキーが入力されていないか、文法にミス(最も多くあるのが"かぎかっこ"のつけ忘れ、セミコロン(;)の入力忘れ、領域外に認識できない文字コードが入力されている、などが挙げられる)がないか、を解答と合わせて比較していけばいい。