• 検索結果がありません。

精密工学科プログラミング基礎

N/A
N/A
Protected

Academic year: 2021

シェア "精密工学科プログラミング基礎"

Copied!
5
0
0

読み込み中.... (全文を見る)

全文

(1)

1 1

精密工学科プログラミング基礎

第 10 回資料 (12/18 実施 )

今回の授業で習得してほしいこと:

• 構造体 ( 教科書 91  ページ )

定義の方法

宣言と参照

構造体の配列

• 動的な配列・メモリの確保 ( 教科書 98 ページ )

資料の

URL : http://lecture.ecc.u‐tokyo.ac.jp/~tohtake/

構造体 (structure)  とは

• 異なる型 (int, float, char 等 )  をまとめて扱う.

例えば,以下のような原子に関するデータなど

name(char ) group (char ) atomic mass(double )

Hydrogen non‐metal 1.00797

Helium non‐metal 4.0026

Lithium metal 6.939

Berylium metal 9.0122

Boron semi‐metal‐conductor 10.811

struct atom{

char name[64];

char group[64];

double mass;

};

各原子を表す

構造体 文字列

(2)

構造体の定義

• main 関数の外で,

以下のように行う.

3

struct 構造体名{

データ型1 メンバ名1:

データ型2 メンバ名2;

・・・

};

#include

<stdio.h>

struct atom{

char name[64];

char group[64];

double mass;

};

int main(void){

・・・

}

プログラムの例

構造体の宣言と参照

宣言

struct 構造体名 変数名;

参照

変数名.メンバ名

・・・

int main(void){

struct atom a;

a.name = “Helium”;

strcpy(a.name, “Helium”);

a.mass = 4.0026;

printf(“%s¥n”,a.name);

printf(“%lf¥n”,a.mass);

}

プログラムの例

ピリオド (ドット演算子)

(3)

構造体の配列

5

struct 構造体名 配列名[長さ];

struct atom c[128];

c[0].name = “Helium”;

strcpy(c[0].name, “Helium”);

c[0].mass = 4.0026;

c[1].name = “Hydrogen”;

strcpy(c[1].name, “Hydrogen”);

c[1].mass = 1.00797;

プログラムの例

動的配列とは

• プログラム実行時に,長さを決める配列

例えば,以下のような時に使う

64

個の三角形で表された形

13,000

個の三角形で表された形

struct triangle tris[20000];

以下のようにプログラムを書けば,どちらも扱えるが・・・

(4)

動的配列の確保

注意

古い

言語の規格では,配列の長さに変数は使用不可

7

int n;

scanf(“%d”,&n);

int a[n];

できないことがある例

int * a = (int *)malloc( n * sizeof(int) );

n

個分の

int

型データ領域を 確保

(memory allocation)

する

動的配列の宣言 : ( * は,配列へのポインタ ) 型 * 配列名;

動的配列の確保 :

配列名 = (型 *) malloc( 長さ * sizeof(型) );

動的配列の例

確保

: malloc 

参照

配列と同じ

解放

: free  (

使い終わったら行う)

int n, i;

double * a;

double s = 0;

scanf(“%d”,&n);

a = (double*)malloc( n * sizeof(double) );

for(i=0; i<n; i++) s += a[i];

free(a);

宣言

(double

型の動的配列

)

確保

(double

型を

n

個分

)

参照

(

配列の

i

番目

)

解放

(5)

2 次元の動的配列

• 動的配列の動的配列を使う

サイズが

×

int 

型の場合

9

(int*)* a;

/* n 個の int* 型を確保する */

a = ((int*)*) malloc( n * sizeof(int*) );

for(i=0; i<n; i++)

/* m 個の int 型を確保する */

a[i] = (int*) malloc( m * sizeof(int) );

for(i=0; i<n; i++) free( a[i] );

free( a );

宣言 確保

解放

参照

関連したドキュメント

理工学部・情報理工学部・生命科学部・薬学部 AO 英語基準入学試験【4 月入学】 国際関係学部・グローバル教養学部・情報理工学部 AO

[r]

“〇~□までの数字を表示する”というプログラムを組み、micro:bit

図 21 のように 3 種類の立体異性体が存在する。まずジアステレオマー(幾何異 性体)である cis 体と trans 体があるが、上下の cis

学部混合クラスで基礎的な英語運用能力を養成 対象:神・ 社 会・ 法・ 経 済・ 商・ 理 工・ 理・

国際地域理解入門B 国際学入門 日本経済基礎 Japanese Economy 基礎演習A 基礎演習B 国際移民論 研究演習Ⅰ 研究演習Ⅱ 卒業論文