こんにちは､ そしてお帰りなさい｡
本講演では､ 前回の課題を解決するためのデモンストレーションを行いたいと思います｡
そこで､ 構造体を宣言し､ 構造体とその内容を定義して初期化し､
データを読み込んでプリントアウトする方法を紹介したいと思います｡
つまり､ これで構造の基本に親しむことができるのです｡
ここにはコードブロックがあります｡
新しいプロジェクトを作ります｡
そして､ コンソール・アプリケーションという簡単な名前にしています｡
基本構造例と名付けよう｡
そして､ これが我々の主力となるのです｡
私たちはすべて知っています｡
インクルードファイルも2つ作成されるので､ hello worldを削除することにします｡
そこで､ 名前､ 社員ID､ 給料の3つの要素を持つ社員型または社員名の構造体を作ってほしかったのです｡
実は､ 名前､ 入社日､ 給料を作成してほしかったと思うのです｡
つまり､ cで構造体を作るには､ structキーワードを使うだけでいいのです｡
そして､ 他の関数で使えるように､ mainの外側で定義したいと思います｡
グローバルな定義ですが､ 各関数の内部でインスタンスや実際の変数を作成することができるので､
大した問題ではありません｡
そこで､ 構造体と言い､ タグ名を指定します｡
講義を思い出していただくと､ 実はタグ名は任意なのです｡
単一の変数でローカル構造を作成するだけであれば､ タグ名を指定する必要はありません｡
しかし､ これは複数の関数で使われることになるので､ タグ名を用意することにします｡
タグ名としてemployeeを指定し､
左右の中括弧で囲みます｡
自動的にセミコロンを付けてくれます｡
ここに変数名を入れるだけで､ 構造体の定義と同時に変数のインスタンスを作成することもできますが､
ここではそのようなことはしません｡
そこで､ ここでは名前だけを作りたいと思います｡
文字配列になるんです｡
30文字として配置するだけです｡
入社式もあるんですよ｡
入社日はint型であるべきだと言ったと思うのですが｡
しかし､ intや文字配列にすることも可能です｡
文字配列にして､ これも15だけにして､
給料はfloatにします｡
つまり､ ここでやっているのは､ この素敵な構造を作ることなのです｡
構造体は､ 1つの変数にまとめることができるので､
とても便利です｡ また､ 配列と一緒に使えば､ たくさんの要素を格納することができます｡
しかし､ この従業員の構造にデータが関連づけられるようになったのはいいことです｡
さて､ 実際に構造体を使うには､ そのインスタンスを変数として作成する必要があります｡
ここでは､ 構造体である社員型を作成するだけです｡
構造体Employee型を作るには､ structキーワードの後に名前（employee）､
そしてインスタンス名または変数名を付けるだけでよい｡
そして､ ここでは従業員のMikeがいると言っていますが､ 実際には2番目のパラメータを持つことになります｡
引用符の中の日付として定義するので､
2015/7/16とするだけです｡
そして最後に､ 彼らの給料76,909円です｡
かなり儲かっているようです｡
そして､ これをプリントアウトしたいのです｡
14行目で､ ポインタを作っていないことに気がつくと思います｡
つまり､ 社員構造体にアクセスするためには､ ドット修飾子かメンバーアクセスを使えばよいのです｡
そして､ 各変数型に対応した書式指定子（パーセントs､
パーセントs､ パーセントf）を使用するだけです｡
だから､ これはとても簡単なことなんです｡
初期化した構造体の中のデータを出力するには､
改行と書式指定子を発音すればよい｡
繰り返しますが､ 構造体変数にアクセスする方法は､ ドットを使うだけで､
その中の要素が表示されます｡
そして､ 中括弧でコンマで区切って変数を初期化しました｡
では､ これを作ってみて､ どんな出力になるのか見てみましょう｡
初期化した値と同じになるはずです｡
エラーが発生しています｡
従業員IDがないので､ 正しいものを使うようにしなければなりません｡
これはデートです｡
このプログラムにはいろいろなバリエーションがあって､ 日付を使うことにしたんですが､
これもパーセントのSになるんです｡
だから､ 今､ ビルドするときは､ できれば大丈夫であってほしいと願っています｡
で､ これを実行すると､ マイクIDが出るんです｡
その日付を7/16/15に変更させてもらって､ それから私たちの給料も｡
ここで書式設定をするといいかもしれませんね｡
これを入社日に変更したい｡
そして､ 私たちのフォーマットは､ おそらくドット2と言いたいだけなのです｡
そして､ このフォーマットを実行すると､ データ出力は76,909と､
少し良く見えます｡ 00... 7/16 すべて順調です｡
それでは､ キーボードからいくつかの値を読み込んで､ 構造体に格納しましょう｡
同じインスタンスや同じ変数名を使うことは可能です｡
ここでは､ ユーザーにいくつかの情報を入力するように指示するだけです｡
そこで､ printfと言いながら､ 改行を追加していくことにします｡
そして､ 社員情報の入力と言うことになります｡
そして､ 改行､ セミコロンで終了させます｡
そして､ printf nameと言いながら､ このように終了します｡
そして､ 実名を出すことになる｡
すでに何度か使っているので､ getを使うことにします｡
scanfを使ってみよう｡
パーセントsと言い､ 従業員名を読み込むことになります｡
だから､ ここは社員だけでいいんです｡ の名前で､ これは文字配列なので､
アドレスを用意する必要はない｡
そして､ printfと言うことになります｡
名前を入力した後､ printf......改行を追加すると言うことです｡
そして､ 今回は採用日ということで｡
そして､ 今度はscanfをするときに､ floatの場合はpercent
d､ 実際にはpercent fをすることにしています｡
そして､ 今回はoperatorのアドレスが必要です｡
これはポインタではなく､ scanf関数がポインタを取るので､
単にemployeeと言えばいいのです｡ 従業員採用日の権利または日付｡
そして､ 給与をプリントアウトして､ 給与を入力するように指示したいのです｡
そのために改行が欲しいのですが､ scanfで読み込んで､ 日付はパーセントsで､
給料はパーセントfにしたいのです｡
そして､ 日付がまた間違っています｡ 日付のアンパサンドは､ 文字バッファなので必要ありません｡
給料のアンパサンドが必要なんだ､ そんな感じで｡
改行を加えて､ もう少し読みやすくしたり､ コメントを入れたりしてもいいかもしれませんね｡
そして､ その情報をプリントアウトしたいだけなのです｡
今までと同じようにプリントアウトすればいいんです｡
そこで､ 16行目､ 18行目をコピー＆ペーストすることができました｡
control+c､ control+vをするだけです｡ そして今､ 私たちは元気です｡
作ってみて､ 自分の位置を確認しよう｡
つまり､ 最初に実行されるのは､ ハードコーディングされた情報､ あるいは初期化された情報を出力することです｡
そして､ いくつかの情報を入力します｡
だから､ 僕の名前はジェイソンと言うことにしている｡
入社日は､ 10年8月9日とする｡
そして給料ですが､ 32,000円とします｡
そして､ Jason 8/9/10, 32,000とプリントアウトされるのです｡
このように､ 構造体を作るには､ まずグローバルに定義し､
そのインスタンスや変数型を作り､ 情報を出力したり､
データを入力したりします｡ データを入力するときは､
アンパサンドやアドレス演算子を使うことを意識してください｡
また､ 他の例では､ 文字配列のためにそのようなことをする必要はありません｡
その解決策をZIPファイルとして提供します｡
がんばってください！必要なら質問してください｡
ありがとうございます｡