Fundamentals of BASIC: Difference between revisions

From NSB App Studio
Jump to navigation Jump to search
Line 96: Line 96:


= Control structures =
= Control structures =
'''If...Then'''
<pre>
<pre>
If a=b Then c=1
If a=b Then c=1
Line 108: Line 109:
   C=2
   C=2
End If
End If
 
</pre>
'''For loop'''
For i=1 to 10
For i=1 to 10
   Print i
   Print i
Line 171: Line 173:
   End Select
   End Select
End Sub
End Sub
Rem Try Example
'Try catches run time errors
Try
  Dim CurrLiab, CurrAssets
  CurAssets=InputBox("Enter assets")
  If Not IsNumeric(CurAssets) Then Throw 1
  If CurAssets < 0 Then Throw "lessthan"
  CurLiab=InputBox("Enter liabilities")
  If CurLiab=0 Then Throw "Divide by Zero"
  If CurLiab < 0 Then
      Throw "Liabilities must be > 0"
  End If
  If Not IsNumeric(CurLiab) Then Throw 1
  Print CurAssets, CurLiab
  Print "Ratio:" & CurAssets/CurLiab
Catch err
  If err=1 Then err="Enter a number"
  If err="lessthan" Then
      err="Value must be >= 0"
  End if
  Print err
Finally 'this is optional
  Print "Done"
End Try


Sub mySubroutine(a,b)
Sub mySubroutine(a,b)

Revision as of 10:23, 10 December 2013

Variables

Naming

The following list shows some variable names that are allowed by AppStudio:

text
LLAMAS
Jupiter
W1Spec
SouthPark

And some that are not allowed:

1table          'starts with a number 
X&Ycords        'uses special character & 
first counter   'has a space 
%correct        'does not start with a letter
print           'Keyword

Variables

  • All variables are of type Variant.
  • No explicit types
  • Variable get their types from the value that is assigned.

Numeric

  • Floating point: 5e-324 (negative) to 1.7976931348623157e+308 (positive)
  • Integers: reliable to 15 digits.
  • Hex: 0x500 = 1280
  • Octal: O500 = 320

Booleans

  • True or False.

Colors

  • From “#000000” to “#FFFFFF” (black to white)
  • color = (red*65536) + (green * 256) + blue

Strings

  • Maximum length depends on memory, up to 2 billion characters

Arrays

  • Dim A(9) declares an array with 10 elements
  • Dim B(8,8) creates a two dimensional array
  • Elements can be referred to as A(3), B(2,3), etc.
  • Dim statement has to be in each Code Module
  • The following notation is also OK: a[3], B[2][3}
  • Array elements do not exist until they are assigned.

Collections

  • Like an Array, but uses string values to index
Dim item1, myCollection(10)
item1="Knuth"

'Create our collection
myCollection[item1] = "firstKey"
Print myCollection[item1]  'displays "firstkey"

Objects

  • An object is a collection of named values, called properties
Customer={Name: Lovelace, Age: 195, kids:{Byron: 1, Annabella: 2, Ralph: 3}}
Print Customer.name  'displays "LoveLace"

Classes

'Define a class like this
Function Person(name, gender)
   'Add object properties like this
   this.name = name
   this.gender = gender
End Function

'Add methods like this.  All Person objects will be able to invoke this
Function speakName()
  Print "Howdy, my name is " & this.name
End Function

Person.prototype.speak = Eval("speakName")

'Instantiate new objects with 'new'
bob = new Person("Bob", "M")

'Invoke methods like this
bob.speak() 'Prints "Howdy, my name is Bob"

Control structures

If...Then

If a=b Then c=1

If a=b Then
  c=1
End If

If a=b Then
  C=1
Else
  C=2
End If

For loop For i=1 to 10

 Print i

Next

i=0 Do While i<10

 Print i
 i=i+1

Loop

i=0 Do

 Print i
 i=i+1

Loop Until i=10

Rem While...Wend Example 'While...Wend repeats a group of statements

Dim Counter Counter = 1 While Counter < 5

 Print "Counter = " & Counter
 Counter = Counter + 1

Wend

Rem With sample 'With statement allows accessing properties on a specified object

Dim theURL, theTitle With document

 theURL = .URL
 .title = "New Title"
 theTitle = .title
 Print .URL
 Print .title

End With

Rem Select Case Example 'Select Case performs conditional execution CheckHat("Blue") CheckHat("Orange") Sub CheckHat(Hat)

 Select Case Hat
 Case "Blue"
   Print "Kyle's hat"
 Case "Green"
   Print "Stan's hat"
 Case "Cyan"
   Print "Eric's hat"
 Case "Orange", "Hood"
   Print "Kenny's hat"
 Case "White"
   Print "Chef's hat"
 Case "Striped"
   Print "Mr. Hat"
 Case "Christmas", "Santa"
   Print "Mr. Hankey's hat"
 Case Else
   Print "Unknown Hat"
 End Select

End Sub

Rem Try Example 'Try catches run time errors Try

  Dim CurrLiab, CurrAssets 
  CurAssets=InputBox("Enter assets")
  If Not IsNumeric(CurAssets) Then Throw 1
  If CurAssets < 0 Then Throw "lessthan"
  CurLiab=InputBox("Enter liabilities")
  If CurLiab=0 Then Throw "Divide by Zero"
  If CurLiab < 0 Then
     Throw "Liabilities must be > 0"
  End If
  If Not IsNumeric(CurLiab) Then Throw 1
  Print CurAssets, CurLiab
  Print "Ratio:" & CurAssets/CurLiab

Catch err

  If err=1 Then err="Enter a number"
  If err="lessthan" Then
     err="Value must be >= 0"
  End if
  Print err

Finally 'this is optional

  Print "Done"

End Try

Sub mySubroutine(a,b)

 Print a + b

End Sub

Function myFunction(a,b)

 myFunction = a + b

End Function

Importing VB code

A few interesting statements