初めてのC言語

# はじめに
そろそろ桜咲く季節ですね！大学入学が決まり、早めにプログラミング言語を触っておきたいという人も多いのではないでしょうか。
この記事はそんな方々を対象に、お決まりの"Hello World"を出力するプログラムを作成する方法をご紹介します。

# こんな人におすすめ
* プログラミング言語を初めて触る
* linuxを初めて触る

:::note info
このチュートリアルでは、理工(情報)系大学で扱うことの多いCUI環境に慣れることを目的としています。そのため、VisualStudioなどのIDEやVScodeなどの高機能エディタは使用しませんので、ご注意ください。
:::

# 必要なもの
* Windows11搭載PC
* Microsoftアカウント（Microsoftストアで必要になります）

# Windowsにlinuxを入れてみる
最近になり、windows上でlinuxを動かせるようになりました！（歓喜）
まずは、それをインストールするところから始めましょう。

### 1. MicrosoftストアからWSLをダウンロードする
まず、Microsoftストアから次のアイコンのものをダウンロードしてください。

![スクリーンショット 2024-03-02 210857.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3732687/d6948bbd-a33f-d95d-f38b-c364904efc82.png)


### 2. Microsoftストアからubuntuをダウンロードする
次に、linuxの一種であるubuntuをダウンロードします。ubuntuと検索すると、いくつかのバージョンのubuntuが出てくるのですが、今回は22.04のLTS版を選択しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3732687/00de5c7a-7158-e37c-5c31-19b2cba5b238.png)

#### LTS版とは
Long Term Support の略で、セキュリティアップデートなどが長期に渡ってサポートされるバージョンとなっています。普通のubuntuでも良いのですが、とりあえずLTSにしとけば長期サポート対象となるので、おすすめです。

### 3. ubuntuを起動してみる
上2つをダウンロードしたら、ubuntuを起動します。すると、ユーザー名とパスワードを設定する画面となるはずなので、設定していきましょう。
ただし、パスワードを設定する際は画面上に入力した文字は表示されないので、間違えないように気を付けましょう。

# CUIの考え方
この章では、CUIの考え方について解説していきます。
みなさんが今使っているWindowsPCを、GUIと呼びます。Graphics、画面に描画されたものをマウスやキーボードで操作することで、様々なことを実行しますよね？これがGUIです。
対して、画面上にテキストのみが表示され、コマンド（Command）をキーボードで打ち込むことにより操作するのが、CUIです。

難しいことは考えず、とりあえず操作してみましょう！

まず、次のコマンドを打ち、Enterを押してみましょう。

```:
ls -al
```

すると、次のような表示になります。（私はテストフォルダなどを作ったため、表示されるファイル一覧には個人差があると思います）
```:
username@DESKTOP-XXXXXXX:~$ ls -al
total 36
drwxr-x--- 4 username  username  4096 Mar  2 18:19 .
drwxr-xr-x 3 root root 4096 Mar  2 01:23 ..
-rw------- 1 username  username   135 Mar  2 10:58 .bash_history
-rw-r--r-- 1 username  username   220 Mar  2 01:23 .bash_logout
-rw-r--r-- 1 username  username  3771 Mar  2 01:23 .bashrc
drwx------ 2 username  username  4096 Mar  2 01:24 .cache
-rw-r--r-- 1 username  username     0 Mar  2 01:24 .motd_shown
-rw-r--r-- 1 username  username   807 Mar  2 01:23 .profile
-rw-r--r-- 1 username  username     0 Mar  2 01:28 .sudo_as_admin_successful
-rw------- 1 username  username   810 Mar  2 18:19 .viminfo
drwxr-xr-x 2 username  username  4096 Mar  2 18:25 test
```

このlsコマンドは、自分の今いる位置のフォルダやファイルのlistを表示してくださいというコマンドになります。自分の今いる位置は、
```:
username@DESKTOP-XXXXXXX:~$
```
の
```:
:~$
```
の。:より右側の部分で確認できます。

```:
:~$　であれば、ホームディレクトリ
:~/test$　であれば、ホームディレクトリの下のtestフォルダ
:~/test/test2$　であれば、ホームディレクトリの下のtestフォルダの下のtest2フォルダ
```

windowsPCで普段見ている画面にイメージし直すと、多少フォルダの順番が異なりますが、こういうことになります。

![スクリーンショット 2024-03-02 191422.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3732687/7e37c5ef-ef6b-2798-78d0-cf78eae4fade.png)


イメージとしては、このエクスプローラーの画面1つでディレクトリ移動をしていく形です。

# 新規フォルダを作成しよう
次のコマンドで、新規フォルダを作成することができます。
```:
username@DESKTOP-XXXXXXX:~$ mkdir <作りたいフォルダ名>
```
今回は、ホームディレクトリの下にtestというフォルダを作ってみましょう。
```:
username@DESKTOP-XXXXXXX:~$ mkdir test
```
と入力し、lsコマンドでファイルの状況を確認すると、
```:
username@DESKTOP-XXXXXXX:~$ ls -al
total 36
drwxr-x--- 4 username  username  4096 Mar  2 18:19 .
drwxr-xr-x 3 root root 4096 Mar  2 01:23 ..
-rw------- 1 username  username   135 Mar  2 10:58 .bash_history
-rw-r--r-- 1 username  username   220 Mar  2 01:23 .bash_logout
-rw-r--r-- 1 username  username  3771 Mar  2 01:23 .bashrc
drwx------ 2 username  username  4096 Mar  2 01:24 .cache
-rw-r--r-- 1 username  username     0 Mar  2 01:24 .motd_shown
-rw-r--r-- 1 username  username   807 Mar  2 01:23 .profile
-rw-r--r-- 1 username  username     0 Mar  2 01:28 .sudo_as_admin_successful
-rw------- 1 username  username   810 Mar  2 18:19 .viminfo
drwxr-xr-x 2 username  username  4096 Mar  2 18:25 test
```
確かにtestというフォルダが作成されていますね。

