Sunteți pe pagina 1din 100

Chapter 5

Selection—Making Decisions
Objectives
❏ To understand how decisions are made in a computer
❏ To understand the logical operators: and, or, and not
❏ To understand how a C program evaluates a logical expression
❏ To write programs using logical and comparative operators
❏ To write programs that use two-way selection: if ... else statements
❏ To write programs that use multi-way selection: switch and else ...if
❏ To understand C’s classification of characters
❏ To write programs that use C’s character functions
❏ To be able to design a structure chart that specifies function selection

Computer Science: A Structured Programming Approach Using C 1


5-1 Logical Data and Operators

A piece of data is called logical if it conveys the idea of


true or false. In real life, logical data (true or false)
are created in answer to a question that needs a yes–
no answer. In computer science, we do not use yes or
no, we use true or false.

Topics discussed in this section:


Logical Data in C
Logical Operators
Evaluating Logical Expressions
Comparative Operators

Computer Science: A Structured Programming Approach Using C 2


FIGURE 5-1 true and false on the Arithmetic Scale

Computer Science: A Structured Programming Approach Using C 3


FIGURE 5-2 Logical Operators Truth Table

Computer Science: A Structured Programming Approach Using C 4


FIGURE 5-3 Short-circuit Methods for and /or

Computer Science: A Structured Programming Approach Using C 5


PROGRAM 5-1 Logical Expressions

Computer Science: A Structured Programming Approach Using C 6


PROGRAM 5-1 Logical Expressions

Computer Science: A Structured Programming Approach Using C 7


FIGURE 5-4 Relational Operators

Computer Science: A Structured Programming Approach Using C 8


FIGURE 5-5 Comparative Operator Complements

Computer Science: A Structured Programming Approach Using C 9


Table 5-1 Examples of Simplifying Operator Complements

Computer Science: A Structured Programming Approach Using C 10


PROGRAM 5-2 Comparative Operators

Computer Science: A Structured Programming Approach Using C 11


PROGRAM 5-2 Comparative Operators

Computer Science: A Structured Programming Approach Using C 12


5-2 Two-Way Selection
The decision is described to the computer as a
conditional statement that can be answered either true
or false. If the answer is true, one or more action
statements are executed. If the answer is false, then a
different action or set of actions is executed.

Topics discussed in this section:


if…else and Null else Statement
Nested if Statements and Dangling else Problem
Simplifying if Statements
Conditional Expressions
Computer Science: A Structured Programming Approach Using C 13
FIGURE 5-6 Two-way Decision Logic

Computer Science: A Structured Programming Approach Using C 14


FIGURE 5-7 if...else Logic Flow

Computer Science: A Structured Programming Approach Using C 15


Table 5-2 Syntactical Rules for if…else Statements

Computer Science: A Structured Programming Approach Using C 16


FIGURE 5-8 A Simple if...else Statement

Computer Science: A Structured Programming Approach Using C 17


FIGURE 5-9 Compound Statements in an if...else

Computer Science: A Structured Programming Approach Using C 18


FIGURE 5-10 Complemented if...else Statements

Computer Science: A Structured Programming Approach Using C 19


FIGURE 5-11 A Null else Statement

Computer Science: A Structured Programming Approach Using C 20


FIGURE 5-12 A Null if Statement

Computer Science: A Structured Programming Approach Using C 21


PROGRAM 5-3 Two-way Selection

Computer Science: A Structured Programming Approach Using C 22


PROGRAM 5-3 Two-way Selection

Computer Science: A Structured Programming Approach Using C 23


FIGURE 5-13 Nested if Statements

Computer Science: A Structured Programming Approach Using C 24


PROGRAM 5-4 Nested if Statements

Computer Science: A Structured Programming Approach Using C 25


PROGRAM 5-4 Nested if Statements

Computer Science: A Structured Programming Approach Using C 26


Note
else is always paired with the most recent unpaired if.

Computer Science: A Structured Programming Approach Using C 27


FIGURE 5-14 Dangling else

Computer Science: A Structured Programming Approach Using C 28


FIGURE 5-15 Dangling else Solution

Computer Science: A Structured Programming Approach Using C 29


Table 5-3 Simplifying the Condition

Computer Science: A Structured Programming Approach Using C 30


FIGURE 5-16 Conditional Expression

Computer Science: A Structured Programming Approach Using C 31


