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

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

#3-2 それなりに意味のあるプログラムを作ろう(後編)

 

 

前回解説したソースコードを改めてまとめる。

 

f:id:programfrom0:20190215033035p:plain

最高心拍数を計算するプログラムのソースコード

 

1 このプログラムを作るにはiostreamを使います。

3 プログラムの開始位置はここですよ。

4 THEORETICAL_HRMAXは変わることのない数字で、小数点を含むそこそこ大きい数で、その値は206.9です。

5 COEFFICIENTは変わることのない数字で、小数点を含むそこそこ大きい数で、その値は0.67です。

6 ageは整数で最大億単位の大きさです(この数字は変化する数字です)。

7 hrmaxは小数点を含むそこそこ大きい数字です(この数字は変化する数字です)。

9 標準の画面への出力で「How old are you? 」と表示。

10 標準の入力で年齢が入力されます。

12 hrmaxTHEORETICAL_HRMAXage×COEFFICIENTと計算します。

14 標準の画面への出力で「Your max HR is 」と(計算結果の)hrmaxを表示します。

16 これでプログラムは終了です。

 

 

 

 

大文字か小文字か問題

 

前回の記事でモヤモヤした人も多いはず。

 

なぜ、THEORETICAL_HRMAXCOEFFICIENTは大文字で、agehrmaxは小文字なのかと。

 

これは、C++のプログラミングをする上で、値が決まっている場合は大文字、値が変化するものは小文字で名前を付けるというルールを採用しているプログラマーが多いから。

 

多数派に従うことで、他の人がソースコードを見た場合でも、小文字で書かれているから値が変化するということがパッと分かる。

 

プログラミングをする上では、サイレントマジョリティーになったほうが良いというわけだ。

 

 

 

保存とコンパイル

 

分からない人は2-2へ。

 

 

 

プログラムの実行

 

コンパイルが成功したら、ファイル名を入力してプログラムを実行してみよう。

 

f:id:programfrom0:20190218194039p:plain

プログラムを実行するとHow old are you?と表示される

 

画面に”How old are you?”と表示されるので、年齢を入力する。

 

そうすると、計算が実行されて、最高心拍数が表示される。

 

f:id:programfrom0:20190218194152p:plain

最高心拍数が表示された

 

ちゃんと計算結果が合っているか不安な場合は、電卓なりExcelなりで確かめてみると良い。

 

無事に最高心拍数を求めるプログラムが完成したので、今回はこれで終了。

 

 

次回、#4 0歳児の最高心拍数を計算するに続く。

 

 

 

#3-1 それなりに意味のあるプログラムを作ろう(前編)

 

 

前回までに作った、“Hello World”とただ画面に表示させるプログラム。本当に何の役にも立たないし、なんならWordなり何なりを開いて直接“Hello World”と打ち込んだ方が手間も少ない。

 

ということで、Hello Worldよりは少し役に立つプログラムを作ろうと思う。

 

何を作るか考えた結果、体育系大学院生らしく最高心拍数を求めるプログラムを作ることにした。今後いろいろと拡張できるテーマでもあるので。

 

 

最高心拍数とは?

 

運動すると心拍数は上昇する。1分間に心臓が拍動できる回数には限界があって、その限界値を“最高心拍数”という。この最高心拍数、年齢を重ねるごとにどんどん低下していくため、自分の最高心拍数を知ることは、運動強度を設定するための重要な指標になる。

 

最高心拍数を求める推定式として、「220-年齢」が一般的だけど、それだと電卓で計算したほうが早いじゃんということになるので、ここではアメリカスポーツ医学会(以下、ACSM)が提唱している「206.9-年齢×0.67」を使うことにする。

 

 

ソースコード

 

f:id:programfrom0:20190215033035p:plain

最高心拍数を求めるプログラムのソースコード

 

上記が、最高心拍数を求めるプログラムのソースコード

 

今回は「中華名菜 酢豚」が工場で作られて料理になるまでと例えて、1行ずつ意味を見ていこう。

 

www.nipponham.co.jp

 

まず、ソースコードを中華名菜のレシピ風に書くとこんな感じ。今回から空白行は無視していく。

 

1 中華の道具一式を使います。

3 それでは調理を始めます。

