https://youtu.be/gpaAgWnLVSs

四国めたん:教師役ですわ

ずんだもん:生徒役なのだ
四国めたん: こんにちは。四国めたんです
ずんだもん: ずんだもんなのだ。こんにちはなのだ
四国めたん: 今回から皆さんと一緒に、C++言語によるプログラミングを勉強していくわよ
四国めたん: 初心者でもわかるように簡単な説明とするつもりですわ
四国めたん: 最初はプログラミングに関する用語など、わからない言葉も出るかもしれないわね
ずんだもん: わからない言葉はあとで説明するので、今はスルーしていいのだ
四国めたん: 第1回は "Hello World!!"の表示 を行いますわ
ずんだもん: プログラマーなら必ず通るみちなのだ
ようやくC++ですか?
四国めたん: 【C言語超入門】では、超初心者向けにC言語でのプログラムの書き方の基本を解説してきましたわ
ずんだもん: けっこう、長かったのだ
四国めたん: 今回からは、初心者向けにC++言語でのプログラムの書き方の基本を解説していきますわ
ずんだもん: よろしくなのだ
四国めたん: なぜ、解説がこの順番になったかといいますと、歴史的な順番ということも、もちろんありますわ
ずんだもん: そうなのか?
四国めたん: でも、一番の理由は、C++言語がC言語にOOP(Object Oriented Programming)の概念を導入して作られた、上位互換の言語だからですわ
ずんだもん: つまり、C言語の知識があれば、それにプラスアルファする形でC++言語を理解することができるということか
四国めたん: その通りですわ
四国めたん: という訳で、今後の解説は【C言語超入門】の知識があることを前提として進めていきますわ
ずんだもん: わかったのだ
とにもかくにもHello world
四国めたん: では早速Visual Studioを使ってC++言語での最初のプログラムを作成して行きましょう
ずんだもん: Visual Studioは、すでにインストールされていて、準備万端なのだ
四国めたん: まだの方は、【C言語超入門】 付録1 Visual Studioのインストールを確認してインストールしておいてくださいね
Visual Studio起動
四国めたん: 先ず、"スタート"からVisual Studio 2022を選び、起動しますわ
ずんだもん: Visual Studioのスタート画面が表示されたのだ

四国めたん: "新しいプロジェクトの作成"をクリックしますわ
ずんだもん: "新しいプロジェクトの作成"ウィンドウが表示されたのだ

四国めたん: 右側上部の"すべての言語"と表示されているプルダウンから"C++"を選択しますわ
四国めたん: 次に"すべてのプラットフォーム"と表示されているプルダウンから"Windows"を選択しますわ
四国めたん: 最後に"すべてのプロジェクトの種類"と表示されているプルダウンから"コンソール"を選択しますわ
ずんだもん: 右側のプロジェクトの種類の表示が変わるはずなのだ
四国めたん: "空のプロジェクト"を選択して"次へ"ボタンをクリックしますわ

ずんだもん: "新しいプロジェクトを構成します"ウィンドウが表示されたのだ
四国めたん: そのまま"作成"ボタンをクリックしますわ
四国めたん: なお"プロジェクト名"や"場所"、"ソリューション名"等については、適当に変えても問題ありませんわ
ずんだもん: 今回は、"プロジェクト名"と"ソリューション名"を"Project2"にしたのだ

ずんだもん: Visual Studioの作業ウィンドウが開いたのだ
プログラムファイルを作成しよう
四国めたん: それではプログラムを作成していきましょう
ずんだもん: よろしくなのだ
四国めたん: まず、"ソリューションエクスプローラー"で"Project2"を右クリックしますわ
ずんだもん: メニューが表示されたのだ
四国めたん: "追加"→"新しい項目..."を選択しますわ


ずんだもん: "新しい項目の追加"ダイアログが表示されたのだ
四国めたん: "FileName.cpp"と表示されている部分を"hello_world.cpp"に変更して"追加"ボタンをクリックします。

ずんだもん: 拡張子は".cpp"なのか?
四国めたん: はい、C言語のファイルの拡張子".c"とは異なるので、注意して下さいね
ずんだもん: りょうかいなのだ
四国めたん: 作業ウィンドウに"hello_world.cpp"のエディットペインが表示されるので、次のようなコードを記述しますわ
ずんだもん: さっそく実行するのだ
四国めたん: ツールバーの"ローカルWindowsデバッガー"をクリックするか、F5を押すと、コードが実行されますわ

ずんだもん: コンソールが表示されて"Hello World!!"と表示されたのだ

