Bài giảng cung cấp cho người học các kiến thức: Thuật toán và ngôn ngữ lập trình, phương pháp giải quyết vấn đề bằng máy tính, lịch sử phát triển của ngôn ngữ lập trình,... Hi vọng đây sẽ là một tài liệu hữu ích dành cho các bạn sinh viên đang theo học môn dùng làm tài liệu học tập và nghiên cứu. Mời các bạn cùng tham khảo chi tiết nội dung tài liệu.
HỌC VIỆN NÔNG NGHIỆP VIỆT NAM KHOA CÔNG NGHỆ THÔNG TIN Chương 6 Thuật tốn và Ngơn ngữ lập trình Khoa Cơng nghệ thơng ;n – Học viện Nông nghiệp Việt nam Bài giảng Tin học đại cương NỘI DUNG CHƯƠNG PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ BẰNG MÁY TÍNH THUẬT TỐN 2.1 Khái niệm thuật tốn 2.2 Các tính chất thuật toán 2.3 Độ phức tạp thuật toán 2.4 Các cách diễn đạt thuật tốn NGƠN NGỮ LẬP TRÌNH 3.1 Khái niệm ngơn ngữ lập trình 3.2 Lịch sử phát triển ngơn ngữ lập trình 3.3 Trình biên dịch trình thơng dịch 3.4 Các cơng việc lập trình Chương 6: Thuật tốn và Ngơn ngữ lập trình Khoa Cơng nghệ thơng ;n – Học viện Nông nghiệp Việt nam Bài giảng Tin học đại cương 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 thể theo sơ đồ sau: BÀI TOÁN THUẬT TỐN CHƯƠNG TRÌNH NGƠN NGỮ MÁY Cho một bài toán nghĩa là phải xác định dữ liệu cần nhập vào máy Xnh và Ym đầu ra Tìm ra cách xử lý dữ liệu đầu vào Viết chương trình bằng một ngơn ngữ lập trình nào đó Biên dịch chương trình sang ngôn ngữ máy MÁY THỰC HIỆN Chương 6: Thuật tốn và Ngơn ngữ lập trình Khoa Công nghệ thông ;n – Học viện Nông nghiệp Việt nam Bài giảng Tin học đại cương NỘI DUNG CHƯƠNG PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ BẰNG MÁY TÍNH THUẬT TỐN 2.1 Khái niệm thuật tốn 2.2 Các tính chất thuật toán 2.3 Độ phức tạp thuật toán 2.4 Các cách diễn đạt thuật tốn NGƠN NGỮ LẬP TRÌNH 3.1 Khái niệm ngơn ngữ lập trình 3.2 Lịch sử phát triển ngơn ngữ lập trình 3.3 Trình biên dịch trình thơng dịch 3.4 Các cơng việc lập trình Chương 6: Thuật tốn và Ngơn ngữ lập trình Khoa Cơng nghệ thơng ;n – Học viện Nông nghiệp Việt nam Bài giảng Tin học đại cương 2.1 Khái niệm thuật toán • Thuật toán (thuật giải, algorithms): tập hợp hữu hạn thao tác, phép toán thực theo trình tự xác định số đối tượng liệu để đạt kết mong muốn • Để tìm thuật tốn cho tốn ta cần xác định liệu vào (input) liệu (output) cho tốn • VD: Bài tốn giải phương trình bậc ax2 + bx + c = – Dữ liệu vào: Giá trị hệ số a, b, c – Dữ liệu ra: Là nghiệm phương trình Chương 6: Thuật tốn và Ngơn ngữ lập trình Khoa Cơng nghệ thơng ;n – Học viện Nông nghiệp Việt nam Bài giảng Tin học đại cương NỘI DUNG CHƯƠNG PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ BẰNG MÁY TÍNH THUẬT TỐN 2.1 Khái niệm thuật tốn 2.2 Các tính chất thuật tốn 2.3 Độ phức tạp thuật toán 2.4 Các cách diễn đạt thuật toán NGƠN NGỮ LẬP TRÌNH 3.1 Khái niệm ngơn ngữ lập trình 3.2 Lịch sử phát triển ngơn ngữ lập trình 3.3 Trình biên dịch trình thơng dịch 3.4 Các cơng việc lập trình Chương 6: Thuật tốn và Ngơn ngữ lập trình Khoa Công nghệ thông ;n – Học viện Nông nghiệp Việt nam Bài giảng Tin học đại cương 2.2 Các 'nh chất của thuật tốn • Tính kết thúc • Tính thực • Tính kết • Tính hiệu • Tính • Tính hình thức Chương 6: Thuật tốn và Ngơn ngữ lập trình Khoa Cơng nghệ thơng ;n – Học viện Nông nghiệp Việt nam Bài giảng Tin học đại cương NỘI DUNG CHƯƠNG PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ BẰNG MÁY TÍNH THUẬT TỐN 2.1 Khái niệm thuật tốn 2.2 Các tính chất thuật toán 2.3 Độ phức tạp thuật tốn 2.4 Các cách diễn đạt thuật tốn NGƠN NGỮ LẬP TRÌNH 3.1 Khái niệm ngơn ngữ lập trình 3.2 Lịch sử phát triển ngơn ngữ lập trình 3.3 Trình biên dịch trình thơng dịch 3.4 Các cơng việc lập trình Chương 6: Thuật tốn và Ngơn ngữ lập trình Khoa Cơng nghệ thông ;n – Học viện Nông nghiệp Việt nam Bài giảng Tin học đại cương 2.3 Độ phức tạp của thuật tốn • Đánh giá thuật ta dựa vào hai tiêu chí sau: – Thời gian thực hiện: Đây tiêu chí chủ yếu để đánh giá – Dung lượng nhớ sử dụng • Đánh giá thời gian thực thuật tốn người ta dùng “Độ phức tạp tính tốn thuật tốn” => Độ phức tạp tính tốn thuật tốn thời gian thực thuật toán đánh khơng phụ thuộc vào máy tính yếu tố liên quan, phụ thuộc vào kích thước liệu đầu vào Chương 6: Thuật toán và Ngơn ngữ lập trình Khoa Cơng nghệ thông ;n – Học viện Nông nghiệp Việt nam Bài giảng Tin học đại cương 2.3 Độ phức tạp thuật tốn • Gọi n kích thước liệu vào, thời gian thực T giải thuật biểu diễn hàm n, gọi T(n) • Nếu T(n) = Cn2 C số, ta nói độ phức tạp tính tốn thuật tốn có cấp n2, kí hiệu là: T(n) = O(n2) • Tổng qt: – Hàm f(n) có độ phức tạp tính tốn cấp g(n) hàm f(n) bị chặn Cg(n), với C số Kí hiệu f(n) = O(g(n)) • Các hàm thể độ phức tập tính tốn giải thuật có dạng sau: nn, n!, 2n, n3, n2, nlog2n, n, log2n Các hàm theo thứ tự ưu tiên giá trị giảm dần Chương 6: Thuật tốn và Ngơn ngữ lập trình 10 Khoa Công nghệ thông ;n – Học viện Nông nghiệp Việt nam Bài giảng Tin học đại cương 2.4 Các cách diễn đạt thuật toán Cách 3: • Sử dụng giả ngơn ngữ lập trình (giả mã): Sử dụng ngơn ngữ tự nhiên kết hợp với một số từ khóa và cấu trúc điều khiển trong ngơn ngữ lập trình bậc cao để diễn tả các cơng việc của thuật tốn • VD: Viết thuật toán Ym USCL của 2 số ngun dương Chương 6: Thuật tốn và Ngơn ngữ lập trình 17 Khoa Cơng nghệ thơng ;n – Học viện Nông nghiệp Việt nam Bài giảng Tin học đại cương VD: Viết thuật tốn tìm USCL số nguyên dương Trong khi m ≠ n thì lặp lại khối sau: Nếu m > n thì Bớt m đi một lượng là n Nếu ngược lại thì Bớt n đi một lượng là m Cho tới khi m = n thì kết luận USCLN là giá trị chung của m và n read(m,n); while m n do if m>n then m:=m-‐n else n:= n-‐m; write(m); Chương 6: Thuật tốn và Ngơn ngữ lập trình Chương trình PASCAL 18 Khoa Công nghệ thông ;n – Học viện Nông nghiệp Việt nam Bài giảng Tin học đại cương NỘI DUNG CHƯƠNG PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ BẰNG MÁY TÍNH THUẬT TỐN 2.1 Khái niệm thuật tốn 2.2 Các tính chất thuật tốn 2.3 Độ phức tạp thuật toán 2.4 Các cách diễn đạt thuật tốn NGƠN NGỮ LẬP TRÌNH 3.1 Khái niệm ngơn ngữ lập trình 3.2 Lịch sử phát triển ngơn ngữ lập trình 3.3 Trình biên dịch trình thơng dịch 3.4 Các cơng việc lập trình Chương 6: Thuật tốn và Ngơn ngữ lập trình 19 Khoa Công nghệ thông ;n – Học viện Nông nghiệp Việt nam Bài giảng Tin học đại cương 3.1 Khái niệm về ngôn ngữ lập trình • Ngơn ngữ lập trình (programming language : Tập hợp ký hiệu quy tắc viết lệnh để thể thuật tốn • Ngơn ngữ lập trình gồm loại chính: – Ngơn ngữ lập trình bậc thấp (hợp ngữ, assembly): • Có cấu trúc lệnh giống với ngôn ngữ máy, khác dùng mã chữ thay cho mã nhị phân • Ví dụ: Lệnh ADD AX, BX cộng (Addition) nội dung ghi AX BX, kết để AX Chương 6: Thuật tốn và Ngơn ngữ lập trình 20 Khoa Công nghệ thông ;n – Học viện Nông nghiệp Việt nam Bài giảng Tin học đại cương 3.1 Khái niệm ngơn ngữ lập trình – Ngơn ngữ lập trình bậc cao (ngơn ngữ thuật tốn): • Là ngơn ngữ có lệnh gần với ngơn ngữ người ngơn ngữ tốn học • Các ngôn ngữ nhằm vào thể thuật tốn nên người ta cịn gọi ngơn ngữ thuật tốn Chương 6: Thuật tốn và Ngơn ngữ lập trình 21 Khoa Cơng nghệ thơng ;n – Học viện Nông nghiệp Việt nam Bài giảng Tin học đại cương NỘI DUNG CHƯƠNG PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ BẰNG MÁY TÍNH THUẬT TỐN 2.1 Khái niệm thuật tốn 2.2 Các tính chất thuật toán 2.3 Độ phức tạp thuật toán 2.4 Các cách diễn đạt thuật tốn NGƠN NGỮ LẬP TRÌNH 3.1 Khái niệm ngơn ngữ lập trình 3.2 Lịch sử phát triển ngơn ngữ lập trình 3.3 Trình biên dịch trình thơng dịch 3.4 Các cơng việc lập trình Chương 6: Thuật tốn và Ngơn ngữ lập trình 22 Khoa Cơng nghệ thông ;n – Học viện Nông nghiệp Việt nam Bài giảng Tin học đại cương 3.2 Lịch sử phát triển ngơn ngữ lập trình • Thế hệ (đầu năm 1950): Lập trình mức mã máy điển hình hợp ngữ (assembly) • Thế hệ (Từ cuối năm 1950 đến hết năm 1960): – Các lệnh hợp ngữ gộp lại thành câu lệnh có cấu trúc – Các ngơn ngữ lập trình: FORTRAN, COBOL, ALGOL cao chút BASIC Chương 6: Thuật tốn và Ngơn ngữ lập trình 23 Khoa Công nghệ thông ;n – Học viện Nông nghiệp Việt nam Bài giảng Tin học đại cương 3.2 Lịch sử phát triển ngôn ngữ lập trình • Thế hệ 3: Đây hệ ngơn ngữ lập trình đại, có tính cấu trúc mạnh mẽ Các ngơn ngữ lập trình hệ chia thành lớp: - Ngôn ngữ lập trình cấp cao vạn năng: Gồm có PL/1, Pascal, Modula-2, C Ada - Ngơn ngữ lập trình hướng đối tượng: Là ngơn ngữ lập trình cài đặt nội dung phương pháp lập trình hướng đối tượng Điển hình C++, Smalltalk Eiffel - Ngơn ngữ lập trình chun dụng: Là ngơn ngữ có dạng cú pháp bất thường thiết kế riêng cho ứng dụng Ví dụ LISP, PROLOG, APL, FORTH… LISP • Thế hệ 4: Gồm có Ngơn ngữ hỏi, sinh chương trình Chương 6: Thuật tốn và Ngơn ngữ lập trình 24 Khoa Cơng nghệ thơng ;n – Học viện Nông nghiệp Việt nam Bài giảng Tin học đại cương NỘI DUNG CHƯƠNG PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ BẰNG MÁY TÍNH THUẬT TỐN 2.1 Khái niệm thuật tốn 2.2 Các tính chất thuật tốn 2.3 Độ phức tạp thuật toán 2.4 Các cách diễn đạt thuật toán NGƠN NGỮ LẬP TRÌNH 3.1 Khái niệm ngơn ngữ lập trình 3.2 Lịch sử phát triển ngơn ngữ lập trình 3.3 Trình biên dịch trình thơng dịch 3.4 Các cơng việc lập trình Chương 6: Thuật tốn và Ngơn ngữ lập trình 25 Khoa Công nghệ thông ;n – Học viện Nông nghiệp Việt nam Bài giảng Tin học đại cương 3.3 Trình biên dịch trình thơng dịch • Máy tính hiểu ngôn ngữ ngôn ngữ máy Bởi vậy, chương trình viết ngơn ngữ lập trình (chương trình nguồn) phải dịch sang ngơn ngữ máy • Có hai kiểu dịch: thơng dịch biên dịch – Thông dịch (Interpreter) kiểu dịch lệnh để hiểu công việc phải làm thực không cần tạo đoạn mã tương ứng ngôn ngữ máy Chương 6: Thuật tốn và Ngơn ngữ lập trình 26 Khoa Công nghệ thông ;n – Học viện Nông nghiệp Việt nam Bài giảng Tin học đại cương 3.3 Trình biên dịch trình thơng dịch • Biên dịch dịch tồn chương trình nguồn thành chương trình tương ứng ngơn ngữ máy (chương trình đích), sau nạp chương trình đích vào máy tính để thực – Một chương trình thực việc biên dịch chương trình nguồn sang ngơn ngữ máy gọi trình biên dịch – Mỗi ngơn ngữ lập trình có trình biên dịch tương ứng Ví dụ ngơn ngữ lập trình có trình biên dịch Pascal, C, C++, Java, C# Chương 6: Thuật toán và Ngơn ngữ lập trình 27 Khoa Cơng nghệ thông ;n – Học viện Nông nghiệp Việt nam Bài giảng Tin học đại cương NỘI DUNG CHƯƠNG PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ BẰNG MÁY TÍNH THUẬT TỐN 2.1 Khái niệm thuật tốn 2.2 Các tính chất thuật tốn 2.3 Độ phức tạp thuật toán 2.4 Các cách diễn đạt thuật tốn NGƠN NGỮ LẬP TRÌNH 3.1 Khái niệm ngơn ngữ lập trình 3.2 Lịch sử phát triển ngơn ngữ lập trình 3.3 Trình biên dịch trình thơng dịch 3.4 Các cơng việc lập trình Chương 6: Thuật tốn và Ngơn ngữ lập trình 28 Khoa Công nghệ thông ;n – Học viện Nông nghiệp Việt nam Bài giảng Tin học đại cương 3.4 Các cơng việc lập trình • Soạn thảo: – Lưu tệp chương trình với phần mở rộng phù hợp với ngơn ngữ lập trình sử dụng, – ví dụ pas cho Pascal, c cho ngơn ngữ C hay cpp cho ngôn ngữ C++… – Vd: Notepad++, • Biên dịch chương trình: – dịch tồn tệp chương trình nguồn sang tệp mã máy • Chạy thử chương trình Chương 6: Thuật tốn và Ngơn ngữ lập trình 29 Khoa Cơng nghệ thơng ;n – Học viện Nông nghiệp Việt nam Bài giảng Tin học đại cương Câu hỏi tập 1. Thuật tốn gì? Cho ví dụ 2. Xác định input output cho thuật toán sau đây: a. Rút gọn phân số b. Kiểm tra xem ba số cho trước a, b c độ dài ba cạnh tam giác hay không? 3. Trình bày tính chất xác định thuật tốn nêu rõ nghĩa tính chất 4. Cho tam giác ABC có góc vng A cho biết cạnh a góc B Hãy viết thuật tốn để tính góc C, cạnh b cạnh c 5. Hãy phát biểu thuật tốn để giải tốn sau: "Có số táo Dùng cân hai đĩa (khơng có cân) để xác định táo nặng nhất" 6. Chỉ dùng phép cộng, tính bình phương số Chương 6: Thuật tốn và Ngơn ngữ lập trình 30 Khoa Công nghệ thông ;n – Học viện Nông nghiệp Việt nam Bài giảng Tin học đại cương Ví dụ chạy chương trình Pascal • Bài 1: Tìm USCLN hai số ngun dương • Bài 2: Sắp xếp dãy số tăng dần • Bài 3: Tìm vị trí số lớn dãy số Chương 6: Thuật tốn và Ngơn ngữ lập trình 31 ... việc lập trình Chương 6: ? ?Thuật tốn ? ?và Ngơn ? ?ngữ ? ?lập ? ?trình Khoa Công nghệ thông ;n – ? ?Học viện Nông nghiệp Việt nam Bài ? ?giảng ? ?Tin ? ?học ? ?đại ? ?cương 2.1 Khái niệm thuật. .. diễn đạt thuật tốn NGƠN NGỮ LẬP TRÌNH 3.1 Khái niệm ngơn ngữ lập trình 3.2 Lịch sử phát triển ngơn ngữ lập trình 3.3 Trình biên dịch trình thơng dịch 3.4 Các cơng việc lập trình Chương 6: ? ?Thuật. .. diễn đạt thuật tốn NGƠN NGỮ LẬP TRÌNH 3.1 Khái niệm ngơn ngữ lập trình 3.2 Lịch sử phát triển ngơn ngữ lập trình 3.3 Trình biên dịch trình thơng dịch 3.4 Các cơng việc lập trình Chương 6: Thuật