C - デシジョンメイキング:ビギナーズガイド

こんにちは、未来のプログラマーさんたち!C言語プログラミングのエキサイティングな世界にようこそ。私はこの旅であなたのガイドを務め、コーディングの最も基本的な概念の一つであるデシジョンメイキングについてお伝えします。C言語を10年以上教えてきた経験から、これらの概念をマスターすることで、あなたのプログラミングの冒険が大きく変わることを保証します。それでは、始めましょう!

C - Decision Making

Cプログラミングにおけるif文

アイスクリーム屋にいると、 coneを買うかどうかを決めなくてはなりません。プログラミングでは、'if'文を使ってこのような決定を行います。これは質問をし、その答えに基づいて何かを行うようなものです。

C言語では以下のように見えます:

if (condition) {
// conditionがtrueの場合に実行されるコード
}

実際の例を見てみましょう:

#include <stdio.h>

int main() {
int scoops = 2;

if (scoops > 1) {
printf("ワォ、それってすごくないですか!\n");
}

return 0;
}

この例では、scoopsの数が1を超える場合にメッセージが表示されます。'scoops'の値を変更して、何が起こるかを試してみてください!

Cプログラミングにおけるif...else文

では、条件がfalseの場合に何かを行いたい場合はどうなるでしょうか?その場合に便利なのが'if...else'文です。これはプランBのようなものです。

以下のように見えます:

if (condition) {
// conditionがtrueの場合に実行されるコード
} else {
// conditionがfalseの場合に実行されるコード
}

アイスクリームの例を広げてみましょう:

#include <stdio.h>

int main() {
int money = 5;
int ice_cream_cost = 6;

if (money >= ice_cream_cost) {
printf("ヤッホー!アイスクリームを買えるよ!\n");
} else {
printf("ごめん、今日はアイスクリームのお金がないな。\n");
}

return 0;
}

ここでは、お金が十分にあるかどうかをチェックしています。お金があれば、素晴らしい!お金がなければ、次の機会にしましょう。

Cプログラミングにおけるネストされたif文

時々、人生(そしてプログラミング)は単なる一つの決定だけではありません。しばしば、決定の中に別の決定が必要になります。その場合に便利なのがネストされた'if'文です。

以下のように見えます:

if (outer_condition) {
if (inner_condition) {
// 両方のconditionがtrueの場合に実行されるコード
}
}

より複雑なアイスクリームのシナリオを見てみましょう:

#include <stdio.h>

int main() {
int temperature = 30;
int has_money = 1; // 1はtrue、0はfalse

if (temperature > 25) {
if (has_money) {
printf("暑いし、お金もある。アイスクリームの時間だね!\n");
} else {
printf("暑いけど、お金がない。冷たいシャワーでもどう?\n");
}
} else {
printf("それほど暑くない。お金を貯めて、雨の日に備えよう。\n");
}

return 0;
}

このプログラムは、気温とお金の有無を考慮してアイスクリームを提案します。

Cプログラミングにおけるswitch文

'switch'文はデシジョンメイキングのマルチフレーバーなアイスクリームコーンのようなものです。複数の選択肢がある場合に最適です。

以下のように見えます:

switch(expression) {
case constant1:
// expressionがconstant1に等しい場合に実行されるコード
break;
case constant2:
// expressionがconstant2に等しい場合に実行されるコード
break;
...
default:
// expressionがどのconstantにも一致しない場合に実行されるコード
}

アイスクリームのフレーバーを選ぶために使ってみましょう:

#include <stdio.h>

int main() {
int flavor = 2;

switch(flavor) {
case 1:
printf("バニラを選んだね。クラシックだね!\n");
break;
case 2:
printf("チョコレートだね。うまいね!\n");
break;
case 3:
printf("イチゴ、フルーツの美味しさだね!\n");
break;
default:
printf("そのフレーバーはありません。バニラはどう?\n");
}

return 0;
}

このプログラムは、選択されたフレーバーに基づいてメッセージを選択します。

Cプログラミングにおける?:演算子

'?'演算子(TERNARY演算子)は、短い'if...else'文の代わりとして便利です。簡単で迅速な決定に最適です。

以下のように見えます:

condition ? expression_if_true : expression_if_false;

デザートを決める簡潔な方法を見てみましょう:

#include <stdio.h>

int main() {
int is_hungry = 1; // 1はtrue、0はfalse

printf(is_hungry ? "アイスクリームを食べよう!\n" : "後でいいかも。\n");

return 0;
}

この一行は、あなたがお腹が空いているかどうかをチェックし、それに基づいてアイスクリームを提案します。

Cプログラミングにおけるbreak文

'break'文は、会話の途中で「ここでやめよう」と言うようなものです。ループやswitch文の途中で早期に退出するために使われます。

以下のように見えます:

#include <stdio.h>

int main() {
int i;
for(i = 1; i <= 10; i++) {
if(i == 5) {
printf("5を見つけた!ここで止まろう。\n");
break;
}
printf("%d ", i);
}
return 0;
}

このプログラムは10まで数えますが、5に達すると停止します。

Cプログラミングにおけるcontinue文

'continue'文は、「これはスキップして次に進もう」と言うようなものです。ループの現在のイテレーションの残りのコードをスキップし、次のイテレーションに進みます。

以下のように見えます:

#include <stdio.h>

int main() {
int i;
for(i = 1; i <= 5; i++) {
if(i == 3) {
printf("あやまり、3をスキップしよう。\n");
continue;
}
printf("アイスクリームのスcoop番号 %d\n", i);
}
return 0;
}

このプログラムは、アイスクリームのスcoopを数えますが、3をスキップします。

Cプログラミングにおけるgoto文

'goto'文は、コード内のラベルにジャンプするためのものです。しかし、コードが読みにくくなる可能性があるため、慎重に使用してください。

以下のように見えます:

#include <stdio.h>

int main() {
int scoops = 0;

scoop_more:
scoops++;
printf("スcoopを追加した。合計: %d\n", scoops);

if(scoops < 3) {
goto scoop_more;
}

printf("アイスクリームサンデー完成!\n");
return 0;
}

このプログラムは、3つのスcoopまでアイスクリームサンデーにスcoopを追加します。

以下に、私たちがカバーしたすべてのデシジョンメイキング方法のまとめ表を示します:

メソッド 目的 シntax
if 単純な条件チェック if (condition) { ... }
if...else 二択決定 if (condition) { ... } else { ... }
ネストされたif 複数の条件 if (condition1) { if (condition2) { ... } }
switch 複数の選択肢 switch(expression) { case constant: ... }
?: 簡単な決定 condition ? true_expression : false_expression
break ループやswitchの途中退出 break;
continue ループの現在イテレーションをスキップ continue;
goto ラベルにジャンプ goto label;

練習すれば、これらの概念をプロのように使えるようになります。あなたのプログラミングの冒険を楽しんでください!

Credits: Image by storyset