4 セットには食材206.9gが含まれています。

5 セットには調味料0.67gが含まれています。

6 玉ねぎをお好みの個数用意してください。

7 完成する料理名は酢豚です(玉ねぎの個数によって完成する量は変化します)。

9 (もんちゃんへ)玉ねぎを何個入れるか聞いてね。

10 玉ねぎを入れてもらいます。

12 調味料と玉ねぎを絡めて、食材を入れて炒めると酢豚が完成します。

14 完成したことを知らせて、酢豚を食卓に並べます。

16 以上で調理は終了です。

 

 

1行目

 

これは2-12-4で解説済み。

 

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

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

 

 

3行目

 

こいつも登場済み。プログラムの開始位置を知らせているので、こいつが無いと始まらない。

 

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

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

 

 

4行目

 

「中華名菜 酢豚」には、豚肉・にんじん・たけのこなどの“具”パックと“甘酢ソース”パックが入っている。

 

4行目と5行目は材料を工場で加工してパックに詰め、そのパックに名前を付けていく作業。

 

 

constconstantの略で、“不変の”という意味。ACSMが決めた最高心拍数の理論値は変わることが無いので、この値は変わることが無いよってことをコンピュータに教えている。

 

ちょっと無理やり中華名菜に例えると、この食材パックは全部使ってねという感じ。

 

その次のdoubleは倍という意味だけど、意味よりも機能の方が重要。その機能とは、数字が“整数なのか小数点を含んでいるのか”“数字の大きさがどのくらいなのか”をコンピュータに教える機能。doubleは小数点を含んでいて、結構大きい値だよと教えている。

 

これを中華名菜に例えると、入れる食材に合わせてパックの種類と大きさを選んでいるイメージ。。

 

 

THEORETICAL_HRMAX = 206.9の部分は、酢豚を作るなら酢豚用の食材を必要量入れて“酢豚の具パック”と名前を付けるように、自分で入れる物と名前を自由に決めることができる。

 

今回はACSMが定めた最高心拍数の理論値を入れるので、THEORETICAL_HRMAXと名前を付けた。

 

以上で、酢豚の具材パック206.9gが完成。

 

 

 

5行目

 

4行目と同じ。ACSMが定めた係数0.67に“COEFFICIENT”と名前を付けて入れてやる。

 

 

 

6行目

 

6行目は家庭で玉ねぎを準備するイメージ。

 

年齢は人によって違うし、1年に1回必ず歳をとるので、後から入力する方が良い。

 

 

ソースコードを解説していくと、intintegerの略で、整数という意味。これも4行目に出てきたdoubleと同じ機能を持っていて、intはその意味の通り、数字は整数で、最大億単位の大きさだよと教えている。

 

doubleintには、他にも様々な種類があるので、それは後々解説する。

 

 

age4行目のTHEORETICAL_HRMAXなどと同じで、名前を自由に決めることができる。今回は年齢を入れるので、ageと名前を付けた。

 

 

6行目はこれで終了。

 

量が変わらないものはそのことをコンピュータに”const”を使って教えてやる必要があるのに、量が変わるものは変わることを教える必要が無いのは何とも不思議な話。

 

 

7行目

 

この行も料理のレシピだとかなりの違和感。

 

酢豚を作ろうとしているのに、完成する料理名は酢豚ってことを教えてやらなければいけない。この謎は12行目で何となく解決するはず。

 

計算式内には小数点を含むものがあるので、最高心拍数の計算結果も小数点を含む可能性がある。ということで、そのことをdoubleを使ってコンピュータに教えておく。

 

 

 

9行目

 

2-4ではstd::coutstd::endlをそれぞれ、中華用コンロと中華用皿と例えた。これは、“中華用の器具=iostream内の機能”と例えるための、かなり無理やりな表現。

 

iostreamの機能としては、キーボードからの入力と画面への出力。つまり、コンピュータの中のもんちゃんとやり取りするための機能。現実世界でもんちゃんと会話するためには、握手券が必要。そう、iostreamはコンピュータの中のもんちゃんと会話するための握手券というわけだ!

 

現実世界の握手券と違うのは、もんちゃんに喋ってもらうには“もんちゃんが喋る券”を、こっちからもんちゃんに喋りかけるには“喋りかける券”を使う必要があること。

 

