• Không có kết quả nào được tìm thấy

Chương 8: Giải thuật (Algorithms)

N/A
N/A
Protected

Academic year: 2022

Chia sẻ "Chương 8: Giải thuật (Algorithms)"

Copied!
18
0
0

Loading.... (view fulltext now)

Văn bản

(1)

Chương 8: Giải thuật (Algorithms)

8.1. Phương pháp giải quyết vấn đề bằng máy tính 8.2. Dữ liệu, giải thuật và chương trình

8.3. Giải thuật

8.3.1. Khái niệm

8.3.2. Các tính chất của giải thuật 8.4. Các cách diễn đạt giải thuật

8.4.1. Liệt kê các bước bằng lời 8.4.2. Lưu đồ giải thuật

8.4.3. Giả mã

8.5. Một số giải thuật cơ bản

1

(2)

Chương 8: Giải thuật (Algorithms)

8.1. Phương pháp giải quyết vấn đề bằng máy tính

Bài toán => Giải thuật => Chương trình =>

Ngôn ngữ máy => Máy thực hiện

(3)

Chương 8: Giải thuật (Algorithms)

8.2. Dữ liệu, giải thuật và chương trình

Dữ liệu + Giải thuật = Chương trình

3

(4)

Chương 8: Giải thuật (Algorithms)

8.3. Khái niệm về giải thuật 8.3.1. Khái niệm

8.3.2. Các tính chất của giải thuật - Tính thực hiện được:

- Tính kết thúc:

- Tính kết quả:

- Tính hiệu quả:

- Tính duy nhất:

- Tính tổng quát:

- Tính hình thức:

(5)

Chương 8: Giải thuật (Algorithms)

8.4. Các cách diễn đạt giải thuật 8.4.1. Liệt kê các bước bằng lời 8.4.2. Lưu đồ giải thuật

8.4.3. Giả mã

5

(6)

Chương 8: Giải thuật (Algorithms)

8.4. Các cách diễn đạt giải thuật 8.4.1. Liệt kê các bước bằng lời Ví dụ: Giải thuật tìm USCLN(a,b) B1: Nhập vào hai số nguyên a, b

B2: Đem a chia nguyên cho b, lấy phần dư để trong r.

B3: Nếu r = 0 thì chuyển sang B4. Nếu r 0 thì a lấy giá trị của b, b lấy giá trị của r và quay lại B2.

B4: Đưa ra USCLN ở trong b B5: Kết thúc

(7)

Chương 8: Giải thuật (Algorithms)

8.4. Các cách diễn đạt giải thuật 8.4.2. Lưu đồ giải thuật

Bắt đầu Kết thúc Vào/ra

dữ liệu

A

Thực hiện công việc A

B

Đúng Sai

7

(8)

Bắt đầu

Kết thúc

Nhập a, b

r := a mod b

r = 0

Đưa ra b

Đúng Sai

a := b b := r

(9)

Chương 8: Giải thuật (Algorithms)

8.4. Các cách diễn đạt giải thuật 8.4.3. Dùng giả mã

9

(10)

Chương 8: Giải thuật (Algorithms)

8.4. Các cách diễn đạt giải thuật 8.4.3. Dùng giả mã

Vào: a, b

Ra: USCLN(a,b) 1) Read(a,b);

2) r := a mod b;

3) While r 0 do begin

a := b; b := r; r:=a mod b;

end;

4) Write(b);

5) Kết thúc

(11)

Chương 8: Giải thuật (Algorithms)

8.5. Một số giải thuật cơ bản

8.5.1. Hoán đổi nội dung 2 ô nhớ (đổi chỗ) Ví dụ: Hoán đổi nội dung 2 ô nhớ a và b

1) tg := a;

2) a : = b;

3) b := tg;

Sau này, viết gọn là DoiCho(a,b) hoặc a :=: b hoặc a ↔ b

11

(12)

Chương 8: Giải thuật (Algorithms)

8.5. Một số giải thuật cơ bản

8.5.2. Tìm giá trị lớn nhất/nhỏ nhất trong 1 dãy số

