Tải bản đầy đủ (.pdf) (31 trang)

Bài giảng Giới thiệu lập trình: Cấu trúc lựa chọn - TS. Lê Nguyên Khôi

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (235.8 KB, 31 trang )

Giới Thiệu Lập Trình
Cấu Trúc Lựa Chọn
TS. Lê Ngun Khơi
Trường Đại học Công nghệ, ĐHQGHN


Nội Dung
Biểu thức lô-gic
Luồng điều khiển
Cấu trúc lựa chọn:
if
if … else
switch

Giới Thiệu Lập Trình

1


Biểu Thức Lơ-gic
Các phép tốn logic
PHỦ ĐỊNH (!), VÀ (&&), HOẶC (||)
Mức độ ưu tiên: && cao hơn ||

Kiểu dữ liệu cơ bản lô-gic bool
đúng (true), sai (false)
Chuyển đổi kiểu dữ liệu:
Không (0, 0.0) là sai (false)
Khác không là đúng (true)
Sai (false) là 0
Đúng (true) là 1


Giới Thiệu Lập Trình

2


Phép Tốn So Sánh
Phép Tốn Tốn Tử Ví Dụ
Nhỏ hơn
Nhỏ hơn
hoặc bằng
Lớn hơn

<
<=
>

Lớn hơn
hoặc bằng

>=

Bằng

==

Không bằng
(khác)

!=


a
1
a
1
a
1
a
1
a
1
a
1

< b
< 2
<= b
<= 2
> b
> 2
>= b
>= 2
== b
== 2
!= b
!= 2

Giới Thiệu Lập Trình

Kết quả
true

true
false
false
false
true
3


Phép Tốn Lơ-gic

Phép Tốn

Tốn Tử Ví Dụ



&&

Hoặc

||

Phủ định

!

a && b
true && true
a || b
false || false

!a
!true

Giới Thiệu Lập Trình

Kết quả
true
false
false

4


Bảng Lơ-gic (Tốn Tử Lười)
a

b

false false
false true
true false
true true

a && b
false
false
false
true

a


b

false false
false true
true false
true true

a || b
false
true
true
true

int a = 0; bool b;
b = (false) && (1/a); cout << b;
b = (true) || (1/a); cout << b;

Giới Thiệu Lập Trình

5


Độ Ưu Tiên Các Phép Toán
Xác định thứ tự để tính giá trị biểu thức
Độ Ưu Tiên
Cao nhất

Tốn Tử
++, --, !

*, /, %
+, <, <=, >, >=
==, !=
&&
||
=, +=, -=, *=, /=, %=
Thấp nhất
x + 1 > 2 || x + 1 < -3 tương đương:
(( x + 1 ) > 2) || (( x + 1 ) < -3)
Giới Thiệu Lập Trình

6


Luồng Điều Khiển
Thứ tự các mệnh lệnh ch.tr. thực hiện
Thứ tự đơn giản: tuần tự
Thực hiện theo thứ tự viết trong mã nguồn

Thứ tự mệnh lệnh phụ thuộc dữ liệu đầu vào
Ví dụ: nhập 2 số ngun dương thì tính ucln, nếu
khơng, khơng tính, in ra thơng báo, và dừng ch.tr.
Cần lựa chọn mệnh lệnh nào thực hiện
Điều khiển mã nguồn chạy như thế nào

Giới Thiệu Lập Trình

7



Cấu Trúc Lựa Chọn Trong C++
if
if … else
switch

Giới Thiệu Lập Trình

8


Cấu Trúc Lựa Chọn if
Cú pháp:
if (BiểuThứcLôgic)
{
// thân if
MệnhLệnh;
MệnhLệnh;
… … …
}

Ý nghĩa: nếu BiểuThứcLôgic đúng (true),
thân if được thực hiện, nếu không, điều khiển
chuyển sang mệnh lệnh tiếp theo ngay sau cấu
trúc if
Giới Thiệu Lập Trình

9


Cấu Trúc Lựa Chọn if

Ví dụ:
double luong = MUC_LUONG_CO_BAN * soGioLam;
if (soGioLam > SO_GIO_LAM_QUY_DINH)
{
int luongTangThem = MUC_LUONG_CO_BAN * 0.5 *
(soGioLam - SO_GIO_LAM_QUY_DINH);
luong = luong + luongTangThem;
}

Giới Thiệu Lập Trình

10


Cấu Trúc Lựa Chọn if … else
Cú pháp:
if (BiểuThứcLôgic)
{
// thân if
MệnhLệnh;
… … …
}
else
{
// thân else
MệnhLệnh;
… … …
}
Giới Thiệu Lập Trình


11


Cấu Trúc Lựa Chọn if … else
Cú pháp:
if (BiểuThứcLôgic)
{
// thân if
}
else
{
// thân else
}

