#pragma twice

KAB-studio > プログラミング > #pragma twice > 263 Version 13.27 手作業撲滅!のつづき

#pragma twice 263 Version 13.27 手作業撲滅!のつづき

前のページへ 表紙・目次へ 次のページへ

 Version 13.27
手作業撲滅!のつづき

今回も引き続き、手作業を使わずにプログラムを組んでみます
前回はここまでだよね

    stTm.tm_year = 
    stTm.tm_mon  = 
    stTm.tm_mday = 
    stTm.tm_hour = 
    stTm.tm_min  = 
    stTm.tm_sec  = 

それでは、これから日時を作ります。これはまず

104
4
1
13
35
2

を作ります。これは場面毎にそれぞれ違うから
手作業が必要ね
でも、実際にはこうやって数字を書くよりも、何かの変数を渡すことの方
が多いと思います。変数がたとえば

    int iYear;
    int iMonth;
    int iDay;

みたいに入っていたら、これもブロック選択してコピペすればいいから
ホントに便利ね、ブロック選択って……
さて、今回の例ではこの数字を右詰にしてあります
それって意味あるの?
ないかも
ないんかい!
だから左詰にしてもいいんだけど、今回は例ってことで右詰にします。こ
の数値を使って

    TRACE( "% 4d\n", 104 );
    TRACE( "% 4d\n", 4   );
    TRACE( "% 4d\n", 1   );
    TRACE( "% 4d\n", 13  );
    TRACE( "% 4d\n", 35  );
    TRACE( "% 4d\n", 2   );

というプログラムを作って VC で実行します
……へ? プログラムを作るためにプログラムを作るの……? それって
本末転倒じゃない?
全然。たとえば、自動車工場で使われてるロボット、あるでしょ
あの腕だけのとか?
そうそう。その腕だけのロボットを、同じロボットが作ったりするんで

ロボットがロボットを作る……
プログラムを作るためのプログラムを作る、っていうととても大変な気が
するけど、実はそれが一番簡単、っていう場合も多いんです。そういうやり
方があるってことは憶えておいて
はーい
ちなみにこの TRACE() の中身は、ここまでのブロック選択と貼り付けで
できるはずだから
で、実行すると

 104
   4
   1
  13
  35
   2

になるってわけね
これをブロック選択してコピペすると

    stTm.tm_year =  104
    stTm.tm_mon  =    4
    stTm.tm_mday =    1
    stTm.tm_hour =   13
    stTm.tm_min  =   35
    stTm.tm_sec  =    2

になります
あとは、 ; とコメントね

; // 

を6行作ってブロック選択してコピペすればいいんでしょ
そのとおり!
って、ブロック選択ばっかやってたらそのくらいわかるもん
というわけで、ここはちょっと違う方法を使ってみます
違う方法なんてあるの?
あるんです。まずこの6行を選択して、それから【置換】を選びます
置換のダイアログが出た
【検索】に〈\n〉、【置換】に〈; // \n〉、【大文字/小文字の区別】
と【単語の検索】はオフに、【正規表現】はオンにして【全置換】すると
おおっ全部の行に ; // がついた!

    stTm.tm_year =  104; // 
    stTm.tm_mon  =    4; // 
    stTm.tm_mday =    1; // 
    stTm.tm_hour =   13; // 
    stTm.tm_min  =   35; // 
    stTm.tm_sec  =    2; // 

これは【正規表現】といって、使いこなせるようになるとすごく便利なも
ののひとつです
ぱっと見、そんなに難しそうじゃないけど…… \n って改行のことだよ

そう、〈\n〉が検索条件だから、この置換だと改行が〈; // \n〉に置き
換えられます。この置き換えた後の \n も改行だから
ちゃんと改行が入るわけね
でも、これは正規表現の中でも一番簡単なもの。使いこなすのはかなり大
変だから
どのくらい?
正規表現編だけで半年かかるくらい
うわ……
ま、それはまだ先ということで。さて、最後はコメントの右側。まずさっ
きの数を修正して

