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

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

#2-4 Hello World(まとめ)

 

Hello World3本の記事を書いたことで、こう解釈したほうが理解しやすいかなという箇所がいくつか出てきたので、改めてまとめてみる。

 

まず、料理の例えを若干変更。

 

これまで畑で野菜を育てて、もんちゃんに料理をしてもらうと説明してきたけど、そうするとちょこっと違和感が生じるので、日本○ムの中○名菜を例えとして使ってみる。

 

 

プログラムが完成するまでの流れ(全体像)

 

まず、中華名菜が料理として食卓に並ぶまでの流れはこんな感じ。

 

f:id:programfrom0:20190218154946p:plain

中華名菜が食卓に並ぶまで



  1. 日本○ムの工場で必要な食材をカットして詰め合わせ、レシピを付ける。
  2. 中華名菜を各家庭に配達する。
  3. 家庭でレシピ通りに調理して完成。

 

この一連の流れをソースコードを書いてプログラムが完成するまでの流れに当てはめると、

 

f:id:programfrom0:20190218160702p:plain

プログラムが完成するまでの流れに当てはめてみる

 

  1. ソースコードを保存する。
  2. 開発者コマンドプロンプトコンパイルをして完成。

 

という流れで説明できる。

 

 

ソースコードを中華名菜に例えてみる

 

中華名菜には必要な食材がカットされた状態で入っていて、あとは炒めるだけの状態になっている。中華名菜、青椒肉絲を例にとると、タケノコ、牛肉などがカットされた状態でそれぞれパックに入っていて、あとはレシピに従って炒めるだけになっている。

 

www.nipponham.co.jp

 

日本ハムの工場で食材をカットしてレシピを付ける作業=Visual Studio Codeソースコードを書く作業と例えると分かりやすい。

 

では、ソースコードではどんな食材をカットして、どんなレシピを書いているのか?

 

2-1では意味を中心に解説したので、今回はイメージを掴むことを目的に解説する。

 

 

f:id:programfrom0:20190126004923p:plain

改めてHello Worldソースコード

 

1行目

 

突然ですが、ここで問題です。青椒肉絲を作るとき何を使いますか?

 

ほとんどの人はフライパンを使いますよね。煮物を煮るときには鍋を使うし、魚を焼くには魚焼きグリルを使う。

 

 

もう一問。完成した青椒肉絲を何に盛り付けますか?

 

中華料理なので、できれば中華皿に盛り付けたいですよね。

 

 

台所には中華料理だけでなく、和食やフランス料理などいろんな調理器具と器が用意されていて、その中から目的に合った道具を選んで使う。

 

ここでは、料理の道具=開発者コマンドプロンプト内の機能と考える。

 

台所にそれぞれの料理に合わせた道具があるように、開発者コマンドプロンプトにもいろいろな機能が準備されていて、その中から目的に合ったものを選ぶ。

 

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

 

 

1行目では、

料理のレシピ:「この料理には中華の道具一式を使います。」

ソースコード:「このプログラムを作るにはiostreamを使います。」

と書いていることになる。

 

 

2行目

 

空白。無くてもいいけど、レシピも適度に空白があったほうが読みやすい。

 

 

 

3行目

 

この行をレシピに例えると少し違和感がある。

 

料理のレシピ:「それでは調理を始めます。」

 

「いやいや、そんなのわざわざ書いて頂かなくても分かりますよ。」と、思うかもしれないけれど、残念ながらコンピュータ(の中のもんちゃん)はそこまで指示してあげないといけないので、

 

ソースコード:「プログラムの開始位置はここですよ。」

 

と書く必要がある。

 

 

4行目

 

ここでやっと炒める作業に入る。

 

料理のレシピ:「食材をフライパンに入れて中華用コンロで強火で炒めます。全体に火が通ったら、火を止めて中華皿に盛り付けます。」

 

ソースコード:「標準の端末への出力で、“Hello World”と画面に出力します。これでこの行は終わりなので、改行して下さい。」

 

 

さて、ここで料理のレシピに中華用コンロと中華皿という、ミールキットには含まれていないアイテムが登場した。

 

普通に考えればコンロは台所にあるし、皿は食器棚にあるはず。でも、残念ながらコンピュータ(の中のもんちゃん)はこのことも知らないので、細かく教えてあげる必要がある。

 

ソースコードのどの部分で教えているかというと、

std::coutstd::endl

の部分がそれに該当する。

 

f:id:programfrom0:20190211231120p:plain

イメージ的にはこんな感じ



「中華用」と書いてあげることでもんちゃんは、1行目の中華の道具一式“の中にコンロと皿が含まれていることを理解する。

 

逆に言うと中華の道具一式の中にはコンロと皿が準備されている。

 

要するに、iostreamの中には、”cout”と“endl”という機能が含まれているわけだ。

 

 

5行目

 

3行目が開始を示していたのに対して、5行目では終了を指示する。

 

料理のレシピ:「これで調理は終了です。」

ソースコード:「これでプログラムは終了です。」

 

以上でミールキットが完成。

 

 

4行目の“Hello World以外ほとんどレシピになってしまったけど、それはこのプログラムが極端に短いから。

 

役に立つプログラムを作れば、それなりに食材も増えるはず。

 

 

 

保存

 

ミールキットが完成したら、各家庭に配送してあげる必要がある。これが、保存という作業。

 

宅急便を送るときには住所を書いて送るように、保存するフォルダを指定して保存する。

 

前回、エラーが出てそれを修正した場合には上書き保存が必要と説明したのはこのためで、日本ハムの工場で修正を加えても配送(保存)をしなければ、修正された中華名菜(ソースコード)は家庭に届かない。

 

ソースコードを修正したのに同じエラーが出る場合は、保存したか確認してみよう。

 

 

コンパイル

 

中華名菜が家に来たらあとは調理するだけ。ここからはもんちゃんの出番。

 

まず、もんちゃんにミールキットがある場所を教えてあげる必要がある。

 

cd \フォルダ名

 

と入力することで場所を教えることができる。

 

 

このとき、冷蔵庫の奥の方にミールキットを入れてしまうと、「冷蔵庫の2段目の扉の4段目の棚の右側にあるよ。」と教えるのはめんどくさいし、教え間違える可能性も高くなる。

 

Cドライブに直接フォルダを作れば、「冷蔵庫の2段目!」と少ない指示で教えることができるので、ソースコード用のフォルダはCドライブに直接作るのがおススメ。

 

 

もんちゃんに中華名菜の場所を教えたら、あとは料理をしてもらうだけ。

cl /EHsc ファイル名.cpp

で、ファイル名の中華名菜を料理してという指示になる。

 

ソースコードに問題が無ければ、料理(プログラム)が完成する。

 

料理は食べたら無くなるけど、1度作ってしまえば何回でも使えるのが、プログラムの良いところ。

 

 

4回に亘ってお届けしたHello Worldはこれにて完結。

 

次回、それなりに意味のあるプログラムを作ろうに続く。