logo

C での意思決定 (if 、if..else、ネストされた if、if-else-if )

条件文 if、if else、switch などの (意思決定制御構造とも呼ばれます) は、C プログラムで意思決定の目的で使用されます。

これらは意思決定ステートメントとも呼ばれ、1 つ以上の条件を評価し、一連のステートメントを実行するかどうかを決定するために使用されます。プログラミング言語におけるこれらの意思決定ステートメントは、プログラム実行フローの方向を決定します。



条件文の必要性

現実の生活では、何らかの決断をしなければならない状況があり、その決断に基づいて次に何をすべきかを決定します。プログラミングでも同様の状況が発生し、何らかの決定を下す必要があり、これらの決定に基づいてコードの次のブロックを実行します。たとえば、C では、x が発生した場合は y を実行し、それ以外の場合は z を実行します。 C のように、x が発生した場合は p を実行し、条件 y が発生した場合は q を実行し、そうでない場合は r を実行するように、複数の条件を指定することもできます。 C の else-if の条件は、複数の条件をインポートする多くの方法の 1 つです。

C の条件文の種類

C で使用できる意思決定ステートメントは次のとおりです。

  1. if ステートメント
  2. if-else ステートメント
  3. ネストされた if ステートメント
  4. if-else-if ラダー
  5. switch ステートメント
  6. 条件演算子
  7. ジャンプステートメント:
    • 壊す
    • 続く
    • 後藤
    • 戻る

それぞれについて一つずつ説明していきましょう。



1.C言語の場合

if ステートメント は最も単純な意思決定ステートメントです。これは、特定のステートメントまたはステートメントのブロックが実行されるかどうかを決定するために使用されます。つまり、特定の条件が true の場合、ステートメントのブロックが実行され、それ以外の場合は実行されません。

