Learning C really fast A power point for Jay. RobotC vs C RobotC is slightly different than C We...

25
Learning C really fast A power point for Jay

Transcript of Learning C really fast A power point for Jay. RobotC vs C RobotC is slightly different than C We...

Page 1: Learning C really fast A power point for Jay. RobotC vs C RobotC is slightly different than C We will cover standard C Then RobotC differences.

Learning C really fast

A power point for Jay

Page 2: Learning C really fast A power point for Jay. RobotC vs C RobotC is slightly different than C We will cover standard C Then RobotC differences.

RobotC vs C

RobotC is slightly different than C We will cover standard C Then RobotC differences.

Page 3: Learning C really fast A power point for Jay. RobotC vs C RobotC is slightly different than C We will cover standard C Then RobotC differences.

A normal simple C program

#include <stdio.h>

void doSomething(int x);

int main(void){

int countIndex = 0;

for(countIndex = 0; countIndex<5; countIndex++){

if(3 != countIndex){

printf("Count:%d\n",countIndex);}else{

doSomething(countIndex);}

}return 0;

}

void doSomething(int x){

printf("In Func:%d\n",x);}

Page 4: Learning C really fast A power point for Jay. RobotC vs C RobotC is slightly different than C We will cover standard C Then RobotC differences.

#include <stdio.h>

This brings in other libraries. The libraries are the hardest part of C You need to know what is in each one and what

it's named Just ignore this for now. This one is for the function “printf”

Page 5: Learning C really fast A power point for Jay. RobotC vs C RobotC is slightly different than C We will cover standard C Then RobotC differences.

void doSomething(int x);

Forward function declaration. It tells the compiler that somewhere in this file is

a function called 'doSomething' The void tells the compiler nothing will be

returned from this function (more on that to come).

The 'int x' tells us that a number is going to be passed in.

The forward declaration ends in a ';'

Page 6: Learning C really fast A power point for Jay. RobotC vs C RobotC is slightly different than C We will cover standard C Then RobotC differences.

int main(void)

This is the main function. This is where the program will begin. The function will return a number (int). The function does not have anything passed in

(void).

Page 7: Learning C really fast A power point for Jay. RobotC vs C RobotC is slightly different than C We will cover standard C Then RobotC differences.

int countIndex = 0;

This is a variable. Its a label that holds 'stuff' The label is called 'countIndex'. The stuff is a number = 0. A int is a type of variable. It means a number

from -2,147,483,648 to 2,147,483,647 Other type are char (-128 to 127), short (32,768

to -32,767) Just stick with int for numbers.

Page 8: Learning C really fast A power point for Jay. RobotC vs C RobotC is slightly different than C We will cover standard C Then RobotC differences.

for(countIndex = 0; countIndex<5; countIndex++)

For loop. It counts things. This one counts from 0 to 4. countIndex = 0 tells us where to start. countIndex<5 tells us to keep counting while

countIndex is less than 5. countIndex++ means to add 1 to countIndex

each time though the loop. for(countIndex = 1; countIndex<=10;

countIndex+=2) Counts from 1 to 10 by 2s

Page 9: Learning C really fast A power point for Jay. RobotC vs C RobotC is slightly different than C We will cover standard C Then RobotC differences.

if(3 != countIndex)

The If statement makes decisions This one says do the following if countIndex is

not equal to 3. The 3 does not need to be first. != is not equal. Equal is == (note the double =).

< less than, > greater than. <= less than of equal to. && is AND, || is OR

Complex: ((3 != countIndex) && (4 == somethingElse))

If countIndex is not 3 and somethingElse is 4

Page 10: Learning C really fast A power point for Jay. RobotC vs C RobotC is slightly different than C We will cover standard C Then RobotC differences.

printf("Count:%d\n",countIndex);

The printf statement prints stuff out. The %d says print a number at this point. The \n says print a new line. The %d corresponds to countIndex. The %d

match to the parameters after the “ “. printf(“Count:%d %d\

n”,countIndex,somethingElse); The the first %d would print countIndex, the

second %d would print somethingElse.

Page 11: Learning C really fast A power point for Jay. RobotC vs C RobotC is slightly different than C We will cover standard C Then RobotC differences.

else

The else is the other half of the 'if' statement. In our case it's 3 == countIndex. Note the '{' and '}'. The braces tell the compiler

that this is a block of code and goes with either the function, for loop, if statement or else statement.

Page 12: Learning C really fast A power point for Jay. RobotC vs C RobotC is slightly different than C We will cover standard C Then RobotC differences.

doSomething(countIndex);

