コンピュータで扱えるデータが単純なものであっても、 コーディングを利用すれば、現実の複雑なものも、「計算」できる -> コンピュータは「万能」と言える しかし、コーディングは誰がやるか ? コンピュータが、単純なデータしか扱えなければ、 人間がやるしかない(面倒) もし、コンピュータが複雑なデータ(現実の情報に対応した) が扱えれば コーディングの部分も、計算機にやらせる事ができる 先週から始めた「データ構造」の話 コンピュータで複雑なデータを扱えるようにする表現方法を学んでいる データ構造(1) 構造体:単純なデータを組み合わせる仕組み -> 数学的には「直積空間」を作る仕組み # すべてのデータは、直積空間に、同値類をいれて、割った集合として表現できる # 例 : 平面の点は、実数の組み合わせ、有理数は、整数の組み合わせに比という同値類をいれる 構造体の使い方 struct { 組合わせるデータ } !! この講義では、typedef と組み合わせる typedef で新しい型を作り、 さらに、その型に対応する処理関数(コーディングルールの 自動化) をつくれば、プログラマ自身がコーディングの規則 意識せずに、新しいデータ型が使えるようになる # 数学では、集合とそれの操作を定義した対を「空間」と呼ぶ 「データ型」も、型の宣言だけ(値の集合の定義のみ)だけでなく、 それを操作する関数を「対」にして初めて意味がある 「データ型」と「その型に対応した処理関数」の対を class ( オブジェクト指向言語 ) の概念になる 配列 : 同じ型のデータが(一定個数)並んだもの cf. 構造体は、(同じだろうが、異なるものだろうが..) 複数組み合わせる事ができる 表現力しては、劣化版(条件がきつい) => 条件がきつい : 情報が多いので、効率よく扱える 計算機の世界でも 構造体より、配列の方が「効率よく」使える 「添え字」という「便利な機能」が使える !! 繰り返しと組み合わせて利用できる(添え字が使えるので..)という利点がある