
/*
    KAB-studio.h
        　ＫＡＢ−ｓｔｕｄｉｏで先週更新した内容
        が格納されたヘッダーファイルです（笑）。

    (C)KAB-studio ALL RIGHTS RESERVED.
        http://www2.justnet.ne.jp/~kabstudio/
        kab-studio@multimedia.design.co.jp

    送信日： 1999/07/12(Mon) No.015
    配信数： 2230（ Mag2 + Pubzine ）
    発行元： まぐまぐ( URL: http://www.mag2.com/  ID: 0000012198 )
    発行元： Pubzine( URL: http://www.pubzine.com/  ID: 590 )
*/

/*            １９９９年７月１２日（月）の更新                */

・メニューバーを統一。
　メニューバーを最新バージョンに統一しました。サイトマップの□リンク
すべてでこのメニューバーが表示されるはずです。ま、今回はこれだけね。



/*                チョー普通な日記                */

１９９９年７月４日（日）：
　思いっきり疲れてる感じ。そして大相撲名古屋場所スタート！！　そして
薬害ＨＩＶ対談。こーゆーんって、ソフト業界でも起き得るんとちゃう？

１９９９年７月５日（月）：
　さらに眠い。そして試験日程の発表。だから来週の更新はナシよん。

１９９９年７月６日（火）：
　ゲームしたり相撲見たりアニメ見たりといつもの日々。そして、……眠く
ない！！

１９９９年７月７日（水）：
　ロータス２０００やまぐまぐやデバッグについてのツッコミなどなど。

１９９９年７月８日（木）：
　今日は鉄拳ＴＴ。そして「いさこっていう女の子よ」の女の子のＣＤ発
見！！　あと＠ニフティとかそんなの。

１９９９年７月９日（金）：
　ポケモンの映画ほか、やっぱ金曜はアニメだね！　という話。

１９９９年７月１０日（土）：
　鈴木あみのＳＡを購入。あとは色々したよーとゆー自己満足な内容。



/*                    金菜さんの憂鬱                        */

１９９９年７月４日（日）：
const メンバ関数
仮想関数
サンプルコード
const あるなしでオーバーライドできない
親の性格が末代まで関わってくる
外から見たときには正しい
結論は出ない
const メンバ関数は設計と実装に関係するから難しい

１９９９年７月５日（月）：
const メンバ関数の最終回
まずconst クラス型へのポインタや参照を使いまくる
まず、「確実に const なメンバ関数」を const 化する
 const メンバ関数を呼び出しているメンバ関数を const 化する
あとは繰り返し
public メンバ関数はできるだけ const なものが多くなるようにする
注意して欲しいのはやりすぎないこと
お便り
次のリクエスト
「デバッグの仕方」に決定

１９９９年７月６日（火）：
デバッグについて
「バグ」とは「実行したときにプログラマーの想像通りに動作しない」こと
コンパイルタイムエラーはバグと呼ばない
できるだけランタイムをコンパイルタイムに置き換える
問題点を取り除くことを「デバッグ」という
取り除くための環境を「デバッガ」という
お便り
プロパティシートどうしのやりとり
CPage1::OnKillActive() と CPage2::OnSetActive() 
メンバ変数とポインタを使用
サンプルコード
ポインタを渡してひとつのメンバ変数を共有する
サンプルコード
あとはポインタを通して渡す

１９９９年７月７日（水）：
デバッグについて
assert()
Ｃランタイムライブラリの関数のひとつ
ゼロだとアプリを停止させる
サンプルコード
停止したあとの選択
assert() は「ばらまく」
お便り
CDialogBar を非ドッキング化するには？
CFrameWnd::DockControlBar() を呼び出さない

１９９９年７月８日（木）：
デバッグについて
assert() はマクロ
「リリースビルド」の時には削除される
同時に引数まで削除される
サンプルコード
削除される条件は NDEBUG が定義されているかどうか
「プロジェクト」ダイアログの設定
設定とデフォルト

