Sie sind auf Seite 1von 9

Preprocessor Directives

(last modified 9/19/05 2:47pm)


Statements beginning with # are directives to
the preprocessor.
They DO NOT end with ;
Before the program is compiled, the preprocssor
copies these definitions into the code.
These definitions are not required, but make the
code easier to write and more readable
if you want to change the port on which a sensor
is connected, and that appears multiple times in
the program, then a single change in the #define
is all you need to make the change.
// tankbot2.nqc - drive and turn
// motors
#define LEFT OUT_A
#define RIGHT OUT_C
// how much time to spend turning or forward
#define TURN_TIME 200
#define STRAIGHT_TIME 100
// speed to run a turned motor
#define TURN_POWER 3

task main()
{
// start with both motors on
On(LEFT+RIGHT);
// repeat the following steps forever
while(true)
{


}
}
Programming Style
Use indentation to visually group
program blocks.
Use comments to document the
program


// tankbot2.nqc - drive and turn
// motors
#define LEFT OUT_A


task main()
{
// start with both motors on
On(LEFT+RIGHT);
// repeat the following steps forever
while(true)
{
// turn right by slowing down the right tread
SetPower(RIGHT, TURN_POWER);
Wait(TURN_TIME);
// resume going straight
SetPower(RIGHT, OUT_FULL);
Wait(STRAIGHT_TIME);
// turn left
SetPower(LEFT, TURN_POWER);
Wait(TURN_TIME);
// resume going straight
SetPower(LEFT, OUT_FULL);
Wait(STRAIGHT_TIME);
}
}
Time
NQC is a real-time programming
language.
Time is measured in 1/100 of a second
#define TURN_TIME 200
Will define the turning time to be 2 seconds


Using Time to Control Motion
Wait(300);
The program will wait at that statement for 3
seconds.
The following program will drive straight for 4
seconds, then if OUT_A is attached to the left
tread, the left tread will stop and the right
tread will continue to drive for 1second
causing the tankbot to stear toward the left.
On(OUT_A + OUT_B);
Wait(400);
Off(OUT_A);
Wait(100);

Generating a Random Number
NQC has a random number generating
function
Random(100);
Generates a random integer between 0
and 100. All numbers in the range are
equally likely (uniform distribution)
0 100
NQC Functions
So far we have seen several NQC functions.
They have been associated with:
Motors:
On(arguments);
Off(arguments);
SetPower(arguments);
OnFwd(arguments);
Sensors
SetSensor(arguments);
Mathematical
Random(arguments);
All NQC functions begin with a capital
letter. As in SetSensor, two capitals are
used to make them more readable.
The number of arguments depend on
the function.
Appendix D (Braun) provides a Quick
Reference to the language. The
functions are grouped into categories.
NOTE the restrictions. NOTE THERE
ARE A FEW DIFFERENCES
BETWEEN RCX AND RCX2.0. Which
system do you have?

Das könnte Ihnen auch gefallen