Ý nghĩa: nếu BiểuThứcLôgic đúng (true),
thân if được thực hiện, nếu BiểuThứcLôgic
sai (false), thân else được thực hiện
Giới Thiệu Lập Trình

12


Cấu Trúc Lựa Chọn if … else
Ví dụ:
bool hocCaiThien;
if (diemSo < 60)
{
hocCaiThien = true;
}
else

{
hocCaiThien = false;
}

Giới Thiệu Lập Trình

13


Cấu Trúc Lựa Chọn if … else
Ví dụ:
bool hocCaiThien = false;
if (diemSo < 60)
{
hocCaiThien = true;
}
else
{
hocCaiThien = false;
}

Giới Thiệu Lập Trình

14


Cấu Trúc Lựa Chọn if … else Lồng
char xepHang = 'F';
if (diemSo >= 80)
xepHang = 'A';

else if (diemSo >= 70)
xepHang = 'B';
else if (diemSo >= 60)
xepHang = 'C';
else if (diemSo >= 50)
xepHang = 'D';
else if (diemSo >= 40)
xepHang = 'E';

Giới Thiệu Lập Trình

15


Cấu Trúc Lựa Chọn if … else Lồng
char xepHang = 'F';
if (diemSo >= 80)
xepHang = 'A';
else
if (diemSo >= 70)
xepHang = 'B';
else
if (diemSo >= 60)
xepHang = 'C';
else
if (diemSo >= 50)
xepHang = 'D';
else
if (diemSo >= 40)
xepHang = 'E';

Giới Thiệu Lập Trình

16


Cấu Trúc Lựa Chọn if … else Lồng
char xepHang = 'F';
if (diemSo >= 80)
{
xepHang = 'A';
}
else
{
if (diemSo >= 70)
{
xepHang = 'B';
}
else
{
… … …
}
}

Sử dụng
{
… … …
}
để mã nguồn
dễ đọc,
dễ gỡ lỗi


Giới Thiệu Lập Trình

17


Cấu Trúc Lựa Chọn if … else Lồng
char xepHang = 'F';
if (diemSo >= 80)
xepHang = 'A';
soDiemA = soDiemA + 1;
else
… … …

Lỗi thường xảy ra:
error: ‘else’ without a previous if

Giới Thiệu Lập Trình

18


Cấu Trúc Lựa Chọn if … else Lồng
if (x > 5)
if (y > 5)
std::cout << "x va y > 5";
else
std::cout << "x <= 5";

else của if nào?

Khi x=5, mệnh lệnh nào thực hiện, in ra?
else của if gần nhất

Giới Thiệu Lập Trình

19


Cấu Trúc Lựa Chọn if … else
loại bỏ trường hợp không cần thiết
a

b

false false
false true
true false
true

true

output
false
true
true
true

if (!a && !b)
else if (!a && b)
else if (a && !b)

else if (a && b)

output
output
output
output

=
=
=
=

false;
true;
true;
true;

Phân tích và loại trường hợp khơng cần thiết
if (!a && !b)
else

output = false;
output = true;

Giới Thiệu Lập Trình

20


Cấu Trúc Lựa Chọn if … else

Bài tập (xem mã nguồn)
1. Kiểm tra số nhập vào chẵn hay lẻ
2. Tìm số lớn nhất trong 3 số nhập vào
3. Đoán số

Giới Thiệu Lập Trình

21


Một Số Lưu Ý
Nhầm lẫn giữa gán (=) và so sánh bằng (==)
Không lỗi khi dịch
Kết quả chạy khác nhau
if (a = 1)
// luôn đúng
if (a = 0)
// luôn sai
if (a = b)
// tương đương
if ( (a = b) != 0 )
Thực hiện phép gán xong rồi kiểm tra điều kiện
Không (0, 0.0) là sai (false)
Khác không là đúng (true)
Giới Thiệu Lập Trình

22


Một Số Lưu Ý

Biểu thức lơ-gic trong tốn học
(0 ≤ tuoi ≤ 150)

Chuyển sang ngơn ngữ lập trình
(0 <= tuoi <= 150)

dịch không lỗi nhưng chạy sai!!!
Biểu thức logic trong ngơn ngữ lập trình
Phải sử dụng các phép tốn lơ-gic
(0 <= tuoi && tuoi <= 150)
Lỗi thường gặp: biểu thức lô-gic luôn sai/đúng
(0 >= tuoi && tuoi >= 150)
Giới Thiệu Lập Trình

23


Cấu Trúc Lựa Chọn switch
Cú pháp:
switch (BiểuThức)
{
case HằngSố1: CụmMệnhLệnh1; break;
case HằngSố2: CụmMệnhLệnh2; break;
case HằngSố3: CụmMệnhLệnh2; break;
… … …
default: CụmMệnhLệnhMặcĐịnh;
}

Lưu ý: kiểu của BiểuThức là kiểu số nguyên
(bool, char, int, short, long)

Giới Thiệu Lập Trình

24


×