【C#】AOJのITPをやり終えたので振り返る

 

 

最近AOJで「Introduction To Programing I」を終えたのでその振り返りをしていきたいと思います。

 

AOJ Introduction To Programingを終えて

↑一応証拠

 

とても勉強になったというのが、素直な感想です。

 

というのも、学校の授業で習う以外にプログラミングの問題を解いて、さらに採点までしてもらうなんてことは経験してこなかったからです。(合否だけですが)

 

なので、パソコンがあればどこでもC#の練習が出来るのは自分の中でかなりモチベーションアップになっていました。

 

問題も「これ、日常生活じゃ使わないな」というものも多々ありましたが、そういった問題でも必然的に使わなければいけない基本的な考え方やメソッドがしっかりと用意されています。Introduction To Programingとはよく言ったものです。

 

しかし、同時に「プログラミング言語をまったく扱ったことのない人にはけっこう難しい」と感じました。

 

というのも、最初の「Hello World」を出力するところや簡単な計算をする問題は文字通り初心者でも問題なく解くことが出来るのですが、だんだん問題が難しくなって最後あたりになるとわりとよく構造を考えてプログラムを書く必要があるからです。

 

少なくとも、基本的な入出力、条件分岐やループ文はもちろんなこと、配列や自作関数の作成などをあらかじめ学習していることが望ましく、それらを備えたことを前提として「上手く機能する考え方」を理解する必要が出てきます。

 

ただ覚えているだけで、言われるままプログラムを組むだけの力だとけっこうつまづくと思います。

 

実際に問題を解いていて、全体を通して基本操作や機能を覚えている前提で、そこからそれらを問題の意図にそってどう組み合わせるかの「柔軟さ」を徐々に求められている感じがしました。

 

C#の基本的なクラスやメソッドを覚えたての私にとっては、良い意味で力試しが出来る問題だったと思っています。

 

また、仮に問題がどうしてもわからない場合は、AOJの他のユーザーの解答例を自由に見ることが出来るので、ヒントが欲しいときはそっとのぞいてみるといいです。

 

私的にはこれがかなり大きなメリットだと思っていて、自分と同じように問題を解ているユーザーの様々な回答を見て「こんなやり方があったのか」とか「このメソッド使った方が簡単にできるのか」とか、いつも勉強させられます。

 

実際、他のユーザーが自分の知らないメソッドを使っていたり、自分の愚直で冗長なコードと比べてスッキリとかかれたきれいなコードを見ると「ええ、こんなに短いコードで書けるのかよ…」と発見が絶えません。

 

例えば、今までは空白おきに入力された文字を以下のようにして分けていたのですが、

str変数はいらなくて、

こんな感じに、コードを省略することができることを学ぶことができました。

 

また、解答例の話で、C#はAOJではマイナーな言語のようで、使っているユーザーは全体から見たらかなり少ないですが、C++やPython、C言語などはかなり多くのユーザーが扱っているメジャー言語なので、解答例だけでもよりどりみどりです。(問題説明文のヒントがC++のコードで書かれてることも)

 

現在は、「Introduction to AlgoriThms and Data Structured」で基本的でメジャーなアルゴリズムの考えとプログラムでのその表し方を学んでいるのですが、考えかたはわかっても実際にそれを表すとなるといつもつまずきまくる毎日です。

 

問題を解くたび思うのですが、こういったAOJの練習をすると、プログラミング自体が好きか問題を解いた後の達成感がないとやっていられないほど、初心者は最初つまづくと思います。

 

しかし、他のユーザーのコードを自由に見て他人のコードを「読みにく~」と思いながら読んだり、自分だけで考えて孤独にエラーに対処する経験は初心者だからこそ経験するべき、なんというか「洗礼」みたいなものだと思って頑張るしかないんですね。

 

もしかしらた、他人のコード読むのがめんどくさいのはプロになってもそれは変わらないのかもしれませんが。

 

ということで、次は数ある基本的なアルゴリズムを理解します。今もうやっている最中なので、すっごい大変で困りまくっていますが、わかればなかなか面白いので好きなのからやっていきます。

 

 

コメント