# 自分のいるディレクトリを移動しよう

自分のいる位置を変更したいとき、次のコマンドを入力することで、移動することができます。
```:
username@DESKTOP-XXXXXXX:~$ cd <移動したいディレクトリの名前（現在よりも下のディレクトリ）>
```
ここでは、先程作成したtestという新しいフォルダに移動してみましょう。
```:
username@DESKTOP-XXXXXXX:~$ cd test
```

ちなみに、前に移動したいときは、次のように入力します。
```:
username@DESKTOP-XXXXXXX:~$ cd ..
```
testに移動した後、このコマンドを入力すれば、ホームに戻ります。

また、一気にホームディレクトリに移動したいときは、次のように入力します。
```:
username@DESKTOP-XXXXXXX:~$ cd
```


# 新規ファイルを作成しよう
ここでは、プログラムを記入するファイルを作成します。
```:
username@DESKTOP-XXXXXXX:~/test$ touch <作成したいファイル名.c>
```
と入力すると、新しいファイルを作成します。今回はC言語を記述するファイルを作りたいので、拡張子は.cとなります。
次のように、新しくtest.cというファイルを作りましょう。
```:
username@DESKTOP-XXXXXXX:~/test$ touch test.c
```


# vimで編集してみる
ここでは、先程作成したファイルの中身を編集していきます。
そのために、ubuntu版メモ帳となるvimを導入しましょう。
```:
username@DESKTOP-XXXXXXX:~/test$ sudo apt-get update
```
というコマンドを実行した後、
```:
username@DESKTOP-XXXXXXX:~/test$ sudo apt-get install vim
```
を実行すると、vimをインストールすることができます。
vimでファイルを開く際は、次のように入力します。

```:
username@DESKTOP-XXXXXXX:~/test$ vim <編集したいファイル名>
```

今回は、先程作成したtest.cを編集したいので、次のように入力します。

```:
username@DESKTOP-XXXXXXX:~/test$ vim test.c
```
すると、今までとは違う画面に移動すると思います。それが、編集画面です。
では、早速"Hello World"を表示するプログラムを作成しましょう。

※ここはとりあえず写経で良いです

```:
#include <stdio.h>

int main(){
        printf("Hello World\n");
        return 0;
}
```
これをそのまま入力してみましょう。
編集が終わったら、escを押して、編集モードを終了します。
そして、:wqと入力して、上書き保存をしてください。

```:
#include <stdio.h>

int main(){
        printf("Hello World\n");
        return 0;
}
~
~
~
~
~
~
~
:wq    
```


# コンピュータが実行できる形式にしてみる
このファイルを作成するだけでは、コンピュータは認識できません。そのため、コンパイルという作業をして、コンピュータが認識できる形にしましょう。

## コンパイラを入れよう
コンパイルをするために、コンパイルをするソフトウェアであるコンパイラを入れましょう。
まず、先程vimを入れるときにも実行した
```:
username@DESKTOP-XXXXXXX:~/test$ sudo apt-get update
```
を、念のため再度実行した後、
```:
username@DESKTOP-XXXXXXX:~/test$ sudo apt install gcc
```
を実行し、gccというコンパイラをインストールします。

## コンパイルしてみる
先程インストールしたgccを用いて、以前作成したtest.cをコンパイルしてみましょう。
コンパイルするコマンドは、次の形式です。
```:
username@DESKTOP-XXXXXXX:~/test$ gcc -o <出力する実行ファイルの名前> <コンパイル元のファイル名>
```
今回はtest.cをコンパイルして、testというファイルを新たに作成したいので、
```:
username@DESKTOP-XXXXXXX:~/test$ gcc -o test test.c
```
と入力します。
Enterキーを押して何も無ければコンパイルは成功です。では、最初に紹介したlsコマンドで、testというフォルダ内にどんなファイルがあるか見てみましょう。
```:
username@DESKTOP-XXXXXXX:~/test$ ls -al
total 28
drwxr-xr-x 2 username username  4096 Mar  2 18:25 .
drwxr-x--- 4 username username  4096 Mar  2 18:19 ..
-rwxr-xr-x 1 username username 15960 Mar  2 18:25 test
-rw-r--r-- 1 username username    71 Mar  2 18:19 test.c
```
ちゃんとtest.cからコンパイルされたtestというファイルがありますね。

## 実行してみる
最後に、先程コンパイルしたtestという実行ファイルを実行してみましょう。
```:
username@DESKTOP-XXXXXXX:~/test$ ./<実行ファイル名>
```
という形式で実行できますので、今回は

```:
username@DESKTOP-XXXXXXX:~/test$ ./test
```
と入力します。すると、
```:
username@DESKTOP-XXXXXXX:~/test$ ./test
Hello World
```
と、無事"Hello World"が出力できましたね。

# おわりに
いかがでしたでしょうか！
この方法は"Hellow World"を表示させるプログラムを実行するだけのものとしては、ハードモード寄りな方法となります。
一番簡単なのはVisualStudioやVScodeをインストールして、その上で直接実行してしまうことですが、今回はコンパイルという作業を挟みたかったので、この方法を取りました。
VisualStudioを用いた方法は他の方々がQiita上に投稿しているため、そちらを参照してください！
ご覧いただき、ありがとうございました！