computer.program - プログラミングのお話

FotranとかcobolとかBasicとかCとかC++とかjavaとか…(以下略)

■ メインページ ■ サブボード修正

【最新20記事 [一覧] [ツリー] [一括] 】 【最新の記事は 107 番です.】
【前の20記事 [一覧] [ツリー] [一括] 【次の20記事 [一覧] [ツリー] [一括]
番から 番までの記事を
プログラミングのお話 に新しい記事を

#46: midiStream によるプログラミング
Date: 2000/10/08 15:24:55 Sun Author: tos (tnet0004)
Child Article: #49: midiStream によるプログラミング

「キーボードマニア」が 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) ]

レスチェック ■ この記事のコメントを書く

#45: クラスを返す関数
Date: 2000/10/07 06:37:06 Sat Author: tos (tnet0004)
Parent Article: #44: クラスを返す関数
Child Article: #47: クラスを返す関数

> まだしっかりと分かっていないです>オブジェクトの所有権

オブジェクトの所有権? 私には初耳な言葉ですが。 ^^;


tos.

レスチェック ■ この記事のコメントを書く

#44: クラスを返す関数
Date: 2000/10/07 05:27:29 Sat Author: GOO・豪 (tnet0077)
Parent Article: #43: クラスを返す関数
Child Article: #45: クラスを返す関数

> これで、安心して ToAnsiString() が作れそうです。(笑)

