topazの遊び場

いろいろやってみる

そろそろC++をやるパート1 ~ Hello World ~

そろそろC++やります

そろそろC++をやります。そろそろC++をやりたいからです。
何回やるかはわかりません。基礎を理解するまでやろうと思います。

※ 初心者がメモレベルで記録するので、技術記事としてはお力になれないかもしれません。

内容

  • HelloWorld
  • 条件分岐とループ処理

環境構築

前に少し触った時に環境は出来上がっていたので、環境構築は飛ばします🙇‍♀️

HelloWorld

最初はやっぱり「Hello World」。

#include<iostream>
using namespace std;

int main() {
    cout << "Hello World\n";
    return 0;
}

g++を使ってコンパイルし、./a.out で実行します。ここはC言語に似ています。

$ g++ main.cpp
$ ./a.out
Hello World

ここでは簡単に説明すると

  • #include<iostream> は includeディレクティグといい、指定したファイルの内容を読み込みます
  • using namespace std は usingディレクティブといい、名前空間(namespace)内の全てにアクセスできるようになります。

今回includeusing namespaceが両方書かれているのは、iostreamファイルの中の std名前空間にある cout を使いたかったからです。

cin / cout

cincout は標準入出力に使われて、コマンドラインと対話する時に使うことができます。

#include<iostream>
using namespace std;

int main(){
    string s;
    cin >> s;
    cout << s << endl;   
    return 0;
}

string s;と変数を用意して cinで受け取った入力を代入すします。
endl : こちらによると endl はバッファ出力、\n だと考えても良さそうです。
endl はどこにあるか? iostream の中で #include <ostream> をして、その中に定義されていました。

最初なので基本的な文について触れていきます

if文

if 文は一般的なC#Javaと変わりません。

if (n == 10)
{
    cout << "n == 10" << endl;
}
else if (n == 3)
{
    cout << "n == 3" << endl;
}
else
{
    cout << "other" << endl;
}

string 同士の比較は True(1) になる。

string s = "hoge";
string s2 = "hoge";
cout << (s == s2) << endl;
// Output: 1

for文

for文も、C#Javaと変わりません。

for (int i = 0; i < 10; i++)
{
    cout << i << endl;
}

foreach のようなことが for ステートメントで実行できます。

int intArray[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
for (int v : intArray)
{
    cout << v << endl;
}

while文

これもC++特有の書き方ではありません。

while (n < 20)
{
    n++;
}

do-while文

これもC++特有の書き方ではない。Statementを実行してから評価を行います。

do
{
    n++;
} while (n < 10);

switch分

こちらもC#Javaと同じ書き方です。

switch (n)
{
    case 2:
        cout << "two" << endl;
        break;
    case 4:
        cout << "four" << endl;
        break;
    default:
        cout << "default" << endl;
        break;
}

参考リンク

感想

条件分岐やループの基本的な書き方は他の言語と対して変わりありませんでした。includeusing namespaceも標準ライブラリを用いるなら、そう書くのかと納得する内容でした。

次回は、基礎に戻って組み込み型に触れてみたいです。