My note for history

学んだこと、感じたことをまとめたノート

C++入門: iostreamの使い方

C++には、コンソール入出力を行うための標準ライブラリであるiostreamがあります。iostreamを使うことで、プログラムとユーザーが対話的に情報をやり取りしたり、結果を表示したりすることができます。この記事では、初心者向けにiostreamの基本的な使い方を解説します。

続きを読む

C++入門: プログラミング初心者向けガイド

はじめに

C++は汎用的で高性能なプログラミング言語であり、幅広いアプリケーションやシステムの開発に利用されています。この記事では、プログラミング初心者の方々を対象に、C++の基本的な概念と文法について解説します。理解しやすく学びやすいように、具体的な例を交えて進めていきます。

1. C++とは?

C++は、1980年代にBjarne Stroustrupによって開発されたプログラミング言語です。C言語を基にしており、オブジェクト指向の機能を追加した言語として知られています。C++の特徴は、パフォーマンスと柔軟性の高さであり、システムプログラミングからデスクトップアプリケーション、ゲーム開発まで幅広い用途で使用されています。

2. 環境のセットアップ

C++を学ぶ前に、開発環境をセットアップしましょう。主流のC++開発環境としては、Visual Studio、Code::Blocks、そしてGNU Compiler Collection (GCC)があります。これらのツールをインストールして、環境を整えてください。

課題

この記事では「課題」という形で読者の方に演習していただけるようにしようと思います。 まずは、C++を実行できる環境を構築してください。 基本的に必要となるのは以下の二つです。

エディタは実際にコードを書くためのツールで、標準のメモ帳でも可能です。しかし、より効率よくプログラミングするには適切なエディタを選ぶと良いです。

の2点がおすすめです。 それでは、頑張ってください。

3. Hello, World! - 最初のプログラム

さっそく最初のプログラムを書いてみましょう。

#include <iostream>

int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

このプログラムは、画面に「Hello, World!」と表示するシンプルな例です。#include <iostream>は、入出力ストリームを利用するためのライブラリを読み込むためのコードです。main()関数は、プログラムのエントリーポイントであり、実行時に最初に呼び出される関数です。

実行結果

以下のコマンドでコンパイルをします。

g++ filename.cpp

以下のコマンドで実行します。

./a.out

出力結果は以下の通りです。

Hello, World!

4. 変数とデータ型

変数は、データを格納するためのメモリ領域を示すものです。C++では、変数を宣言する際に適切なデータ型を指定する必要があります。例えば、整数を格納するためにはint型を、小数点数を格納するためにはfloat型を使用します。

#include <iostream>

int main() {
    int age = 25;
    float height = 175.5;
    char grade = 'A';
    std::cout << "Age: " << age << ", Height: " << height << ", Grade: " << grade << std::endl;
    return 0;
}

実行結果

以下のコマンドでコンパイルをします。

g++ filename.cpp

以下のコマンドで実行します。

./a.out

出力結果は以下の通りです。

Age: 25, Height: 175.5, Grade: A

課題

Age, Height, Gradeをユーザからの入力(標準入力)で与えてください。

出力時はstd::coutを使用しましたが、入力時はstd::cinを使用します。不等号の向きに注意してコーディングしてみてください。

5. 演算子

C++には、算術演算子+-*/など)や比較演算子==!=<>など)、論理演算子&&||!など)があります。これらを使用して数値や条件の演算ができます。

6. 制御構造

C++では、条件に応じて処理を分岐させるif文や、繰り返し処理を行うforループやwhileループを利用できます。

#include <iostream>

int main() {
    int num = 5;

    // if文
    if (num > 0) {
        std::cout << "Positive number." << std::endl;
    } else if (num == 0) {
        std::cout << "Zero." << std::endl;
    } else {
        std::cout << "Negative number." << std::endl;
    }

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

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

    return 0;
}

実行結果

以下のコマンドでコンパイルをします。

g++ filename.cpp

以下のコマンドで実行します。

./a.out

出力結果は以下の通りです。

Positive number.
0 1 2 3 4
0 1 2 3 4

7. 関数

関数は、複数の処理をひとまとめにして、名前をつけたものです。C++では、関数を定義して再利用することができます。

