200 likes | 281 Views
Explore the nuances of comparison in NXC programming language through robotics in the CPST 410 course at Tulane University. Learn about comparison operators, string manipulation, and challenges involving random number generation and logical operations. Join Harry Howard to delve into the world of robotics and computer programming.
E N D
Comparisonthe RANGE blockDay 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. Harry Howard, CPST 410, Tulane University
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] Harry Howard, CPST 410, Tulane University
The challenge, again • Tribot, • create two random numbers between 0 and 9 (call them A and B), • display them on the screen, • and tell me if A is greater than B. Harry Howard, CPST 410, Tulane University
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); } Harry Howard, CPST 410, Tulane University
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); } Harry Howard, CPST 410, Tulane University
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); } Harry Howard, CPST 410, Tulane University
Question • Could you use an NXC switch? • No, an an NXC switch only takes numbers (integers) as inputs. Harry Howard, CPST 410, Tulane University
Inside or out? Kelly §16
The challenge • Tribot, • Create a random number between 0 and 100, and show it on the screen. • Tell me if it is between 40 and 60. Harry Howard, CPST 410, Tulane University
DisplayRange1.rbt displays "between 40 and 60" on line 5 - don't clear the screen! displays random number on line 7 Harry Howard, CPST 410, Tulane University
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. Harry Howard, CPST 410, Tulane University
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. Harry Howard, CPST 410, Tulane University
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 Harry Howard, CPST 410, Tulane University
DisplayRange2.rbt Harry Howard, CPST 410, Tulane University
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] Harry Howard, CPST 410, Tulane University
The challenge, again • Tribot, • Create a random number between 0 and 100, and show it on the screen. • Tell me if it is between 40 and 60. Harry Howard, CPST 410, Tulane University
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); } Harry Howard, CPST 410, Tulane University
Next time • The LOGIC block. • Math, power, files: Kelly 20-22. • Bluetooth messaging: Kelly 25. • Tasks, routines, subroutines: Kelly 26. Harry Howard, CPST 410, Tulane University