ひまわりユーザー プログラム掲示板 バックアップ
注意
ひまわりのススメ  □ ひまわり本家Home  □ 新着記事  □ 新規投稿  □ SEARCH  □ 参考プログラム集
ツリー表示

MESSAGE ◆No.014メルマガ連動(時計)解答 /北神 陽太 (02/04/22(Mon) 10:41) [778]
......MESSAGE とりあえず /SWinX (02/04/22(Mon) 23:16) [779]
............MESSAGE ジョーク:時計とカレンダーを表示 /SWinX (02/04/25(Thu) 01:31) [790]
..................MESSAGE 意見 /SWinX (02/04/30(Tue) 14:43) [814]
......MESSAGE 単純に /moka (02/04/23(Tue) 11:52) [781]
......MESSAGE Re[1]: ◆メルマガ連動(時計)解答 /Runaway (02/04/24(Wed) 23:39) [789]
............MESSAGE 励みになります /北神 陽太 (02/04/25(Thu) 10:53) [792]
......MESSAGE これ、いけてますでしょうか? /山本 博信 (02/04/30(Tue) 20:36) [815]
............MESSAGE 慌てて変更 /山本 博信 (02/04/30(Tue) 21:01) [816]
......MESSAGE ◆No.014解答ありがとうございました /北神 陽太 (02/05/01(Wed) 13:13) [818]
............MESSAGE 了解 /SWinX (02/05/01(Wed) 15:17) [821]


親記事 / ▼[ 779 ] ▼[ 781 ] ▼[ 789 ] ▼[ 815 ] ▼[ 818 ]
NO.778  ◆No.014メルマガ連動(時計)解答
□投稿者/ 北神 陽太 -(2002/04/22(Mon) 10:41:47)
□U R L/ http://homepage1.nifty.com/kitagami/index.htm
 No.014メルマガの宿題「時計」のユーザー解答スレッドです。

 宿題が出来た人は、ぜひこのスレッドにソースを書き込んでください。
 初心者大歓迎です。みなさんでお互いに勉強しましょう。

 宿題は、以下のプログラムの修正です。

{▼サンプルソース}
'一定時間待機する方法
母艦の、幅=200。その、高さ=0。'母艦をタスクバーのみにする

*ループ
 母艦の、タイトル=今。1秒、待つ。
ループへ、飛ぶ。
{▲ここまで}

 <問題>
 「時:分:秒」と表示している時間を「時:分」にしてください。
 そして、処理の時間を最適化してください。

 <ヒント>
 ちょっと初心者には難しいかもしれませんので、ヒントを出します。「今」の
文字数は8文字ありますよね。これを左から5文字だけ取り出せば・・・。

 最適化は、デジタルサンプリングの「標本化の定理」を知っていると、どれく
らいの間隔で処理を実行すればいいのか、わかります。調べてみましょう。



▲[ 778 ] / ▼[ 790 ]
NO.779  とりあえず
□投稿者/ SWinX -(2002/04/22(Mon) 23:16:57)
□U R L/
{デジタル時計}
母艦の、スタイルは、ダイアログスタイル。
その、幅は、70
その、高さは、0
母艦浮上。
*時刻反映
それ=60-RIGHT(今,2)
時刻反映へ飛ぶ、タイマー設定。
その、タイトルは、LEFT(今,5)
待機。



▲[ 779 ] / ▼[ 814 ]
NO.790  ジョーク:時計とカレンダーを表示
□投稿者/ SWinX -(2002/04/25(Thu) 01:31:57)
□U R L/
{時計とカレンダーを表示するプログラム}
「rundll32 shell32.dll,Control_RunDLL timedate.cpl」を、起動。
終わる。
母艦浮上。



▲[ 790 ] / 返信無し
NO.814  意見
□投稿者/ SWinX -(2002/04/30(Tue) 14:43:09)
□U R L/
>あまり反応がないのか、週末に増えるのか・・・、簡単すぎたでしょうか?
投稿に対して出題者のコメントすらつかないようでは解答の意欲が失われて当然です。
まぁ、私の解答は「こういう解答を待ってました。」には該当しないようですけど。