１９９９年７月９日（金）：
デバッグについて
ASSERT() 
assert() のＭＦＣ版
機能は同じだけど実装は違う
削除されるフラグが違う
【使用するランタイムライブラリ】もスイッチのひとつ
兄弟マクロ
VERIFY() と ASSERT_VALID() 

１９９９年７月１０日（土）：
デバッグについて
TRACE()
printf() のデバッグ版
アウトプットウィンドウに書式化された文字列を出力
アプリを止めなくていい
TRACE0() 、 TRACE1() 、 TRACE2() 、 TRACE3() 
サンプルコード
sprintf() で書式化したものを OutputDebugString() で出力
リリースビルドで値のチェックをしたいときなどに


/*                    #pragma twice                        */


　Version 2.4
計算をしてみよう！！

『この前のは難しかったなー』
「だから大丈夫だって、前回のほとんどのことは忘れちゃっていいから」
『そうなの？』
「そ。だからいじけないで」
『う”〜』
「今回は＜計算＞をします」
『そりゃそうよね、計算機作るって話だったんだから』
「そゆこと。えっとまず、これ見てみて」

void CCalcDlg::OnBEqual() 
{
    int iBox;
    iBox = 100;
    TRACE( "%d\n", iBox );
}

『あ、これこの前のだ』
「この TRACE() っていうのを使って、変数の中身を表示するから」
『うん、これならなんとか分かるかなー』
「じゃ、まずは＜代入＞から」
『う”、なんか難しい単語』
「って言っても、＜変数の中に数字を入れること＞をそう言うだけなんだけ
どね」
『あれ？　それって＝のことじゃないの？』
「そうそう、だからこの＜代入＞は、こんなふうにすればＯＫ」

void CCalcDlg::OnBEqual() 
{
    int iBox;
    iBox = 100;
    TRACE( "%d\n", iBox );
    iBox = 200;
    TRACE( "%d\n", iBox );    
}

『実行してみると……』

100
200

『ってなったよ』
「どうしてそうなったのか分かる？」
『えっとねぇ……、まず１行目で＜数字を入れる箱＞ iBox を作って、２行
目でその中に１００を入れて、３行目で iBox の中身を、アウトプットって
ところに表示して、４行目でまた iBox の中にこんどは２００を入れて、ま
た表示した、ってとこ？』
「おっけ！　だいたい感じつかめた？」
『なんとなくだけど。ねぇ、最初に入れた１００って、どこ行っちゃった
の？』
「そうだね、４行目の時には、 iBox の中にはもう１００が入ってるんだけ
ど、その１００を捨てたりする必要はないんだわ。上書き、って感じかな」
『じゃ、箱とちょっとイメージ違うね』
「それはたぶん、＝のイメージが違うんだと思うよ。＝は＜新しい数字を入
れる＞の。代わりに＋＝っていうのを使うと＜今ある数字に加える＞ことに
なるから」
『＋＝？』
「こんな感じにね」

void CCalcDlg::OnBEqual() 
{
    int iBox;
    iBox = 100;
    TRACE( "%d\n", iBox );
    iBox += 200;    //ここ。
    TRACE( "%d\n", iBox );    
}

『４行目のとこ、+= になってるね』
「これで実行してみると、次のような感じになります」

100
300

『あ、３００になった！　へー、つまり１００＋２００ってことなんだ』
「逆の−＝ってのもあるよ」

void CCalcDlg::OnBEqual() 
{
    int iBox;
    iBox = 100;
    TRACE( "%d\n", iBox );
    iBox -= 200;
    TRACE( "%d\n", iBox );    
}

「どうなると思う？」
『そりゃ、１００と−１００でしょ』

100
-100

