Tải bản đầy đủ (.pdf) (32 trang)

Ch04 cau truc re nhanh

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (605.06 KB, 32 trang )

Chương 04
CẤU TRÚC RẼ NHÁNH

Trần Quang
© 2016

Chương 04: Cấu trúc rẽ nhánh

Kỹ thuật lập trì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-else lồng nhau
Cấu trúc: switch-case

Trần Quang
© 2016



Chương 04: Cấu trúc rẽ nhánh

Kỹ thuật lập trì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

Chương 04: Cấu trúc rẽ nhánh

Kỹ thuật lập trình
3


Đặt vấn đề
Bài tố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

Chương 04: Cấu trúc rẽ nhánh

Kỹ thuật lập trì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)





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, ifelse, switch, for, while, do … while
Câu lệnh rỗng:


Trần Quang
© 2016

Ví dụ: câu khai báo biến, câu lệnh gán, …

Chỉ có dấu ; đứng cuối
Chương 04: Cấu trúc rẽ nhánh

Kỹ thuật lập trì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




Lặp


Trần Quang
© 2016

if, if-else, switch

for, while, do … while

Chương 04: Cấu trúc rẽ nhánh

Kỹ thuật lập trì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

Chương 04: Cấu trúc rẽ nhánh

Kỹ thuật lập trình
7


Câu lệnh: if

<biểu thức điều kiện>

false

<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

true
<câu lệnh>

Trần Quang
© 2016

<câu lệnh>: một trong
các loại câu lệnh đơn, kép
hay rỗng

Chương 04: Cấu trúc rẽ nhánh

Kỹ thuật lập trì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>

TAB

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>
//có thể có 1 hay nhiều câu lệnh
}

TAB

Trần Quang
© 2016

Chương 04: Cấu trúc rẽ nhánh

Kỹ thuật lập trì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

Chương 04: Cấu trúc rẽ nhánh

Kỹ thuật lập trình
10


Câu lệnh: if-else

<biểu thức điều kiện>

<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

true
<câu lệnh T>

Trần Quang
© 2016

<câu lệnh F>

<câu lệnh T>,
<câu lệnh T>: một
trong các loại câu lệnh

đơn, kép hay rỗng

Chương 04: Cấu trúc rẽ nhánh

Kỹ thuật lập trì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>
//...
<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>
}
Trần Quang
© 2016


if (<biểu thức điều kiện>)
{
//...
}
else
{
//...
}

Chương 04: Cấu trúc rẽ nhánh

đúng>
đúng>

sai>
sai>

Kỹ thuật lập trình
12


Cần phân rã các cơng
việc con trong đó để có
giải thuật hồn thiện

Trần Quang

© 2016

Chương 04: Cấu trúc rẽ nhánh

Kỹ thuật lập trình
13


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

Chương 04: Cấu trúc rẽ nhánh

Kỹ thuật lập trình

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







Trần Quang
© 2016

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]

Chương 04: Cấu trúc rẽ nhánh

Kỹ thuật lập trình
15


Câu lệnh: if-else lồng nhau
Đầu vào: điểm


diem < 5

true

false

false

diem < 6.5

diem < 8

true

true

loai = “K”
loai = “Y”

false

diem < 9.5

false

true
loai = “G”

loai = “XS”


loai = “TB”

Đầu ra: loại

Trần Quang
© 2016

Chương 04: Cấu trúc rẽ nhánh

Kỹ thuật lập trì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>)
else if (<biểu thức điều kiện 2>)
else if (<biểu thức điều kiện 3>)
else <Câu lệnh thực thi 4>

<Câu lệnh thực thi 1>
<Câu lệnh thực thi 2>
<Câu lệnh thực thi 3>

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

Chương 04: Cấu trúc rẽ nhánh

Kỹ thuật lập trì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

Chương 04: Cấu trúc rẽ nhánh


Kỹ thuật lập trình
18


Câu lệnh: if-else lồng nhau

Phong cách:
Canh lề thẳng đứng

Trần Quang
© 2016

#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");
else
printf("%s", "Xuat sac");
getch();
}

Chương 04: Cấu trúc rẽ nhánh


Kỹ thuật lập trì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

Chương 04: Cấu trúc rẽ nhánh

Kỹ thuật lập trình
20



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×