2011年1月1日土曜日

[C/C++] Hello World!

プログラムではお決まりの"Hello World!"をCで書くと

#include <stdio.h>

main()
  {
    printf("Hello\nWorld! in C\n");
  }

のようになります.
C++で書くと

#include <stdio.h>

int main()
  {
    printf("Hello\nWorld! in C++\n");
    return 0;
  }

もしくは,

#include <iostream>
using namespace std;

int main()
{
  std::cout << "Hello World! in C++" << std::endl;
  return 0;
}

のようになります.
Cのプログラムをコンパイルすると,main関数の戻り値が指定されていないという以下のエラーが出ますが,実行すると表示されます.
warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
main()
^
1 warning generated.
Hello
World!in C

C++のプログラムをコンパイル,実行するとエラーは出ず,以下のようになります.
Hello
World! in C++

<補足>
以前は,
  #include <iostream>
だけで良かったのですが,新しい仕様では,#include <iostream> の部分を
  #include <iostream>
  using namespace std;

とするようになっています.

すなわち,以下のようにコーディングします.

//hello.cpp
#include<iostream>
using namespace std;

int main()
{
  cout << "hello" << endl;

}

そして,gccの場合は以下のようにコンパイルして実行します.
$ g++ hello.cpp
$ ./a.out
hello

<プログラムの解説>

  • 1行目:'//' 以降,行末まではコメントです.プログラムの実行とは関係ありません.上記のプログラムでは,プログラム名'hello.cpp'をコメントとしています.
  • 2行目:'#include <iostream>'は,標準的な入出力に関する情報を取得するための記載で,ほとんどの場合は,標準の入出力を行うので,この行は,おまじないのように書くものとして良いと思います.
  • 3行目:'using namespace std;'は,プログラム内で様々なモノの名前を簡単に書くための宣言といった感じです.これも,とりあえずおまじないのように書くものとして良いと思います.
  • 4行目:空行
  • 5行目:'int main()' は,これ以降にプログラムの本体部分が始まるという意味です.'int main()' が支配している範囲は括弧'{ }'内となります.6行目の' { 'と8行目の' } がその括弧になります.
  • 7行目:' cout ' は画面を表わします.また' << 'は,そこ(今は' cout ')へ押し込むといった意味です.' cout << "文字列" 'と書くと,"文字列"を画面に出力せよ という意味になります.' endl 'は'改行'を表わし,' ; 'は命令の終了を意味します.なので,' cout <<  ... << endl; 'とすると,出力の最後に画面に改行するという意味になります.

上記のプログラムは,文字出力のプログラムですが,数字を出力する場合は " は用いません.例えば,

    cout << "π = " << 3.14159 26535 89793 23846 26433 83279 50288 << "…" << endl;

とします.

応用例:
//hello2.cpp
#include <iostream>
#include <string>
using namespace std;

int main()
{
  string name;
  cout << "Hello, I'm your computer. " << endl;
  cout << "Please input your name. " << endl;
  cin >> name;
  cout << "Hello, " <<name<<". " <<endl;


}

コンパイル,実行例.
$ g++ hello2.cpp
$ ./a.out
Hello, I'm your computer. 
Please input your name. 
ABC
Hello, ABC. 



  • 8行目:' string name; 'は,' name 'という容器(入れ物)の定義です.
  • 9, 10行目:' cout << " ... " << endl; 'は画面に文字を出力する命令です.
  • 11行目:' cin >> name; 'は,ユーザの入力があれば,それをnameに格納する意味です.
上記のプログラムで,おまじないと説明した' using namespace std; '(これは,Using宣言と呼ばれています)についてですが,プログラム中の' std ',' endl ',' cin 'は本来' std::cout ',' std::cin ',' std::endl 'と書かなければいけません.
長いプログラムを作成する場合は,同じような名前が増えてくるので,それらを整理する必要があるので,' std::cout ',' std::cin ',' std::endl ' と書いておくことが推奨されます.しかし,短いプログラムの場合は,それらの記載が面倒なので,上記のプログラムのように' std:: 'を省略して書いたりします.

' using namespace std; 'を使用しない場合は,以下のようになります.


//hello2.cpp
#include <iostream>
#include <string>
//using namespace std;

int main()
{
  std::string name;
  std::cout << "Hello, I'm your computer. " << std::endl;
  std::cout << "Please input your name. " << std::endl;
  std::cin >> name;
  std::cout << "Hello, " <<name<<". " << std::endl;
}

0 件のコメント :

コメントを投稿