// calculator.h
#ifndef CALCULATOR_H
#define CALCULATOR_H
// 関数プロトタイプ
int add(int a, int b);
int subtract(int a, int b);
int multiply(int a, int b);
double divide(int a, int b);
#endif // CALCULATOR_H
解説:
ヘッダーファイルでは、計算操作の関数プロトタイプを宣言します。
#ifndefと#defineで多重インクルードを防ぎます。
1.3 ソースファイルの作成
計算操作を実装するソースファイルを作成します:
// calculator.c
#include "calculator.h"
// 加算
int add(int a, int b) {
return a + b;
}
// 減算
int subtract(int a, int b) {
return a - b;
}
// 乗算
int multiply(int a, int b) {
return a * b;
}
// 除算
double divide(int a, int b) {
if (b != 0) {
return (double)a / b;
} else {
return 0.0; // ゼロ除算を回避
}
}
解説:
各関数で基本的な計算操作を実装しています。
除算では、ゼロ除算を避けるための条件を追加しています。
1.4 メインファイルの作成
メインファイルで計算操作を呼び出します:
// main.c
#include
#include "calculator.h"
int main() {
int x = 10, y = 5;
printf("Addition: %d\n", add(x, y));
printf("Subtraction: %d\n", subtract(x, y));
printf("Multiplication: %d\n", multiply(x, y));
printf("Division: %.2f\n", divide(x, y));
return 0;
}
解説:
calculator.hをインクルードして計算操作を使用しています。
各関数を呼び出して結果を表示します。
2. モジュール化の利点
再利用性:モジュール化されたコードは他のプロジェクトでも使用できます。
可読性:コードが分割され、整理されているため理解しやすくなります。
保守性:バグ修正や機能追加が容易です。
3. 練習問題
以下の課題に挑戦して、モジュール化の利点を体感してください。
配列の操作(例:最大値、最小値の検索)を行うモジュールを作成してください。
文字列操作(例:文字列の長さを計算)を行うモジュールを作成してください。
ハノイの塔問題をモジュール化して実装してください。
4. 練習問題の解答と解説
問1の解答
ヘッダーファイル:
// array_utils.h
#ifndef ARRAY_UTILS_H
#define ARRAY_UTILS_H
int findMax(int arr[], int size);
int findMin(int arr[], int size);
#endif // ARRAY_UTILS_H
ソースファイル:
// array_utils.c
#include "array_utils.h"
int findMax(int arr[], int size) {
int max = arr[0];
for (int i = 1; i < size; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
int findMin(int arr[], int size) {
int min = arr[0];
for (int i = 1; i < size; i++) {
if (arr[i] < min) {
min = arr[i];
}
}
return min;
}