こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBAとC言語で小さめのシステムを構築したいです。

プログラミングのトレーニングがてら、この2つの言語を用いて500行以内のコードで実装できる簡単なシステムを作りたいです。

2つの言語合わせて作るのではなく、
こんなプログラムを作ったら構造体やポインタ、ファイル入出力が身につく、
こんなプログラムを作ったらオブジェクトの考え方やエクセルとの関連、ユーザインタフェースが学習できる、
という感じのエッセンスが含まれているものをそれぞれ作れたらいいなと思っています。

何かお勧めや提案がありましたら教えてください。
よろしくお願いします。

投稿日時 - 2011-06-29 22:26:18

QNo.6843887

困ってます

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

補足@ANo.3
人のプログラミングの意図が参考になったり、逆になんでこんなにメンテしにくいモノ作るんだ!みたいな怒りから得られるモノも。メンテやデバッグは、駆け出しプログラマにはうってつけですよね。

◆今更ながら、質問に沿って
RPGだと、キャラ情報に構造体、メッセージ表示に文字列操作、セーブデータや画像のロードに入出力、設定にはフォーム使ってみたり。まずはフィールド+敵エンカウント、次にNPCと会話、うまく関数化してデータ切り離せばRPGツクール化、段階的に、エンドレスに作っていられます。いい教材になるかなと。

ちなみに、僕はBBS@Perlで入門、職場はVBA。転職先がC++だった頃、Javascriptはじめました。そういう言語無視な選択肢も!

◆そして完全に余談
VBAは、VBE(エディタ)使いこなせるといいですよ。特にローカルウィンドウは、オブジェクトの中(プロパティのみ)も覗けます。困った時は Set o = Application でoを覗くとか、貴重な情報源に。
Cは割とプログラミングしてりゃいいけど、VBAはオブジェクトをいかに知ってるか調べられるか、どうしてもMSとの戦いになってくるので…

投稿日時 - 2011-07-03 13:14:53

お礼

ゲームを作るのも面白そうですね!^^

そんなにたくさんの言語を同時進行で学んでたんですか!
すごいですね(^_^;)

自分はVBA始めてからもうすぐ2週間経過するのに要点というか、オブジェクトなどの根本的なところが理解できていないように感じます。。。C言語少しやってたのでアルゴリズムに関しては理解できてないといけないのに・・・

妥協せずにこれからもがんばります!

投稿日時 - 2011-07-03 22:51:34

ANo.4

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

昔、新人に同じ質問をされ、こう答えました。
「なんかエロいの」
喫煙所会議にて、職場で(客先常駐だし)エロはまずいという反論を受け、ゲームあたりかな…という結論に落ち着きました。たとえば脱衣麻雀、エロはイカンけど脱衣画像が自分ならOKでしょう、と。
すくなくとも、くそまじめな電卓ソースを見せられて、デキはどうですか?と聞かれても、楽しくない!以外の回答はあり得ません。どうせなら面白いモン作れ、そして見せろ、が最低条件でした。

勉強するなら、実務が早いです。自分で作るのは独り善がりになりやすいので、まずは人のプログラム読むトコロから。メンテ業務で、汚いソースを涙目で読み解き、理解を超えたバグと戦うのなら、それに勝る勉強法はないかと。

でも、作ってみたい。なら、楽しみましょ。
Excelでも、ファミコン程度は作れます。学ぶべきコトなんて、いずれ嫌でも覚えることになるんだから、作りたいモノ作る方法を考え、使いたい関数使って余計な機能をつけたし、遊び倒したらいいじゃない。

…こんな回答はアリ?

投稿日時 - 2011-07-02 14:00:44

お礼

仕事でプログラミングをする人はやはり人のプログラムをよむことで慣れていくのでしょうか?
いろんな人に尋ねてみると「最初はコードを読むことからやらされたよ」っていう話がほとんどでした。
たしかに慣れてもいないのに他人の汚いコードを読むのは難しいですね。
どうせやるなら楽しんでやろうと思います!
回答ありがとうございました!

投稿日時 - 2011-07-03 01:04:17

ANo.2

