プログラミング素人がC++をマスターするまでの全記録

プログラミング経験ゼロの大学院生がC++をマスターし、アプリ開発ができるようになるまでの全記録です

#2-1 Hello World (前編)

こんにちは、世界?

 

 

どんなプログラミング言語を学ぶにも、プログラミング初心者は「Hello World」というプログラムを最初に作る。

 

これは、ただ単に画面に「Hello World」と表示するだけの、何の意味もないプログラムだ。

 

なぜ、この何の意味もないプログラムを皆が挙って学ぶのかというと、C言語の開発者であるデニス·リッチーらが書いた「The C Programming Language」という本の最初に紹介されたものだったからだ。

 

 

プログラム「Hello World」を作る

 

プログラムを作るには基本的に次のような流れになる

 

  1. プログラムの実行

 

 

1.ソースコードを書く

 

料理を作るのには食材が必要不可欠。それと一緒で、プログラムにはソースコードが必要。

 

スーパーに行って食材を買ってくることもできるけど、食材を自分で育てて料理したほうが、達成感が大きい。だからこのブログでは、ソースコードをコピペできる形では公開しないことにする。

 

ちょっと話がそれたけど、テキストエディタを使ってソースコードを書くってことは、イメージ的には畑で野菜を育てる作業と同じだ。

 

 

 

テキストエディタを使ってソースコードを書く

 

f:id:programfrom0:20190126003355p:plain

Visual Studio Codeトップ画面



Visual Studio Codeを開くと、上記のような画面が現れるので、「Start」の真下にある「New file」をクリックする。

 

すると下のような画面が開くので、そこにソースコードを書いていく。

 

f:id:programfrom0:20190126003400p:plain

ソースコードを書いていく画面

 

 

日本語や英語にそれぞれの文法があるように、プログラミング言語にもそれぞれの文法がある。

 

C++の文法は英語に似ていて、単語と単語の間には半角スペース

 

大事なことなのでもう一度言います

 

半角スペース

 

を入れます。理由は後々。

 

半角英数字入力になっていることを確認して、ソースコードを書くことがとっても重要。

 

いいですか、

 

半角英数字 ですよ。

 

f:id:programfrom0:20190126004923p:plain

Hello Worldソースコード

 

 

上記が、Hello, Worldと表示させるためのソースコードだ。

 

Hello World4行目にあることは分かるけど、あとは何のことやらさっぱり。

 

ってことで、1行ずつ意味をみていこう。

 

 

1行目

 

英語でincludeと言うと「含む」という意味を真っ先に思い浮かべるだろう。

 

でも、辞書的には「入れる」という意味もある。

 

C++でもincludeは「入れる」という意味になる(と解説しておく)。

 

じゃあ、何を入れるのか?

 

<>内にあるiostreamを入れるのだ。

 

いやいやいやいや、そんな英語無いし。とツッコミを入れたくなる。

 

iostreamは、input output streamの略で、入出力のデータの流れという意味になる。

 

意味が分かっても、データの流れ?だから何?という感じ。

実は、iostreamC++に最初から用意されている機能の一つ。

 

どういう機能かと言うと、キーボードなどからの入力と画面への出力機能だ。

他にもcstdlibcmathなど様々な機能が用意されていて、必要に応じて使い分ける。

 

今回はHello Worldと画面に表示するので、画面に表示する機能を持つiostreamを使う。

 

つまり1行目を訳すると

 

iostreamという機能を入れてね」

 

 

2行目

 

空白。無くても可。

 

でも、あったほうが区切りが分かりやすいし、なんかかっこいい(笑)

 

 

3行目

 

intintegerの略で、整数という意味。こいつの存在意義は、5行目で分かるのでとりあえず、無視。

 

ainは英語だと「主要な」という意味だけど、C++では意味はあまり持っていない。

 

でも、C++プログラムにとってめちゃくちゃ重要な“機能”を持っている。

 

その機能とは…

 

 

 

 

 

 

 

 

 

 

“プログラムの実行開始位置を表す”機能 

 

 

 

はい、めちゃ重要。これが無いとコンピュータは迷子の子猫ちゃん。

 

ってことで、どんなプログラムでもこいつは存在する。

 

そんな重要な3行目を、現段階でちょっと無理やり訳すと、

 

「整数。プログラムの開始位置はここですよ。」

 

 

4行目

 

この行は省略のオンパレード。C++、お前省略好きすぎるやろ。

 

まず、stdstandardの略で、C++では「標準」という意味だと理解しておく。

 

次の「::」は記号なので、もうどうしょうもない。ここでは「の」と読んでおく。

 

続いてcout。はい、出ました、お得意の省略。これは、console outputを略したもので、端末への出力を意味している。

 

その後に現れる<<は、データが流れる方向を表す。これはまた後々。

 

ここでやっと満を持して、“Hello World”の登場。「“”」で囲まれた部分の文字が表示される。

 

なので、“こんにちは世界”と書いてやれば、「こんにちは世界」と表示されるし、“Mana Takase is very cute.”と書けば、「Mana Takase is very cute.」と表示されるわけだ。

 

std::はさっきと一緒。

 

その後の、endlend of lineの省略で、行の終わりという意味で改行する機能を持つ。

 

最後のセミコロン(;)は、「~しろ」という命令を表す。

 

4行目を訳すると、

 

「標準の端末への出力で、「Hello World」と画面に出力、これでこの行終わり、改行しろ。」

 

 

5行目

 

returnC++でも「返す」という意味。

 

何を?

 

その後ろにいる0を返す。ちなみにこの0、プログラムはここで終わりですよと知らせる機能を持っている。

 

じゃあ、プログラムの終わりを示す0をどこへ返すのか?

 

イメージ的には3行目のintに返してる。そう、3行目の解説で無視されたintにだ!

 

3行目ではintは整数とだけ説明したけど、ちゃんと説明すると、「プログラムの終わりを表す0という整数が返ってきますよ」とパソコンに教えているわけだ。

 

というわけで、5行目を訳すと

 

「プログラムの終わりを告げる0を、最初の部分に返せ。」

 

 

 

ここまでを踏まえて、改めてこのコードを丁寧めに訳すると

 

1 iostreamという機能を入れてね。

3 プログラムの終わりは整数で知らされるよ。プログラムの開始位置はここですよ。

4 標準の端末への出力で、「Hello World」と画面に出力、これでこの行終わり、改行してね。

5 ここで終わりだからプログラムの終わりを告げる0を、最初の部分に返してあげてね。

 

 

意味が理解できて、満足した気になりましたか?

 

でも、よ~く思い出してみてください。

 

このソースコードを書いている目的は何ですか?

 

そうです、Hello Worldと画面に表示することが目的です。

 

ってことで、次回に続く。