「そゆこと。ここまではどう？」
『バッチリって感じ！　って、こんなの小学生だってできるじゃない』
「そりゃそうだ、僕は小学生の時にマスターしてたし」
『うわむっか！　へーそりゃよーござんしたねー』
「つ、次はちょっと難しくなるから。今度は普通の＋を使ってみます」
『そういう普通のもあるんだ』

void CCalcDlg::OnBEqual() 
{
    int iBox;
    iBox = 100;
    TRACE( "%d\n", iBox );
    iBox + 200;    //ここ。
    TRACE( "%d\n", iBox );    
}

『あ、４行目が＋になった』
「さてこれはどうなるでしょー」
『そりゃ３００……って、それじゃ＋＝と同じよね。試してみよっと』

100
100

『変わってない！』
「というわけで、＋と＋＝は違うんだよね。この行をゆっくり見てみよう
か。まず……」

    iBox + 200;

『これはそのままよね』
「iBox には今１００が入ってるから、こういう意味になるよね」

    100 + 200;

『うんうん』
「＋は足し算をしてくれるから……」

    300;

「はい、これで終わり。どう？」
『……よーするにただ足しただけで、iBox の中に入れてないってこと？』
「そういうこと。だから、＋＝と同じことをするなら、こんなふうにしない
とダメなんだよね」

void CCalcDlg::OnBEqual() 
{
    int iBox;
    iBox = 100;
    TRACE( "%d\n", iBox );
    iBox = iBox + 200;
    TRACE( "%d\n", iBox );    
}

『うわー、なんか頭こんがらがりそう！』
「そう？　だって」

    iBox = iBox + 200;

「の＝の右っかわはさっきと同じなんだから」
『あ、てことは』

    iBox = 300;

『と同じ、で、 iBox に３００が入って、＋＝と同じになる、ってことなん
だ』
「分かってきた？」
『うん、よーするに分解して考えれば分かりやすい、ってことよね』
「うーん、どっちかってゆーと、そういう細かいパーツが組み合わさって、
プログラムができてるってことかな」
『じゃあどんなむつかしープログラムも、元はこんな簡単なのでできてるっ
てことなんだ』
「そうそう。だからあんまり難しく考えない方がいいかな」
『なーんだ、楽勝よね』
「でも難しい部分もあるんだなー」
『え”』
「僕の言ってたこと、なんか変だなってとこない？」
『うーん……』
「ヒントはこの行」

    iBox = iBox + 200;

「この行見て、なんか変だと思わない？」
『さっきは、まず iBox + 200 をしちゃって、そういうふうに分解できるっ
て……あ！　それ、なんで iBox = iBox を先にしないの？』
「そ！　これが難しいことのひとつ。こういう記号を＜演算子＞っていうん
だけど、この演算子には＜優先順位＞っていうのがあって、あらかじめ決め
られた順番で実行されるんだよ」
『？？』
「つまり、＋は＝よりも＜優先順位＞が高いから、＝より先に＋が実行され
るってこと」
『なーんか、まだよく分かんない』
「そうだねぇ、普通の計算でさ、１００＋２００ｘ１０＝ってあったら、答
は？」
『そりゃ２１００に……あ』
「普通の計算でもかけ算は先にする、ってあるでしょ。そういうのが＜優先
順位＞。それに今火美ちゃんが言ったことをこの式に当てはめると……」
『……１０が答えになっちゃうね』
「この順序は、実際の式とおんなじように小カッコを使うと変えられるから」

void CCalcDlg::OnBEqual() 
{
    int iBox;
    iBox = 100;
    TRACE( "%d\n", iBox );
    ( iBox = iBox ) + 200;
    TRACE( "%d\n", iBox );    
}

「これは？」
『これがさっきあたしの言ったのよね……小カッコの中が先に実行されるん
だよね』
「だから、iBox の中は１００のままってことだね」
『でも、なんか iBox をまた iBox に入れるのって変』
「これも分解して考えると分かりやすいよ？」
『あ……つまり、右側のを先に１００にしといて、それを左のに入れる、っ
てこと？』
「そういうこと。＝は＜右のを左に入れる＞だから、左側を１００に置き換
える、ってことはないからね。あと、＋以外の演算子も見ておこうか」

