プログラミング 3 構造体(1).

Slides:



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

第 10 回 宿題 出題日: 12 月 14 日 締切日: 12 月 21 日. 提出について 以下の場合は、出題日の出席を欠席とする 締切日を過ぎた場合 正解率が 7 割未満の場合 提出は、 PDF ファイルを印刷して、それに答 えを書いて提出すること。
プログラミング入門2 芝浦工業大学情報工学科青木 義満 第11回構造体. プログラミング入門2 2 構造体 5 人分のサッカー選手データ 全てのデータを関数に渡して,処理する場合 char name[5][256]; int assist[5]; int score[5]; void func( char.
C 言語講座第 5 回 構造体. 構造体とは ... 異なる型の値をまとめて新しい型とする 機能がある . つまり , 複数の変数を 1 つのまとまりにできる . 配列と違って同じ型でデータをまとめるのではな く違った型のデータをまとめられる .
C 言語講座 第 7 回 ポインター. メモリとアドレス(ポインターの前 に) コンピュータのメモリには 1 バイトずつ 0 番地、 1 番地、 2 番地・・・というように 住所が割り当てられている この住所をアドレスという。 メモリはデータをしまうもので それを引き出すためには メモリに番号(アドレス)を振っておけばよいな.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
初年次セミナー 第8回 データの入力.
プログラミング演習II 2004年11月 30日(第6回) 理学部数学科・木村巌.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
第12回新しい型と構造体.
第13回構造体.
ファーストイヤー・セミナーⅡ 第8回 データの入力.
課題解説: 関数の引数にポインタを使って2数を入れ替える
第12回構造体.
プログラミング入門2 ポインタについて補足 構造体 第11回 芝浦工業大学情報工学科 青木 義満、篠埜 功
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
構造体.
プログラミング演習II 2004年12月 21日(第8回) 理学部数学科・木村巌.
第16章 構造体 16.1 構造体の定義と構造体変数 16.2 構造体の配列.
第16章 構造体 16.1 構造体の定義と構造体変数 16.2 構造体の配列.
演習問題の答え #include #include #define NUM 5 typedef struct { // 構造体の定義 float shincho; // 身長 float taiju; // 体重 } shintai; void hyouji(shintai.
構造体 プログラミング入門2 芝浦工業大学情報工学科 青木 義満
構造体 構造体, 構造体とポインタの組み合わせ,.
第10回 プログラミングⅡ 第10回
第16章 構造体 16.1 構造体の定義と構造体変数 16.2 構造体の配列.
C言語講座 第3回 ポインタ、配列.
プログラミング論 関数ポインタ と 応用(qsort)
第11回 宿題 出題日:12月21日 締切日:1月7日(木).
精密工学科プログラミング基礎 第10回資料 (12/18実施)
プログラミング 4 記憶の割り付け.
2005年度 データ構造とアルゴリズム 第3回 「C言語の復習:再帰的データ構造」
プログラミング 3 構造体(2).
プログラミング入門2 第11回 情報工学科 篠埜 功.
プログラミング入門2 第11回 情報工学科 篠埜 功.
第7回 プログラミングⅡ 第7回
地域情報学 C言語プログラミング 第5回 ポインタ、関数、ファイル入出力 2017年11月17日
第11回 プログラミングⅡ 第11回
整数データと浮動小数データ.
型の compatibility とポインタ演算
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
メモリとメモリアドレス, ポインタ変数,関数へのポインタ渡し
精密工学科プログラミング基礎Ⅱ 第5回資料 今回の授業で習得してほしいこと: 構造体 (教科書 91 ページ)
C言語 はじめに 2016年 吉田研究室.
構造体と共用体.
データ構造とアルゴリズム 第11回 リスト構造(1)
プログラミング 3 2 次元配列.
ポインタとポインタを用いた関数定義.
情報処理Ⅱ 第2回 2005年10月14日(金).
情報処理Ⅱ 第2回 2006年10月13日(金).
ネットワーク・プログラミング Cプログラミングの基礎.
高度プログラミング演習 (11).
精密工学科プログラミング基礎 第7回資料 (11/27実施)
プログラミング論 構造体
cp-3. 計算 (C プログラミング演習,Visual Studio 2019 対応)
プログラミング 4 文字列.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
精密工学科プログラミング基礎Ⅱ 第2回資料 今回の授業で習得してほしいこと: 配列の使い方 (今回は1次元,次回は2次元をやります.)
四則演算,変数 入力文,出力文,代入文, ライブラリ関数
プログラミング演習II 2003年12月10日(第7回) 木村巌.
プログラミング基礎a 第5回 C言語によるプログラミング入門 配列と文字列
マスク合成(のような処理) 出力画像 Out 入力画像1 In1 In1 In2 Out 入力画像2 In
左右反転と180度回転 [0][xsize – 1] [0][0] → i ↓ j [ysize – 1][xsize – 1]
プログラミング入門2 第5回 配列 変数宣言、初期化について
情報処理Ⅱ 小テスト 2005年2月1日(火).
第14章 ファイル操作 14.1 ファイルへの書き込み 14.2 ファイルからの読み込み 14.3 ファイルへの追加書き込み
C言語講座第5回 2017 構造体.
プログラミング 3 ポインタ(1).
高度プログラミング演習 (10).
プログラミング 2 静的変数.
Presentation transcript:

プログラミング 3 構造体(1)

配列と構造体 配列:一連の変数を数で呼び分ける 構造体:一連の変数を名前で呼び分ける

構造体 ひとつの変数(構造体)が,1 つ以上の名前の付いた 変数から構成されている 構造体を構成するそれぞれの変数をメンバという 住所カードのようなものを思い浮かべるとよい 連絡先カード 氏名 …… 住所 電話番号 メールアドレス

構造体の作り方(1) 構造体は,使う前に,「どんな名前の変数から構成さ れるか」と「型名」を定義する 例:実部 re と虚部 im をそれぞれ double 型で持つ 構造体(複素数を表すつもり)cplx struct cplx { double re; double im; }; これにより,メンバ re と im を持つ「struct cplx」型が作 られる 構造体の定義はプログラムの関数より前で行うことが多い

構造体の作り方(2) 型が作られた構造体は通常の変数と同じように宣言・ 定義できる struct cplx x; これで「struct cplx」型の x が作られる 構造体内のメンバは,「構造体名.メンバ名」でアク セスする x.re = 1.0; x.im = -2.0; . 演算子は助詞の「の」だと思おう 一度にひとつのメンバしか代入できない(一括代入はできな い) 初期化するときは,一括で値をセットすることができる struct cplx y = { -2.0, 3.0 };

構造体の使い方(1) struct cplx 型で表される複素数 x,y,z について, x と y の和を z に代入 z.re = x.re + y.re; z.im = x.im + y.im; 「z = x + y;」のように一度に計算はできない(「複素数で ある」という「意味」は作った人間が勝手に思い込んでいる だけ) 「構造体そのもの」についての演算は限られる =:代入(すべてのメンバを同時に代入できる) &:アドレスを得る .:メンバをたどる 四則演算や比較はできない(特に ==,!=)ので注意

構造体の使い方(2) scanf() 関数で読み込むとき scanf(“%lf%lf”, &x.re, &x.im); printf() 関数で出力させるとき printf(“%f + %fi”, x.re, x.im); 構造体いっぺんに出力させる方法はない(メンバごとに出力 させる)

構造体と関数(1) 構造体を受け取る,構造体を返す関数が作れる 複素数の実部を返す関数 double real(struct cplx x) { return x.re; } 複素数の虚部を返す関数 double imaginary(struct cplx x) { return x.im; }

構造体と関数(2) 2 つの複素数の和を返す関数 struct cplx add(struct cplx x, struct cplx y) { struct cplx z; z.re = x.re + y.re; z.im = x.im + y.im; return z; }

構造体の配列 構造体の配列も作れる struct cplx x[10]; 要素番号を指定して,メンバを指定する 「x[0].re = 1.0;」など

typedef 宣言(1) 型の名前に別名を与える宣言 書き方 構造体は型名が長くなるので,短くするのに重用される まず変数宣言を書く int seisuu; その前に typedef を付ける typedef int seisuu; すると,変数宣言の型名(int)に別名(seisuu)が与えられ る →seisuu 型が int 型の別名になる その後, seisuu a; のように変数が宣言できる

typedef 宣言(2) ポインタの例 typedef int *pInt; pInt 型が int * 型の別名になる 構造体の例 typedef struct cplx Cplx; Cplx 型が struct cplx 型の別名になる→型名が短くなった! 構造体の場合,定義の後すぐに別名を宣言することが多い