Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 25 additions & 32 deletions docs/cpp/chapter-3/1.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# [WIP] 3.1 Hello, traP! の解説
# 3.1 Hello, traP! の解説

おさらい:第1章のコード

<<<@/text/chapter-2/hello-world.cpp{cpp:line-numbers}
<<<@/cpp/chapter-3/hello-world.cpp{cpp:line-numbers}

1行目から順に、まずは「用語」を説明していく。
新しい単語がどんどん出てくるが、単語の説明は 2.1.1. 以降で行う。今は単語を頭の片隅に入れておくレベルで良いだろう。
新しい単語がどんどん出てくるが、単語の説明は 3.1.1. 以降で行う。今は単語を頭の片隅に入れておくレベルで良いだろう。

```cpp:no-line-numbers
#include <iostream>
Expand All @@ -32,7 +32,7 @@ int main() {

コンソールに `Hello traP!` を出力する。
`"` で囲うのは、これが文字列なのか、命令なのかを区別するため。(`VSCode`を使っていれば `"Hello traP!"`
の部分だけ色分けされているはず。) `endl` についても 2.1.1. で解説する。
の部分だけ色分けされているはず。) `endl` についても 3.1.2. で解説する。

```cpp:no-line-numbers
// Hello, traP を出力する
Expand All @@ -46,25 +46,23 @@ int main() {

波括弧を閉じている。

## 2.1.0. コメント
## 3.1.1. コメント

`//` と書くと、その行の `//` 以降の部分はコメントになり、ブログラム実行時には無視される。
<<<@/cpp/chapter-3/hello-world.cpp{6 cpp:line-numbers}

`//` と書くと、その行の `//` 以降の部分はコメントになり、プログラム実行時には無視される。

::: tip
プログラムの先頭に `//` を付けてコメントにする事をコメントアウトする、と呼ぶことがある。
:::

プログラムがどのような動作をするのか、どういう目的のプログラムなのか、を簡易的に記述すると良い。見たら分かるというレベルになれば、コメントを書く必要はない。

```cpp:no-line-numbers
// Hello, traP を出力する
```

## 2.1.1. cout
## 3.1.2. cout

<<<@/text/chapter-2/hello-world.cpp{5}
<<<@/cpp/chapter-3/hello-world.cpp{5}

`cout` はコンソール(画面)に文字列を出力する命令である。C++ 特有の記法で、 `<<` が ← みたいなものだと考えると良い。`cout`
`cout` はコンソール(画面)に文字列を出力する命令である。C++特有の記法で、 `<<` が ← みたいなものだと考えると良い。`cout`
に向かって文字列を送信しているイメージ。複数つなげることもできる。(以下の例を参照)

```cpp:no-line-numbers
Expand All @@ -73,7 +71,7 @@ int main() {

また、`endl` は改行の命令を意味する。

### 2.1.1.1. エスケープシーケンス
:::: tip エスケープシーケンス

出力に `"` を含めたい場合、 `cout << "Hello, "traP"!" << endl;` と記述してもコンパイルができない。これは `"Hello, "` で文字列が区切られてしまっているためである。
これを回避するために、(Windows: ¥ キー, Mac: Option (⌥) キーを推しながら ¥ キー) `\` という文字を使って `\"` と書くことで、 `"` を出力することができる。
Expand Down Expand Up @@ -110,19 +108,21 @@ traP!
文字列中では `//` を書いてもコメントアウトされない。
:::

::::

## 2.1.2. セミコロン

C++ では、`;` を多用する。`;` は「命令の区切り」を示す。C++
## 3.1.3. セミコロン

C++では、`;` を多用する。`;` は「命令の区切り」を示す。C++
においては、関数を呼び出すときや、次に出てくる「変数」の宣言時など、各命令の終わりには `;` を記述しなければならない。

::: tip
最終的にはコンピューターが機械語に変換する必要があり、その際に命令の区切りをはっきりさせるために `;`を使うと考えると良い。
:::

## 2.1.3. include 命令
## 3.1.4. include命令

<<<@/text/chapter-2/hello-world.cpp{1 cpp:line-numbers}
<<<@/cpp/chapter-3/hello-world.cpp{1 cpp:line-numbers}

`#include` は、外部の関数(やその他もろもろ)が実装されているファイルを取り込んで、使えるようにする命令である。

Expand All @@ -132,26 +132,19 @@ C++ では、`;` を多用する。`;` は「命令の区切り」を示す。C+

自分一人で一から作る事は非常に難しいので、予め用意されたソースコードを適宜用いてプログラミングをするのである。

## 2.1.4. using namespace std
## 3.1.5. using namespace std

<<<@/text/chapter-2/hello-world.cpp{2 cpp:line-numbers}
<<<@/cpp/chapter-3/hello-world.cpp{2 cpp:line-numbers}

`cout` と記述しているが、本来ならば `std::cout` と書く必要がある。 `std::` が何を意味しているかは深くは解説しないが(std =
standard くらいは知っても良いだろう)、毎回`std::` と書くのは少し不便なので、これを書かない(省略する)という宣言をしている。

## 2.1.5. コメント

<<<@/text/chapter-2/hello-world.cpp{6 cpp:line-numbers}

行の先頭に `//` と書く事でその行をコメントにすることができる。コメントはコンパイル時には無視される。
メモに使うと良い。
standard くらいは知っても良いだろう)、毎回`std::`と書くのは少し不便なので、これを書かない(省略する)という宣言をしている。

