1.For Next文中でカウンタ変数をいじってしまう
初期の頃によく犯したミス
for i = 0 to 10
----
i=k
----
next i
などと途中でカウント変数 i を変えてしまう.
2.乱数系列が循環してしまう
碁石モデルの解析途中で,どうしてもサイズ−頻度分布のlog‐logプロットにある縞模様(つまり、サイズがばらつかずに特有の大きさに偏りが生じ
る)ができることに気づいた.これ数年前の合同大会の発表用の計算だったのでかなり焦ったが,乱数を多用していたのでその系列が繰り返すためではないかと気づいた。それで途中で
周期的に乱数の種の更新を行う(種は分,秒よりランダムに選ぶ)ことにして,解決した.乱数を多く使うプログラムでは要注意!
3.赤緯のプロットミス
星座早見の星図のオリオン座の3星の形がずっとおかしく,これはデータのバグだとここ10年思っていたが,今日プロットルーチンの初歩的なミスだと気づいた.下記にミスを列記する.
赤緯をファイルから読み取る部分でDCが赤緯
2770 DCH$=MID$(OP$,21, 3)
2780 DCM$=MID$(OP$,25, 2)
2790 DCS$=MID$(OP$,28, 2)
2800 DC=VAL(DCH$)+VAL(DCM$)/60+VAL(DCS$)/3600
というものだが正しくは
2770 DCH$=MID$(OP$,21, 3)
2780 DCM$=MID$(OP$,25, 2)
2790 DCS$=MID$(OP$,28, 2)
2792 if VAL(DCH$)<0 then 2810
2800 DC=VAL(DCH$)+VAL(DCM$)/60+VAL(DCS$)/3600: goto 2820
2810 DC=VAL(DCH$)-VAL(DCM$)/60-VAL(DCS$)/3600 '
big
bug!(2001.03/25)
でなければいけない.
星のデータは
132444 5 40 45.5 -1 56
34 0.000
0.00 1.77 -0.21 O9 +18 340s *
ここで赤緯は
-1 56 34なので分,秒には符号が及ん
でいないことに気づかなかったというお粗末.
さて震源のプロット方は大丈夫かな?
4.変数の定義型
−−しかし自宅でレンダリングするとなぜか四角い妙な領域が縁に現れる.一難去ってまた一難といつもの苦労.目を皿のようにリストを辿るがよくわからな
い.if〜elseのどこかに漏れがあるのか?あるいは実数,整数のくだらない型不一致か?(後日,これ結局,整数型で定義してた格子の定義変数を実数型にすることで回避された.staggard gridなので0.5格子の定義が出てくる
のを忘れていたお粗末!)
このあと,if文を検証.最初の条件文ではなく,代入された密度の配列変数で絵を書かせたところ,出てきましたバグが!やはり媒介変数表示のカージオイドがらみの部分がどうもうまく定義されてい
ないことが解った.これもっと簡単に楕円か半円で定義することに変更.まずはbug発見めでたし.
5.if分による塗り分け(なぜ塗り分けができないのだろ
う?)
プログラム歴,かれこれ15年になるのに未だにこんな
リストを書いてしまう私って−−−−−?
if (h[i][j]>0){
if (w[i][j]>16)
cl=1;
if (w[i][j]>12)
cl=2;
途中略
if (w[i][j]>-12)
cl=9;
if (w[i][j]>-16)
cl=10;
else
cl=14;}
else
cl=0;