Cur: 2009-04-20 (Mon) 23:10:44 SHOO source
With "vote" plugin. at 2012-05-03 (木) 18:38:37
Line 1: Line 1:
 +TITLE:構造体
 +#navi
 +* #01 - 構造体とは [#l86ad3ff]
 +** 概要 [#fa9bac5a]
 +構造体について説明します。
 +構造体というのは、感覚的にはデータをひとまとめにした新しい型を定義すること、に近いと思います。~
 +たとえば、隆志君という人がいたとします。 身長は152cmで、体重は40kgだったとします。~
 +さて、とあるプログラムで、隆志君の身体データが必要になりました。~
 +この人のデータを表すにはどうしたらよいでしょうか?
 +#code(d,nomenu,nonumber,nooutline){{{
 +char[] takashi_name = "隆志".dup;
 +real takashi_tall = 152;
 +real takashi_weight = 40;
 +}}}
 +このように表現しますか?~
 +確かにこれでも出来ますが、隆志君以外にも、健史君のデータ、賢治君のデータ、洋平君のデータ…たくさんの人のデータが必要です、となった場合、この方法では変数の数がとても多くなってしまいますし、普通に非効率的です。~
 +こういう場合に役に立つのが、構造体というものです。~
 +構造体は、この例では名前、身長、体重をひとまとめにした新しい型を定義することができます。
 +
 +** 今回のミソ [#caba801b]
 +- 構造体を使うと、データをひとまとめにすることができる。
 +- 構造体を定義するということは、新しい「型」を定義するということ。
 +
 +
 +
 +
 +* #02 - 構造体の使い方 [#c14d5ad0]
 +** 今回は… [#je81a19c]
 +構造体を実際のコードで使うにはどうしたらよいのでしょうか?~
 +構造体は、まず、関数のように、定義をしなければ使うことができません。~
 +構造体は次のようにして定義します
 +#code(d,nomenu,nonumber,nooutline){{{
 +struct Parson
 +{
 +    // Parson構造体の1つ目のメンバ変数「name」
 +    char[] name;
 +    // Parson構造体の2つ目のメンバ変数「tall」
 +    real tall;
 +    // Parson構造体の3つ目のメンバ変数「weight」
 +    real weight;
 +}
 +}}}
 +これを、関数の外に書くことで構造体を定義することができるようになります。~
 +上記の構造体は、Parsonという名前の構造体で、構造体の保有するデータ(これをメンバ変数という場合もあります)は、名前(name)、身長(tall)、体重(wait)の3つです。 このParson構造体を使用するにはこのようにします。
 +#code(d,nomenu,nonumber,nooutline){{{
 +// Parson型の変数takashiを定義
 +Parson takashi;
 +
 +// 名前をセットします
 +takashi.name = "隆志".dup;
 +// 身長をセットします
 +takashi.tall = 142;
 +// 体重をセットします
 +takashi.weight = 40;
 +
 +// 名前を使用します
 +writeln(takashi.name);
 +// 身長を使用します
 +writeln(takashi.tall);
 +// 体重を使用します
 +writeln(takashi.weight);
 +}}}
 +以下のサンプルコードでは、定義と使用方法を実際のプログラムで確認しますのサンプルコードでは、定義と使用方法を実際のプログラムで確認します。
 +
 +** 今回のミソ [#m7ecfd1f]
 +- 構造体の中のデータのことを、メンバ変数という。
 +- 構造体を定義するには以下のようにする
 +#code(d,nomenu,nonumber,nooutline){{{
 +struct 構造体の名前
 +{
 +    メンバ変数の定義
 +    メンバ変数の定義
 +    メンバ変数の定義
 +    :
 +    :
 +}
 +}}}
 +- 構造体の変数.メンバ変数名 でメンバ変数にアクセスできる。
 +
 +
 +** サンプルコード [#b213b346]
 +#code(d,sample0902p.d);
 +#region(Tango用はこちら){{
 +#code(d,sample0902t.d);
 +}}
 +
 +
 +** 実行結果 [#rfbcc0eb]
 +#code(console){{{
 +隆志
 +142
 +40
 +}}}
 +
 +
 +** まとめ [#d0e59e20]
 +というわけで、構造体の使い方は分ったでしょうか?~
 +あとあと重要性が増してきますので、よくわからなくとも、このようなものがあるということだけは覚えておくといいと思います。~
 +詳しくはオブジェクト指向にかかわってくることで、若干難しくなりますので今回は割愛。
 +
 +
 +
 +
 +* #summary - まとめ [#a2d614c9]
 +** 第09章のミソ [#ga5e2f5d]
 +- 構造体を使うと、データをひとまとめにすることができる。
 +- 構造体を定義するということは、新しい「型」を定義するということ。
 +- 構造体の中のデータのことを、メンバ変数という。
 +- 構造体を定義するには以下のようにする
 +#code(d,nomenu,nonumber,nooutline){{{
 +struct 構造体の名前
 +{
 +    メンバ変数の定義
 +    メンバ変数の定義
 +    メンバ変数の定義
 +    :
 +    :
 +}
 +}}}
 +- 構造体の変数.メンバ変数名 でメンバ変数にアクセスできる。
 +
 +** 宿題 [#a42e584d]
 +10人の国語と英語と数学の点数を集計して、各教科ごとの平均点、個人の平均点をそれぞれ出してください。
 +#code(console){{{
 +1人目
 +名前の入力 : 大原紀夫
 +国語の点数の入力 : 67点
 +英語の点数の入力 : 59点
 +数学の点数の入力 : 60点
 +2人目
 +名前の入力 : 木野誠
 +国語の平均点 : 59点
 +:
 +:
 +結果
 +大原紀夫平均点 : 63点
 +木野誠平均点 : 57点
 +:
 +:
 +国語平均点 : 64.6点
 +英語平均点 : 54.8点
 +数学平均点 : 75.2点
 +}}}
 +
 +
 +** コメント [#r16f386b]
 +今回は構造体について説明しました。~
 +この辺はオブジェクト指向の第一歩になっていきますので、ぜひ使い方を確認しておくといいと思います。~
 +あと、宿題に関して日本語の入力なんぞについて捕捉しますと、Windowsのコンソール画面での日本語の入力はALT+半角/全角で可能となります。Phobosでは日本語の入出力が正しく行われないので、英語オンリーのほうがいいかもしれません。~
 +そんなわけで、宿題できたら、あるいは予想ついたら次にいきましょう~
 +
 +
 +#navi
 +
 +
 +* 投票とコメント [#p024f08f]
 +#vote(#lastvote:206a499f93f4a947869c09788c67c8b7,大変参考になった[1],参考になった,あまり参考にならなかった,まったく参考にならなかった,#notimestamp)
 +#pcomment
  

  • Backup diff of Articles/D言語入門講座/第09章 - 構造体(No. All)
    • Cur: 2009-04-20 (Mon) 23:10:44 SHOO
      • With "vote" plugin. at 2012-05-03 (木) 18:38:37

Front page   Diff Backup Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom) Powered by xpWiki
Counter: 1994, today: 1, yesterday: 0
メインメニュー

ログイン

ユーザー名:


パスワード:





パスワード紛失  |新規登録

Menu