Using Pre-written C Functions • Need the following information

advertisement
Using Pre-written C Functions
• Need the following information
– Name of the function
– Types of the input parameters
– Return type of the function
• Use the necessary include
– #include <math.h> for math functions
– #include <stdlib.h> for rand function
Examples of Function Calls
• rand
– ranNum = 1 + rand()%99;
– ranYearNinties = 1990 + rand()%10;
• math
– difference = abs(price-cost);
– phi = (1 + sqrt(5))/2;
– distance = sqrt(pow(x,2)+pow(y,2));
Conditional Expressions
• Relational Operators
– > (greater than)
– < (less than)
– >= (greater than or equal to)
– <= (less than or equal to)
– == (equal to – notice the TWO equal signs)
– != (not equal to)
Conditional Expressions
• Allow comparison of two primitive types
• Examples
– b*b >= 4*a*c
– money < 1000
– score != 21
• Always evaluate to 1 or 0
– 1 represents true
– 0 represents false
Complex Boolean Expressions
• Boolean Operators
– && (and)
– || (or)
– ! (not)
• Used to put together conditional
expressions
• Examples
– (age >= 21) && (age <= 65)
– (b != 0) && (a/b > 0)
And, Or, Not
• and (&&)
– Only true if both clauses are true
– IT IS INCORRECT TO DO SOMETHING LIKE 21 <=
age <= 65. The proper expression is (21 <= age) &&
(age <= 65).
• or (||)
– True as long as at least one clause is true
– Checks conditions in order, from left to right.
• not (!)
– Negates value of the original expression
Standard If Statement
•
•
•
•
•
•
if (<boolean expr>)
stmt1;
else
stmt2;
stmtA;
stmtB;
• Evaluate the boolean
expression
• If it is true, execute
stmt1
• If it is not, execute
stmt2
• Then, in both cases,
proceed to stmtA and
continue.
Block of Statements
• if (<boolean expression>)
{
•
stmt11;
•
stmt12;
•
.
•
.
•
stmt1n;
• }
• else {
•
stmt21;
•
stmt22;
•
.
•
stmt2m;
• }
• stmtA;
• stmtB;
•
•
•
•
•
Same as before
But if the boolean expression is
true, statements 11 through 1n all
get executed in order
Otherwise, if it is false, statements
21 through 2m all get executed in
order
In all cases, one or the other set of
statements get executed, never
both, and never neither.
Afterwards, stmtA is always
executed, regardless of the value
of the boolean expression
Else-If Clause
•
•
•
•
•
•
•
•
•
if (<boolean expr1>)
<stmts1>
else if (<boolean expr2>)
<stmts2>
else if (<boolean expr3>)
<stmts3>
else
<stmtsn>
stmtA
• Now, we check boolean
expressions in order
• When we find the FIRST
true one, we execute the
statement corresponding
to it.
• If none are true, we
execute the statement in
the else clause
• Then, we continue to
stmtA.
Notes about if statement
• All else if and else clauses are optional
• No “else if” or “else” is possible without a
preceding and matching “if”.
• A block of statements can be used for any
clause, but is not necessary. They can be
mixed with clauses that don’t have a block.
• Be very careful about forming boolean
expressions. Their order and form matter.
Nested If Statements
• Definition: an if statement inside of ANY
clause of an if statement.
• Matching else problem
– if no curly braces {} are used, this can occur
– two ifs, but only one else.
– Rule – the else ALWAYS matches the inner
most if
Matching-Else Problem Example
• if (month == 4)
•
if (day > 15)
•
printf("Your taxes are late.\n");
•
else
•
printf("File your taxes by 4/15.\n");
• If month is NOT 4
– Nothing gets printed
• If month is 4 and day is 15 or less
– File your taxes by 4/15 is printed
• If month is 4 and day is 16 or more
– Your taxes are late is printed
Forgetting {}
• if (month == 4)
•
printf(“It is close to tax time.\n”);
•
printf(“Finish by the 15th.\n”);
• else
•
printf(“It is not tax month.\n”);
• This is a syntax error
• Finish by the 15th would always print, and
no statement is allowed to start with
else.
• Curly braces for the if fix it.
Forgetting {}
• if (month == 4)
•
printf(“It is close to tax time.\n”);
• else
•
printf(“It is not tax month.\n”);
•
printf(“Find something else to do.\n”);
• This is perfectly valid.
• But, the statement, “Find something else
to do” will always print no matter what.
Difference between 1 if and
separate ifs
• With one if statement, only one clause of
statements can be executed
• With several separate if statements, one
after another, there is the potential for
multiple if statements to be executed
Example of separate ifs
• if (grade >= 90)
– printf(“A\n”);
• if (grade >= 80)
– printf(“B\n”);
• if (grade >= 70)
– printf(“C\n”);
• if (grade >= 80)
– printf(“D\n”);
• Else
– printf(“F\n”);
One Last Note
• Order of Operations of && is greater than
||
• Easiest to just use extra parentheses.
Download