1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Tin học đại cương: Chương 6 - Học viện Nông nghiệp Việt Nam - Trường Đại học Công nghiệp Thực phẩm Tp. Hồ Chí Minh

7 10 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 7
Dung lượng 529,33 KB

Nội dung

- Bước đầu thuật toán được minh hoạ bằng ngôn ngữ tự nhiên thể hiện các công việc chính cần thực hiện, sau đó dần minh họa chi tiết hơn với các thao tác xử lý, các phép toán được chỉ ra [r]

(1)

KHOA CÔNG NGHỆ THÔNG TIN

Chương 6

THUẬT TỐN VÀ NGƠN NGỮ LẬP TRÌNH

NỘI DUNG

6.1 Phương pháp giải vấn đề máy tính 6.2 Thuật tốn

6.3 Ngơn ngữ lập trình

2 Chương Thuật tốn Ngơn ngữ lập trình

08/02/2017

Khoa Cơng nghệ thông tin – Học viện Nông nghiệp Việt Nam

Bài giảng Tin học đại cương

6.1 PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ BẰNG MÁY TÍNH

Nhắc lại:

• Một chức máy tính: Xử lý thơng tin nhận theo dãy lệnh nhớ sẵn bên

• Nguyên lý điều khiển chương trình Von Neumann: Máy tính hoạt động theo chương trình lưu trữ sẵn nhớ

 Để giải vấn đề/bài tốn máy tính cần phải xây dựng chương trình máy tính tương ứng

Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam

Bài giảng Tin học đại cương

6.1 PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ BẰNG MÁY TÍNH

• Phương pháp chung để giải vấn đề/bài tốn máy tính:

BÀI TỐN

THUẬT TỐN CHƯƠNG

TRÌNH NGƠN NGỮ

MÁY MÁY THỰC

HIỆN

Tìm cách xử lý liệu đầu vào

Viết chương trình ngơn ngữ lập trình

(2)

6.2 THUẬT TỐN 6.2.1 Khái niệm thuật tốn

6.2.2 Các tính chất thuật toán 6.2.3 Cách diễn đạt thuật toán 6.2.4 Thiết kế thuật toán 6.2.5 Đánh giá thuật toán

5 Chương Thuật tốn Ngơn ngữ lập trình

08/02/2017

6.2.1 KHÁI NIỆM THUẬT TỐN

• Thuật ngữ algorithm đưa vào khoảng năm 825, xuất phát từ chữ algoritmi – phiên âm La tinh tên nhà tốn học người Trung Á Al-Khwarizmi

• Thuật toán (thuật giải, algorithms): dãy hữu hạn thao tác, phép tốn thực theo trình tự xác định số đối tượng liệu để đạt kết mong muốn

Thuật toán xây dựng phải bao gồm thao tác xác định rõ ràng, đơn giản thực (phải “giao cho máy làm được”)

Khi xây dựng thuật toán cần xác định rõ thuật tốn tác động lên liệu

6 Chương Thuật tốn Ngơn ngữ lập trình

08/02/2017

Khoa Cơng nghệ thơng tin – Học viện Nông nghiệp Việt Nam

Bài giảng Tin học đại cương

6.2.1 KHÁI NIỆM THUẬT TỐN

• Ví dụ: Bài tốn tìm ước số chung lớn số nguyên dương a b:

Input: a,b (nguyên dương) Output: (a,b)

Thuật toán Euclid:

- Bước 1: So sánh a b, a = b dừng thuật tốn thơng báo (a,b) = b Nếu a  b chuyển sang bước

- Bước 2: Nếu a > b thay a a-b, a < b thay b b-a Quay lại thực bước

Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam

Bài giảng Tin học đại cương

6.2.2 CÁC TÍNH CHẤT CỦA THUẬT TỐN

• Đầu vào

• Đầu

• Tính hữu hạn: Thuật tốn phải kết thúc sau số hữu hạn bước thực

• Tính xác định

- Mỗi bước thuật tốn phải xác định xác, thao tác quy định chặt chẽ rõ ràng

Với liệu đầu vào trả kết

(3)

6.2.3 CÁCH DIỄN ĐẠT THUẬT TỐN cách:

• Cách 1: Liệt kê bước ngôn ngữ tự nhiên: - Sử dụng ngôn ngữ tự nhiên để liệt kê bước thực

hiện thuật toán với quy tắc, thao tác cụ thể - Ví dụ: Thuật tốn Euclid tìm UCLN số nguyên

dương a,b (slide 7)

9 Chương Thuật tốn Ngơn ngữ lập trình