私も BeOS で ua100controler 作っていた頃には
オブジェクトの所有権問題でさんざんエラー出しました。
だいたい C++ 全然分かっていない状態から BeIDE を使っていたら
何となく分かってきたという強行突破状態でしたからね(^^;
まだしっかりと分かっていないです>オブジェクトの所有権
GOO
E-Mail: goo_n@hotmail.com
WWW: http://homepage2.nifty.com/~goo/
GTET 置き場

レスチェック ■ この記事のコメントを書く

#43: クラスを返す関数
Date: 2000/10/07 01:59:05 Sat Author: tos (tnet0004)
Parent Article: #42: クラスを返す関数
Child Article: #44: クラスを返す関数

>> ってやればいいかなと思ったんですが、関数内の str はローカル変数なので、
>> 関数の外に出た瞬間、既知の外 になってしまうので、まずいですよね? ^^;
> 上の書き方だとまずくないです.
> AnsiString& ToAnsiString(complex z)
> の場合は,ローカル変数への参照になるのでアウトですけど,
> 上のように AnsiString 型を返す場合は,ローカル変数の
> 内容がコピられるので,問題ないです.

そうか、アドレスを渡すわけではなくて、値をコピーするから問題ないん
ですね。 ^^;

これで、安心して ToAnsiString() が作れそうです。(笑)


tos.

レスチェック ■ この記事のコメントを書く

#42: クラスを返す関数
Date: 2000/10/06 12:51:34 Fri Author: 沢渡 みかげ (subop)
Parent Article: #41: クラスを返す関数
Child Article: #43: クラスを返す関数

> |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 型を返す場合は,ローカル変数の
内容がコピられるので,問題ないです.

レスチェック ■ この記事のコメントを書く

#41: クラスを返す関数
Date: 2000/10/06 11:25:59 Fri Author: tos (tnet0004)
Child Article: #42: クラスを返す関数

文字列クラスの実体を返す関数を作りたいのですが、どう作ったらよい物か。

やりたいことは、

|AnsiString   str;
|str = "(" + ToAnsiString(z) + ")";

のように書ける ToAnsiString() という関数を作ることです。
簡単に思いつくのは、

|AnsiString ToAnsiString(complex z)
|{
|    AnsiString str;
|
|    str += AnsiString(real(z)) + ", " + AnsiString(imag(z));
|
|    return (str);
|}

ってやればいいかなと思ったんですが、関数内の str はローカル変数なので、
関数の外に出た瞬間、既知の外 になってしまうので、まずいですよね? ^^;

こんな時、どういう風に書くのが一般的でしょうか?
教えてくださいませ。 ^^


tos.

レスチェック ■ この記事のコメントを書く

#40: 初挑戦
Date: 2000/07/30 10:45:47 Sun Author: GOO・豪 (tnet0077)
Parent Article: #39: 初挑戦

> 私は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 置き場

レスチェック ■ この記事のコメントを書く

#39: 初挑戦
Date: 2000/07/29 12:23:46 Sat Author: mega (tnet0051)
Parent Article: #35: 初挑戦
Child Article: #40: 初挑戦

>  で細々とWindowsの勉強を重ねていました。Cの基本知識しかなかったので
>  最初は本を見ても何をやっているか全然分かりませんでしが、

私はCの基礎知識すら無かったので苦労しています。(^^;

最近Win32 APIが一覧出来るような書籍を本屋で探したのですが、
値段に玉砕してしまいました。

--
mega(mega@fics.org)

レスチェック ■ この記事のコメントを書く

#38: 初挑戦
Date: 2000/07/20 23:45:21 Thu Author: tos (tnet0004)
Parent Article: #35: 初挑戦

>  一ヶ月ほど前にヨドバシカメラ京急上大岡店でデジカメを買った時に、
>  そのポイントでVisal C++6.0 Professionalを買いました。

なんで、C++Builder でないのかな? と不思議に思ってしまいます。 ^^;


tos.

レスチェック ■ この記事のコメントを書く

#37: それでは
Date: 2000/07/20 23:29:16 Thu Author: Komit (tnet0027)

>>  それでタイマーでWindowsを終了するのを作ってみました。
>>  よろしければうまく動くか試してみてください。
> とりあえずタイマーとしては普通に動いているみたいです(^^;

 それでは終了するのも置いておきます。
 試してみてください。



Komit

[ http://www.tnet.to/filer/35/WinExiter.lzh 5.85KBytes (6000Bytes) ]

レスチェック ■ この記事のコメントを書く

#36: 初挑戦
Date: 2000/07/20 19:16:10 Thu Author: GOO・豪 (tnet0077)
Parent Article: #35: 初挑戦

>  それでタイマーでWindowsを終了するのを作ってみました。
>  よろしければうまく動くか試してみてください。

とりあえずタイマーとしては普通に動いているみたいです(^^;
GOO
E-Mail: goo_n@hotmail.com
WWW: http://homepage2.nifty.com/~goo/
GTET 置き場

レスチェック ■ この記事のコメントを書く

#35: 初挑戦
Date: 2000/07/20 17:00:56 Thu Author: Komit (tnet0027)
Child Article: #36: 初挑戦 #38: 初挑戦 #39: 初挑戦

 一ヶ月ほど前にヨドバシカメラ京急上大岡店でデジカメを買った時に、
 そのポイントでVisal C++6.0 Professionalを買いました。
 上大岡店はポイント還元13%なので、高額商品を買うときは横浜駅前店より
 お得です。(^^

 で細々とWindowsの勉強を重ねていました。Cの基本知識しかなかったので
 最初は本を見ても何をやっているか全然分かりませんでしが、
 分からないなりにいろいろやっていくうちに、最近なんとか形のあるものが
 作れるようになりました。

 それでタイマーでWindowsを終了するのを作ってみました。
 よろしければうまく動くか試してみてください。
 ただ、作っているときにWindowsがいちいち終了すると面倒なので、今回はかわりに
 ダイアログが出ます。


Komit

[ http://www.tnet.to/filer/34/WinExiter.lzh 5.9KBytes (6050Bytes) ]

レスチェック ■ この記事のコメントを書く

#34: 再帰関数の使いどころ
Date: 2000/07/05 07:02:48 Wed Author: tos (tnet0004)
Parent Article: #33: 再帰関数の使いどころ

>> データ構造が再帰的になっていると、関数も再帰的に使った方が良い場合が
>> 多いでしょうね。
> データ構造が再帰的ってのはちょっとイメージがわきにくいのですが、
> ディレクトリ構造のように自分自身と同じ構造のものを内部に持つような
> データ構造でしょうか。

そうです。二分木の例がありましたので、参考になるかも知れません。

http://www.cs.shinshu-u.ac.jp/Lecture/SE2/99/L5_hint9.html


>> あと、文法解析(文字列解析)とかも、再帰的に作ってないと困る場合が
>> あると思います。
> tos さんが T-NET でやっていることを考えると、
> 入れ子になっていない HTML タグとかでしょうか。

その部分は、みかげ が作ったので、なんとも言えません。 ^^;
ただ HTMLタグの場合は、スタックを使えば再帰関数は使わなくて
済むかも?


> そうなんですよね。うまくいった〜、と思ってもいまいち応用が利かないし
> そんなわけで再帰関数の使い方一般を考えてみたいと思ったんです。

ふつうは、全く再帰関数なんて考えないで作っていくのがよいと思います。
その上で、気が付いてみると再帰関数にした方が楽かな、と分かるはずです。


tos.

レスチェック ■ この記事のコメントを書く

#33: 再帰関数の使いどころ
Date: 2000/07/05 01:06:39 Wed Author: GOO・豪 (tnet0077)
Parent Article: #32: 再帰関数の使いどころ
Child Article: #34: 再帰関数の使いどころ

> データ構造が再帰的になっていると、関数も再帰的に使った方が良い場合が
> 多いでしょうね。

データ構造が再帰的ってのはちょっとイメージがわきにくいのですが、
ディレクトリ構造のように自分自身と同じ構造のものを内部に持つような
データ構造でしょうか。

> あと、文法解析(文字列解析)とかも、再帰的に作ってないと困る場合が
> あると思います。

tos さんが T-NET でやっていることを考えると、
入れ子になっていない HTML タグとかでしょうか。

> でも、そんなには多様しませんね。
> ループで済ませられるなら、ループの方が効率が良いですし。

そうなんですよね。うまくいった〜、と思ってもいまいち応用が利かないし
そんなわけで再帰関数の使い方一般を考えてみたいと思ったんです。
GOO
E-Mail: goo_n@hotmail.com
プログラム置き場

レスチェック ■ この記事のコメントを書く

#32: 再帰関数の使いどころ
Date: 2000/07/05 00:35:46 Wed Author: tos (tnet0004)
Parent Article: #31: 再帰関数の使いどころ
Child Article: #33: 再帰関数の使いどころ

> 他にどのような用途があるでしょうか?
> なにか経験があったら教えて欲しいです。

データ構造が再帰的になっていると、関数も再帰的に使った方が良い場合が
多いでしょうね。

あと、文法解析(文字列解析)とかも、再帰的に作ってないと困る場合が
あると思います。

でも、そんなには多様しませんね。
ループで済ませられるなら、ループの方が効率が良いですし。


tos.

レスチェック ■ この記事のコメントを書く

#31: 再帰関数の使いどころ
Date: 2000/07/04 03:41:13 Tue Author: GOO・豪 (tnet0077)
Child Article: #32: 再帰関数の使いどころ

再帰関数って自分自身を呼び出す関数って定義でいいんでしたっけ?

int reflexive(int value){
    if(value)return (value + reflexive(value-1));
    else return value;
}

こんな感じの関数のことですけど、while とか for とかと
似たような使い方になると思うんですが、いまいち使い道がわかりにくい
ところがあります。

最近サブディレクトリ以下をすべて検索するプログラムを作って、
そこで再帰関数を使いました。これはばっちりはまる使い方ですね。
ディレクトリ内を調べてディレクトリがあったらその場で自分自身を
呼び出してその中を調べ、またその中にディレクトリがあれば...

関数自身のクローンが連鎖的に必要になる、と言ったときに
再帰関数は有用なのかもしれません。

他にどのような用途があるでしょうか?
なにか経験があったら教えて欲しいです。
GOO
E-Mail: goo_n@hotmail.com
プログラム置き場

レスチェック ■ この記事のコメントを書く

#30: void 型の変数!?
Date: 2000/05/23 15:25:51 Tue Author: GOO・豪 (tnet0077)

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
プログラム置き場

レスチェック ■ この記事のコメントを書く

#29: C++ オブジェクト指向のメリット
Date: 2000/05/21 23:12:26 Sun Author: GOO・豪 (tnet0077)
Parent Article: #28: C++ オブジェクト指向のメリット

> かなりお久しぶりです、ふみぃです。(^^;
> # インターネットにかける時間がだんだんと減っています(泣)

お久しぶりです(^^)
私もそうなって行くんだろうか(^^;

> データには、そのデータをいじるための手段、つまりコードが必要ですから、
> それが一体化して見通しがよくなる、と思っています。C++ではなくて、Cでも
> そのようなことが可能ですけど、クラスを使うことによってそれが強制されますから。

確かにまとめ方を強制されることがとても見通しを良くしていますよね。
他の人が見ても分かりやすいかも。

> 私もtosさんと同様で、混乱するのなら使わなくてもいいのでは、と思います。
> むしろ混乱するということは、オブジェクト指向にするには不適な部分なので
> はないでしょうか?

いや、まだ慣れてないだけかも(^^;

> 結局、従来のコード(関数)が中心のプログラミングスタイルから、データ(オブジェクト)が中心となったということだと思います。

この考え方の転換について行けるかどうかですね。頑張ってみます(^^;
GOO
E-Mail: goo_n@hotmail.com
プログラム置き場

レスチェック ■ この記事のコメントを書く

#28: C++ オブジェクト指向のメリット
Date: 2000/05/21 15:47:19 Sun Author: ふみぃ (tnet0085)
Parent Article: #24: C++ オブジェクト指向のメリット
Child Article: #29: C++ オブジェクト指向のメリット

かなりお久しぶりです、ふみぃです。(^^;
# インターネットにかける時間がだんだんと減っています(泣)

> オブジェクト指向と言っても、私の認識では、クラスと言う、構造体に
> 関数が入り込んだようなものができて、そのためにプログラミングの手順が

私の認識は、GOOさんの指摘した部分 プラス データとコードの一体化
だと思います。
データには、そのデータをいじるための手段、つまりコードが必要ですから、
それが一体化して見通しがよくなる、と思っています。C++ではなくて、Cでも
そのようなことが可能ですけど、クラスを使うことによってそれが強制されますから。

> しかし、クラスオブジェクトを作るときに実行されるコンストラクタを中心とした
> プログラミングの仕方にはとても混乱を覚えます。

私もtosさんと同様で、混乱するのなら使わなくてもいいのでは、と思います。
むしろ混乱するということは、オブジェクト指向にするには不適な部分なので
はないでしょうか?

> どういうところが良くてこういう構造になり始めたんでしょうか。

結局、従来のコード(関数)が中心のプログラミングスタイルから、データ(オブジェクト)が中心となったということだと思います。

--
ふみぃ fummy@din.or.jp

レスチェック ■ この記事のコメントを書く

#27: ダンプ表示
Date: 2000/05/21 15:12:07 Sun Author: mega (tnet0051)
Parent Article: #23: ダンプ表示

> 適当なバッファに,8KBくらいのデータを読み込んで,
> そこのメモリにアクセスしつつ表示した方が良いですね.

ファイルに直接アクセスするのではなく、あらかじめ一定量の
データを読み込んでおいてアクセスする訳ですね。

> 1バイトずつ読み込みはちょっと遅いと思いますので(^^;;

確かにそう思います、が、まだ別の方法を考える為の知識がありません。
あいたたた・・

> printf は遅いですよ.出来れば自分で文字列を作って,
> それを write(だったかな?)で表示してやる方が高速です.

printf()かputchar()しかまだ標準出力への方法を知りませんので、
まだまだ自分が使える関数を増やしていかないといけませんね。

ううっ、まだ勉強不足。(^^;

--
mega(mega@fics.org)

レスチェック ■ この記事のコメントを書く

レスチェックした記事を
【最新20記事 [一覧] [ツリー] [一括] 】 【最新の記事は 107 番です.】
【前の20記事 [一覧] [ツリー] [一括] 【次の20記事 [一覧] [ツリー] [一括]
番から 番までの記事を
プログラミングのお話 に新しい記事を

T-Net ■ メインページ