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