第10回 http://www.fit.ac.jp/~matsuki/lecture.html プログラミングⅡ 第10回 http://www.fit.ac.jp/~matsuki/lecture.html.

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 つのまとまりにできる . 配列と違って同じ型でデータをまとめるのではな く違った型のデータをまとめられる .
第 2 章 数値の入力と変数 scanf と変数をやります 第 2 章 数値の入力と変数 1. 以下のプログラムを実行してみよう  C 言語では文の最後に「 ; 」(セミコロン)が付きます 第 2 章 数値の入力と変数 2 #include int main() { int x; x = 3; printf("x.
理化学研究所 第 10 回 構造体 半田利弘 鹿児島大学 大学院理工学研究科 物理・宇宙専攻 鹿児島大学 プログラミング基礎演習.
1 例題 ex3b ( 配列 ) 科学科プログラミング. 2 例題 : ex3b  以下の 3 つについて例題を進める ステップ 1 :配列 ステップ 2 :最小と最大 ステップ 3 :文字型の配列.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
プログラミング入門2 第4回 配列 for文 変数宣言 初期化
情報基礎演習B 後半第5回 担当 岩村 TA 谷本君.
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
プログラミング基礎I(再) 山元進.
第12回新しい型と構造体.
第13回構造体.
ファーストイヤー・セミナーⅡ 第8回 データの入力.
第12回構造体.
プログラミング入門2 ポインタについて補足 構造体 第11回 芝浦工業大学情報工学科 青木 義満、篠埜 功
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
プログラミング演習Ⅱ 第12回 文字列とポインタ(1)
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
プログラミング入門2 第1回 導入 情報工学科 篠埜 功.
第13回 プログラミングⅡ 第13回
第8回 プログラミングⅡ 第8回
構造体.
プログラミング演習II 2004年12月 21日(第8回) 理学部数学科・木村巌.
第16章 構造体 16.1 構造体の定義と構造体変数 16.2 構造体の配列.
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
精密工学科プログラミング基礎 第9回資料 (12/11 実施)
第16章 構造体 16.1 構造体の定義と構造体変数 16.2 構造体の配列.
第3回 配列,構造体,ポインタ ~ データ構造について学ぶための基礎~
構造体 プログラミング入門2 芝浦工業大学情報工学科 青木 義満
精密工学科プログラミング基礎Ⅱ 第3回資料 今回の授業で習得してほしいこと: 2次元配列の使い方 (前回の1次元配列の復習もします.)
プログラミング 3 構造体(1).
第16章 構造体 16.1 構造体の定義と構造体変数 16.2 構造体の配列.
第11回 宿題 出題日:12月21日 締切日:1月7日(木).
精密工学科プログラミング基礎 第10回資料 (12/18実施)
2005年度 データ構造とアルゴリズム 第3回 「C言語の復習:再帰的データ構造」
第10章 これはかなり大変な事項!! ~ポインタ~
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
前回の練習問題.
第7回 プログラミングⅡ 第7回
岩村雅一 知能情報工学演習I 第10回(後半第4回) 岩村雅一
第11回 プログラミングⅡ 第11回
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
精密工学科プログラミング基礎Ⅱ 第4回資料 今回の授業で習得してほしいこと: 文字列の扱い ファイル入出力の方法 コマンドライン引数の使い方
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
メモリとメモリアドレス, ポインタ変数,関数へのポインタ渡し
精密工学科プログラミング基礎Ⅱ 第5回資料 今回の授業で習得してほしいこと: 構造体 (教科書 91 ページ)
C言語 はじめに 2016年 吉田研究室.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
ネットワーク・プログラミング Cプログラミングの基礎.
第5回 プログラミングⅡ 第5回
プログラミング入門2 第5回 配列 for文 変数宣言 初期化
プログラミング論 構造体
標準入出力、変数、演算子、エスケープシーケンス
第3回簡単なデータの入出力.
プログラミング演習II 2003年11月19日(第6回) 木村巌.
プログラミング演習II 2003年12月10日(第7回) 木村巌.
プログラミング入門2 第5回 配列 変数宣言、初期化について
情報処理Ⅱ 小テスト 2005年2月1日(火).
printf・scanf・変数・四則演算
第2章 数値の入力と変数 scanfと変数をやります.
C言語講座第5回 2017 構造体.
プログラミング演習I 補講用課題
岩村雅一 知能情報工学演習I 第7回(後半第1回) 岩村雅一
高度プログラミング演習 (10).
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
Presentation transcript:

