第一回ざっくり C言語解説(仮)

# 1章 関数を作る
C言語のコードは `関数` の集まりで構成されています。<br>
この章ではC言語の `関数` とは何なのかを学び実際に関数を作って実行する方法を学んでいきましょう！

## 1.1 関数とは
C言語での関数も皆さんが知っているような `y = ax + b` のような一次関数と同じようなものです。<br>
`y = ax + b` では `x` に数字を入れると `a` 倍して `b `を足す処理をした `y` が返って来るようにC言語の関数も値を受け取ってそれを処理した値を返します。<br>

次項では関数の基本となる形を学んでいきましょう！

## 1.2 関数の定義
```c
int myfunc(int arg) {}
```
これがC言語の基本的な関数の形です。<br>
`int` という型の `arg` という名前の値を受け取って `{}` の中の処理をして `int` という型の値を返す `myfunc` という名前の関数です。<br>
私たちのよく知る `y = ax + b` で当てはめて考えると `myfunc` というのは一次関数という名前、`arg` は `x` に当たりこの `arg` を __引数__ と呼んだりします。 <br>
そして `{}` の中に書かれる内容が `ax + b` のような処理に当たります。<br>
今回 `{}` の中は空なのでこの関数は何もしません。<br>
`y` に当たる値を返すための部分は実はこの関数にはありません。それに関しては1.4項で解説します。

そして途中で何気なく出てきた `int` というワードは型名と言いその値がどのような型の値なのかを表しています。
C言語の基本的な型は下の表の通りです。

| | |
|:----:|:------:|
| 整数 |  int   |
| 実数 | double |
| 文字 |  char  |

`int arg` の場合 __`arg` は `int` 型なので整数の値__ だと分かります。

## 1.3 実際に関数を作る
私たちはコンピューターにやってもらいたいことを関数の `{}` の中に記述することが出来ます。<br>
試しに `y = ax + b` をC言語で書いてみましょう。<br>

まずは前項のように基本的な関数を定義してみましょう。
```c
int linear_function(int x) {}
```
今回は線形関数を意味する `linear_function` という名前にしてみました。

`関数名()` の括弧の中で `x` という変数を受け取っています、関数ではこの括弧内でのみ引数を受け取ることが出来ます。<br>
もし2個以上の引数を受け取る必要がある時は `関数名(int x1, int x2)` のようにカンマで区切ることで複数の値を受け取ることが出来ます。

関数の名前で2単語以上使う時、C言語でやその他プログラミング言語では半角スペースを関数名に使う事ができないのでC言語では `_(アンダーバー)` で単語を繋ぐのが慣例となっています。<br>

では関数の基本的な形が出来たところでようやく `{}` の中に処理を書いていきます。<br>
C言語では `{}` の中の処理は基本的に上から下に向かって処理されます。<br>
```c
int linear_function(int x) {
  2 * x + 1;
}
```
C言語で四則演算は皆さんの知っているような形で書くことが出来ます。<br>
もちろん `()` で囲めばそこが優先されますし掛け算や割り算が足し算や引き算より先に計算されます。<br>
今回は `2 * x + 1;` という処理を書きました、 `a = 2` で `b = 1` の 一次関数ですね。<br>

また末尾にセミコロン( `;` ) が付いています。 C言語では文の終わりにはセミコロンをつけるというルールがあります。<br>
これはコンピューターがどこまでが一つの文の塊なのかを区別するために使われます。<br>

C言語の式には皆さんの知る数学とはいくつか違う点があります。<br>
まず `×` が `*` になっているところ、C言語で四則演算子は次の表のようになっています。
| | |
|:------:|:-:|
| 足し算 | + |
| 引き算 | - |
| 掛け算 | * |
| 割り算 | / |

また数学の式のように掛け算を省略して `2x` のように書くことが出来ません。<br>
残念ながらコンピューターは `2x` を `2 * x` なのか `2x` という名前の値なのか区別することが出来ないからです。<br>
次項ではこの関数を使って実際に計算を行います！

## 1.4 関数を使う
前項で私たちは無事に一次関数をC言語で書くことが出来ましたね！<br>
では早速関数を使ってみましょう！
```c
linear_function(5);
```
C言語で関数を使用するときは `使いたい関数名();` のようにして `()` の中に渡したい値をカンマ区切って入れます。<br>
文末にセミコロンをつけることを忘れないで下さいね！<br>

これでこの関数の中では実際に `2 * 5 + 1` が計算されます....! が困ったことにこの関数にはある大事な機能が不足しています。<br>
そう、1.2項で触れた値を返す機能です。<br>
値が返せないこの関数は何の役にも立たない無意味で無価値な関数です、値を返す機能を追加しましょう。<br>
```c
int linear_function(int x) {
  return 2 * x + 1;
}
```
`return` が追加されました。このキーワードは 右側にある式や数値の値を関数の計算結果として返し関数の処理を終了する機能を持っています。<br>
そのため `return` より下に書かれた処理は実行されることはありません<br>
また`return` で関数から返ってくる値を __戻り値__ や __返り値__ と呼んだりします。

結果を返す機能が追加されて今度こそ！私たちは一次関数をC言語で書くことが出来ました。<br>
次項では実際に作った関数をコンピュータで実行してみます！

## 1.5 実際にコンピュータで実行してみる
早速関数を書いたファイルをコンピュータで実行したい!....所なのですが、まだまだ準備不足です。<br>
試しに今まで書いてきたコードをコンパイルするとエラーになります。<br>
なぜなのか...? それはコンピュータはいくつかの関数がある時、どの関数から実行していいのか分からないのです。<br>
そこでC言語には一番最初に `main` という名前の関数を実行するという決まりがあります。<br>
次のようにコードを変更してみましょう。

```c
int linear_function(int x) {
  return 2 * x + 1;
}

int main() {
  linear_function(5);
}
```

これで完璧～！ `main関数` の中で私たちの作った `linear_function関数` が使用されていますね！<br>

実際にこのコードをコンパイルして実行すると `2 * 5 + 1` が計算されて答えの `11` が返ってきます。<br>
が、このコード実行しても画面には何も表示されない事でしょう、実際に計算は行われているはずなのになぜ何も表示されないのでしょうか...? <br>
それは計算結果を表示する処理が書かれていないからです。

次章では一旦変数について学びます、その後3章で実際に画面に値を表示する方法を学びます！