• ベストアンサー

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

プログラミングのトレーニングがてら、この2つの言語を用いて500行以内のコードで実装できる簡単なシステムを作りたいです。 2つの言語合わせて作るのではなく、 こんなプログラムを作ったら構造体やポインタ、ファイル入出力が身につく、 こんなプログラムを作ったらオブジェクトの考え方やエクセルとの関連、ユーザインタフェースが学習できる、 という感じのエッセンスが含まれているものをそれぞれ作れたらいいなと思っています。 何かお勧めや提案がありましたら教えてください。 よろしくお願いします。

noname#198479
noname#198479

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

  • ベストアンサー
  • ap_2
  • ベストアンサー率64% (70/109)
回答No.4

補足@ANo.3 人のプログラミングの意図が参考になったり、逆になんでこんなにメンテしにくいモノ作るんだ!みたいな怒りから得られるモノも。メンテやデバッグは、駆け出しプログラマにはうってつけですよね。 ◆今更ながら、質問に沿って RPGだと、キャラ情報に構造体、メッセージ表示に文字列操作、セーブデータや画像のロードに入出力、設定にはフォーム使ってみたり。まずはフィールド+敵エンカウント、次にNPCと会話、うまく関数化してデータ切り離せばRPGツクール化、段階的に、エンドレスに作っていられます。いい教材になるかなと。 ちなみに、僕はBBS@Perlで入門、職場はVBA。転職先がC++だった頃、Javascriptはじめました。そういう言語無視な選択肢も! ◆そして完全に余談 VBAは、VBE(エディタ)使いこなせるといいですよ。特にローカルウィンドウは、オブジェクトの中(プロパティのみ)も覗けます。困った時は Set o = Application でoを覗くとか、貴重な情報源に。 Cは割とプログラミングしてりゃいいけど、VBAはオブジェクトをいかに知ってるか調べられるか、どうしてもMSとの戦いになってくるので…

noname#198479
質問者

お礼

ゲームを作るのも面白そうですね!^^ そんなにたくさんの言語を同時進行で学んでたんですか! すごいですね(^_^;) 自分はVBA始めてからもうすぐ2週間経過するのに要点というか、オブジェクトなどの根本的なところが理解できていないように感じます。。。C言語少しやってたのでアルゴリズムに関しては理解できてないといけないのに・・・ 妥協せずにこれからもがんばります!

その他の回答 (3)

  • ap_2
  • ベストアンサー率64% (70/109)
回答No.3

昔、新人に同じ質問をされ、こう答えました。 「なんかエロいの」 喫煙所会議にて、職場で(客先常駐だし)エロはまずいという反論を受け、ゲームあたりかな…という結論に落ち着きました。たとえば脱衣麻雀、エロはイカンけど脱衣画像が自分ならOKでしょう、と。 すくなくとも、くそまじめな電卓ソースを見せられて、デキはどうですか?と聞かれても、楽しくない!以外の回答はあり得ません。どうせなら面白いモン作れ、そして見せろ、が最低条件でした。 勉強するなら、実務が早いです。自分で作るのは独り善がりになりやすいので、まずは人のプログラム読むトコロから。メンテ業務で、汚いソースを涙目で読み解き、理解を超えたバグと戦うのなら、それに勝る勉強法はないかと。 でも、作ってみたい。なら、楽しみましょ。 Excelでも、ファミコン程度は作れます。学ぶべきコトなんて、いずれ嫌でも覚えることになるんだから、作りたいモノ作る方法を考え、使いたい関数使って余計な機能をつけたし、遊び倒したらいいじゃない。 …こんな回答はアリ?

noname#198479
質問者

お礼

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

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

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

noname#198479
質問者

お礼

>基礎を勉強するなら市販の本が沢山在ります。 それはちゃんと買って勉強しています。 ただ、本から受け身で学ぶだけでなく自分で0からコードを作った方が身につくことがたくさんあると思ったのでここで質問させてもらったんです。 >実装など大げさな。私から言わせれば、学習について、視点がピンとハズレ(また大きく出すぎ)です。 自分は深い意味ではなく、ただ作るという意味で実装という単語を使っただけなのですが・・・では実装だとか構築という単語は何もわかってない初心者は使ってはいけないのでしょうか?500行程度のコードでは使ってはいけないのでしょうか? >将来どうなりたいのか、趣味なのかわからないが、学習するなら、JAVAかVB.NET(2010など)などではないですか。 のちのちそれらも自分で考えながら勉強していくつもりです。 説明不足でもうしわけありませんでしたが、今回は上司から古いシステムのメンテナンス業務で使うから勉強しておけと言われたのでVBAを勉強しているだけです。それを指摘されたら本末転倒です。 もう一度基礎から勉強します。 不快な質問でもうしわけありませんでした。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

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