## 2.1.6. main 関数
## 3.1.6. main関数

<<<@/text/chapter-2/hello-world.cpp{4 cpp:line-numbers}
<<<@/cpp/chapter-3/hello-world.cpp{4 cpp:line-numbers}

コンピューターは main 関数 を実行する。main 関数の中身がプログラムのメインの部分と捉えても良い
「関数」についての詳細は V 章で扱う
コンピューターはmain関数を実行する。main関数の中身がプログラムのメインの部分と捉えても良い
「関数」についての詳細は5章で扱う

ソースコードの中で `int main()` の後の `{` と、最終行の `}` は対応していて、 `{ }` の内側が main
関数の内容である。
Expand Down
10 changes: 5 additions & 5 deletions docs/cpp/chapter-3/2.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# [WIP] 3.2 int型変数
# 3.2 int型変数

```cpp
#include <iostream>
Expand Down Expand Up @@ -56,7 +56,7 @@ cout << x << endl;
`C++`では、「型」が異なる値と変数について一部の場合を除き、値をそのまま変数に代入することはできない。例えば、`int`型の変数に文字列(=`string`型とよばれている)を入れるような命令はエラーとなる。
:::

## 2.2.1. int型 の計算
## 3.2.1. int型の計算

パソコンは計算機なので、当然計算ができる。

Expand Down Expand Up @@ -92,7 +92,7 @@ cout << x % y << endl;
である。 `+`, `-`, `*`, `/`, `%` 等のような記号を **演算子** と呼ぶ。

ここで、**`int`型同士の割り算について、結果は`int`型となる**。(文字通り「商」を取る)
小数は第3章で扱う
小数は後の章で扱う

また、値を代入することもできる。

Expand Down Expand Up @@ -136,7 +136,7 @@ cout << x << endl;

他にも `-=`, `*=`, `/=`, `%=` が使える。

## 2.2.2. オーバーフロー
## 3.2.2. オーバーフロー

オタクというのはでかい数字が大好きなので、

Expand All @@ -155,6 +155,6 @@ cout << yen << endl;

::: tip
オーバーフローに関連して、ゲーム「パズル&ドラゴンズ」において 2021 年まで各キャラクターが出せる最大ダメージは2,147,483,647ダメージであったという話がある。これはゲームが `int` 型を用いていたためについていた制限である。
なお、2021年のアップデートでダメージ上限が変更された。これはより大きい整数を扱える型 (C++ で言うところの `long long`型 )に変えられたからだそうだ。
なお、2021年のアップデートでダメージ上限が変更された。これはより大きい整数を扱える型 (C++で言うところの `long long`型 )に変えられたからだそうだ。

:::
6 changes: 3 additions & 3 deletions docs/cpp/chapter-3/3.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# [WIP] 3.3 標準入出力
# 3.3 標準入出力

cin 命令を用いると、コンソールから入力し、変数に代入することができる。例えば、与えられた値を10倍するコードは以下の様になる。
cin命令を用いると、コンソールから入力し、変数に代入することができる。例えば、与えられた値を10倍するコードは以下の様になる。

```cpp:line-numbers
#include <iostream>
Expand All @@ -14,7 +14,7 @@ int main() {
}
```

::: tip II 章のまとめ
::: tip 3章のまとめ

```cpp:line-numbers
#include <iostream>
Expand Down
7 changes: 7 additions & 0 deletions docs/cpp/chapter-3/hello-world.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#include <iostream>
using namespace std;

int main() {
cout << "Hello, traP!" << endl;
// Hello, traP を出力する
}
4 changes: 2 additions & 2 deletions docs/cpp/chapter-3/index.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# [WIP] 3. 変数と入出力
# 3. 変数と入出力

第二章では、第一章の最後に登場したソースコードを見ながらプログラミングの基本的な構造・用語について解説します。
第三章では、第一章の最後に登場したソースコードを見ながらプログラミングの基本的な構造・用語について解説します。

また、後半では「変数」「入出力」を扱います。
2 changes: 1 addition & 1 deletion docs/cpp/chapter-3/problems/4bit.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# 2-B1. 4bit
# 3-B1. 4bit

入力から$0 <= n < 16$の整数値を受け取り、2進数で表記しよう。

Expand Down
8 changes: 4 additions & 4 deletions docs/cpp/chapter-3/problems/index.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# [WIP] 練習問題 - Chapter 3
# 練習問題 - Chapter 3

- [2-A1. Multiplication](multiplication)
- [2-B1. 4bit](4bit)
- [2-B2. Sum](sum)
- [3-A1. Multiplication](multiplication)
- [3-B1. 4bit](4bit)
- [3-B2. Sum](sum)
2 changes: 1 addition & 1 deletion docs/cpp/chapter-3/problems/multiplication.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# 2-A1. Multiplication
# 3-A1. Multiplication

cinでint型の整数を2つ受け取って、その積をターミナルに出力しよう。

Expand Down
4 changes: 2 additions & 2 deletions docs/cpp/chapter-3/problems/sum.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 2-A2. Sum of n
# 3-B2. Sum of n

cin で自然数 $n$ を受け取って、$1$ から $n$ までの和を出力するプログラムを作成してください。
cinで自然数 $n$ を受け取って、$1$ から $n$ までの和を出力するプログラムを作成してください。

### 入力/出力例

Expand Down
Loading