39
if Lesson 3 CS1313 Fall 2015 1 if Lesson 3 Outline 1. if Lesson 3 Outline 2. Multiple, Related Conditions #1 3. Multiple, Related Conditions #2 4. Multiple, Related Conditions #3 5. else if Clause #1 6. if inside else 7. else if Clause #2 8. else if Clause #3 9. if-else if Can Short Circuit 10. if-else if Might Execute No Clause 11. if-else if Indenting 12. if-else if Clause Order 13. if-else if Example #1 14. if-else if Example #2 15. if-else if Example Flowchart 16. Mixing Branching Clauses #1 17. Mixing Branching Clauses #2 18. Mixing Branching Clauses #3 19. Mixing Branching Clauses #4 20. Mixing Branching Clauses #5 21. if - else if - else Example #1 22. if - else if - else Example #2 23. if - else if - else Flowchart 24. Multiple else if Clauses #1 25. Multiple else if Clauses #2 26. Multiple else if Clauses #3 27. Multiple else if Clauses #4 28. General Rule for Multiple else if Clauses 29. Order of Condition Evaluations 30. Multiple else if Example #1 31. Multiple else if Example #2 32. Multiple else if Flowchart 33. if, Multiple else if, else Clauses #1 34. if, Multiple else if, else Clauses #2 35. if, Multiple else if, else Clauses #3 36. if, Multiple else if, else Clauses #4 37. if, Multiple else if, else Clauses #5 38. if, Multiple else if, else Example #1

if Lesson 3 Outline

  • Upload
    chen

  • View
    34

  • Download
    0

Embed Size (px)

DESCRIPTION

if Lesson 3 Outline. if Lesson 3 Outline Multiple, Related Conditions #1 Multiple, Related Conditions #2 Multiple, Related Conditions #3 else if Clause #1 if inside else else if Clause #2 else if Clause #3 if-else if Can Short Circuit if-else if Might Execute No Clause - PowerPoint PPT Presentation

Citation preview

Page 1: if Lesson 3 Outline

1if Lesson 3

CS1313 Fall 2015

if Lesson 3 Outline1. if Lesson 3 Outline2. Multiple, Related Conditions #13. Multiple, Related Conditions #24. Multiple, Related Conditions #35. else if Clause #16. if inside else7. else if Clause #28. else if Clause #39. if-else if Can Short Circuit10. if-else if Might Execute No Clause11. if-else if Indenting12. if-else if Clause Order13. if-else if Example #114. if-else if Example #215. if-else if Example Flowchart16. Mixing Branching Clauses #117. Mixing Branching Clauses #218. Mixing Branching Clauses #319. Mixing Branching Clauses #420. Mixing Branching Clauses #5

21. if - else if - else Example #122. if - else if - else Example #223. if - else if - else Flowchart24. Multiple else if Clauses #125. Multiple else if Clauses #226. Multiple else if Clauses #327. Multiple else if Clauses #428. General Rule for Multiple else if Clauses29. Order of Condition Evaluations30. Multiple else if Example #131. Multiple else if Example #232. Multiple else if Flowchart33. if, Multiple else if, else Clauses #134. if, Multiple else if, else Clauses #235. if, Multiple else if, else Clauses #336. if, Multiple else if, else Clauses #437. if, Multiple else if, else Clauses #538. if, Multiple else if, else Example #139. if, Multiple else if, else Example #2

Page 2: if Lesson 3 Outline

2if Lesson 3

CS1313 Fall 2015

Multiple, Related Conditions #1What if we have multiple, related conditions and we want to

be able to handle each?Well, we could simply use multiple if blocks:if ((users_number < minimum_number) || (users_number > maximum_number)) { printf("Hey! That’s not between %d and %d!\n", minimum_number, maximum_number);} /* if ((users_number < minimum_number) || ... */if (abs(users_number - computers_number) <= close_distance) { printf("Close, but no cigar.\n");} /* if (abs(users_number - computers_number) <= ... */

That’s not too cumbersome.

Page 3: if Lesson 3 Outline

3if Lesson 3

CS1313 Fall 2015