そして、握手券を何回も使えること(コンピュータ内の握手券最高かよ…)

 

 

つまり、9行目では“もんちゃんが喋る券”を一枚使って、「何歳?」と質問してもらっているわけだ。言葉はもんちゃんの口から発せられるので、

<< “How old are you? “

の「<<」を口だとイメージすると覚えやすい。

 

これまでの料理の例えだと、「玉ねぎ何個?」って聞いてくれる。

 

 

 

10行目

 

もんちゃんに質問されたら、答えない訳にはいかない。ってことで、“喋りかける券”を一枚使って年齢を答える。

 

こっちが喋りかけた言葉は、もんちゃんの耳に入るので、

>> age

>>」を耳だとイメージすると覚えやすい。

 

料理の例えだと、「玉ねぎは2個」と答えている。

 

 

12行目

 

玉ねぎの個数を指定したことで材料は全て揃ったので、後は調理の工程を書くだけ。

 

何を作るのか(=求める値。今回は最高心拍数)を指定してから、その作り方(数式)と材料(値)を指示する。7行目で「完成する料理名は酢豚です。」と書いたのは、先に何を作るのかを指定してやる必要があるから。

 

今回は「206.9-年齢×0.67」なので、ソースコード的には

hrmax = THEORETICAL_HRMAX - age * COEFFICIENT;

となる。

 

 

あれ、掛け算の記号(×)が文字化けしてない?

 

2-1でしつこく説明したように、ソースコードは半角英数字で記述する。残念ながら半角英数字には「×」が存在しないので、その代わりに「*」を使う。

 

ちなみに割り算の記号(÷)の半角文字も存在しないんだけど、その説明は長くなるので後々。

 

 

14行目

 

コンピュータの中のもんちゃんはドSで、計算してもその結果は教えてくれない。

 

そこで、“もんちゃんが喋る券”を一枚使って、結果を知らせてもらう必要がある。計算結果を表示するだけなら

std::cout << hrmax

でいいけど、数字だけ画面に表示されても何のことやらイマイチ分からないので、

“Your max HR is “の一言もついでに喋ってもらおう。

 

コンピュータの中のもんちゃんとの握手会には、剥がされるのにもそれ用の握手券が用意されていたりする。それが、#2-4で中華用の皿と表現された「std::endl」。

 

 

この行を料理の例えでまとめると、もんちゃんが「酢豚できたよ~」と言って、食卓に並べてくれる感じ。

 

 

16行目

 

これは、解説済み。

 

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

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

 

 

長くなったので、今回はここまで。

 

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

 

 

#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はこれにて完結。

 

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

 

 

#2-3 Hello World (後編)

 

前回、いやいやいや、なんかエラー出てるんですけど?ってなった方、必見。

 

そうなってない人も、今後ぜったいエラーにぶち当たるはずなので必見。

 

 

野生のエラーが現れた

 

cl /EHsc code1.cpp カターン(Enterを押す音)

 

よっしゃー!これでHello Worldのプログラムかんs…

 

f:id:programfrom0:20190207005555j:plain

うわー、なんかエラー出た~

 

となった人が大半なはず。

 

ちなみに、私もその一人。

 

ってことで、そのやらかしたミスを大公開。

 

 

1.\を忘れる

 

f:id:programfrom0:20190207005733p:plain

フォルダ指定で¥を入れ忘れる

 

はい。初っ端からやらかしました。

 

ソースコード以前の問題。もんちゃんをフォルダまで連れてくる作業で「\」を付け忘れる。もちろんもんちゃんは迷子。

 

まあ、これは割とすぐに気付いた。

 

 

2.#incllude

 

f:id:programfrom0:20190207005917p:plain

includeのスペルミス…

 

inclludeの”l”が一個多い。普段そんなに英語を入力することが無いので、感覚で打ち込んだらスペルミス。

 

もんちゃんに、「は?意味不明。」「プリプロセッサ コマンド´incllude´が無効です。」と怒られた(笑)

 

けど、こっちは感覚で打ち込んでいるので正直言ってミスしたとは思ってない。lが一個多いだけのことに10分以上悩んだのはここだけの話。

 

ソースコードを直した後は上書き保存が必要なので要注意。

 

