ファイルな話 続き
前回、C言語での構造体レコードの簡単なプログラムを紹介しました。
そこで、StaffDisplay()という関数を紹介しました。
関数を追加すると、以下のようになります。
#include <iostream>
#define Staff_Max 2//社員数
using namespace std;
//社員情報表示
void StaffDisplay(void);
int main(void){
//社員情報の表示
staffDisplay();
return 0;
}
//社員情報表示関数
void StaffDisplay(void){
//社員レコードの定義
struct StaffSt{
int no; //社員番号
char name[20];//氏名
int salary; //給料
};
//社員情報初期化
struct StaffSt staffrec[Staff_Max]={
{1,"かめ",200000},
{2,"うさぎ",100000}
};
for(int i=0; i< Staff_Max; ++i){
cout << "--社員レコード--" << endl;
cout << "社員番号 “ << staffrec[i].no << endl;
cout << "社員名 " << staffrec[i].name << endl;
cout << "給料" << staffrec[i].salary << endl;
}
}
はい、以上のようになりますが
まだ、あります。
次は、プログラム分割です。
関数化できると分割が可能になります。
メイン関数とサブ関数のプログラムにわけます。
そのときに、ヘッダーを追加するとあとあとその関数を使うときに
超便利となります。
プログラム名は
StaffDisplay.cppとStaffDisplay.hです
なお、ヘッダーにはデータはいれられないので、原則ですが
社員レコードの型の定義と
関数名をヘッダーにいれます。
StaffDisplay.h
struct StaffSt{
int no;//社員番号
char name[20];//社員名
int salary;//給料
};
void StaffDisplay(void);
StaffDisplay.cpp
#include "StaffDisplay.h"
#include <iostream>
#define Staff_Max 2 //社員数
using namespace std;
void StaffDisplay(void){
上記の内容に同じ
}
//メイン関数
main.cpp
#include "StaffDisplay.h"
int main(void){
//社員レコードの表示
StaffDisplay();
return 0;
}
以上ですが、関数化したときより
さらに、プログラムを分割すると
メイン関数が、シンプルになったというのが
わかります。
また、分割することにより、再利用の可能性があがります。
関数がより、汎用的になるということです。
経験の部分もありますので、
このコンソールアプリ プロジェクト名Staff
練習してみてください