>ちょっとフライングもありましたが
解答用スレッドに反応しただけです。ちなみに私はメルマガ非購読者です。

>標本化の定理とは、再現したい周期の倍の周期でサンプリングすれば、忠実な再現が
>できるというもので、この場合60秒を再現するには、半分の30秒ごとに更新す
>れば、正確に1分をカウントします
では、秒まで表示する時計と、今回の「模範解答」を同時に起動してみてください。
起動した時刻によっては、最大29秒更新が遅れることがあります。
(例えば12:00:59に起動した場合、12:01:29まで表示は「12:00」のまま)
これは、分表示時計としては致命的な欠陥では?
少なくとも、この問題に対しては、「標本化の定理」を適用すべきではないと思います。
解答者が少なかったのは、この誤導によるところも大きいと思います。

>さて、時計の場合、タイマー設定では、「飛ぶ」で現在時刻を表示した後、
>ループへ戻る必要があるため、構造が複雑になってしまい、あまり向いていません。
図らずも、私の解答がこの意見に対する反対意見となっています。
どんなアルゴリズムでも、複雑に書こうと思えばいくらでもできます。
また、
>たった4行のデジタル時計
といっていますが、本体の3行目は2文ありますよ。(1行目もですが)
何か2つの物を比較する時のやり方としては、フェアじゃないですね。

さて、反論を
>プログラム掲示板 No.014メルマガ連動(時計)解答 スレッドでお待ちしています。



▲[ 778 ] / 返信無し
NO.781  単純に
□投稿者/ moka -(2002/04/23(Tue) 11:52:33)
□U R L/ http://www.geocities.jp/moka21/teatime/
{▼サンプルソース}
母艦の、幅=200。その、高さ=0。

*ループ
   60秒後に、ループへ飛ぶ、タイマー設定
   母艦の、タイトル=LEFT(今,5)。
   待機。
{▲ここまで}

===

最適化って何だ!?って具合に、単純なのしか浮かびませんでした。
タイマー60秒じゃ、偶然・処理落ち・誤差によっては、
時刻反映されないことが起こりえるような…。
SWinXさんの、残り秒を計算してタイマー設定するのには感服しました。



▲[ 778 ] / ▼[ 792 ]
NO.789  Re[1]: ◆メルマガ連動(時計)解答
□投稿者/ Runaway -(2002/04/24(Wed) 23:39:04)
□U R L/
※【その1】

{▼サンプルソース}
'母艦の、サイズ=(0,0,200,0)
'母艦浮上。
'
'*ループ
'今から、2文字、右端を切り取る。
'もし、(それ<>00)ならば、(
'   今から、5文字、左端を切り取る。
'   母艦の、タイトル=それ)
' 違えば(
'   今から、5文字、左端を切り取る。
'    母艦の、タイトル=それ
')
'1秒、待つ。
'ループへ、飛ぶ。
{▲ここまで}


※【その2】

{▼サンプルソース}
母艦の、スタイルは、ダイアログスタイル。
その、Wは、150
その、Hは、0

時刻を、呼ぶ。
今の中で、5から、1つ、切り出す。
あれ=それ。
母艦浮上。

*ループ
今の中で、5から、1つ、切り出す。
これ=それ。
もし、(あれ=これ)
   違えば、(時刻を、呼ぶ。)
1秒、待つ。
ループへ、飛ぶ。

*時刻
今の中で、1から、5つ、切り出す。
母艦の、タイトルは、それ。
戻る。
{▲ここまで}


最初に思いついたのは、mokaさんと同じだったので、『もし』を使ってみました。
かえってごちゃごちゃしちゃいましたが、いろいろなやり方があるって言うことで。

個人的には、こういったミニ問題、好きです。
これからも、メルマガ楽しみにしています。



▲[ 789 ] / 返信無し
NO.792  励みになります
□投稿者/ 北神 陽太 -(2002/04/25(Thu) 10:53:06)
□U R L/ http://homepage1.nifty.com/kitagami/index.htm
 いいですねぇ。こういう解答を待ってました。面倒と思われるやり方でも、以外な発見があるかもしれません。
 次回もよりしくです。(次の問題も用意しています)



