STEP 2 - 条件分岐 │ ├ if文 ├ 関係演算子 ├ elseの使用 │ └ 真と偽 ├ 論理演算子 │ ├ 論理積 │ ├ 論理和 │ └ 否定 ├ 多重構造のif文 └ 多分岐型のif文 |
Written by Yuki. http://ftc.suki.net/ |
プログラムの流れを制御する文(制御文)。プログラムの骨組みになる。
<if文> 「式」の記述が正しい C言語の式であれば、条件判断の結果によりif文の動作が決まる。 if(条件式) ' ここではセミコロンを付けない。 実行させる命令; ' 付けるのは実行内容を書いた次の文になる。 式が成立した時のみ、書かれた命令が実行される。 不成立の場合は、if文以降の文が実行される。 ※実行する命令が複数ある時は括弧で括る。 if (条件式) { ' 複数命令は中括弧で括る。 命令1; ' 一連の動作は基本的に括弧で範囲を指定する事になる。 命令2; }
<関係演算子> if文の比較条件は、2つの値を関係演算子で比較するケースが多い。 C VB 等しい a==b a=b ' Cの場合、イコールを使うには2つ繋げる必要がある。 等しくない a!=b a<>b ' イコールを1つだけにしてしまった場合、誤作動を起こす。 ' この時、エラーが出ないので気付きにくい。
<elseの使用> 二者択一の条件分岐では else を用いる。 if(i==0) printf("偶数"); else ' 条件不成立時 printf("奇数"); 式が成立したら偶数、不成立なら奇数を表示させる。 ※elseでも複数命令によるブロック化はできる。 ・真と偽 if文の分岐は、比較条件が真(TRUE)か、偽(FALSE)かにより判断される。 真とは、条件式の結果が 0以外の値であること。 偽とは、条件式の結果が 0であること。
<論理演算子> &&(論理積 AND)と ||(論理和 OR)は 2つの関係式を結合する事ができる。 if(a==b && c==d) ' A=B かつ C=D if(a==b || c==d) ' A=B または C=D (1)論理積 結合した関係式が全て成立すれば、全体が成立する。 1つでも不成立ならば全体が不成立となる。 if(a==1&&b==1) printf("a,bとも 1"); else printf("どちらかが 1ではない"); (2)論理和 結語した関係式のうち、1つでも成立すれば全体が成立する。 全て不成立なら全体も不成立となる。 if(a==1||b==1) printf("どちらかが 1"); else printf("a,bとも 1ではない"); (3)否定 「!」の後に指定されている比較式が真ならば、全体は偽になり、 比較式が偽ならば、全体が真になる。 if(!(a==1)) ' a=1(比較式が真)の時、if文は偽。 if(a!=1) ' aが1以外の時、if文は真。 ※関係演算子により得られる値 if(a==0)のケース ・aが 0ならば成立。よって括弧内は 1(真)になる。 ・aが 0以外ならば不成立。よって括弧内は 0(偽)になる。 ※論理演算子は結合した関係演算子の値により、真偽を判定する。 a b‖ a&&b | a||b | !a !b ' && は結合したものを乗算する。 ---+-----------+-----------+-------- ' || は結合したものを加算する。 0 0‖ 0&&0 → 0 | 0||0 → 0 | 1 1 ' ! は真・偽を反転させる。 0 1‖ 0&&1 → 0 | 0||1 → 1 | 1 0 1 0‖ 1&&0 → 0 | 1||0 → 1 | 0 1 1 1‖ 1&&1 → 1 | 1||1 → 1 | 0 0
<多重構造のif文> 内側のif文は内容を分かり易くする為、字下げを行う。 if(a>=1){ if(a==1) printf("a=1"); else printf("aは 1より大きい"); }
<多分岐型のif文> あまり字下げが多くなり過ぎると、かえって見づらくなってしまうので、 内側のif文の else句は、前のifの頭に合わせる事になっている。
← ← Back to BeforeStep | Go to NextStep → → |