Microsoft Developer Network > Domovská stránka fór > Small Basic > This might be a good extension..
Odeslat dotazOdeslat dotaz
 

OdpovědětThis might be a good extension..

  • 3. července 2009 9:43Ron Hudson Uživatelské medaileUživatelské medaileUživatelské medaileUživatelské medaileUživatelské medaile
     
    How about a "plot" extension.

    It initializes a window.

    You can tell it the size and range of the x and y axis. You can also specify labels for the axises.
    For example if you are plotting a sine function, perhaps you want the coordinates on the x axis to
    run from - 2*pi to 2*pi, and the y axis perhaps should run from -1.5 to 1.5

    plot.xaxis(-6.28, 6.28, "Sine", "Ticks")
    plot.yaxis(-1.5, 1.5, "", "NoTicks)

    for x = -6.28 to 6.28 step .1
        plot.point(x,math.sin(x))
    endfor

    This would generate a nice sine plot with 2 axises.

    This is not exactly like the graphics.window because it is self-scaling, It simplifies
    plotting for the user.

    The inspiration for this is the plotting routines for the HP87 computer.

Odpovědi

  • 3. července 2009 20:01FremyCompanyPřispěvatelUživatelské medaileUživatelské medaileUživatelské medaileUživatelské medaileUživatelské medaile
     Odpovědět
    This looks like a good project to write in SmallBasic rather than having it done by new commands; the purpose of SB is to learn programming using a small set of easily remembered commands rather than using a large menu of high level functions.  You could write some subroutines that use an array of x,y data, work out the limits of the data and generate an appropriately scaled plot (converting data coordinates to pixels) with labels etc within a defined region of the GraphicsWindow.
    I agree with you, here. Small Basic should not provide tons of functions, but let them be wrotten by users. This is the intent.
    Small Basic should only provide functions that could otherwhise not be wrotten in Small Basic by a beginner.

    A small thing that would help in this situation is implementing C#/VB.NET-like extension. With those languages, you can extend objects.

    I propose a syntax like :

        Sub Plot.DrawCurve(data) ' This is a sub like any other, except that it seems to be in a "Plot" namespace in the intellisense.
            DrawCurve_X = 0
            DrawCurve_LastPoint = ""
            DrawCurve_CurrentPoint = ""
            While (data[DrawCurve_X]["X"] <> "") And (data[DrawCurve_X]["Y"] <> "")
               DrawCurve_LastPoint = DrawCurve_CurrentPoint
               DrawCurve_CurrentPoint = data[DrawCurve_X]
               ' ...
               ' Do something with the point
               ' ...
            EndWhile
        EndSub

        curve1[0]["X"] = ...
        curve1[0]["Y"] = ...
        ...
        
        Plot.DrawCurve(curve1)
    Fremy - Developer in VB.NET, C# and JScript ... - Feel free to try my extension

Všechny reakce

  • 3. července 2009 18:35litdevPřispěvatelUživatelské medaileUživatelské medaileUživatelské medaileUživatelské medaileUživatelské medaile
     
    This looks like a good project to write in SmallBasic rather than having it done by new commands; the purpose of SB is to learn programming using a small set of easily remembered commands rather than using a large menu of high level functions.  You could write some subroutines that use an array of x,y data, work out the limits of the data and generate an appropriately scaled plot (converting data coordinates to pixels) with labels etc within a defined region of the GraphicsWindow.
  • 3. července 2009 20:01FremyCompanyPřispěvatelUživatelské medaileUživatelské medaileUživatelské medaileUživatelské medaileUživatelské medaile
     Odpovědět
    This looks like a good project to write in SmallBasic rather than having it done by new commands; the purpose of SB is to learn programming using a small set of easily remembered commands rather than using a large menu of high level functions.  You could write some subroutines that use an array of x,y data, work out the limits of the data and generate an appropriately scaled plot (converting data coordinates to pixels) with labels etc within a defined region of the GraphicsWindow.
    I agree with you, here. Small Basic should not provide tons of functions, but let them be wrotten by users. This is the intent.
    Small Basic should only provide functions that could otherwhise not be wrotten in Small Basic by a beginner.

    A small thing that would help in this situation is implementing C#/VB.NET-like extension. With those languages, you can extend objects.

    I propose a syntax like :

        Sub Plot.DrawCurve(data) ' This is a sub like any other, except that it seems to be in a "Plot" namespace in the intellisense.
            DrawCurve_X = 0
            DrawCurve_LastPoint = ""
            DrawCurve_CurrentPoint = ""
            While (data[DrawCurve_X]["X"] <> "") And (data[DrawCurve_X]["Y"] <> "")
               DrawCurve_LastPoint = DrawCurve_CurrentPoint
               DrawCurve_CurrentPoint = data[DrawCurve_X]
               ' ...
               ' Do something with the point
               ' ...
            EndWhile
        EndSub

        curve1[0]["X"] = ...
        curve1[0]["Y"] = ...
        ...
        
        Plot.DrawCurve(curve1)
    Fremy - Developer in VB.NET, C# and JScript ... - Feel free to try my extension
  • 8. července 2009 14:37Ron Hudson Uživatelské medaileUživatelské medaileUživatelské medaileUživatelské medaileUživatelské medaile
     
    An extension like this would make small basic more attractive to math student who are not really in it for programming.

    Fremy  - Small basic does not have parameters in it's subroutine calls, or was that some other language?

    I understand you want to keep the syntax simple for new programmers, since this would be an optional extension
    (You don't have to install it if you don't want to) that would only add one item to the top level help wheel I don't think
    it violates that goal.

    Yes I suppose I could write a general curve plotter in small basic (does small basic even have include files?) but it would
    add variables to the variable pool (I'd have to name them like 'PlotXAxisTitle' = "Sine" 'PlotData' (an array). ugh.)
    not simple or clean.



  • 8. července 2009 14:49FremyCompanyPřispěvatelUživatelské medaileUživatelské medaileUživatelské medaileUživatelské medaileUživatelské medaile
     
    @Ron: The intent of Small Basic is to learn programmation the people.
    If Small Basic provide a function for each thing a beginner can need,
    the beginner will not learn to create functions as everything he need
    already exsits.

    My code is Small Basic 2.7 :-)
    In fact, it's a propossal to allow to create extensions of Small Basic in
    Small Basic Language, allowing to create exensions that don't polluate
    the variable pool. Each "imported" sb file would have its own variable
    pool, only subs would be shared. It's possible to create "objects" by
    writing "Sub MyObj.TheSub". It needs parameters, too.

    Yes, it needs to register the file in a sort of header like :
       
       Use "PlotExtension.sb"
       Use "FC.SmallBasic.Complements.dll"
       
       ' Your small basic program


    Fremy - Developer in VB.NET, C# and JScript ... - Feel free to try my extension
  • 8. července 2009 16:06Ron Hudson Uživatelské medaileUživatelské medaileUživatelské medaileUživatelské medaileUživatelské medaile
     
    What is this Small Basic 2.7 of which you speak?

    Us mortals only have 0.5 : ^ o



  • 8. července 2009 16:11FremyCompanyPřispěvatelUživatelské medaileUživatelské medaileUživatelské medaileUživatelské medaileUživatelské medaile
     
    What is this Small Basic 2.7 of which you speak?
    It was a joke. It was to speak about a non-existant version of Small Basic.

    Fremy - Developer in VB.NET, C# and JScript ... - Feel free to try my extension
  • 8. července 2009 16:21Ron Hudson Uživatelské medaileUživatelské medaileUživatelské medaileUživatelské medaileUživatelské medaile
     
    Oh, I thought you were the developer of small basic and thus had access to unreleased versions.


  • 8. července 2009 19:32bigdaddyo Uživatelské medaileUživatelské medaileUživatelské medaileUživatelské medaileUživatelské medaile
     
    I'm not sure how useful SB is for much math (at least scientific math) at this point, it can't handle large numbers or scientific notation.
  • 8. července 2009 19:35FremyCompanyPřispěvatelUživatelské medaileUživatelské medaileUživatelské medaileUživatelské medaileUživatelské medaile
     

    The objective would be to create specific programs.
    You may have to use many time the same set of formula to get what you want.

    Or you may write a program that you can reuse. Small Basic is a good language
    for people that don't have made programs yet but that want to make their first apps.

    But after some time, they would probably use another language like VB.NET or C#.


    Fremy - Developer in VB.NET, C# and JScript ... - Feel free to try my extension
  • 25. července 2009 7:35Ron Hudson Uživatelské medaileUživatelské medaileUživatelské medaileUživatelské medaileUživatelské medaile
     
    Hey Bigdadyo

    1x10^27 ain't bad..

    true = 1
    false = 0
    TextWindow.Show()
    c = 1
    TextWindow.WriteLine("Starting")
    b = 0
    a = true
    While a=true
      b = b + 1
      c = 10 * c
      TextWindow.Write(b+" ")
      TextWindow.WriteLine(c)
      If b = 30 Then
        a = false
      endif
    EndWhile
    TextWindow.WriteLine("Done")

    Gets up to 28 before it overflows.

    BTW arent there actual values for True and False?
    I sort of makeshifed them here.

  • 25. července 2009 7:43Ron Hudson Uživatelské medaileUživatelské medaileUživatelské medaileUživatelské medaileUživatelské medaile
     
    Take a look at SNC433
     
    It would have greatly benefited from the plot window extension. Import it and see the
    hoops I had to jump through to scale the plotting and to handle the graphic window being
    re-sized. Not having a "graphics" background I had to experiment to get everything just right

    As long as the program is running and re-plotting the bell curve you can re-size the graphic
    window. I usually shorten the text window to a few lines and widen the graphic window to match the text
    window in width.