www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
Nhập Môn Lập Trình
Giải Thuật – Mã Giả – Lưu Đồ Giải Thuật
Cấu trúc If … Else, Switch
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
Road Map
Giải thuật
Các bước lập trình giải quyết vấn đề
Giải thuật là gì?
Đặc tính của giải thuật
Phát triển giải thuật
Phát triển từ trên xuống (Top-down development)
Từng bước tinh chế (step-wise refinement)
Cấu trúc chương trình
Mã giả và lưu đồ
Mã giả (Pseudo Code)
Lưu đồ (Flowchart)
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
Road Map (tt)
Cấu trúc phân nhánh
IF
IF … ELSE
SWITCH … CASE
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
Các bước lập trình giải quyết vấn đề
Chúng ta thường gặp phải những bài toán cần giải quyết.
Để giải quyết những bài toán đó, chúng ta cần tìm hiểu chúng
trước rồi sau đó mới hoạch định các bước cần làm.
Giả sử chúng ta muốn đi từ phòng học F103 đến căn tin. Ðể
thực hiện việc này chúng ta cần hiểu nó rồi tìm ra các bước
giải quyết trước khi thực thi các bước đó:
BƯỚC 1 : Rời phòng
BƯỚC 2 : Ðến cầu thang
BƯỚC 3 : Xuống cầu thang
BƯỚC 4 : Ði tiếp đến căn tin
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
Các bước lập trình giải quyết vấn đề
Thủ tục trên liệt kê tập hợp các bước thực hiện được xác định
rõ ràng cho việc giải quyết vấn đề.
Một tập hợp các bước như vậy gọi là giải thuật
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
Giải thuật là gì?
Giải thuật hay thuật toán là một chuổi hữu hạn các bước cụ thể
rõ ràng cần thiết để giải quyết bài toán nhất định.
Một tập hợp có trình tự của các bước rõ ràng thực thi được
dùng diễn giải một quy trình có kết cục.
Trong ngữ cảnh lập trình, thuật toán là một chuỗi các câu lệnh
được thiết kế theo quy cách mà nếu các câu lệnh được thực hiện
theo một trình tự quy định, kết quả mong muốn sẽ đạt được.
Các câu lệnh cần phải được cụ thể và rõ ràng.
Kết quả phải được thu sau một số hữu hạn các bước thực thi.
Một thuật toán phải có kết cục và không có một hoặc nhiều
câu lệnh được lập lại một cách vô hạn.
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
Giải thuật là gì?
Ví dụ 1: giải thuật tính tổng hai số
Bước 1: Bắt đầu
Bước 2: Đọc hai số A và B
Bước 3: Cộng A và B, lưu kết quả vào C
Bước 4: Hiện thị kết quả C
Bước 5: Kết thúc
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
Giải thuật là gì?
Ví dụ 2: hướng dẫn làm bánh flan
Nguyên liệu: 05 hột gà, 01 hộp sữa đặc, 200gr đường cát, 01 ống
vani, 03 chén sữa tươi, 1,5 lon sữa bò nước đun sôi để nguội, 20
khuôn nhựa có nắp đậy
Cách làm:
Khuấy sữa đặc và 1,5 lon nước sôi để nguội, cho thêm 100gr
đường cát vào quậy cho tan đều.
Đập trứng vào tô lớn, dùng đũa đánh đều cho tan lòng trắng và
lòng đỏ.
Cho ống vani, trứng vào dung dịch sữa đánh đều.
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
Giải thuật là gì?
100gr đường còn lại cho vào nồi thắng hơi vàng. Cho vào 01
muỗng nước khuấy đều nhấc xuống để hơi nguội, chia đều nước
đường vừa thắng ra 20 khuôn nhựa đã chuẩn bị sẵn.
Cuối cùng cho hỗn hợp trứng sữa vào đều khuôn, đậy nắp lại
Cho bánh vào hấp cách thủy, đun lửa vừa để bánh mịn màng
không bị rỗ.
Trong lúc hấp bánh khoảng 10 phút mở nắp nồi hấp bánh 1 lần,
hấp khoảng 15 – 20 phút là chín bánh.
Đem ra để nguội, cho vào tủ lạnh hoặc ủ trong đá ăn mới ngon
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
Giải thuật là gì?
So sánh hai ví dụ:
Các câu lệnh trong ví dụ 1 cụ thể và rõ ràng → kết quả không
thay đổi cho tất cả lần thực thi
Một số bước hướng dẫn trong ví dụ 2 không cụ thể, còn mơ hồ
→ phụ thuộc vào người thực hiện kết quả đạt được có thể:
Không thành công
Thành công nhưng
bánh không ngon, nhìn không đẹp mắt
bánh ngon, nhìn rất đẹp mắt, v.v.
Các bước hướng dẫn trong ví dụ 2 cũng tương tự như một thuật
toán nhưng không đủ điều kiện kỹ thuật là một thuật toán
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
Đặc tính của giải thuật
Để hội đủ điều kiện là thuật toán, một chuỗi các câu lệnh cần có các đặc điểm
sau:
Các bước sử dụng trong thuật toán phải được rõ ràng và xác định chính xác
Mỗi câu lệnh được xây dựng sao cho nó có thể được thực hiện trong một
thời gian hữu hạn
Tránh trường hợp không chắc chắn thực thi câu lệnh nào kế tiếp
Số bước trong thuật toán nên hữu hạn và thuật toán cần phải được chấm dứt,
có nghĩa là, nó không được có kết thúc mở
Việc thi hành của thuật toán được kết thúc sau một số hữu hạn các bước
Sau khi thực hiện các câu lệnh, tức là sau khi kết thúc thuật toán, sẽ có được
kết quả mong muốn
Thuật toán cần được tổng quát đủ để đối phó với mọi tình huống
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
Road Map
Giải thuật
Các bước lập trình giải quyết vấn đề
Giải thuật là gì?
Đặc tính của giải thuật
Phát triển giải thuật
Phát triển Top-down
Step-wise refinement
Cấu trúc chương trình
Mã giả và lưu đồ
Mã giả (Pseudo Code)
Lưu đồ (Flowchart)
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
Phát triển top-down
Top-down là một phương pháp trong đó giải pháp cho một
vấn đề tính toán lớn được phát triển từ một lời giải tổng quát
mơ hồ đến một thuật toán xác định chính xác.
Phát triển bằng cách này đưa đến một phương pháp để xử lý
sự phức tạp của vấn đề bằng cách xé nhỏ chúng thành các mô-
đun dễ dàng và dễ hiểu hơn.
Quá trình liên tục xé nhỏ một nhiệm vụ xuống thành các
nhiệm vụ con sẽ được tiếp tục cho đến khi các nhiệm vụ con
này có thể dễ dàng thực hiện
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
Phát triển top-down (tt)
Main Program
Main Process Output functionsInput functions
Sub function 1 Sub function 2 Sub function 3
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
Phát triển top-down (tt)
Phương pháp topdown về bản chất là xé nhỏ một hệ thống để
có được cái nhìn sâu sắc về thành phần của tiểu hệ thống.
Trong phương pháp topdown, được hình thành trước nhất là
cái nhìn tổng quan của hệ thống. Nó được quy định cụ thể
nhưng không chứa bất kỳ chi tiết của hệ thống phụ cấp một.
Đôi lúc cần phần cấp xuống nhiều mức độ, cho đến khi toàn
bộ các chi tiết kỹ thuật (specification) được chi tiết hóa đến
mức cơ bản nhất.
.
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
Stepwise refinement
Là một kỹ thuật nhằm phân rã một hệ thống từ chi tiết kỹ thuật
mức độ cao thành các thành phần cơ bản.
Phân rã một vấn đề phức tạp thành một số bước đơn giản
Mỗi bước này có thể được giải quyết bằng một thuật toán nhỏ
hơn và đơn giản hơn so với bài toán tổng thể cần giải quyết
Dễ dàng xây dựng hơn và phác thảo chi tiết hơn
Thuật toán phụ có thể được chia thành nhiều phần nhỏ hơn
Thuật toán tiếp tục được cải tiến theo cách phân rã này này
cho đến khi mỗi bước có đầy đủ chi tiết
Cải tiến có nghĩa là thay thế các bước hiện tại / câu lệnh
với một phiên bản mới đầy chi tiết hơn
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
Stepwise refinement (tt)
Ví dụ: robot pha trà. Các bước (giải thuật) để thực hiện là:
1. Bỏ trà vào bình
2. Đun nước
3. Chế nước sôi vào bình
4. Chờ 5 phút (cho ra trà)
5. Rót trà vào tách
Các bước này chưa đủ chi tiết cho robot thực hiện, cần cải tiến
từng bước thành chuổi các bước nhỏ chi tiết hơn.
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
Stepwise refinement (tt)
Cải tiến lần 1:
1. Bỏ trà vào bình
1. Mở hộp trà
2. Xúc đầy 1 muỗng lá trà
3. Bỏ trà vào bình
4. Đóng nắp hộp trà
2. Đun nước
1. Đổ nước vào ấm nước điện
2. Bật công tắc ấm nước
3. Chờ nước sôi
4. Tắt công tắc ấm nước
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
Stepwise refinement (tt)
3. Chế nước sôi vào bình
4. Chờ 5 phút (cho ra trà)
5. Rót trà vào tách
1. Rót trà từ bình vào tách cho đến khi tách đầy
5 bước ban đầu đã được cải tiến thành chuổi các bước phụ chi
tiết hơn (bước 4 không cần thiết)
Một vài bước phụ có thể cải tiến thêm nữa. Ví dụ như:
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
Stepwise refinement (tt)
Cải tiến lần hai
2. Đun nước
1. Đổ nước vào ấm nước điện
1. Đặt ấm nước dưới vòi nước
2. Mở vòi nước
3. Chờ đến khi ấm nước đầy
4. Tắt vòi nước
Các bước phụ khác có thể cải tiến thêm nữa
Chương trình sẽ được xây dựng bằng cách thông dịch từng
bước (đã được cải tiến cuối cùng) sang câu lệnh của ngôn ngữ
lập trình
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
Stepwise refinement (tt)
Giải thuật ban đầu Cải tiến lần 1 Cải tiến lần 2
1. Bỏ trà vào bình 1.1 Mở hộp trà 1.1.1 Lấy hộp trà từ ngăn tủ
1.1.2 Tháo nắp hộp trà
1.2 Xúc đầy 1 muỗng lá trà
1.3 Bỏ trà vào bình
1.4 Đóng nắp hộp trà 1.4.1 Đặt nắp lên hộp trà
1.4.2 Đặt hộp trà về ngăn tủ
2. Đun nước 2.1 Đổ nước vào ấm nước điện 2.1.1 Đặt ấm nước dưới vòi
nước
2.1.2 Mở vòi nước
2.1.3 Chờ đến khi ấm nước
đầy
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
Stepwise refinement (tt)
Giải thuật ban đầu Cải tiến lần 1 Cải tiến lần 2
2.1.4 Tắt vòi nước
2.2 Bật công tắc ấm nước
2.3 Chờ nước sôi 2.3.1 Chờ đến khi ấm nước
kêu
2.4 Tắt công tắc ấm nước
3. Chế nước sôi
vào bình
3.1 Chế nước sôi từ ấm vào
bình đến khi bình đầy
4. Chờ 5 phút
5. Chế trà vào tách 5.1 Rót trà từ bình vào tách
cho đến khi tách đầy
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
Road Map
Giải thuật
Các bước lập trình giải quyết vấn đề
Giải thuật là gì?
Đặc tính của giải thuật
Phát triển giải thuật
Phát triển Top-down
Step-wise refinement
Cấu trúc chương trình
Mã giả và lưu đồ
Mã giả (Pseudo Code)
Lưu đồ (Flowchart)
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
Cấu trúc chương trình
Một chương trình như Microsoft Windows nhìn bề ngoài không
có gì chung với một video game như World of Warcraft.
Tuy nhiên, cho dù mục đích có khác nhau, mọi chương trình đều
bao gồm các câu lệnh (dòng mã) “biểu” các máy tính phải làm gì,
theo từng bước.
Trong mỗi chương trình, các câu lệnh tổ chức theo ba cách: tuần
tự, phân nhánh, hoặc vòng lặp.
Bằng cách kết hợp chúng với nhau, bạn có thể viết bất cứ loại
chương trình
www.hoasen.edu.vn
Cùng Đại học Hoa Sen xây dựng tương lai
Cấu trúc tuần tự
Các câu lệnh nối tiếp nhau, từ câu
lệnh đầu tiên ở trên cùng đến câu
lệnh cuối cùng ở phía dưới.
Mỗi chương trình tổ chức hầu hết các
câu lệnh của nó theo tuần tự.
Ít có chương trình tổ chức tất cả các
câu lệnh của chúng theo tuần tự.
Lý do là nếu một chương trình tổ
chức tất cả các câu lệnh của nó theo
tuần tự, chương trình có thể chạy qua
câu lệnh của nó đúng một lần trước
khi nó dừng lại.
Kết thúc
Bắt đầu
Câu lệnh 1
Câu lệnh 2
Câu lệnh 3
Câu lệnh 4