Xây dựng thuật toán Giải bài toán xác định tính chẵn lẻ của tổng 2 số nguyên dương A B

1. Khái niệm bài toán

a. Khái niệm

 - Là việc nào đó mà ta muốn máy tính thực hiện để từ thông tin đưa vào [Input] tìm được thông tin ra [Output].

 + Khi máy tính giải bài toán cần quan tâm đến 2 yếu tố:

- Input : Thông tin đã có.

- Output: thông tin cần tìm từ Input

b.Ví dụ:

 Xác định Input và Output của các bài toán sau:

Vd1: Giải phương trình

         ax2 + bx + c = 0      [a

0]

 Input: Số nguyên a, b, c với a 0.

 Output: Nghiệm của phương trình.

Vd2 Kiểm tra số nguyên dương N có phải là số nguyên tố không?

 Input: Số nguyên dương N

 Output: Kết luận N có phải là số nguyên tố không.

Vd3 Cho bảng điểm của HS lớp10A. Đưa ra màn hình danh sách HS tiên tiến của lớp 10A.

Input: Bảng điểm của HS lớp 10 A.

Output: Danh sách HS tiên tiến của lớp 10A.

2. Khái niệm thuật toán

 a. Khái niệm: là một dãy hữu hạn các thao tác được sắp xếp theo một trình tự xác định sao cho sau khi thực hiện các thao tác ấy, từ Input của bài toán ta nhận được Output cần tìm.

- Tác dụng của thuật toán: Dùng để giải một bài toán.

* Các tính chất của thuật toán:

- Tính xác định: các bước giải phải rõ ràng không gây ra sự lẫn lộn hoặc nhập nhằng.

- Tính dừng: Thuật toán phải dừng lại sau một số bước giải.

- Tính đúng: Kết quả sau khi thực hiện thuật giải phải là kết quả đúng dựa theo một định nghĩa hoặc một kết quả cho trước.

- Tính hiệu quả:

   + Phải sử dụng dung lượng bộ nhớ là nhỏ nhất.

   + Số phép toán ít nhất.

   + Thuật toán dễ hiểu không?

   + Dễ khai báo trên máy tính.

3. Biễu diễn thuật toán

a. Liệt kê các bước.

 b. Sơ đồ khối

- Các quy định khi biễu diễn thuật toán bằng sơ đồ khối :

3. Một số ví dụ về thuật toán

Ví dụ 1 : Cho 3 số a, b, c bất kì. Tìm số lớn nhất trong ba số. Viết thuật toán dưới hai dạng.

Lời giải

· Xác định bài toán

Input: a, b, c

Output: Max[a,b,c].

· Ý tưởng:

- Cho max = a.

- Nếu b> max thì max = b

- Nếu c> max thì max = c

· Thuật toán

a. Cách liệt kê

B1: Nhập vào a, b, c.

B2: max := a.

B3: nếu max M thì quay lại bước 3;

   - Bước 7: Nếu ai > ai+1 thì tráo đổi ai và ai+1 cho nhau;

   - Bước 8: Quay lại bước 5;

b] Sơ đồ khối

Ví dụ 3: Bài toán tìm kiếm

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

- Input : Dãy A gồm N số nguyên khác nhau a1, a2,…, an và một số nguyên k [khóa]

   Ví dụ : A gồm các số nguyên ″ 5 7 1 4 2 9 8 11 25 51″ và k = 2 [k = 6].

- Output: Vị trí i mà ai = k hoặc thông báo không tìm thấy k trong dãy. Vị trí của 2 trong dãy là 5 [không tìm thấy 6]

• Ý tưởng

Tìm kiếm tuần tự được thực hiện một cách tự nhiên: Lần lượt đi từ số hạng thứ nhất, ta so sánh giá trị số hạng đang xét với khóa cho đến khi gặp một số hạng bằng khóa hoặc dãy đã được xét hết mà không tìm thấy giá trị của khóa trên dãy.

• Xây dựng thuật toán

a] Cách liệt kê

   - Bước 1: Nhập N, các số hạng a1, a2,…, aN và giá trị khoá k;

   - Bước 2: i ← 1;

   - Bước 3: Nếu ai = k thì thông báo chỉ số i, rồi kết thúc;

   - Bước 4: i ←i+1;

   - Bước 5: Nếu i > N thì thông báo dãy A không có số hạng nào có giá trị bằng k, rồi kết thúc;

   - Bước 6: Quay lại bước 3;

b] Sơ đồ khối

Ví dụ 4: Tìm kiếm nhị phân

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

- Input: Dãy A là dãy tăng gồm N số nguyên khác nhau a1, a2,…, an và một số nguyên k.

Ví dụ: Dãy A gồm các số nguyên 2 4 5 6 9 21 22 30 31 33 và k = 21 [k = 25]

- Output : Vị trí i mà ai = k hoặc thông báo không tìm thấy k trong dãy. Vị trí của 21 trong dãy là 6 [không tìm thấy 25]

• Ý tưởng

Sử dụng tính chất dãy A đã sắp xếp tăng, ta tìm cách thu hẹp nhanh vùng tìm kiếm bằng cách so sánh k với số hạng ở giữa phạm vi tìm kiếm [agiữa], khi đó chỉ xảy ra một trong ba trường hợp:

   - Nếu agiữa= k thì tìm được chỉ số, kết thúc;

   - Nếu agiữa > k thì việc tìm kiếm thu hẹp chỉ xét từ adầu [phạm vi] → agiữa - 1;

   - Nếu agiữa < k việc tìm kiếm thu hẹp chỉ xét từ agiữa + 1→acuối [phạm vi].

Quá trình trên được lặp lại cho đến khi tìm thấy khóa k trên dãy A hoặc phạm vi tìm kiếm bằng rỗng.

• Xây dựng thuật toán

a] Cách liệt kê

   - Bước 1: Nhập N, các số hạng a1, a2,…, aN và giá trị khoá k;

   - Bước 2: Đầu ←1; Cuối ←N;

   - Bước 3: Giữa←[[Đầu+Cuối]/2];

   - Bước 4: Nếu agiữa = k thì thông báo chỉ số Giữa, rồi kết thúc;

   - Bước 5: Nếu agiữa > k thì đặt Cuối = Giữa - 1 rồi chuyển sang bước 7;

   - Bước 6: Đầu ←Giữa + 1;

   - Bước 7: Nếu Đầu > Cuối thì thông báo không tìm thấy khóa k trên dãy, rồi kết thúc;

   - Bước 8: Quay lại bước 3.

b] Sơ đồ khối

Loigiaihay.com

Video liên quan

Chủ Đề