Bài giảng Kỹ thuật lập trình - Chương 4: Cấu trúc rẽ nhánh - Trần Quang

Chương 04  
CẤU TRÚC RẼ NHÁNH  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 04: Cấu trúc rẽ nhánh  
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-elselồng nhau  
Cấu trúc: switch-case  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 04: Cấu trúc rẽ nhánh  
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  
© 2016  
Kỹ thuật lập trình  
Chương 04: Cấu trúc rẽ nhánh  
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  
© 2016  
Kỹ thuật lập trình  
Chương 04: Cấu trúc rẽ nhánh  
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  
© 2016  
Kỹ thuật lập trình  
Chương 04: Cấu trúc rẽ nhánh  
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  
© 2016  
Kỹ thuật lập trình  
Chương 04: Cấu trúc rẽ nhánh  
6
Câu lệnh: if  
Cú phá p:  
if (<biểu thức điều kiện>) <câu lệnh>  
if (<biểu thức điều kiện>)  
<câu lệnh>  
if (<biểu thức điều kiện>)  
{
<các câu lệnh>  
}
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 04: Cấu trúc rẽ nhánh  
7
Câu lệnh: if  
<biểu thức điều kiện>:  
Biểu thức luận lý hoặc  
phải chuyển đổi sang luận  
lý được  
false  
<biểu thức điều kiện>  
true  
<câu lệnh>: một trong  
các loại câu lệnh đơn, kép  
hay rỗng  
<câu lệnh>  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 04: Cấu trúc rẽ nhánh  
8
Câu lệnh: if  
Cú phá p + phong cách lập trình:  
if (<biểu thức điều kiện>) <câu lệnh>  
if (<biểu thức điều kiện>) {  
<câu lệnh>  
//có thể có 1 hay nhiều câu lệnh  
if (<biểu thức điều kiện>)  
<câu lệnh>  
}
if (<biểu thức điều kiện>)  
{
<câu lệnh>  
TAB  
//có thể có 1 hay nhiều câu lệnh  
}
TAB  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 04: Cấu trúc rẽ nhánh  
9
Câu lệnh: if-else  
Cú phá p:  
if (<biểu thức điều kiện>)  
<câu lệnh T>  
else  
<câu lệnh F>  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 04: Cấu trúc rẽ nhánh  
10  
Câu lệnh: if-else  
<biểu thức điều kiện>:  
Biểu thức luận lý hoặc  
phải chuyển đổi sang  
luận lý được  
false  
<biểu thức điều kiện>  
true  
<câu lệnh T>,  
<câu lệnh T>  
<câu lệnh F>  
<câu lệnh T>: một  
trong các loại câu lệnh  
đơn, kép hay rỗng  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 04: Cấu trúc rẽ nhánh  
11  
Câu lệnh: if-else  
Cú pháp + phong cách lập trình  
if (<biểu thức điều kiện>)  
<câu lệnh đơn khi đúng>  
else  
<câu lệnh đơn khi sai>  
if (<biểu thức điều kiện>)  
{
<câu lệnh đơn/kép khi đúng>  
if (<biểu thức điều kiện>) {  
//...  
<câu lệnh đơn/kép khi đúng>  
<câu lệnh đơn/kép khi đúng>  
//...  
}
else  
<câu lệnh đơn/kép khi đúng>  
}
{
else {  
<câu lệnh đơn/kép khi sai>  
//...  
<câu lệnh đơn/kép khi sai>  
<câu lệnh đơn/kép khi sai>  
//...  
<câu lệnh đơn/kép khi sai>  
}
}
Trần Quang  
© 2016  
Kỹ thuật lập trình  
12  
Chương 04: Cấu trúc rẽ nhánh  
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  
© 2016  
Kỹ thuật lập trình  
13  
Chương 04: Cấu trúc rẽ nhánh  
Giải Phương trình bậc 2  
#include <stdio.h>  
#include <conio.h>  
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  
© 2016  
Kỹ thuật lập trình  
14  
Chương 04: Cấu trúc rẽ nhánh  
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  
© 2016  
Kỹ thuật lập trình  
Chương 04: Cấu trúc rẽ nhánh  
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  
© 2016  
Kỹ thuật lập trình  
Chương 04: Cấu trúc rẽ nhánh  
16  
Câu lệnh: if-else lồng nhau  
Có nhiều cách biểu diễn  
if (<biểu thức điều kiện 1>)  
<Câu lệnh thực thi 1>  
else if (<biểu thức điều kiện 2>) <Câu lệnh thực thi 2>  
else if (<biểu thức điều kiện 3>) <Câu lệnh thực thi 3>  
else <Câu lệnh thực thi 4>  
if (<biểu thức điều kiện 1>)  
<Câu lệnh thực thi 1>  
else if (<biểu thức điều kiện 2>)  
<Câu lệnh thực thi 2>  
else if (<biểu thức điều kiện 3>)  
<Câu lệnh thực thi 3>  
else  
<Câu lệnh thực thi 4>  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 04: Cấu trúc rẽ nhánh  
17  
Câu lệnh: if-else lồng nhau  
if (<biểu thức điều kiện 1>) <Câu lệnh thực thi 1>  
else if (<biểu thức điều kiện 2>) <Câu lệnh thực thi 2>  
else if (<biểu thức điều kiện 3>) <Câu lệnh thực thi 3>  
else <Câu lệnh thực thi 4>  
if (<biểu thức điều kiện 1>)  
<Câu lệnh thực thi 1>  
else if (<biểu thức điều kiện 2>)  
<Câu lệnh thực thi 2>  
else if (<biểu thức điều kiện 3>)  
<Câu lệnh thực thi 3>  
else  
<Câu lệnh thực thi 4>  
Trần Quang  
© 2016  
Kỹ thuật lập trình  
18  
Chương 04: Cấu trúc rẽ nhánh  
Câu lệnh: if-else lồng nhau  
#include <stdio.h>  
#include <conio.h>  
void main(){  
float diem = 8.7f;  
if(diem < 5.0f)  
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");  
Phong cách:  
Canh lề thẳng đứng  
else  
printf("%s", "Xuat sac");  
getch();  
}
Trần Quang  
© 2016  
Kỹ thuật lập trình  
Chương 04: Cấu trúc rẽ nhánh  
19  
Biꢀu thꢁc điều kiện ? :  
Cú phá p :  
<điꢀu kiꢁn> ? <giá trꢂ 1> : <giá trꢂ 2>  
nếu <điều kiện> đúng thì trả về <giá trị 1>, ngược lại  
trả về <giá trị 2>  
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  
© 2016  
Kỹ thuật lập trình  
20  
Chương 04: Cấu trúc rẽ nhánh  
Tải về để xem bản đầy đủ
pdf 32 trang Thùy Anh 21360 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kỹ thuật lập trình - Chương 4: Cấu trúc rẽ nhánh - Trần Quang", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_ky_thuat_lap_trinh_chuong_4_cau_truc_re_nhanh_tran.pdf