Sunteți pe pagina 1din 28

Decision Making

Decision Making In
Computers
A circuit quite simply allows one out of two
choices to be made depending on its inputs
When decisions are made in a computer program,
they are simply the result of a computation in
which the final result is either TRUE or FALSE
The value zero (0) is considered to be FALSE by
C++. Any positive or negative value is considered
to be TRUE

Programming & Decisions


Practically

all computer programs, when


modeled with a flowchart, demonstrate that
branching occurs within their algorithms.

Decision Making in C++


if statement
2. switch statement
3. ? conditional operator statement
4. goto statement
1.

Using Relational Operators

Relational operators provide the tools


with which programs make decisions
with true and false evaluations

==
equal to NOTE: this is two equals symbols next
to each other, not to be confused with the assignment
operator, =
>
greater than
<
less than
>=
greater than or equal to
<=
less than or equal to
!=
not equal to

Using Logical Operators


When complex decisions must be coded into an
algorithm, it may be necessary to "chain together"
a few relational expressions (that use relational
operators)
This is done with logical operators (also called
Boolean operators.)

&&
is the logical AND
operator
||
is the logical OR
operator

Truth Tables
Use this truth table to determine the results of the
logical operators. In this table, 1 represents TRUE
and 0 represents FALSE.
Note that the ! symbol (the logical NOT operator)
changes a TRUE to a FALSE.

AND
A
0
0
1
1

B
0
1
0
1

A && B
0
0
0
1

OR
A
0
0
1
1

B
0
1
0
1

A || B
0
1
1
1

NOT
A
0
1

!A
1
0

Order of Logical Operations

Logical operators may be mixed within


evaluation statements but the following order of
preference must be respected:
1.
2.
3.

NOT operator (!)


AND operator (&&)
OR operator (||)

Short-circuit evaluation in C++ allows the


compiler to quickly evaluate a logical expression
in some cases without having to completely
evaluate each part of the expression

Complete order of operations

The complete order of operations including all


of the arithmetic, relational, and logical
operators including all of the basic arithmetic,
relational, & logical operators is:
*, /, %
+, <, >, <=, >=, ==, !=
!
&&
||

Compare and Branch


A program

can instruct a computer to


compare two items and do something
based on a match or mismatch which, in
turn, redirect the sequence of programming
instructions.
There

are two forms:


IF-THEN
IF-THEN-ELSE

Levels of Complexity for if


Simple

if statement
if else statement
Nested if else statement
else..if ladder

IF-THEN
Entry
Test
condition p
Exit

false

true

True
statement a

Use the IF structure


Practically

all computer languages have


some sort of if structure. In C++, the if
structure is a one-way selection structure:
if (number == 3)
{
cout << "The value of number is 3";
}

IF structures use a control expression to


determine if the code in the braces is to be
executed or not

Compound Conditionals
You

must use the AND operator (&&) to


form a compound relational expression:
if (0 < number && number < 10)
{
cout << number << " is greater
than 0 but less than 10." << endl;
}

Coding IF Structures
Place

a semicolon at the end of each


statement within the braces, which can
contain many executable statements
Use curly braces around the body of an
IF structure even if there is only one
statement

IFELSE
Entry
Test
condition p

false

false
statement a

true

Exit

true
statement a

General Form
if (test expression)
{
True-block statements;
}
else
{
False-block statements;
}
next statement;

The If Else statement

Two-way selection structure since either the block


of code after the "if" part will be executed or the
block of code after the "else" part will be executed

The If" part is executed if the control expression


is TRUE while the "else" part is executed if the
"if" part is FALSE, guaranteeing one part of the
expression to be executed or the other

if else if Ladder: General Form


if (condition 1)
statement 1;
else if (condition 2)
statement 2;
else if (condition 3)
statement 3;
else if (condition n)
statement n;
else
default statement;
statement x;

if/else if statement

As soon as a true condition is found, the statement associated


with it is executed and control is transferred to the statement
after the ladder
The else clause is optional just as it is with an if statement.
if (number > 10)
{
cout << number << " is greater than 10." << endl;
}
else if (number <= 9 && number >= 6)
{
cout << number << " is greater than 5
and less than 10." << endl;
}
else
{
cout << number << "must be less than 6." << endl;
}
number = number + 1;

Nested If Statements
If

structures and if/else statements can


be nested within one another in order to
model complex decision structures.
Use

the braces and semicolons properly


when coding such structures.

General Form
if (test condition 1)
{ // true-block1 statements
if (test condition 2)
{
true-block2 statements;
}
else
{
false-block2 statements;
}
}
else
{
false-block1 statements;
}

Switch Structure

The switch structure is a multiple-selection


structure that allows even more complicated
decision statements than a two-way if/else structure
allows.

It chooses one of the "cases" depending on the result


of the control expression.

Only variables with the INT or CHAR data types


may be used in the control expressions (i.e.
parentheses) of switch statements.

Single quotes must be used around CHAR variables


Single quotes are NOT used around the integer values

Sample Switch Structure


switch (character_entered)
{
case A :
cout << The character entered was A.\n;
break;
case B:
cout << The character entered was B.\n;
default:
cout << Illegal entry\n;
}

Switch Structure
The

break statement must be used within


each case if you do not want following
cases to evaluate once one case is found.
When the break statement is executed
within a switch, C++ will execute the next
statement outside of the switch statement.
The default case, if present, will result if
none of the prior cases apply

Grouping Cases
switch (number)
{
case 1:
case 3:
case 5:
case 7:
case 9:
cout << number << " is an even number." << endl;
break;
case 2:
case 4:
case 6:
case 8:
cout << number << " is an odd number. " << endl;
break;
default:
cout << number << " is not a value between or including 1 and 9." <<
endl;
break; }

Conditional Operator
General

form:
conditional expression ? exp-1:exp-2 ;

The conditional expression is evaluated first. If


the result is non-zero, exp-1 is evaluated and is
returned as the value of the conditional
expression. Otherwise, exp-2 is evaluated and
its value is returned

f=(c = = 'y') ? 1: 0;

GOTO Statement
Unconditional

branching

GOTO label;

label: statement;
Not recommended but may be used
occasionally

S-ar putea să vă placă și