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 日付の比較 >
「につづく!」
『あ、また日付に戻るんだ』
「でも小ネタばかり」
『む』