#include <iostream>

// 関数の定義
int add(int a, int b) {
    return a + b;
}

int main() {
    int result = add(3, 5); // 関数の呼び出し
    std::cout << "Result: " << result << std::endl;
    return 0;
}

実行結果

以下のコマンドでコンパイルをします。

g++ filename.cpp

以下のコマンドで実行します。

./a.out

出力結果は以下の通りです。

Result: 8

8. クラスとオブジェクト

C++オブジェクト指向言語であり、クラスとオブジェクトの概念が重要です。クラスはオブジェクトの設計図であり、オブジェクトはそのクラスのインスタンスです。

この概念はプログラムにおいて非常に重要で、難易度が高い項目となりますので、ここでは簡単に全体像を示すだけとさせていただきます。詳しい定義については別の記事にて解説します。

#include <iostream>

// クラスの定義
class Rectangle {
public:
    int width;
    int height;

    int getArea() {
        return width * height;
    }
};

int main() {
    // オブジェクトの作成
    Rectangle rect;
    rect.width = 5;
    rect.height = 3;

    // メンバ関数の呼び出し
    int area = rect.getArea();
    std::cout << "Area: " << area << std::endl;
    return 0;
}

実行結果

以下のコマンドでコンパイルをします。

g++ filename.cpp

以下のコマンドで実行します。

./a.out

出力結果は以下の通りです。

Area: 15

9. ポインタ

ポインタは、変数のメモリアドレスを格納する特殊な変数です。C++ではポインタを使用して、直接メモリを操作することができます。

こちらもクラスに引き続き重要で難易度が高い項目となります。
簡単に説明すると、変数が格納されている場所とその変数の値の二つを扱うことが可能になります。
配列と似たような役割ですが詳しい違いについては別の記事で解説します。

#include <iostream>

int main() {
    int num = 10;
    int* ptr = &num; // ポインタの定義とアドレスの代入

    std::cout << "Value: " << *ptr << std::endl; // ポインタが指し示す値の表示
    return 0;
}

実行結果

以下のコマンドでコンパイルをします。

g++ filename.cpp

以下のコマンドで実行します。

./a.out

出力結果は以下の通りです。

Value: 10

10. 標準ライブラリの利用

C++には、便利な標準ライブラリが用意されています。例えば、数学関数やデータ構造を簡単に利用することができます。

#include <iostream>
#include <cmath>

int main() {
    double x = 2.0;
    double result = std::sqrt(x); // 平方根の計算
    std::cout << "Square root of " << x << " is " << result << std::endl;
    return 0;
}

実行結果

以下のコマンドでコンパイルをします。

g++ filename.cpp

以下のコマンドで実行します。

./a.out

出力結果は以下の通りです。

Square root of 2 is 1.41421

11. プロジェクトのビルドと実行

最後に、C++プロジェクトのビルドと実行方法を簡単に説明します。環境によって異なりますが、通常はソースコードコンパイルして実行可能なファイルを生成し、それを実行することでプログラムが実行されます。

以上でC++の基本的な概念と文法についての入門ガイドを終了します。これらの基本的な知識をマスターすることで、より高度なC++プログラミングを行う準備が整います。継続的な学習と実践を通じて、C++の力を最大限に発揮できるようにしてください。幸運を祈ります!

アルゴリズム問題の解法としての最大公約数とユークリッドの互除法

アルゴリズム問題によく登場する「最大公約数」について考えてみましょう。数式を重視しながら、具体的なプログラムコードよりも、考え方に焦点を当てます。

続きを読む

unsignedについて

signは符号付きという意味で, unsignedをつけることによって符号なしの変数を表す. 通常のint(signed)の表示範囲が-2,147,483,648 ~ 2,147,483,647であり, unsigned intの表示範囲は0 ~ 4,294,967,295となる. 正の整数を重点的に扱う場合に有用だと考えられる.

アニメ「魔道祖師」の内容が難しい人向けにあらすじを分かりやすく書きました(ネタバレなし)

f:id:kokawakko:20210115153048p:plain

©2020 Shenzhen Tencent Computer Systems Company Limited

魔道祖師についていろいろ調べた記事。

内容が難しかった人は参照するといいかもしれない。

続きを読む