Multiple, Related Conditions #2if ((users_number < minimum_number) || (users_number > maximum_number)) { printf("Hey! That’s not between %d and %d!\n", minimum_number, maximum_number);} /* if ((users_number < minimum_number) || ... */if (abs(users_number - computers_number) <= close_distance) { printf("Close, but no cigar.\n");} /* if (abs(users_number - computers_number) <= ... */

BUT: Notice that there’s a case where both printf statements might be executed: in the event that both:

users_number is less than minimum_number, and users_number is within close_distance of computers_number.

For example, if minimum_number were 1, close_distance were 2 and users_number were 3.

Page 4: if Lesson 3 Outline

4if Lesson 3

CS1313 Fall 2015

Multiple, Related Conditions #3if ((users_number < minimum_number) || (users_number > maximum_number)) { printf("Hey! That’s not between %d and %d!\n", minimum_number, maximum_number);} /* if ((users_number < minimum_number) || ... */if (abs(users_number - computers_number) <= close_distance) { printf("Close, but no cigar.\n");} /* if (abs(users_number - computers_number) <= ... */

Consider the case that both: users_number is less than minimum_number, and users_number is within close_distance of computers_number.

In that case, both outputs will be printed, which is not what we want; we want either to be told that we’re outside the range, or to be told that we’re close, but not both.

Page 5: if Lesson 3 Outline

5if Lesson 3

CS1313 Fall 2015

if inside elseif ((users_number < minimum_number) || (users_number > maximum_number)) { printf("Hey! That’s not between %d and %d!\n", minimum_number, maximum_number);} /* if ((users_number < minimum_number) || ... */else { if (abs(users_number - computers_number) <= close_distance) { printf("Close, but no cigar.\n"); } /* if (abs(users_number - computers_number) ... */} /* if ((users_number < minimum_number) || ...else */

This approach looks okay, but you can imagine how pushed to the right the indenting would get if we had many of these in the same if block.

Page 6: if Lesson 3 Outline

6if Lesson 3

CS1313 Fall 2015

else if Clause #1if ((users_number < minimum_number) || (users_number > maximum_number)) { printf("Hey! That’s not between %d and %d!\n", minimum_number, maximum_number);} /* if ((users_number < minimum_number) || ... */else if (abs(users_number - computers_number) <= close_distance) { printf("Close, but no cigar.\n");} /* if (abs(users_number - computers_number) <= ... */

C allows us to set up another special clause of statements attached to the first if clause, called an else if clause.

Page 7: if Lesson 3 Outline

7if Lesson 3

CS1313 Fall 2015

else if Clause #2if ((users_number < minimum_number) || (users_number > maximum_number)) { printf("Hey! That’s not between %d and %d!\n", minimum_number, maximum_number);} /* if ((users_number < minimum_number) || ... */else if (abs(users_number - computers_number) <= close_distance) { printf("Close, but no cigar.\n");} /* if (abs(users_number - computers_number) <= ... */

The statements inside the if clause are executed only in the event that the condition in the if statement evaluates to true (1).

Page 8: if Lesson 3 Outline

8if Lesson 3

CS1313 Fall 2015

else if Clause #3if ((users_number < minimum_number) || (users_number > maximum_number)) { printf("Hey! That’s not between %d and %d!\n", minimum_number, maximum_number);} /* if ((users_number < minimum_number) || ... */else if (abs(users_number - computers_number) <= close_distance) { printf("Close, but no cigar.\n");} /* if (abs(users_number - computers_number) <= ... */

The statements inside the else if clause are executed only in the event that both of the following occur:

1. The if condition evaluates to false (0), and2. the else if condition evaluates to true (1).

Page 9: if Lesson 3 Outline

9if Lesson 3

CS1313 Fall 2015

if-else if Can Short Circuitif ((users_number < minimum_number) || (users_number > maximum_number)) { printf("Hey! That’s not between %d and %d!\n", minimum_number, maximum_number);} /* if ((users_number < minimum_number) || ... */else if (abs(users_number - computers_number) <= close_distance) { printf("Close, but no cigar.\n");} /* if (abs(users_number - computers_number) <= ... */

