#pragma twice

KAB-studio > プログラミング > #pragma twice > 262 Version 13.26 手作業撲滅!

#pragma twice 262 Version 13.26 手作業撲滅!

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

 Version 13.26
手作業撲滅!

今回はちょっと横道にそれてみます
てさぎょうぼくめつ……?
そうです。プログラムは、基本的に次の3つの構造の組み合わせでできて
います

・一覧形式
・流れ形式
・繰り返し形式

【一覧形式】は、まとまった複数の情報それぞれの処理をすること。ただ
し、順番には関係ない場合を差します。たとえば

    // 各データをセット。
    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 秒

というように、いっぱいあるデータを入れる場合とか
 Version 13.24 ( No.260 ) の例ね
次に【流れ形式】。決まった順番通りに処理をしていくこと。たとえば

1. time() → localtime() → 日時セット → mktime()

という流れ。この流れは入れ替えられないから
これもさっきと同じ回の例ね
最後は【繰り返し形式】。上のふたつを for や while でループさせるこ

これはそのまんまね
さて、たとえば

localtime() → mktime() → localtime() → mktime() 

という処理があるとします
流れ形式だね。あ、同じのがふたつくっついてる……
こういう場合、 for ループで繰り返しできるでしょ
できるね。あ、【繰り返し形式】になる!
そういうこと。つまり、【一覧形式】や【流れ形式】は【繰り返し形式】
に置き換えることができない場合のことを差します。もしループで処理でき
るなら
【繰り返し形式】にしちゃえばいいってことね
そういうこと。そうすれば、プログラムの量が減るから、修正や改変が楽
になるし、プログラムも見やすくなります
その方がいいプログラム、ってことね
さて、できる限り【繰り返し形式】を使って修正した場合、プログラムは
【一覧形式】と【流れ形式】のみになります
うん
このうち、【流れ形式】は本当の意味での【プログラム】なので、これ以
上簡単にはできません。だから、プログラムを組む、ってことは、この
【流れ形式】のコーディングをする、っていうことだと思ってください
確かに、劇とかのプログラムって言ったらこういうことだもんね
で、最後に残った【一覧形式】だけど、実はこれが非常に重要なんです
重要? なんかすごくつまんないとこだと思うんだけど
そう思うのが実は問題なんです。この【一覧形式】の箇所は、こつこつ
コーディングするしかない、と思いがちです
そうじゃないの?
そうじゃないんです。コーディングやコピペだけだと無駄に時間が掛かる
箇所も、ちょっとしたテクニックを使うことであっという間に作ることがで
きるんです
こつこつがさくっと……
そう。だから今回は【手作業撲滅】なんです
手作業でこつこつコーディングするのはやめにしよう、ってことね
そういうこと。それでは、具体的な説明をします……が、そのまえに、今
回は VC ではなく【秀丸エディタ】を使用して説明します
え? 秀丸? あのシェアウェアのテキストエディタだよね
そうです。 VC だと VC 使う時しか使えないけど、秀丸エディタならどん
な場面でも大丈夫だから。それに
それに?
 VC は機能的にいまいちだから……
そうなんだ……
秀丸エディタのインストールと使い方については皆さんの方でお願いしま

試用だけならタダだしね
それと【ファイルタイプ別の設定】で、フォントを MS ゴシックなどの
【非プロポーショナルフォント】にしておいてください
これしないとだめなの?
ダメなんです。あとで説明する【ブロック選択】ができなくなるから。さ
て、準備ができたら、まずはさっきの tm 構造体を例に作ってみましょう

    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行下がって左から右へ、って続くけど、この方法だと
縦に1列ずつ作っていくことになります
縦!!? どうやって?
というわけで実際にしてみましょう。まず

    stTm.

を用意して、これを6行コピペします

    stTm.
    stTm.
    stTm.
    stTm.
    stTm.
    stTm.

普通ね
次に、 MSDN の localtime() のリファレンスから tm 構造体の部分をコ
ピーして、別のテキストファイルに貼り付けます

tm_sec

    秒 (0 - 59) 

tm_min

    分 (0 - 59) 
// 以下略

ここから必要な情報だけ抜き出します

tm_year
tm_mon
tm_mday
tm_hour
tm_min
tm_sec

これだけは手作業でしなきゃいけないかな。並び替えが必要だから
そのくらいなら全然いーけど
ちなみにちょっと反則だけど、この例を使うっていうのもあります
……へ?
つまりここに書いてあるものをそのまま使う、ってこと
……でも、それを作るのが目的なんだから……
うん、だから反則。反則じゃないとすれば、他のホームページとか
あ、そっか、似たような感じでこういうのがあれば
そう、そのまま使えるでしょ。ホームーページにあるものを使うっていう
のは結構便利だから憶えておいて
はーい
それでは、これを【ブロック選択】してコピーします
ぶろっくせんたく?
 Ctrl キーか Alt キーを押しながら、左上から右下へ選択してみて
ほい。あ、なんか四角く選択されてる!
普通の選択だと行単位で選択されるんだけど、このブロック選択を使うと
縦に選択できるんです
おお
ちなみに VC でも Alt キーを押しながら選択するとこのブロック選択に
なります
じゃあ VC でもいいじゃん
でも貼り付ける時の性質がちょっと違うんです。たとえば、今コピーした
ものを貼り付ける場合

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

となります。ここに次に = を貼り付けるわけだけど、ここが VC と秀丸
エディタの違うところ。まず








を作ります。後ろにスペースが入ってるから注意してね
あ、ホントだ
次にこれをブロック選択して、 stTm.tm_year の右にスペースひとつ入れ
てから貼り付けると

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

と、他の行にも自動的にスペースを入れてくれるんです
 VC だと全部詰められちゃうね……
この機能が便利だから秀丸の方が楽かな。ブロック選択はとにかく便利だ
から、どんどん使って慣れておいてください
はーい
というわけで次回に続く!

/*
    Preview Next Story!
*/
なんか今回、すっごく実用的!
その割にはあまり広まっていないみたいだから
教えてくれるってわけね、へー
こういうのはまず真っ先に身につけた方がいいかな
簡単だしねー
ブロック選択だけならね
へ?
というわけで次回
< Version 13.27 手作業撲滅!のつづき >
につづく!
来週はプログラムと正規表現について
せいきひょうげん? いやらしー
ちっ、ちがうからっ!
 
del.icio.us 登録する
Yahoo!ブックマーク 詳細を表示 users
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
RSSに登録
del.icio.us 登録する
Yahoo!ブックマーク 詳細を表示 users
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
 
このページは、Visual C++ 6.0を用いた C++ 言語プログラミングの解説を行う#pragma twiceの一コンテンツです。
詳しい説明は#pragma twiceのトップページをご覧ください。