howto

 


■主題:数字の羅列を人間が理解できる数字に直す


昨日はすっかり迦皇(かのん)と盛り上がった。
今日もその続きで迦皇(かのん)が来る。

名目は「ダイエットプログラム・マネジメント・プログラム・プログラム」略してDPMPPの作製のためだ。
萌華(もか)はそれよりも迦皇(かのん)と会えるだけでうれしかった。
話下手で会話の引き出しの少ない萌華(もか)にとってはDPMPPという尽きない話題があるだけでもありがたかった。

迦皇(かのん)が来るまでの間に萌華(もか)は部屋の片づけをした。
部屋から出たごみは見えないように縁側の下に隠した。

やっと何とか片付いたころ迦皇(かのん)がやってきた。


「すみません。散らかってますけど上がってください。」

迦皇(かのん)はあっけにとられた。
全体が青く光る大きなパソコンと、同じように青く光るキーボードとマウス。
そしてそこに接続され垂直にそびえたつ3台のモニター。
中央のモニターの手前で仰向けに置かれた4台目のモニター。

大量のファンが轟音を立てていた。

完全にヲタ系の空間だったガーン

畳の上に敷かれたカーペットにはどこまでも不釣り合いだ。
よく見ると、パソコンが置かれているテーブルは、いわゆる学習机で、椅子はレカロ風のリクライニングチェアという組み合わせでシュールな感じもした。

学習机の引き出しに貼り残された何年前のものか定かではない退色したプリキュアのシールがここで萌華(もか)が育ったことを語っていた。

その空間のすぐわきに明らかに食卓から持ってきたとわかるダイニングチェアがあった。

「萌華(もか)さんのパソコンすごいですねびっくり

以前、萌華(もか)の部屋にちょっとだけ入ったことのある迦皇(かのん)は今日初めてパソコンが動いているところを見たのだ。

「そんなことないです。ゲームヲタとしてはまだまだ序の口です笑い泣き

「そうですか・・・汗すでに大関級のような気がしますが・・・。」

「何ですか!!それは!!

「じゃあ、早速始めましょうか。」

「はい。このパソコン使ってくださいニコニコ

「ちょ、ちょっと画面がすごすぎて・・・。まだ設計段階なので紙で行きましょう。1桁~8桁で入力された数字を日付に見えるように加工しましょう。」

「はい。」

「とりあえず、入力された値が数値かどうか判定して、飛んできたさきからということにしましょう。」

「よくわからないですけど・・・。」

迦皇(かのん)はパソコンは使わないと言ったのにパソコンに入力を始めた。

 

Function CreateDateSerial( SourceDate As Variant, PastFlag As Boolean) As Long

    Dim RevisedDateSerial As Long

    If Nz( SourceDate, 0) = 0 Then    '未入力の時
        CreateDateValue = -1001
        Exit Function
    End If

    If IsNumeric( SourceDate) Then    '数字だけで入力された時

        RevisedDateSerial = CreateDateSerialNumeric( Val( SourceDate), PastFlag)

    Else    '区切り文字といっしょに入力された時

   End If

    CreateDateSerial = RevisedDateSerial

End Function


Private Function CreateDateSerialNumeric( SourceValue as Double, PastFlag As Boolean) As Long

End Function

 

「なんか本格的な感じがしますね。」

「そうですかニヤリ序の口ですよ。」

「いえ、すでに大関級です。」

萌華(もか)は迦皇(かのん)がネタ返しするのを期待しているだろうと感じ、期待通りの答えを返した。


「じゃあ、一つ一つ考えていきましょうか。ここは日付を20210101のように数字で入力したときを前提とします。」

「スラッシュとかはダメなんですかはてなマーク

「そうではないです。さっき書いた短いプログラムで入力された値が数字かどうかを判定しているので、ここでの処理は数字であることが前提です。」

「なるほど。」

「数字出来た値を加工するのに最初にやらないといけないことはというと・・・小数の判定です。」

「えっはてなマーク

「例えば、『12.31』って入力したとしたら意味はなんですかはてなマーク

「12月31日です。」

「そうですね。では1231って入力したらどうですか?」

「同じ12月31日です。」

「そうですね。では12.1って入力したらどうですかはてなマーク

「12月1日です。」

「ですよね。なら12.01って入力したらどうなりますかはてなマーク

「これも12月1日です。」

「でしょはてなマークもちろん1201も12月1日ですよね。」

「はい。」

「これが数字なのか、日付なのかってなんで分かるんですかはてなマーク