In the case that the if condition evaluates to true (1), it’s also the case that the else if condition isn’t evaluated at all.

Why? Because in that case the statements inside the else if clause will be skipped regardless of the value of the else if condition, so the evaluation of the else if condition would be irrelevant. Why do work that isn’t going to help? This is another instance of short circuiting.

Page 10: if Lesson 3 Outline

10if Lesson 3

CS1313 Fall 2015

if-else if Might Execute No Clauseif ((users_number < minimum_number) || (users_number > maximum_number)) { printf("Hey! That’s not between %d and %d!\n", minimum_number, maximum_number);} /* if ((users_number < minimum_number) || ... */else if (abs(users_number - computers_number) <= close_distance) { printf("Close, but no cigar.\n");} /* if (abs(users_number - computers_number) <= ... */

Notice that it could be the case that no clause of this if block gets executed, in the event that both conditions evaluate to false (0).

Page 11: if Lesson 3 Outline

11if Lesson 3

CS1313 Fall 2015

if-else if Indentingif ((users_number < minimum_number) || (users_number > maximum_number)) { printf("Hey! That’s not between %d and %d!\n", minimum_number, maximum_number);} /* if ((users_number < minimum_number) || ... */else if (abs(users_number - computers_number) <= close_distance) { printf("Close, but no cigar.\n");} /* if (abs(users_number - computers_number) <= ... */

The exact same indenting rules that apply to if clauses and else clauses also apply to else if clauses.

Page 12: if Lesson 3 Outline

12if Lesson 3

CS1313 Fall 2015

if-else if Clause Orderif ((users_number < minimum_number) || (users_number > maximum_number)) { printf("Hey! That’s not between %d and %d!\n", minimum_number, maximum_number);} /* if ((users_number < minimum_number) || ... */else if (abs(users_number - computers_number) <= close_distance) { printf("Close, but no cigar.\n");} /* if (abs(users_number - computers_number) <= ... */

The order of the clauses is:1. if clause (which MUST be FIRST), followed by2. else if clauses, if any.

Page 13: if Lesson 3 Outline

13if Lesson 3

CS1313 Fall 2015

if-else if Example #1#include <stdio.h>

int main (){ /* main */ const int computers_number = 5; int users_number; printf("Pick an integer:\n"); scanf("%d", &users_number); if (users_number < computers_number) { printf("That’s unbelievable! Your number is"); printf(" less than mine!\n"); printf("Well, okay, maybe it’s believable.\n"); } /* if (users_number < computers_number) */ else if (users_number > computers_number) { printf("Surprise, surprise! Your number is"); printf(" greater than mine\n"); } /* if (users_number > computers_number) */ printf("And now I’m sick of you.\n"); printf("Bye!\n");} /* main */

Page 14: if Lesson 3 Outline

14if Lesson 3

CS1313 Fall 2015

if-else if Example #2% gcc -o islesselseif islesselseif.c% islesselseifPick an integer:6Surprise, surprise! Your number is greater than mine!And now I’m sick of you.Bye!% islesselseifPick an integer:5And now I’m sick of you.Bye!% islesselseifPick an integer:4That’s unbelievable! Your number is less than mine!Well, okay, maybe it’s believable.And now I’m sick of you.Bye!

Page 15: if Lesson 3 Outline

15if Lesson 3

CS1313 Fall 2015

if-else if Example Flowchartprintf("Pick an integer:\n");scanf("%d", &users_number);if (users_number < computers_number) { printf("That’s unbelievable! Your number is"); printf(" less than mine!\n"); printf("Well, okay, maybe it’s believable.\n");} /* if (users_number < computers_number) */else if (users_number > computers_number) { printf("Surprise, surprise! Your number is"); printf(" greater than mine\n");} /* if (users_number > computers_number) */printf("And now I’m sick of you.\n");printf("Bye!\n");

Page 16: if Lesson 3 Outline

16if Lesson 3

CS1313 Fall 2015