四国めたん: なにかキーを押せばコンソールが閉じ、コードの実行が終了しますわ
四国めたん: ちなみに、コンソールが表示されない場合はコードに間違いがあるかもしれませんので、コードを確認して下さいね
ずんだもん: わかったのだ
拡張子
C++言語のプログラムファイルの拡張子は".cpp"のほかに".cc"を使う場合があります
他にも".cxx"等も使われるようです
OSやコンパイラ等の環境によって、デフォルトで推奨されている拡張子が異なるようです
プロジェクトとして統一されていれば、どの拡張子をしようしても問題ありません
Visual Studio など、最近の環境では".cpp"が推奨されているようです
各行を解説していくよ
ずんだもん: ところで、今回の"Hello World"は、C言語の時とはかなり違うのだ
四国めたん: そうですわね
ずんだもん: くわしく教えてほしいのだ
四国めたん: わかりましたわ
四国めたん: それらの違いを順番に解説していきますわね
#include <iostream>
四国めたん: ところで、#include
ディレクティブについては覚えていらっしゃいますか?
ずんだもん: ヘッダーファイルを読み込む指示だったのだ
四国めたん: その通りですわね
四国めたん: そして、#include
ディレクティブについては、C++言語でもC言語と同様に使用できますわ
ずんだもん: そうなのか?
四国めたん: はい、例えばprintf
関数を使用するために#include <stdio.h>
としても問題ありませんわ
ずんだもん: でも、今回、指定されているファイル"iostream"には、拡張子".h"が付いていないのだ
四国めたん: そうですわね
四国めたん: 実は、C++言語には、C言語の 標準Cライブラリ に相当する、 標準C++ライブラリ が存在しますわ
ずんだもん: そうなのか?
四国めたん: はい、ですので、C++言語では、 標準C++ライブラリ を使用するのが一般的ですわ
ずんだもん: なるほどなのだ
四国めたん: そして、 標準C++ライブラリ のヘッダーファイルには、現状、拡張子が付いていないのですわ
ずんだもん: えぇ~、そうなのか!!
四国めたん: ですので、今回インクルードした"iostream"ファイルには、".h"などの拡張子は付けないのですわ
ずんだもん: なるほどなのだ
ずんだもん: ところで 標準Cライブラリ の関数は、そのまま使えるのか?
四国めたん: 使えますわね
四国めたん: ただ、 標準Cライブラリ の関数を使用する際のヘッダーファイルについても、別途、拡張子がないファイルが用意されていますわ
ずんだもん: printf
とかなら"stdio"という名前のファイルになるのか?
四国めたん: 惜しいですわ
四国めたん: それらのファイルは、 標準Cライブラリ で使用するファイル名の拡張子を取って、先頭に"c"を追加した名前となりますわ
ずんだもん: つまり、"stdio.h"は"cstdio"に、"stdlib.h"は"cstdlib"となるのか...
四国めたん: その通りですわ
ずんだもん: ところで、"iostream"はどのような定義や宣言を行っているのだ?
四国めたん: あとで説明しますが、"cout"などのコンソールへの入出力などを定義、宣言していますわ
ずんだもん: "stdio.h"の代わりということか?
四国めたん: まぁ、そんな感じですわね
int main(int argc, char* argv[])
四国めたん: 次に、int main(int argc, char* argv[])
以下はプログラムの本体となりますわ
ずんだもん: 【C言語超入門】で使っていたメイン関数void main()
とは違っているのだ
四国めたん: どちらを使ってもかまわないのですが、今回からは、この形式のメイン関数を使っていきますわ
ずんだもん: なるほどなのだ
四国めたん: ちなみに、"argc"はプログラム実行時に指定した引数の数、"argv"は引数の文字列の配列ですわ
ずんだもん: 当面は使わないのでスルーするのだ
四国めたん: そうですわね
四国めたん: なお、戻り値は整数となりますわ
ずんだもん: どのような値を返すのだ?
四国めたん: 一般的には、プログラムの実行が成功した場合には0、失敗した場合にはそれ以外の整数を返しますわね
ずんだもん: これも基本的には0を返しておくのだ
std::cout << "Hello World!!" << std::endl;
四国めたん: 最後に、std::cout << "Hello World!!" << std::endl;
はプログラムの本体ですわ
ずんだもん: 何をしているのだ?
四国めたん: コンソールに"Hello World!!"という文章を表示させていますわ
ずんだもん: printf
でもいいのではないか?
四国めたん: まぁ、printf
でもOKなのですが、今回は敢てC++流のコンソール出力をおこなってみましたわ
ずんだもん: りょうかいなのだ
std::cout
ずんだもん: ところでstd::cout
とは何なのだ?
四国めたん: std::cout
は、"iostream"で宣言されている変数で、ここに 流し込まれた 文字列や数値がコンソールに表示されますわ
ずんだもん: 流し込む ?
四国めたん: その説明は後回しですわ
ずんだもん: 少し待つのだ
ずんだもん: まずはstd
の説明をお願いするのだ
四国めたん: わかりましたわ
四国めたん: std
は 名前空間 もしくは namespace と呼ばれるもので、 標準C++ライブラリ の関数や定義は、殆どが std名前空間 に属しますわ
ずんだもん: 名前空間 ?
四国めたん: はい、関数や定義が属している 名前空間 は、コロンを2つ"::"で区切ることで示すようにしますわ
ずんだもん: チョッと、いきなりすぎて良く判らないのだ
四国めたん: このあたりは後の回で詳しく説明するので、今は「そんなものがあるんだ」程度に思ってスルーしてください
ずんだもん: む~、わかったのだ
<<
四国めたん: 次に、二重の小なり"<<"は演算子ですわ
ずんだもん: つまり、イコール"="や四則演算子"+-/*"と同じというわけか...
四国めたん: その通りですわ
四国めたん: 一般的には 挿入演算子 と呼ばれますわね
ずんだもん: なるほどなのだ
四国めたん: std::cout
に対しては、文字列や数値を 流し込んで コンソールに表示しますわ
ずんだもん: なるほど、 流し込む とは、 挿入演算子 で文字列や数値を 挿入 することか
四国めたん: その通りですわ
四国めたん: また、 挿入演算子 は、文字列や数値を 挿入 後にstd::cout
を、そのまま返しますわ
ずんだもん: つまり、 挿入演算子 は連続して使うことができるということか...
四国めたん: はい
ずんだもん: ところで、最後の std::endl は何なのだ?
四国めたん: 改行"\n"とほぼ同じですわ
ずんだもん: りょうかいなのだ
まとめ
四国めたん: お疲れさまでした
ずんだもん: おつかれさまなのだ
四国めたん: 以上ですべてのプログラマーがいちどは通る道、 "Hello World!!"の表示 を終了しますわ
Discussion