「う~ん。なんとなく。」

「なんとなくはてなマーク

「何となくわかるだけです。」

「ですよね。でもコンピュータは空気を読むとかできないですから、これらを教えてあげないといけないですニコニコ

「そうなんですか。」

「じゃあ、1240はどうですかはてなマーク

「えっ、これは日付じゃないですえー

「そうですね。日付のはずがないですね。12月40日とかありえないですものね。」

「そうですよ。でも入力間違いってこともありますよね。」

「確かにそうです。ってことで、どういう状態だったら日付とみなし、どうなら日付じゃないとみなすかきちんと整理しないといけないです。」

「日付を入力するだけなのに結構大変なんですね。」

「そうですよ。でもこれは昨日萌華(もか)さんと決めた日付入力の部分の初めの一歩ですよ。この先まだ、スラッシュとかで区切られた時はどうするかとかいろいろあるんですから。」

「そうなんですかガーン

「だからまだまだ序の口だって・・・」

「あ~、水判土(みずはた)さん、ひど~いえーんまた私に大関って言わせようとしてるでしょうパンチ!

「バレましたはてなマーク

「バレバレですえー

ヒミツ天からのAbooの囁きヒミツ

このプログラムを一から全部解説してたらこれだけでエラいことになることなることに気付いてしまいました。
ここってプログラミングのブログじゃなくてダイエットのブログですからプログラム解説をし過ぎるのも変だと思えて仕方ないです。
気が向いたらいつか完成品のソースを一挙公開するとして、適当なところで切り上げることにしましょう。
っていうか早速切り上げるつもり満々ですけど・・・。


そんなこんなで会話がどんどん進んだ。

話はやがて「1.1」で1月1日と認識されるようにするところに差し掛かった。

 

If SourceValue - Fix( SourceValue) <> 0 Then   '少数の時
    If SourceValue * 10 - Fix( SourceValue * 10) = 0 Then    '少数第1位までの時
        If SourceValue * 100 - Fix( SourceValue * 100) = 0 Then    '少数第2位までの時

        Else
            'エラー -1002 日付ではない
        End If
    End If
End If


迦皇(かのん)はこんな感じのものをいきなり書き出した。

「あっビックリマークIfがいっぱいラブプログラムっぽいニコニコ

「そうですか・・・本当はIfは避けたいです・・・汗

迦皇(かのん)は新たにResultValueを長整数で宣言した。

 

Dim ResultValue As Long

 

そして小数第1位までの時のところに続けて書いた。

 

ResultValue = SourceValue * 100

ResultValue = ResultValue Mod 100 - ResultValue Mod 100 / 10 * 9

 

MODは割り算の余りを表す演算子である。
例えば「10 Mod 3」とやると10÷3の余りである1が返ってくる。

この変数SourceValueの下2桁は10,20,30,40,50,60,70,80,90のいずれかである。
この前段のプログラムでそうならないものは処理対象ではないからだ。

Mod部分は見づらいので具体的な計算部分だけに整理するとこうなる

値が10の時

10 - ((10 / 10) * 9) = 1

同様に20の時

20 - ((20 / 10) * 9) = 2



というように十の位が0になって、十の位の値が一の位に移動するのだ。

ヒミツ天からのAbooの囁きヒミツ

この仕組みを知っている人にとっては何でもないことですが、知らない人が見るとなんだかわかりません。
ネタとして話をするのにはよいですが、実際の開発の現場では嫌われます。
可読性が悪いとか言われるのです。
でも、自分専用のプログラムならこういった小技を交えてみるのも楽しいものです。


迦皇(かのん)はノートに10~90までを書き出し、萌華(もか)に計算をさせた。

「すごいです!!水判土(みずはた)さんってプログラムの天才ですラブ

「いえ、これはプログラム関係ないですけど・・・汗

ヒミツ天からのAbooの囁きヒミツ

が~ん。
ダイエットに絡めたことを何一つ書けないままここまで来てしまいました。
忘れていたわけではないんですけど・・・。
次回からはダイエットネタの仕込みと合わせてちゃんとできるようにしていきましょう。
でも何か嫌な予感しかしてこなくなってきた・・・。


To Be Continued...

 

 

howto

■登場人物紹介■