Mixing Branching Clauses #1if ((users_number < minimum_number) || (users_number > maximum_number)) { printf("Hey! That’s not between %d and %d!\n", minimum_number, maximum_number);} /* if ((users_number < minimum_number) || ... */else if (users number == computers_number) { printf("That’s amazing!\n");} /* if (users number == computers_number) */else { printf("Bzzzt! Not even close.\n");} /* if (users number == computers_number)...else */

Here we have if, else if and else clauses.The statements inside the else clause are executed only in

the event that BOTH the if condition and the else if condition evaluate to false (0).

Page 17: if Lesson 3 Outline

17if Lesson 3

CS1313 Fall 2015

Mixing Branching Clauses #2if ((users_number < minimum_number) || (users_number > maximum_number)) { printf("Hey! That’s not between %d and %d!\n", minimum_number, maximum_number);} /* if ((users_number < minimum_number) || ... */else if (users number == computers_number) { printf("That’s amazing!\n");} /* if (users number == computers_number) */else { printf("Bzzzt! Not even close.\n");} /* if (users number == computers_number)...else */The presence of the else clause guarantees that at

exactly one of the clauses of this if block will be executed.

If the else clause were absent, then it might be that no clause is executed, in the event that both of the conditions evaluated to false (0).

Page 18: if Lesson 3 Outline

18if Lesson 3

CS1313 Fall 2015

Mixing Branching Clauses #3if ((users_number < minimum_number) || (users_number > maximum_number)) { printf("Hey! That’s not between %d and %d!\n", minimum_number, maximum_number);} /* if ((users_number < minimum_number) || ... */else if (users number == computers_number) { printf("That’s amazing!\n");} /* if (users number == computers_number) */else { printf("Bzzzt! Not even close.\n");} /* if (users number == computers_number)...else */

Again, notice that each clause has its own block open and block close.

Page 19: if Lesson 3 Outline

19if Lesson 3

CS1313 Fall 2015

Mixing Branching Clauses #4if ((users_number < minimum_number) || (users_number > maximum_number)) { printf("Hey! That’s not between %d and %d!\n", minimum_number, maximum_number);} /* if ((users_number < minimum_number) || ... */else if (users number == computers_number) { printf("That’s amazing!\n");} /* if (users number == computers_number) */else { printf("Bzzzt! Not even close.\n");} /* if (users number == computers_number)...else */

Notice that the indenting rules that apply to if clauses and else clauses also apply to else if clauses.

Page 20: if Lesson 3 Outline

20if Lesson 3

CS1313 Fall 2015

Mixing Branching Clauses #5if ((users_number < minimum_number) || (users_number > maximum_number)) { printf("Hey! That’s not between %d and %d!\n", minimum_number, maximum_number);} /* if ((users_number < minimum_number) || ... */else if (users number == computers_number) { printf("That’s amazing!\n");} /* if (users number == computers_number) */else { printf("Bzzzt! Not even close.\n");} /* if (users number == computers_number)...else */

Notice that the if clause MUST be the FIRST clause of the if block.

Notice that, IF there is an else clause, then the else clause MUST be the LAST clause of the if block.

Page 21: if Lesson 3 Outline

21if Lesson 3

CS1313 Fall 2015

if - else if - else Example #1#include <stdio.h>int main (){ /* main */ const int computers_number = 5; int users_number; printf("Pick an integer:\n"); scanf("%d", &users_number); if (users_number < computers_number) { printf("That’s unbelievable! Your number is"); printf(" less than mine!\n"); printf("Well, okay, maybe it’s believable.\n"); } /* (users_number < computers_number) */ else if (users_number > computers_number) { printf("Surprise, surprise! Your number is"); printf(" greater than mine!\n"); } /* if (users_number > computers_number) */ else { printf("Yowza! Your number is equal to mine!\n"); } /* if (users_number > computers_number)...else */ printf("And now I’m sick of you.\n"); printf("Bye!\n");} /* main */

Page 22: if Lesson 3 Outline

22if Lesson 3

CS1313 Fall 2015

