Ho Chi Minh City University of Technology
Faculty of Computer Science and Engineering
Chapter 4: Selection Statements
Introduction to Computer Programming (C
language)
TS. Võ Thị Ngọc Châu
(
[email protected],
[email protected])
2017 – 2018, Semester 2
Course Content
🞐 C.1. Introduction to Computers and
Programming
🞐 C.2. C Program Structure and its Components
🞐 C.3. Variables and Basic Data Types
🞐 C.4. Selection Statements
🞐 C.5. Repetition Statements
🞐 C.6. Functions
🞐 C.7. Arrays
🞐 C.8. Pointers
🞐 C.9. File Processing
2
References
🞐 [1] “C: How to Program”, 7th Ed. – Paul Deitel
and Harvey Deitel, Prentice Hall, 2012.
🞐 [2] “The C Programming Language”, 2nd Ed. –
Brian W. Kernighan and Dennis M. Ritchie,
Prentice Hall, 1988
🞐 and others, especially those on the Internet
3
Content
🞐 Introduction
🞐 if.. statements
🞐 if..else.. statements
🞐 Nested if../if..else.. statements
🞐 switch..case.. statements
🞐 Summary
4
Introduction
🞐 Recall
■Statement
🞐 ended with a semicolon (;)
🞐 stretched on multiple lines with a backslash \ at the end
🞐 able to be grouped in the brackets {}
🞐 not consider spaces
■Block
🞐 specified by {} with no semicolon after the right brace
🞐 contains as many statements as required
🞐 is a compound statement, syntactically equivalent to a
single statement
🡪 Sequentially processed from the beginning to the
end of a function 5
Introduction
🞐 Given a void main() {
double positiveNumber[10] = {2, 1, 3, 10, 8, 3, 4, 5, 9, 12};
set of n int n = 10;
positive double minNumber = positiveNumber[0];
int iteration = 1;
numbers, while (iteration < n) {
find the if (minNumber <= positiveNumber[iteration])
Single
iteration = iteration + 1; statement
smallest else {
one. minNumber = positiveNumber[iteration];
Block
iteration = iteration + 1;
(Chapter 1 – }
}
Real code in C)
}
6
Introduction
🞐 Control statements in C
■Sequence
🞐 Assignment
🞐 Function calling
🞐…
■Selection
🞐 if
🞐 if..else..
🞐 switch..case..
■Repetition
🞐 for..
🞐 while..
🞐 do..while..
7
Introduction
🞐 Given a void main() {
double positiveNumber[10] = {2, 1, 3, 10, 8, 3, 4, 5, 9, 12};
set of n int n = 10;
positive double minNumber = positiveNumber[0];
int iteration = 1;
numbers, while (iteration < n) {
find the if (minNumber <= positiveNumber[iteration])
iteration = iteration + 1;
smallest else {
one. minNumber = positiveNumber[iteration];
iteration = iteration + 1;
(Chapter 1 – } Control Statements for Selection
}
Real code in C)
}
8
if.. statements
if (<Condition>) <Statement>
false (0)
<Condition>
if (<Condition> )
{ true (≠ 0)
<Statements>
}
<Statements>
<Statements> is performed (selected)
if <Condition> is true.
9
Otherwise, ignored.
if.. statements
false (0)
grade>=5.0
true (≠ 0)
printf(“Passed”);
Print “Passed” if grade >= 5.0.
Otherwise, ignored.
10
if..else.. statements
if (<Condition>) <Statement T>
else <Statement F>
if (<Condition>) <Statement T> false (0)
else <Condition>
{
<Statements F>
}
true (≠ 0)
if (<Condition> )
{
<Statements T> <Statements <Statements
}
else <Statement F>
T> F>
if (<Condition> )
{
<Statements T>
}
else
<Statements T> is performed (selected)
{
<Statements F> if <Condition> is true.
}
Otherwise, <Statements F> is performed. 11
if..else.. statements
false (0)
grade >= 5.0
true (≠ 0)
printf(“Passed”) printf(“Failed”)
; ;
Print “Passed” if grade >= 5.0.
Otherwise, print “Failed”.
12
if..else.. statements
🞐 Conditional expression:
<condition>?<expression T>:<expression F>
can be regarded as:
if (<condition>) <expression T>;
else <expression F>;
13
if..else.. statements
Which one do you prefer:
conditional expressions or
if..else.. statements?
14
Nested if../if..else.. statements
if (<condition 1>) if (<condition 1>)
{ {
… …
if (<condition 2>) … if (<condition 2>) …
… …
} }
else
{
…
if (<condition 3>) …
…
}
15
Nested if../if..else.. statements
16
Nested if../if..else.. statements
17
Nested if../if..else.. statements
A multi-way decision
if (<condition 1>) <statements T1>
else if (<condition 2>) <statements T2>
else if (<condition 3>) <statements T3>
…
else if (<condition k>) <statements Tk>
else <statements Fk>
18
Nested if../if..else.. statements
Be careful with specifying “else” for “which if”:
if (<condition 1>)
if (<condition 2>) <statements T2>
else <statements F>
should be:
if (<condition 1>) { d = ? 5? 10? 20?
if (<condition 2>) <statements T2>
}
else <statements F1>
or:
if (<condition 1>) {
if (<condition 2>) <statements T2>
else <statements F2>
d = ? 5? 10? 20?
19
switch..case.. statements
false false false
<case (0) <case (0) <case (0)
1> 2> N>
true true true
(≠0) (≠0) (≠0)
<Statements <Statements <Statements
<Default>
1> 2> N>
switch (<expression>) {
a multi-way decision
case <case 1>: <Statements 1>; break;
that tests whether an
case <case 2>: <Statements 2>; break;
expression matches one
…
of a number of constant
case <case N>: <Statements N>; break;
[default: <Default>] integer values, and
} branches accordingly
20
switch..case.. statements
switch (<expression>) {
case <case 1>: <Statements 1>; break;
case <case 2>: <Statements 2>; break;
…
case <case N>: <Statements N>; break;
[default: <Default>]
}
can be regarded as:
if (<expression> == <case 1>) <Statements 1>
else if (<expression> == <case 2>) <Statements 2>
…
else if (<expression> == <case N>) <Statements N>
[else <Default>]
21
switch..case.. statements
🞐 <expression> has a type of integer numbers,
enumerated data, characters.
🞐 <case 1>, …, <case N> are constants of one
of the aforementioned types.
■Cases serve as labels.
🞐 [default: <Default>] is optional.
🞐 “fall-through” property of switch..case..
■After the code for one case is done, execution falls
through to the next unless an explicit action is
taken to escape.
🞐 break (return) statement
22
switch..case.. statements
false false false
aChar==‘a (0) aChar==‘b (0) … (0)
’ ’
true true true
(≠0) (≠0) (≠0)
printf ‘a’; printf ‘b’; printf
…
break; break; default;
23
switch..case.. statements
false false false
<case (0) <case (0) <case (0)
1> 2> N>
true true true
(≠0) (≠0) (≠0)
<Statements <Statements <Statements
<Default>
1> 2> N>
switch..case.. statement with “fall-through” property
switch (<expression>) {
case <case 1>: <Statements 1>
case <case 2>: <Statements 2>
…
case <case N>: <Statements N>
[default: <Default>]
} 24
switch..case.. statements
switch..case.. statement with “fall-through” property
can be regarded as:
if (<expression> == <case 1>) {
switch (<expression>) { <Statements 1>
case <case 1>: <Statements 1> <Statements 2>
case <case 2>: <Statements 2> …
… <Default>
case <case N>: <Statements N> }
[default: <Default>] else if (<expression> == <case 2>) {
<Statements 2>
}
…
<Default>
}
…
else if (<expression> == <case N>) {
<Statements N>
<Default>
}
[else <Default>] 25
switch..case.. statements
false false false
aChar==‘a (0) aChar==‘b (0) … (0)
’ ’
true true true
(≠0) (≠0) (≠0)
printf
printf ‘a’; printf ‘b’; …
default;
switch..case.. statement with “fall-through” property
26
27
28
Put them all together
🞐 Given a problem: build your timetable in a
week. Input a day in a week and output its
corresponding activities.
🞐 string.h: a standard library file for strings
■Compare two strings
🞐 int strcmp(const char *str1, const char *str2)
▪ < 0 if str1 < str2 (less than)
▪ > 0 if str1 > str2 (greater than)
▪ = 0 if str1 = str2 (equal)
■Copy a string to another one
🞐 char *strcpy(char *destination, const char *source)
29
Add more codes to make such an input valid (?!)
30
Summary
🞐 Control statements for selection
■if.. statements
■if..else.. statements
■switch..case.. statements
🞐 Statements can be selected for execution
according to a “TRUE” (≠ 0) value of a
condition (expression).
🞐 Selection statements play an important role
in programming.
31
Chapter 4: Selection Statements
32