はじめに
プログラミング初心者が最初に学ぶ言語としてよく選ばれるのがC言語です。
その理由の一つに、C言語が他の多くのプログラミング言語の基盤となっているからです。
今回は、C言語の基本的な構文の一つであるif文について、その使い方から応用例、注意点まで、初心者でもわかりやすく理解できるように10のステップで解説します。
●C言語とは
C言語は、1970年代に開発された汎用プログラミング言語で、そのパフォーマンスと直接的な記述性から、オペレーティングシステムや組み込みシステムの開発に広く用いられています。
また、C言語で学んだ知識は他のプログラミング言語にも応用することが可能であり、初心者がプログラミングを学ぶ際の入門言語としても適しています。
●if文とは
if文はプログラミング言語に共通する制御構文の一つで、特定の条件が満たされた場合にのみ一部のコードを実行するためのものです。
これにより、プログラムの流れを分岐させることが可能となります。
○if文の基本
C言語におけるif文の基本的な構文は次のようになります。
if (条件) {
// 条件が真(true)の場合に実行するコード
}
このコードでは、if文の括弧内に書かれた条件が真(true)である場合にのみ、波括弧{}内のコードが実行されます。
●if文の使い方
それでは、if文の使い方を具体的なサンプルコードを交えて見ていきましょう。
○サンプルコード1:基本的なif文の使い方
ここでは、変数xが10以上である場合に、”x is 10 or more.”と表示する基本的なif文を紹介します。
#include <stdio.h>
int main(void) {
int x = 10;
if (x >= 10) {
printf("x is 10 or more.\n");
}
return 0;
}
このコードを実行すると、”x is 10 or more.”というメッセージが表示されます。
なぜなら、変数xの値が10であり、これはif文の条件x >= 10を満たしているからです。
○サンプルコード2:複数の条件を指定する
次に、複数の条件を指定する方法を解説します。
ここでは、変数xが10以上かつ20以下である場合にメッセージを表示するコードを紹介します。
#include <stdio.h>
int main(void) {
int x = 15;
if (x >= 10 && x <= 20) {
printf("x is between 10 and 20.\n");
}
return 0;
}
このコードでは、「&&」は論理積(AND)を表し、左右の条件が両方とも真(true)である場合にのみ、真と評価されます。
したがって、このコードを実行すると、”x is between 10 and 20.”というメッセージが表示されます。
○サンプルコード3:else ifを用いた条件分岐
また、複数の条件で分岐させたい場合には、else ifを用いることができます。
#include <stdio.h>
int main(void) {
int x = 30;
if (x < 20) {
printf("x is less than 20.\n");
} else if (x < 40) {
printf("x is between 20 and 40.\n");
} else {
printf("x is 40 or more.\n");
}
return 0;
}
このコードでは、xの値に応じて異なるメッセージが表示されます。
上記のコードを実行すると、”x is between 20 and 40.”と表示されます。
なぜなら、xの値が30であり、これは”else if (x < 40)”の条件を満たすからです。
●if文の応用例
if文を使って、さまざまな条件に応じて処理を変えることができます。
ここではいくつかの応用例を見ていきましょう。
○サンプルコード4:年齢によるメッセージの出力
下記のコードは、年齢によって出力するメッセージを変える例です。
#include <stdio.h>
int main(void) {
int age = 18;
if (age < 20) {
printf("You are under 20 years old.\n");
} else {
printf("You are 20 years old or older.\n");
}
return 0;
}
このコードを実行すると、”You are under 20 years old.”と表示されます。
なぜなら、ageの値が18であり、これは”if (age < 20)”の条件を満たすからです。
○サンプルコード5:数値比較による大小判定
次に、2つの数値を比較し、それぞれが大きいか小さいか等しいかを判定する例を紹介します。
#include <stdio.h>
int main(void) {
int a = 10;
int b = 20;
if (a < b) {
printf("a is less than b.\n");
} else if (a == b) {
printf("a is equal to b.\n");
} else {
printf("a is greater than b.\n");
}
return 0;
}
このコードを実行すると、”a is less than b.”と表示されます。
なぜなら、aの値が10、bの値が20であり、これは”a < b”の条件を満たすからです。
○サンプルコード6:文字列の比較
また、C言語では文字列の比較にはstrcmp
関数を用います。
次のコードは、2つの文字列が等しいかどうかを判定します。
#include <stdio.h>
#include <string.h>
int main(void) {
char str1[] = "apple";
char str2[] = "banana";
if (strcmp(str1, str2) == 0) {
printf("str1 is the same as str2.\n");
} else {
printf("str1 is not the same as str2.\n");
}
return 0;
}
このコードを実行すると、”str1 is not the same as str2.”と表示されます。
なぜなら、str1とstr2の値が異なり、”strcmp(str1, str2) == 0″の条件を満たさないからです。
●if文の注意点と対処法
ここでは、if文を使う際の注意点とそれへの対処法を解説します。
一つ目の注意点は、条件式が0の場合は偽(false)、0以外の場合は真(true)と評価されるというC言語の特性です。
この特性に注意しないと、意図しない動作をする可能性があります。例えば、次のコードを考えてみましょう。
#include <stdio.h>
int main(void) {
int x = 0;
if (x) {
printf("This will not be displayed.\n");
}
return 0;
}
このコードを実行すると、何も表示されません。
なぜなら、xの値が0であり、if文の条件が偽(false)と評価されるからです。
つまり、if文の条件として単純な変数を指定した場合、その変数の値が0であれば条件は偽となり、0以外であれば真となります。
二つ目の注意点は、浮動小数点数の比較です。
コンピュータは浮動小数点数を近似値でしか表現できないため、==や!=で厳密に比較すると意図しない結果になることがあります。
この問題を回避するためには、一定の許容範囲を設けて比較すると良いでしょう。例えば、次のようにします。
#include <stdio.h>
#include <math.h>
int main(void) {
double a = 0.1 * 3;
double b = 0.3;
if (fabs(a - b) < 1e-10) {
printf("a and b are almost equal.\n");
} else {
printf("a and b are not equal.\n");
}
return 0;
}
このコードでは、aとbの絶対値の差が1e-10未満(つまり、非常に小さい)であれば、aとbをほぼ等しいと判断します。
このような方法で、浮動小数点数の比較における問題を回避することができます。
まとめ
今回は、C言語のif文の使い方や応用例、注意点について解説しました。
基本的な使い方から始まり、複数の条件を指定する方法やelse ifを用いた条件分岐、さらには文字列や浮動小数点数の比較方法についても触れました。
また、if文の注意点として、0と非0の評価、浮動小数点数の比較問題についても説明しました。
これらの情報をもとに、if文を正しく、そして効果的に使用することで、より良いプログラムを作成することができます。
これからもC言語の学習を続けていきましょう。