• ベストアンサー

アルゴリズムとは、フローチャート作成、VBA

ITの勉強をしている者です。大変はずかしいのですがアルゴリズムが全く理解できません。 作業手順(フローチャート)を作成するのにも全くイメージが思い浮かびません。 それをVBAでプログラムということになるのですがなにがなんやらさっぱりです。 ある人からは、あなたには無理ですあきらめなさいと言われる始末です。 正直くやしいです。なんとか克服しようと勉強してはみるのですが、まったく成果があがりません。 覚えるきっかけみたいなのがあれば良いのですが今のところなんともなりません。 効率のいい勉強の方法やコツみたいなのがあれば是非知りたいのです。 なんとも情けないですが詳しい方おしえてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • layy
  • ベストアンサー率23% (292/1222)
回答No.5

「アルゴリズム」「フローチャート」のキーワードですでに 苦手意識が沸いているのであれば、いったん視点を変える。忘れる。 これまでの習得はどうなのか、これにも『手順』があります。 『無理』と言うのは その言った人自身もこれを改善させるための『手順』がわかっていないからでしょう。 基本からやって順当に力をつけてきている人を見つけて、 こうなった過程でどこが誤っているのか、 何から始めたらよいか、より良い指導をもらうところから始める方がよいです。 問題をもっと明確にしましょう。 「できない」「うまく動かない」「わからない」では 直すべき箇所、原因は不透明です。 これまでの勉強の仕方を提示すること。 おそらく 138本の缶ビールがあったときに、 24本入り1箱、6本入り1ケース、4ケース1箱としたときに 端数は何本になるのか、 こういうときに、 算出式をつくろうと考えて悩んでしまう、そんなやり方になっているのかと思われます。 6本で1ケース、12本で2ケース、・・・、 132本で・・・、138本で・・・、 最初は138のときがわかるまで順番に考えたらいいんです。 つまりは、 IF ・・・ ENDIF IF ・・・ ENDIF IF ・・・ ENDIF IF文の羅列でも結果は出ます。 これも低レベルと言われてもアルゴリズムです。 6、12、18・・・とループを使わないといけない、そんな概念ははずすこと。 正しく動く事項、自分で理解できた事項を積み重ねる。 その後で、 ループにすればスッキリするということが見えてくるし、 6で割れば比較的早く答えが出るというのも見えてきます。 求め方というのは1つとは限らないのです。 「アルゴリズムが理解できない」「イメージが思い浮かばない」 というのもよくわかりません。 アルゴリズムは自分が理解できた手順で生み出すもの、で良い。 それができなかったら人の生成したものを見てもわからないものです。 できないことを克服、でなくて できることを確実に自分の力にする、 (=できる範囲内で遠回りしてでも結果は出せるのかどうか) 理解できてるところと できてないところを明確にすること。 それから 与えられた仕様を「理解できる、できない」は国語力も影響します。 日本語和文でいかに組み立てるか、 コードにするときにはその日本語をVBA仕様に置き換えるだけ、 悩む段階ではない、そういう意識をもつこと。

arizonapanti28
質問者

お礼

ご回答ありがとうございます。 貴重なアドバイスいただき感謝いたします。 こうじゃなければいけないというのはないのですね。 頭をやわらかくして考えてみる。そして自分のできることから やってみる。今後はもう一度自由な発想で取り組みたいと思います。

その他の回答 (4)

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.4

プログラムでもよくよく見れば80%以上が基本文法の 羅列でしかなく、窓拭きのフローチャートとさほど変わら ないです。 手順を順番に書いていくだけです。 小学校の夏休みの宿題で「一日の計画表」が書けるか どうかのレベルの話で、イメージが思い浮かぶかどうか など最初から問題にならないはずです。 逆にそれが出来ないのなら、小学校の夏休みの宿題で 「一日の計画表」を書くところからやり直す必要が あります。 プログラムという作業は、目的に応じて解決手段を 自分で考える事になります。その作業手順を英単語 もどきで書いているに過ぎません。 「全く理解できません。」などという質問はせずに、 なぜ自分では理解できないかを考え、その原因を推定 し、自分で検証した上で、更に助言が必要ならはじめて 他人に質問するようにしてみて下さい。 それ自体が、プログラミングができるかどうかの 訓練になります。

arizonapanti28
質問者

お礼

ご回答ありがとうございます 難しく考えすぎていました。 なんでもいいからとりあえず自分で考えることが大事なんですね。 動くかどうかはとりあえず後回しということで。。。 大変参考になりました。

  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.3

