関数の使用を練習する
この最後のステップでは、C 言語における関数に関する学んだことすべてを、複数の関数の型と使用方法を示す包括的なプログラムを作成することで適用します。
~/project
ディレクトリに calculator.c
という名前のファイルを作成しましょう。
cd ~/project
touch calculator.c
次に、さまざまな関数を持つ単純な電卓を実装するプログラムを書きましょう。
#include <stdio.h>
// 2 つの数を加算する関数
int add(int a, int b) {
return a + b;
}
// 2 つの数を減算する関数
int subtract(int a, int b) {
return a - b;
}
// 2 つの数を乗算する関数
int multiply(int a, int b) {
return a * b;
}
// エラー処理付きで 2 つの数を除算する関数
float divide(int a, int b) {
if (b == 0) {
printf("Error: Division by zero!\n");
return 0;
}
return (float)a / b;
}
// 電卓のメニューを表示する void 関数
void display_menu() {
printf("\n--- Simple Calculator ---\n");
printf("1. Addition\n");
printf("2. Subtraction\n");
printf("3. Multiplication\n");
printf("4. Division\n");
printf("5. Exit\n");
printf("Enter your choice: ");
}
int main() {
int choice, num1, num2;
float result;
while (1) {
display_menu();
scanf("%d", &choice);
// 終了条件
if (choice == 5) {
printf("Goodbye!\n");
break;
}
// 選択肢の妥当性を検証
if (choice < 1 || choice > 4) {
printf("Invalid choice. Try again.\n");
continue;
}
// ユーザー入力を取得
printf("Enter two numbers: ");
scanf("%d %d", &num1, &num2);
// ユーザーの選択に基づいて計算を実行
switch (choice) {
case 1:
result = add(num1, num2);
printf("Result: %d + %d = %d\n", num1, num2, (int)result);
break;
case 2:
result = subtract(num1, num2);
printf("Result: %d - %d = %d\n", num1, num2, (int)result);
break;
case 3:
result = multiply(num1, num2);
printf("Result: %d * %d = %d\n", num1, num2, (int)result);
break;
case 4:
result = divide(num1, num2);
printf("Result: %d / %d = %.2f\n", num1, num2, result);
break;
}
}
return 0;
}
重要な概念を分解してみましょう。
- 複数の関数の型が使用されています (戻り値、void 関数)。
- 関数は特定の数学的演算を行います。
display_menu()
はメニューを表示する void 関数です。
- 算術関数は計算結果を返します。
main()
関数はメニュー駆動の電卓を実装しています。
- ゼロ除算に対するエラー処理が含まれています。
- 演算を選択するために
switch
文が使用されています。
プログラムをコンパイルして実行しましょう。
gcc calculator.c -o calculator
./calculator
実行例:
--- Simple Calculator ---
1. Addition
2. Subtraction
3. Multiplication
4. Division
5. Exit
Enter your choice: 1
Enter two numbers: 10 5
Result: 10 + 5 = 15
--- Simple Calculator ---
...
Enter your choice: 5
Goodbye!
関数の使用に関する重要なポイント:
- さまざまな関数の型を組み合わせる。
- 関数を使って複雑な問題を分解する。
- エラー処理を実装する。
- モジュラーで再利用可能なコードを作成する。