08/02/2017

6.2.3 CÁCH DIỄN ĐẠT THUẬT TỐN

• Cách 2: Dùng lưu đồ:

- Sử dụng hình khối (Bắt đầu, Kết thúc, Khối Input, Khối Output, Khối điều kiện, Khối thao tác) cung để thể thao tác trình tự thực thao tác thuật tốn

Chương Thuật tốn Ngơn ngữ lập trình 10 08/02/2017

Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam

Bài giảng Tin học đại cương

Các hình khối để xây dựng lưu đồ

Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam

Bài giảng Tin học đại cương

(4)

6.2.3 CÁCH DIỄN ĐẠT THUẬT TỐN

• Cách 3: Sử dụng giả mã (giả ngơn ngữ lập trình): - Sử dụng cấu trúc điều khiển ngôn ngữ lập

trình kết hợp linh hoạt với ngơn ngữ tự nhiên ký hiệu toán học đơn giản nhằm diễn tả thuật tốn

- Ví dụ: Giả mã cho thuật tốn Euclid tìm (a,b) viết tựa theo cấu trúc ngơn ngữ lập trình PASCAL:

Nhập a,b

While ab

If a>b then thay a a-b else thay b b-a

Thông báo ước chung lớn b

13 Chương Thuật tốn Ngơn ngữ lập trình

08/02/2017

6.2.3 CÁCH DIỄN ĐẠT THUẬT TỐN

- Ví dụ (tiếp): Đoạn mã tương ứng viết ngôn ngữ Pascal:

Writeln('Nhap so nguyen duong a, b: '); Write('a = '); Readln(a);

Write('b = '); Readln(b); While a<>b

If a>b then a:=a-b else b:=b-a;

Writeln('Uoc chung lon nhat la ',b);

14 Chương Thuật tốn Ngơn ngữ lập trình

08/02/2017

Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam

Bài giảng Tin học đại cương

6.2.4 THIẾT KẾ THUẬT TỐN

• Mơ-đun hóa tốn: Chia nhỏ tốn (mơ-đun chính) thành tốn nhỏ (các mô-đun con)

Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam

Bài giảng Tin học đại cương

6.2.4 THIẾT KẾ THUẬT TỐN

• Tinh chỉnh bước thuật tốn:

- Bước đầu thuật tốn minh hoạ ngơn ngữ tự nhiên thể cơng việc cần thực hiện, sau dần minh họa chi tiết với thao tác xử lý, phép toán cách cụ thể, đồng thời ngôn ngữ tự nhiên dùng để minh họa thay dần giả ngôn ngữ ngày tiến gần đến ngơn ngữ lập trình

(5)

Ví dụ

• Cho dãy gồm n phần tử thuộc kiểu có thứ tự: a1, a2, …, an Hãy đổi chỗ phần tử dãy cho dãy sau đổi chỗ có thứ tự tăng dần

17 Chương Thuật tốn Ngơn ngữ lập trình

08/02/2017

Ví dụ Ý tưởng:

- Chọn phần tử nhỏ dãy nguồn xếp vào vị trí dãy đích

- Chọn phần tử nhỏ dãy nguồn lại (tức phần tử nhỏ thứ hai dãy nguồn ban đầu) xếp vào vị trí thứ hai dãy đích

- …

Lặp lại trình hết dãy nguồn

(Tổng quát: Tại bước thứ i, ta chọn phần tử nhỏ dãy nguồn lại - tức phần tử nhỏ thứ i dãy nguồn ban đầu - xếp vào vị trí thứ i dãy đích)

18 Chương Thuật tốn Ngơn ngữ lập trình

08/02/2017

Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam

Bài giảng Tin học đại cương

Ví dụ Giả mã dựa theo ngơn ngữ Pascal: For i:=1 to n

Begin

- Chọn phần tử nhỏ ajtrong số phần tử ai, …, an - Đổi chỗ ajvà aicho

End;

Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam

Bài giảng Tin học đại cương

Ví dụ

Các cơng việc khối Begin … End làm rõ sau:

j:=i;

For k:=i+1 to n If ak<ajthen j:=k;

Việc “đổi chỗ ajvà aicho nhau” thực cách sử dụng thêm phần tử trung gian min:

min:=aj;

aj:= ai;

(6)

Ví dụ

Đoạn mã tương ứng viết ngôn ngữ Pascal: For i:=1 to n-1

Begin j:=i;

For k:=i+1 to n

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

Begin

min:=a[j]; a[j]:=a[i]; a[i]:=min; End;

End;