▲[ 778 ] / ▼[ 816 ]
NO.815  これ、いけてますでしょうか?
□投稿者/ 山本 博信 -(2002/04/30(Tue) 20:36:07)
□U R L/
母艦の、幅=200。その、高さ=0。

今から、5文字、左端を切り取る。
規準時=それ
60回(今から、5文字、左端を切り取る。
   比較時=それ
   もし、(規準時<>比較時)ならば、抜ける。
   1秒、待つ。)
母艦浮上。
*ループ
   今から、5文字、左端を切り取る。
   母艦の、タイトルは、それ。
   60秒、待つ。
   ループへ、飛ぶ。



▲[ 815 ] / 返信無し
NO.816  慌てて変更
□投稿者/ 山本 博信 -(2002/04/30(Tue) 21:01:46)
□U R L/
さっきのだと、最大一分表示までまたされますね。
母艦の、幅=200。その、高さ=0。
母艦浮上。

今から、5文字、左端を切り取る。
規準時=それ
母艦の、タイトルは、規準時。
60回(今から、5文字、左端を切り取る。
   比較時=それ
   もし、(規準時<>比較時)ならば、抜ける。
   1秒、待つ。)

*ループ
   今から、5文字、左端を切り取る。
   母艦の、タイトルは、それ。
   60秒、待つ。
   ループへ、飛ぶ。
これでいけますでしょうか?



▲[ 778 ] / ▼[ 821 ]
NO.818  ◆No.014解答ありがとうございました
□投稿者/ 北神 陽太 -(2002/05/01(Wed) 13:13:31)
□U R L/ http://homepage1.nifty.com/kitagami/index.htm
 みなさん、ご多忙の中解答を寄せていただいてありがとうございました。投稿されたプログラムには、いろいろな方法があって、逆に勉強させていただきました。
 こうした企画を今後も続けていくかどうか、参考にさせていただきます。

 では、いくつかの質問がありましたので、ここで解答させていただきます。

●出題者のコメントがない
 メルマガが一方的な説明だけなので、掲示板を使って相互に意見交換ができればと、あえて発言はひかえさせていただきました。ユーザーどおしで活発なコミュニティになることを期待しています。

●最適化ってなんだ?
 目的の動作に無駄がないように工夫します。この場合、何秒ごとに処理したらいいか?ということになります。たとえば、昼と夜だけでいいなら、1時間おきでもかまわないんです。目的に応じて、ということになります。

●標本化の定理について
 Webで検索すると、いろいろな説明が出てきます。身近なところでは音楽CDのサンプリング周波数なんてのもあります。覚えておくとちょっと便利。

●時計の精度について
 私の模範解答では、ご指摘のように29秒の誤差があります。説明不足でしたが、このシリーズでは、正確な時計を作るのではなく、アイデアや発想を発表し合い、実用的なアプリの開発という方向でいこうと思いますので、最終的に精度を必要としない方向で進んでいきます。誤解を招いたことをお詫び申し上げます。

 なお、このシリーズの最後では、指定した時間に処理を自動実行する、プログラマブルタイマーと、可能ならばキーボードマクロ(次のシリーズかな?)までを予定しています。



▲[ 818 ] / 返信無し
NO.821  了解
□投稿者/ SWinX -(2002/05/01(Wed) 15:17:24)
□U R L/
北神さま
・「分表示の時計」というアプリケーションは、それほどの精度を必要としないので最大29秒の誤差が有っても構わない
・その技術を応用して作成する「プログラマブルタイマー」も最大29秒の誤差があっても十分実用的である
というスタンスは理解しました。(納得はしませんが)

そのようなスタンスであれば、私や山本様のような
「分の切り替わりを正確に表示する」為のアイデアや発想が評価されなくても仕方がありませんね。

※ビデオのタイマー録画して、頭が29秒欠けてたら、不良品だと(私は)思いますけど。



- Child Tree -