torus711 のアレ

主に競技プログラミングの問題について書きます

Windows で競技プログラミングしよう

この記事について

@ さんの 競技プログラミング入門 へのゆるふわ寄稿です。
Windows 環境で競技プログラミングをするために必要なものの紹介と、インストール手順・使い方を解説します。
なお、プログラミング言語C++ を使うことを想定しています。

導入

プログラミングをするための環境は様々ですが、競技で IDE統合開発環境)を使うのは少々重装備すぎると思っています。
従ってこの記事では、 IDE を使わずコマンドプロンプト上からコンパイル・実行ができるようにすることを目指します。
必要なものは、言語処理系とテキストエディタの二つです。
言語処理系として MinGW (に付属する GCC )を採用し、エディタは Vim です……が、多少クセもありますし、他にも有名どころをいくつか紹介します。
また、記事中の例は 32 bit 版 Windows 7 でのものです。
他の環境では変わる可能性があるので、注意してください。

コマンドプロンプト

コマンドプロンプトは次の二通りの方法で開くことができます。

  • スタートメニュー -> すべてのプログラム -> アクセサリ -> コマンド プロンプト
  • スタートメニュー -> ファイル名を指定して実行 -> "cmd" (引用符は分かりやすさのため)と入力して OK *1

また、任意のフォルダでコマンドプロンプトを開きたい場合は、次の内容を記述したテキストファイルを .bat という拡張子で保存してダブルクリックすると楽だと思います。 *2

cmd

終了する場合はウィンドウのバツボタンをクリックするか "exit"(引用符は分かりやすさのため)と入力して Enter キーを押下します。

MinGW

MinGW とは Minimalist GNU for Windows の略で、UNIX 系 OS でよく使われるツール群を Windows に移植したものです。
これをインストールすることでコンパイラといくつかのツールが使えるようになります。

ダウンロードとインストール

MinGW のサイト の左サイドバー、Navigation 以下にある Download からダウンロードすることができます。
最新版をインストールする場合、下のリストには目をとらわれず、"Download mingw-get-inst- ほげほげ" というリンクをクリックしましょう。

リンクをクリックするとインストーラがダウンロードされるので実行します。
インストール手順はよくあるソフトウェアと同じですので、"next >" をクリックして進めていきましょう。
途中でインストールするコンポーネントを聞かれるので "C++ Compiler" には忘れずにチェックを入れます。
また、MSYS ( Minimal SYStem ) をインストールすると UNIX 由来のツールコマンドプロンプトで使えるようになるのでこちらにもチェックを入れましょう。

"Next >" をクリックすると確認画面になるので、"Install" をクリックすればインストールが開始されます。

環境変数 PATH の設定

残念ながら、インストールしただけでは好きな場所から呼び出すことができないので、「パスを通す」という作業が必要になります。
まず、スタートメニューを開き、「コンピューター」の右クリックメニューから「プロパティ」を選択します。 *3 *4

次に、「システムの詳細設定」を選択します。

更に「環境変数」と書かれたボタンをクリックします。

すると、環境変数を設定するウィンドウが開くので、ユーザー環境変数から PATH を選択して「編集」ボタンを押します。
(一覧からダブルクリックでも大丈夫です)

「設定値」と書かれた右にあるテキストボックスに次の二つのフォルダのパスをセミコロン ( ; ) で区切って追記します。 *5

  • MinGW インストールフォルダ直下にある bin フォルダ
  • MinGW インストールフォルダから msys -> 1.0 と辿ったフォルダ内の bin フォルダ

元から書いてある内容は消去せずに、追記するようにしてください。
(元からある内容の末尾にセミコロンが無い場合はセミコロンを入れてから追記してください)
下はデフォルトの C ドライブ直下にインストールした場合の例です。

C:\MinGW\bin;C:\MinGW\msys\1.0\bin;

最後に、開いたウィンドウを「OK」ボタンを押して閉じていけば完了です。
コマンドプロンプトから次のコマンドを実行して、GCC のバージョンが表示されれば成功です。

g++ --version

これで、MinGW のインストールは完了です。

GCC のアップグレード

この状態での GCC はちょっと古いので、最新版にアップグレードします。
特に気にならない人はこのセクションを読み飛ばしてください。

まず、次の二つのコマンド *6 で、パッケージカタログをアップデートしてから GCC のパッケージ名を調べます。

mingw-get update
mingw-get list | grep "g++"

パッケージ名が分かったので、次のコマンドで GCC をアップグレードできます。

mingw-get upgrade mingw32-gcc-g++

これで、GCC のアップグレードは完了です。

エディタ

プログラムを書くにはテキストエディタが必要です。
わたしが使っているのは Vim ( 正確には GUI を備える gVim )で、KaoriYa さんで配布されています。
アーカイブをダウンロードしたら、好きなフォルダに解凍してパスを通しておくとコマンドプロンプトから起動できます。
コマンドプロンプトから起動する場合は、次のようにします。

gvim hogehoge.cpp

あるいは、cpp ファイルの関連付けを変更しておけば、対象をダブルクリックしても起動できます。

他に、Notepad++ や Mery といったエディタがあるので、気に入ったものを使いましょう。

コマンドプロンプト上でのコンパイル

プログラムを書く準備が整ったので、コンパイル・実行の方法を解説します。
ソースファイルを prog.cpp として保存したとしましょう。
プログラムを保存したフォルダでコマンドプロンプトを開いて、次のコマンドを実行するとコンパイルされます。

g++ prog.cpp

コンパイルエラー等が無ければ、a.exe という実行ファイルが生成されます。
実行ファイルの名前を指定するには、次のようにします。

g++ prog.cpp -oprog.exe

ここで、-o に続く文字列が実行ファイルの名前になります。

プログラムの実行

では、コンパイルされたプログラムを実行しましょう。
コマンドプロンプトに実行ファイル名を打ち込めば実行されます。

prog.exe

拡張子は省略可能で、次のようにしても実行できます。

prog
リダイレクト

普通に実行すると、プログラムへの入力を毎回入力するかコピー&ペーストしなければなりません。
これではデバッグ作業がちょっと面倒ですよね。
そこで、「リダイレクト」という機能を利用します。
リダイレクトを使うことで、ファイルに保存した内容をそのままプログラムへの入力とすることができます。
リダイレクトを使うには、実行ファイル名に続いて "<" (引用符は分かりやすさのため)を書き、更にファイル名を続けます。
入力を保存したファイルが input.txt だとして、次のようにして実行すれば、ファイルの内容がプログラムへの入力となります。

prog < input.txt

こうすると、プログラムの出力だけが画面に表示されるので見やすくなるという利点もあります。

まとめ

必要そうなことをどんどん書き連ねていった結果、なんだか取り留めの無い記事になってしまいました。
しかしながら、分量が膨れただけあって、必要なことにはひと通り触れられたのではないかと思います。
この記事が、ほんの少しでも誰かの役に立てば幸いです。

それでは、Good Luck & Have Fun !

*1:「ファイル名を指定して実行」は Windows キー + R でも開くことができます。

*2:簡易的な方法です。フォルダの右クリックメニューを拡張する方法もあります。

*3:スタートメニューに「コンピューター」が無い場合は、コントロールパネルから「システム」を選択してください

*4:「コントロールパネル」も無い場合は Windows キーを押しながら Pause / Break キーを押してください

*5:バージョンアップによって変更になっている可能性があります

*6: "list" の右は小文字のエルではなく、Shift + \ ( BackSpace の左 ) で入力される文字です