Programming Concepts part A

Programing Concept
(Part A)
ENGR 10
Introduction to Engineering
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
1
What is Computer Programming ?
As a computer programmer, your job is to instruct a
computer to do things. Basically, writing computer
programs is describing how to do something. The lists
of instructions that you will write are computer
programs, and the stuff that these instructions
manipulate are different types of objects, e.g., numbers,
words, graphics, etc...
“One thing that you will learn quickly is that a
computer is very dumb but obedient. It does
exactly what you tell it to do, which is not
necessarily what you wanted.”
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
2
“It has often been said that a person does
not really understand something until
he/she teaches it to someone else.
Actually a person does not really
understand something until after teaching it
to a computer, i.e., express it as an
algorithm.”
(Donald Knuth, "American Mathematical Monthly," 1981)
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
3
Programming Languages
Procedure-oriented programming
A type of programming where a structured method
of creating programs is used. With procedureoriented programming, a problem is broken up into
parts and each part is then broken up into further
parts. All these parts are known as procedures .
They are separate but work together when needed.
A main program centrally controls them all.
Examples of procedure-oriented languages are COBOL,
FORTRAN, and C; these are not commonly used today.
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
4
Programming Languages
Object-oriented programming
In object-oriented programming, data types defined
by the programmer are called classes (templates for
a real world object to be used in a program). For
example, a programmer can create a data type that
represents a sensor. This class can contain the
properties of a sensor (sensitivity, range, on-off,
etc.) and functions that specify what it does.
Examples of object-oriented languages are C++, Java.
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
5
Different Programming Languages
C
An advanced programming language used for
software application development. Originally
developed by Dennis Ritchie at Bell Labs in the
1970's. The UNIX operating system is written in C
(popular before Windows).
C++
Next generation of the C language. The difference
between the two languages is that C++ is objectoriented. C++ was developed by Bjarne Stroustrup
at Bell Labs and is a very popular language for
graphical applications.
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
6
A Math Example
y = [ 3 × ( a × a + 7) ] / b + 4
a2
a2 + 7
3 × (a2 + 7) = 3a2 + 21
(3a2 + 21) / b
(3a2 + 21) / b + 4
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
7
Consider the sequential execution of the above
expressions to find the value of y:
y = [ 3 × ( a × a + 7) ] / b + 4
•
•
•
•
•
Ken Youssefi/Ping Hsu
p = a x a;
q = p + 7;
r = 3 x q;
s = r / b;
y = s + 4;
Introduction to Engineering – E10
8
Application specific programming language
based on C++
Open a
new file
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
9
EasyCPro – old version (PIC)
Your program is
inserted here
Function
blocks
Ken Youssefi/Ping Hsu
Program
code
Flow chart
Introduction to Engineering – E10
10
EasyCcortex – new version
Open a New Standslone Project
and select Autonomous Only
Project
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
11
EasyCcortex - new version
Use the Window option to configure the appearance of the screen
Your program is
inserted here
Function
blocks
Ken Youssefi/Ping Hsu
Program
code
Flow chart
Introduction to Engineering – E10
12
Variables
A “variable” is a place where we store a value.
•
A = 10 ; // The value 10 is stored in A.
• Any statement after the sign “//” is NOT part of the
program. It is a comment made by the
programmer.
• A semicolon is required at the end of each
C instruction.
• Value of 10 is placed in the storage location
called “A”. So “A” is a variable
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
13
Variables
Every variable in the program needs to be declared
in the beginning of the program.
Declaration of the variable tells the
program its name and its type
int speed ;
The word “int” indicates that the
variable ‘speed’ is an integer variable.
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
14
Commonly Used Variable Types
Variable
Type
Description
Range
Int
Stores integer values
EX: 5, -3200
-32,768 to +32,767
Long
Stores integer values with
extended range
EX: 56, 6000, -4,234,128
-2,147,483,648 to
+2,147,483,647
Stores values with decimal
point
EX: 1.245, -4.2341
Stores characters*
EX: A, B, @, #
[-10^+38, -10^-38]
0
[10^-38, 10^+38]
_
float
char
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
215
231
15
Variables
Global Variable
This variable is accessible from
anywhere within your program.
Local Variable
This variable is only accessible from
a “local area” within your program
(“functions” will be discussed later).
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
16
Global Variable Declaration
To declare a global variable, right
click on the tab “Global” in the
Main program and select Edit
Block (or double click the block)
Cortex (new controller )
Starting value of the variable
Insert variable name
Select variable type
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
17
Example of Assigning Variables
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
18
Assignment Operator
In C language “ = ” is an assignment operator, not
an “ is equal to ” statement.
This == symbol is used for checking ‘equal’
condition, not for value assignment.
• A = 10; // means assign 10 to A.
• A = B; // means assign the value of B to A
• A = A+1; //means assign the value A+1
// back to A, i.e., increase A by 1.
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
19
Assignment Operator: Examples:
int A; // a variable named A of type integer
int B; // a variable named B of type integer
A = 10; // value 10 is assigned to variable A
B = (24+16)/2; // 20 is assigned to variable B
A = A + 15; // value of (A+15) is first evaluated
and then assigned to A.
So now A=(10+15)=25
B = A + B ; // Now A = 25, B = (25+20)=45
A = B – 40; // Now A=(45-40)=5, B=45
A = A * B; // Now A=(5*45)=225, B=45
B = A / 9; // Now A=225, B=25
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
20
Clicker Question 1
What is the value of B at the end of
this program?
int A;
int B;
A = 12;
B = 15;
A = A + (B/3) ;
B=A+B–7;
(A)12, (B)15, (C)17, (D)20, (E)25
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
21
Decision Making
• The ability to make decision is the most
basic form of intelligence.
• A linear (sequential) execution of
instructions can only perform a simple task
that does not involve decision making.
• The IF instruction gives a C program
decision making ability
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
22
IF Statement (logic statement)
Example
Only if this condition is true,
this instruction is executed.
if (Number == 0)
{
PrintToScreen (“The Number is Zero”);
}
if (Number < 0)
{
PrintToScreen (“The Number is negative”);
}
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
23
IF Statement
Select, drag and drop the IF statement into the flow chart
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
24
IF-ELSE Statement
IF-ELSE statement should be used where there are
only two possible cases.
If (score <60)
{ PrintToScreen(“You failed the test”);}
else
{ PrintToScreen(“You passed the test”);}
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
25
EasyCPro - Example
Drag and drop the IF module, the Print To Screen, and Else
module into the flow chart
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
26
Clicker question 2
What is the value of A and B at end of
this program?
A=9;
B = 12 ;
if ((A + B) > 22)
{ A=B;
B = A; }
else
{ B = A;
A = B; }
Ken Youssefi/Ping Hsu
(A)
(B)
(C)
(D)
(E)
Introduction to Engineering – E10
A=12, B=21
A=9, B=12
A= 9, B=9
A=12, B=12
A=12, B=9
27
WHILE Statement
The WHILE statement is useful for repeating a set
of instructions
Suppose we have to add the first 50
positive integers
1+2+3+4+……………………+48+49+50
You could use a single statement:
int SUM ; // integer variable for the result
SUM = 1+2+3+………………..+48+49+50;
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
28
How to Add a User Code
Enter the expression
to be executed
Drag and drop
User Code
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
29
Much better approach is
To use “While” statement
Initialize the variables
SUM and COUNTER
This condition is checked
first. If it is true, the
block of instructions
enclosed by the curly
brackets { } is executed.
This block of instructions
is executed repeatedly
until the condition is not
true.
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
30
Clicker Question 3
What is the final value of A ?
Ken Youssefi/Ping Hsu
int A;
int i;
A = 0;
i = 0;
while (i < 3)
{
A = A + i;
i = i + 1;
}
(A)
(B)
(C)
(D)
(E)
Introduction to Engineering – E10
2
3
4
6
10
31
Solution to Clicker question 3
• Initially i = 0, A = 0.
• First iteration: condition 0<3 is true
• A = 0+0=0, i = 1
• Second iteration : condition 1<3 is true
• A = 0+1=1, i = 2
• Third iteration : condition 2<3 is true
• So A = 1+2=3, i = 3
• Fourth iteration : condition 3<3 is false
• So the WHILE loop stops.
Final Value of A is 3.
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
int A;
int i;
A = 0;
i = 0;
while (i < 3)
{
A = A + i;
i = i + 1;
}
32
Finite and Infinite Loop
• In the previous examples we have employed
condition checking in order to control the flow of
execution.
– We have made the loop to repeat only a finite number
of times.
• We can also make the loop to repeat infinitely
The infinite loop is necessary to continuously
check the signal coming from the sensor.
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
33
Write a short program so that the robot
moves forward as long as it has not
encounter any obstacles (bumper
sensor is not pressed), and it stops when
bumper is activated (hit an obstruction).
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
34
Setting up the program for the Sensors
Declare the variable Bumper
Double click the Variable block to create a
new “int” variable named “bumper”
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
35
Setting up the program for the Sensors
Select, drag and drop the While Loop
icon between the BEGIN and End
Ken Youssefi/Ping Hsu
In the config. window set the
condition of the while loop to
be 1==1, this will force the
while loop to loop for an
infinite amount of time
Introduction to Engineering – E10
36
Setting up the program for the Sensors
Select, drag and drop the
“Bumper Switch” icon into the
program in the WHILE loop
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
37
Setting up the program for the Sensors
Set the Digital Input # to the port
that the sensor is plugged in
This is an infinite loop to check
the signal from the bumper. If
the bumper is pushed its value
will change to 0
Select Bumper from the list
of variables
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
38
Integrating Motors with Sensors
Drag and drop an IF
and ELSE icons from
the Program Flow
into the program
below the sensor
Set the condition for
the IF statement,
bumper == 1, no
obstacle ,
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
39
Integrating Motors with Sensors
Your robot will be using
two motors. Drag and
drop two motors in the
IF loop and two motors
in the ELSE loop. Set the
motor ports and speeds.
Go
forward
With this program, the
robot moves forward as
long as the bumper is not
pressed (value=1). Robot
will stop if it hits an
obstacle (value=0)
Stop
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
40
Bumper is
not pressed
Bumper is
pressed
Ken Youssefi/Ping Hsu
Introduction to Engineering – E10
41