今、gnakoを使って少し大きめのアプリ書いてるんですが…。
gnakoの問題点が色々分かって、やっぱりGUIのエディタは
別のモノを使ったほうがいいんじゃないかと。通信DLLは
大体出来てるので、この辺り片付けたら、次はWinAPIを
もうちょっとダイレクトに触れるDLLなりexeなり作ろうかなあ。
さて、今回は「少し大きめのアプリ」でも使ってるカレンダー
機能のお話し。なでしこのくみこみ関数使ってある程度は
できるんですが、GUI用に使うならこれぐらいは欲しいかなあ
と言う部分を補完。
------ここから------
■GRP年月日
・{整数}年
・{整数}月
・{整数}日数
・日
・日数設定~
日数=月日数判断(年、月)
・曜日設定~
日数回
年月日=「{年}」&「/」&「{月}」&「/」&「{回数}」
日\回数=年月日の曜日
●二月日数判断(Yの)
もしYを4で割った余り=0ならば
もしYを100で割った余り=0ならば
もしYを400で割った余り=0ならば
日数=29
違えば
日数=28
違えば
日数=29
違えば
日数=28
日数で戻る
●月日数判断(Y、M)
Mで条件分岐
1ならば
日数=31
2ならば
日数=Yの二月日数判断
3ならば
日数=31
4ならば
日数=30
5ならば
日数=31
6ならば
日数=30
7ならば
日数=31
8ならば
日数=31
9ならば
日数=30
10ならば
日数=31
11ならば
日数=30
12ならば
日数=31
違えば
日数=0
日数で戻る
------ここまで------
こんなもんでしょうか。「■GRP年月日」がカレンダー情報を
保持していて、要素「日」は配列です。「年」と「月」を設定して
「日数設定」メソッドと、「曜日設定」メソッドを呼べば、「日数」
にその月が何日あるかと、「日」にそれぞれの日が何曜日か
を代入します。「日」は配列の添え字(0~)が日(1~)に対応
してます。
アルゴリズム的にはC言語とそんなに変わらない感じ。なでしこは
グループ昨日を使いこなしていけばそこそこ複雑なことも出きる
ので、「なでしこでアルゴリズム」みたいな本があれば面白いのに
なあ。