Bài 6 - Thuật toán và sơ đồ thuật toán

1. Thuật toán (giải thuật) là gì?

Bạn có thể hiểu khái niệm thuật toán đơn giản nhất là tập hợp các bước, cách thức, quy trình để máy tính giải quyết 1 bài toán nào đấy.  Lưu ý: Cùng một bài toán có nhiều cách giải nhưng không phải cách giải nào cũng có thể cài đặt, viết thành 1 chương trình máy tính, đồng thời cần ưu tiên thuật toán tối ưu sử dụng ít tài nguyên máy tính nhất.

Thuật toán là gì?

Ta cùng xem ví dụ "Mô tả thuật toán tìm nghiệm của phương trình bậc hai tổng quát bằng cách liệt kê hoặc bằng sơ đồ khối" sau đây:

• Xác định bài toán:

- Input: Các số thực a, h, c (a≠0).

- Output: Các số thực X thoả mãn ax2 + bx + c = 0.

• Ý tưởng:

- Tính d = b2 - 4ac.

- Lần lượt xét ba trường hợp cho giá trị d:

+ nếu d < 0 thì kết luận phương trình vô nghiệm ;

+ nếu d = 0 thì kết luận phương trình có một nghiệm x =-b/2a;

+ nếu d > 0 thì kết luận phương trình có hai nghiệm phân biệt là: x = (-b ± √d) / 2a.

• Thuật toán:

Mô tả thuật toán bằng cách liệt kê:

Bước I. Nhập ba số a, b, c;

Bước 2. d ← (b*b - 4*a*c);

Bước 3.

nếu d < 0 thì đưa ra thông báo phương trình vô nghiệm rồi kết thúc;

nếu d = 0 thì đưa ra thông báo phương trình có một nghiệm và tính nghiệm

x = -b/(2*a), rồi kết thúc;

nếu d> 0 thì đưa ra thông báo phương trình có hai nghiệm phân biệt, tính nghiệm x1= (-b + -√d) / (2*a) và x2 = (-b - √ d ) / (2*a), rồi kết thúc;

Mô tả thuật toán theo sơ đồ khối: 
Sơ đồ khối thuật toán giải phương trình bậc 2

Như vậy, sơ đồ khối giống như bản thiết kế giúp mô hình hóa thuật toán cho dễ hiểu, và ý nghĩa quan trọng nhất là có thể trao đổi giữa các lập trình viên với nhau (lập trình viên chỉ cần nhìn sơ đồ khối với các ký hiệu được thống nhất là có thể hiểu được luồng nghiệp vụ). Giống như bản thiết kế nhà, nếu thiết kế đúng thì dựa vào bản thiết kế người kỹ sư có thể đọc hiểu và xây nhà được.

2. Các ký hiệu thường gặp trong sơ đồ khối:

Bạn tham khảo các ký hiệu thường gặp trong sơ đồ khối trong bảng liệt kê sau đây:

Ký hiệu lược đồ thuật toán

Kết luận:

Như vậy trong bài viết này bạn đã hiểu phần nào hiểu rõ hơn về khái niệm thuật toán cũng như các ký hiệu để vẽ 1 sơ đồ thuật toán. Việc nắm được thuật toán và cấu trúc dữ liệu sẽ giúp ích cho bạn rất nhiều trong công việc lập trình nên hãy tập trung nghiên cứu kỹ 2 thứ này. Hẹn gặp lại các bạn trong bài viết tiếp theo.

Tác giả: Admin