Learning to Program with the Cybiko Handheld Computer Using B2C

Chapter 10 : Conditionals : If … Then … Else … End If

Another thing computers are good at is making unbiased decisions.  In B2C this is implemented with the If statement.  The If statement has a conditional followed by the Then clause:

if [conditional] then
  'statements
end if
 
if a < b then
    print "a is smaller"
end if

This conditional has a left side and a right side with a relational operator in between.  You can compare two variables, or two expressions.  There are 6 relational operations:

                <            less than
                >            greater than
                <=           less than or equal to
                >=           greater than or equal to
                =            equal to
                <>           not equal to

For example:

if a+1 < b*2 then
    'statements
end if

There is also an Else statement, which indicates what to do if the conditional is not met:

if [conditional] then
    'statements
else
    'else statements
end if
   

 
if a<b then
    print "a is smaller"
else
    print "b is smaller"
end if

If you inspect our last example closely – you will see an error in the logic.  The error occurs when a is equal to b.  In this case our example will print "b is smaller" which is of course incorrect.  To correct this we have the Elseif statement.  It works just like the If statement and is executed only when the if part is false.

if [conditional] then
    'statement
elseif [conditional] then
    'elseif statements
else
    'else statements
  endif

 
if a<b then
    print "a is smaller"
elseif b<a then
    print "b is smaller"
else
    print "a and b are equal"
end if

You may have as many Else if statements as you like, and you may have as many statements in the if/elseif/else clauses as you like.  Again. it is good practice to indent the statements to show which statements belong to which if/elseif/else clauses.

Combining Conditionals

The result of the relational operators (<,>,<=,>=,=,<>) is either TRUE or FALSE.  This type of value is called Boolean (named for the mathematician George Boole).  Booleans  are either True or False (one or zero).  These types of results can be combined with the Boolean operators AND and OR.  You can even negate the conditional with the NOT operator.

The And operator results in a TRUE value if BOTH of the inputs are TRUE (and results in a FALSE otherwise).  The Or operator results in a TRUE value if EITHER of the inputs are TRUE.  In B2C, a zero value is FALSE and any other value is considered TRUE.  NOT converts a TRUE result into a FALSE result.

if a<b and b<c then
    print "b is between a and c"
end if
 
if a>b or a>c then
    print "a is bigger than either b or c"
  end if

 
a=1
b=0
if a and b then
    print "both a and b are true"
end if
 
if a or b then
    print "either a or b is true"
end if

Example program:

 

DO THIS

Copy the file "c:\…\B2Cv5\tutorial\ch10.b2c" to "C:\…\B2Cv5\ch10.b2c".  Then execute the command "build ch10.b2c".  Download the ch10.app file to the cybiko.
Conditionals will allow us to assign a letter grade to the input grades and the average
' chapter 10 example program
' sum and average of n grades
' grades are from 0-100
dim sum    'this variable will store the sum of the n grades
dim avg    'this variable will store the average of the n grades
dim n as int   ' the number of grades to average
 
print "How many grades?"
input n
dim grade[n]  ' an array of n grades
 
 ' ---INPUT ---
for i=0 to n-1                 'get the inputs
    print "Enter grade ", i   ' notice that we indent in loops
    input grade[i]                'get the grades from the student
next
 
'--- PROCESS ---
' compute the sum and the average
for i=0 to n-1
    if grade[i] >=94 then
       print grade[i], "=A"
    elseif grade[i]>=86 then
       print grade[i],"=B"
    elseif grade[i]>=78 then
       print grade[i], "=C"
    elseif grade[i]>=70 then
       print grade[i], "=D"
    else
       print grade[i], "=F"
    end if
    sum = sum + grade[i]   'notice we accumulate the sum
next
avg = sum/n
 
'--- OUTPUT ---
print "The average of your", 
print n, " grades is ", avg
if avg >=94 then
       print avg, "=A"
elseif avg>=86 then
       print avg, "=B"
elseif avg>=78 then
       print avg, "=C"
elseif avg>=70 then
       print avg, "=D"
else
       print avg, "=F"
end if
 
print "Press <Enter> to continue"
dim tmp ' a temporary variable
input tmp 'wait for the user to press enter