Table 5-4 Examples of Marginal Tax Rates

Computer Science: A Structured Programming Approach Using C 32


FIGURE 5-17 Design for Calculate Taxes

Computer Science: A Structured Programming Approach Using C 33


FIGURE 5-18 Design for Program 5-5 (Part I)

Computer Science: A Structured Programming Approach Using C 34


FIGURE 5-18 Design for Program 5-5 (Part II)

Computer Science: A Structured Programming Approach Using C 35


FIGURE 5-18 Design for Program 5-5 (Part III)

Computer Science: A Structured Programming Approach Using C 36


PROGRAM 5-5 Calculate Taxes

Computer Science: A Structured Programming Approach Using C 37


PROGRAM 5-5 Calculate Taxes

Computer Science: A Structured Programming Approach Using C 38


PROGRAM 5-5 Calculate Taxes

Computer Science: A Structured Programming Approach Using C 39


PROGRAM 5-5 Calculate Taxes

Computer Science: A Structured Programming Approach Using C 40


PROGRAM 5-5 Calculate Taxes

Computer Science: A Structured Programming Approach Using C 41


PROGRAM 5-5 Calculate Taxes

Computer Science: A Structured Programming Approach Using C 42


PROGRAM 5-5 Calculate Taxes

Computer Science: A Structured Programming Approach Using C 43


PROGRAM 5-5 Calculate Taxes

Computer Science: A Structured Programming Approach Using C 44


PROGRAM 5-5 Calculate Taxes

Computer Science: A Structured Programming Approach Using C 45


PROGRAM 5-5 Calculate Taxes

Computer Science: A Structured Programming Approach Using C 46


5-3 Multiway Selection

In addition to two-way selection, most programming


languages provide another selection concept known as
multiway selection. Multiway selection chooses among
several alternatives. C has two different ways to
implement multiway selection: the switch statement
and else-if construct.

Topics discussed in this section:


The switch Statement
The else-if

Computer Science: A Structured Programming Approach Using C 47


FIGURE 5-19 switch Decision Logic

Computer Science: A Structured Programming Approach Using C 48


FIGURE 5-20 switch Statement Syntax

Computer Science: A Structured Programming Approach Using C 49


FIGURE 5-21 switch Flow

Computer Science: A Structured Programming Approach Using C 50


PROGRAM 5-6 Demonstrate the switch Statement

Computer Science: A Structured Programming Approach Using C 51


FIGURE 5-22 switch Results

Computer Science: A Structured Programming Approach Using C 52


FIGURE 5-23 A switch with break Statements

Computer Science: A Structured Programming Approach Using C 53


PROGRAM 5-7 Multivalued case Statements

Computer Science: A Structured Programming Approach Using C 54


Table 5-5 Summary of switch Statement Rules

Computer Science: A Structured Programming Approach Using C 55


PROGRAM 5-8 Student Grading

Computer Science: A Structured Programming Approach Using C 56


PROGRAM 5-8 Student Grading

Computer Science: A Structured Programming Approach Using C 57


PROGRAM 5-8 Student Grading

Computer Science: A Structured Programming Approach Using C 58


FIGURE 5-24 The else-if Logic Design for Program 5-9

Computer Science: A Structured Programming Approach Using C 59


Note
The else-if is an artificial C construct that is only used when
1. The selection variable is not an integral, and
2. The same variable is being tested in the expressions.

Computer Science: A Structured Programming Approach Using C 60


PROGRAM 5-9 Convert Score to Grade

Computer Science: A Structured Programming Approach Using C 61


PROGRAM 5-9 Convert Score to Grade

Computer Science: A Structured Programming Approach Using C 62


PROGRAM 5-9 Convert Score to Grade

Computer Science: A Structured Programming Approach Using C 63


5-4 More Standard Functions

One of the assets of the C language is its rich set of


standard functions that make programming much
easier. For example, C99 has two parallel but separate
header files for manipulating characters: ctype.h and
wctype.h.

Topics discussed in this section:


Standard Characters Functions
A Classification Program
Handling Major Errors

Computer Science: A Structured Programming Approach Using C 64


FIGURE 5-25 Classifications of the Character Type

Computer Science: A Structured Programming Approach Using C 65


continued

Table 5-6 Classifying Functions

Computer Science: A Structured Programming Approach Using C 66


Table 5-6 Classifying Functions (continued)