if - else if - else Example #2% gcc -o islesselseifelse islesselseifelse.c% islesselseifelsePick an integer:6Surprise, surprise! Your number is greater than mine!And now I’m sick of you.Bye!% islesselseifelsePick an integer:5Yowza! Your number is equal to mine!And now I’m sick of you.Bye!% islesselseifelsePick an integer:4That’s unbelievable! Your number is less than mine!Well, okay, maybe it’s believable.And now I’m sick of you.Bye!

Page 23: if Lesson 3 Outline

23if Lesson 3

CS1313 Fall 2015

if - else if - else Flowchartprintf("Pick an integer:\n");scanf("%d", &users_number);if (users_number < computers_number) { printf("That’s unbelievable! Your number is"); printf(“ less than mine!\n"); printf("Well, okay, maybe it’s believable.\n");} /* (users_number < computers_number) */else if (users_number > computers_number) { printf("Surprise, surprise! Your number is\n"); printf(" greater than mine!\n");} /* if (users_number > computers_number) */else { printf("Yowza! Your number is equal to mine!\n");} /* if (users_number > computers_number)...else */printf("And now I’m sick of you.\n");printf("Bye!\n");

Page 24: if Lesson 3 Outline

24if Lesson 3

CS1313 Fall 2015

Multiple else if Clauses #1if ((users_number < minimum_number) || (users_number > maximum_number)) { printf("Hey! That’s not between %d and %d!\n", minimum_number, maximum_number);} /* if ((users_number < minimum_number) || ... */else if (users number == computers_number) { printf("That’s amazing!\n");} /* if (users number == computers_number) */else if (abs(users_number - computers_number) <= close_distance) { printf("Close, but no cigar.\n");} /* if (abs(users_number - computers_number) <= ... */

We don’t have to stop at just one else if clause; we can have as many as we like.

Page 25: if Lesson 3 Outline

25if Lesson 3

CS1313 Fall 2015

Multiple else if Clauses #2if ((users_number < minimum_number) || (users_number > maximum_number)) { printf("Hey! That’s not between %d and %d!\n", minimum_number, maximum_number);} /* if ((users_number < minimum_number) || ... */else if (users number == computers_number) { printf("That’s amazing!\n");} /* if (users number == computers_number) */else if (abs(users_number - computers_number) <= close_distance) { printf("Close, but no cigar.\n");} /* if (abs(users_number - computers_number) <= ... */

As usual, the statements inside the if clause are executed only in the event that the if condition (a Boolean expression completely enclosed in parentheses) in the if statement evaluates to true (1).

Page 26: if Lesson 3 Outline

26if Lesson 3

CS1313 Fall 2015

Multiple else if Clauses #3if ((users_number < minimum_number) || (users_number > maximum_number)) { printf("Hey! That’s not between %d and %d!\n", minimum_number, maximum_number);} /* if ((users_number < minimum_number) || ... */else if (users number == computers_number) { printf("That’s amazing!\n");} /* if (users number == computers_number) */else if (abs(users_number - computers_number) <= close_distance) { printf("Close, but no cigar.\n");} /* if (abs(users_number - computers_number) <= ... */As usual, the statements inside the first else if clause are

executed only in the event that both of two things occur:1. The if condition evaluates to false (0), and2. the first else if condition evaluates to true (1).

Page 27: if Lesson 3 Outline

27if Lesson 3

CS1313 Fall 2015

Multiple else if Clauses #4if ((users_number < minimum_number) || (users_number > maximum_number)) { printf("Hey! That’s not between %d and %d!\n", minimum_number, maximum_number);} /* if ((users_number < minimum_number) || ... */else if (users number == computers_number) { printf("That’s amazing!\n");} /* if (users number == computers_number) */else if (abs(users_number - computers_number) <= close_distance) { printf("Close, but no cigar.\n");} /* if (abs(users_number - computers_number) <= ... */The statements inside the 2nd else if clause are executed

only in the event that all of these things occur:1. The if condition evaluates to false (0), and2. the 1st else if condition evaluates to false (0).3. the 2nd else if condition evaluates to true (1).

Page 28: if Lesson 3 Outline

28if Lesson 3

CS1313 Fall 2015

General Rule for Multiple else if ClausesFor a given else if clause, the statements inside it are

executed only in the event that all of the following occur:1. The if condition evaluates to false (0), and2. all prior else if conditions within the entire if

block (in the event that there are any) evaluate to false (0), and

3. the given else if condition evaluates to true (1).

Page 29: if Lesson 3 Outline

29if Lesson 3

CS1313 Fall 2015

Order of Condition EvaluationsThe conditions (Boolean expressions completely enclosed in

parentheses) in the if statement and in the else if statement(s) are evaluated until one of them results in true (1).

Once a condition evaluates to true, then the conditions in all subsequent else if statements within that if block are skipped.

Page 30: if Lesson 3 Outline

30if Lesson 3

CS1313 Fall 2015

Multiple else if Example #1#include <stdio.h>int main (){ /* main */ const int computers_number = 5; int users_number; printf("Pick an integer:\n"); scanf("%d", &users_number); if (users_number < computers_number) { printf("That’s unbelievable! Your number is"); printf(" less than mine!\n"); printf("Well, okay, maybe it’s believable.\n"); } /* (users_number < computers_number) */ else if (users_number > computers_number) { printf("Surprise, surprise! Your number is"); printf(" greater than mine!\n"); } /* if (users_number > computers_number) */ else if (users_number == computers_number) { printf("Yowza! Your number is equal to mine!\n"); } /* if (users_number == computers_number) */ printf("And now I’m sick of you.\n"); printf("Bye!\n");} /* main */

Page 31: if Lesson 3 Outline

31if Lesson 3

CS1313 Fall 2015

Multiple else if Example #2% gcc -o islesselseifs islesselseifs.c% islesselseifsPick an integer:6Surprise, surprise! Your number is greater than mine!And now I’m sick of you.Bye!% islesselseifsPick an integer:5Yowza! Your number is equal to mine!And now I’m sick of you.Bye!% islesselseifsPick an integer:4That’s unbelievable! Your number is less than mine!Well, okay, maybe it’s believable.And now I’m sick of you.Bye!

Page 32: if Lesson 3 Outline

32if Lesson 3

CS1313 Fall 2015

Multiple else if Flowchartprintf("Pick an integer:\n");scanf("%d", &users_number);if (users_number < computers_number) { printf("That’s unbelievable! Your number is"); printf(“ less than mine!\n"); printf("Well, okay, maybe it’s believable.\n");} /* (users_number < computers_number) */else if (users_number > computers_number) { printf("Surprise, surprise! Your number is\n"); printf(" greater than mine!\n");} /* if (users_number > computers_number) */else I (users_number == computers_number) { printf("Yowza! Your number is equal to mine!\n");} /* if (users_number == computers_number) */printf("And now I’m sick of you.\n");printf("Bye!\n");

Page 33: if Lesson 3 Outline

33if Lesson 3

CS1313 Fall 2015

if, Multiple else if, else Clauses #1if ((users_number < minimum_number) || (users_number > maximum_number)) { printf("Hey! That’s not between %d and %d!\n", minimum_number, maximum_number);} /* if ((users_number < minimum_number) || ... */else if (users number == computers_number) { printf("That’s amazing!\n");} /* if (users number == computers_number) */else if (abs(users_number - computers_number) <= close_distance) { printf("Close, but no cigar.\n");} /* if (abs(users_number - computers_number) <= ... */else { printf("Bzzzt! Not even close.\n");} /* if (users number == computers_number)...else */Not surprisingly, we not only can have as many else if

clauses as we like, we can also have an else clause as well, as the LAST clause of the entire if block.

Page 34: if Lesson 3 Outline

34if Lesson 3

CS1313 Fall 2015

if, Multiple else if, else Clauses #2if ((users_number < minimum_number) || (users_number > maximum_number)) { printf("Hey! That’s not between %d and %d!\n", minimum_number, maximum_number);} /* if ((users_number < minimum_number) || ... */else if (users number == computers_number) { printf("That’s amazing!\n");} /* if (users number == computers_number) */else if (abs(users_number - computers_number) <= close_distance) { printf("Close, but no cigar.\n");} /* if (abs(users_number - computers_number) <= ... */else { printf("Bzzzt! Not even close.\n");} /* if (users number == computers_number)...else */

The statements inside the else clause are executed only in the event that the if condition and all of the else if conditions evaluate to false (0).

Page 35: if Lesson 3 Outline

35if Lesson 3

CS1313 Fall 2015

if, Multiple else if, else Clauses #3if ((users_number < minimum_number) || (users_number > maximum_number)) { printf("Hey! That’s not between %d and %d!\n", minimum_number, maximum_number);} /* if ((users_number < minimum_number) || ... */else if (users number == computers_number) { printf("That’s amazing!\n");} /* if (users number == computers_number) */else if (abs(users_number - computers_number) <= close_distance) { printf("Close, but no cigar.\n");} /* if (abs(users_number - computers_number) <= ... */else { printf("Bzzzt! Not even close.\n");} /* if (users number == computers_number)...else */

Notice that the statements inside the else clause will be executed only in the events that all of the conditions within the entire if block evaluate to false (0).

Page 36: if Lesson 3 Outline

36if Lesson 3

CS1313 Fall 2015

if, Multiple else if, else Clauses #4if ((users_number < minimum_number) || (users_number > maximum_number)) { printf("Hey! That’s not between %d and %d!\n", minimum_number, maximum_number);} /* if ((users_number < minimum_number) || ... */else if (users number == computers_number) { printf("That’s amazing!\n");} /* if (users number == computers_number) */else if (abs(users_number - computers_number) <= close_distance) { printf("Close, but no cigar.\n");} /* if (abs(users_number - computers_number) <= ... */else { printf("Bzzzt! Not even close.\n");} /* if (users number == computers_number)...else */

If an if block has an else clause, then the presence of that else clause guarantees that EXACTLY ONE of the clauses of the if block will be executed.

Page 37: if Lesson 3 Outline

37if Lesson 3

CS1313 Fall 2015

if, Multiple else if, else Clauses #5if ((users_number < minimum_number) || (users_number > maximum_number)) { printf("Hey! That’s not between %d and %d!\n", minimum_number, maximum_number);} /* if ((users_number < minimum_number) || ... */else if (users number == computers_number) { printf("That’s amazing!\n");} /* if (users number == computers_number) */else if (abs(users_number - computers_number) <= close_distance) { printf("Close, but no cigar.\n");} /* if (abs(users_number - computers_number) <= ... */else { printf("Bzzzt! Not even close.\n");} /* if (users number == computers_number)...else */

Each clause has its own block open and block close.

Page 38: if Lesson 3 Outline

38if Lesson 3

CS1313 Fall 2015

if, Multiple else if, else Example #1#include <stdio.h>int main (){ /* main */ const int computers_number = 5; int users_number; printf("Pick an integer:\n"); scanf("%d", &users_number); if (users_number < computers_number) { printf("That’s unbelievable! Your number is"); printf(" less than mine!\n"); printf("Well, okay, maybe it’s believable.\n"); } /* (users_number < computers_number) */ else if (users_number > computers_number) { printf("Surprise, surprise! Your number is"); printf(" greater than mine!\n"); } /* if (users_number > computers_number) */ else if (users_number == computers_number) { printf("Yowza! Your number is equal to mine!\n"); } /* if (users_number == computers_number) */ else { printf("This statement will never be executed.\n"); printf(" Why?\n"); } /* if (users_number == computers_number)...else */ printf("And now I’m sick of you.\n"); printf("Bye!\n");} /* main */

Page 39: if Lesson 3 Outline

39if Lesson 3

CS1313 Fall 2015

if, Multiple else if, else Example #2% gcc -o islesselseifselse islesselseifselse.c% islesselseifselsePick an integer:6Surprise, surprise! Your number is greater than mine!And now I’m sick of you.Bye!% islesselseifselsePick an integer:5Yowza! Your number is equal to mine!And now I’m sick of you.Bye!% islesselseifselsePick an integer:4That’s unbelievable! Your number is less than mine!Well, okay, maybe it’s believable.And now I’m sick of you.Bye!