都道府県穴埋めゲーム

プログラミングを覚えるにあたりVisualC#からの導入がよいと勧められてC#を覚え始めました。
C#を覚え始めて、1年くらい経ちましたがいまだにどうやって勉強していけばいいのかわかりません。
四則演算や、文字列を表示する方法等、解説書でもとりあげられてる方法についてはわかりますが、変換等の内部で何がどうなってるのかわかりにくいプログラムに手を出すと全くお手上げ状態です。

例えばWAVファイルをMP3ファイルに変換するプログラムを作りたいとします。
そのためのプログラムを打とうとすると、解説書に書いてある方法を使う部分まではわかるのですが、
その後プログラムをどのように動かせばよいかがわからなくなってしまい断念する結果となります。

C#の解説書を読んでも、何をすればいいのかさっぱりわかりません。
どのような感じかというと、
とりあえず変換元のファイルを指定します。
そのあとこのファイルを読み込んで変換したいわけですが、どうやって変換するためのプログラムを動かすのかとか、変換する過程でレートの値の調整とかをどのように指定して、どういった手順でファイルを出力するのか。とか解説にはないようなことをやりたい場合どうやって組んで動かせばいいのか見当がつけれないでいます。

ほかの人の作ったソースコードなどを読めばわかりそうなのですが、そういったソースを探してみてもあまり参考になるようなものが見つかりませんでした。

目的のプログラム別に、こういった処理にはこういった感じのプログラムの組み方をすればいい。といった感じのことを勉強するにはどうしたらいいのでしょうか。
こういったことを質問すると「慣れるまで練習しろ」とか言われますが、慣れるために必要なものが何か分からない状態で、慣れることは無理なんです。

説明の内容が不十分で申し訳ないですが、よろしくお願いします。

A 回答 (5件)

>(1)15で割ってあまり0→FizzBuzz


>(2)3で割ってあまり0→Fizz
>(3)5で割ってあまり0→Buzz
>(4)その他は普通に表示する
>これを100まで繰り返す。
はい。これで合っています。
試すみたいな事をして申し訳ななかったですが、何を学ぶべきか教えるには、どのぐらいのレベルかを知りたかったので質問させていただきました。

>参考になるソースは見つけることができませんでした
との事ですが、そのものズバリな参考ソースが見つかる事など奇跡だと思います。なので、自力で組むしかありません。

とりあえず、最初のうちはWindowsアプリで組むと混乱すると思いますのでコンソールアプリで組んで見てはどうでしょうか?
それと例として上げているmp3変換は、いきなり難しいものに挑戦しすぎています。mp3に関しては、mp3変換のための外部ライブラリの呼び出し方法や、wavファイルの構造(バイナリファイル)の読み込みや加工の知識無しには作る事ができません。最初にもっと小さな機能のツールを作る事から始めてみませんか?
例えばですね。wavファイルの構造をリストするプログラムは作れますか? 周波数やステレオ・モノラルの種類なんかを書き出すプログラムです。
wavファイルのフォーマットは、こうなっています。
http://www.kk.iij4u.or.jp/~kondo/wave/

>アルゴリズムの勉強をするためにはどういったことをするのでしょうか。
下記サイトに有るので見てみてください。
http://ufcpp.net/study/algorithm/index.html
プログラムを組むためにはアルゴリズムを知っていると効率的にプログラムを組む事ができます。完全にコードを覚える必要はありませんが、考え方とどのようなアルゴリズムがあるかを知っておく事は重要です。
    • good
    • 0
この回答へのお礼

>wavファイルの構造をリストするプログラムは作れますか?
少し頑張ればできそうな気がします。
変換ソフトはまだ到底できそうにないですね。
WAVからMP3に変換するプログラムだけでもこんなにたくさん知ってなければならないことがあったんですね。
とても勉強になりました。
そして、まだまだ全然知識不足だということがわかりましたので、もっと頑張って勉強していきたいと思います。

アルゴリズムの参考サイトが役に立ちそうです。

回答ありがとうございました。

お礼日時:2009/10/15 17:14

一般的なアルゴリズムの知識も大切ですが、WAVやMP3を扱うのであれば、それぞれのファイルフォーマットを把握する必要があります。


MP3の企画書は有料ですし、英語ですが、それを熟読しなければ変換プログラムを作ることはできないでしょう。

私自身、最近のMP3の事情には詳しくありませんが、この類いのものは特許などの知的財産権がらみの問題も少なくないので、その辺りは十分注意してください。
    • good
    • 0
この回答へのお礼

大変遅くなってしまい申し訳ありません。

知的財産が絡んでくるんですね・・・
その辺りのことはまったく知らないので、簡単なものから経験を積んでいこうと思います。

お礼日時:2010/04/11 18:48

> アルゴリズムの勉強をするためにはどういったことをするのでしょうか。



私の場合、アルゴリズム辞典(書籍)を引いて探します。
キーワードさえ見つかれば、そのキーワードを元にWebページを探したりと
プログラミングの書籍などで、大雑把なアルゴリズムをつかむ人もいますし

> 厳密には「参考になるソースは見つけることができませんでした」

いきなりソースを探すのでなく、プログラミングは流れなので
キーワードを探していけばよいのです。
MSDNなどを参考に、少しつつで良いと思います。

また、当たり前のことですが、
WAVファイル→MP3ファイルといきなりやるのではなく
WAVファイルのデコーダでも作ってみては?
WAVファイル、MP3ファイルの
それぞれのファイルフォーマットを理解するのも良いと思います。
    • good
    • 0

たぶん、C#の文法しか理解されていないんじゃないかと思います。

プログラミングで大事なのは、文法は当たり前としてプログラミングの考え方を身に付ける事です。
例えば、プログラミングの考え方の基礎が身についているか確認する練習問題にFizzBuzzの問題があります。
「1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。」
と言う問題なのですが、ちゃんと考え方が身に付いていたら本やサイトを見ずに自力で2分程度でプログラムが書けるはずです。
C#のコンソールアプリですぐ作れますか?
mp3なんかよりは遥かに簡単な問題です。

この回答への補足

書けました。2分は無理でした。5分くらい考えました。
条件分岐のところをどうするか迷ったのですが、
やりたいことは、
(1)15で割ってあまり0→FizzBuzz
(2)3で割ってあまり0→Fizz
(3)5で割ってあまり0→Buzz
(4)その他は普通に表示する
これを100まで繰り返す。

といった具合で良かったでしょうか。

補足日時:2009/10/15 16:03
    • good
    • 0

> 目的のプログラム別に、


> こういった処理にはこういった感じのプログラムの組み方をすればいい。

プログラムの前段階、アルゴリズムの勉強をしたほうがいいと思う。
使う言語で、考え方が変わるわけでもないので・・・。

> そういったソースを探してみてもあまり参考になるようなものが見つかりませんでした。

よく入社したての新入社員が、
陥るケースですが「あまり参考となる」
の「あまり」という表現は非常に突っ込みどころ満載です。

ソースを眺めているだけではありませんか?
参考となった部分はどこ?それから応用は出来ないの?っと
不明点を、キーワードを変えて追いかける努力は必要です。

この回答への補足

回答ありがとうございます。
アルゴリズムの勉強をするためにはどういったことをするのでしょうか。

> そういったソースを探してみてもあまり参考になるようなものが見つかりませんでした。
と書いたのは、前に同じことでひたすら調べて、かすった感じのソースは見当外れのものだったので、少しぼかして、「あまり参考にならなかった」と書かせていただきました。
厳密には「参考になるソースは見つけることができませんでした」

補足日時:2009/10/15 15:57
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!