プログラミング演習II 2003年12月10日(第7回) 木村巌.

Slides:



Advertisements
Similar presentations
構造体 構造体とは? 複数のデータをパックしたもの。 新しい “ 型 “ として使用できる. 構造体 キーワード struct strcut は構造体を宣言する命令。 struct { double x,y; }a,b,c; ↑ ここまでが宣 言 ← この形式で、構造体 a,b,c, を定 義.
Advertisements

第 10 回 宿題 出題日: 12 月 14 日 締切日: 12 月 21 日. 提出について 以下の場合は、出題日の出席を欠席とする 締切日を過ぎた場合 正解率が 7 割未満の場合 提出は、 PDF ファイルを印刷して、それに答 えを書いて提出すること。
C 言語講座第 5 回 構造体. 構造体とは ... 異なる型の値をまとめて新しい型とする 機能がある . つまり , 複数の変数を 1 つのまとまりにできる . 配列と違って同じ型でデータをまとめるのではな く違った型のデータをまとめられる .
理化学研究所 第 10 回 構造体 半田利弘 鹿児島大学 大学院理工学研究科 物理・宇宙専攻 鹿児島大学 プログラミング基礎演習.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
5.データ構造入門 5-1.連結リスト(Linked List) 5-2.スタック(Stack) 5-3.キュー(Queue)
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
第12回新しい型と構造体.
データ構造とアルゴリズム 第10回 mallocとfree
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
画像ファイル(ppm)の読み書き 画像データ用のメモリ確保・解放
プログラミング演習Ⅱ 第12回 文字列とポインタ(1)
プログラミング言語論 第6回 型 情報工学科 篠埜 功.
プログラミング演習II 2004年10月19日(第1回) 理学部数学科・木村巌.
2007/1/18 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
第8回 プログラミングⅡ 第8回
構造体.
プログラミング演習II 2004年12月 21日(第8回) 理学部数学科・木村巌.
情報処理Ⅱ 2007年12月10日(月).
アルゴリズムとデータ構造 第2回 線形リスト(復習その2).
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
画像ファイル(ppm)の読み書き 画像データ用のメモリ確保・解放
第3回 配列,構造体,ポインタ ~ データ構造について学ぶための基礎~
プログラミング 3 構造体(1).
第10回 プログラミングⅡ 第10回
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
データ構造とアルゴリズム 第4回 リスト ~ データ構造(1)~.
関数の定義.
精密工学科プログラミング基礎 第10回資料 (12/18実施)
プログラミング 4 記憶の割り付け.
プログラミング演習I 2003年6月25日(第10回) 木村巌.
2005年度 データ構造とアルゴリズム 第3回 「C言語の復習:再帰的データ構造」
プログラミング演習I 2003年5月7日(第4回) 木村巌.
プログラミング 3 構造体(2).
メモリの準備 メモリには、その準備の方法で2種類ある。 静的変数: コンパイル時にすでにメモリのサイズがわかっているもの。 普通の変数宣言
プログラミング入門2 第11回 情報工学科 篠埜 功.
プログラミング入門2 第11回 情報工学科 篠埜 功.
第7回 プログラミングⅡ 第7回
第11回 プログラミングⅡ 第11回
プログラミング演習I 2004年5月19日(第5回) 理学部数学科・木村巌.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
精密工学科プログラミング基礎Ⅱ 第5回資料 今回の授業で習得してほしいこと: 構造体 (教科書 91 ページ)
構造体と共用体.
データ構造とアルゴリズム 第11回 リスト構造(1)
プログラミング演習I 2003年4月30日(第3回) 木村巌.
プログラミング 3 2 次元配列.
プログラミング演習I 2003年7月2日(第11回) 木村巌.
ポインタとポインタを用いた関数定義.
情報基礎演習B 後半第2回 担当 岩村 TA 谷本君.
ネットワーク・プログラミング Cプログラミングの基礎.
オブジェクト指向言語論 第二回 知能情報学部 新田直也.
全体の流れ 画像ファイルを開き,画像データをメモリ上にロード メモリ上にロードした画像データに処理を加える
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
プログラミング演習I 2003年6月11日(第9回) 木村巌.
2005年度 データ構造とアルゴリズム 第2回 「C言語の復習:配列」
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
プログラミング演習II 2004年11月 16日(第5回) 理学部数学科・木村巌.
プログラミング演習II 2003年11月19日(第6回) 木村巌.
プログラミング演習II 2004年11月 2日(第3回) 理学部数学科・木村巌.
プログラミング入門2 第5回 配列 変数宣言、初期化について
情報処理Ⅱ 小テスト 2005年2月1日(火).
C言語講座第5回 2017 構造体.
プログラミング演習II 2003年10月29日(第2,3回) 木村巌.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
Presentation transcript:

プログラミング演習II 2003年12月10日(第7回) 木村巌

今日やること 構造体、構造体のポインタ、typedef

復習 前回は、正負の整数の加減算を実装した

構造体(structure) 教科書11章 異なる型を一つに集約する 配列は、同じ型の値のみ保持できるのだった

構造体の宣言 struct tag名 { 型名 メンバ1; 型名 メンバ2; ……. };

構造体の例 struct mpi { int dim; long *digits; }; struct mpi a;

構造体のメンバへのアクセス struct mpi a; /* の時は */ a.dim; a.digits;

構造体へのポインタ 任意の型Tに対して、Tへのポインタ型があるのだった 構造体についても、構造体へのポインタが存在する.たとえば、 struct mpi { long dim; long *digits; } *a; /* aはmpiというタグ名の構造体へのポインタ*/

構造体の動的な生成 構造体をプログラムに静的に書き込んでおくのではなく、プログラムの実行中に生成することができる malloc()で必要なサイズのメモリを確保して、目的とする構造体のポインタへキャストする.

構造体の動的な生成(例) mpiへのポインタaは、前のスライドのように宣言されているとする. a = (struct mpi*) malloc (sizeof (struct mpi))); /* 構造体mpiが収まるサイズのメモリを確保 */ (malloc()のエラーチェックは省いている) 構造体のメンバの設定などについては、プログラム例mpistruct.cも参照の事

型宣言、構造体へのポインタ 教科書11.2, 11.3 プログラム例mpistruct.c

型の定義(typedef) C言語の型システムに、新たに型を追加することができる typedefの使い方: 例 typedef long *long_ptr; longへのポインタを、long_ptrという新たな型として追加

構造体のポインタを新たな型とする 上のように定義した構造体mpiを指すポインタを、新たな型として定義する: typedef struct mpi *mpi_t; これで、long, doubleのような組込型同様に、mpi_tも使うことができる. (ただし、mpi_t型の変数は、使う前にメモリを確保し、各メンバーを初期化する必要がある.関数mpi_init()参照)

レポート課題 前回3分割した、 を、従来のlong *によるmpiではなく、今日説明したmpi_tに変更すること main.c (main()関数のみを含む) mpilib.h (プロトタイプ宣言やdefineを含む) mpilib.c (実際の関数定義などを含む) を、従来のlong *によるmpiではなく、今日説明したmpi_tに変更すること コンパイルして、実行した様子も示せ

レポート課題提出要領 2003年12月16日(火)一杯に、木村までメールで送ること.アドレスはiwao@sci.toyama-u.ac.jp 添付ファイルではなく、できるだけメール本文にレポート本文を記載してください. 文献や友人のレポートを参考にした場合は、それを明記のこと.