• Một thao tác/ công việc có thể được thực hiện lặp nhiều lần. • Lặp lại chừng nào điều kiệu lặp còn đúng[r]
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
TIN HỌC ĐẠI CƯƠNG
Bài 5 Một số thuật toán thông dụng
Đỗ Bá Lâm
lamdb@soict.hut.edu.vn
Trang 2Nội dung
5.1 Các cấu trúc cơ bản trong lập trình
5.2 Giả mã (pseudocode)
5.3 Thuật toán số học
5.4 Thuật toán về dãy
5.5 Thuật toán đệ quy
2
Trang 35.1 Các cấu trúc cơ bản trong lập trình
• Cấu trúc tuần tự
• Cấu trúc rẽ nhánh
• Cấu trúc lặp
Trang 45.1.1 Cấu trúc tuần tự
• Các bước được thực hiện theo 1 trình tự tuyến
tính, hết bước này đến bước khác
Bước 1
Bước 2
Bước n
…
Trang 55.1.2 Cấu trúc rẽ nhánh
• Việc thực hiện bước nào phụ thuộc vào điều
kiện xác định
• Ví dụ: Tìm max của 2 số a, b
– Nếu a > b thì max là a, ngược lại max sẽ là b.
– Diễn giải:
• B1: Nhập 2 số a, b.
• B2: Nếu a > b thì Max = a và đi đến bước kết thúc (B4).
• B3: (a <= b) Max b.
• B4: Kết thúc
Max a
a>b
Max b
Trang 65.1.3 Cấu trúc lặp
• Một thao tác/ công việc
có thể được thực hiện
lặp nhiều lần
• Lặp lại chừng nào điều
kiệu lặp còn đúng
• Số lần lặp có thể biết
trước hoặc không biết
trước.Tuy nhiên số lần
lặp phải hữu hạn
Điều kiện
Thực hiện công việc trong vòng lặp
Thực hiện công việc khi thoát khỏi vòng lặp
Đ
S
Trang 75.1.3 Cấu trúc lặp (2)
7
Nhập N và dãy số a1, a2,…,aN
i > N “Max là số lớn nhất”Hiển thị Max a1; i=2
ai > Max
i i + 1
S
S
Đ
Max ai
Đ
Ví dụ: Tìm số lớn nhất của
một dãy có n số
◼ Lần lượt phải so sánh số Max
tạm thời (lúc đầu Max được
gán bằng phần tử thứ nhất,
a1) với ai, với i từ 2, 3,…, n.
◼ Việc so sánh này được thực
hiện lặp nhiều lần giữa Max
và ai.
◼ Khi kết thúc quá trình lặp, ta
sẽ thu được Max là số lớn
nhất của dãy n số.
Trang 8Nội dung
5.1 Các cấu trúc cơ bản trong lập trình
5.2 Giả mã (pseudocode)
5.3 Thuật toán số học
5.4 Thuật toán về dãy
5.5 Thuật toán đệ quy
8
Trang 95.2 Mã giả (pseudocode)
• Gán: ; :=
– i i + 1
– a := b + c
• Cấu trúc chọn
if (điều kiện) then (hành động)
hoặc
if (điều kiện) then (hành động)
else (hành động)
• Cấu trúc nhảy goto:
– goto nhãn x;
9
Trang 105.2 Giả mã (2)
• Cấu trúc lặp:
hoặc
repeat
hành_động
hoặc
for biến:= gtrị_đầu to gtrị_cuối do hành_động
hoặc
for biến:= gtrị_đầu downto gtrị_cuối do hành_động
10