Xem mẫu
- Chương 04
CẤU TRÚC RẼ NHÁNH
Trần Quang Kỹ thuật lập trình
Chương 04: Cấu trúc rẽ nhánh
© 2016
CuuDuongThanCong.com https://fb.com/tailieudientucntt
1
- Nội dung
Đặt vấn đề
Câu lệnh
Chương trình
Cấu trúc: if
Cấu trúc: if-else
Cấu trúc: if-else lồng nhau
Cấu trúc: switch-case
Trần Quang Kỹ thuật lập trình
Chương 04: Cấu trúc rẽ nhánh
© 2016
CuuDuongThanCong.com https://fb.com/tailieudientucntt
2
- Đặt vấn đề
Bài toán 1: nhập một ngày (gồm ngày, tháng, năm)
Một chương trình tốt không được giả sử người
dùng phải nhập đúng ngày, tháng, năm (đã thuộc
miền giá trị cho phép)
Để kiểm tra trường hợp nhập sai tháng, ta có thể
sử dụng cấu trúc:
if ( (tháng < 0) hoặc (tháng > 12) )
// Xử lý lỗi với tháng nhập sai
endif
Trần Quang Kỹ thuật lập trình
Chương 04: Cấu trúc rẽ nhánh
© 2016
CuuDuongThanCong.com https://fb.com/tailieudientucntt
3
- Đặt vấn đề
Bài toán 2: Giải phương trình bậc 2
Chương trình cần yêu cầu nhập các hệ số A, B, C
Tuy nhiên A và B nhập vào không chắc sẽ khác 0
-> có thể suy biến về phương trình bậc 1
Dùng cấu trúc rẽ nhánh để kiểm tra các điều kiện
nói trên
Trần Quang Kỹ thuật lập trình
Chương 04: Cấu trúc rẽ nhánh
© 2016
CuuDuongThanCong.com https://fb.com/tailieudientucntt
4
- Câu lệnh
Câu lệnh là một câu viết bằng ngôn ngữ lập trình.
Kết thúc câu lệnh là dấu chấm phẩy (;)
Các loại câu lệnh
Câu lệnh đơn (câu đơn)
Ví dụ: câu khai báo biến, câu lệnh gán, …
Câu lệnh phức (câu phức)
Nhiều câu lệnh được đặt trong cặp ngoặc { … }
Cạu lệnh thuộc cấu trúc điều khiển như: if, if-
else, switch, for, while, do … while
Câu lệnh rỗng:
Chỉ có dấu ; đứng cuối
Trần Quang Kỹ thuật lập trình
Chương 04: Cấu trúc rẽ nhánh
© 2016
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5
- Chương trình
Chương trình là một danh sách tuyến tính (có thứ
tự) của các câu lệnh (đơn, phức, …)
Mặc định máy tính sẽ thực hiện lần lượt từ câu
đầu tiên đến câu lệnh cuối cùng.
Trừ khi gặp các cấu trúc điều khiển như:
Rẽ nhánh
if, if-else, switch
Lặp
for, while, do … while
Trần Quang Kỹ thuật lập trình
Chương 04: Cấu trúc rẽ nhánh
© 2016
CuuDuongThanCong.com https://fb.com/tailieudientucntt
6
- Câu lệnh: if
Cú pháp:
if ()
if ()
if ()
{
}
Trần Quang Kỹ thuật lập trình
Chương 04: Cấu trúc rẽ nhánh
© 2016
CuuDuongThanCong.com https://fb.com/tailieudientucntt
7
- Câu lệnh: if
:
false Biểu thức luận lý hoặc
phải chuyển đổi sang luận
lý được
true
: một trong
các loại câu lệnh đơn, kép
hay rỗng
Trần Quang Kỹ thuật lập trình
Chương 04: Cấu trúc rẽ nhánh
© 2016
CuuDuongThanCong.com https://fb.com/tailieudientucntt
8
- Câu lệnh: if
Cú pháp + phong cách lập trình:
if () if () {
//có thể có 1 hay nhiều câu lệnh
if () }
if ()
{
TAB //có thể có 1 hay nhiều câu lệnh
}
TAB
Trần Quang Kỹ thuật lập trình
Chương 04: Cấu trúc rẽ nhánh
© 2016
CuuDuongThanCong.com https://fb.com/tailieudientucntt
9
- Câu lệnh: if-else
Cú pháp:
if ()
else
Trần Quang Kỹ thuật lập trình
Chương 04: Cấu trúc rẽ nhánh
© 2016
CuuDuongThanCong.com https://fb.com/tailieudientucntt
10
- Câu lệnh: if-else
:
false Biểu thức luận lý hoặc
phải chuyển đổi sang
luận lý được
true
,
: một
trong các loại câu lệnh
đơn, kép hay rỗng
Trần Quang Kỹ thuật lập trình
Chương 04: Cấu trúc rẽ nhánh
© 2016
CuuDuongThanCong.com https://fb.com/tailieudientucntt
11
- Câu lệnh: if-else
Cú pháp + phong cách lập trình
if ()
else
if ()
{
if () {
//...
//...
}
} else
else { {
//... //...
} }
Trần Quang Kỹ thuật lập trình
Chương 04: Cấu trúc rẽ nhánh
© 2016
CuuDuongThanCong.com https://fb.com/tailieudientucntt
12
- Cần phân rã các công
việc con trong đó để có
giải thuật hoàn thiện
Trần Quang Kỹ thuật lập trình
Chương 04: Cấu trúc rẽ nhánh
© 2016
CuuDuongThanCong.com https://fb.com/tailieudientucntt
13
- Giải Phương trình bậc 2
#include
#include
void main(){
float a, b, c, delta;
printf("Nhap vao gia tri cac so a, b, c: \n");
scanf("%f%f%f", &a, &b, &c);
if(a == 0) {
// giai phuong trinh bac 1
}
else {
delta = b*b - 4*a*c;
if(delta < 0) // tiep tuc giai phuong trinh bac 2 ...
}
getch();
}
Trần Quang Kỹ thuật lập trình
Chương 04: Cấu trúc rẽ nhánh
© 2016
CuuDuongThanCong.com https://fb.com/tailieudientucntt
14
- Câu lệnh: if-else lồng nhau
Bài toán: xếp loại học sinh dựa theo điểm
Yếu: điểm thuộc [0, 5]
Trung bình: điểm thuộc [5, 6.5)
Khá: điểm thuộc [6.5, 8)
Giỏi: điểm thuộc [8, 9.5)
Xuất sắc: điểm thuộc [9.5, 10]
Trần Quang Kỹ thuật lập trình
Chương 04: Cấu trúc rẽ nhánh
© 2016
CuuDuongThanCong.com https://fb.com/tailieudientucntt
15
- Câu lệnh: if-else lồng nhau
Đầu vào: điểm
false false false false
diem < 5 diem < 6.5 diem < 8 diem < 9.5
true true true true
loai = “G” loai = “XS”
loai = “K”
loai = “TB”
loai = “Y”
Đầu ra: loại
Trần Quang Kỹ thuật lập trình
Chương 04: Cấu trúc rẽ nhánh
© 2016
CuuDuongThanCong.com https://fb.com/tailieudientucntt
16
- Câu lệnh: if-else lồng nhau
Có nhiều cách biểu diễn
if ()
else if ()
else if ()
else
if ()
else if ()
else if ()
else
Trần Quang Kỹ thuật lập trình
Chương 04: Cấu trúc rẽ nhánh
© 2016
CuuDuongThanCong.com https://fb.com/tailieudientucntt
17
- Câu lệnh: if-else lồng nhau
if ()
else if ()
else if ()
else
if ()
else if ()
else if ()
else
Trần Quang Kỹ thuật lập trình
Chương 04: Cấu trúc rẽ nhánh
© 2016
CuuDuongThanCong.com https://fb.com/tailieudientucntt
18
- Câu lệnh: if-else lồng nhau
#include
#include
void main(){
float diem = 8.7f;
Phong cách: if(diem < 5.0f)
Canh lề thẳng đứng printf("%s", "Yeu");
else if(diem < 6.5f)
printf("%s", "Trung Binh");
else if(diem < 8.5f)
printf("%s", "Kha");
else if(diem < 9.5f)
printf("%s", "Gioi");
else
printf("%s", "Xuat sac");
getch();
}
Trần Quang Kỹ thuật lập trình
Chương 04: Cấu trúc rẽ nhánh
© 2016
CuuDuongThanCong.com https://fb.com/tailieudientucntt
19
- Biểu thức điều kiện ? :
Cú pháp :
? :
nếu đúng thì trả về , ngược lại
trả về
Ví dụ: lệnh
if (hours > 40) rate = 0.45;
else rate = 0.02;
có thể thay bằng :
rate = (hours > 40) ? 0.45 : 0.02;
Trần Quang Kỹ thuật lập trình
Chương 04: Cấu trúc rẽ nhánh
© 2016
CuuDuongThanCong.com https://fb.com/tailieudientucntt
20
nguon tai.lieu . vn