• ベストアンサー

アルゴリズムとは、フローチャート作成、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/17068)
回答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

  • アルゴリズムの説明について

    アルゴリズムを新人に教育するようにいわれ困っています。 下記の様な説明でよいか判断が付きません。又、DBの更新はフローチャート上表現できないのでどうしたらよいか悩んでいます。 宜しくお願いします。 アルゴリズムとはある問題を解決する手順。 プログラムを作成するときのロジックを構築しますが、 それらの処理手順すべてがアルゴリズムというわけです。 プログラムはアルゴリズムを表記するということになります。

  • アルゴリズムとはこういう事でしょうか?

    「アルゴリズム」の意味がいまいちよくわかりません。 イメージとしては「プログラム」と言うことでしょうか? 以前した質問ですが http://okwave.jp/qa4995619.html このようなvbaのコードも 「アルゴリズム」と呼べるのでしょうか? アドバイス宜しくお願い致します。

  • プログラミングとかアルゴリズムとかの質問です。

    こんにちは。 私はシステムエンジニア志望の大学2年生です。 プログラミングとかアルゴリズムとかの手順書に関して3つほど質問があります。 よろしくお願いします。 (1)「プログラミング」がコンピュータに対しての作業手順で、「アルゴリズム」は問題を解くための解法手順のことだと勉強しました。(間違ってたかな)   そこで質問なんですが2つの手順はどう噛み合うのでしょうか? (2)プログラミング言語を全体的・体系的に把握したいのですが、上手くまとまりません。   全部で何種類ぐらいあってどういう分類(大分類・中分類・小分類)ができるんでしょうか? (3)手順書を書く時は時系列に沿ってればいいと思い、因果関係とか時間順に書いていると頭が痛くなり気持ち悪くなります。   まっすぐ直列に書くのではなく、ツリー図みたいに並列に手順を組む方法ってありますか? もし宜しければご回答をよろしくお願いします。

  • Excel VBAにてFFT

    Excel VBAにておよそ5万点のデータをFFTする方法についての質問をさせてください。 いつもはあるソフトを用いて実験データのFFTを行っているのですが、作業効率を改善したいと考えExcel VBAにてFFTをしたいと考えています。 私はC言語を少しですが学習したことがあるので、FFTWのようなFFT を実装したフリーソフトウェアが存在しているのを知っています。 時間節約のためExcel VBAにてFFTのコードを位置から書くのではなく、FFTWのアルゴリズムでExcel VBAで利用できるプログラムを使いたいと考えています。 この場合、自分でFFTWのコードを見ながらExcel VBA用にコードを書きかえるしか手はないのでしょうか。私はC言語もExcel VBAも未熟であるため、この作業を行うことができそうにありません、、、 Excel VBAで利用することのできるFFTのコードはあるのでしょうか。 なお、FFTするためのデータ点数は約5万点、多いと10万点ほどで、データ点数が2の累乗に限定しないものを使いたいと考えています。

  • Excel VBAの勉強のコツ

    新しい仕事に就いたのはいいですが、いきなりExcelでVBAを使わなければならない仕事を次々に任せられています。 職場の人はPCはまるっきり分からないので、一つの仕事にどういう作業が必要でどのくらいの時間が必要かも分からない状況です(そもそもExcelで何がどこまでできるかも分かってない)。 関数で済むような内容ならいいのですが、頼まれる仕事のほとんどが高度なVBA知識が必要なものが多くあります。 「だったらそれを上司に話せ」と言われそうですが、「できないなら辞めろ」みたいな雰囲気なので今必死に勉強しているところです。 VBAの本やネットの記事などもいくつか読みましたが書いてある内容だけは理解できても応用がなかなかできず、誰かにコードを教えてもらっていくつか出来上がりましたが、教えてもらったコードの意味が何度読んでも把握できません。 (どこで何の処理をしているか、などが分からない感じです) VBAに詳しい人はどこで詳しくなられたのでしょうか。 これからVBAを実務で使えるようにするために効率的な勉強方法などありますでしょうか。 勉強のコツを教えてくださいm(__)m

  • VBAのヒントを(暦)

    あるカレンダーがありまして、それを指定期間分、自動作成するVBA(Excel)を作りたいと思っています。 まずひとつは1~末日まで日数がありまして、それの特定の日(たとえば、日曜や○週目)のみにセルに色づけするというプログラムを作りたいと思っています。 もうひとつは普通にカレンダーを自動で作りたいんですが、アルゴリズムがよくわかっていません。両方とも手順について詳しく教えていただけると助かります。よろしくお願いします。

  • アクセスのVBAの解りやすい本について

    今、アクセスを使って売上管理のプログラム作成中なのですが、VBAを効率よく使って、プログラムを組んだらよいと聞きました。 ですが、私は初心者の為、自分で勉強しないと無理です。 どなたか凄く解り易いアクセス用のVBAの教本をご存知ありませんか? 今すぐ買いに行きたいくらい欲しいです。教えてください、宜しくお願いします。

  • VBAエキスパートという資格

    パソコン音痴の者ですが、教えてください。  経理とか会計に興味があって、経理職や会計事務所に転職できるかどうかわかりませんが、もし転職するのだとしたら、実務経験+簿記2級以上+OAスキルが必須条件になっている会社が多いように思います。 そこでOAスキルを修得したいと思うのですが、どの資格を修得すべきか財務・会計・経理のカテゴリで質問しましたら、色々資格ありまして、「電子会計実務試験」とか「会計ソフト実務能力試験」とか。そして様々な回答の中に「VBA」を駆使できるスキルが税理士業界では重宝されているとの声もありました。なのでネットでVBAの資格を調べるとVBAエキスパートと言う資格あるようですので、これを勉強したいと思ってます。  ところが、私はITスキルはゼロと言っても過言ではありません・・・。ワード・エクセル・パワポは仕事で触ることがある程度でIT・パソコンに関し体系的な知識がありません・・・。「OS?ソフトウェア?アクセス?何それ?」とこんなレベルなのです。そんな人間がいきなり「VBAエキスパート」などという大それた資格の勉強に挑戦するのは何か手順を飛ばしているような気がするのです。 まるで、簿記3級を知らずして公認会計士の勉強をするようなものではなかろうかと思っているわけです。そこで教えていただきたいのですが、素人がVBAエキスパートの勉強するのは問題ありませんでしょうか?まずMOSとかパソコン検定とかITパスポートとかを勉強したほうがよいのでしょうか? ITスキルゼロの初心者がVBAエキスパートを修得するプロセス(道筋)として適切な順序はどういう順序になるのでしょうか?  いきなりVBAエキスパートの学習は非効率でしょうか?よろしくご指導願います。

  • VBAでのUSERFORMの表示に関して

    現在VBAでUSERFORMを使うプログラムを作成中です。 ボタンやボックスなどを設置してコードを書いてという作業は良いのですが、 このプログラムを実践で使用する時に毎回以下の手順を踏んでいます。 1.該当のエクセルファイルを開く 2,AltとF11を押す 3.左側のVBAプロジェクトからフォームの中の使用したいフォームをクリック 4.F5をクリック ここまでしてやっと作成したプログラムを走らせる事ができますが、 毎回毎回上記の1から4の作業が必要な訳ではないですよね? エクセルファイルを開いた瞬間に希望するフォームが出て、 すぐに作業を実行するにはどうしたらよいのでしょうか?

  • [VBA] おすすめの参考書

    業務上VBAでExcelのマクロを作成する事が多いのですが、 知識に乏しく煩雑なプログラムしか組めないため、参考書を探しています。 しかし、本屋等を見てみると、如何せん種類が多すぎてどれがいいのか判別がつきません。 よければ皆様のお勧めを教えてください。 現在の自分のスキルは、 ・Cの基礎を1年ほど学習 ・VBAは「マクロの記録」で使用される程度の関数の知識しか持っておらず といった具合で、 現在は「マクロの記録」で作業を記録した後、変数等の処理を編集してマクロを作成しています。 やりたい事は、 ・効率的なプログラムを組みたい ・無駄な行を添削したい ・VBAの関数や仕組みをきちんと理解したい の三つがメインです。 業務作業ではフィルタやピボットを頻繁に使用しています。

専門家に質問してみよう