Computer Science: A Structured Programming Approach Using C 67


Table 5-7 Conversion Functions

Computer Science: A Structured Programming Approach Using C 68


PROGRAM 5-10 Demonstrate Classification Functions

Computer Science: A Structured Programming Approach Using C 69


PROGRAM 5-10 Demonstrate Classification Functions

Computer Science: A Structured Programming Approach Using C 70


5-5 Incremental Development Part II

In Chapter 4, we introduced the concept of


incremental development with a simple calculator
program. We continue the discussion by adding a
menu and calculator subfunctions.

Topics discussed in this section:


Calculator Design
Calculator Incremental Design

Computer Science: A Structured Programming Approach Using C 71


FIGURE 5-26 Design for Menu-driven Calculator

Computer Science: A Structured Programming Approach Using C 72


PROGRAM 5-11 Menu-driven Calculator—First Increment

Computer Science: A Structured Programming Approach Using C 73


PROGRAM 5-11 Menu-driven Calculator—First Increment

Computer Science: A Structured Programming Approach Using C 74


PROGRAM 5-11 Menu-driven Calculator—First Increment

Computer Science: A Structured Programming Approach Using C 75


PROGRAM 5-11 Menu-driven Calculator—First Increment

Computer Science: A Structured Programming Approach Using C 76


PROGRAM 5-12 Menu-driven Calculator—Third Increment

Computer Science: A Structured Programming Approach Using C 77


PROGRAM 5-12 Menu-driven Calculator—Third Increment

Computer Science: A Structured Programming Approach Using C 78


PROGRAM 5-12 Menu-driven Calculator—Third Increment

Computer Science: A Structured Programming Approach Using C 79


PROGRAM 5-12 Menu-driven Calculator—Third Increment

Computer Science: A Structured Programming Approach Using C 80


PROGRAM 5-12 Menu-driven Calculator—Third Increment

Computer Science: A Structured Programming Approach Using C 81


PROGRAM 5-12 Menu-driven Calculator—Third Increment

Computer Science: A Structured Programming Approach Using C 82


PROGRAM 5-12 Menu-driven Calculator—Third Increment

Computer Science: A Structured Programming Approach Using C 83


PROGRAM 5-13 Menu-driven Calculator—Fifth Increment

Computer Science: A Structured Programming Approach Using C 84


PROGRAM 5-13 Menu-driven Calculator—Fifth Increment

Computer Science: A Structured Programming Approach Using C 85


PROGRAM 5-13 Menu-driven Calculator—Fifth Increment

Computer Science: A Structured Programming Approach Using C 86


PROGRAM 5-13 Menu-driven Calculator—Fifth Increment

Computer Science: A Structured Programming Approach Using C 87


PROGRAM 5-13 Menu-driven Calculator—Fifth Increment

Computer Science: A Structured Programming Approach Using C 88


PROGRAM 5-13 Menu-driven Calculator—Fifth Increment

Computer Science: A Structured Programming Approach Using C 89


PROGRAM 5-13 Menu-driven Calculator—Fifth Increment

Computer Science: A Structured Programming Approach Using C 90


PROGRAM 5-13 Menu-driven Calculator—Fifth Increment

Computer Science: A Structured Programming Approach Using C 91


PROGRAM 5-13 Menu-driven Calculator—Fifth Increment

Computer Science: A Structured Programming Approach Using C 92


5-6 Software Engineering

In this section, we discuss some software engineering


issues related to decisions.

Topics discussed in this section:


Dependent Statements
Negative Logic
Rules for Selection Statements
Selection in Structure Charts

Computer Science: A Structured Programming Approach Using C 93


PROGRAM 5-14 Examples of Poor and Good Nesting Styles

Computer Science: A Structured Programming Approach Using C 94


Table 5-8 Indentation Rules
Computer Science: A Structured Programming Approach Using C 95
Note
Avoid compound negative statements!

Computer Science: A Structured Programming Approach Using C 96


Table 5-9 Complementing Expressions

Computer Science: A Structured Programming Approach Using C 97


Table 5-10 Selection Rules

Computer Science: A Structured Programming Approach Using C 98


FIGURE 5-27 Structure Chart Symbols for Selection

Computer Science: A Structured Programming Approach Using C 99


FIGURE 5-28 Multiway Selection in a Structure Chart

Computer Science: A Structured Programming Approach Using C 100

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