こっちで迷う人の方が多いらしいけど、論文が消えるのが嫌で、保存だけはこまめにやる習慣が付いているのでここでは迷わなかった。

 

 

3.;を忘れる

 

これはけっこう致命傷。料理の例えで言うと、餃子を作ろうとしてるのに餃子の皮が無い状況。

 

これに関してはもんちゃんがご丁寧に、「餃子の皮がねーよ、バーカ」「構文エラー:‘;’が´return´の前にありません。」と教えてくれるので一発解決。

 

修正したら、上書き保存をお忘れなく。

 

 

と、まあ、こんな感じで3度目の正直でやっとエラーが出ることなく完成。

 

f:id:programfrom0:20190207010201p:plain

3度目の正直でHello Worldが完成



完成したプログラムを実行すると、「Hello World」と表示された。

 

 

めでたし、めでたし。

 

次回、「Hello Worldまとめ」に続く。

 

 

*1 Visual Studio Code を日本語で使うには?

 

Visual Studio Codeを初めて開いたとき、思わず

 

「えっ…」

 

f:id:programfrom0:20190130235151j:plain

えっ… 英語………

となった方も多いはず。

 

ただでさえ何のことやらよく分からないソフトをインストールしたのに、それが慣れない英語だったら絶望するしかない。

 

そんな英語が苦手な人のために、今回は番外編、Visual Studio Codeの表示を英語から日本語に変更する方法。

 

 

Visual Studio Codeを英語から日本語に変更する手順

 

  1. 日本語パックを入手する
  2. 設定を日本語に変更する

 

 

1.日本語パックを入手する

 

Visual Studio Codeをインストールした段階では、英語で表示する機能しかない。日本語で利用するためには、日本語の機能を追加してやる必要がある。

 

ってことで、日本語パックの入手方法から。

 

Visual Studio Codeを開くと、一番左に5つアイコンが並んでいる。そのアイコンの一番下「Extensions」をクリック。

 

f:id:programfrom0:20190130235405p:plain

左下の"Extensions"をクリック

 

Search Extensions in Marketplace」と表示されている部分に

 

japanese

 

と入力すると、以下のような結果が表示される。

 

f:id:programfrom0:20190130235547p:plain

japaneseでの検索結果

 

japanese Language Pack for Visual Studio Code」のInstallをクリックする。

 

以上で日本語パックの入手は完了。

 

 

 

2.設定を日本語に変更する

 

残念ながら日本語パックをインストールしただけでは、日本語表示にはならないので設定を変更する必要がある。

 

View」メニューから、一番上の「Command Palette」を選択する。

 

f:id:programfrom0:20190131000100p:plain

View→Command Paletteを選択

 

Command Palette」が表示されたら、「> 」の部分に「configure」と入力する。

 

f:id:programfrom0:20190131000212p:plain

Configure Display Languageを選択

 

表示される選択肢から「Configure Display Language」を選択する。

 

f:id:programfrom0:20190131000529p:plain

"en"を"ja"に変更



上記のような画面が表示されるので、5行目の最初

”locale”:”en”」の部分を「”locale”:”ja”」に変更する。

 

f:id:programfrom0:20190131000654p:plain

"ja"に書き換え、上書き保存



jaに書き換えたら、上書き保存する。

 

Visual Studio Codeを一度閉じて、再起動すると言語設定が日本語に変更される。

 

f:id:programfrom0:20190131000800p:plain

日本語への変更が完了

 

以上で日本語への変更が完了。

 

めでたしめでたし。

 

 

#2-2 Hello World (中編)

 

 

 

さて、前回ソースコードを書く作業は終了した。

 

料理の例えで言うと、畑に作物が実った状態だ。

 

畑に作物ができても、収穫しないと料理は出来ない。

ってことで、今回はまず収穫作業から。

 

 

ソースコードを保存する

 

WordExcelに保存が必要なように、ソースコードを書いた場合にも保存が必要。

 

今回は初めてコードを保存するので、コードを保存するフォルダの作成も同時に行う。

 

 

ソースコードを書き終わったら、左上の「File」 メニューから、「Save As…」をクリックする。

 

f:id:programfrom0:20190128220305p:plain

FileメニューからSave asを選択



 