第10回 http://www.fit.ac.jp/~matsuki/lecture.html プログラミングⅡ 第10回 http://www.fit.ac.jp/~matsuki/lecture.html

連絡 小テスト 授業開始直後と終了直前に小テストを2行います 授業開始直後テスト(復習テスト)⇒前回の復習 授業終了直前テスト(本テスト)⇒その日の内容の復習 本テストの成績(正答率)が50%以下の場合は、宿題を出します(レポートとは別)。 宿題を決められた期日までに提出しない場合は、欠席扱いにします

宿題の提出について 以下の場合は、出題日の出席を欠席とする 締切日を過ぎた場合 正解率が7割未満の場合 提出は、PDFファイルを印刷して、それに答えを書いて提出すること。

プログラミングに関する質問時間 月曜日と金曜日の12:00から13:00までは, CAE室で,プログラミングに関する質問を受け付けています. 遠慮なく相談に来てください.

今日の内容 構造体の基礎 構造体の記述方法 構造体型の宣言 構造体変数の宣言 メンバにアクセスする typedefで型に名前を付ける 構造体の初期化 構造体の代入

構造体とは int int int int double 配列: 構造体: 「同じ型」のデータをひとまとめにしたもの 「異なる型」のデータをひとまとめにしたもの 書込め int int int 書込め int double char

構造体の概念 複数の型の変数をひとまとめにしたもの まとめられた要素をメンバという (例)携帯電話の連絡先データ 書込め 書込め 電話番号:char tel[16];(16ケタ) 名前:char name[20];(20文字) 年齢:int age; 体重:double weight; 書込め メンバ tel[16] name[16] age weight 書込め 4つのメンバで1セット(一人分)

構造体の宣言 構造体の宣言は2つのステップがある。 (1) 構造体型の宣言 どのような型の変数や配列をまとめるかを決定 (1) 構造体型の宣言 どのような型の変数や配列をまとめるかを決定 (2) 構造体変数の宣言 構造体型を持った変数を用意 書込め 書込め

(1)構造体型の宣言 構文 struct 構造体型名 { 型名 識別子; ・・・ }; セミコロンに注意 書込め

(1)構造体型の宣言 例 struct Car { int num; double gas; char name[20]; }; 書込め セミコロンに注意 メンバ(構造体の要素) num gas name[20] int型 double型 char型配列

(2)構造体変数の宣言 struct 構造体型名 構造体変数名; struct Car car1; 構文 例 書込め 書込め 構造体を利用することができる.

メンバへのアクセス 宣言した構造体のメンバに値を格納しよう. メンバにアクセス⇒ドット演算子(.)を使う 構文 例 構造体変数名.メンバ 書込め 構文 構造体変数名.メンバ 例 ナンバーに1234を設定 car1.num = 1234; car1.gas = 25.5; strcpy(car1.name, “マックィーン号”); ガソリン量に25.5を設定 名前にマックィーン号を設定 (注意)strcpy(a,b) bをaにコピー(代入) 書込め

struct Car { int num; double gas; char name[20]; }; 書込め 書込め 書込め #include <stdio.h> #include <string.h> /*構造体型のCarの宣言*/ struct Car { int num; double gas; char name[20]; }; main() { struct Car car1; car1.num = 1234; car1.gas = 25.5; strcpy(car1.name, “マックィーン号”); printf(“車のナンバーは%d ガソリンの量は%f  車の名前は%s\n”, car1.num, car1.gas, car1.name); } サンプルプログラム1 (メンバにアクセス) 書込め 構造体型はグローバルとして宣言した方が便利 構造体変数の宣言 書込め 書込め