C言語では初めは簡単なつまらない例になってしまうでしょう。
ライブラリが無いとろくなものが出来ないとおもう。
基礎を勉強するなら市販の本が沢山在ります。
ーー
VBAはエクセルVBAのことだと思うが、エクセルの処理を(手作業でも出来るが)コードで実行する手のものです。エクセルのある程度の操作や知識が無いと、わかりにくい(判らない、丸写しになる)と思う。エクセルでの操作などは中級まで行ってますか。処理対象も、エクセルと不可分のものです。
エクセルVBAも沢山市販の本があります。これをまず読むべきでしょう。
>実装できる簡単なシステム
解説書は、それ以前の要素技術の記述(勉強)がほとんどです。そしてこれらを学ぶ(極端に言えば暗記する)必要がある。
だから部品に当たる知識をまず身につけないとダメです。それらは1つのまとまりで20行以下です。
まず解説書を読んで勉強のこと。
それと処理ロジックの勉強をする。
また文章で、仕様書を書くような訓練をするとか。
実装など大げさがさ名ことが出来るようになるのは、そのあとです。
ーー
実装など大げさな。私から言わせれば、学習について、視点がピンとハズレ(また大きく出すぎ)です。もっと泥臭いことからはじめないと違う問題では手も出ないでしょう。
ーー
将来どうなりたいのか、趣味なのかわからないが、学習するなら、JAVAかVB.NET(2010など)などではないですか。
それとWEB関連(+データベース)のこともウエイトが大きくなっているので、もう昔のように、Cや旧Basicで学習して、の時代ではないようだ。作るより使う時代。基礎だからといってCを勉強するのも良いが、分野によっては、機械語のようなCから組み立てていては、間に合わないと思う。

投稿日時 - 2011-06-30 23:55:20

お礼

>基礎を勉強するなら市販の本が沢山在ります。
それはちゃんと買って勉強しています。
ただ、本から受け身で学ぶだけでなく自分で0からコードを作った方が身につくことがたくさんあると思ったのでここで質問させてもらったんです。

>実装など大げさな。私から言わせれば、学習について、視点がピンとハズレ(また大きく出すぎ)です。
自分は深い意味ではなく、ただ作るという意味で実装という単語を使っただけなのですが・・・では実装だとか構築という単語は何もわかってない初心者は使ってはいけないのでしょうか?500行程度のコードでは使ってはいけないのでしょうか?

>将来どうなりたいのか、趣味なのかわからないが、学習するなら、JAVAかVB.NET(2010など)などではないですか。
のちのちそれらも自分で考えながら勉強していくつもりです。
説明不足でもうしわけありませんでしたが、今回は上司から古いシステムのメンテナンス業務で使うから勉強しておけと言われたのでVBAを勉強しているだけです。それを指摘されたら本末転倒です。

もう一度基礎から勉強します。
不快な質問でもうしわけありませんでした。

投稿日時 - 2011-07-01 07:32:49

ANo.1

VBAで殆どのことができます。
敢えてCを使うとすると、VBAの弱点である
マルチスレッドの処理でしょうね。
マルチスレッドは強力な手法で、シリアルに
処理する場合に比べ驚異的な成果をあげる
ことができます。
私の経験ではデータベースの解析結果を
Excelの表にする処理で、複数の日付別の
ファイルを読み込み数値化する処理において
64スレッドを立ち上げることで、VBAでかかる
処理時間の約1/80で済ませることができました。
マルチスレッドで重要な点は同期、資源の
競合の回避(ミューテックスの使用)などを
顧慮して設計します。
もう一つ、Cでしかできない処理としては
OLE起動した別インスタンス(プロセス)に
サブクラスを設けるなどという処理もあります。
こちらは滅多に出て来ないケースなので、
考えないでよいでしょう。というかアセンブラが
できないと無理です。
CからVBAを操作するのは相当に難しく、
Dispatchオブジェクトを扱えるようでないと
難しいでしょう。VBAからCを扱うには二通りの
方法があり、一つはActiveXオブジェクトを作る
もの(VBAではCreateObjectで処理)、もう一つは
DLLにしてVBAから呼び出す方式です。後者の
方がずっと簡単なので、こちらがオススメです。

ということで、CではDLL形式とし、目的は
複数ファイルの同時処理といった内容を考え
てみては如何でしょうか。

投稿日時 - 2011-06-30 00:11:22

お礼

むぅ、難しいですね(^_^;)
ほぼ初めての自分にしてはわからない専門用語がほとんどです・・・
勉強不足ですいません><

VBAはCに比べてとても簡単ということはわかりました!

具体的にとっつきやすくて日常で使える、~するプログラムとか、~システムを作ったら?と言ってもらえたらうれしかったです。
説明不足で申し訳ないです。
ありがとうございました!

投稿日時 - 2011-06-30 06:49:36

あなたにオススメの質問