数え上げと構造データ型、関数

数え上げ(Enumerate ... enum)

整数への対応づけができる項目の並び。大小関係(順序)を定義できる。
例:
曜日
enum day = {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};
日本の都市
enum city = {Sapporo, Sendai, Tokyo, Yokohama, Nagoya, Kyoto, Osaka, Kobe, Hiroshima, Kitakyushu, Fukuoka};

構造型

Pascal では レコード(Record) と呼ばれる。ある人や物などのものごとに関する データをひとまとめにして扱う。
例:
2次元ベクトル
struct vector2 { float x; float y};
  struct vector2 p1,p2;
  float  distance;

  p1.x = 1.0; p1.y = 1.0;
  p2.x = 2.0; p2.y = 3.0;
  distance = sqrt(pow(p2.x-p1.x, 2.)+pow(p2.y-p1.y, 2.));
時刻
/usr/include/time.h
struct	tm {
	int	tm_sec;
	int	tm_min;
	int	tm_hour;
	int	tm_mday;
	int	tm_mon;
	int	tm_year;
	int	tm_wday;
	int	tm_yday;
	int	tm_isdst;
	char	*tm_zone;
	long	tm_gmtoff;
};

関数

関数宣言、大域変数と局所変数、引数、(手続き)
トップダウンで作成した演習問題解答のプログラム は、main() が最後にきているので、このままではあまりトップダウンに 見えない。main() を頭に持ってくると何が問題になるのか? 解決法は、関数宣言をおこなうこと。

練習問題 運賃の計算で作成したプログラムで受け渡されている 引数、戻り値を全て大域変数にしてプログラムを書きなさい
(大域変数の利用を推奨しているわけでは無いので誤解しないように)

オブジェクト

構造体に関数を付けたようなもの。
例:C++ における complex.h
class complex {
	double	re, im;
public:
	complex()	{ re=0.0; im=0.0; }
	complex(double r, double i = 0.0)	{ re=r; im=i; }
	 	
	friend	double	real(const complex&);
	friend	double	imag(const complex&);

	friend	double	abs(complex);
	friend  double  norm(complex);
	friend  double	arg(complex);
	friend  complex conj(complex);
	friend  complex cos(complex);
	friend  complex cosh(complex);
	friend	complex exp(complex);
	friend  complex log(complex);
	friend  complex pow(double, complex);
	friend	complex pow(complex, int);
	friend	complex pow(complex, double);
	friend	complex pow(complex, complex);
	friend  complex	polar(double, double = 0);
	friend  complex sin(complex);
	friend  complex sinh(complex);
	friend	complex sqrt(complex);

	friend	complex	operator+(complex, complex);
	friend	complex	operator-(complex);
	friend	complex operator-(complex, complex);
	friend	complex operator*(complex, complex);
	friend 	complex operator/(complex, complex);
	friend 	int	operator==(complex, complex);
	friend 	int	operator!=(complex, complex);
	
	void operator+=(complex);
	void operator-=(complex);
	void operator*=(complex);
	void operator/=(complex);
};
2次元ベクトルとその距離計算を C++ で書いたもの。