21 Chương Thuật tốn Ngơn ngữ lập trình

08/02/2017

Ví dụ Cho dãy số ban đầu:

3 -2

Dãy sau bước thực thuật toán xếp lựa chọn (i = 4):

i=1: -2

i=2: -2

i=3: -2

i=4: -2

22 Chương Thuật tốn Ngơn ngữ lập trình

08/02/2017

Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam

Bài giảng Tin học đại cương

6.2.5 ĐÁNH GIÁ THUẬT TỐN

• Để đánh giá thuật tốn dựa nhiều tiêu chí: thời gian thực thuật tốn, khả thích ứng thuật tốn với loại máy tính khác nhau, tính đắn, mức độ đơn giản, hình thức thuật toán, dung lượng nhớ sử dụng để lưu trữ liệu, …

• tiêu chí chính:

- Thời gian thực thuật toán - Dung lượng nhớ sử dụng

Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam

Bài giảng Tin học đại cương

6.2.5 ĐÁNH GIÁ THUẬT TỐN

• Khi cài đặt thành chương trình máy tính, thời gian thực thuật tốn phụ thuộc vào nhiều yếu tố: - Số lượng phép tốn sơ cấp: phép tính số học,

phép tính logic, phép gán giá trị, chuyển chỗ, …  phụ thuộc vào kích thước liệu đầu vào tốn - Ngơn ngữ lập trình, chương trình dịch, hệ điều hành, tốc

(7)

6.2.5 ĐÁNH GIÁ THUẬT TỐN

• Để đánh giá thời gian thực thuật toán, người ta sử dụng “Độ phức tạp tính tốn thuật toán” (gọi tắt Độ phức tạp thuật toán): Thời gian thực thuật toán đánh giá phụ thuộc vào kích thước liệu đầu vào, khơng phụ thuộc vào máy tính yếu tố liên quan

25 Chương Thuật toán Ngơn ngữ lập trình

08/02/2017

6.2.5 ĐÁNH GIÁ THUẬT TỐN

• Thuật tốn T sử dụng để giải tốn có kích thước liệu đầu vào n cần thực T(n) phép toán sơ cấp T(n) hàm tham số n, đặc trưng cho độ phức tạp tính tốn thuật tốn

• Tổng qt: Giả sử f(n), g(n) hai hàm số không âm, đồng biến theo n Hàm f(n) xác định có độ phức tạp tính toán cấp g(n), ký hiệu O(g(n)), tồn số c n0sao cho f(n) ≤ cg(n) n ≥ n0 Khi đó, ta nói f(n) có cấp g(n), ký hiệu f(n) = O(g(n)) (thực chất cấp lớn không vượt g(n))

Ví dụ: với f(n) = n2+ 2n + 3, f(n) ≤ n2+ 2n2+ 3n2= 6n2với

n ≥ nên f(n) = O(n2)

26 Chương Thuật toán Ngơn ngữ lập trình

08/02/2017

Khoa Cơng nghệ thông tin – Học viện Nông nghiệp Việt Nam

Bài giảng Tin học đại cương

6.2.5 ĐÁNH GIÁ THUẬT TỐN

• Độ phức tạp tính tốn thuật tốn thuộc dạng (được xếp theo mức độ tăng dần):

T(n) = O(1): độ phức tạp cấp số

T(n) = O(log2n): độ phức tạp cấp hàm lograrit T(n) = O(n): độ phức tạp cấp hàm tuyến tính T(n) = O(nlog2n): độ phức tạp cấp hàm nlog2n

T(n) = O(n2), O(n3), …, O(nk): độ phức tạp cấp hàm đa thức

T(n) = O(2n), O(n!), O(nn): độ phức tạp cấp hàm mũ • Một thuật tốn có độ phức tạp tính tốn từ cấp hàm đa thức

trở xuống thường chấp nhận

Khoa Công nghệ thông tin – Học viện Nông nghiệp Việt Nam

Bài giảng Tin học đại cương

6.2.5 ĐÁNH GIÁ THUẬT TỐN

• Xác định độ phức tạp thuật toán: Quy tắc cộng:

Nếu T1(n) = O(f(n)), T2(n) = O(g(n)), T1(n) + T2(n) = O(max{f(n),g(n)})

Ví dụ: Trong thuật tốn có bước, bước có độ phức tạp tính tốn T1(n) = O(n3), T

2(n) = O(n), T3(n) = O(nlog2n) thời gian thực bước là:

T1(n) + T2(n) + T3(n) = O(max{n3,n,nlog

Ngày đăng: 01/04/2021, 13:39

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w