CHƯƠNG 3CHƯƠNG 3
Á Ấ Ú Ề ỂÁ Ấ Ú Ề Ể
C
Á
C C
Ấ
U TR
Ú
C ĐI
Ề
U KHI
Ể
NC
Á
C C
Ấ
U TR
Ú
C ĐI
Ề
U KHI
Ể
N
(Control structures)(Control structures)
(Control
structures)
(Control
structures)
1. Giớithiệu1. Giớithiệu
1.
Giới
thiệu1.
Giới
thiệu
Có 3 loạicấutrúcđiềukhiển, Các cấutrúcnày
điề
khiể
thứ
tự
thự
thi
á
lệ h
ủ
điề
u
khiể
n
thứ
tự
thự
c
thi
c
á
c
lệ
n
h
c
ủ
a
chương trình.
Cấu
trúc
tuần
tự
(sequence)
:
thực
hiện
các
Cấu
trúc
tuần
tự
(sequence)
:
thực
hiện
các
lệnh theo thứ tự từ trên xuống .
Cấu
trúc
lựa
chọn
(selection)
:
dựa
vào
kết
Cấu
trúc
lựa
chọn
(selection)
:
dựa
vào
kết
quả củabiểuthức điềukiệnmànhững lệnh
tương ứng sẽđượcthựchiện. Các cấutrúc
ồ
lựachọn
gồ
m:
− If
− switch.
1. Giớithiệu1. Giớithiệu
1.
Giới
thiệu1.
Giới
thiệu
Cấutrúclặp
(repetition or loop): lặplại1hay
ể
nhiềulệnh cho đếnkhibi
ể
uthức điềukiệncó
giá trị sai. Các cấutrúclặpgồm:
− fo
r
− while
− do while.
Tuy
nhiên,
thứ
tự
thực
hiện
các
lệnh
của
Tuy
nhiên,
thứ
tự
thực
hiện
các
lệnh
của
chương trình còn bị chi phốibởicáclệnh nhảy
như continue, break, goto.
2. Lệnh và khốilệnh2. Lệnh và khốilệnh
2.
Lệnh
và
khối
lệnh2.
Lệnh
và
khối
lệnh
Lệnh (statement):
mộtbiểuthứckếtthúc
ẩ
bởi1dấuchấmph
ẩ
y
g
ọilà1lệnh.
Ví dụ:
int a, b, c ;
a=10 ;
a++;
2. Lệnh và khốilệnh2. Lệnh và khốilệnh
2.
Lệnh
và
khối
lệnh2.
Lệnh
và
khối
lệnh
Khốilệnh (block):
một hay nhiềulệnh được
b
h
bởi
ặ
dấ
{
}
i
là
ột
khối
b
ao quan
h
bởi
c
ặ
p
dấ
u
{
}
g
ọ
i
là
m
ột
khối
lệnh. Về mặtcúpháp,khốilệnh tương đương
1
câu
lệnh
đơn
.
1
câu
lệnh
đơn
.
Ví dụ:
if
(
a<b
)
()
{
temp=a;
a=b;
b=temp;
}
Các cấutrúclựachọnCác cấutrúclựachọn
Các
cấu
trúc
lựa
chọnCác
cấu
trúc
lựa
chọn
XWXW
3. CấutrúcIF3. CấutrúcIF
3.
Cấu
trúc
IF3.
Cấu
trúc
IF
y Dạng 1:
Lưu đồ cú pháp
◦ Cú pháp:
if(expression)
if(expression)
statement;
Ýnghĩa
:
●
Ý
nghĩa
:
Expression được định trị. Nếu
kết quả là true thì statement được thực thi,
ngược lại, không làm gì cả.
3. CấutrúcIF3. CấutrúcIF
3.
Cấu
trúc
IF3.
Cấu
trúc
IF
Ví dụ:Viếtchương trình nhậpvàomộtsố nguyên a. In
ra
màn
hình
kết
quả
a
có
phải
là
số
dương
không
ra
màn
hình
kết
quả
a
có
phải
là
số
dương
không
.
#include <iostream.h>
#include <conio.h>
it i()
i
n
t
ma
i
n
()
{
int a;
cout << "Input a = "; cin>>a;
if(a>=0)
cout << a <<
"
is a positive
”
;
cout
<<
a
<<
is
a
positive
.
;
getch();
return 0;
}
}
3. CấutrúcIF3. CấutrúcIF
3.
Cấu
trúc
IF3.
Cấu
trúc
IF
y Dạng 2:
Lưu đồ cú pháp
◦ Cú pháp:
if (expression)
statement1;
else
statement2;
●
Ý
n
g
hĩa:
g
− Nếu Expression được định là true thì
statement1 được thực thi.
− Ngược lại, thì statement2 được thực thi.
3. CấutrúcIF3. CấutrúcIF
3.
Cấu
trúc
IF3.
Cấu
trúc
IF
Ví dụ:Viếtchương trình nhậpvàomộtsố nguyên a. In ra
màn
hình
kết
quả
kiểm
tra
a
là
số
âm
hay
dương
màn
hình
kết
quả
kiểm
tra
a
là
số
âm
hay
dương
.
#include <iostream.h>
#include <conio.h>
int main()
{
int
a
;
int
a
;
cout << "Input a = "; cin >> a;
if(a>=0)
cout
<<
a
<<
"
is
a
positive
”
;
cout
<<
a
<<
is
a
positive
.
;
else
cout<<a<<"isanegative.”;
getch(); return 0;
}
3. CấutrúcIF3. CấutrúcIF
3.
Cấu
trúc
IF3.
Cấu
trúc
IF
Lưu ý:
y Ta có thể sử dụng các câu lệnh if…else lồng
nhau. Khi dùng if…else lồng nhau thì else sẽ
kếthợpvớiif
g
ầnnhấtchưacóelse.
y Nếucâul
ệ
nh if “bên tron
g
”khôn
g
có else thì
ệ
g
g
phải đặttrongcặpdấu{}
4. Cấu trúc switch4. Cấu trúc switch
4.
Cấu
trúc
switch
4.
Cấu
trúc
switch
y Cấu trúc switch là một cấu trúc lựa chọn có
hiề há h đượ ử d khi ó hiề lự
n
hiề
u n
há
n
h
,
đượ
c s
ử
d
ụn
g
khi
c
ó
n
hiề
u
lự
a
chọn.
y
Cú pháp
:
y
Cú
pháp
:
switch(expression)
{
{
case value_1: statement_1; [break;]
…
case value_n: statement_n; [break;]
[
default : statement
;]
[;]
}
4. Cấu trúc switch4. Cấu trúc switch
4.
Cấu
trúc
switch
4.
Cấu
trúc
switch
4. Cấu trúc switch4. Cấu trúc switch
4.
Cấu
trúc
switch
4.
Cấu
trúc
switch
y Giảithích:
− Expression sẽđược định trị.
− Nếugiátrị củaexpressionbằng value_1 thì
thựchiện statement_1 và thoát.
− Nếugiátrị củaexpressionkhácvalue_1thì
ằ
so sánh vớivalue_2,nếub
ằ
n
g
value_2 thì
thựchiện statement_2 và thoát…., so sánh
tới
value n
tới
value
_
n
.
− Nếutấtcả các phép so sánh đềusaithìthực
hiện
statement
của
default
hiện
statement
của
default
.
4. Cấu trúc switch4. Cấu trúc switch
4.
Cấu
trúc
switch
4.
Cấu
trúc
switch
y
Lưuý
:
−Expression trong switch() phảicókếtquả
là giá trị kiểusố nguyên (int, char, long).
−Các giá trị sau case phảilàhằng nguyên.
−
Không
bắt
buộc
phải
có
default
Không
bắt
buộc
phải
có
default
.
−Khi thựchiệnlệnh tương ứng củacase có
giá
trị
bằng
expression
chương
trình
thực
giá
trị
bằng
expression
,
chương
trình
thực
hiệnlệnh break để thoát khỏicấutrúc
s
witch.
s
4. Cấu trúc switch4. Cấu trúc switch
4.
Cấu
trúc
switch
4.
Cấu
trúc
switch
Ví dụ:Nhậpvàomộtsố nguyên, chia số nguyên này cho 2 lấyphần
dư
Kiểm
tra
nếu
phần
dư
bằng
0
thì
in
ra
thông
báo
“là
số
chẳn
”
dư
.
Kiểm
tra
nếu
phần
dư
bằng
0
thì
in
ra
thông
báo
là
số
chẳn
,
nếusố dư bằng 1 thì in thông báo “là số lẽ”.
#include <iostream.h>
#i l d i h
#i
nc
l
u
d
e <con
i
o.
h
>
void main () {
int n
,
remainder
;
,;
cout<<”Input an number: "; cin>>n; remainder = (n % 2);
switch(remainder)
{
{
case 0: cout << n << ” is an even."; break;
case 1: cout << n << ” is an odd."; break;
}
getch(); }
Các cấutrúclặpCác cấutrúclặp
Các
cấu
trúc
lặpCác
cấu
trúc
lặp
XWXW
5. Cấu trúc while5. Cấu trúc while
5.
Cấu
trúc
while5.
Cấu
trúc
while
y Cú pháp:
while(expression)
statement;
● Ý nghĩa:
● B1: Expression được định
trị
● B2: Nếu kết quả là true thì
statement thực thi và quay
statement
thực
thi
và
quay
lại B1
●
B3: Nếukếtquả là
false
thì
●
B3:
Nếu
kết
quả
là
false
thì
thoát khỏi vòng lặp while.
5. Cấu trúc while5. Cấu trúc while
5.
Cấu
trúc
while5.
Cấu
trúc
while
Ví dụ: Viết chương trình tính tổng các số nguyên từ 1 tới n.
#i l d i t h
#i
nc
l
u
d
e<
i
os
t
ream.
h
>
#include<conio.h>
void main
()
()
{
int i, n, sum;
cout<<
”
Input n=
”
;cin>>n;
cout<< Input
n=
;
cin
>>
n;
i = 1; sum = 0;
while(i<=n)
{
sum += i; i++;
}
}
getch();
}
6. Cấu trúc do … while6. Cấu trúc do … while
6.
Cấu
trúc
do
…
while
6.
Cấu
trúc
do
…
while
y Cú
p
há
p
:
pp
do {
statement;
}while(expression);
●
Ý
n
g
hĩa:
g
− Statement được thực hiện
− Ex
p
ression đư
ợ
c đ
ị
nh tr
ị
.
p ợ ị ị
− Nếu expression là true thì
quay lại bước 1
− Nếu expression là false thì
thoát khỏi vòng lặp.
6. Cấu trúc do … while6. Cấu trúc do … while
6.
Cấu
trúc
do
…
while
6.
Cấu
trúc
do
…
while
Ví dụ 1: Viết chuong trình in dãy số nguyên từ 1 đến 10.
#include <iostream.h>
#include <conio.h>
void main ()
{
{
int i;
clrscr();
cout<<"Display one to ten: ";
i=1;
do
{
cout << setw(3) << i;
i+=1;
} while(i<=10);
getch();
}
7. Cấutrúcfor7. Cấutrúcfor
7.
Cấu
trúc
for
7.
Cấu
trúc
for
y Cú
p
há
p
:
pp
for (Exp1; Exp2; Exp3)
statement
;
statement
;
y Ýnghĩa:
−
Exp
1
:
là
biểu
thức
khởi
tạo
Exp
1
:
là
biểu
thức
khởi
tạo
đượcthựchiện.
− Ex
p
2: là biểuthức điềuki
ệ
n
p
ệ
− Exp3: biểuthức điềukhiển
lặp
7. Cấutrúcfor7. Cấutrúcfor
7.
Cấu
trúc
for
7.
Cấu
trúc
for
Ví dụ: Viết chương trình tính tổng các số nguyên từ 1
đếnn
đến
n
.
#include <iostream.h>
#include <conio.h>
id i ()
vo
id
ma
i
n
()
{
int i, n, sum;
cout<<”Input a number:”; cin >> n;
sum = 0;
for (i=1 ; i<=n ; i++)
for
(i=1
;
i<=n
;
i++)
sum += i;
cout<<”Sum from 1 to “ << n << ” is: ” << sum;
th()
ge
t
c
h()
;
}
7. Cấutrúcfor7. Cấutrúcfor
7.
Cấu
trúc
for
7.
Cấu
trúc
for
y C/C++ cho phép Exp1 là một định nghia biến
Ví dụ: for(int i=1; i<=n; ++i)
y
Bất
kỳ
biểu
thức
nào
trong
3
biểu
thức
của
y
Bất
kỳ
biểu
thức
nào
trong
3
biểu
thức
của
vòng lặpforđềucóthể rỗng
Ví
dụ
:
for(
;
i
!=
0
;
)
statement
;
Ví
dụ
:
for(
;
i
!=
0
;
)
statement
;
y Xóa tấtcả các biểuthức trong vòng lặpforsẽ
cho
một
vòng
lặp
vô
tận
cho
một
vòng
lặp
vô
tận
.
Ví dụ:
for (;;) statement;
Các lệnh rẽ nhánh Các lệnh rẽ nhánh
v
à l
ệ
nh nhảy
v
à l
ệ
nh nhảy
XWXW
XWXW