どうもこんにちは、昨日書いた記事がいきなり100以上のいいねが付いてきてかなりびっくりしているしゃーまんです。最初の投稿というわけで書くのにも結構時間がかかって、苦労しましたが、好感触のようで何よりです。
というわけで今日からバリバリ書いていこうかなと思います。
昨日の記事はこちらです。
大学を合格してから始めるwindowsでプログラミング 1日目
本日のメニュー(原文ママ)
- power shellに慣れる
- 簡単なプログラムを書いてみる
- コンパイルして動かす
ということになりそうです。それではやっていこうかなと思います。
その前にMSYS2を導入する
昨日の記事にSSWさんやmattnさんやspiegelさんなどいろいろな方がコメントをつけていただきました。どうやら私が昨日入れたMinGWはとても古いソフトで、今これを使うというのは微妙ということでした。
調べてみると、MSYS2というのはターミナルエミュレーターというもので、私が使っているpower shellよりも数段使いやすいそうです。
それ以外にもコマンドだけでソフトを入れることができたり、シェルというものをいじることができるそうです。
大学ではそれなりに最新のものを使用するでしょうし、ターミナルが主らしいので、MSYS2を導入することにしました。
MSYS2公式ページから64bit 版をダウンロードしてきます。(msys2-x86_64~ とかいうやつ)
ダウンロードしてexeファイルを起動、インストールしました。
あとは公式ページのインストールガイド的なものを見ながら設定しました。
最初からインストールされているのはどうやら古いパッケージなようで、これで最新のものにアップデートされます。
pacman -Syu
するとこんな画面になって、アップデートされていきます。
終わった後はMSYS2を再起動して、再び
packman -Sy
でアップデートします。
アップデートが終わったらとりあえずはMSYS2の設定は終わり。
すべてが最新だとこんな感じになるはず。(僕の環境ではこうなりました)
ここから改めてC言語の環境設定をしていきます。
参考にさせていただいたのはこちらです。
MSYS2にいろいろなソフトを入れるためのpacmanというパッケージマネージャーが必要みたいでした。pacmanというのは調べてみたところ、linuxというOSのパッケージマネージャーみたいでした。
参考にさせていただいたサイト様からpacmanのコマンドを拝借いたしました。
これを使って環境構築していきます。
最初にgitというものを入れました。gitについても全然わからなかったので色々調べました。
どうやらgitというのはプログラムなどを管理するツールの一つらしい。ただただプログラムを置いておくだけでもいいけれど、もっとすごいのはこれをバージョンで管理できるということ。
一人でプログラムを書いているとき、バグが出て、直しているときに結局訳が分からずごっちゃになってしまいました。そういう時にこのgitが便利、gitは今までの状態を記録しているので、以前にプログラムを書いた状態に戻すことができるみたいです。
また、これ以外にもほかの人と一緒にプログラムを書くのに便利だそうで。ブランチという概念があり、二人がAとBというプログラムを書いて、実際にgitの上でプログラムを結合することもできるそうで、プログラミングをする人必携のものらしいです。
githubのアカウントも作りました。
gccのインストール
どうやらC言語のコンパイラはgccというみたいだったのでこういう感じにしました。やっていることは先ほど参考にさせていただいた方のページです。
pacman -S base-devel mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain
でgccのインストールが開始されます。終わったら動作確認をしました。
MinGWの32bit版、64bit版を立ち上げて gcc -v
を打ち込みます。
画像のような文字が帰ってくればいいらしいです。
コマンドに慣れる
どうやらプログラミングは、マウスで色々動かすというよりも、MSYS2のようなソフトにコマンドを打ち込んでやっていくらしい、マウスでファイルを操作するのには慣れていたけれど、コマンドとなるとめちゃくちゃわからなかった。とりあえず調べた中で日常的に使用するのはこんなものらしい。
- mkdir フォルダを作成するコマンド
- cd フォルダを移動するコマンド
- cp フォルダやファイルをコピーするコマンド
- mv ファイルやフォルダを移動するコマンド
- pwd 現在いるフォルダまでの階層を表示してくれるコマンド
とりあえずここら辺を調べました。多分これをいじればなんとかなると思いました。
絶対パスと相対パス
パソコンの中のファイルは、おおもとのフォルダ(ディレクトリともいう)から、派生してファイルが保存されているみたいです。
Aというファイルまでのフォルダの道的なものをパス(Path)と言うそうで、これを指定する方法に相対パス と 絶対パスというものがあります。
絶対パス ... 絶対パスは一番大元のフォルダからのパス
相対パス ... 相対パスは現在いるフォルダから目当てのフォルダまでのパス
みたいです。例えば、cd
の場合は
cd root\A\B\C\
とすればCまで移動できます。これは絶対パス、おおもとのroot
から移動しました。
相対パスの時は例えば、CというフォルダにいるときにBに移動したい、けどcd root\A\B
と書くのもめんどくさいので
cd ..\
で一つ上のフォルダに行けるみたいです。
今日一番難しかった概念がここだった気がします。
とりあえず、プログラミングをしていくフォルダを
mkdir C-gengo
として作ってみました。この中で僕はプログラミングをしていこうと思います。
プログラミング
初めてのプログラミング、どうやらこの界隈はHello World
と表示させるのが通例のようです。調べてみましたがこんな感じなようです。
#include<stdio.h>
int main(){
printf("Hello World");
return 0;
}
僕が生まれて初めて書いたプログラムです。atomで書きました。
コンパイルするためには、MSYSで開ける場所にファイルを置いていなければいけないらしく、保存する場所がとても分かりづらかったです。とりあえず保存できました。
動作を確認します。
動作確認
コンパイルをします。コンパイルは
gcc コンパイルしたいファイル
でコンパイルができます。
そうすると a.exe
というファイルが生成されます。これは実行ファイル
と言われ、これが実際のプログラムみたいです。これを実行するには./a.exe
とすれば動いてくれました!!!
生まれて初めてのプログラムが動きました。めちゃくちゃうれしい。
けど、なぜこうなって動いたかが分からなかったので、このhello worldのファイルを読み解いていこうと思いました。
コードについて調べる
#include<stdio.h>
int main(){
printf("Hello World");
return 0;
}
- #include
まず、#include<stdio.h>
という行です。これはどうやら、プログラミングに必要な道具が入っているセットみたいなものらしいです。
ヘッダファイルというところに、プログラミング中に使用できる関数?が詰まっていて、この中に入っている関数を使用できます。
どうやらprintf
という文字を表示させるのに必要な関数は stdio
という中に入ってるようです。
- int main
プログラミング言語というのは、上から順にプログラムが実行するらしく、このmainというものは一番最初に動く関数。ここで主にプログラムが動くようです。
- printf
C言語で文字を表示させる関数、
printf("表示させたい文字");
で文字が表示されるらしい、文字の後ろに \n
をつけると、自動的に改行がされます。(改行文字というらしい)
- return 0
関数というものはよくある二次関数
$$y = x^2 + 3x + 5$$
みたいに、一つの数字を入れたらもう一つの答えが返ってきます。
C言語の関数も同じように一つの入力で一つの出力が返されます。
mainはどうやら出力だけがあるそうで、何もないときは0が出てくるそうです。
というわけで、このプログラムだけでも、いろいろなものを知ることができました。
今日のまとめ
MSYSはめっちゃ使いやすい。 powershellというものを最初は使っていたのですが、めちゃくちゃ難しかったです。しかしこれはpacmanというもので色々なソフトを簡単に入れられるようで、余計な設定も少ない感じがします。
今日はプログラムをバリバリやろうとしていましたが、MSYSの設定にてこずったせいで、hello worldだけで終わってしまいました。
明日からはもうちょっと踏み込んでいこうと思います。
あと、大学に行って行列が必要だと先生に言われた脅されたので、ぼちぼち行列などもやろうかなーとも思っています。
本日もここまで読んでくださり、どうもありがとうございました。