初めてのプログラミング
前回でも言ったように、先月私は大学デビューし、
自由気ままにキャンパスライフを満喫しています。
何よりもずっと習いたかったプログラミングを今学べていることが幸せと感じています。
今日はプログラミングを習い始めて1ヶ月の成果&感想を書きたいと思います。
初めてのプログラミング
プログラミングはなんでも作れる万能なツールとしか漠然と理解していなく、
どうやって書くのか、どこに書くのかすら知らなかったプログラミング初心者。
そんな私が最初に手をつけた言語はC言語でした。
C言語はポプュラで凡用性が高いためプログラミングの概念を学ぶのに良いと、
学校に言われるがまま始めましたが、
プログラミングとはなんとも趣が深いものなんだ!
と、さっそくハマってしまいました。
printfでの"Hello world"の出力から始まり、
四則演算、scanfでの入力、if elseの条件文、
そして今はfor whileのループ文までたどり着きました。
一番最初に、ソース文を書いてコンパイル(コンピュータがわかるように翻訳)して実行が成功したときは、
喜びのあまり絶叫しそうになりました。
まさに、「ちょー気持ち!」
そんな感覚にどハマりして学校の課題以外でも色々とプログラムを書いてみましたが(実験がてらに)、
さすがに現在の知識では限界があり少々退屈になっていたところでした。
しかし、ちょうど一昨日のこと
先輩「ループ文を使って『干支の判別』ができるよ」
。。。!?!?!?!?
衝撃でした。
基本的に簡単な計算や場合分けぐらいしかプログラムしていなく、
今までに習った少数のツールでこんなに実用的(?)なものが書けるなんて思いもしなかった。。。(注:← 初心者です)
これはもうやるしかない!
先輩の言葉を信じ、私はすべて自力でその『干支の判別』に挑戦することにしたのです。
プログラム自体は簡単なもので、
西暦を入れたら干支が返ってくるといったものですが、
それを書くとなると相当に悩ましいものでした。(注:← 初心者です)
その日の帰りも次の日もひたすらそのプログラムを考えました。
…もちろん講義はちゃんと出ましたよ?
ソースを考えては書いて実行し、
繰り返すこと十数回。
ようやくプログラムが正しく動いた!!!
文法自体は間違っていないはずだったから、
ただひたすらソースの並びを変えて
いろんなパターンを試していただけですが、
ビンゴした時の喜び!
嬉しさのあまり絶叫しそうでした(再び)。
でも残念ながらその時は図書館にいて大声で騒ぐこともできないし、
近くに喜びを共有できる人もいないため、
拷問のような時間が過ぎました。。。(泣)
(実はこれがブログを始めたきっかけの一つでもありますが、、、)
そんなことは置いといて、
成果発表です!
以下ソース文
/* 西暦による干支の判別 */
#include <stdio.h>
int main(void)
{
int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, c, x;
printf("\nその年の干支がわかるよ.\n");
for( ; ; ){printf("\n西暦 = ");
scanf("%d" ,&c);
for(x = 0; ; x++){
a1 = 4 + 12 * x;
a2 = 5 + 12 * x;
a3 = 6 + 12 * x;
a4 = 7 + 12 * x;
a5 = 8 + 12 * x;
a6 = 9 + 12 * x;
a7 = 10 + 12 * x;
a8 = 11 + 12 * x;
a9 = 12 + 12 * x;
a10 = 1 + 12 * x;
a11 = 2 + 12 * x;
a12 = 3 + 12 * x;
if(c == a1) {printf("干支 = 子\n\n");break;}
else if(c == a2) {printf("干支 = 丑\n");break;}
else if(c == a3) {printf("干支 = 寅\n\n");break;}
else if(c == a4) {printf("干支 = 卯\n\n");break;}
else if(c == a5) {printf("干支 = 辰\n\n");break;}
else if(c == a6) {printf("干支 = 巳\n\n");break;}
else if(c == a7) {printf("干支 = 午\n\n");break;}
else if(c == a8) {printf("干支 = 未\n\n");break;}
else if(c == a9) {printf("干支 = 申\n\n");break;}
else if(c == a10) {printf("干支 = 酉\n\n");break;}
else if(c == a11) {printf("干支 = 戌\n\n");break;}
else if(c == a12) {printf("干支 = 亥\n\n");break;}}
}
return 0;
}
一応説明しておきますが、
西暦1年から永遠に、つまりどんな数字を入れても
その年の干支がわかります。
西暦1年が酉年だということもちゃんと逆算して計算しました。
また、無限ループしますので
プログラムをやめたいときは強制終了をしないといけませんが、
自分の中では最高傑作だと思っています(←何度も言いますが、初心者ですよ!)
興味ある方はぜひコピーして実行を試してみてください!
また、詳しい方は改善点を見つけてくださるとありがたいです!
…とまぁ、こんな感じにプログラミングをやって1ヶ月が経ちましたが、
私が感じたこと
・作るって楽しい!
・理工系にすすんでよかったぁ!
・プログラミングまじ神!
以上3点です。
ただ伝えたいことはたった一つです。
何ごとも興味を持ったら積極的にやってみることです。
そこには予想だにしない宝が待っているかもしれません。
…いやぁ noob は説得力がないですね …
プロになれる日を夢に見て
それではまた会いましょう