C - ネストされたif文

こんにちは、将来のプログラマーさんたち!今日は、C言語のネストされたif文の fascinante な世界に飛び込みましょう。あなたの近所の親切なコンピュータサイエンスの先生として、このトピックをガイドするのがとても楽しみです。信じてください、一旦コツを覚えると、プロの鳥の建設者のようにif文をネストするようになります!

C - nested if statements

ネストされたifとは?

深淵には飛び込む前に、基本から始めましょう。生活の中で、私たちはしばしば複数の条件に基づいて決定を下しますよね?ネストされたif文もまさにそれと同じです!複数の条件をチェックし、それに基づいて異なるコードブロックを実行することができます。

例えば、服装を決める時、あなたは考えたかもしれません:

  1. 如果外面很冷...
  • 如果下雨...
  • 雨衣を着る
  • さもなければ...
  • 温かいジャケットを着る
  1. さもなければ(冷たくない場合)...
  • 如果阳光明媚...
  • Tシャツを着る
  • さもなければ...
  • 軽いジャケットを着る

この意思決定プロセスが、プログラミングにおけるネストされたif文が行うことです!

文法

では、C言語でネストされたif文をどのように書くか見てみましょう。基本的な構造は以下の通りです:

if (condition1) {
// condition1がtrueの場合に実行するコード
if (condition2) {
// condition1とcondition2が共にtrueの場合に実行するコード
}
else {
// condition1がtrueだがcondition2がfalseの場合に実行するコード
}
}
else {
// condition1がfalseの場合に実行するコード
if (condition3) {
// condition1がfalseだがcondition3がtrueの場合に実行するコード
}
else {
// condition1とcondition3が共にfalseの場合に実行するコード
}
}

初めて見ると少し脅かされるかもしれませんが、心配しないでください。いくつかの例で詳しく説明します!

例1: 温度と湿度

まずは簡単な例から始めましょう。温度と湿度に基づいて服装を提案するプログラムを書きます。

#include <stdio.h>

int main() {
int temperature = 25;
int humidity = 80;

if (temperature > 30) {
if (humidity > 70) {
printf("It's hot and humid. Wear light, breathable clothes.\n");
} else {
printf("It's hot but dry. Wear light clothes and stay hydrated.\n");
}
} else if (temperature > 20) {
if (humidity > 70) {
printf("It's warm and humid. A t-shirt should be fine.\n");
} else {
printf("It's pleasant outside. Enjoy the weather!\n");
}
} else {
printf("It's cool. Consider wearing a light jacket.\n");
}

return 0;
}

この例では、まず温度をチェックします。30°Cを超えている場合、湿度をチェックして「暑くて湿気がある」と「暑いが乾燥している」のいずれかを決定します。温度が20°Cから30°Cの間にある場合、再度湿度をチェックして具体的なアドバイスをします。20°C未満の場合は、軽いジャケットを着ることを提案します。

例2: 成绩計算機

もう少し複雑なことを試みましょう。成績を判定し、さらにプラスまたはマイナスを追加する成績計算機を作成します。

#include <stdio.h>

int main() {
int score = 85;

if (score >= 90) {
if (score >= 97) {
printf("A+\n");
} else if (score >= 93) {
printf("A\n");
} else {
printf("A-\n");
}
} else if (score >= 80) {
if (score >= 87) {
printf("B+\n");
} else if (score >= 83) {
printf("B\n");
} else {
printf("B-\n");
}
} else if (score >= 70) {
if (score >= 77) {
printf("C+\n");
} else if (score >= 73) {
printf("C\n");
} else {
printf("C-\n");
}
} else if (score >= 60) {
if (score >= 67) {
printf("D+\n");
} else if (score >= 63) {
printf("D\n");
} else {
printf("D-\n");
}
} else {
printf("F\n");
}

return 0;
}

このプログラムはまず一般的な成績範囲(A、B、C、D、またはF)を判定し、その後ネストされたif文を使用して適切なプラスまたはマイナスを追加します。成績のロシアンNested dollとでも言えます!

例3: シンプルなアドベンチャーゲーム

少し楽しくなります。ネストされたif文を使用してシンプルなテキストベースのアドベンチャーゲームを作成しましょう。

#include <stdio.h>

int main() {
char direction;
printf("You're at a crossroad. Do you go left (L) or right (R)? ");
scanf(" %c", &direction);

if (direction == 'L' || direction == 'l') {
printf("You've chosen to go left.\n");
printf("You see a river. Do you swim across (S) or look for a bridge (B)? ");
scanf(" %c", &direction);

if (direction == 'S' || direction == 's') {
printf("You swim across and find a treasure chest. You win!\n");
} else if (direction == 'B' || direction == 'b') {
printf("You find a bridge, cross safely, but find no treasure. Game over.\n");
} else {
printf("Invalid choice. The river sweeps you away. Game over.\n");
}
} else if (direction == 'R' || direction == 'r') {
printf("You've chosen to go right.\n");
printf("You encounter a dragon. Do you fight (F) or run (R)? ");
scanf(" %c", &direction);

if (direction == 'F' || direction == 'f') {
printf("You bravely fight the dragon and win! You're a hero!\n");
} else if (direction == 'R' || direction == 'r') {
printf("You run away safely, but without glory. Game over.\n");
} else {
printf("Invalid choice. The dragon eats you. Game over.\n");
}
} else {
printf("Invalid choice. You stand still and nothing happens. Game over.\n");
}

return 0;
}

このゲームはネストされたif文を使用してプレイヤーの選択に基づいて異なるパスを作成します。これはネストされたif文がどのようにして分岐した物語や意思決定ツリーを作成できるかのシンプルなデモンストレーションです。

例4: ログインシステム

最後の例として、ユーザー名とパスワードの両方をチェックする基本的なログインシステムを作成します。

#include <stdio.h>
#include <string.h>

int main() {
char username[20];
char password[20];

printf("Enter username: ");
scanf("%s", username);

if (strcmp(username, "admin") == 0) {
printf("Enter password: ");
scanf("%s", password);

if (strcmp(password, "secretpassword") == 0) {
printf("Login successful. Welcome, admin!\n");
} else {
printf("Incorrect password. Access denied.\n");
}
} else if (strcmp(username, "user") == 0) {
printf("Enter password: ");
scanf("%s", password);

if (strcmp(password, "userpass") == 0) {
printf("Login successful. Welcome, user!\n");
} else {
printf("Incorrect password. Access denied.\n");
}
} else {
printf("Username not found. Access denied.\n");
}

return 0;
}

この例ではまずユーザー名をチェックします。\"admin\"または\"user\"に一致する場合、対応するパスワードをチェックします。これはネストされたif文がどのようにして複数レベルの認証システムを実装できるかを示しています。

結論

ネストされたif文は、あなたのプログラミングツールキットの中で非常に強力なツールです。複数の条件を簡単に処理し、複雑な意思決定構造を作成することができます。ただし、深くネストしすぎないように注意してください。読みにくくなり、メンテナンスが困難になることがあります。プログラミングにおいては、明瞭さとシンプリシティーが鍵です!

このチュートリアルがネストされたif文についての理解を深めるのに役立ったことを願っています。続けて練習してください。間もなくプロのように条件をネストするようになります!未来のプログラマーさんたち、ハッピーコーディング!

Credits: Image by storyset