ファイルな話 続き

前回、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

練習してみてください