意思決定構造では、プログラマーがプログラムによって評価・テストされる1つ以上の条件を指定し、条件が真と判定された場合に実行される文、およびオプションで条件が偽と判定された場合に実行される他の文を指定する必要があります。 ほとんどのプログラミング言語に見られる典型的な意思決定構造の一般的な形式: C++プログラミング言語では、以下の種類の意思決定文を提供しています: No.文と説明 1if 文ブール式に続けて1つ以上の文で構成される。 2if...else 文if 文に続けてオプションの else 文を置き、ブール式が偽の時に実行される。 3switch 文変数を値のリストと照らし合わせて等
コードブロックを何度も実行する必要がある状況があります。一般的に、文は順次実行されます:関数の最初の文が最初に実行され、次に2番目、という具合です。 プログラミング言語は、より複雑な実行パスを可能にするさまざまな制御構造を提供します。 ループ文を使用すると、文または文のグループを複数回実行できます。ほとんどのプログラミング言語におけるループ文の一般的な形式は以下の通りです: C++プログラミング言語では、ループ要件を処理するために以下の種類のループを提供しています: No.ループタイプと説明 1while ループ与えられた条件が真である間、文または文のグループを繰り返す。ループ本体を実行す
演算子とは、コンパイラに特定の数学的または論理的操作を実行するよう指示する記号です。C++には豊富な組み込み演算子があり、以下の種類を提供します: 算術演算子 関係演算子 論理演算子 ビット演算子 代入演算子 その他の演算子 この章では、これらの演算子を1つずつ調べます。 算術演算子 C++言語でサポートされている算術演算子は以下の通りです: 変数Aが10、変数Bが20を保持していると仮定すると: 例を見る 演算子説明例 +2つのオペランドを加算A + B は 30 を与える -第1オペランドから第2オペランドを減算A - B は -10 を与える *両オペランドを乗算A * B は 2
ストレージクラスは、C++プログラム内での変数および/または関数のスコープ(可視性)とライフタイムを定義します。これらの指定子は、修飾する型の前に置かれます。C++プログラムで使用できるストレージクラスは以下の通りです: auto register static extern mutable auto ストレージクラス auto ストレージクラスは、すべてのローカル変数のデフォルトストレージクラスです。 { int mount; auto int month; } 上記の例では、同じストレージクラスを持つ2つの変数を定義しています。auto は関数内、つまりローカル変数でのみ使用できます。
C++では、char、int、double データ型に修飾子を前置できます。修飾子は基本型の意味を変更し、さまざまな状況のニーズにより正確に適合させるために使用されます。 データ型修飾子は以下の通りです: signed unsigned long short signed、unsigned、long、short 修飾子は整数基本型に適用できます。さらに、signed と unsigned は char に、long は double に適用できます。 signed と unsigned は long または short 修飾子のプレフィックスとしても使用できます。例:unsigned lo
定数とは、プログラムが変更できない固定値のことで、リテラルと呼ばれます。 定数は基本データ型のいずれでもよく、整数リテラル、浮動小数点リテラル、文字リテラル、文字列リテラル、ブールリテラルに分類できます。 再度になりますが、定数は通常の変数と同様に扱われますが、定義後に値を変更できません。 整数リテラル 整数リテラルは、10進数、8進数、16進数の定数にできます。プレフィックスで基数を指定します:16進数は 0x または 0X、8進数は 0、10進数はプレフィックスなし。 整数リテラルには、unsigned と long を表す U と L の組み合わせのサフィックスを付けることもできます。サ
スコープとはプログラムの領域のことで、大まかに言うと変数を宣言できる場所は3つあります: 関数またはブロックの内部(ローカル変数) 関数パラメータの定義内(仮パラメータ) すべての関数の外部(グローバル変数) 関数とそのパラメータについては以降の章で学びます。ここではローカル変数とグローバル変数について説明します。 ローカル変数 関数またはブロック内で宣言された変数をローカル変数と呼びます。それらは、その関数またはコードブロック内の文によってのみ使用できます。ローカル変数は自分自身の関数の外部には知られていません。ローカル変数を使用した例: Live Demo #include <
変数は、プログラムが操作できる名前付きストレージを提供します。C++の各変数には特定の型があり、それによって変数のメモリのサイズとレイアウト、そのメモリに格納できる値の範囲、変数に適用できる操作のセットが決まります。 変数名は文字、数字、アンダースコア文字で構成できます。文字またはアンダースコアで始まる必要があります。C++は大文字小文字を区別するため、大文字と小文字は区別されます。 前章で説明した通り、C++には以下の基本的な変数タイプがあります: No.型と説明 1booltrue または false の値を格納します。 2char通常1オクテット(1バイト)。整数型の一種です。 3in
プログラムコメントとは、C++コードに含めることができる説明文です。これらのコメントは、ソースコードを読む誰にとっても役立ちます。すべてのプログラミング言語は何らかの形式のコメントを許可しています。 C++は一行コメントと複数行コメントをサポートしています。コメント内のすべての文字はC++コンパイラによって無視されます。 C++のコメントは /* で始まり */ で終わります。例: /* This is a comment */ /* C++ comments can also * span multiple lines */ コメントは // で始め、行末まで続くこともできます。例: L
C++プログラムを考えるとき、それは互いのメソッドを呼び出し合って通信するオブジェクトの集合体として定義できます。それでは、クラス、オブジェクト、メソッド、インスタンス変数が何を意味するか簡単に見ていきましょう。 オブジェクト : 状態と振る舞いを持ちます。例:犬には「色」「名前」「品種」という状態と、「尻尾を振る」「吠える」「食べる」という振る舞いがあります。オブジェクトはクラスのインスタンスです。 クラス : そのタイプのオブジェクトがサポートする振る舞い/状態を記述するテンプレート/設計図と定義できます。 メソッド : 基本的に振る舞いのことです。クラスには多くのメソッドを含めることが
ローカル環境のセットアップ C++の開発環境を構築するには、以下の2つのソフトウェアがコンピュータに必要です。 テキストエディタ プログラムを入力するために使用します。代表的なエディタには、Windowsメモ帳、OS Editコマンド、Brief、Epsilon、EMACS、vimやviなどがあります。 テキストエディタの名前とバージョンはオペレーティングシステムによって異なります。例えば、Windowsではメモ帳、WindowsおよびLinux、UNIXではvimやviが使用できます。 エディタで作成するファイルをソースファイルと呼び、C++では通常、.cpp、.cp、.cの拡張子で命名され
C++は、静的型付け、コンパイル型、汎用、大文字小文字区別、フリーフォームのプログラミング言語であり、手続き型、オブジェクト指向、ジェネリックプログラミングをサポートしています。 C++はハイレベル言語とローレベル言語の両方の特徴を併せ持つため、中級レベルの言語と見なされています。 C++は1979年にベル研究所(ニュージャージー州マレーヒル)でBjarne Stroustrup氏によってC言語の拡張として開発が始まり、当初は「C with Classes」と名付けられましたが、1983年にC++と改名されました。 C++はC言語のスーパーセットであり、ほぼすべての合法的なCプログラムは合法的
Cプログラム実行時にコマンドラインから値を渡すことができます。これらの値をコマンドライン引数と呼び、プログラム外部から制御したい場合(ハードコーディングを避けたい場合)に特に重要です。 コマンドライン引数はmain()関数の引数で扱います。argcは渡された引数の数、argv[]は各引数を指すポインタ配列です。引数が渡されたかチェックして動作を変える簡単な例です。 2) { printf(Too many arguments supplied.\n); } else { printf(One argument expected.\n); }
この章ではC言語の動的メモリ管理を説明します。C言語はメモリ割り当てと管理のための関数をいくつか提供しており、これらは<stdlib.h>ヘッダーファイルにあります。 No.関数と説明 1void *calloc(int num, int size);num個の要素からなる配列を割り当て、各要素のサイズはsizeバイト。 2void free(void *address);addressで指定されたメモリブロックを解放する。 3void *malloc(size_t size);sizeバイトのメモリを割り当て、未初期化のままにする。 4void *realloc(void *
関数に決まった数ではなく、可変個の引数(パラメータ)を渡したい状況があります。C言語はこの状況に対する解決策を提供し、要件に応じて可変個のパラメータを受け取る関数を定義できます。以下はそのような関数の定義例です。 int func(int, ... ) { ... } int main() { func(1, 2, 3); func(1, 2, 3, 4); } 関数func()の最後の引数が省略記号(...、3つのドット)であり、その直前の引数は常にint型で、可変引数の総数を表すことに注意してください。この機能を使うには、stdarg.hヘッダーファイルをインク
再帰とは、自己相似的な形で項目を繰り返すプロセスです。プログラミング言語において、関数が自分自身を呼び出せる場合、それをその関数の再帰呼び出しと呼びます。 void recursion() { recursion(); /* 関数が自分自身を呼び出す */ } int main() { recursion(); } C言語は再帰をサポートしています。しかし再帰を使う際、プログラマは関数から抜ける終了条件を慎重に定義する必要があります。そうしないと無限ループに陥ります。 再帰関数は、数値の階乗計算やフィボナッチ数列生成など、多くの数学的問題の解決に役立ちます。 数値の階
C言語自体はエラーハンドリングの直接的なサポートを提供しませんが、システムプログラミング言語として、戻り値という形で低レベルなアクセスを提供します。ほとんどのCやUnixの関数呼び出しは、エラー時に-1やNULLを返し、エラーコードをerrnoに設定します。これはグローバル変数として、関数呼び出し時にエラーが発生したことを示します。様々なエラーコードは<error.h>ヘッダーファイルで定義されています。 Cプログラマは戻り値をチェックし、戻り値に応じた適切な対応を取れます。プログラム初期化時にerrnoを0に設定しておくのは良い習慣です。0はプログラムにエラーがないことを意味し
あるデータ型を別のデータ型に変換することを型キャストまたは型変換と呼びます。例えば、long型の値をint型変数に格納したい場合、longをintにキャストします。キャスト演算子を使って明示的に変換できます。 (型名) 式 以下の例では、キャスト演算子により整数変数同士の除算を浮動小数点演算として実行しています。 #include <stdio.h> int main() { int sum = 17, count = 5; double mean; mean = (double) sum / count; printf(Value of mea
ヘッダーファイルは.h拡張子を持つファイルで、複数のソースファイル間で共有するC関数の宣言やマクロ定義を含みます。ヘッダーファイルには、プログラマが自作するファイルと、コンパイラに付属するシステムヘッダーの2種類があります。 プログラムでヘッダーファイルを利用するには、Cプリプロセッサ指令#includeで読み込みます。stdio.hのようにコンパイラ付属のヘッダーを読み込んだ例をすでに見てきました。 ヘッダーファイルをインクルードすることは、その内容をコピーすることと等価ですが、手動でコピーするのはエラーの原因になり、特に複数のソースファイルがある場合は良くない習慣です。 C/C++プ
C言語プリプロセッサはコンパイラの一部ではなく、コンパイルプロセスにおける独立したステップです。簡単に言えば、Cプリプロセッサはテキスト置換ツールであり、実際のコンパイル前に必要な前処理を行うようコンパイラに指示します。ここではCプリプロセッサをCPPと呼びます。 プリプロセッサ指令 すべてのプリプロセッサ指令はハッシュ記号(#)で始まります。これは最初の非空白文字でなければならず、可読性のために最初の列から始めるのが慣例です。主なプリプロセッサ指令を以下に示します。 No.指令と説明 1#defineプリプロセッサマクロを置換定義します。 2#include別ファイルのヘッダーを挿入し
C言語