if文の構文

  if  (  condition  )  {    // Statements to execute if     // condition is true  }>

ここで、 状態 評価後の値は true または false になります。 C の if ステートメントはブール値を受け入れます。値が true の場合は、その下のステートメントのブロックが実行されます。それ以外の場合は実行されません。 if(condition) の後に中括弧「{」と「}」を指定しない場合、デフォルトで if ステートメントはすぐ下の最初のステートメントがそのブロック内にあるとみなします。

if文のフローチャート

フローチャートの場合

if 文のフロー図



C での if の例

C




// C program to illustrate If statement> #include> > int> main()> {> >int> i = 10;> > >if> (i>15) {>> >printf>(>'10 is greater than 15'>);> >}> > >printf>(>'I am Not in if'>);> }>

>

>

出力

I am Not in if>

if ステートメントに存在する条件が false であるため。したがって、if ステートメントの下のブロックは実行されません。

2. C の if-else

もし ステートメントだけを見ても、条件が true の場合はステートメントのブロックが実行され、条件が false の場合は実行されないことがわかります。しかし、条件が false のときに別のことを実行したい場合はどうすればよいでしょうか?ここにCが来ます それ以外 声明。使用できます それ以外 とのステートメント もし 条件が false の場合にコードのブロックを実行するステートメント。の if-else ステートメント 2 つのブロックで構成され、1 つは偽の表現用、もう 1 つは真の表現用です。

C の if else の構文

  if   (  condition  ) {     // Executes this block if     // condition is true  }   else  {    // Executes this block if     // condition is false  }>

if-else文のフローチャート

そうでない場合のフローチャート

if else のフロー図

if-elseの例

C




// C program to illustrate If statement> #include> > int> main()> {> >int> i = 20;> > >if> (i <15) {> > >printf>(>'i is smaller than 15'>);> >}> >else> {> > >printf>(>'i is greater than 15'>);> >}> >return> 0;> }>

>

>

出力

i is greater than 15>

に続くコードのブロックは、 それ以外 ステートメントは、 もし 発言は誤りです。

3. C での入れ子になった if-else

C のネストされた if は、別の if ステートメントのターゲットである if ステートメントです。ネストされた if ステートメントとは、別の if ステートメント内の if ステートメントを意味します。はい、C では if ステートメント内に if ステートメントを入れ子にすることができます。つまり、if ステートメントを別の if ステートメントの中に置くことができます。

ネストされた if-else の構文

  if   (  condition1  )  {    // Executes when condition1 is true     if   (  condition2  )   {     // Executes when condition2 is true   }    else   {    // Executes when condition2 is false  }>

フローチャート ネストされた if-else の

ネストされた if-else のフロー図

ネストされた if-else の例

C




// C program to illustrate nested-if statement> #include> > int> main()> {> >int> i = 10;> > >if> (i == 10) {> >// First if statement> >if> (i <15)> >printf>(>'i is smaller than 15 '>);> > >// Nested - if statement> >// Will only be executed if statement above> >// is true> >if> (i <12)> >printf>(>'i is smaller than 12 too '>);> >else> >printf>(>'i is greater than 15'>);> >}> > >return> 0;> }>

>

>

出力

i is smaller than 15 i is smaller than 12 too>

4. C の if-else-if ラダー

if else if ステートメント ユーザーが複数のオプションの中から決定する必要がある場合に使用されます。 C の if ステートメントは上から下に実行されます。 if を制御する条件の 1 つが true になるとすぐに、その if に関連付けられたステートメントが実行され、C else-if ラダーの残りの部分がバイパスされます。どの条件も true に該当しない場合は、最後の else ステートメントが実行されます。 if-else-if ラダーは switch ステートメントに似ています。

if-else-if ラダーの構文

  if   (  condition  )    statement;    else if   (  condition  )    statement;  . .   else     statement;>

if-else-ifラダーのフローチャート

if-else-if ステートメントのフローチャート

if-else-if のフロー図

if-else-if ラダーの例

C




// C program to illustrate nested-if statement> #include> > int> main()> {> >int> i = 20;> > >if> (i == 10)> >printf>(>'i is 10'>);> >else> if> (i == 15)> >printf>(>'i is 15'>);> >else> if> (i == 20)> >printf>(>'i is 20'>);> >else> >printf>(>'i is not present'>);> }>

>

>

出力

i is 20>

5. C の switch ステートメント

switch case ステートメント これは、switch ステートメントで指定された変数の値に基づいて条件コードを実行するために使用できる if else if ラダーの代替手段です。 switch ブロックは、switch 変数の値に基づいて実行されるケースで構成されます。

スイッチの構文

  switch   (  expression  ) {    case     value1:     statements;     case    value2:     statements;   ....  ....  ....    default:     statements;  }>

注記: switch 式は、整数または文字のいずれかに評価される必要があります。他のデータ型は評価できません。

スイッチのフローチャート

切り替えステートメントのフローチャート

C言語でのスイッチのフローチャート

switch文の例

C




// C Program to illustrate the use of switch statement> #include> > int> main()> {> >// variable to be used in switch statement> >int> var = 2;> > >// declaring switch cases> >switch> (var) {> >case> 1:> >printf>(>'Case 1 is executed'>);> >break>;> >case> 2:> >printf>(>'Case 2 is executed'>);> >break>;> >default>:> >printf>(>'Default Case is executed'>);> >break>;> >}> > >return> 0;> }>

>

>

出力

Case 2 is executed>

6. C の条件演算子

条件演算子 プログラムに条件付きコードを追加するために使用されます。これは if-else ステートメントに似ています。 3 つのオペランドを処理するため、三項演算子とも呼ばれます。

条件演算子の構文

(  condition  )   ?     [true_statements]     :     [false_statements]  ;>

条件演算子のフローチャート

条件演算子のフローチャート

条件演算子のフロー図

条件演算子の例

C




// C Program to illustrate the use of conditional operator> #include> > // driver code> int> main()> {> > >int> var;> >int> flag = 0;> > >// using conditional operator to assign the value to var> >// according to the value of flag> >var = flag == 0 ? 25 : -25;> >printf>(>'Value of var when flag is 0: %d '>, var);> > >// changing the value of flag> >flag = 1;> >// again assigning the value to var using same statement> >var = flag == 0 ? 25 : -25;> >printf>(>'Value of var when flag is NOT 0: %d'>, var);> > >return> 0;> }>

>

>

出力

Value of var when flag is 0: 25 Value of var when flag is NOT 0: -25>

7. C のジャンプ文

これらのステートメントは、プログラム内の関数全体にわたる無条件の制御フローのために C で使用されます。これらは 4 種類のジャンプ ステートメントをサポートしています。

A) 壊す

このループ制御ステートメントは、ループを終了するために使用されます。すぐに 壊す ループ内でステートメントが検出された場合、ループの反復はそこで停止し、制御はループから直ちにループ後の最初のステートメントに戻ります。

ブレークの構文

break;>

基本的に、break ステートメントは、ループの実際の反復回数がわからない場合、または何らかの条件に基づいてループを終了したい場合に使用されます。

フローチャートを中断する

休憩の例

C




// C program to illustrate> // to show usage of break> // statement> #include> > void> findElement(>int> arr[],>int> size,>int> key)> {> >// loop to traverse array and search for key> >for> (>int> i = 0; i if (arr[i] == key) { printf('Element found at position: %d', (i + 1)); break; } } } int main() { int arr[] = { 1, 2, 3, 4, 5, 6 }; // no of elements int n = 6; // key to be searched int key = 3; // Calling function to find the key findElement(arr, n, key); return 0; }>

>

例外スローJava
>

出力

Element found at position: 3>

B) 続く

このループ制御ステートメントは、break ステートメントとまったく同じです。の 続く 声明 休憩の反対です 声明 、ループを終了する代わりに、ループの次の繰り返しを強制的に実行します。
名前が示すように、 continue ステートメントはループを強制的に続行するか、次の反復を実行します。ループ内で continue ステートメントが実行されると、 continue ステートメントに続くループ内のコードはスキップされ、ループの次の反復が開始されます。

continueの構文

continue;>

コンティニューのフローチャート

C continue ステートメントのフロー図

継続の例

C




// C program to explain the use> // of continue statement> #include> > int> main()> {> >// loop from 1 to 10> >for> (>int> i = 1; i <= 10; i++) {> > >// If i is equals to 6,> >// continue to next iteration> >// without printing> >if> (i == 6)> >continue>;> > >else> >// otherwise print the value of i> >printf>(>'%d '>, i);> >}> > >return> 0;> }>

>

>

出力

1 2 3 4 5 7 8 9 10>

C の if-else で変数を作成すると、その変数はその if/else ブロックに対してのみローカルになります。 if/else ブロック内でグローバル変数を使用できます。 if/else で作成した変数の名前が他のグローバル変数と同じである場合は、「ローカル変数」が優先されます。

C




#include> > int> main()> {> > >int> gfg = 0;>// local variable for main> >printf>(>'Before if-else block %d '>, gfg);> >if> (1) {> >int> gfg = 100;>// new local variable of if block> >printf>(>'if block %d '>, gfg);> >}> >printf>(>'After if block %d'>, gfg);> >return> 0;> }>

>

>

出力

Before if-else block 0 if block 100 After if block 0>

C) 後藤