Call the function and pass in countIndex. If doSomething returned a value the statement

would be: somethingElse = doSomething(countIndex);

Page 13: Learning C really fast A power point for Jay. RobotC vs C RobotC is slightly different than C We will cover standard C Then RobotC differences.

return 0;

Return a number to the next 'level' up. This just returns a number '0'. Could pass back a variable: return countIndex;

Page 14: Learning C really fast A power point for Jay. RobotC vs C RobotC is slightly different than C We will cover standard C Then RobotC differences.

void doSomething(int x){

This is the body of the function doSomething. Note this does not have a ';' and it is followed

by a body '{' '}'

Page 15: Learning C really fast A power point for Jay. RobotC vs C RobotC is slightly different than C We will cover standard C Then RobotC differences.

printf("In Func:%d\n",x);

Another print statement.

Page 16: Learning C really fast A power point for Jay. RobotC vs C RobotC is slightly different than C We will cover standard C Then RobotC differences.

RobotC

RobotC is based on C Short cut things are added that 'hide' a bunch of

things and make it complex to code in.

Page 17: Learning C really fast A power point for Jay. RobotC vs C RobotC is slightly different than C We will cover standard C Then RobotC differences.

RobotC is wierd

The Function Library takes care of your 'include' lines so you don't need to include all the libraries.

Page 18: Learning C really fast A power point for Jay. RobotC vs C RobotC is slightly different than C We will cover standard C Then RobotC differences.

#pragma config(Motor, motor6, rightMotor, tmotorVexIQ, openLoop,

encoder) This really just defines a variable. Its a type of 'Motor' It connects motor6 to a variable called

rightMotor. It's based on a tmotorVexIQ (just copy this, we

don't need to worry about this). Its a openLoop and has a encoder, again don't

worry about this right now.

Page 19: Learning C really fast A power point for Jay. RobotC vs C RobotC is slightly different than C We will cover standard C Then RobotC differences.

#pragma config(Motor, motor1, leftMotor, tmotorVexIQ, openLoop,

reversed, encoder) The same as the last slide, but with reversed in

it.

Page 20: Learning C really fast A power point for Jay. RobotC vs C RobotC is slightly different than C We will cover standard C Then RobotC differences.

setMotorSpeed(leftMotor, getJoystickValue(ChA));setMotorSpeed(rightMotor, getJoystickValue(ChD));

Two joystick drive. (Tank drive) SetMotorSpeed is a global function. leftMotor/rightMotor are variables defined from

that '#param' call. getJoystickValue is a global function as well. 'ChA' is a constant value. Like a variable that

can't be changed. It tells getJoystickValue which joystick to look at.

Page 21: Learning C really fast A power point for Jay. RobotC vs C RobotC is slightly different than C We will cover standard C Then RobotC differences.

setMotorSpeed(leftMotor, (getJoystickValue(ChA) - getJoystickValue(ChB))/2);setMotorSpeed(rightMotor, (getJoystickValue(ChA) +

getJoystickValue(ChB))/2);

Standard turn the joystick into a single joystick drive.

I've never really sat down to look at it, I've just copied it into my code.

Page 22: Learning C really fast A power point for Jay. RobotC vs C RobotC is slightly different than C We will cover standard C Then RobotC differences.

#pragma config(Motor, motor10, armMotor, tmotorVexIQ, openLoop, encoder)

In Vex a motor can be a continuous rotation or a airplane servo.

I think this is odd, I would have guessed they are different somehow.

You need to know what type of motor it is to use the right global functions.

Page 23: Learning C really fast A power point for Jay. RobotC vs C RobotC is slightly different than C We will cover standard C Then RobotC differences.

resetMotorEncoder(armMotor); //Take current position as zero.

setServoTarget(armMotor, 300); //Enable Servo Mode and move to position 60.

The global functions for dealing with a Servo. I'm not sure how these work, you will have to

test them out.

Page 24: Learning C really fast A power point for Jay. RobotC vs C RobotC is slightly different than C We will cover standard C Then RobotC differences.

#pragma config(Sensor, port5, colorDetector, sensorVexIQ_Color12Color)

Defining a sensor. Its a Sensor, not a Motor It's on port5 and named colorDetector. It's a type of sensorVexIQ_Color12Color. This

line is another just use it as is line. At this point you don't need to worry about it.

Page 25: Learning C really fast A power point for Jay. RobotC vs C RobotC is slightly different than C We will cover standard C Then RobotC differences.

getColorName(colorDetector) != colorGreen

getColorName is the global function colorDetector is the sensor we just defined. colorGreen is a constant.