CHƯƠNG 1 : THUẬT GIẢI VÀ LƯU ĐỒ
1.1. Thuật giải (algorithm)
Khi cần giải quyết một bài toán trong thực tế với sự trợ giúp của máy tính điện tử,
người sử dụng thường phải biết dữ liệu vào của bài toán (input) và yêu cầu dữ liệu ra
(output) của bài toán. Bước tiếp theo, phải thiết lập được các bước thao tác cụ thể để từ input ta có được output. Cơng việc đó trong Tin học được gọi là xây dựng thuật giải.
1.1.1. Khái niệm thuật giải
Thuật giải (algorithm) là một tập hữu hạn các thao tác (các cơng việc, các phép tốn) có thể đặt tên được và chúng được thực hiện theo một trình tự thích hợp trên một số đối tượng để đạt được mục đích mong muốn. "Hữu hạn" ở đây được hiểu cả về mặt thời gian thực hiện lẫn công cụ thực hiện.
Cùng một bài tốn có thể có nhiều thuật tốn khác nhau. Trong đó thuật tốn nào đơn giản, dễ hiểu, có độ chính xác cao, được bảo đảm về mặt tốn học và dễ triển khai trên máy nhất được gọi là thuật toán tối ưu.
Nghiên cứu thuật toán là một trong những vấn đề quan trọng nhất của Tin học.
1.1.2. Chương trình
Chương trình là tập hợp dãy các lệnh điều khiển máy tính thực hiện. Như vậy, có thể nói một chương trình là một cách diễn tả thuật giải trong một ngơn ngữ chính xác để máy tính có thể hiểu được.
Chương trình cho máy tính chính là sự mơ tả cụ thể các thuật toán và sự biểu diễn một cách rõ ràng chính xác các dữ liệu.
1.1.3. Các đặc trưng của thuật toán
Để phân biệt thuật toán với các thuật ngữ khác như phương pháp tiến hành, chương trình hành động... thuật tốn trong tin học phải có các tính chất sau:
41 + Tính xác định: Các thao tác ở mỗi bước phải hết sức rõ ràng và chỉ được hiểu theo một nghĩa duy nhất. Trong cùng một điều kiện hai máy khác nhau hoặc hai lần thao tác khác nhau phải cho cùng một kết quả khi thực hiện cùng một thuật tốn.
+ Tính hàng loạt: Thuật tốn có hiệu lực như nhau đối với các bài toán cùng loại (có cùng miền áp dụng thuật tốn).
+ Tính khả thi: Thuật tốn phải bao gồm các thao tác mà máy có thể thực hiện được nghĩa là chỉ bao gồm những phép toán số học, các phép so sánh, các phép logic, các phép nhập xuất thông tin tiêu chuẩn.
+ Tính đầy đủ: Thuật tốn phải vét được hết các tình huống, các khả năng có thể xảy ra, khơng bỏ sót bất kỳ một trường hợp nào.
1.1.4. Trình tự thực hiện các bước của thuật toán
Giải thuật được thiết kế theo ba cấu trúc suy luận cơ bản sau đây:
Tuần tự (Sequential): Các công việc được thực hiện một cách tuần tự, công việc
này nối tiếp công việc kia.
Cấu trúc lựa chọn (Selection) : Lựa chọn một công việc để thực hiện căn cứ vào
một điều kiện nào đó. Có một số dạng như sau:
- Cấu trúc 1: Nếu <điều kiện> (đúng) thì thực hiện <cơng việc> - Cấu trúc 2: Nếu <điều kiện> (đúng) thì thực hiện <công việc 1>,
ngược lại (điều kiện sai) thì thực hiện <cơng việc 2>.
- Cấu trúc 3: Trường hợp <i> thực hiện <công việc i>.
Cấu trúc lặp (Repeating): Thực hiện lặp lại một công việc nhiều lần căn cứ vào
một điều kiện nào đó. Có hai dạng như sau:
- Lặp xác định: là loại lặp mà khi viết chương trình, người lập trình đã xác định được công việc sẽ lặp bao nhiêu lần.
- Lặp không xác định: là loại lặp mà khi viết chương trình người lập trình chưa xác định được công việc sẽ lặp bao nhiêu lần. Số lần lặp sẽ được xác định khi chương trình thực thi.