FotranとかcobolとかBasicとかCとかC++とかjavaとか…(以下略)
■ メインページ ■ サブボード修正
「キーボードマニア」が PC上で作れないものかと、ちょっと考えています。 とりあえず、midiStream を使って MIDI音源から音を出すプログラムを 作ってみました。ドの音が1回だけ鳴ります。(苦笑) // しかし、これに辿り着くまでに半日掛かりました。 ^^; なお、これを作るにあたり、infoseekで midiStreamOpen を検索して 出てきた資料を参考にしました。 キーポイントは、MEVT_F_SHORT 時の MIDIEVENT 構造体は 12バイトだという ことです。ずっと 16 バイトだと思って作っていたので、midiStreamOut() が エラーを返していました。 何かの役に立つように、サンプルソースの一部を添付ファイルにしておきます。 tos. [ http://www.tnet.to/filer/41/midiStream.txt 2.21KBytes (2265Bytes) ]
> まだしっかりと分かっていないです>オブジェクトの所有権 オブジェクトの所有権? 私には初耳な言葉ですが。 ^^; tos.
> これで、安心して ToAnsiString() が作れそうです。(笑) 私も BeOS で ua100controler 作っていた頃には オブジェクトの所有権問題でさんざんエラー出しました。 だいたい C++ 全然分かっていない状態から BeIDE を使っていたら 何となく分かってきたという強行突破状態でしたからね(^^; まだしっかりと分かっていないです>オブジェクトの所有権 GOO E-Mail: goo_n@hotmail.com WWW: http://homepage2.nifty.com/~goo/ GTET 置き場
>> ってやればいいかなと思ったんですが、関数内の str はローカル変数なので、 >> 関数の外に出た瞬間、既知の外 になってしまうので、まずいですよね? ^^; > 上の書き方だとまずくないです. > AnsiString& ToAnsiString(complex z) > の場合は,ローカル変数への参照になるのでアウトですけど, > 上のように AnsiString 型を返す場合は,ローカル変数の > 内容がコピられるので,問題ないです. そうか、アドレスを渡すわけではなくて、値をコピーするから問題ないん ですね。 ^^; これで、安心して ToAnsiString() が作れそうです。(笑) tos.
> |AnsiString str; > |str = "(" + ToAnsiString(z) + ")"; > のように書ける ToAnsiString() という関数を作ることです。 > 簡単に思いつくのは、 > |AnsiString ToAnsiString(complex z) > |{ > | AnsiString str; > | > | str += AnsiString(real(z)) + ", " + AnsiString(imag(z)); > | > | return (str); > |} > ってやればいいかなと思ったんですが、関数内の str はローカル変数なので、 > 関数の外に出た瞬間、既知の外 になってしまうので、まずいですよね? ^^; 上の書き方だとまずくないです. AnsiString& ToAnsiString(complex z) の場合は,ローカル変数への参照になるのでアウトですけど, 上のように AnsiString 型を返す場合は,ローカル変数の 内容がコピられるので,問題ないです.
文字列クラスの実体を返す関数を作りたいのですが、どう作ったらよい物か。 やりたいことは、 |AnsiString str; |str = "(" + ToAnsiString(z) + ")"; のように書ける ToAnsiString() という関数を作ることです。 簡単に思いつくのは、 |AnsiString ToAnsiString(complex z) |{ | AnsiString str; | | str += AnsiString(real(z)) + ", " + AnsiString(imag(z)); | | return (str); |} ってやればいいかなと思ったんですが、関数内の str はローカル変数なので、 関数の外に出た瞬間、既知の外 になってしまうので、まずいですよね? ^^; こんな時、どういう風に書くのが一般的でしょうか? 教えてくださいませ。 ^^ tos.
> 私はCの基礎知識すら無かったので苦労しています。(^^; > 最近Win32 APIが一覧出来るような書籍を本屋で探したのですが、 > 値段に玉砕してしまいました。 Win32 API で検索してみるとこんなところがありました。 http://tokyo.cool.ne.jp/masapico/ う〜ん、役に立ちそう(^^; GOO E-Mail: goo_n@hotmail.com WWW: http://homepage2.nifty.com/~goo/ GTET 置き場
> で細々とWindowsの勉強を重ねていました。Cの基本知識しかなかったので > 最初は本を見ても何をやっているか全然分かりませんでしが、 私はCの基礎知識すら無かったので苦労しています。(^^; 最近Win32 APIが一覧出来るような書籍を本屋で探したのですが、 値段に玉砕してしまいました。 -- mega(mega@fics.org)
> 一ヶ月ほど前にヨドバシカメラ京急上大岡店でデジカメを買った時に、 > そのポイントでVisal C++6.0 Professionalを買いました。 なんで、C++Builder でないのかな? と不思議に思ってしまいます。 ^^; tos.
>> それでタイマーでWindowsを終了するのを作ってみました。 >> よろしければうまく動くか試してみてください。 > とりあえずタイマーとしては普通に動いているみたいです(^^; それでは終了するのも置いておきます。 試してみてください。 Komit [ http://www.tnet.to/filer/35/WinExiter.lzh 5.85KBytes (6000Bytes) ]
> それでタイマーでWindowsを終了するのを作ってみました。 > よろしければうまく動くか試してみてください。 とりあえずタイマーとしては普通に動いているみたいです(^^; GOO E-Mail: goo_n@hotmail.com WWW: http://homepage2.nifty.com/~goo/ GTET 置き場
一ヶ月ほど前にヨドバシカメラ京急上大岡店でデジカメを買った時に、 そのポイントでVisal C++6.0 Professionalを買いました。 上大岡店はポイント還元13%なので、高額商品を買うときは横浜駅前店より お得です。(^^ で細々とWindowsの勉強を重ねていました。Cの基本知識しかなかったので 最初は本を見ても何をやっているか全然分かりませんでしが、 分からないなりにいろいろやっていくうちに、最近なんとか形のあるものが 作れるようになりました。 それでタイマーでWindowsを終了するのを作ってみました。 よろしければうまく動くか試してみてください。 ただ、作っているときにWindowsがいちいち終了すると面倒なので、今回はかわりに ダイアログが出ます。 Komit [ http://www.tnet.to/filer/34/WinExiter.lzh 5.9KBytes (6050Bytes) ]
>> データ構造が再帰的になっていると、関数も再帰的に使った方が良い場合が >> 多いでしょうね。 > データ構造が再帰的ってのはちょっとイメージがわきにくいのですが、 > ディレクトリ構造のように自分自身と同じ構造のものを内部に持つような > データ構造でしょうか。 そうです。二分木の例がありましたので、参考になるかも知れません。 http://www.cs.shinshu-u.ac.jp/Lecture/SE2/99/L5_hint9.html >> あと、文法解析(文字列解析)とかも、再帰的に作ってないと困る場合が >> あると思います。 > tos さんが T-NET でやっていることを考えると、 > 入れ子になっていない HTML タグとかでしょうか。 その部分は、みかげ が作ったので、なんとも言えません。 ^^; ただ HTMLタグの場合は、スタックを使えば再帰関数は使わなくて 済むかも? > そうなんですよね。うまくいった〜、と思ってもいまいち応用が利かないし > そんなわけで再帰関数の使い方一般を考えてみたいと思ったんです。 ふつうは、全く再帰関数なんて考えないで作っていくのがよいと思います。 その上で、気が付いてみると再帰関数にした方が楽かな、と分かるはずです。 tos.
> データ構造が再帰的になっていると、関数も再帰的に使った方が良い場合が > 多いでしょうね。 データ構造が再帰的ってのはちょっとイメージがわきにくいのですが、 ディレクトリ構造のように自分自身と同じ構造のものを内部に持つような データ構造でしょうか。 > あと、文法解析(文字列解析)とかも、再帰的に作ってないと困る場合が > あると思います。 tos さんが T-NET でやっていることを考えると、 入れ子になっていない HTML タグとかでしょうか。 > でも、そんなには多様しませんね。 > ループで済ませられるなら、ループの方が効率が良いですし。 そうなんですよね。うまくいった〜、と思ってもいまいち応用が利かないし そんなわけで再帰関数の使い方一般を考えてみたいと思ったんです。 GOO E-Mail: goo_n@hotmail.com プログラム置き場
> 他にどのような用途があるでしょうか? > なにか経験があったら教えて欲しいです。 データ構造が再帰的になっていると、関数も再帰的に使った方が良い場合が 多いでしょうね。 あと、文法解析(文字列解析)とかも、再帰的に作ってないと困る場合が あると思います。 でも、そんなには多様しませんね。 ループで済ませられるなら、ループの方が効率が良いですし。 tos.
再帰関数って自分自身を呼び出す関数って定義でいいんでしたっけ? int reflexive(int value){ if(value)return (value + reflexive(value-1)); else return value; } こんな感じの関数のことですけど、while とか for とかと 似たような使い方になると思うんですが、いまいち使い道がわかりにくい ところがあります。 最近サブディレクトリ以下をすべて検索するプログラムを作って、 そこで再帰関数を使いました。これはばっちりはまる使い方ですね。 ディレクトリ内を調べてディレクトリがあったらその場で自分自身を 呼び出してその中を調べ、またその中にディレクトリがあれば... 関数自身のクローンが連鎖的に必要になる、と言ったときに 再帰関数は有用なのかもしれません。 他にどのような用途があるでしょうか? なにか経験があったら教えて欲しいです。 GOO E-Mail: goo_n@hotmail.com プログラム置き場
virtual void SystemExclusive( void *data, size_t dataLength,uint32 time = B_NOW ) マニュアルにこんな記述のある関数がありました。システムエクスクルーシブを 送信する関数(メソッドと言うのかな?)なんですが、void* のデータを渡すのに ひどく苦労しました(^^;void 型のポインタを渡せと言われてもそんなの知りません(笑) ほとほと困り果てて何度も質問してみようと考えましたが、その前に何か別の型の ポインタを渡してみて、当たって砕けてみようと踏みとどまりました。 最初は (void*) &(char*) で渡してみたんですが激沈。 次に (void*) &(int8[]) と 8bit int の配列を渡してみたら成功しました。 感激(;;) しかし、こういう風に書いてある関数だと何を渡せばいいのか どうやって調べたらいいんでしょうか? GOO E-Mail: goo_n@hotmail.com プログラム置き場
> かなりお久しぶりです、ふみぃです。(^^; > # インターネットにかける時間がだんだんと減っています(泣) お久しぶりです(^^) 私もそうなって行くんだろうか(^^; > データには、そのデータをいじるための手段、つまりコードが必要ですから、 > それが一体化して見通しがよくなる、と思っています。C++ではなくて、Cでも > そのようなことが可能ですけど、クラスを使うことによってそれが強制されますから。 確かにまとめ方を強制されることがとても見通しを良くしていますよね。 他の人が見ても分かりやすいかも。 > 私もtosさんと同様で、混乱するのなら使わなくてもいいのでは、と思います。 > むしろ混乱するということは、オブジェクト指向にするには不適な部分なので > はないでしょうか? いや、まだ慣れてないだけかも(^^; > 結局、従来のコード(関数)が中心のプログラミングスタイルから、データ(オブジェクト)が中心となったということだと思います。 この考え方の転換について行けるかどうかですね。頑張ってみます(^^; GOO E-Mail: goo_n@hotmail.com プログラム置き場
かなりお久しぶりです、ふみぃです。(^^; # インターネットにかける時間がだんだんと減っています(泣) > オブジェクト指向と言っても、私の認識では、クラスと言う、構造体に > 関数が入り込んだようなものができて、そのためにプログラミングの手順が 私の認識は、GOOさんの指摘した部分 プラス データとコードの一体化 だと思います。 データには、そのデータをいじるための手段、つまりコードが必要ですから、 それが一体化して見通しがよくなる、と思っています。C++ではなくて、Cでも そのようなことが可能ですけど、クラスを使うことによってそれが強制されますから。 > しかし、クラスオブジェクトを作るときに実行されるコンストラクタを中心とした > プログラミングの仕方にはとても混乱を覚えます。 私もtosさんと同様で、混乱するのなら使わなくてもいいのでは、と思います。 むしろ混乱するということは、オブジェクト指向にするには不適な部分なので はないでしょうか? > どういうところが良くてこういう構造になり始めたんでしょうか。 結局、従来のコード(関数)が中心のプログラミングスタイルから、データ(オブジェクト)が中心となったということだと思います。 -- ふみぃ fummy@din.or.jp
> 適当なバッファに,8KBくらいのデータを読み込んで, > そこのメモリにアクセスしつつ表示した方が良いですね. ファイルに直接アクセスするのではなく、あらかじめ一定量の データを読み込んでおいてアクセスする訳ですね。 > 1バイトずつ読み込みはちょっと遅いと思いますので(^^;; 確かにそう思います、が、まだ別の方法を考える為の知識がありません。 あいたたた・・ > printf は遅いですよ.出来れば自分で文字列を作って, > それを write(だったかな?)で表示してやる方が高速です. printf()かputchar()しかまだ標準出力への方法を知りませんので、 まだまだ自分が使える関数を増やしていかないといけませんね。 ううっ、まだ勉強不足。(^^; -- mega(mega@fics.org)