C/C++プログラミング入門 – はじめてのプログラミング

注意: この記事は1年以上前に掲載されたものです。情報が古い場合がありますのでお気を付け下さい。

C/C++プログラミング入門 – 環境構築』ではWindows、OS X、GNU/LinuxシステムごとにCおよびC++の開発環境の構築方法を説明した。ここでは、実際にプログラミングを書いてみよう。ここでは、はじめてのプログラミングとして「hello, world」を表示するプログラムを作ってみたい。

C言語でコードを書く

では、まずは以下のコードを書いてみよう。ここでは、C言語で「hello, world」を表示するコードを作成する。

#include <stdio.h>
#include >stdlib.h>
// 上2つのinclude文は下のプログラムで必要になる

// ここから処理が始まる(C言語では全ての処理はint mainから始まる)
int main() {
    printf("hello, world\n");    // 「hello, world」を出力する
    return EXIT_SUCCESS;     // 正常に終わったことを返す
}

このファイルを「hello.c」というファイル名で任意の場所に保存する。

コンパイルして実行する

先ほど作成したコードをコンパイルし、完了したら実際に実行をしてみる。ここではそれぞれの環境で若干異なるので、別途説明を行いたい。

WindowsとVisual Studioを使用している場合

Visual Studioを利用している場合は、スタートメニューまたはスタート画面より、「Visual Studio 2013」->「Visual Studio Tools」より「開発者コマンドプロンプト」を起動する。その後、先ほどhello.cを保存した場所 ((例えばC:\Users\hoge\Documents\clect\hello.cppに保存したのであれば、「cd C:\Users\hoge\Documents\clect」と入れる)) へ移動し、以下のコマンドを入れる。

> cl hello.c

これでエラーがなければhello.exeが作成されるので、試しに以下のコマンドを入れる。

> .hello.exe
hello, world

上記のように、「hello, world」と表示されれば完了だ。

OS XまたはGNU/Linuxを使用している場合

OS XまたはGNU/Linuxシステムを使用している場合は多くの場合共通なので、一括して説明を行う。コンパイラーとしてOS Xでは主にClangが、GNU/Linuxシステムでは主にGCCが使われているが、成立経緯からコマンドがかなり近いようになっているので、同時に説明する。

まず、ターミナルを起動し、hello.cを保存した場所へ移動する ((~/clectに保存した場合は「cd ~/clect」と入れる)) 。その後、以下のコマンドを入れる。

$ clang hello.c -o hello

または

$ gcc hello.c -o hello

OS Xであれば通常はclangを、GNU/Linuxシステムであればgccを使えば問題ないだろう。

その後、以下のコマンドを入れる

$ ./hello
hello, world

上記のように「hello, world」と表示されれば問題ない。

C++としてコンパイルしてみる

ここまではC言語で書いた場合を説明した。これをC++でコンパイルした場合はどうなるだろうか。

まずは、作成したhello.cをコピーしてhello_cpp.cppを作成する。そして、以下のコマンドを入力する。

Visual Studioの場合

> cl hello_cpp.cpp /EHsc
> .hello_cpp.exe
hello, world

GCCの場合

$ g++ hello_cpp.cpp -o hello_cpp
$ ./hello_cpp
hello, world

clangの場合

$ clang++ hello_cpp.cpp -o hello_cpp
$ ./hello_cpp
hello, world

これをコンパイルした上で、生成されたhello_cppを実行した場合もまた、「hello, world」と表示される。

つまり、C++はC言語との互換性がある程度確保されており、C言語で書かれたコードでも多くの場合C++としてコンパイルすることが可能になっているのである。

逆を言えば、C++でコードを書いている時、C++の書き方に固執しなくても、C言語の書き方で対処できるという特徴があることを覚えておくと良いだろう。

C++でコードを書く

では、hello, worldのコードを純粋なC++で書いた場合はどうなるだろうか?この場合、以下のようになる。

#include <iostream>
#include <cstdlib>
// 上2つのinclude文は下のプログラムで必要になる

// ここから処理が始まる(C++も全ての処理はint mainから始まる)
int main() {
    std::cout << "hello, world" << std::endl;  // これも「hello, world」を出力する処理である
    return EXIT_SUCCESS;  // 正常に処理が終わったことを返す
}

これをhello_cpp2.cppで保存し、以下のようにコンパイルをかけて実行した場合も、「hello, world」と出力される。

Visual Studioの場合

> cl hello_cpp2.cpp /EHsc
> .hello_cpp2.exe
hello, world

GCCの場合

$ g++ hello_cpp2.cpp -o hello_cpp2
$ ./hello_cpp2
hello, world

clangの場合

$ clang++ hello_cpp2.cpp -o hello_cpp2
$ ./hello_cpp2
hello, world

ここで作成したコードはC++特有の機能 ((ここでは名前空間(std::がそれにあたる)と演算子オーバーロード(<<がこれにあたる)などが当たるが、ここで説明を行うと混乱の原因となる可能性が高いため、後ほど説明したい)) を使用しているため、C言語としてはコンパイルできない。そのため、g++をgccと、clang++をclangと入れた場合、エラーが発生してコンパイルが通らないので要注意である。

終わりに

この項目ではとりあえず「hello, world」と表示させるプログラムをC言語とC++で書いてみるということを行った。しかしながらこの説明ではこのコードはどういう意味があるのか(例えば#includeやint main、C++の特有の機能)、コマンドの意味など、あらゆる面でわからないことがたくさんあるだろう。

しかしながら、誰だってそうだが(私もそうだが)、最初のうちは右も左もわからない状況から少しずつ学習をして行ってプログラミング言語を習得して行った。

ともあれ、これでプログラミングの第一歩を踏み出したのだから、少しずつ進んでみよう。

タイトルとURLをコピーしました