C 条件文: IF、IF Else、およびネストされた IF Else と例
C の条件文とは何ですか?
C の条件文 プログラミングは、条件に基づいて意思決定を行うために使用されます。 条件付きステートメントは、ステートメントの周囲に条件がない場合に順次実行されます。 ステートメントのブロックに何らかの条件を設定すると、条件によって評価された結果に基づいて実行フローが変更される場合があります。 このプロセスを「C」では意思決定と呼びます。
「C」プログラミングでは、次の 2 つの構成要素を利用して条件文を作成できます。
1. if ステートメント
2. If-else ステートメント
評価された条件の結果に基づいてプログラムがどのステートメントを実行するかを決定するため、これは分岐とも呼ばれます。
Ifステートメント
これは強力な条件文の XNUMX つです。 If ステートメントは、プログラムの実行フローを変更する役割を果たします。 If ステートメントは常に条件とともに使用されます。 If の本体内のステートメントを実行する前に、条件が最初に評価されます。 if ステートメントの構文は次のとおりです。
if (condition) instruction;
条件は true または false に評価されます。 True は常にゼロ以外の値、False はゼロを含む値です。 命令には、単一の命令、または中括弧 { } で囲まれたコード ブロックを指定できます。
次のプログラムは、C プログラミングにおける if 構文の使用法を示しています。
#include<stdio.h> int main() { int num1=1; int num2=2; if(num1<num2) //test-condition { printf("num1 is smaller than num2"); } return 0; }
出力:
num1 is smaller than num2
上記のプログラムは、if 構文を使用して 2 つの数値が等しいかどうかを確認する方法を示しています。
- 上記のプログラムでは、1 つの変数を num2、num1 の値でそれぞれ 2、XNUMX に初期化しました。
- 次に、if をテスト式で使用して、どの数値が最小で、どの数値が最大であるかを確認しました。 if 構文で関係式を使用しました。 num1 の値が num2 より小さいため、条件は true と評価されます。
- したがって、If のブロック内のステートメントを出力します。 その後、制御はブロックの外に出て、プログラムは成功して終了します。
リレーショナル Operaトー
C には、 true または false を返すブール式を作成して決定を下し、条件をテストするために使用できる 6 つの関係演算子があります。
<未満
<= 以下
>より大きい
>= 以上
== に等しい
!= と等しくない
等価テスト (==) は代入演算子 (=) とは異なることに注意してください。これは、プログラマがこれらを混同することによって直面する最も一般的な問題の 1 つだからです。
例:
int x = 41; x =x+ 1; if (x == 42) { printf("You succeed!");}
出力:
You succeed
ゼロ以外の値に評価される条件は true とみなされます。
例:
int present = 1; if (present) printf("There is someone present in the classroom \n");
出力:
There is someone present in the classroom
If-Else ステートメント
if-else is ステートメントは、If の拡張バージョンです。 if-else の一般的な形式は次のとおりです。
if (test-expression) { True block of statements } Else { False block of statements } Statements;
このタイプの構成では、test-expression の値が true の場合、ステートメントの true ブロックが実行されます。 test-expression の値が false の場合、ステートメントの false ブロックが実行されます。 いずれの場合も、実行後は、If ブロックの外側にあるステートメントに制御が自動的に移ります。
次のプログラムは、if-else 構造の使用方法を示しています。
変数を何らかの値で初期化し、その値が XNUMX より小さいか XNUMX より大きいかを判断するプログラムを作成します。
始めましょう。
#include<stdio.h> int main() { int num=19; if(num<10) { printf("The value is less than 10"); } else { printf("The value is greater than 10"); } return 0; }
出力:
The value is greater than 10
- 変数を値 19 で初期化しました。「C」プログラムを使用して、数値が 10 より大きいか小さいかを調べる必要があります。 これを行うために、if-else 構造を使用しました。
- ここでは、値を 10 と比較する必要があるため、条件 num<10 を指定しました。
- ご覧のとおり、最初のブロックは常に true ブロックです。つまり、test-expression の値が true の場合、最初のブロック (If) が実行されます。
- 10 番目のブロックは else ブロックです。 このブロックには、テスト式の値が false になった場合に実行されるステートメントが含まれています。 私たちのプログラムでは、num の値が XNUMX より大きいため、テスト条件が false になり、else ブロックが実行されます。 したがって、出力は else ブロックからの「値は XNUMX より大きい」になります。 if-else の後、プログラムは成功した結果で終了します。
「C」プログラミングでは、if-else ステートメントのネストと呼ばれる複数の if-else 構造を相互に使用できます。
条件式
if-else ステートメントを表現する別の方法は、 ?: 演算子。条件式では、 ?: 演算子には、if と else に関連付けられたステートメントが 1 つだけあります。
例:
#include <stdio.h> int main() { int y; int x = 2; y = (x >= 6) ? 6 : x;/* This is equivalent to: if (x >= 5) y = 5; else y = x; */ printf("y =%d ",y); return 0;}
出力:
y =2
ネストされた if-else ステートメント
一連の決定が必要な場合は、ネストされた if-else が使用されます。 ネストとは、ある if-else 構造を別の if-else 構造内で使用することを意味します。
ネストされた if-else の使用法を示すプログラムを作成してみましょう。
#include<stdio.h> int main() { int num=1; if(num<10) { if(num==1) { printf("The value is:%d\n",num); } else { printf("The value is greater than 1"); } } else { printf("The value is greater than 10"); } return 0; }
出力:
The value is:1
上記のプログラムは、数値が 10 より小さいか大きいかをチェックし、ネストされた if-else 構造を使用して結果を出力します。
- まず、値が 1 の変数 num を宣言しました。次に、if-else 構造を使用しました。
- 外側の if-else では、指定された条件によって数値が 10 未満かどうかがチェックされます。条件が true の場合にのみ、 内側のループ。 この場合、条件は true であるため、内側のブロックが処理されます。
- 内側のブロックには、変数に値 1 が含まれているかどうかをチェックする条件が再度あります。条件が true の場合、If ブロックが処理され、そうでない場合は else ブロックが処理されます。この場合、条件は true であるため、If a ブロックが実行され、値が出力画面に印刷されます。
- 上記のプログラムは、次の値を出力します。 変数 そして成功して終了します。
変数の値を変更して、プログラムがどのように動作するかを確認してください。
注: ネストされた if-else では、複数の if-else 構文がこのプロセスに関与するため、インデントに注意する必要があり、個々の構文を理解することが困難になります。 適切なインデントによりプログラムが読みやすくなります。
ネストされた Else-if ステートメント
ネストされた else-if は、マルチパスの決定が必要な場合に使用されます。
「C」プログラミングで else-if ラダーを構築する方法の一般的な構文は次のとおりです。
if (test - expression 1) { statement1; } else if (test - expression 2) { Statement2; } else if (test - expression 3) { Statement3; } else if (test - expression n) { Statement n; } else { default; } Statement x;
このタイプの構造は、else-if ラダーとして知られています。 このチェーンは一般的にはしごのように見えるため、else-if はしごとも呼ばれます。 テスト式は上から下に評価されます。 真のテスト式が見つかると、それに関連付けられたステートメントが実行されます。 n 個のテスト式がすべて false になると、デフォルトの else ステートメントが実行されます。
プログラムを使って実際に動作する様子を見てみましょう。
#include<stdio.h> int main() { int marks=83; if(marks>75){ printf("First class"); } else if(marks>65){ printf("Second class"); } else if(marks>55){ printf("Third class"); } else{ printf("Fourth class"); } return 0; }
出力:
First class
上記のプログラムは、テストの得点に従って成績を出力します。 上記のプログラムではelse-ifラダー構造を使用しました。
- 変数をマークで初期化しました。 else-if ラダー構造では、さまざまな条件を提供します。
- 変数マークの値は、それに関連付けられたステートメントが出力画面に表示されるため、最初の条件と比較されます。
- 最初のテスト条件が false であることが判明した場合は、XNUMX 番目の条件と比較されます。
- このプロセスは、すべての式が評価されるまで続行されます。評価されない場合は、制御が else-if ラダーから外れ、デフォルトのステートメントが出力されます。
値を変更してみて、出力の変化に注目してください。
要約
- 意思決定または分岐ステートメントは、評価された式の結果に基づいて XNUMX つのパスを選択するために使用されます。
- プログラムの実行の流れを制御するため、制御ステートメントとも呼ばれます。
- 「C」は、意思決定ステートメントの if、if-else 構造を提供します。
- 複数のパスをテストする必要がある場合は、if-else を相互にネストすることもできます。
- else-if ラダーは、式の結果に基づいてさまざまな方法をチェックする必要がある場合に使用されます。