バイオプログラミング第一 - github pages · 2020-07-06 · 構造体...

19
バイオプログラミング第一 榊原 康文、佐藤 健吾 慶應義塾大学理工学部 生命情報学科

Upload: others

Post on 11-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: バイオプログラミング第一 - GitHub Pages · 2020-07-06 · 構造体 データ型の異なる複数のデータを1つにまとめ,1個の 変数のようにして扱うためのデータ型

バイオプログラミング第一

榊原 康文、佐藤 健吾

慶應義塾大学理工学部 生命情報学科

Page 2: バイオプログラミング第一 - GitHub Pages · 2020-07-06 · 構造体 データ型の異なる複数のデータを1つにまとめ,1個の 変数のようにして扱うためのデータ型

構造体

データ型の異なる複数のデータを1つにまとめ,1個の

変数のようにして扱うためのデータ型

例えば,1人の生徒のデータは

u名前

u入学年度

u学科

u学籍番号

u身長

u体重

文字配列

int型

char型

int型

float型

float型

Page 3: バイオプログラミング第一 - GitHub Pages · 2020-07-06 · 構造体 データ型の異なる複数のデータを1つにまとめ,1個の 変数のようにして扱うためのデータ型

構造体(1) 構造体の定義

構造体の「型の定義」 + 構造体の「変数の宣言」

① 構造体の型定義

struct 【構造体タグ名】{【データ型】 【メンバ名1】;【データ型】 【メンバ名2】;

・・・【データ型】 【メンバ名n】;

};

② 構造体変数の宣言

struct 【構造体タグ名】 【構造体変数名】;

Page 4: バイオプログラミング第一 - GitHub Pages · 2020-07-06 · 構造体 データ型の異なる複数のデータを1つにまとめ,1個の 変数のようにして扱うためのデータ型

構造体

(1) 構造体の定義

例)

struct DATE_DATA{

int year;

int month;

int day;

};

struct DATE_DATA dx;

型定義

変数宣言

Page 5: バイオプログラミング第一 - GitHub Pages · 2020-07-06 · 構造体 データ型の異なる複数のデータを1つにまとめ,1個の 変数のようにして扱うためのデータ型

構造体

(1) 構造体の定義

struct DATE_DATA{

int year;

int month;

int day;

};

struct DATE_DATA dx;

year month day

dx

int型 int型 int型

dx.year dx.month dx.day

Page 6: バイオプログラミング第一 - GitHub Pages · 2020-07-06 · 構造体 データ型の異なる複数のデータを1つにまとめ,1個の 変数のようにして扱うためのデータ型

構造体

(1) 構造体の定義

③ 構造体の型定義と変数の同時宣言

struct 【構造体タグ名】

【データ型】 【メンバ名1】;

【データ型】 【メンバ名2】;

・・・

【データ型】 【メンバ名n】;

} 【構造体変数名】;

Page 7: バイオプログラミング第一 - GitHub Pages · 2020-07-06 · 構造体 データ型の異なる複数のデータを1つにまとめ,1個の 変数のようにして扱うためのデータ型

構造体

(1) 構造体の定義

例)

struct DATE_DATA{

int year;

int month;

int day;

} dx;

③ 構造体の型定義と変数の同時宣言

struct DATE_DATA{

int year;

int month;

int day;

};

struct DATE_DATA dx;

Page 8: バイオプログラミング第一 - GitHub Pages · 2020-07-06 · 構造体 データ型の異なる複数のデータを1つにまとめ,1個の 変数のようにして扱うためのデータ型

構造体

(2) 構造体の参照,代入

【構造体変数名】.【メンバ名】

ピリオド

struct DATE_DATA{

int year;

int month;

int day;

};

struct DATE_DATA dx;

dx.year=2006;dx.month=5;dx.day=24;y=dx.year;

Page 9: バイオプログラミング第一 - GitHub Pages · 2020-07-06 · 構造体 データ型の異なる複数のデータを1つにまとめ,1個の 変数のようにして扱うためのデータ型

構造体

struct DATE_DATA{

int year;

int month;

int day;

};

struct DATE_DATA dx;

year month day

dx

int型 int型 int型

dx.year dx.month dx.day

Page 10: バイオプログラミング第一 - GitHub Pages · 2020-07-06 · 構造体 データ型の異なる複数のデータを1つにまとめ,1個の 変数のようにして扱うためのデータ型

プログラム例

#include <stdio.h>#include <string.h>int main(void)

{struct STUDENT_DATA{int ent_year;char dept;int id;char name[20];float height;float weight;

};

struct STUDENT_DATA x;

x.ent_year=2002;x.dept=’L’;x.id=110;strcpy(x.name,”Sakakibara”);x.height=180.0;x.weight=72.5;

return 0;}