void CCalcDlg::OnBEqual() 
{
    int iBox;
    iBox = 100 / 10 + 20 * 10;
    TRACE( "%d\n", iBox );
}

『質問しつもーん！！』
「＊はｘで、／は÷だから」
『なんでなんでぇ！？』
「これは昔からの習慣なんだよね、昔はディスプレイの解像度が低かったか
ら、ちゃんとした＜かける＞を書くと＜エックス＞見分けがつかなかったん
だよね」
『低いってどんくらい？』
「えっとね……１５年前くらいで、３２０ｘ２００だって」
『うわ……』
「もっと昔はもっとすごかったみたいだし……。で、答は？」
『あ、えっと、かけざんわりざんを先にするから、じゅーたす……にひゃく
で２１０、かな』
「そ。これがさ、優先順位違ってたら困るでしょ」
『そりゃそうねー。こういうのって、計算機よりも便利そう』
「ってゆーか、最初のコンピューターは計算をするためのものだったからね」
『計算って、どんな？』
「たとえばさ、ある町から大砲撃って、ひとつ山越えた隣の町に当てるには
どんな角度でどんな威力で撃てばいいのか、みたいなことを計算してたわけ」
『それって……』
「そ、戦争ってことだね。相手より早く計算できれば先制攻撃できるってわ
けだね」
『だからコンピューターで計算……ねぇ』
「プログラミングにはそういう古いじめじめした所もある、ってところかな」


/*
    Preview Next Story!
*/
『今日は簡単だったね』
「これだけでもそれなりに使えるでしょ」
『とりあえず計算機代わりにはなりそ』
「でもこんくらいなら Excel 使った方が……」
『というわけで次回』
＜ Version 2.5 楽をしてみよう！ ＞
「につづく！！」
『でも＜アプリ＞って感じにはほど遠い感じ』
「一足飛びに教えていじけたのは誰だっけ？」
『う”〜』


/*            １９９９年７月１９日（月）の更新予定                */

・ナシです（泣）。
　何を隠そう鏑矢正伝は大学生なのです（泣）。だからテストとゆーものが
あるのですよ、ふふふ。テストは２７日まであるんでそれまで更新は期待し
ないでね。いちおー辞書くらいは更新できるかな……。あとテスト開けの
８月２日は新しい表紙。こっちも期待しててね。特に男子（爆）。



/*                        ご注意！！                        */
/*

　このメールマガジンをそのまま「返信」すると、作者のメールアドレス
（kab-studio@multimedia.design.co.jp）へと転送される仕組みになってい
ます。「まぐまぐ」もしくは「Ｐｕｂｚｉｎｅ」の管理者へメールを送りた
い場合には、直接そちらへメールを送ってください。

*/
/*

　このメールマガジンの購読登録を解除する場合には

http://www2.justnet.ne.jp/~kabstudio/Info/MailMagazine/

　が便利です。また、購読解除についての詳しい情報は、
登録時に送られてきた「まぐまぐ」もしくは「Ｐｕｂｚｉｎｅ」からの
メールをお読みください。

*/
/*

　本誌のバックナンバーはＫＡＢ−ｓｔｕｄｉｏにはありません。
　まぐまぐの

http://bigbeat.tegami.com/~mgsearch/frame.cgi?id=0000012198

　にありますのでそちらをどうぞ。

*/
/*
    KAB-studio.h
    Weekly Mail Magazine.
    Written by Kaburaya Seiden.

    (C)KAB-studio ALL RIGHTS RESERVED.
        http://www2.justnet.ne.jp/~kabstudio/
        kab-studio@multimedia.design.co.jp
*/


/*                    See you next week!!                    */


