- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- 授業/C言語基礎/if文 へ行く。
- 1 (2015-10-01 (木) 10:09:36)
- 2 (2015-10-03 (土) 11:29:43)
- 3 (2015-10-06 (火) 08:08:08)
- 4 (2015-10-06 (火) 08:11:02)
- 5 (2015-10-07 (水) 00:57:03)
- 6 (2015-10-07 (水) 01:22:04)
- 7 (2015-10-07 (水) 23:15:36)
- 8 (2015-10-08 (木) 18:52:15)
- 9 (2015-10-08 (木) 19:10:14)
- 10 (2015-10-12 (月) 09:12:26)
- 11 (2015-10-12 (月) 09:12:26)
- 12 (2015-10-12 (月) 09:12:26)
- 13 (2016-10-05 (水) 18:47:16)
- 14 (2016-10-07 (金) 12:53:53)
- 15 (2016-10-13 (木) 14:23:30)
- 16 (2016-10-15 (土) 18:43:08)
- 17 (2017-10-05 (木) 16:38:40)
フローチャート †
処理の流れは、フローチャート(流れ図)という図で表すことができます。
流れ線は、制御の流れを表します。 横のときは左から右へ、縦のときは上から下へと進みます。
矢印も、制御の流れを表します。 矢印の向きに進みます。 他の流れ線や矢印に合流するときにも、矢印を使います。
端子は、開始と終了の場所を表します。 制御の流れは、一つの開始端子から始まり、一つの終了端子で終わります。
処理は、その名の通り、処理を表します。
判断は、条件によって制御の流れを分岐させます。
条件分岐 †
次のようなプログラムを考えてみましょう
試験の点数が60点以上なら「合格」と表示する。
つまり、点数が60点以上なら「合格」と表示し、そうでないなら何も表示しないようにします。
これをフローチャートで描くと、次のようになります。
これをC言語風にすると、次のようになります。
ここで、点数はint型の変数scoreに格納することとし、点数は適当に85点にしています。
判断のラベルが「はい」と「いいえ」から「0でない」と「0」に変わっていますが、これについてはもう少し後で説明します。
if文 †
C言語で条件分岐を行うには、if文を使います。
if文は、次の形をしています。
if (条件) { 処理 }
if文は、( )内に指定された「条件」を評価し、「条件」が満たされているときだけ「処理」を行います。 「条件」が満たされていないときは、「処理」を行わずに次へ進みます。
「条件」が満たされているときに行う「処理」に含まれる命令文が一つだけのとき、波括弧 { } を省略できます。
if (条件) 命令文;
(省略しなくてもかまいません。)
「条件」には、比較演算子や関係演算子を使います。 比較演算子と関係演算子については、この下で詳しく説明します。
このif文を使ってC言語のプログラムを書くと、次のようになります(プログラム1)。
#include <stdio.h> int main(void) { int score = 85; if (score >= 60) { printf("合格\n"); } return 0; }
演習1 †
プログラム1を作成し、実行結果を確認せよ。 また、点数を50点に変更し、実行結果を確認せよ。
条件を満たさないときにも処理を行う †
続いて、次のようなプログラムを考えてみましょう。
試験の点数が60点以上なら「合格」、そうでないなら「再試験」と表示する。
これをフローチャートで描くと、次のようになります。
このように、条件を評価した結果によって、異なる処理が実行されます。
そして、これをC言語風にすると、次のようになります。
このような、条件を満たさないときに処理を行うには、次のようなif文を使います。
if (条件) { 処理1 } else { 処理2 }
( ) 内の「条件」を評価し、条件を満たされているときは「処理1」を実行し、条件がみたされていないときは「処理2」を実行します。
先ほどと同様に、「処理1」または「処理2」に含まれる命令文が一つだけのとき、波括弧 { } を省略できます。
if (条件) 命令文1; else 命令文2;
if (条件) 命令文1; else { 処理2 }
if (条件) { 処理1 } else 命令文2;
このif文を使ってC言語のプログラムを書くと、次のようになります(プログラム2、if文の部分のみ)。
if (score >= 60) { printf("合格\n"); } else { printf("不合格\n"); }
演習2 †
プログラム1をプログラム2に変更し、実行結果を確認せよ。 また、点数を50点に変更し、実行結果を確認せよ。
3つ以上に分岐する †
さらに、次のプログラムについて考えてみましょう。
試験の点数が60点以上なら「合格」、20点以上60点未満なら「再試験」、それ以外なら「不合格」と表示する。
if (条件1) { 処理1 } else { if (条件2) { 処理2 } else { 処理3 } }
if (条件1) { 処理1 } else if (条件2) { 処理2 } else { 処理3 }
比較演算子 †
優先順位 | 演算子 | 使用例 | 意味 |
7 | < | a < b | 左辺の値が右辺の値より小さいとき1、そうでないとき0 |
<= | a <= b | 左辺の値が右辺の値より小さいか等しいとき1、そうでないとき0 | |
> | a > b | 左辺の値が右辺の値より大きいとき1、そうでないとき0 | |
>= | a >= b | 左辺の値が右辺の値より大きいか等しいとき1、そうでないとき0 | |
8 | == | a == b | 左辺の値が右辺の値と等しいとき1、そうでないとき0 |
!= | a != b | 左辺の値が右辺の値と等しくないとき1、そうでないとき0 |
論理演算子 †
優先順位 | 演算子 | 使用例 | 意味 |
2 | ! | !a | 値が0のとき1、そうでないとき0(論理否定) |
12 | && | a && b | 左辺の値が1かつ右辺の値が1のとき1、そうでないとき0(論理積) |
13 | || | a || b | 左辺の値が1または右辺の値が1のとき1、そうでないとき0(論理和) |
優先順位に注意しましょう。