2
1

PythonユーザーのためのC++チュートリアル (Visual Studio前提)

Last updated at Posted at 2024-09-18

1. C++環境のセットアップ

まず、C++を使うには開発環境を整える必要があります。Pythonでの開発と異なり、C++はコンパイル型言語なので、コンパイラとIDEが必要です。ここではVisual Studioを使います。

1. Visual Studioのインストール

Visual Studio公式サイトからCommunity Editionをダウンロード。
インストール時に「Desktop development with C++」ワークロードを選択してください。

2. 新しいC++プロジェクトを作成

Visual Studioを開き、「Create a new project」→「Console App (C++)」を選択し、プロジェクトを作成します。

1.1. オンラインでC++コードを実行する方法

もしVisual Studioのセットアップが難しい、またはインストールせずに簡単にC++のコードを試してみたい場合、オンラインでC++コードを実行できるサイトもあります。おすすめのサイトは次の通りです:

1. OnlineGDB:

こちらはC++を含む多くのプログラミング言語に対応したオンラインIDEです。C++のコードをすぐに書いて実行でき、デバッグも可能です。初心者にも使いやすいUIが特徴です。

2.使い方:
  1. OnlineGDBにアクセスします。
  2. 画面左側にある言語選択メニューで「C++」を選択します。
  3. コードエディタにC++のコードを入力し、「Run」ボタンを押すと、すぐにコードが実行され、結果が表示されます。

このように、簡単にC++コードの動作確認ができるので、ぜひ試してみてください。

2. C++とPythonの基本構文比較

変数の宣言とデータ型

C++のコード:

#include <iostream> // 入出力を扱うためのヘッダーファイル

int main() {
    int a = 5; // 整数型の変数
    double b = 3.14; // 小数点型の変数
    char c = 'A'; // 文字型の変数
    bool d = true; // ブール型の変数

    std::cout << "a: " << a << ", b: " << b << ", c: " << c << ", d: " << d << std::endl;

    return 0;
}

Pythonのコード:

a = 5  # 整数型の変数
b = 3.14  # 小数点型の変数
c = 'A'  # 文字型の変数
d = True  # ブール型の変数

print(f"a: {a}, b: {b}, c: {c}, d: {d}")

説明:

  • C++ では、変数を宣言する際に、必ず型を指定する必要があります。intは整数、doubleは小数、charは文字、boolは真偽値を表す型です。このように、C++はコンパイル時にすべての変数の型を確認し、型の不一致があればエラーになります。
  • Pythonでは、変数に値を代入する際、型を明示的に指定する必要はありません。Pythonの内部では、データ型が自動的に判定されます。
入出力

C++のコード:

#include <iostream>

int main() {
    int x;
    std::cout << "Enter a number: "; // 出力
    std::cin >> x; // 入力
    std::cout << "You entered: " << x << std::endl; // 出力

    return 0;
}

Pythonのコード:

x = int(input("Enter a number: "))  # 入力
print(f"You entered: {x}")  # 出力

説明:

  • C++ では、std::cinを使って標準入力を受け取り、std::coutを使って出力します。ここで注意すべきは、C++では入力時に自動で型推論はされず、事前に宣言した変数の型に従って値が扱われます。そのため、入力時に文字列ではなく整数として入力されます。
  • Pythonでは、input()関数を使って標準入力を受け取り、print()関数を使って出力します。Pythonではinput()から取得する値は常に文字列なので、数値として扱いたい場合にはint()で型変換が必要です。

3. 制御構文の比較

条件分岐

C++のコード:

#include <iostream>

int main() {
    int num = 10;

    if (num > 5) {
        std::cout << "Number is greater than 5" << std::endl;
    } else {
        std::cout << "Number is 5 or less" << std::endl;
    }

    return 0;
}

Pythonのコード:

num = 10

if num > 5:
    print("Number is greater than 5")
else:
    print("Number is 5 or less")

説明:

  • C++ でもif文を使って条件分岐を行いますが、Pythonと異なり、ブロックの開始と終了を波括弧{}で囲みます。C++ではインデントは必須ではありませんが、可読性のために推奨されます。また、C++では条件式の後にコロンは不要です。
  • Pythonでは、if文を使って条件分岐を行いますが、条件式の終わりにはコロン:をつけ、その次にインデントされたブロックで実行するコードを記述します。Pythonはインデントによってブロックを区別します。
