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

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ố nguyên 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

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ố

pdf 31 trang kimcuc 9340
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Giới thiệu lập trình - Cấu trúc lựa chọn - Lê Nguyên Khôi", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Giới thiệu lập trình - Cấu trúc lựa chọn - Lê Nguyên Khôi

Bài giảng Giới thiệu lập trình - Cấu trúc lựa chọn - Lê Nguyên Khôi
Giới Thiệu Lập Trình
Cấu Trúc Lựa Chọn
TS. Lê Nguyên Khôi
Trường Đại học Công nghệ, ĐHQGHN
Nội Dung
1
 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
Biểu Thức Lô-gic
2
 Các phép toá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
Phép Toán So Sánh
3
Phép Toán Toán Tử Ví Dụ Kết quả
Nhỏ hơn < a < b1 < 2 true
Nhỏ hơn
hoặc bằng <=
a <= b
1 <= 2 true
Lớn hơn > a > b1 > 2 false
Lớn hơn
hoặc bằng >=
a >= b
1 >= 2 false
Bằng == a == b1 == 2 false
Không bằng
(khác) !=
a != b
1 != 2 true
Giới Thiệu Lập Trình
Phép Toán Lô-gic
4
Phép Toán Toán Tử Ví Dụ Kết quả
Và && a && btrue && true true
Hoặc || a || bfalse || false false
Phủ định ! !a!true false
Giới Thiệu Lập Trình
Bảng Lô-gic (Toán Tử Lười)
5
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
a b a && b
false false false
false true false
true false false
true true true
a b a || b
false false false
false true true
true false true
true true true
Độ Ưu Tiên Các Phép Toán
6
 Xác định thứ tự để tính giá trị biểu thức
x + 1 > 2 || x + 1 < -3 tương đương:
(( x + 1 ) > 2) || (( x + 1 ) < -3)
Giới Thiệu Lập Trình
Độ Ưu Tiên Toán Tử
Cao nhất ++, --, !
*, /, %
+, -
, >=
==, !=
&&
||
Thấp nhất =, +=, -=, *=, /=, %=
Luồng Điều Khiển
7
 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ố nguyên 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
Cấu Trúc Lựa Chọn Trong C++
8
 if
 if  else
 switch
Giới Thiệu Lập Trình
Cấu Trúc Lựa Chọn if
9
 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
Cấu Trúc Lựa Chọn if
10
 Ví dụ:
Giới Thiệu Lập Trình
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;
}
Cấu Trúc Lựa Chọn if  else
11
 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
Cấu Trúc Lựa Chọn if  else
12
 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
Cấu Trúc Lựa Chọn if  else
13
 Ví dụ:
Giới Thiệu Lập Trình
bool hocCaiThien;
if (diemSo < 60)
{
hocCaiThien = true;
}
else
{
hocCaiThien = false;
}
Cấu Trúc Lựa Chọn if  else
14
 Ví dụ:
Giới Thiệu Lập Trình
bool hocCaiThien = false;
if (diemSo < 60)
{
hocCaiThien = true;
}
else
{
hocCaiThien = false;
}
Cấu Trúc Lựa Chọn if  else Lồng
15Giới Thiệu Lập Trình
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';
Cấu Trúc Lựa Chọn if  else Lồng
16Giới Thiệu Lập Trình
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';
Cấu Trúc Lựa Chọn if  else Lồng
17Giới Thiệu Lập Trình
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
Cấu Trúc Lựa Chọn if  else Lồng
18
 Lỗi thường xảy ra:
error: ‘else’ without a previous if
Giới Thiệu Lập Trình
char xepHang = 'F';
if (diemSo >= 80)
xepHang = 'A';
soDiemA = soDiemA + 1;
else 
Cấu Trúc Lựa Chọn if  else Lồng
19
 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
if (x > 5)
if (y > 5)
std::cout 5";
else 
std::cout << "x <= 5";
Cấu Trúc Lựa Chọn if  else
loại bỏ trường hợp không cần thiết
20
if (!a && !b) output = false;
else if (!a && b) output = true;
else if (a && !b) output = true;
else if (a && b) output = true;
Phân tích và loại trường hợp không cần thiết
if (!a && !b) output = false;
else output = true;
Giới Thiệu Lập Trình
a b output
false false false
false true true
true false true
true true true
Cấu Trúc Lựa Chọn if  else
21
 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
Một Số Lưu Ý
22
 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
Một Số Lưu Ý
23
 Biểu thức lô-gic trong toá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 toá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
Cấu Trúc Lựa Chọn switch
24
 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
Cấu Trúc Lựa Chọn switch
25
 Cú pháp:
switch (BiểuThức)
{
}
 Ý nghĩa:
 Mệnh lệnh case được xét từ trên xuống
 Giá trị HằngSố của case nào ứng với giá trị của
BiểuThức, CụmMệnhLệnh của case đó thực hiện
 Khi gặp break, thì thoát khỏi cấu trúc switch
 Thực hiện CụmMệnhLệnhMặcĐịnh nếu không có
case nào tương ứng
Giới Thiệu Lập Trình
Cấu Trúc Lựa Chọn switch
26
 Ví dụ:
Giới Thiệu Lập Trình
int ngay; std::cin >> ngay;
switch (ngay)
{
case 2: std::cout << "hoc chieu"; break;
case 3: std::cout << "hoc sang"; break;
case 4: std::cout << "di lam"; break;
case 5: std::cout << "hoc sang va chieu"; break;
case 6: std::cout << "hoc chieu va toi"; break;
case 7: std::cout << "choi the thao"; break;
case 0: std::cout << "di sang nha ban"; break;
default: std::cout << "o nha ngu";
}
Cấu Trúc Lựa Chọn switch
27
 Nếu không có break sẽ thực hiện các case tiếp theo
đến khi nào gặp break thì thoát khỏi switch
Giới Thiệu Lập Trình
int ngay; std::cin >> ngay;
switch (ngay)
{
case 2:
case 3:
case 5:
case 6: std::cout << "di hoc"; break;
case 4: std::cout << "di lam"; break;
case 7:
case 0: std::cout << "di choi"; break;
default: std::cout << "o nha ngu";
}
Cấu Trúc Lựa Chọn switch
28Giới Thiệu Lập Trình
int nam, thang, soNgay;
std::cin >> thang;
std::cin >> nam;
switch (thang)
{
case 2:
soNgay = (nam % 4 == 0 && 
(nam % 100 != 0 || nam % 400 == 0)) ?
29 : 28; break;
case 4: case 6: case 9: case 11:
soNgay = 30; break;
default:
soNgay = 31; break;
}
Cấu Trúc Lựa Chọn switch
sử dụng thiết kế menu điều khiển
29Giới Thiệu Lập Trình
switch (comboKFC)
{
case 1: std::cout << "ga popcorn 10k"; break;
case 2: std::cout << "2 canh 1 nuoc 50k"; break;
case 3: std::cout << "2 canh 2 dui 100k"; break;
case 4: std::cout << "A U C E 200k"; break;
default: std::cout << "clean the kitchen";
}
Tham Khảo
30
 Đọc sách:
 Chương 3, Lập Trình Cơ Bản C++
Giới Thiệu Lập Trình

File đính kèm:

  • pdfbai_giang_gioi_thieu_lap_trinh_cau_truc_lua_chon_le_nguyen_k.pdf