[前回の復習] データ構造 従来はプログラム構造 プログラミング基本 : (C 言語のような手続き型の言語による)プログラムは、 「命令の列を作る」という作業 => プログラム構造(既存から新しい機能を作り上げる仕組み)が書ければ OK # プログラムは人間が作る # そして、人間は間違える生き物 # できる(数学/理学)だけでだめで、やりやすい(情報/工学)の発想が必要 # => プログラムをより書きやすい(人間視点で..)方法を説明 !! 時代 : 手続きから => データ => オブジェクト なぜデータ構造 1. (論理値=>データで、コードが制御できる) データの表現で、プログラムの機能が実現できる(万能性の根拠) => データの方が、プログラムより柔軟なので、データを中心とした考え方が必要 2. プログラムが現実と対応づけできる(プログラムが役立つ)ためには、現実と(プログラム内の)データが対応付けされないといけない => コーディングが不可欠 => コーディングの良し悪しが、プログラム作成の難易度に影響する # *よい* コーディングは、同じ機能を実現するときに、プログラムが簡単に作れる [今日の内容] (従来の学習内容で..) 「点」を表す場合に、直交座標というコーディング規則を利用し、 x 座標と y 座標の組で、表す事にする 二つの変数の組で、一つの対象(点)を表現するが、 その一つの対象を表現する二つの変数の関係が、プログラマの頭の中にしかない.. => 「分からなく」なってしまう(プログラマの思考内容は、記録されていないので、場合によっては失われてしまう..) # 必要(プログラムの機能のためでなく、プログラムを理解するため)情報は、(プログラムの機能を実現するために、本質的に不要でも..)記述しておく必要がある # => プログラムをわかりやすくするために重要(プログラムを作成しやすくするので..) データ(変数)間の関係(同じ点を表現するために、ついになっているx座標を表す変数と、y 座標を表す変数)を明示的に表現する記述方法が欲しい => 構造体 構造体の導入の効果 複数の型のデータの組み合わせから作られる新しい型が作れる => 複雑なデータの操作を、簡単な表現で行える(例:代入) ただし、C 言語では、あたしい型のデータに対する、基本的な操作は、(自動的には)提供されない cf. そのデータ型の値をどうやって入出力するか .. ? 新しい型と元の(材料となった)型の関係を利用した操作は可能なので、 全体の操作を、材料の操作で実現する必要がある 基本的操作は、(ほぼ、機械的に..) データ構造に対応した形でプログラムを作成すれば、実現可能 cf. 代入/入出力/全体的な操作/etc.. => データ構造が、プログラム構造を決定する(という傾向がある..) 配列 [0] int v0; int v1; int v2; v0 = 0: v1 = 1: v2 = 2: [1] int v[3]; v[0] = 0: v[1] = 1: v[2] = 2: [2] int v[3]; int i; i=0; v[i] = 0: i=1; v[i] = 1: i=2; v[i] = 2: [2] int v[3]; int i; i=0; v[i] = i: i=1; v[i] = i: i=2; v[i] = i: [3] int v[3]; int i; i=0; v[i] = i: i=i+1; v[i] = i: i=i+1; v[i] = i: [4] int v[3]; int i; i=0; v[i] = i: i=i+1; v[i] = i: i=i+1; v[i] = i: i=i+1; [4] int v[3]; int i; for (i=0;i<3;i=i+1) { v[i] = i: }