【C言語】第5章第10回:モジュール化されたプログラムの例
モジュール化されたプログラムの設計と実装を学ぶことで、コードの効率的な管理と再利用が可能になります。この章では、モジュール化を活用した具体的なプログラム例を紹介します。
1. モジュール化の基本例:計算機プログラム
1.1 プログラム概要
この例では、基本的な計算(加算、減算、乗算、除算)を行う計算機プログラムをモジュール化して実装します。
1.2 ヘッダーファイルの作成
計算機の操作を定義するヘッダーファイルを作成します:
// 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;
}
メインファイル:
// main.c
#include
#include "array_utils.h"
int main() {
int numbers[] = {3, 7, 2, 9, 4};
int size = sizeof(numbers) / sizeof(numbers[0]);
printf("Maximum: %d\n", findMax(numbers, size));
printf("Minimum: %d\n", findMin(numbers, size));
return 0;
}
5. まとめ
モジュール化されたプログラムの設計を習得することで、大規模なプロジェクトでも効率的にコードを管理できます。次回は、さらに高度なモジュール設計のコツについて学びます。