第3章 プログラム基礎

変数と定数

プログラミングにおける「変数」は、その名の通り値が変化(変更)することが可能なデータの格納場所を指します。一方、「定数」は、一度設定した値が変更できない、つまり値が常に一定であるデータの格納場所を指します。

C言語で変数を使用する例を示します。C言語では、変数の値は自由に変更することが可能です。

// 変数xを宣言し、値10を代入
int x = 10;

// 変数xの値を20に更新
x = 20;

上記のコードでは、変数xに最初に10を代入し、その後20に更新しています。このように、変数の値は自由に変更することが可能です。

C言語で定数を使用する例を示します。C言語では、「const」キーワードを使用して定数を定義します。定数の値は、初期化と同時に設定する必要があり、その後変更することはできません。

// 定数PIを宣言し、値3.14159を代入
const double PI = 3.14159;

上記のコードでは、PIという名前の定数に値3.14159を代入しています。一度代入した後はこのPIの値は変更できません。


変数と定数の主な違いは、値が変更可能かどうかという点にあります。変数は値が変更可能で、定数は値が変更不可能です。この特性を理解し、それぞれ適切な場面で使い分けることが重要です。


データ型

プログラミングにおけるデータ型(Data Type)は、データの種類や特性を定義したものです。データ型は、どのようなデータを保存できるか、データに対してどのような操作ができるか、どのようにメモリに格納されるか、などを決定します。それぞれのプログラミング言語により、利用できるデータ型の種類や特性が異なります。

主なデータ型には以下のようなものがあります。

  1. 整数型(Integer): 整数を表現するためのデータ型。例:-1, 0, 1, 2, 3, など。
  2. 浮動小数点型(Floating-Point): 小数を含む数値を表現するためのデータ型。例:-1.23, 0.0, 3.14, など。
  3. 複素数型(Complex): 実数部と虚数部を持つ数値を表現するためのデータ型です。数学的な計算において重要な役割を果たします。Pythonなど一部の言語ではサポートされています。
  4. 文字型(Char): 単一の文字を表現するためのデータ型。例:'a', 'b', '1', '2', など。
  5. 文字列型(String): 文字の連続(文字列)を表現するためのデータ型。例:"hello", "world", "123", など。
  6. 論理型(Boolean): 真または偽(true/false)を表現するためのデータ型。
  7. 配列型(Array): 同じ型のデータの集合を表現するためのデータ型。
  8. オブジェクト型(Object): 特定の構造を持つ複合的なデータを表現するためのデータ型。
  9. タプル型(Tuple): 複数の異なる型の要素を持つことができるデータ型で、一度作成したら要素の追加や変更ができない(不変)特性を持っています。Pythonなどの言語ではよく使われます。
  10. 辞書型またはマップ型(Dictionary or Map): キーと値のペアを格納するためのデータ型です。キーを使って高速に特定の値を検索することができます。
  11. 集合型(Set): 重複する要素を持たないコレクションを表現するデータ型です。要素の追加、削除、検索などの操作が可能です。
  12. 列挙型(Enum): 予め定められた固定の値のみを取りうるデータ型です。一般的には、特定の選択肢を表現するために使用されます。
  13. ヌル型(Null): 変数が何も値を持っていない状態を示すための特殊なデータ型です。プログラムの中で変数が意図的に空であることを表現するために使われます。
  14. 関数型(Function): 関数自体を値として持つことができるデータ型です。これにより、関数を変数に代入したり、他の関数に引数として渡したりすることが可能になります。このデータ型は、関数型プログラミング言語やJavaScriptなどでよく使われます。
  15. ジェネリクス型(Generics): 型をパラメータとして取ることができるデータ型です。JavaやC#などの一部の言語では、ジェネリクスを使って型安全性を保つことができます。
  16. ユニオン型(Union): 複数の異なる型のいずれかを取りうる値を表現するためのデータ型です。CやTypeScriptなどの言語でサポートされています。
  17. オプショナル型(Optional):値が存在しない可能性を表現するデータ型で、SwiftやKotlinなどで利用できます。オプショナル型はnull参照の問題を防ぐために使用されます。
  18. レンジ型(Range):連続した範囲の値を表現するデータ型で、PythonやRubyなどで利用できます。

以上が一部のデータ型です。各プログラミング言語は独自のデータ型を持っていることもあり、特定の言語を学習する際は、その言語の特性を理解するためにデータ型のドキュメンテーションを参照することをお勧めします。


制御構造

プログラミングにおける制御構造とは、プログラムの流れを制御するための構造を指します。主に条件分岐(if文やswitch文)、ループ(for文やwhile文)、および関数呼び出しといった形で現れます。以下にそれぞれの実例をC言語のサンプルコードと共に説明します。

条件分岐(if文)
int x = 10;
if (x > 5) {
    printf("x is greater than 5\n");
} else {
    printf("x is less than or equal to 5\n");
}

上記のコードは、変数xの値が5より大きいかどうかを判断しています。もしxの値が5より大きければ、"x is greater than 5"と出力します。それ以外の場合は(x5以下の場合は)"x is less than or equal to 5"と出力します。

ループ (for文)
for(int i = 0; i < 10; i++) {
    printf("%d\n", i);
}

上記のコードは、iの値が0から9までの間、iの値を出力します。ループは、特定の条件が満たされる間、一定の操作を繰り返すのに用いられます。


関数呼び出し
void sayHello() {
    printf("Hello, World!\n");
}

int main() {
    sayHello();
    return 0;
}

上記のコードでは、sayHelloという関数を定義し、その関数を呼び出すことで"Hello, World!"と出力します。関数は特定の処理をまとめたもので、必要なときにその処理を呼び出すことができます。

これらの制御構造を理解し使いこなすことは、プログラムの流れを自在に操るために重要です。