2004
5
1
13
35
2

これを TRACE() に掛ければスペースが入るから
これをブロック選択して

    stTm.tm_year =  104; // 2004
    stTm.tm_mon  =    4; //    5
    stTm.tm_mday =    1; //    1
    stTm.tm_hour =   13; //   13
    stTm.tm_min  =   35; //   35
    stTm.tm_sec  =    2; //    2

最後は年月日だけど
これは簡単だから手で打ってもいいかな。年月日時分秒、って打って1文
字ずつ改行を入れて
ブロック選択してコピペ、ね。これも手で打つって言っても、直に打つわ
けじゃないんだね
そこが結構重要かな。直に打つと面倒なことが多いし、使い回すのも難し
いしね
そっか、ひとつオリジナルがあれば……
そういうこと。では次は応用編

    const int JANUARY   = 0;
    const int FEBRUARY  = 1;
    const int MARCH     = 2;
    const int APRIL     = 3;
    const int MAY       = 4;
    const int JUNE      = 5;
    const int JULY      = 6;
    const int AUGUST    = 7;
    const int SEPTEMBER = 8;
    const int OCTOBER   = 9;
    const int NOVEMBER  = 10;
    const int DECEMBER  = 11;

を作ってみます
 Version 13.23 ( No.259 ) の月だね
これまで教えてきたブロック選択と正規表現置換だと、2箇所難しい部分
があります
 JANUARY とかの英単語と、あと並んでる数字だね
このふたつを手で打たないで作ってみます。まずは月の英単語から。これ
は、ネットで

january february month

を検索すれば、全部の月が並んでいるものがどこかしらから見つかると思
うよ
ネットでネタを探す……
実際にはこのプログラムそのものが落ちてる方がいいんだけど
うわ、手抜き!
労力が少ないに越したことはないからね。こういう例を見つけたら、秀丸
に貼り付けて1行ずつに並べれば
ブロック選択してコピペね。右端の数字は?
これもネットで検索するっていう手もあるけど、ここでは別の方法を紹介
します。 Excel を立ち上げて
マイクロソフトのエクセルのこと?
そう。その中の適当なセルに 0 を入れて、セルを囲む四角の右下を、 
Ctrl キーを押しながら下にドラッグすると
 1 、 2 、 3 って数字が出てきた!
 11 まで出して、それを秀丸に貼り付けてから
ブロック選択してコピペ、ねー
この並んだ数字、専門用語で【連番】って言うんだけど
れんばん、ね
これはよく使うから、 0 から 100 まで作って何かのメモに貼り付けてお
くといいかも
メモ?
そう、テキストファイルを作って、それをショートカットとかから簡単に
開けるようにしておいて、よく使う単語やプログラムをその中に書いてお
く、ってこと
はー、なんか生活の知恵っぽい TIPS だね
以上をまとめると、ブロック選択、正規表現、ネットの検索、プログラム
を作るためのプログラム、などなど、こういった細かいノウハウの積み重ね
と、ちょっとしたアイディアで
手作業は撲滅できる!
そういうこと!

/*
    Preview Next Story!
*/
なんかホントに生活の知恵ねー
まぁ実際、プログラミングはそういうのがほとんどなんだけど
……もしかして次回も?
次回も小ネタばかりです
というわけで次回
< Version 13.28 日付の比較 >
につづく!
あ、また日付に戻るんだ
でも小ネタばかり

 
del.icio.us 登録する
Yahoo!ブックマーク 詳細を表示 users
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
RSSに登録
del.icio.us 登録する
Yahoo!ブックマーク 詳細を表示 users
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
 
このページは、Visual C++ 6.0を用いた C++ 言語プログラミングの解説を行う#pragma twiceの一コンテンツです。
詳しい説明は#pragma twiceのトップページをご覧ください。