>作業手順(フローチャート)を作成するのにも全くイメージが思い浮かびません。 フローチャートをかけないとなるとITだけじゃなくって通常の生活でも大変なんですが。。。 例えば、窓拭きのフローチャート 1.バケツを用具入れから出す。 2.雑巾を用具入れから出す。 3.洗剤を用具入れから出す。 4.判断:洗剤の残量は十分か? 4-1.不足している→買いに行く 4-2.十分足りる→次へ進む 5.バケツに水を入れる ・・・ これを図にするだけなのでタブン誰でも書けると思いますよ。 さて、プログラムのフローチャートになるといきなりかけなくなるのはなぜ? と考える前に例えば、地震予知のフローチャートはかけますか? かけませんよね、私もかけません。 なぜ? なぜなら、地震予知をどうやるかがわかっていないからです。 だから、プログラムのフローチャートをかけるようになりたいなら、 プログラムを動かすのに何が必要かを把握しましょう。 まず、変数の定義、次は、(ここからはさまざまですが)入力データのエラーチェック、 それから、・・・・ 何をする必要があるのかわからないと途方にくれるだけかもしれません。 他人の作ったプログラムのフローチャートを書いてみるとかしたら、 何をするときにどんなフローになるのか分かってくるのでは? あるいは他人の作ったプログラムをデバックモードで1行ずつ動かしながら フローと見比べたり、フローを作ってみたりとかしてもいいかもしれません。 アルゴリズムはたぶん、数をこなせばそのうち分かってくるでしょう。 いくつかの定型的なものは教科書レベルの本に載っていたりしますが。 (例えばバブルソートのアルゴリズムとか・・・ちょっと変わった方法なので面白いですけどね。  ま、先の話としておいたほうがいいです。)

arizonapanti28
質問者

お礼

ご回答ありがとうございます。 なるほど日常生活のアルゴリズムというのもおもしろいですね。 さっそくやってみようかとおもいます。 やはり自分は難しく考えすぎていました。 大変参考になりましたありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

質問者の考えることがピントハズレです。 私が回答で書くVBAコード(スクリプト)など、アルゴリズムを意識することはまずありません。 アルゴリズムといえば、私は数学的な裏付けを持った名前の付いたものを連想して言ってますが、日頃ここへ出るVBAの質問などでは、ほとんど出てきません。 またフローチャートを作ることは、回答者が初心者には勧めますが、絶対無くてなら無いものではない。 というのは私の書くコードなど数十行以下ですから。またそういう設計図を残す義務も無いからです。 だからそういうことをしなければならないプロはフローチャートやドキュメンテーションをその場面で考えます。 ーー したいことを精密に文章化するのが大切では無いですか。 一方エクセルVBAであれば、頭の隅に、経験によって、エクセルで出来ること、VBAで、できるプロパティ・メソッドを頭の中に思い浮かべて、使えるかどうかを、対比していきます。 結局何やかや言っても、エクセルの(何が出来るかの)勉強と、使えるVBAコード(多くて数行の塊)を、質問者のポケットに 無いか、極く少ないためでしょう。結局経験が足りないということに尽きる。 昔のBasicでは20-30のステートメントを使いまわしてプログラムを作成したが、エクセルVBAでは、オブジェクト・メソッド・プロパティなどは、解説書は800ページにもなっています(すべて暗記するものではないが)。 ーー ITやアルゴリズムやフローチャートなど大きな言葉だけ質問者は使っていますが、そんな態度ではだめです。 時間をかけて、習い覚えるのです。最近は徒弟制度が向いているとさえ思います。 一問題・1パターンという事で習い覚えていくと良い。ある程度それ(問題パターン)が溜まると展望が開けるのでしょう。 質問者はVBAを考える時間は今まで累積何時間でしたか。問題は何問しましたか(回答を見ても良い)。 取るに足らない時間ではないですか。VBAの本は何冊読みましたか。其れで判らないといってませんか。

  • k_kota
  • ベストアンサー率19% (434/2186)
回答No.1

アルゴリズムって覚える部分も有りますけど、この場合はおそらく考える方だと思うんですよね。 おそらく数学とか文章問題苦手じゃありませんか? 論理的な言葉で問題を捉えて、それを数式にする、というのはプログラムの基本です。 効率とかじゃなく、ソートとか単純なものなどで、日頃していることをアルゴリズムにするとかからやるしか無いんじゃないですかね。 VBAなんてちょっと使えるだけじゃなんにもなりませんが、 その数歩手前で困っているなら適性は無いと思います。 ITを勉強していると言うよりはその準備と言う感じですね。 例えば、1000円未満のお金を一番少ない硬貨で作るアルゴリズムって作れますか? 少なくともあなたはできますけど、それを具体的な手段に落とし込めますか? そういうのが多分基礎だとは思います。

関連するQ&A