noname#198479
質問者

お礼

むぅ、難しいですね(^_^;) ほぼ初めての自分にしてはわからない専門用語がほとんどです・・・ 勉強不足ですいません>< VBAはCに比べてとても簡単ということはわかりました! 具体的にとっつきやすくて日常で使える、~するプログラムとか、~システムを作ったら?と言ってもらえたらうれしかったです。 説明不足で申し訳ないです。 ありがとうございました!

関連するQ&A

  • C言語でプログラムを作りたい

    現在、C言語を学習中でして、入出力・制御文・配列・演算子・ポインタ・自作関数・構造体・共用体・ファイル入出力くらいはなんとか使えるくらいになったと思うのですが、そこで、一つ自分でプログラムを作ってみたいと考えています。 しかしながら、これまで学習してきたことを駆使して作れるプログラムが思いつきません。 ですので、なにかいいお題があれば教えていただきたいです。 これまで学習してきたことをしっかりと定着させたいと考えています。 宜しくお願いします。

  • なぜ「C言語」にOOPが実装されなかったの?

    1972年に開発された「C言語」(C++ではない)には「オブジェクト指向」というのがないのですが、なぜ「C言語」に「オブジェクト指向」というのが実装されなかったのですか? 「オブジェクト指向プログラミング」は1960年代後半に登場していたのですが、後発の「C言語」には「ポインタ」はあっても「オブジェクト指向」というのがありません。なぜ「オブジェクト指向」は実装されなかったのでしょうか? 当時コンピュータの性能が低かったため実装が難しかったことと、まだ当時オブジェクト指向自体が無名だった為、「C言語」の開発者自体も知らなかったということもあるのでしょうか?

  • 【初心者】c言語をもう一度勉強しようと思います。

    c言語をもう一度勉強しようと思います。 独習Cとかの本を一回通しでやって理解していないぐらいの実力です。 ポインタとか構造体とかなんとなくふんわりとした感じでしか理解していなくて プログラミングとか書けません。 文法を固めるのが先か、 何かつくれるようにするのが先かどうすれば上達しますかね? VC6.0++でウィンドープログラミングにしたりしてみたのですが、 肝心のプログラム自体の内容がほぼ無意味なプログラムなので どうすれば内容の濃いプログラムを作れるか考えてしまいます。 アルゴリズムとか数学や物理の公式を実装できればいいと思うのですが、 まず実装までおとしこめないし、 また、何につかったらいいのかもよくわかりません。

  • ゲーム作りたいがC言語かJAVAか迷う。

    私は将来、ゲーム・デザイナーになりたくて、プログラミングの勉強をしたいと思っています。それに向けて、学習するべき言語というのはCなのかJAVAなのかでまよっているのです。よくプログラミング言語など似たようなところがあり、ひとつの言語を身につければ他の言語も身につきやすいともいいますが、なるべく効率的に学んでいきたいですし、一番使用されることの多い言語を選びたいです。私が作りたいのは携帯電話用の比較的簡単なゲームでなく、ある程度大掛かりなというか、本格的なゲームを開発してみたいという思いがあります。これは特殊な例かもしれませんが、例えばコンピュータ将棋のプログラムなどではほとんどC、C++で開発されています。JAVAなどで作成されたソフトは見かけませんでした。やはり、JAVAの利点もあるでしょうが、結局、一番普遍的なというか、汎用性のあるプログラミング言語としてはC言語を選択するのが最良の策かなと考えています。これは妥当な筋道なのかとお尋ねしたく質問させていただきました。

  • C言語入門の手引きを教えてください。

    現在の職場で、システム設計とのやり取りの中で、プログラムの学習が必須になりました。 しかし、過去数学的な勉強を避け続けてきたせいもあり、論理的な思考等、プログラミングの学習に必要な最低限の知識すらない状態で、困っています。 今回の質問は、私の様な、プログラミングの基礎の基礎すらも知らない人間がプログラムを学習する際にどの様なステップで学習を行っていけば良いのかアドバイスをいただきたいと思っています。 当社、複数の言語を使用しているため、大雑把にC言語でプログラミングの基礎、考え方等を学習できる様にという話を聞いているのですが、C言語をベースにすると、どの様なところから学習していけば分りやすいのでしょうか? キーワードだけでも結構ですので、アドバイスをよろしく御願いいたします。

  • C言語助けてください!

    C言語 やっているのですが写真のようなプログラムなのですがエラーが出て実行できません… どのように対処すればよいか教えていただけたら嬉しいです… エラー内容は「33行目」で記述エラーを発見しました。 「function pointer」を付け忘れています。 になっております… よろしくお願いします。

  • Windowsにおけるプログラミング言語

    大学でプログラミングを学んでいる学生です。 学校では、C言語の基礎(ポインタ、構造体)などは一通り学習しました。 今、自宅PCのOSがXPなのですが、この環境でソフトを作る場合、どの言語が良いでしょうか。 お勧めがありましたら教えてください。 当面の目標としては、タスクバーにアイコンを表示するような常駐プログラムを作ることを目指してます。 それと重ねて質問があります。 C言語には、VBのフォームやコントロールにあたる機能はないのでしょうか。

  • C言語について

     プログラミング言語について質問があります。今、C言語を練習中ですが、C言語に関する本を見ると、大体、(入門者用の教科書しか知らないのですが)ファイル操作とか、構造体とかの説明とかで、終わっています。それで、自分はWindowsでグラフィック操作(例:動画とかを扱う)とかの、プログラムを組みたいのですが、C言語でそれができるのでしょうか。それともC++言語とか、Javaとか他の言語を習得しなければいけないのでしょうか。また、欲張りますが、C言語でグラフィック操作ができるのなら、どんな本を読めばいいのでしょうか。解らなかったので、投稿しました。よろしければ、回答宜しくお願いします。

  • C言語に関することについて教えてください

    学校の問題集にでてきた問題がわかりません、どうか教えてください 1 プログラムの役割、必要性について説明せよ 2 プログラムにおける変数と定数の役割を説明せよ。また、ローカル変数の有効な範囲について説明せよ。 3 C言語で使う変数が他について、宣言子と、printf関数、scanf関数それぞれにおいて対応する書式指定子を対応表にせよ。また、変数名を決める際に守るべき文法上の規則と、プログラマとして配慮すべき事項を説明せよ。 4 配列について、その役割と定義方法を説明せよ。 5 コンピュータにおける文字処理に必須なアスキーコードについて説明せよ。 6 C言語における文字列について、文字列定数、文字列変数を説明せよ。 7 C言語における繰り返し処理の文法(for,while,do~while)を、プログラムコード列を示して説明せよ。 8 C言語における条件判断の文法(if,else,else if)を、プログラム列を示して説明せよ。 9 繰り返し、条件判断において利用する論理式(等値演算子、関係演算子、論理演算子等で記迷する式)について、その記迷の方法を論理和、論理積も含めて説明せよ。 10 変数のアドレスについて説明せよ。また、ポインタについて、アドレスとの関連性を踏まえて、その役割と定義方法を説明し、具体的な使い方のプログラムコード例を示せ。 11 ポインタと配列の関係について、ポインタによる配列操作を列に説明せよ。 12 関数について、その役割と定義方法について説明せよ(戻りがた、関数名、引数リスト)。また、自作関数をそれらを利用するmain関数のプログラムコード例を示せ。 13 scanf関数の戻り値について、その内容を説明して、どのような際に利用すると便利か、プログラムコード例を示して説明せよ。 14 引数にポインタを利用する関数のプログラムコード例を示して、ポインタの必要性、重要性を説明せよ。 15 構造体について、その役割と定義方法を説明し、具体的な使い方のプログラムコード例を示せ。 16 ファイルポインタについて説明し、ファイル入出力の方法についてプログラムコード例を示して説明せよ。

  • C言語についてどうしてもわからない疑問

    プログラミング初心者です。 C言語を勉強中に疑問に思ったことが2つあります。 まず1つ目。 C言語以外のプログラミング言語、例えばjavaとかC#とかjsとかpythonとかrubyとかPHPとか、には開発者にとって便利なライブラリとかフレームワーク(僕にはこの2つの明確な違いがわかりません。が、どちらも「開発者が定義しなくてもよい関数やオブジェクトの集合」という認識があります)がありますよね。 そのおかげで色んな人達がプログラミングし易くなりました。 ネット(はてぶのホットエントリとか)でも「馬鹿な俺がプログラミングを勉強して〇〇を作った」といった記事をよく目にします。 でも「C言語を使って」というのは聞いたことがありません。 そもそも、C言語はそいういったライブラリやフレームワークが少ないように感じます。 検索してもrailsとかjqueryのようなフレームワーク(ライブラリ?)は見つかりません。 これが無かったらプログラムなんて作れないのでは? しかし、世間にはC言語で作られたプログラムが多いのもまた事実。 C言語ではいったいどのように開発が行われているのか教えてください。 2つ目 unixとかlinuxといったOSはC言語で書かれている聞いたことがあります。 しかし、プログラムの開発は「コードを書く→コンパイル(→デバッグ)→実行」という流れですよね。 ではOSを開発するときに、そのコードをどうやってコンパイルするのでしょうか? コンパイラはOSの上に立っているとするなら、OSがない状態でコンパイラはどこに立てばいいのか。 そこがわかりません。 誰かこの2つの疑問に答えてください。 お願いします。

専門家に質問してみよう