Save As」というウインドウが開いたら、左側をスクロールし「PC」を選択し、その中からCドライブを選択する。

 

f:id:programfrom0:20190128220713p:plain

Cドライブを選択

 

Cドライブが選択出来たら、右クリック→新規作成→フォルダーを選択し、新規フォルダを作成する。

 

 

f:id:programfrom0:20190128220821p:plain

新規フォルダを作成する



フォルダの名前は何でも良いが、ここでは「coding」としておく。

 

ソースコードのファイル名も何でも良いが、ここでは「code1」とする。

ファイルの種類は、プルダウンから「C++」 を選択。

 

 

f:id:programfrom0:20190128221233p:plain

名前を付けてファイルの種類を選択する

「保存」をクリックすれば、ソースコードの保存は完了。収穫作業完了!

 

 

コンパイル

 

これまでが、野菜を栽培して収穫する作業だったのに対して、ここからは料理をしていく。

 

料理をするために、畑から台所に場所を移すのと同じように、テキストエディタ(Visual Studio Code)からコンパイラ(Visual Studio)に、使うソフトが変わる。

 

 

コンパイラを起動する

Windowsのスタートメニューから「開発者コマンド プロンプト for VS 2017」を選択して起動する。

 

f:id:programfrom0:20190128222209p:plain

メニューから開発者コマンドプロンプトを起動



実はこの「開発者コマンド プロンプト for VS 2017」は、ただの台所ではなくて、料理人が居るので、指示するだけで料理を作ってくれる。

 

ということで、料理人を欅坂46の中でも、めちゃくちゃ料理が上手い鈴本美愉(以下、もんちゃん)にお願いしましょう(笑)

 

 

www.keyakizaka46.com

 

「開発者コマンド プロンプト for VS 2017」を開くと、

 

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community>

 

と表示されている。

これは、もんちゃんの現在地を示している。

 

まず、もんちゃんを料理の材料がある場所まで連れてくる必要があるので、

 

cd \coding

 

と入力して、先ほど「code1」を保存した「coding」フォルダまで、もんちゃんを連れてくる。

 

f:id:programfrom0:20190128223338p:plain

フォルダを移動する

 

cd change directoryの略で、「cd \coding

 

これを訳すると、「codingフォルダに行ってね。」となる。

ちなみに、cd\の間には半角スペースが必要。

 

ここで勘の良い方ならお気づきかと思うが、先ほどわざわざCドライブに「coding」フォルダを作ったのは、もんちゃんを道案内する手間が省けるからだ。

 

もんちゃんを連れて来たら、あとは「料理してね。よろしく。」って言っておけばいい。

 

cl /EHsc code1.cpp

 

が、料理してねの指示になる。

 

clcompile and linkの略で、「コンパイルとリンクを行え」という意味。その後の、/EHscは「C++の処理をするよ」とすずもんに教えている。

 

code1.cppは先ほど保存したソースコードファイル。

 

いや、ちょっと待て、さっき.cppなんか付いてなかったやないかい。

 

確かに、直接打ち込んではない。けど、ソースコードを保存したときのことを思い出して欲しい。ファイルの種類でC++を選択したはずだ。

 

その操作をしたことによって、パソコンがご丁寧に付け足してくれたもので、「C plus plus」 を意味している。

 

この入力をして、エンターキーを押すことで、「code1.cppC++の処理で、コンパイルとリンクを行え。」と指示していることになる。

 

指示さえ出せば、あとはもんちゃんが料理をしてくれる。

 

f:id:programfrom0:20190128223525p:plain

コンパイルが成功するとできたよ~ってなる

料理が完成したら、もんちゃんができたよと知らせてくれる。

 

code1.exeという表示が出ていれば、Hello Worldと表示するプログラムの完成だ。

.exeexecutableの略で、実行可能を意味している。

 

あとはプログラムを実行するだけだ。

 

 

プログラムの実行

 

code1.exeと入力し、エンターキーを押すとプログラムを実行できる。

 

f:id:programfrom0:20190128224057p:plain

Hello Worldと表示された



Hello Worldと無事表示された。めでたし、めでたし。

 

 

次回、いやいやいや、なんかエラー出てるんですけど?に続く。

 

 

 

#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と画面に表示することが目的です。

 

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