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 đủ
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:
bai_giang_ky_thuat_lap_trinh_chuong_4_cau_truc_re_nhanh_tran.pdf

