1-01. 基本構文
公開日: 7:48 1. 基本編/1-01. 基本構文
C++のプログラムは、お互いのメソッドの呼び出しを介して通信するオブジェクトの集合である、と定義することができます。ここで簡単にクラス、オブジェクト、メソッド、インスタンス変数が何を意味するかを見ていきます。オブジェクト
オブジェクトは状態や挙動を持っています。例えば人間は肌の色、名前などの状態を持ち、同様に、話す、食べる、歩くなどの挙動を持ちます。オブジェクトは、クラスのインスタンス(実体)です。
クラス
クラスはテンプレートや設計図として定義され、サポートする型のオブジェクトの挙動/状態を記述します。
メソッド
メソッドは、基本的な挙動です。クラスには、多くのメソッドを含めることができます。論理が記述されたものがメソッドであり、データを操作し、すべての行動が実行されます。
インスタンス変数
各オブジェクトは、独自のインスタンス変数セットを持ちます。オブジェクトの状態は、これらのインスタンス変数に割り当てられた値によって作成されます。
C++プログラムの構造
Hello Worldと表示する簡単なコードを見ていきます。上記のプログラムを個別に見ていきます。
C++は様々なヘッダを定義しており、プログラムにとって必要または便利な情報が詰め込まれています。このプログラムでは<iostream>ヘッダが必要です。
using namespace std;の行はコンパイラにstd namespaceを使うと伝えています。
次の行//main() is where program execution begins. はC++で利用可能になった単一行のコメントです。単一行のコメントは//で始まり、行の最後で終わります。
int main()で始まる行はプログラムの実行開始される場所であるmain関数です。
次の行のcout << "Hello World"; はHello Worldというメッセージが画面に出表示されます。
return 0; メイン関数を終了させ呼び出しプロセスに値0を返します。
C++プログラムのコンパイルと実行
ファイルを保存し、プログラムをコンパイル・実行しましょう。次の手順に従ってください。
- テキストエディターを開き上のコードを加えます
- hello.cppと名前をつけて保存します
- コマンドプロンプトを開き、保存したファイルが有る場所へ行きます
- 'g++ hello.cpp 'とうち、コードをコンパイルします。エラーがなければコマンドプロンプトは何も表示せずに次の行へ移り、a.outという名前の実行ファイルが生成されます。
- ' /a.exe'または' /a'と打ちプログラムを実行します
- ウィンドウに' Hello World 'と表示されます
$ g++ hello.cpp $ ./a Hello World
g++にパスが通っていてhello.cppがあるディレクトリで実行させているか確認して下さい。
C/C++プログラムはmakefileを使ってコンパイルすることもできます。
C++のセミコロンとブロック
C++において、セミコロン(;)は記述の区切り文字です。つまり、それぞれの記述はセミコロンで終わっていなければいけません。論理的なつながりの終わりの目印となります。例えば次のコードは異なる3つの記述です。
x = y; y = y+1; add(x, y);
ブロックは'{'と'}'で囲まれた論理的につながった記述のセットです。
例
{ cout << "Hello World"; // prints Hello World return 0; }
C++は行の終わりを終端と認識しません。ですから、行のどこに記述しようが問題になりません。 例えば次の
x = y; y = y+1; add(x, y);は次のものと同じです。
x = y; y = y+1; add(x, y);
C++の識別子
A C++識別子は変数、関数、クラス、モジュールやあらゆるユーザが定義したものを区別をするのに使う名前です。識別子はAからZ、aからzまたはアンダースコア(_)で始まり、0個以上の文字かアンダースコア、数字が続きます。C++は@、$、%などの句読点を含む識別子を許可しません。C++は大文字と小文字を区別するプログラミング言語です。DogとdogはC++では2つの異なる識別子です。
次のものは利用可能な識別子の例です。
mohd zara abc move_name a_123 myname50 _temp j a23b9 retVal
C++ Keywords
次のリストはC++で予約された単語の一覧です。これらの予約語は変数などの識別子に使えません。asm | else | new | this |
auto | enum | operator | throw |
bool | explicit | private | true |
break | export | protected | try |
case | extern | public | typedef |
catch | false | register | typeid |
char | float | reinterpret_cast | typename |
class | for | return | union |
const | friend | short | unsigned |
const_cast | goto | signed using | return |
continue | if | sizeof | virtual |
default | inline | static | void |
delete | int | static_cast | volatile |
do | long | struct | wchar_t |
double | mutable | switch | while |
dynamic_cast | namespace | template |
トリグラフシーケンス
いくつかの文字はトリグラフシーケンスと呼ばれる代替表現を持ちます。トリグラフは単一の文字を表現する3文字の連なりで、常に2つのクエスチョンマークから始まります。トリグラフは文字リテラル、文字列リテラル、コメント、プリプロセッサ命令などあらゆる場所において展開されます。
トリグラフ | 置換後 |
??= | # |
??/ | \ |
??' | ^ |
??( | [ |
??) | ] |
??! | | |
??< | { |
??> | } |
??- | ~ |
すべてのコンパイラがトリグラフをサポートしているわけでなく、混乱を招くため利用は推奨されていません。
C++の空白
空白のみの行は恐らくコメントであり、空行としてC++コンパイラは完全に無視します。空白はC++において空白、タブ文字、改行文字やコメントを記述するために使われる用語です。
空白は構文を他の文から一部分離し、終わりと次の要素の始まりなどの構文の要素をコンパイラが識別できるようにします。そのため、構文内の
int age;にはコンパイラがはっきり区別できるように少なくともひとつの空白文字(一般的にはスペース)がintとageの間に必要です。一方で、
fruit = apples + oranges; // Get the total fruitfruitと=、=とappleの間に空白は必要ないですが、可読性のために空白を入れるのは自由です。
0 件のコメント :
コメントを投稿