授業中に作成したプログラムを片っ端から乗っけていきです。C++ を中心に掲載中。

1.1 プログラム構造

C++プログラム∋関数、オブジェクト(変数オブジェクト、クラスオブジェクト)
関数とオブジェクトは、使用する直前までに宣言(定義)されること。
宣言[属性,名前] // 識別氏の組の解釈と、識別氏の属性を確定
定義[属性,名前,メモリ空間への割り当て] // 記憶域の確保
宣言と定義は元来別物だが、現実には宣言によって定義機能も実現する場合がほとんど。

1.2 簡単なプログラム

// Sample Program : hello.cpp			>ヘッダ部
#include <iostream>
int main(void){					>
	std::cout << "Hello C++ World!\n!;	>本文
	return 0;				>
}
説明
  • ソースプログラムを読みやすくするために、適当にコメントを挿入すること。
  • ソースファイル名には拡張子cpp(コンパイラによってはcc)
  • #include<iostream>は標準入出力のヘッダを呼び込めという命令。
  • C++プログラムには必ずmain()関数がひとつ必要。この下にプログラムの本文が続く。
  • プログラムは、main()関数から実行を開始し、終了する。int は、main()関数が呼び出し元に返す値の型。本文は { から } まであり、ブロックと呼ばれる。
  • std::cout は、標準ライブラリ std の標準出力(console output)オブジェクト << 演算子の右側の値を cout オブジェクトに渡す。結果として、プログラムからデータが出力される。C言語と同じprintf関数も使えるが。
  • << は標準出力に出力させるための出力演算子(put operator)。ダブルクォート " から " までに示した文字列がそのまま出力される。後から出力ストリームに挿入していくように見えるので「挿入演算子」(insertion operator)とも呼ばれる。streamクラスのメンバ関数。
  • cout に出力した後には、改行 \n を入れておくこと。
  • 本文の書く文は必ず ; で区切る。
  • return 文によってプログラムは終了し、呼び出し文に値を返す。
改良すると
using namespace std::
コンパイラが、std::の必要な部分に std:: を付けてくれるので、std::coutと書かずにcoutだけでよい。プログラムが読みやすくなる。標準ライブラリは std 名前空間を使用することを宣言。std空間にすべての標準C++ライブラリが宣言されている。

1.3 C++プログラムの基本構造

#include <iostream>	// ヘッダ部分が最初にくる。
using namespace std;	// 名前空間の指定
// クラスの定義
class クラス名{	// クラス宣言
private:
	メンバ変数
public:
	コンストラクタ
	メンバ関数
};
// コンストラクタの定義
クラス::コンストラクタ名(仮引数){
・・・
}
// メンバ関数の定義
型 クラス名::メンバ関数名(仮引数){
・・・
}
// メイン関数
int main(int argc, char *argv[]){	// main関数の始まり
	・・・	// 宣言部および定義
	   	// (ここから用いる変数の型宣言をする)
	・・・	// (ボディ)
}

1.4 C++の定義

「真面目なプログラマにとってプログラム開発が楽しい作業になるようにすること」(Bjarne Stroustrup:ビャーネ・ストゥルウストゥロプ)
オブジェクト指向言語Shimura67の持つプログラム構造の機能+システムプログラム用にCの持つ効率の良さ、自在さ。
(1)Cを拡張すること
基本的には、C++はCのスーパーセット。ほとんどのCのプログラムはC++でコンパイルしなおせば動く。もっとも、そのため分かりにくくもなっているが。
(2)データ抽出を支援すること
組み込みの型と変わらぬ使い勝手のよさと効率の良さを持ったデータ型をプログラマが定義すること(クラス)
(3)オブジェクト指向プログラミングを支援すること
カプセル化(オブジェクトの隠蔽)、多相性(1インターフェース複数メソッド)、継承(クラス階層化)
ただし、クラスを使わないで、関数と構造体だけでもかけるという意味では、不完全。
(4)言語機能の強化
  • Cより性的な型検査を一段と強化。
  • 分離コンパイルにおいて、型についての整合性を保証する。
  • クラス階層を自在にかつ効率よく使うために仮想関数機能の導入。
  • 型を引数として自動的にクラスと関数を作り出すテンプレート機能の導入。
  • 統一の取れた単一の例外処理機構を導入。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Creative Commons

Creative Commons License
この作品は、クリエイティブ・コモンズ・ライセンスの下でライセンスされています。

メンバーのみ編集できます