Bài giảng Tin đại cương - Bài 6: Lựa chọn - Trương Xuân Nam

Tóm tắt Bài giảng Tin đại cương - Bài 6: Lựa chọn - Trương Xuân Nam: ...  Có nhiều quan điểm phân loại lệnh lựa chọn  Thường chia làm 3 loại:  Có làm việc A hay không?  Chọn làm 1 trong 2 việc  Chọn làm 1 trong nhiều việc  Nếu muốn chọn n việc trong số m việc thì sao?  Không có câu lệnh cho tình huống này  Chia nhỏ thành những câu lệnh đơn giản (thuộc m...0: case 12: ngay = 31; break; case 4: case 6: case 9: case 11: ngay = 30; break; default: ngay = 28; } Trương Xuân Nam - Khoa CNTT 13 Câu lệnh if và if-else Phần 4 Trương Xuân Nam - Khoa CNTT 14 Câu lệnh if  Cú pháp: if () { }  Quá trình thực hiện: 1. Kiểm tra , nếu sai thì bỏ qua...100; i++) if ((i % 3 == 0) || (i % 7 == 0)) cout << i << endl; Câu lệnh switch Phần 6 Trương Xuân Nam - Khoa CNTT 20 Câu lệnh switch  Một số bài toán có quá nhiều lựa chọn:  Sử dụng liên tiếp nhiều lệnh if  Chương trình dài  Dễ nhầm lẫn  Ví dụ: Nhập vào chữ số X (từ 0 đến...

pdf26 trang | Chia sẻ: havih72 | Lượt xem: 201 | Lượt tải: 0download
Nội dung tài liệu Bài giảng Tin đại cương - Bài 6: Lựa chọn - Trương Xuân Nam, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
TIN ĐẠI CƯƠNG
BÀI 6: LỰA CHỌN
Nội dung buổi trước
 Cú pháp vòng lặp FOR, WHILE và DO-WHILE
 Vòng lặp FOR phù hợp nhất với những loại lặp 
biết trước số lần (thường sử dụng biến đếm)
 Vòng lặp WHILE và DO-WHILE thường sử 
dụng khi biết trước điều kiện kết thúc lặp
 WHILE kiểm tra điều kiện trước khi lặp
 DO-WHILE kiểm tra điều kiện sau khi lặp
 Ngắt vòng lặp bằng lệnh break
 Kết thúc sớm bước lặp bằng lệnh continue
Trương Xuân Nam - Khoa CNTT 2
Nội dung chính
1. Đặt vấn đề
2. Khái niệm câu lệnh lựa chọn
3. Các loại lệnh lựa chọn
4. Câu lệnh if và if-else
5. Kết hợp lựa chọn và vòng lặp
6. Câu lệnh switch
7. Bài tập
Trương Xuân Nam - Khoa CNTT 3
Đặt vấn đề
Phần 1
Trương Xuân Nam - Khoa CNTT 4
Đặt vấn đề
 Ba cấu trúc điều khiển cơ bản trong máy tính
 Tuần tự  Đã học trong bài trước nữa
 Lặp  Chương 3 (bài trước)
 Lựa chọn  Chương 4 (bài này)
 Lựa chọn là một thao tác ra quyết định cơ bản 
trong cuộc sống
 Sử dụng chọn làm một trong nhiều việc
 Sử dụng khi suy diễn logic
 Trong ngôn ngữ tự nhiên, thường được phát biểu 
dưới dạng điều kiện: nếu  thì  (if  then )
Trương Xuân Nam - Khoa CNTT 5
Đặt vấn đề
 Nhiều thuật toán cũng yêu cầu có sự chọn lựa
 Các hành động xử lý ứng với từng tình huống
 Kiểm tra điều kiện thực hiện công việc
 
 Ví dụ:
 Kiểm tra xem số nguyên a có là số chẵn không?
 Giải phương trình bậc 2 (biện luận giá trị Δ)
 Ngày mai là ngày bao nhiêu?
 Giá trị nào là lớn nhất trong 3 số a, b, c?
 
Trương Xuân Nam - Khoa CNTT 6
Khái niệm câu lệnh lựa chọn
Phần 2
Trương Xuân Nam - Khoa CNTT 7
Khái niệm câu lệnh lựa chọn
 Khái niệm: câu lệnh trong máy tính cho phép 
quyết định làm một việc hay không dựa trên 
một điều kiện cụ thể
 Mức ngôn ngữ:
 Nếu a chia hết cho 2 thì a là số chẵn
 Mức thuật toán:
 Nếu a chia 2 dư 0 thì in ra là a chẵn
 Mức lập trình:
 if ((a%2)==0) { cout << "A là số chẵn"; }
Trương Xuân Nam - Khoa CNTT 8
Các loại lệnh lựa chọn
Phần 3
Trương Xuân Nam - Khoa CNTT 9
Các loại lệnh lựa chọn
 Có nhiều quan điểm phân loại lệnh lựa chọn
 Thường chia làm 3 loại:
 Có làm việc A hay không?
 Chọn làm 1 trong 2 việc
 Chọn làm 1 trong nhiều việc
 Nếu muốn chọn n việc trong số m việc thì sao?
 Không có câu lệnh cho tình huống này
 Chia nhỏ thành những câu lệnh đơn giản (thuộc 
một trong 3 loại trên)
Trương Xuân Nam - Khoa CNTT 10
Ví dụ về “làm việc A hay không”
if (delta < 0) {
cout << "Phuong trinh vo nghiem." << endl;
}
if (delta == 0) {
cout << "Phuong trinh co nghiem duy nhat:" << endl;
cout << " X = " << -b/2/a << endl;
}
if (delta > 0) {
cout << "Phuong trinh co 2 nghiem phan biet:" << endl;
cout << " X1 = " << (-b - sqrt(delta))/2/a << endl;
cout << " X2 = " << (-b + sqrt(delta))/2/a << endl;
}
Trương Xuân Nam - Khoa CNTT 11
Ví dụ “chọn 1 trong 2 việc”
if ((a*a + b*b) == c*c) {
cout << "Tam giac ABC vuong tai C" << endl;
}
else {
cout << "Goc C khong phai goc vuong" << endl;
}
if (nhietdo < 10) {
cout << "Hom nay học sinh duoc nghi hoc!" << endl;
}
else {
cout << "Hom nay học sinh di hoc binh thuong!" << endl;
}
Trương Xuân Nam - Khoa CNTT 12
Ví dụ “chọn 1 trong nhiều việc”
switch (thang) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: ngay = 31; break;
case 4:
case 6:
case 9:
case 11: ngay = 30; break;
default: ngay = 28;
}
Trương Xuân Nam - Khoa CNTT 13
Câu lệnh if và if-else
Phần 4
Trương Xuân Nam - Khoa CNTT 14
Câu lệnh if
 Cú pháp:
