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か所変えたら、何が変わるか分かる」という感覚を少しずつ増やしましょう。
次の一歩
今回は、実行の基本形と表示だけを扱いました。次は数値や名前を変数に保存し、入力した値で計算します。