(左から続く)

Page 11: バイオプログラミング第一 - GitHub Pages · 2020-07-06 · 構造体 データ型の異なる複数のデータを1つにまとめ,1個の 変数のようにして扱うためのデータ型

構造体

ent_year dept id

int型 char型 int型

struct STUDENT_DATA x;

char型 float型 float型

name[20] height weight

x.ent_year x.dept x.id x.name[20] x.height x.weight

Page 12: バイオプログラミング第一 - GitHub Pages · 2020-07-06 · 構造体 データ型の異なる複数のデータを1つにまとめ,1個の 変数のようにして扱うためのデータ型

構造体

(3) 構造体の初期化

struct 【構造体タグ名】 【構造体変数名】={初期値,・・・};

struct DATE_DATA{

int year;

int month;

int day;

};

struct DATE_DATA dx={2006,5,24};

構造体のメンバの先頭から順番に値が代入される

Page 13: バイオプログラミング第一 - GitHub Pages · 2020-07-06 · 構造体 データ型の異なる複数のデータを1つにまとめ,1個の 変数のようにして扱うためのデータ型

構造体(4) 構造体の中の構造体

例1) struct PERSON{char name[20];struct DATE_DATA{int year;int month;int day;

} birth;float height;float weight;

};

構造体のメンバに構造体を使うことができる

① 宣言

Page 14: バイオプログラミング第一 - GitHub Pages · 2020-07-06 · 構造体 データ型の異なる複数のデータを1つにまとめ,1個の 変数のようにして扱うためのデータ型

構造体(4) 構造体の中の構造体

例2) struct DATE_DATA{int year;int month;int day;

};

① 宣言

struct PERSON{char name[20];struct DATE_DATA birth;float height;float weight;

};

Page 15: バイオプログラミング第一 - GitHub Pages · 2020-07-06 · 構造体 データ型の異なる複数のデータを1つにまとめ,1個の 変数のようにして扱うためのデータ型

構造体(4) 構造体の中の構造体

struct PERSON x;

x.birth.year=1960;x.birth.month=5;x.birth.day=13;y=x.birth.year;

② 代入,参照

例)

struct PERSON{char name[20];struct DATE_DATA{int year;int month;int day;

} birth;float height;float weight;

};

ピリオドを2回使う

Page 16: バイオプログラミング第一 - GitHub Pages · 2020-07-06 · 構造体 データ型の異なる複数のデータを1つにまとめ,1個の 変数のようにして扱うためのデータ型

プログラム例#include <stdio.h>#include <string.h>int main(void)

{struct S_ID{int ent_year;char dept;int id;

};

struct STUDENT_DATA{struct S_ID myid;char name[20];float height;float weight;

};struct STUDENT_DATA x;

x.myid.ent_year=2002;x.myid.dept=’L’;x.myid.id=110;strcpy(x.name,”Sakakibara”);x.height=180.0;x.weight=72.5;return 0;}

(左から続く)

Page 17: バイオプログラミング第一 - GitHub Pages · 2020-07-06 · 構造体 データ型の異なる複数のデータを1つにまとめ,1個の 変数のようにして扱うためのデータ型

構造体(5) 構造体の配列

① 宣言

struct 【構造体タグ名】 【構造体配列名】 [【要素数】];

② 参照,代入

【構造体配列名】[【要素番号】].【メンバ名】;

struct DATE_DATA{int year;int month;int day;

};

struct DATE_DATA x[10];

x[0].year=1990;y=x[3].month

Page 18: バイオプログラミング第一 - GitHub Pages · 2020-07-06 · 構造体 データ型の異なる複数のデータを1つにまとめ,1個の 変数のようにして扱うためのデータ型

プログラム例

#include <stdio.h>int main(void)

{struct S_ID{int ent_year;char dept;int id;

};

struct STUDENT_DATA{struct S_ID myid;char name[20];float height;float weight;

};

struct STUDENT_DATA x[100];

return 0;

(左から続く)

Page 19: バイオプログラミング第一 - GitHub Pages · 2020-07-06 · 構造体 データ型の異なる複数のデータを1つにまとめ,1個の 変数のようにして扱うためのデータ型

構造体変数の代入

#include <stdio.h>int main(void)

{struct S_ID{int ent_year;char dept;int id;

};

struct S_ID x,y;

x.ent_year = 2002;x.dept = ’L’ ;x.id = 110;y = x;

printf(”%d %c%d”,

y.ent_year,y.dept,y.id);return 0;}

構造体変数の場合,変数名での代入が可能!

注意!配列の場合,配列名での代入は不可!