プログラミング

C++超入門① 最初のプログラムを書いて動かそう

C++の最初の一歩として、画面へ文字を表示するコードを書き、main関数やセミコロンの意味を学びます。

ゲームを作ってみたくてC++を調べたら、最初のコードから記号だらけ。「これ、全部覚えてからじゃないと始められない?」と思うかもしれません。

大丈夫です。最初は、短いコードを動かし、表示する文章を変えるだけで十分。この全10回のシリーズでは、変数、条件分岐、ループを順に足し、最後に点数管理プログラムを作ります。

この回の目標は、自分で書いた文章を2行表示することです。

1. C++を動かすには、何が必要?

C++は、ゲームやアプリなどで使われる言語です。実行環境にもよりますが、通常はソースコードをコンパイラで実行可能な形へ変換してから動かします。

  • ソースコード:人が書くプログラムの文章
  • コンパイラ:コードを実行用の形へ変換するソフト
  • コンパイル:その変換作業
  • エディター:コードを書くためのソフト

VS Codeはエディターです。VS Codeだけを入れても、C++のコンパイラまで使えるとは限りません。学校の授業なら、まず指定された環境を使いましょう。

このシリーズはC++17以降を想定しています。ブラウザの学習環境なら、言語をC++にし、規格の選択肢があればC++17以降を選びます。C言語とは別なので、「C」を選ばないようにしてください。

2. 最初は、このコードを1本だけ実行する

#include <iostream>

int main() {
    std::cout << "Hello, C++!" << '\n';
    return 0;
}

期待する表示です。

Hello, C++!

ブラウザの学習環境では、上の全体をコード欄へ入力して実行します。この例にキーボード入力はないので、「標準入力」の欄は空で構いません。

g++が用意されているパソコンなら

コードをhello.cppとして保存し、そのファイルがあるフォルダーのターミナルで次を実行します。ターミナルは、文字で操作の指示を送る画面です。

g++ -std=c++17 -Wall -Wextra hello.cpp -o hello

-std=c++17は言語規格、-Wall -Wextraは警告の指定、-o helloは出力ファイル名です。

成功したら、WindowsのPowerShellでは.\hello.exe、macOSやLinuxでは./helloで動かします。g++が見つからない場合は、コードではなく環境の準備を確認してください。

C++向けのg++は標準ライブラリのリンクも行います。GCC公式のC++プログラムの扱いで、gccとの違いを確認できます。

保存と実行の間には、再コンパイルがある

コードを書き直したら、保存し、もう一度コンパイルしてから実行します。古い実行ファイルを起動したままだと、変更前の文章が出ます。

「編集 → 保存 → コンパイル → 実行」の4つを、まずは分けて覚えましょう。自動で行う開発環境もありますが、何が省略されているかが分かると、動かないときに助かります。

3. 1行ずつ意味をほどいてみよう

#include

入出力に使う標準ライブラリの宣言を取り込む指示です。今回はstd::coutを使うために書きます。

標準ライブラリは、C++の環境が用意する基本の道具です。自分で文字表示の仕組みを一から作らなくても、用意されたものを使えます。

#includeの行にはセミコロンを付けません。下に並ぶ通常の文とは書式が違います。

int main()と波かっこ

今回のようなプログラムでは、mainが処理を始める入口です。関数という処理のまとまりの1つで、{から対応する}までが中身になります。

intは整数を結果として返す型です。返す仕組みは後で学ぶので、この回では基本形として使ってください。

内側の行を右へずらすのがインデント。どこまでが同じ処理のまとまりかを読みやすくします。

std::coutと<<

std::coutは標準出力のストリームです。ストリームはデータの流れを扱う仕組みで、この例では画面へ表示するための出口だと思えば十分です。

<<の右側にあるものを、順に出力へ送ります。

std::cout << "Hello, C++!" << '\n';

まず文字列を送り、その次に改行を送っています。std::は標準ライブラリ側の名前だと示す部分です。このシリーズでは省略せず書きます。

return 0

return 0;でmainを終え、呼び出した環境へ正常終了を表す0を返します。0を画面に表示するわけではありません。

「画面に出す」と「関数から値を返す」は別の作業です。この区別は関数の回でもう一度使います。

4. 表示する文章と改行を変える

#include <iostream>

int main() {
    std::cout << "Start" << '\n';
    std::cout << "Ready" << '\n';
    return 0;
}
Start
Ready

上の表示が終わってから下へ進みます。文字を囲む" "が文字列、'\n'が改行を表す文字です。

std::cout << "Start\n";のように、改行を文字列の中へ書いても構いません。

コードを改行しただけでは、表示は改行されない

次の2行を実行すると、答えはStartReadyです。

std::cout << "Start";
std::cout << "Ready";

画面の改行には'\n'などが必要です。ソースコードの見た目と実行結果の見た目は、別に指定するんですね。

日本語も表示できますが、文字化けしたらソースファイルやターミナルの文字コードを確認します。英数字で先に試すと、表示設定の問題を切り分けやすくなります。

5. コメントで「なぜ」を残す

// 開始したことを知らせる
std::cout << "Start\n";

/*
複数行に書けるコメントです。
プログラムの出力には含まれません。
*/

//から行末まで、/*から*/までがコメントです。人が読むためのメモで、そこに書いた文は実行されません。

「coutで表示する」という説明だけでなく、「何のために表示しているか」を書くと役立ちます。すべての行へ長いコメントを付ける必要はありません。

6. エラーが出たときの確認順

初めてのエラーは、画面が急に難しく見えるので焦りますよね。まずは最初のエラー1つだけを見ます。1か所の間違いから、後ろに何件も続く場合があるためです。

症状 確認すること
コンパイラが見つからない 準備した環境、フォルダー、コマンド
coutが見つからない std::と#include <iostream>
;が必要と表示される 指摘された行と1行前
引用符のエラー "を両側で閉じているか
以前の文章が出る 保存後に再コンパイルしたか

特に、全角の;と半角の;、見た目の似た引用符は区別されます。std::coutの大文字・小文字も同じにそろえます。

C++の文法規則は公開標準草案で確認できます。ただし規格書は入門書ではないので、ここで全項目を読もうとしなくて大丈夫です。エラーの読み方も併用してください。

7. 練習:表示を自分の言葉へ変えよう

最初のHello, C++!を好きな文章へ変え、さらに2行の自己紹介を表示してください。名前は架空のものやハンドルネームで構いません。

模範解答

#include <iostream>

int main() {
    std::cout << "Name: Aoi\n";
    std::cout << "I want to make a game.\n";
    return 0;
}

解説

1行目のstd::coutで名前を表示し、\nで改行します。2行目も同じように文章を表示し、最後にreturn 0で終わります。

表示を増やすためにmainまで増やす必要はありません。1つのmainの中へ、実行したい表示の文を追加します。

文章を変更して保存し、コンパイルし直した後に表示が変われば成功です。「1か所変えたら、何が変わるか分かる」という感覚を少しずつ増やしましょう。

次の一歩

今回は、実行の基本形と表示だけを扱いました。次は数値や名前を変数に保存し、入力した値で計算します。

次の記事:変数・型・入力と計算 / C++シリーズ一覧

← 記事一覧へ戻る