2

簡単にするために、Smallbasic にはグローバル変数しかありません。ローカルまたはパラメーターはありません。

これにより、教育や学習が簡単になりますが、再帰関数などのいくつかの問題も複雑になります。smallbasic で単純な再帰関数を作成するのに苦労し、手動スタックを使用する必要がありました。これは機能しますが、より複雑になり、シンプルさという最初の主な目標と矛盾します!

これは階乗を書く方法です:

n = 5
ind = 1
fact()
TextWindow.WriteLine("fact(5)=" + f)

Sub fact
  If n = 1 Then
    f = 1
  Else
    ind = ind+1
    keepn[ind] = n
    n = n-1
    fact()
    f = f * keepn[ind]
    ind = ind-1
  EndIf
EndSub

注:今書いたばかりで、エラーがある可能性があります。
写真をご覧ください。私は手動でスタックを作成し、それを使用してローカル変数をシミュレートし、再帰に使用しています。

この再帰関数を作成する簡単な方法はありますか?

4

2 に答える 2

2

SmallBasic で再帰関数を記述するには、グローバル変数に頼る必要があると思います。

SmallBasic の関数引数の欠如は非常に制限的であり、多くの場合、単純であると思われるプログラミング言語を実際に使用するのが非常に複雑になることに同意します。

ただし、SmallBasic のライブラリは初心者に最適で、WinForms や WPF などのエンタープライズ フレームワークよりもはるかに簡単に画面に表示できます。ライブラリ SmallBasicLibrary.dll は、VB.Net、C#、F# などの他の .Net 言語に簡単にロードできます。コンソール アプリケーションを作成し、ライブラリへの参照を追加してから、Library 名前空間に対して import/using/open を使用するだけです。

子供たちにプログラミングを教えている間、私は SmallBasic から始めました。彼らは Turtle の機能を気に入っていましたが、すぐに F# に切り替えました。F# は、関数のファーストクラスのサポートを備えており、VB.Net や C# と比較するとはるかに形式的ではありません。public static void Main「Hello World」を印刷する前に 7 歳の人に説明しなければならないというのは、私にとって魅力的な選択肢ではありませんでした。

実験として、関数の引数タプル、およびパターン マッチングのサポートが含まれているので、興味深いと思われる代替のSmallBasic コンパイラの実装も作成しました。

于 2014-08-18T17:33:51.233 に答える
1

このように再帰関数を作成すること、つまりスタックを使用してグローバル変数のみを使用することは、それ自体が非常に教育的であることは注目に値すると思います。これは組み立ての仕組みに近いので、その観点からこのようにする必要があるのは実際には機能と見なすことができます...

于 2016-02-08T19:22:17.657 に答える