2: 2010-07-11 (日) 11:02:36 HOSINO[6] [7] | 現: 2024-01-08 (月) 12:58:43 lina[8] [9] | ||
---|---|---|---|
Line 11: | Line 11: | ||
結論から言えば、私がこれを投げ出すと、グループで研究が出来ない事になるので、きっと今回は意地でも完成させます。~ | 結論から言えば、私がこれを投げ出すと、グループで研究が出来ない事になるので、きっと今回は意地でも完成させます。~ | ||
*具体的な話 [#x12104e6] | *具体的な話 [#x12104e6] | ||
- | **当面の目標 [#n8a8dd5a] | + | **現在の状況 [#j6731118] |
- | とりあえずは、インタプリタの骨格を作ってしまって後はどんどん機能を足していけばいいようにしてしまいたいです。~ | + | basicインタプリタそのものを書かなくとも、桁数の大きい計算が可能な言語へのトランスレータを書けばいいじゃないか、といった手抜き策を思い付き、色々と調べ、試してみましたがなかなか難しいのでやはりインタプリタを書くという当初の方針に戻ってきました。~ |
- | 方針としては、中間コード方式を採用したいと思います。~ | + | 現在は「当面の目標」として挙げていた「100 END」が実行できる、ぐらいの機能しかありません。~ |
- | 骨格づくりの為に、以下のソースを実行できるようにしたいです。~ | + | ただ、実験の協力(指導?)に当たっていただく大学への中間報告が今月中なので、本腰を入れていきたいと思います。~ |
- | 100 END | + | いくらなんでも「実験をするための開発環境すらほとんど整っていません」というわけにもいかないので…。~ |
+ | 高校に一人でもプログラミングが出来る先生がいたらなぁ、と思う今日この頃です。~ | ||
+ | |||
+ | **課題 [#k3aa9a78] | ||
+ | 構想を練りつつふと困ったことに気がつきました。~ | ||
+ | たとえば、縦10マス、横10マスの計100マスのマップに10個の爆弾を配置するとします。~ | ||
+ | 点対称や線対称の事を考えないとすると、そのパターンは、(100*99*98*97*96*95*94*93*92*91)/(10*9*8*7*6*5*4*3*2*1)=17310309456440通りにもなります。~ | ||
+ | つまり、これから作るbasicはかなり大きな数を扱えないといけないようです。~ | ||
+ | さらに、よくよく教科書を読んでみると、basicは小数を標準で扱え、割り算の答えは標準で小数で返ってくるようです。~ | ||
+ | 当初は軽い気持ちで作ってしまえ、と思いましたが、案外大変そうです。~ | ||
+ | |||
+ | 結局、配列の複数の要素で一つの変数を表すことに決めました。~ | ||
+ | つまり、変数を3桁づつに区切り、それぞれを順番に配列に入れようと思います。~ | ||
+ | 変数の計算は、筆算の要領で何とか切り抜けられそうです。~ | ||
+ | (ただ、割り算だけはかなりめんどくさい事になりそうです。)~ | ||
+ | 小数点以下についても、この仕様の影響で3桁までしか扱えない事にします。~ | ||
+ | |||
+ | *その他の話 [#s902776f] | ||
+ | **自作したプログラムの信用度について [#s74c33ee] | ||
+ | 今回の実験では、自作したbasicの上でみんなで作った実験用プログラムを動かして結果を得るという計画なのですが、実験に当たって自作したプログラムの確実性はどうやって証明するのでしょう?~ | ||
+ | 当然、出力されたデータは信じるしかないと思いますが、プログラムにバグがあって出力されたデータがおかしかった場合、研究そのものの意味が無くなるような気がするのですが…。~ | ||
+ | 高校生の遊び程度のプログラムならそんなことは一切気にしませんが、どうやら今回は研究の最期にちょっとした論文のようなものを協力してもらう大学に提出しないといけないようです。~ | ||
+ | 決して大学生が書くような論文ではありませんが、一般的に研究で用いたプログラムにバグが無い事をどのようにして証明しているのか、どなたかご存知でしたら是非お教えください。 |
(This host) = http://osask.net