Sponsored Link
 
>>  Main > Programing > Primary > 0009

D言語入門 第09章 - 構造体

#01 - 構造体とは

概要

構造体について説明します。
構造体というのは、感覚的にはデータをひとまとめにした新しい型を定義すること、に近いと思います。
たとえば、隆志君という人がいたとします。 身長は152cmで、体重は40kgだったとします。
さて、とあるプログラムで、隆志君の身体データが必要になりました。
この人のデータを表すにはどうしたらよいでしょうか?
char[] takashi_name = "隆志".dup; real takashi_tall = 152; real takashi_weight = 40; このように表現しますか?
確かにこれでも出来ますが、隆志君以外にも、健史君のデータ、賢治君のデータ、洋平君のデータ…たくさんの人のデータが必要です、となった場合、この方法では変数の数がとても多くなってしまいますし、普通に非効率的です。
こういう場合に役に立つのが、構造体というものです。
構造体は、この例では名前、身長、体重をひとまとめにした新しい型を定義することができます。

今回のミソ

  • 構造体を使うと、データをひとまとめにすることができる。
  • 構造体を定義するということは、新しい「型」を定義するということ。

#02 - 構造体の使い方

今回は…

構造体を実際のコードで使うにはどうしたらよいのでしょうか?
構造体は、まず、関数のように、定義をしなければ使うことができません。
構造体は次のようにして定義します
struct Parson
{
    // Parson構造体の1つ目のメンバ変数「name」
    char[] name;
    // Parson構造体の2つ目のメンバ変数「tall」
    real tall;
    // Parson構造体の3つ目のメンバ変数「weight」
    real weight;
}
これを、関数の外に書くことで構造体を定義することができるようになります。
上記の構造体は、Parsonという名前の構造体で、構造体の保有するデータ(これをメンバ変数という場合もあります)は、名前(name)、身長(tall)、体重(wait)の3つです。 このParson構造体を使用するにはこのようにします。 // Parson型の変数takashiを定義
Parson takashi;

// 名前をセットします
takashi.name = "隆志".dup;
// 身長をセットします
takashi.tall = 142;
// 体重をセットします
takashi.weight = 40;

// 名前を使用します
writefln(takashi.name);
// 身長を使用します
writefln(takashi.tall);
// 体重を使用します
writefln(takashi.weight);
以下のサンプルコードでは、定義と使用方法を実際のプログラムで確認します。

今回のミソ

  • 構造体の中のデータのことを、メンバ変数という。
  • struct 構造体の名前{ メンバ変数の定義 } というようにして構造体を定義する
  • 構造体の変数.メンバ変数名 でメンバ変数にアクセスできる。

サンプルコード

// writefln を使うため。
import std.stdio;

// Parson構造体の定義
struct Parson
{
    // Parson構造体の1つ目のメンバ変数「name」
    char[] name;
    // Parson構造体の2つ目のメンバ変数「tall」
    real tall;
    // Parson構造体の3つ目のメンバ変数「weight」
    real weight;
}

// main関数
int main(char[][] args)
{
    // Parson型の変数takashiを定義
    Parson takashi;
    
    // 名前をセットします
    takashi.name = "隆志".dup;
    // 身長をセットします
    takashi.tall = 142;
    // 体重をセットします
    takashi.weight = 40;
    
    // 名前を使用します
    writefln(takashi.name);
    // 身長を使用します
    writefln(takashi.tall);
    // 体重を使用します
    writefln(takashi.weight);
    
    // 正常終了
    return 0;
}

実行結果

隆志
142
40

まとめ

というわけで、構造体の使い方は分ったでしょうか?
あとあと重要性が増してきますので、よくわからなくとも、このようなものがあるということだけは覚えておくといいと思います。
詳しくはオブジェクト指向にかかわってくることで、若干難しくなりますので今回は割愛。

#summary - まとめ

第09章のミソ

  • 構造体を使うと、データをひとまとめにすることができる。
  • 構造体を定義するということは、新しい「型」を定義するということ。
  • 構造体の中のデータのことを、メンバ変数という。
  • struct 構造体の名前{ メンバ変数の定義 } というようにして構造体を定義する
  • 構造体の変数.メンバ変数名 でメンバ変数にアクセスできる。

宿題

10人の国語と英語と数学の点数を集計して、各教科ごとの平均点、個人の平均点をそれぞれ出してください
1人目
名前の入力 : 大原紀夫
国語の点数の入力 : 67点
英語の点数の入力 : 59点
数学の点数の入力 : 60点
2人目
名前の入力 : 木野誠
国語の平均点 : 59点
:
:
結果
大原紀夫平均点 : 63点
木野誠平均点 : 57点
:
:
国語平均点 : 64.6点
英語平均点 : 54.8点
数学平均点 : 75.2点

コメント

今回は構造体について説明しました。
この辺はオブジェクト指向の第一歩になっていきますので、ぜひ使い方を確認しておくといいと思います。
そんなわけで、宿題できたら、あるいは予想ついたら次にいきましょう~

ページトップ / 目次 / 次へ
Copyright©SHOO All rights reserved. / LastModified : 2007/12/12(水)[05:51:54]