浦埼 美咲 (うらさき みさき)
主人公28歳。独身。彼氏あり。
恵比寿のアパレルメーカー(エンジェルスシンジケート)でネットやカタログ向けの画像加工を行う部署でお仕事中。
自宅は大都会埼玉の大宮駅から少し先のJRの駅からすぐのところに家賃8万円の1LDKに乗り換えなしで職場に通えるというだけの理由で一人暮らし。
性格は周りから周りからちょっとちやほやされてみたい気もするけど、目立つのは苦手という結構ありがちなタイプ。
案外見栄っ張りな一面もある。


大関 萌華(おおぜき もか)
美咲と同じエンジェルスシンジケートで経理課に勤める。
Hカップの巨乳の持ち主といえば聞こえがよいが、肥満の家系に生まれ育つ。
子供のころのあだ名は横綱。
コルセットで急にカッコよくなった美咲にいち早く気づきコルセットダイエットを決意する。
美咲と同じ電車で通勤している。
美咲より数駅遠い町で祖父母と両親、兄3人と暮らす。


本庄 歓波(ほんじょう わいは)
エンジェルスシンジケートの珍入社員でどこまでも問題児。
自分の気に入ったものにはとことん固執するのにそれ以外はとことんずぼら。
早合点で超短絡思考でおバカを絵にかいたよう。
自分勝手な性格と誤解されやすく取りつきづらいイメージを持たれ孤立しがち。
しかし本当は・・・。


岩槻 陽菜
23歳。
美咲の勤める会社で派遣社員をしている。
社内ではかなりイケているルックスの持ち主。
美咲は彼氏さんの「陽菜ちゃんってかわいいよね」の一言でやきもち持ちを焼いたことから、勝手に美のライバル視している。
陽菜本人はどう思っているかは定かではない。
というかまだ未設定。


阿倍 沃(あべ よう) 商品開発部長
会社で一番の美人で、モデルもこなし、仕事もできる。
社長の愛人という根の葉もない噂もある。
女子社員は陰で「倍沃」(べよう)と呼んでいる。
本人はそれに気づいているが、そのことはまんざらでもないらしい。
なぜなら倍沃(べよう)はコルセットダイエットの一番人気のバーヴォーグ(Burvogue)の漢字名だからである。
そして今では美咲にとってのコルセットの師匠でもある。


戸田 由喜枝
正社員なのになぜか不定期出勤で誰もが一目置く存在。
ミシンの達人であっという間にあらゆる服のお直しをしてしまう。
ミステリアスな存在である。


秋ヶ瀬 翔太
美咲の彼氏で同僚。
お人好しで頼まれたら断れない性格。
美咲にだけはなぜかやたら強気。
それ以外は未設定。


水判土 迦皇(みずはた かのん)
元フリーのSE。
萌華(もか)の兄の塁の友達の弟。
萌華(もか)が片思いを寄せている。
須賀谷メロ、森掛(もりかけ)桜、倍賞泉花(せんか)


WEB営業部WEB企画課の三人組
リーダー格で意地悪な須賀谷メロ
嘘付きの森掛(もりかけ)
強欲の倍賞泉花(せんか)
社内ではいわゆる腫物だが、本人たちは・・・


神園社長
美咲が務める会社(エンジェルスシンジケート)の社長。
高校生の娘がいる。


妻沼WEB営業課課長
美咲の直属の上司風。
課付きの課長なので実際には部下はいない。
理屈っぽく行動力はない。
ハゲデブで脂ぎっている


川里経理課長
萌華(もか)の直属の上司。
寡黙でなんでも他人事の態度。
貧相なガリガリ出っ歯。


大関一家(年齢順)
 祖父:寅(とら)
 祖母:桂(かつら)
 父 :健人(けんと)
 母 :貴理子(きりこ)
 長男:塁(るい)
 次男:コナン
 三男:三斗(さんと)
 長女:萌華(もか)


トリサミットソン社(やしろ)先生
旧姓は小川。
両親が経営する白蓮総合病院の内科医。
ダイエット外来を担当している。
大関一家に毎週土曜日ダイエットレクチャーを実施。


■作者紹介


)プロクビレイター(Abooです。
世界中のウエストを『くびれ』させることが野望のプロのクビレイターです。
クビレイトに欠かせないものといえばコルセット!!
コルセットで肋骨を引き締めることでアンダーバストからヒップにかけて整形級のボディラインを作っちゃおうっていう痩身術です。
世間ではコルセットダイエットなんて呼ばれています。


 

howto

 

おすすめコルセット!!

 

コルセットダイエットといえば
バーヴォーグ(Burvogue)!

コルセット再始動!
Feelingirl(フィーリンガール)

howto