int average(int value1, int value2) { return (value1 + value2)/2; }Notice here that the magic word "void" no longer appears at the beginning of our function header. Instead, we have replaced it with int, to indicate that this function is computing an integer value. ("void" means that the purpose of the function is to perform some action, rather than to compute some value.)
We can use this function by specifying its name in the context in which we want its value to be computed:
/* Andrea Danyluk */ /* October 2008 */ /* Program to illustrate if-else and while */ /* Goes forward computing average light */ /* Records min and max average light as it moves along */ /* Does this as long as stop button not pressed and neither touch sensor detects a collision */ int LEFT_MOTOR = 3; /* the left motor */ int RIGHT_MOTOR = 1; /* the right motor */ int LEFT_TOUCH = 14; /* the left touch sensor */ int RIGHT_TOUCH = 11; /* the right touch sensor */ int RIGHT_LIGHT = 3; /* the right light sensor */ int LEFT_LIGHT = 5; /* the left light sensor */ void main() { int min_so_far = 255; int max_so_far = 0; start_press(); forward(); while(!stop_button() && !digital(LEFT_TOUCH) && !digital(RIGHT_TOUCH)) { /* compute and remember the average light value */ int average_light = average(analog(LEFT_LIGHT), analog(RIGHT_LIGHT)); if (average_light < min_so_far) { min_so_far = average_light; } if (average_light > max_so_far) { max_so_far = average_light; } printf("Min = %d Max = %d\n", min_so_far, max_so_far); } ao(); } /* go forward at full power */ void forward( ) { fd(RIGHT_MOTOR); fd(LEFT_MOTOR); } int average(int value1, int value2) { return (value1 + value2)/2; }