Ví dụ: Cho dãy số a1, a2,…, an. Tìm giá trị lớn nhất

(13)

Chương 8: Giải thuật (Algorithms)

1) read(n);

2) read(a[1], a[2],…, a[n]);

3) max:=a[1];

4) For i:=2 to n do

If a[i] > max then max:=a[i];

5) write(max);

6) Kết thúc

13

(14)

Chương 8: Giải thuật (Algorithms)

8.5. Một số giải thuật cơ bản

8.5.3. Sắp xếp dãy số tăng/giảm dần

Ví dụ: Cho dãy số a1, a2,…, an. Sắp xếp dãy số tăng dần từ trái qua phải.

(15)

Chương 8: Giải thuật (Algorithms)

Giải thuật 1:

1) Read(n);

2) Read(a[1], a[2],…, a[n]);

3) For i:=1 to n-1 do For j:=i+1 to n do

If a[j] < a[i] then a[i] ↔ a[j]

4) Write(a[1], a[2],…, a[n]);

5) Kết thúc

15

(16)

Chương 8: Giải thuật (Algorithms)

Giải thuật 2:

1) Read(n);

2) Read(a[1], a[2],…, a[n]);

3) For i:=1 to n-1 do begin

+) k:=i;

+) For j:=i+1 to n do

If a[j] < a[k] then k:=j;

+ If k i then a[i] a[k];

end;

4) Write(a[1], a[2],…, a[n]);

5) Kết thúc

(17)

Chương 8: Giải thuật (Algorithms)

8.5. Một số giải thuật cơ bản

8.5.4. Tìm giá trị x trong dãy số

Ví dụ: Cho dãy số a1, a2,…, an. Tìm xem có phần tử nào bằng x không?

17

(18)

Chương 8: Giải thuật (Algorithms)

1) Read(n);

2) Read(a[1], a[2],…, a[n]);

3) Read(x);

4) Co:=FALSE; {Ban dau la khong co}

5) For i:=1 to n do

If a[i] = x Then begin

Co:=TRUE; break;

end;

6) If Co = TRUE Then write(‘Co phan tu bang x’) Else write(‘Khong co phan tu bang x’);

7) Kết thúc

Tài liệu tham khảo

Tài liệu liên quan

Đây là một phương pháp quan trọng trong việc giải quyết các bài toán phương trình hàm trên tập số nguyên.. Trước hết, ta biết rằng nguyên lý qui nạp có nhiều cách

l Mỗi một ngôn ngữ lập trình đều có các cấu trúc dữ liệu tiền định (định sẵn), bởi vậy khi chọn ngôn ngữ lập trình nào thì ta phải chấp nhận cấu trúc dữ liệu tiền định

Giải bài tập Tin học 7 Bài 4: Phân loại tệp và bảo vệ dữ liệu trong máy tính Khởi động trang 18 Tin học 7: Ở Hình 1, khi nháy đúp chuột vào tệp Baitap.docx, hệ điều

(2) Phương pháp/Kĩ thuật: Phát hiện và giải quyết vấn đề (3) Hình thức tổ chức hoạt động: Tự học, thực hành.. (4) Phương tiện dạy học: máy chiếu,

Trong bài báo này, chúng tôi đề xuất một số giải thuật mới có sử dụng chức năng phím CALC kết hợp với các biến nhớ để giải một số dạng toán về phép chia đa thức bậc

Ngoài ra, qua thực hành lập trình, học phần cũng giúp sinh viên giải thích được vai trò và tầm quan trọng của cấu trúc dữ liệu và giải thuật trong việc xây dựng phần

l Mỗi một ngôn ngữ lập trình đều có các cấu trúc dữ liệu tiền định (định sẵn), bởi vậy khi chọn ngôn ngữ lập trình nào thì ta phải chấp nhận cấu trúc dữ liệu tiền định

Thực nghiệm với một số robot khác nhau Trong mục này, trên cùng một robot chúng tôi sẽ sử dụng tất cả các tùy chọn của bài toán tối ưu giống nhau chỉ thay đổi duy nhất