Syntax-07-08-29 - Tulane University
Download
Report
Transcript Syntax-07-08-29 - Tulane University
More switches, Comparison
Day 7
Computer Programming
through Robotics
CPST 410
Summer 2009
Course organization
Course home page
(http://robolab.tulane.edu/CPST410/)
Lab (Newcomb 442) will be open for
practice with 3-4 Macs, but you can bring
your own laptop and all robots.
7/1/09
Harry Howard, CPST 410, Tulane University
2
Review
More than two choices
Tribot, when I press the left NXT button,
pick a number from 1 to 3.
If the number is 1, display an image.
If the number is 2, beep.
If the number is 3, play a sound.
7/1/09
Harry Howard, CPST 410, Tulane University
4
Switch3.rbt
7/1/09
Harry Howard, CPST 410, Tulane University
5
Switches in NXC
A switch statement can be used to execute
one of several different blocks of code
depending on the value of an expression.
It has the following syntax:
switch (expression) body
7/1/09
Harry Howard, CPST 410, Tulane University
6
Case labels
One or more case labels precede each block
of code.
The labels are not statements in themselves
- they are labels that precede statements.
They have the following syntax:
case constant_expression :
default :
7/1/09
Harry Howard, CPST 410, Tulane University
7
Example
the number of each case is a value of x
int x;
…
switch(x)
{
case 1:
// do something when x is 1
break;
case 2:
case 3:
// do something else when x is 2 or 3
break;
default:
// do this when x is not 1, 2, or 3
break;
}
7/1/09
Harry Howard, CPST 410, Tulane University
8
More on case labels
Each case must be a constant and unique within
the switch statement.
The switch statement evaluates the expression
then looks for a matching case label.
It will then execute any statements following the
matching case until either a break statement or the
end of the switch is reached.
A single default label may also be used - it will
match any value not already appearing in a case
label.
7/1/09
Harry Howard, CPST 410, Tulane University
9
So now do the task in NXC
Tribot, when I press the left NXT button,
pick a number from 1 to 3.
If the number is 1, display an image.
If the number is 2, beep.
If the number is 3, play a sound.
7/1/09
Harry Howard, CPST 410, Tulane University
10
First try: just the switch
int num;
task main()
{
num = Random(3); // Random starts at 0
switch(num)
{
case 0:
GraphicOut(“Smile 01.ric”);
Wait(1000);
break;
case 1:
PlayTone(440, 500):
Wait(500);
break;
case 2:
PlayFile(“Laughing 02.rso”):
Wait(500);
break;
}
}
7/1/09
Harry Howard, CPST 410, Tulane University
11
The switch in a while loop
int num;
task main()
{
while (SensorBoolean(S1) == true) // touch sensor on port S1
{
num = Random(3);
switch(num)
{
// Random starts at 0
case 0:
GraphicOut(“faceopen.ric”);
Wait(1000);
ResetScreen(); // otherwise graphic never goes away
break;
case 1:
PlayTone(440, 500);
Wait(500);
break;
case 2:
PlayFile(“Laughing 02.rso”);
Wait(500);
break;
}
}
}
7/1/09
Harry Howard, CPST 410, Tulane University
12
Comparison
Kelly §15
The challenge
Tribot,
1. choose two numbers randomly between 0 and
9 (call them A and B),
2. and display them on the screen.
3. Then, if A is greater than B, display “true”;
otherwise, display “false”.
7/1/09
Harry Howard, CPST 410, Tulane University
14
ComparisonTest1.rbt
7/1/09
Harry Howard, CPST 410, Tulane University
15
Combining text
We now have two numbers to display, but a
DISPLAY block can only display one at a
time.
Thus the two numbers have to be combined
or concatenated into a single bit of text.
The TEXT block does this.
7/1/09
Harry Howard, CPST 410, Tulane University
16
The TEXT block
Drag a TEXT block out of
the Advanced palette - it
has the icon “a”.
Pull out its hub all the
way:
It has inputs for 3 pieces of
text,
or text can be written in the
settings windows.
7/1/09
Harry Howard, CPST 410, Tulane University
17
Display the two numbers
Drop a TEXT block at the end.
Plug textualized number A into TEXT plug A.
Plug textualized number B into TEXT plug C.
Enter ” > " into the text box of TEXT plug B.
Drop a DISPLAY block after the TEXT block.
Connect the TEXT block to it via the Text plugs.
Raise the text to line 3.
Don’t forget to WAIT for the display!
Test the program.
7/1/09
Harry Howard, CPST 410, Tulane University
18
ComparisonTest2.rbt
7/1/09
Harry Howard, CPST 410, Tulane University
19
Now, the comparison
This program gives a dumb result whenever
A is less than or equal to B.
As a first step towards making it less dumb,
let us examine the COMPARE block.
7/1/09
Harry Howard, CPST 410, Tulane University
20
The COMPARE block
Pull out a COMPARE
block (it has > = <)
from the Data part of
the Complete palette.
It has three operations:
less than,
greater than,
equals.
And two input hubs.
7/1/09
Harry Howard, CPST 410, Tulane University
21
Adding the comparison
Drop a COMPARE block at the end of the
sequence bar.
Set it to ‘>’.
Where should its inputs come from?
From the number outputs of the two Number to Text
blocks.
see the next slide
7/1/09
Harry Howard, CPST 410, Tulane University
22
ComparisonTest3.rbt
7/1/09
Harry Howard, CPST 410, Tulane University
23
Now, a decision
But we want to display "True" if the comparison is true,
and "False" otherwise.
How do we do that?
Drop a SWITCH block at the end of the sequence bar.
Set it to tabbed view, for convenience.
Set Control to Value.
Run a wire from the COMPARE Logic plug to the SWITCH input
plug.
Now fill in each condition with a DISPLAY block with the
appropriate text on line 6, and don’t clear the screen.
Don’t forget to add a WAIT at the end!
7/1/09
Harry Howard, CPST 410, Tulane University
24
ComparisonTest4.rbt
7/1/09
Harry Howard, CPST 410, Tulane University
25
Play with it
Next time
Comparison in NXC.
The RANGE and LOGIC blocks.
7/1/09
Harry Howard, CPST 410, Tulane University
27