- 追加された行はこの色です。
- 削除された行はこの色です。
*フローチャート [#j5eef202]
処理の流れは、''フローチャート''(流れ図)という図で表すことができます。
|記号|名前|意味
|#ref(./line.png)|流れ線・矢印|
|記号|名前|h
|#ref(./line.png,12.5%)|流れ線|
|#ref(./arrow.png,12.5%)|矢印|
|#ref(./terminal.png,12.5%)|端子|
|#ref(./process.png,12.5%)|処理|
|#ref(./decision.png,12.5%)|判断|
*if文のフローチャート [#r0c7c9fd]
''流れ線''は、制御の流れを表します。
横のときは左から右へ、縦のときは上から下へと進みます。
''矢印''も、制御の流れを表します。
矢印の向きに進みます。
他の流れ線や矢印に合流するときにも、矢印を使います。
*条件を満たすときだけ処理を行う if文 [#i9b7d164]
''端子''は、開始と終了の場所を表します。
制御の流れは、一つの開始端子から始まり、一つの終了端子で終わります。
''処理''は、その名の通り、処理を表します。
''判断''は、条件によって制御の流れを分岐させます。
*条件分岐 [#r0c7c9fd]
次のようなプログラムを考えてみましょう
試験の点数が60点以上なら「合格」と表示する。
つまり、点数が60点以上なら「合格」と表示し、そうでないなら何も表示しないようにします。
これをフローチャートで描くと、次のようになります。
#ref(./if1.png,12.5%);
これをC言語風にすると、次のようになります。
#ref(./if2.png,12.5%);
ここで、点数はint型の変数scoreに格納することとし、点数は適当に85点にしています。
判断のラベルが「はい」と「いいえ」から「0でない」と「0」に変わっていますが、これについてはもう少し後で説明します。
*if文 [#i9b7d164]
C言語で条件分岐を行うには、''if文''を使います。
if文は、次の形をしています。
#geshi(c){{
if (条件) {
処理
}
}}
if文は、''( )''内に指定された「条件」を評価し、「条件」が満たされているときだけ「処理」を行います。
「条件」が満たされていないときは、「処理」を行わずに次へ進みます。
「条件」が満たされているときに行う「処理」に含まれる命令文が一つだけのとき、波括弧 ''{ }'' を省略できます。
#geshi(c){{
if (条件) 命令文;
}}
(省略しなくてもかまいません。)
「条件」には、''比較演算子''や''関係演算子''を使います。
比較演算子と関係演算子については、この下で詳しく説明します。
このif文を使ってC言語のプログラムを書くと、次のようになります(プログラム1)。
#geshi(c){{
#include <stdio.h>
int main(void) {
int i = 80;
int score = 85;
if (i >= 60) {
if (score >= 60) {
printf("合格\n");
}
return 0;
}
}}
*条件を満たすときと満たさないときで異なる処理を行う else [#saf4584a]
**演習1 [#oe1c6530]
プログラム1を作成し、実行結果を確認せよ。
また、点数を50点に変更し、実行結果を確認せよ。
*条件を満たさないときにも処理を行う [#saf4584a]
続いて、次のようなプログラムを考えてみましょう。
試験の点数が60点以上なら「合格」と表示し、そうでないなら「再試験」と表示する。
#ref(./else1.png,12.5%);
#ref(./else2.png,12.5%);
#geshi(c){{
if (i >= 60) {
printf("合格\n");
} else {
printf("不合格\n");
}
}}
*3つ以上に分岐する [#jd40ab13]
#geshi(c){{
if (i >= 60) {
printf("合格\n");
} else {
if (i > 0) {
printf("再評価試験\n");
} else {
printf("不合格\n");
}
}
}}
#geshi(c){{
if (i >= 60) {
printf("合格\n");
} else if (i > 0) {
printf("再評価試験\n");
} else {
printf("不合格\n");
}
}}
*比較演算子 [#m0aa9192]
|優先順位|演算子|使用例|意味|h
|7|<|a < b|左辺の値が右辺の値より''小さい''|
|~|<=|a <= b|左辺の値が右辺の値より''小さいか等しい''(以下)|
|~|>|a > b|左辺の値が右辺の値より''大きい''|
|~|>=|a >= b|左辺の値が右辺の値より''大きいか等しい''(以上)|
|8|==|a == b|左辺の値が右辺の値と''等しい''|
|~|!=|a != b|左辺の値が右辺の値と''等しくない''|
*論理演算子 [#xac5e680]
|優先順位|演算子|使用例|意味|h
|2|!|!a|値が0のとき1、そうでないとき0(論理否定)|
|12|&&|a && b|左辺の値が1''かつ''右辺の値が1のとき1、そうでないとき0(論理積)|
|13||||a || b|左辺の値が1''または''右辺の値が1のとき1、そうでないとき0(論理和)|