- ベストアンサー
プログラムの二重のIF文、FOR文について
プログラミングを始めたのですが、 クイックソートなどで出て来る、二重になったIF文とかFor文がイメージできなくて困っています。 エクセルでの何重かのIF文は問題なくこなせるのですが、 なぜかプログラムとなると自分でイメージして作り上げる自信はないです。 プログラマになるには、こういった多重ループを使えるようになるべきなのでしょうか? またそうだとしたら、どのような訓練をしたら分かるようになるでしょうか? それともプログラマに向いてないと諦めたほうがいいのでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
適当でなかったらすみません。 Excelで使われていたIF文と言うのは、ExcelVBAでの事でしょうか。 もしIF関数での事でしたら、プログラミングとはイメージがぜんぜん違うので 別物と割り切った方が良いと思います。 特に多重の繰り返しは、アルゴリズムをフローチャートで考えると理解しやすいのでは?http://www2.osk.3web.ne.jp/~a0mediac/Argoa/B96a0809/quickfl.htm アルゴリズムは先駆者が考えてくれたパターンですので、理解して覚えてしまう方が良いかと思います。 >プログラマになるには、こういった多重ループを使えるように・・・ 言語にもよりますが基本的には必要です。 だからと言って向いていないなんて悲観的にならないで! 諦める事はありません。 難しいアルゴリズムより、イメージしやすい多重ループから、多重ループに慣れていきましょう。 例えばソートならバブルソートなど・・・二次元配列の扱い・・・ http://kogolab.jp/elearn/c2002/7/tajuu.html
その他の回答 (4)
- hrm_mmm
- ベストアンサー率63% (292/459)
何言語をお始めになったのか書いていませんが、 クイックソートは再帰アルゴリズムだから難しいのであって 単なる多重ループを難しいと言っているわけではないですよね? 再帰関数が使えると、プログラムの見通しがよくなったり、効率がよくなるものと、 計算対象によっては再帰関数にすると逆に多大なロスが発生するものとが有ります。 再帰アルゴリズムについて調べて見て下さい。頑張ってね。
お礼
VBをはじめています。その前はCを勉強していました。 再帰関数も使い方次第ということですね。 回答ありがとうございます。
- Dxak
- ベストアンサー率34% (510/1465)
クイックソートって、どう言うやつだったかな~と思い出せなかったんで、調べてみたのですが・・・。 私も昔学習した時は、すんなり覚えた記憶があるのですが、今考えると結構複雑だったんですね^^; プログラムは、他の方も書いているかと思いますが数こなす事でしょうね。 英語なんかと一緒で使ってなければ覚えないって感じです。
お礼
数こなすことですね。参考リンクを元に勉強していきます。 ありがとうございました。
- hawkwind
- ベストアンサー率34% (160/469)
これは個人差なんですかね? 私はすんなりと入れて、これで悩んだことはないですね^^; あまり気にしても仕方ない問題かと思います。 感覚的には口笛が吹けるようになるもので、 吹けない人も気付いたらある日突然吹けるようになっていると まあ、ソートの二重ループがやや難易度が高いのも事実で 他の二重ループはそんなに複雑でもないでしょうし プログラマの訓練としてはゲームのRARを知っていますか? ゲームのデータを改造するためのアレですが、 あれは確実にプログラマの訓練になります。 要はバイナリエディタなりで2進数に強くなれということです。
お礼
個人差はあると思います。プログラムでないですが二桁の行列を暗算できる人とか共感覚と呼ばれるものだと思います。 ゲームのRARは分かりませんが、ゲームラボなどを読んで勉強していきます(笑) ベーマガはないですしゲームラボで仕方ないですよね。
- galluda
- ベストアンサー率35% (440/1242)
がると申します。 多重ループ、ネストの深いifなどは「回避できるなら回避するもの」ではありますが、実際問題として「不可避」な場合も少なからずあり、まぁ必須です。 で、そういったものは「使えるようになる」というよりは作る過程で自然と「必要に応じて使っている」物なのではないか、と。 エクセルでなさっていたのであれば、やはり同様のご経験があるかと思います。 使えるようなるべきか、という質問はYes。 訓練については「実際に色々なプログラムを組んでみる」のが一番なのではないかと思います。 あと、他人のプログラムを読むのもお勧めです。
お礼
プログラムをよく読むことにします。 回答ありがとうございます。
お礼
返答ありがとうございます。 ExcelのIF関数のことでした。やはり別物ですね。 フローチャートでじっくり考えたほうがいいようですね。 リンクのポインタ指定ありがとうございます。よく見てみます。