書込め 書込め 書込め struct Car car1; #include <stdio.h> #include <string.h> /*構造体型のCarの宣言*/ struct Car { int num; double gas; char name[20]; }; main() { struct Car car1; printf(“ナンバーは?”); scanf( “%d”, &car1.num); printf(“ガソリンの量は?”); scanf( “%lf”, &car1.gas ); printf(“車の名前は?”); scanf( “%s”, car1.name); printf(“車のナンバーは%d ガソリンの量は%f  車の名前は%s\n”, car1.num, car1.gas, car1.name); } サンプルプログラム2 (キーボードから入力) キーボードから入力 書込め 書込め 書込め

構造体の記述方法

長い型名に,新しい名前をつけ直すこと命令がある typedefの使い方 構造体型で構造体変数を宣言するとき,     struct Car car1; という具合に,長い型名を書くはめになる. 型名 長い型名に,新しい名前をつけ直すこと命令がある typedef 書込め

typedefの使い方 構文 typedef 型名 識別子 例 typedef double W W gas; gas = 25.3; 書込め double型を「W」という名前で使えるように設定

typedefの使い方 型の名前を設定することができる struct Car { int num; double gas; char name[20]; }; struct Car car1; car.num = 1234; typedef struct Car { int num; double gas; char name[20]; } Car; Car car1; car1.num = 1234; 書込め 「struct Car」型 を 「Car」という名前の型 に設定 書込め 書込め

typedef struct Car { 書込め #include <stdio.h> #include <string.h> /*構造体型のCarの宣言*/ typedef struct Car { int num; double gas; char name[20]; }Car; main() { Car car1; car1.num = 1234; car1.gas = 25.5; strcpy(car1.name, “マックィーン号”); printf(“車のナンバーは%d ガソリンの量は%f  車の名前は%s\n”, car1.num, car1.gas, car1.name); } サンプルプログラム3 (typedefの使用例) 書込め typedefを使って「struct Car」を「Car」に設定 構造体変数の宣言 書込め

nameメンバーに”マックィーン号”を格納 構造体の初期化 構造体を宣言すると同時に値を格納する 構文 構造体型名 構造体変数名 = {値,値, ・・・}; numメンバーに1234を格納 書込め 例 Car mycar = {1234, 25.5, “マックィーン号”}; nameメンバーに”マックィーン号”を格納 書込め gasメンバーに25.5を格納 書込め

#include <stdio. h> #include <string. h> /. 構造体型のCarの宣言 #include <stdio.h> #include <string.h> /*構造体型のCarの宣言*/ typedef struct Car { int num; double gas; char name[20]; }Car; main() { Car mycar = { 1234, 25.5, “バットマンCAR” }; printf(“車のナンバーは%d\n”, mycar.num); printf(“ガソリンの量は%f\n ”, mycar.gas); printf(“車の名前は%s\n”, mycar.name); } 実行例 車のナンバーは1234 ガソリンの量は25.5 車の名前はバットマンCAR typedefを使う場合,ここの 構造体型名(Car)は書かなくても良い 書込め mycarという構造体変数を宣言し,同時に初期化(順番に注意!) 書込め

構造体の代入 構造体変数を別の構造体変数に代入すると,メンバーもまとめて代入(コピー)される. 例 書込め 構造体変数を別の構造体変数に代入すると,メンバーもまとめて代入(コピー)される. 例 Car mycar = {1234, 25.5, “マックィーン号”}; Car yourcar; yourcar = mycar; yourcar.num = mycar.num; yourcar.gas = mycar.gas; strcpy(yourcar.name, mycar.name); 書込め この代入文ひとつで,mycarのすべてのメンバ値がyourcar側にも代入される

mycarのデータをyourcarに代入 (まとめてメンバー値をコピー可!) 書込め #include <stdio.h> #include <string.h> /*構造体型のCarの宣言*/ typedef struct { int num; double gas; char name[20]; }Car; main() { Car mycar = { 1234, 25.5, “バットマンCAR” }; Car yourcar; yourcar = mycar; printf(“your車のナンバーは%d\n”, yourcar.num); printf(“your車のガソリンの量は%f\n ”, yourcar.gas); printf(“your車の名前は%s\n”, yourcar.name); } 実行例 your車のナンバーは1234 your車のガソリンの量は25.5 your車の名前はバットマンCAR 構造体型名は省略可(省略済) 書込め mycarのデータをyourcarに代入 (まとめてメンバー値をコピー可!) 書込め