質問<3727>2008/5/17
from=カレー
「数列・コンピュータ」


a_1=1, a_2=1,  a_n+2=a_n+1 + a_n  (n=1,2,3,・・・)で定まる数列{a_n}を第20項まで出力するプログラムを作成せよ。
プログラム分かりません。BASICでお願いします。schemeでの解説は、難しくて分かりませんでした。プログラム難しいです。

★希望★完全解答★

お便り2008/5/19
from=亀田馬志


ああ、その通信教育制大学って確か、
十進BASIC、Pascal、C言語、Fortranの4つの中から選ぶんでしたっけ?

写真①:               写真②:
 

何回も高校数学の窓で見かけた問題が入ってますね・・・・・・。
こんな感じでしょ?まあ、問題そのものは違うワケですが。
(試験問題だそうですけど)

>プログラム分かりません。
>プログラム難しいです。

とは言っても、恐らくこれって「数学教員免許取得コース」の問題で・・・・・・。
いや、将来数学教師になりたい、って人がさすがに「分かりません」と問題丸投げするのは
マズいんじゃないですかね?大丈夫なんか?

BASIC特有の問題に付いては質問3700に解説してあります。
いずれにせよ、BASICは方言がキビしいので、一般的な話は書けません。
そして、全く他の言語に対して発展/転用出来ない考えを押し付ける方言なんて使って
議論したって実用性/応用性共に欠けますし、フツーの高校生やフツーの大学生の為の
投稿にもならないのです。
ちなみに、亀田はどうせ使うなら子供だましのモノじゃなくって、
ほぼ恒久的に付き合える「至上最強の」ツールを最初から使うべきだ、と言う信念があります。
プログラミング言語にせよしかり、数学ツールにせよしかり、です。
そう言う事が分かってない辺り、単に「レポート提出の為だけ」と見なされますし、
それは意欲が無い以上「学習」じゃないです。
また、他人のレポート作成の為だけ、にコードを書く気もありません。バカバカしくって。

そこで一応、折衷案としてVBSで雛形提示しておきます。
某通信教育制大学用に十進BASIC(が指定教材だと思うんですが)に翻訳するくらいは
ご自分でやってください。
そして、それくらい自分で出来ないとお話にならないでしょう。
何せ同じBASIC語族なんですから。
できないのなら「全く勉強していない」って事です。
いさぎよく落第しましょう。

'''ここからVBSソース

n = 0
a = 1
b = 1

do while n < 20
n = n + 1
ls = ls & a & " "
c = b
d = a + b
a = c
b = d
loop

msgbox ls

'''ここまで

一旦、<質問3700>の指示に従って、WindowsのVBSで走らせてみてください。
そしてどんな風に動くか試してみる。
その後、十進BASICに上記のソースをコピペする事からはじめ、
通信教育制大学の「コンピュータ」のテキストを参照して、
どこの構文が同じでどこが違うのか?
上手く動くまで修正/改造していってください。
そうでもしないと、いつまで経っても「分からないまま」です。

ちなみに、上のソースはVBSで上手く動きますが、
問題の数学的な題意から言うと人為的な間違いを「わざと」含ませています。
上手く動くが与式に的確には沿っていない。
それも「頑張って」見つけて修正してください(笑)。

以上です。


お便り2008/5/21
from=nnls


数列{a_n} を第20項まで出力する十進BASICのプログラムの一例です。
   
  LET a=1
LET b=1
PRINT a
PRINT b
FOR k=3 TO 20
   LET b=a+b
   LET a=b-a
   PRINT b
NEXT k
END
   
  ----------------------------------------------------------------
  
(別解) 配列を用いて次のように書いてもいいと思います。
   
  DIM A(1 TO 20)
LET A(1)=1
LET A(2)=1
FOR k=1 TO 18
   LET A(k+2)=A(k+1)+A(k)
NEXT k
FOR k=1 TO 20
   PRINT A(k)
NEXT k 
END