goto ステートメント C では、無条件ジャンプ ステートメントとも呼ばれ、関数内のある点から別の点にジャンプするために使用できます。

gotoの構文

  Syntax1 | Syntax2  ----------------------------   goto     label;   |   label:   . | . . | . . | .   label:   |   goto     label;>

上記の構文では、最初の行は、ラベルとしてマークされたステートメントに移動またはジャンプするようにコンパイラーに指示します。ここで、ラベルとは、対象のステートメントを示すユーザー定義の識別子です。 「label:」の直後に続くステートメントが宛先ステートメントです。 「label:」は、上記の構文の「goto label;」ステートメントの前に指定することもできます。

goto文のフローチャート

gotoの例

C




// C program to print numbers> // from 1 to 10 using goto> // statement> #include> > // function to print numbers from 1 to 10> void> printNumbers()> {> >int> n = 1;> label:> >printf>(>'%d '>, n);> >n++;> >if> (n <= 10)> >goto> label;> }> > // Driver program to test above function> int> main()> {> >printNumbers();> >return> 0;> }>

>

>

出力

1 2 3 4 5 6 7 8 9 10>

D) 返品

戻る C では、実行の流れを呼び出し元の関数に返します。このステートメントには条件ステートメントは必須ではありません。ステートメントが実行されるとすぐに、プログラムのフローは直ちに停止し、呼び出し元の場所から制御が戻ります。 return ステートメントは、void 関数の場合は何も返さない場合もありますが、void 以外の関数の場合は戻り値を返す必要があります。

返却の流れ

リターンフローチャート

返品の流れ

戻り値の構文

  return    [expression]  ;>

返品例

C




// C code to illustrate return> // statement> #include> > // non-void return type> // function to calculate sum> int> SUM(>int> a,>int> b)> {> >int> s1 = a + b;> >return> s1;> }> > // returns void> // function to print> void> Print(>int> s2)> {> >printf>(>'The sum is %d'>, s2);> >return>;> }> > int> main()> {> >int> num1 = 10;> >int> num2 = 10;> >int> sum_of = SUM(num1, num2);> >Print(sum_of);> >return> 0;> }>

>

>

出力

The sum is 20>