CO1003 - Chapter 4 - Selection Statements

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 32

Ho Chi Minh City University of Technology

Faculty of Computer Science and Engineering

Chapter 4: Selection Statements

Introduction to Computer Programming


(C language)

Phạm Hoàng Anh


(anhpham@hcmut.edu.vn)

2020 – 2021, Semester 1


Course Content
p C.1. Introduction to Computers and
Programming
p C.2. C Program Structure and its
Components
p C.3. Variables and Basic Data Types
p C.4. Selection Statements
p C.5. Repetition Statements
p C.6. Functions
p C.7. Arrays
p C.8. Pointers
p C.9. File Processing 2
References

p [1] “C: How to Program”, 7th Ed. – Paul


Deitel and Harvey Deitel, Prentice Hall, 2012.
p [2] “The C Programming Language”, 2nd Ed.
– Brian W. Kernighan and Dennis M. Ritchie,
Prentice Hall, 1988
p and others, especially those on the Internet

3
Content

p Introduction

p if.. statements
p if..else.. statements
p Nested if../if..else.. statements
p switch..case.. statements
p Summary

4
Introduction
p Recall
n Statement
p ended with a semicolon (;)
p stretched on multiple lines with a backslash \ at the end
p able to be grouped in the brackets {}
p not consider spaces
n Block
p specified by {} with no semicolon after the right brace
p contains as many statements as required
p is a compound statement, syntactically equivalent to a
single statement
à Sequentially processed from the beginning to the
end of a function 5
Introduction
p 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
p Control statements in C
n Sequence
p Assignment
p Function calling
p …
n Selection
p if
p if..else..
p switch..case..
n Repetition
p for..
p while..
p do..while..
7
Introduction
p 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 T> <Statements F>
}
else <Statement 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
p 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 (0) false (0) false (0)
<case 1> <case 2> <case N>
true ( 0) true ( 0) true ( 0)

<Statements 1> <Statements 2> <Statements N> <Default>

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;
integer values, and
[default: <Default>]
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
p <expression> has a type of integer numbers,
enumerated data, characters.
p <case 1>, …, <case N> are constants of one
of the aforementioned types.
n Cases serve as labels.
p [default: <Default>] is optional.
p “fall-through” property of switch..case..
n After the code for one case is done, execution falls
through to the next unless an explicit action is
taken to escape.
p break (return) statement 22
switch..case.. statements
false (0) false (0) false (0)
aChar==‘a’ aChar==‘b’ …
true ( 0) true ( 0) true ( 0)
printf ‘a’; printf ‘b’; printf

break; break; default;

23
switch..case.. statements
false (0) false (0) false (0)
<case 1> <case 2> <case N>
true ( 0) true ( 0) true ( 0)

<Statements 1> <Statements 2> <Statements N> <Default>

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>
}
25
[else <Default>]
switch..case.. statements
false (0) false (0) false (0)
aChar==‘a’ aChar==‘b’ …
true ( 0) true ( 0) true ( 0)
printf
printf ‘a’; printf ‘b’; …
default;

switch..case.. statement with “fall-through” property

26
27
28
Put them all together
p Given a problem: build your timetable in a
week. Input a day in a week and output its
corresponding activities.
p string.h: a standard library file for strings
n Compare two strings
p 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)

n Copy a string to another one


p char *strcpy(char *destination, const char *source)
29
Add more codes to make such an input valid (?!)

30
Summary
p Control statements for selection
n if.. statements
n if..else.. statements
n switch..case.. statements

p Statements can be selected for execution


according to a “TRUE” ( 0) value of a
condition (expression).
p Selection statements play an important role
in programming.
31
Chapter 4: Selection Statements

32

You might also like