B - 1.01.出力とコメント 解説 /

実行時間制限: 0 msec / メモリ制限: 0 KB

前のページ | 次のページ

キーポイント

  • #include <bits/stdc++.h>using namespace std;は毎回最初に書く
  • C++のプログラムはmain関数から始まる
  • cout << "文字列" << endl;で文字列を出力できる
  • ///* */コメントを書ける
書き方 コメントになる場所
// 同じ行の//を書いた場所より後
/* */ /**/の間
  • プログラムは基本半角文字で書く

プログラムの基本形

まずはプログラムの基本形について学びましょう。次のプログラムは何もしないプログラムです。
この形式は今後解説するプログラムのほぼ全てに登場しますが、暗記する必要はありません。

#include <bits/stdc++.h>
using namespace std;

int main() {
}

このプログラムについて知っておくべきことは、次で説明する「main関数」についてのみです。

main関数

C++のプログラムはmain関数から始まります。上のプログラムでは4行目から5行目までがmain関数です。

int main() {
}

C++のプログラムを起動すると、main関数の{の次の行から実行され、それに対応する}に辿り着くとプログラムを終了します。
このプログラムではmain関数の{ }の中に何も書いていないので、何もせずにプログラムは終了します。

今後のプログラムでは基本的にmain関数の中だけを考えれば良いです。自分でプログラムを書く場合、main関数の外の部分はコピー&ペーストしましょう。

main関数の外の部分についての詳細は第4章で説明しますが、このページの末尾の「細かい話」で簡単に説明しています。気になる人は読んでみてください。
読むのが面倒な人は「プログラムの最初にとりあえず書く必要があるもの」くらいの認識で良いです。


出力

最初に提出したプログラムの詳細を見てみましょう。
このプログラムは「Hello, world!」という文字列を出力する(画面に表示する)プログラムです。

#include <bits/stdc++.h>
using namespace std;

int main() {
  cout << "Hello, world!" << endl;
}
実行結果
Hello, world!

先程述べた通り、main関数の中だけに注目しましょう。このプログラムのmain関数の中には次の1行のプログラムが書かれています。

  cout << "Hello, world!" << endl;

この行が出力を行うプログラムです。この行について以下で詳しく説明します。

cout

C++で文字列を出力するには cout(しーあうと) を使います。

出力する文字列を指定している部分は"Hello, world!"の部分です。
C++プログラムの中で文字列を扱う場合、" "で囲う必要があります。endlは改行を表しています。

"Hello, world!"endlというデータを、<<coutに送っていくイメージと覚えると良いでしょう。

endlはの4文字目は「数字の1」ではなく「アルファベットのl(小文字のL)」です。
文字列 という言葉は聞き馴染みが無いかもしれませんが、単に文字のことだと思っておけば良いです。詳しくは「1.12.文字列と文字」で扱います。

セミコロン

行の一番最後には;(セミコロン)が必要です。C++では、大抵の行の一番最後にはセミコロンが必要になります。どの行にセミコロンが必要でどの行に不要なのかは新しい文法を学んだ際に適宜見ていって下さい。
セミコロンが必要なところで書き忘れるとエラーになるので、注意しましょう。

別の文字列の出力

別の文字列を出力したい場合、次のように" "の中身を変えます。

#include <bits/stdc++.h>
using namespace std;

int main() {
  cout << "こんにちは世界" << endl;
}
実行結果
こんにちは世界

複数の出力

出力を複数回行うこともできます。

#include <bits/stdc++.h>
using namespace std;

int main() {
  cout << "a";
  cout << "b" << endl;
  cout << "c" << "d" << endl;
}
実行結果
ab
cd

このプログラムのポイントは2点です。
まず、5行目で改行を表すendlを出力していないため、aの後に改行がされずにabと出力されます。
次に、7行目でcout << "c" << "d"と書くことで、cdと出力することができます。この書き方を知っているとプログラムを短く書けることがあるので覚えておきましょう。

数値の出力

数値を出力するときは、" "を使わずに、直接書くことでも出力できます。

#include <bits/stdc++.h>
using namespace std;

int main() {
  cout << 2525 << endl;
}
実行結果
2525

コメント

コメントは人間が「プログラムがどういう動作をしているか」等のメモ書きをプログラム中に残しておくための機能です。
プログラムとしての意味はないので、書いても動作に影響はありません。

例を見てみてみましょう。

#include <bits/stdc++.h>
using namespace std;

int main() {
  cout << "Hello, world!" << endl; //Hello, worldと表示
  /*ここも
  コメント*/
}
実行結果
Hello, world!

コメントには二種類の書き方があります。

書き方 コメントになる場所
// 同じ行の//を書いた場所より後
/* */ /**/の間

コメントを使わなくてもプログラムは書けますが、今後プログラム例の中で使うことがあるため、覚えておいて下さい。

コメントアウト

一時的に実行させたくない部分をコメントにしてしまうことで、その部分のプログラムを無効化するというテクニックがあります。このテクニックは コメントアウト と呼ばれ、よく使われています。

#include <bits/stdc++.h>
using namespace std;

int main() {
  cout << "Hello" << endl;
  // cout << "World" << endl;
}
実行結果
Hello

6行目の処理はコメント扱いされるので、"World"は出力されません。

  // cout << "World" << endl;

"World"と出力させたくなった場合もコメントを解除する(//を消す)だけなので、書き直す手間が省けます。


注意点

半角文字と全角文字

基本的にC++プログラムの中に「全角文字」(あいう12 等)が入り込むとエラー(AtCoderではCE)になってしまいます。
プログラムを書くときは必ず「半角文字」(abc12 等)で書くようにしましょう。
特に全角スペース「 」が入り込んでしまった場合、発見が難しくなってしまうので気をつけましょう。

ただし、" "の中とコメント内では全角文字を使うことができます。
コメントで全角文字を使った後、半角入力に戻し忘れて全角文字を紛れ込ませてしまう、というミスに気をつけましょう。


細かい話

細かい話なので、飛ばして問題を解いても良いです。

#include <bits/stdc++.h>

#include <bits/stdc++.h>はC++の機能を「全て」読み込むための命令です。例えばすでに紹介したcoutendl#include <bits/stdc++.h>によって読み込まれた機能です。 今後の解説で出てくるC++の機能の多くは#include <bits/stdc++.h>と書くことで利用できるようになります。これを書かずに読み込みが必要な機能を使った場合、エラーが発生します。

機能は個別に読み込むこともできます。このページで用いたcoutendlだけであれば、#include <iostream>と書くことによって読み込めます。
ただし、はじめのうちは機能の読み込み忘れによるエラーで詰まってしまうことがよくあるので、#include <bits/stdc++.h>を使って一括で読み込むことをおすすめします。

なお、#include <bits/stdc++.h>は業務におけるプログラミングでは推奨されないことがありますが、競技プログラミングやAPG4bで利用する場合は全く問題ありません。
bits/stdc++.hに関して詳しくは4.01.includeディレクティブおよびトップページの「bits/stdc++.hに関するQ&A」を読んでください。

using namespace std;

using namespace std;はプログラムを短く書くための機能です。#includeで読み込んだC++の機能を利用するためには、通常はstd::coutstd::endlのようにstd::をはじめに付ける必要があります。 using namespace std;を利用すると、このstd::を省略して書くことができます。

なお、using namespace std;も業務におけるプログラミングでは推奨されないことがありますが、競技プログラミングやAPG4bで利用する場合は全く問題ありません。
これについて詳しくは4.02.名前空間を読んでください。


問題

リンク先の問題を解いてください。