どうも、脱サラ理学療法士のぼんぼりです。
プログラミング勉強に取り組んでいますが、javaの繰り返し文や配列でつまづいています(T_T)
イマイチ理解できたような実感がわかないんですよね。
ということで、強引にネットからサンプルコードを引っ張ってきて、Eclipseにコピペ&ひたすらデバッグを繰り返して、コードの流れを追っていくという地道な作業に挑戦することにしました。
コードをまるっぽ乗せるのはコピペになってしまうと思いますので、ここでは僕の解釈、考え方をあげていきましょう。
まずは普通に四角形から
for文の練習として、図形問題を活用するのはいいと思います。
なんか「プログラミングで作った感」がありますし、実際図形のコードはfor文だらけなので、かなりfor文に対する抵抗感が薄まりますよ。
ただ、物事には順序がありまして、いきなり難しい図形に取り組むのは大変で、ツラいですよ。
なので、まずはシンプルに四角形を作りましょう。
こちらの作り方は簡単で、for文を1回ネストするだけで済みます。
考え方は、縦列の数を外枠のforとして制御変数を宣言し、その中で横列の数をfor文で宣言するのです。
縦の要素ひとつにつき、横に要素が繰り返し並べられていくイメージですね。
これを、外for内forどちらも同じ数だけ繰り返せば、見事な正方形ができますよ。
ちなみに、Sys・ outでは図形を文字として出力します。
“○”みたいな感じですね。
次に三角形を描く
単純に、大量のSys・outで形を作ることも可能でしょうけど、その場合一つのパターンでしか図形が作れません。
で、Sys・outだらけのコードなんか意味がないも同然ですからね。
アルゴリズムを作ってこそのプログラミングですから。
大丈夫です!ここは素人のたわごとなので聞き流してください(笑)
三角形をfor文で描くときのポイントは「空白を値とみなす」「列あたりのそれぞれの値の数」になります。
こやつらが、繰り返していくなかでどのように変化していくかを理解しておくべきでしょう。
いろんなパターンの三角形
ここいらで少し応用的な考え方が必要になります。
たとえば、逆三角形を作るとなるとどうなるでしょうか?
単純に三角形を作るのと比べると、ちょっとした仕掛けの変更が必要になります。
この仕掛けをいじるポイントは、for文の条件です。
ちなみに、i=0とi++という条件は変わりません。
ひし形はマジでエグい
ひし形は、急激にエグくなりますよ。
なんせ、for文が倍ほどに増えますから。
これは、サンプルコードを追うだけでは理解できませんでした。
紙に図を書きながら、デバッグしながら、条件式の意味をひとつひとつ紐解かなきながら進めていきましたね。
そうやってわかったひし形のポイントは「列を上下に分ける」「値の数を左右で分ける」ということですね。
で、文字列の増減をどう考えるかってことです。
ちなみに、余計な条件分岐やbreakは必要ありません。
シンプルに、for文だけで成立するんです。
完成したコードは、for文のミルフィーユみたいになりますね。
あくまで僕の解釈なので、調べてみたら他にもいろいろ出てくると思います。
Google神はやっぱり強いですからね。
もう、脳みそいらないんじゃないかなと思うくらい適解が載ってますから。
まとめ:迷ったら紙に図を書いてみましょう
コードをみても、まったく意味がわからないという状況がしばらく続きました。
同じコードを見ても、何が起こっているのかわからないんですね。
なので、そんなときは図を書くようにしました。
イメージに頼っていると、次第にぼんやりしてくるので、紙に書くんですよ。
そうすると、ふと腑に落ちる瞬間があります。
そこからはスッとその仕組みが理解できるんですね。
人の脳みそって不思議です。
なので、引き続き問題を解いてまわろうと思っています。
根性ですよ、根性!


コメント