Comparison the RANGE block Day 8 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.
Download
Report
Transcript Comparison the RANGE block Day 8 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.
Comparison
the RANGE block
Day 8
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
Comparison in NXC
Comparison and strings
Comparison operators: >, <, ==
String operators
string [declares a variable of type string]
NumtoStr [converts a number to a string]
StrCat [concatenates strings]
TextOut [displays strings]
7/1/09
Harry Howard, CPST 410, Tulane University
4
The challenge, again
Tribot,
1. create two random numbers between 0 and 9
(call them A and B),
2. display them on the screen,
3. and tell me if A is greater than B.
7/1/09
Harry Howard, CPST 410, Tulane University
5
Parts 1 and 2
int A, B;
string a, b, combined;
task main()
{
A = random(10);
B = random(10);
a = NumtoStr(A);
b = NumtoStr(B);
combined = StrCat(a, “ < “, b);
TextOut(0, 0, combined);
Wait(1000);
}
7/1/09
Harry Howard, CPST 410, Tulane University
6
Part 3, literal option
int A, B;
string a, b, combined;
task main()
{
A = random(10);
B = random(10);
a = NumtoStr(A);
b = NumtoStr(B);
if (A > B) combined = StrCat(a, “ > “, b);
else if (B > A) combined = StrCat(a, “ < “, b);
TextOut(0, 0, combined);
Wait(1000);
}
7/1/09
Harry Howard, CPST 410, Tulane University
7
Part 3, more complete option
int A, B;
string a, b, combined;
task main()
{
A = random(10);
B = random(10);
a = NumtoStr(A);
b = NumtoStr(B);
if (A > B) combined = StrCat(a, “ > “, b);
else if (B > A) combined = StrCat(a, “ < “, b);
else combined = StrCat(a, “ = “, b);
TextOut(0, 0, combined);
Wait(1000);
}
7/1/09
Harry Howard, CPST 410, Tulane University
8
Question
Could you use an NXC switch?
No, an an NXC switch only takes numbers
(integers) as inputs.
7/1/09
Harry Howard, CPST 410, Tulane University
9
Inside or out?
Kelly §16
The challenge
Tribot,
1. Create a random number between 0 and 100,
and show it on the screen.
2. Tell me if it is between 40 and 60.
7/1/09
Harry Howard, CPST 410, Tulane University
11
DisplayRange1.rbt
displays
random
number on
line 7
7/1/09
Harry Howard, CPST 410, Tulane University
displays
"between 40
and 60" on
line 5 - don't
clear the
screen!
12
The RANGE block
Robots respond to statements with True or
False
A is inside the range of numbers beginning with
B and ending with C.
A is outside the range of numbers beginning
with B and ending with C.
7/1/09
Harry Howard, CPST 410, Tulane University
13
Part 2
Drag a RANGE block out of the Data row
and drop it at the end of the beam.
Operation = Inside
A = 40
B = 60
Where does its input come from?
From RANDOM.
7/1/09
Harry Howard, CPST 410, Tulane University
14
Part 2, cont.
We again want to display both the True and False
responses
Drop a SWITCH block at the end of the beam and set it
up.
Control = Value
Type = Logic
Uncheck Flat view (to save screen space)
Drop a DISPLAY block into each choice
= "True"
x = "False"
Drop a NXT button WAIT block at the end to keep
the results on the screen
7/1/09
Harry Howard, CPST 410, Tulane University
15
DisplayRange2.rbt
7/1/09
Harry Howard, CPST 410, Tulane University
16
Range in NXC
There is no such operation as RANGE in
NXC,
so you have to break it down into its
components,
using the logical operators:
&& [logical AND]
|| [logical OR]
! [logical negation]
7/1/09
Harry Howard, CPST 410, Tulane University
17
The challenge, again
Tribot,
1. Create a random number between 0 and 100,
and show it on the screen.
2. Tell me if it is between 40 and 60.
7/1/09
Harry Howard, CPST 410, Tulane University
18
NXC version
int A;
string a, combined;
task main()
{
A = random(10);
a = NumtoStr(A);
if (A > 40) && (A < 60) combined = StrCat(a, “ is between 40 and 60”);
else combined = StrCat(a, “ is not between 40 and 60”);
TextOut(0, 0, combined);
Wait(1000);
}
7/1/09
Harry Howard, CPST 410, Tulane University
19
Next time
The LOGIC block.
Math, power, files: Kelly 20-22.
Bluetooth messaging: Kelly 25.
Tasks, routines, subroutines: Kelly 26.
7/1/09
Harry Howard, CPST 410, Tulane University
20