ループ

C++のコード:

#include <iostream>

int main() {
    // forループ
    for (int i = 0; i < 5; i++) {
        std::cout << "i: " << i << std::endl;
    }

    // whileループ
    int count = 0;
    while (count < 5) {
        std::cout << "count: " << count << std::endl;
        count++;
    }

    return 0;
}

Pythonのコード:

# forループ
for i in range(5):
    print(f"i: {i}")

# whileループ
count = 0
while count < 5:
    print(f"count: {count}")
    count += 1

説明:

  • C++forループでは、初期化式、条件式、更新式を一行でまとめて記述します。whileループも同様に、条件式の後に波括弧を使ってループ本体を記述します。Pythonと異なり、forwhileの内部での変数更新は手動で行います。
  • Pythonforループではrange()関数を使い、ループの範囲を指定します。range(5)は0から4までの整数を生成します。また、whileループもPythonではコロンとインデントを使います。

4. 関数の比較

C++のコード:

#include <iostream>

// 整数を受け取り、整数を返す関数
int add(int x, int y) {
    return x + y;
}

int main() {
    int result = add(3, 4);
    std::cout << "Result: " << result << std::endl;

    return 0;
}

Pythonのコード:

# 整数を受け取り、整数を返す関数
def add(x, y):
    return x + y

result = add(3, 4)
print(f"Result: {result}")

説明:

  • C++ では、関数の定義時に戻り値の型と引数の型を必ず明示します。これは、C++が型を厳密にチェックする静的型付け言語だからです。関数の戻り値はreturnで返しますが、関数の戻り値が無い場合はvoid型として定義します。
  • Pythonではdefキーワードを使って関数を定義し、戻り値は明示的に指定する必要はありません。また、関数内での型の指定も不要です。

5. クラスとオブジェクト指向の比較

C++のコード:

#include <iostream>
#include <string>

class Person {
public:
    std::string name;
    int age;

    // コンストラクタ
    Person(std::string name, int age) {
        this->name = name;
        this->age = age;
    }

    // メソッド
    void introduce() {
        std::cout << "My name is " << name << " and I am " << age << " years old." << std::endl;
    }
};

int main() {
    Person p("Alice", 30);
    p.introduce();

    return 0;
}

Pythonのコード:

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def introduce(self):
        print(f"My name is {self.name} and I am {self.age} years old.")

p = Person("Alice", 30)
p.introduce()

説明:

  • C++ では、classキーワードを使ってクラスを定義し、コンストラクタやメソッドはクラスの内部に記述します。Pythonのselfに相当するものはC++ではthisポインタであり、明示的に使う場合もありますが、通常は省略されます。また、C++ではメソッドや変数の公開範囲をpublicprivate
  • Pythonではクラスを定義する際にclassキーワードを使い、コンストラクタには__init__メソッドを使用します。また、メソッドや属性のアクセスはselfを通じて行います。

指定する必要があります。

6. メモリ管理(C++ vs Python)

C++のコード:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> numbers = {1, 2, 3, 4, 5};
    numbers.push_back(6); // 新しい要素を追加
    for (int num : numbers) {
        std::cout << num << std::endl;
    }

    return 0;
}

Pythonのコード:

numbers = [1, 2, 3, 4, 5]
numbers.append(6)  # 新しい要素を追加
for num in numbers:
    print(num)

説明:

  • C++ では、std::vectorという標準ライブラリのテンプレートを使って可変長の配列を扱います。要素を追加するにはpush_back()メソッドを使います。C++ではメモリ管理が重要で、std::vectorは自動的にメモリを管理してくれるため、動的なメモリ確保が安全に行えます。
  • Pythonではリスト型を使って可変長の配列を扱います。リストに要素を追加するにはappend()メソッドを使います。

まとめ

各コードにPythonとC++の対応する構文を説明しました。C++では、静的型付けと明示的なメモリ管理が必要であり、Pythonのような動的な特徴は持っていません。しかし、C++はそのパフォーマンスと低レベルのメモリ制御能力から、非常に効率的なプログラムを作成するのに向いています。

2
1
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1