if () {
}
 Quá trình thực hiện:
1. Kiểm tra , nếu sai thì bỏ qua
2. Thực hiện 
 Chú ý:
 Khối là một biểu thức logic
 Nếu chỉ có một lệnh duy nhất thì có 
thể không cần viết cặp ngoặc nhọn { }
Trương Xuân Nam - Khoa CNTT 15
Câu lệnh if-else
 Cú pháp:
if () {
}
else {
}
 Quá trình thực hiện:
1. Kiểm tra , nếu sai thì xuống bước 3
2. Thực hiện sau đó xuống bước 4
3. Thực hiện 
Trương Xuân Nam - Khoa CNTT 16
Một số ví dụ đơn giản
if ((a * b) < 0) cout << "A & B trái dấu";
if (0 == (a % b))
cout << "A chia hết cho B";
else
cout << "A không chia hết cho B";
if (delta == 0) {
x = -b/2/a;
cout << "Có một nghiệm x = " << x;
}
Trương Xuân Nam - Khoa CNTT 17
Kết hợp lựa chọn và vòng lặp
Phần 5
Trương Xuân Nam - Khoa CNTT 18
Trương Xuân Nam - Khoa CNTT 19
Kết hợp lựa chọn và lặp
 Vòng lặp và lựa chọn có kết hợp với nhau làm 
chương trình rất uyển chuyển và mạnh mẽ
 Ví dụ: in ra màn hình các số dương chia hết 
cho 3 hoặc 7 nhỏ hơn 100.
 Cách làm: duyệt các số từ 1 đến 100, in ra nếu 
nó chia cho 3 hoặc 7 dư 0.
 Đoạn mã:
for (int i = 1; i <= 100; i++)
if ((i % 3 == 0) || (i % 7 == 0))
cout << i << endl;
Câu lệnh switch
Phần 6
Trương Xuân Nam - Khoa CNTT 20
Câu lệnh switch
 Một số bài toán có quá nhiều lựa chọn:
 Sử dụng liên tiếp nhiều lệnh if
 Chương trình dài
 Dễ nhầm lẫn
 Ví dụ: Nhập vào chữ số X (từ 0 đến 9), hãy in 
ra màn hình tên (tiếng Việt) của chữ số đó
 Nhập số 0: in ra “không”
 Nhập số 1: in ra “một”
 
 Cách làm duy nhất là liệt kê mọi tình huống
Trương Xuân Nam - Khoa CNTT 21
Nhập chữ số X và in tên ra
// cách chạy chậm hơn: viết ngắn hơn
if (x == 0) cout << "Khong";
if (x == 1) cout << "Mot";
if (x == 9) cout << "Chin";
// cách chạy nhanh hơn: viết dài hơn
if (x == 0) cout << "Khong";
else
if (x == 1) cout << "Mot";
else
if (x == 9) cout << "Chin";
Trương Xuân Nam - Khoa CNTT 22
Câu lệnh switch
 Ngôn ngữ C++ cung cấp cấu trúc lệnh switch 
để đơn giản hóa trường hợp nhiều lựa chọn
 Cú pháp:
switch () {
case : ; break;
case : ; break;
case : ; break;
default: ;
}
Trương Xuân Nam - Khoa CNTT 23
Nhập chữ số X và in tên ra
switch (x) {
case 0: cout << “Không”; break;
case 1: cout << “Một”; break;
case 2: cout << “Hai”; break;
case 3: cout << “Ba”; break;
case 4: cout << “Bốn”; break;
case 5: cout << “Năm”; break;
case 6: cout << “Sáu”; break;
case 7: cout << “Bảy”; break;
case 8: cout << “Tám”; break;
case 9: cout << “Chín”; break;
default: cout << “X không phải là chữ số”;
}
Trương Xuân Nam - Khoa CNTT 24
Bài tập
Phần 7
Trương Xuân Nam - Khoa CNTT 25
Bài tập
1. Viết hàm TamGiacDeu(a, b, c) trả về true nếu tam 
giác ABC là tam giác đều và ngược lại.
 Tương tự hãy việc các hàm TamGiacCan, TamGiacVuong
2. Nhập n và in ra các số chẵn nhỏ hơn n.
3. Nhập a, b và n. In các số nhỏ hơn n và chia a dư b.
4. Nhập a, b và n. In các số nhỏ hơn n chia cho a và b 
đều dư 1.
5. Viết hàm isPrime(int x) - kiểm tra xem x có là số 
nguyên tố không?
Trương Xuân Nam - Khoa CNTT 26

File đính kèm:

  • pdfbai_giang_tin_dai_cuong_bai_6_lua_chon_truong_xuan_nam.pdf