Bài giảng Nguyên lý và phương pháp lập trình

Ba nguyên nhân chính gây ra các lỗi run-time: Lỗi dữ liệu Thiếu tài nguyên hệ thống Các sự cố hay lỗi của hệ thống • Các ngoại lệ : cung cấp một hay nhiều cơ chế tích hợp ñể xử lý các ñiều kiện lỗi. • Một bộ xử lý lỗi bao gồm một ñiều kiện lỗi và một tập các phát biểu ñể lý lỗi

pdf30 trang | Chia sẻ: huongthu9 | Lượt xem: 452 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Nguyên lý và phương pháp lập trình, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ðại học Quốc gia TP.HCM Trường ðại học Công nghệ thông tin Nguyên lý và phương pháp lập trình SuivantPrécédent TS. Nguyễn Tuấn ðăng Phần 1. Tổng quan các ngôn ngữ lập trình 1. Các ngôn ngữ lập trình thủ tục 2. Các ngôn ngữ lập trình hướng ñối tượng 3. Các ngôn ngữ lập trình hàm 4. Các ngôn ngữ lập trình logic Phần 2. Các nguyên lý căn bản của lập trình 1. Chương trình và cú pháp chương trình Nguyên lý và phương pháp lập trình Nội dung môn học SuivantPrécédent 2 2. Các phẩm chất cần có của chương trình 3. Tính dừng của chương trình 4. Tính ñúng ñắn của chương trình 5. Một số kỹ thuật tối ưu hóa chương trình Phần 3. Khảo sát một số ngôn ngữ lập trình (option) 1. C, Pascal 2. C++, Java, Smalltalk 3. Lisp 4. Prolog Bài thu hoạch : 40% Thi viết : 60% Bài giảng tham khảo chính: Nguyên lý và phương pháp lập trình, GS. TSKH. Hoàng Văn Kiếm. Nguyên lý và phương pháp lập trình ðánh giá môn học SuivantPrécédent 3 Lưu ý: - Học viên phải nắm vững các nội dung trong bài giảng chính ñược nêu ở trên (ñã ñược sử dụng từ các khóa 1, 2). - Các bài giảng mới bổ sung thêm cho khóa 3 chỉ dùng ñể tham khảo thêm. Hai yếu tố ảnh hưởng ñến thiết kế của các ngôn ngữ lập trình: • Kiến trúc máy tính ða số các ngôn ngữ lập trình ñược thiết kế trên cơ sở nguyên lý kiến trúc máy tính của von Nguyên lý và phương pháp lập trìnhPhần 1 : Tổng quan các ngôn ngữ lập trình Thiết kế của các ngôn ngữ lập trình SuivantPrécédent 4 Neumann. • Các phương pháp lập trình Mỗi phương pháp lập trình ñặt ra yêu cầu phải thiết kế các ngôn ngữ lập trình thích hợp. Nguyên lý kiến trúc máy tính của von Neumann: - Dữ liệu và chương trình ñược lưu trong bộ nhớ máy tính. - Bộ nhớ ñược tách biệt với CPU. - Các chỉ thị và dữ liệu ñược chuyển từ bộ nhớ ñến CPU theo cơ chế ống dẫn. Nguyên lý và phương pháp lập trìnhPhần 1 : Tổng quan các ngôn ngữ lập trình Yếu tố : kiến trúc máy tính SuivantPrécédent 5 Nguyên lý và phương pháp lập trìnhPhần 1 : Tổng quan các ngôn ngữ lập trình Yếu tố : kiến trúc máy tính SuivantPrécédent 6 • Thập niên 1950 và ñầu thập niên 1960: các chương trình máy tính còn ñơn giản. • Cuối thập niên 1960: - Lập trình có cấu trúc. - Thiết kế top-down. • Cuối thập niên 1970: Lập trình hướng dữ liệu. Nguyên lý và phương pháp lập trìnhPhần 1 : Tổng quan các ngôn ngữ lập trình Yếu tố : các phương pháp lập trình SuivantPrécédent 7 - Trừu tượng hóa dữ liệu • Giữa thập niên 1980: Lập trình hướng ñối tượng Trừu tượng hóa dữ liệu + kế thừa + ña hình • Các ngôn ngữ lập trình thủ tục/mệnh lệnh Biến, phát biểu, cấu trúc ñiều khiển. Ví dụ: C, Pascal • Các ngôn ngữ lập trình hướng ñối tượng Trừu tượng hóa dữ liệu, kế thừa, liên kết trễ. Ví dụ: Java, C++ • Các ngôn ngữ lập trình hàm Nguyên lý và phương pháp lập trìnhPhần 1 : Tổng quan các ngôn ngữ lập trình Phân loại các ngôn ngữ lập trình SuivantPrécédent 8 Áp dụng các hàm vào những ñối số. Ví dụ: LISP, Scheme • Các ngôn ngữ lập trình logic Dựa trên các luật. Ví dụ: Prolog Các ngôn ngữ lập trình thủ tục (procedural) còn ñược gọi là các ngôn ngữ lập trình mệnh lệnh (imperative). Nguyên lý chung: • Dữ liệu và khai báo dữ liệu Nguyên lý và phương pháp lập trìnhPhần 1 : Tổng quan các ngôn ngữ lập trình Các ngôn ngữ lập trình thủ tục Các ngôn ngữ lập trình thủ tục Các ngôn ngữ lập trình hướng ñối tượng Các ngôn ngữ lập SuivantPrécédent 9 • Các lệnh (phát biểu) làm thay ñổi các trạng thái của chương trình • Luồng ñiều khiển Các vấn ñề cần nghiên cứu: • Cấu trúc chương trình • Lập trình thủ tục trình hàm Các ngôn ngữ lập trình logic Dữ liệu và khai báo dữ liệu Khai báo hằng Bí danh Kiểu Kiểu liệt kê Mảng Nguyên lý và phương pháp lập trìnhPhần 1 : Tổng quan các ngôn ngữ lập trình Các ngôn ngữ lập trình thủ tục Dữ liệu và khai báo dữ liệu Các ngôn ngữ lập trình hướng ñối tượng Các ngôn ngữ lập SuivantPrécédent 10 Chuỗi Tập hợp và gói Cấu trúc Con trỏ Hợp Thủ tục như là kiểu dữ liệu Ép kiểu và chuyển kiểu trình hàm Các ngôn ngữ lập trình logic • Mọi dữ liệu trên máy tính ñều phải ñược biểu diễn theo một hình thức nào ñó, gắn liền với những thuộc tính xác ñịnh – ñược hiểu là kiểu dữ liệu. • Hầu hết các ñối tượng dữ liệu ñều có tên, trừ một Nguyên lý và phương pháp lập trìnhPhần 1 : Tổng quan các ngôn ngữ lập trình Các ngôn ngữ lập trình thủ tục Dữ liệu Các ngôn ngữ lập trình hướng ñối tượng Các ngôn ngữ lập SuivantPrécédent 11 số ñối tượng dữ liệu vô danh. • Mối liên hệ giữa các ñối tượng dữ liệu, tên, kiểu và sự biểu diễn ñược lập trình viên ñặc tả thông qua sự khai báo dữ liệu. trình hàm Các ngôn ngữ lập trình logic • Mỗi mục dữ liệu bao gồm một số lượng các bit trong bộ nhớ. • Cần có các cấu trúc ñể biết ñược cách diễn giải ý nghĩa các bit của mọi mục dữ liệu một cách chính xác. Nguyên lý và phương pháp lập trìnhPhần 1 : Tổng quan các ngôn ngữ lập trình Các ngôn ngữ lập trình thủ tục Khai báo dữ liệu Các ngôn ngữ lập trình hướng ñối tượng Các ngôn ngữ lập SuivantPrécédent 12 • Thường mỗi mục dữ liệu ñều có một tên ñể tham chiếu ñến nó. • Dữ liệu tồn tại trên máy tính nhưng tên và cấu trúc của dữ liệu thì chỉ tồn tại trong chương trình. • Khai báo dữ liệu nhằm thực hiện hai việc: - Cấp phát bộ nhớ cho mục dữ liệu, - Kết hợp một tên với mục dữ liệu ñó. trình hàm Các ngôn ngữ lập trình logic Nguyên lý và phương pháp lập trìnhPhần 1 : Tổng quan các ngôn ngữ lập trình Các ngôn ngữ lập trình thủ tục Khai báo dữ liệu Các ngôn ngữ lập trình hướng ñối tượng Các ngôn ngữ lập SuivantPrécédent 13 Mối liên hệ giữa tên, cấu trúc và giá trị của dữ liệu trình hàm Các ngôn ngữ lập trình logic • Một số ngôn ngữ cho phép kết hợp khai báo với khởi tạo dữ liệu. Ví dụ: trong ngôn ngữ C int i=5, j=5; (C cho phép trong một phát biểu khai báo nhiều Nguyên lý và phương pháp lập trìnhPhần 1 : Tổng quan các ngôn ngữ lập trình Các ngôn ngữ lập trình thủ tục Khởi tạo dữ liệu Các ngôn ngữ lập trình hướng ñối tượng Các ngôn ngữ lập SuivantPrécédent 14 biến và khởi tạo cho mỗi biến một giá trị khác nhau). trình hàm Các ngôn ngữ lập trình logic • Một số ngôn ngữ có các khai báo hằng. Ví dụ : trong ngôn ngữ C const int i = 10; • Các hằng (biến) không thể bị thay ñổi giá trị. Tuy nhiên, nếu có các lỗi con trỏ trỏ ñến vùng nhớ của Nguyên lý và phương pháp lập trìnhPhần 1 : Tổng quan các ngôn ngữ lập trình Các ngôn ngữ lập trình thủ tục Khai báo hằng Các ngôn ngữ lập trình hướng ñối tượng Các ngôn ngữ lập SuivantPrécédent 15 các hằng (biến) thì giá trị của các hằng (biến) ñó có thể bị thay ñổi ngoài mong muốn. trình hàm Các ngôn ngữ lập trình logic • Các tên khác ñược dùng ñể chỉ ñến cùng một biến. Ví dụ: trong C++, int &k = I; Nguyên lý và phương pháp lập trìnhPhần 1 : Tổng quan các ngôn ngữ lập trình Các ngôn ngữ lập trình thủ tục Bí danh (alias) Các ngôn ngữ lập trình hướng ñối tượng Các ngôn ngữ lập SuivantPrécédent 16 trình hàm Các ngôn ngữ lập trình logic • ðối với dữ liệu trên máy tính: kiểu là cách thức ñể diễn giải các bit dữ liệu. • Trong lập trình: kiểu dữ liệu ñặc tả một tập các giá trị và một tập các thao tác ñược ñịnh nghĩa trên các giá trị ñó. Nguyên lý và phương pháp lập trìnhPhần 1 : Tổng quan các ngôn ngữ lập trình Các ngôn ngữ lập trình thủ tục Kiểu dữ liệu Các ngôn ngữ lập trình hướng ñối tượng Các ngôn ngữ lập SuivantPrécédent 17 • ðịnh nghĩa kiểu: cho phép lập trình viên ñịnh nghĩa kiểu dữ liệu riêng. trình hàm Các ngôn ngữ lập trình logic • Kết hợp các tên với một tập các giá trị của một kiểu. • Phần lớn các ngôn ngữ cài ñặt kiểu liệt kê như là các số nguyên và cho phép thực hiện các phép so sánh (lớn hơn/nhỏ hơn) hay tăng (lấy phần tử kế Nguyên lý và phương pháp lập trìnhPhần 1 : Tổng quan các ngôn ngữ lập trình Các ngôn ngữ lập trình thủ tục Kiểu liệt kê Các ngôn ngữ lập trình hướng ñối tượng Các ngôn ngữ lập SuivantPrécédent 18 tiếp).trình hàm Các ngôn ngữ lập trình logic • Mảng là một dãy với số lượng hữu hạn các mục có cùng kiểu dữ liệu. • Mỗi mục là một phần tử. • Các phần tử ñược truy cập theo một trật tự thông qua chỉ số. Nguyên lý và phương pháp lập trìnhPhần 1 : Tổng quan các ngôn ngữ lập trình Các ngôn ngữ lập trình thủ tục Mảng Các ngôn ngữ lập trình hướng ñối tượng Các ngôn ngữ lập SuivantPrécédent 19 •Associative arrays: kết hợp một giá trị của một kiểu với một phần tử của một mảng. Ví dụ: C và Ada cho phép dùng kiểu liệt kê và ký tự ñể làm chỉ mục cho mảng. Perl cho phép dùng một chuỗi ký tự ñể làm chỉ mục cho một mảng. trình hàm Các ngôn ngữ lập trình logic •Array slicing: truy cập một mảng con thay vì là một phần tử của mảng. Ví dụ: trong Ada các phẩn tử A(3) ñến A(6) của một mảng có thể ñược truy cập A(3..6). Trong Fortran90, A(4:10:2) cho phép truy Nguyên lý và phương pháp lập trìnhPhần 1 : Tổng quan các ngôn ngữ lập trình Các ngôn ngữ lập trình thủ tục Mảng Các ngôn ngữ lập trình hướng ñối tượng Các ngôn ngữ lập SuivantPrécédent 20 cập các phần tử A(4), A(6), A(8) vàA(10).trình hàm Các ngôn ngữ lập trình logic • Một số ngôn ngữ như Pascal cung cấp sẵn kiểu chuỗi ký tự. Một số ngôn ngữ khác như C không cung cấp kiểu này. Nguyên lý và phương pháp lập trìnhPhần 1 : Tổng quan các ngôn ngữ lập trình Các ngôn ngữ lập trình thủ tục Chuỗi ký tự Các ngôn ngữ lập trình hướng ñối tượng Các ngôn ngữ lập SuivantPrécédent 21 trình hàm Các ngôn ngữ lập trình logic • Các thao tác cơ bản trên tập hợp: - Giao, - Hợp, - Hiệu. • C và Ada không cung cấp kiểu tập hợp. • Modula-2 cung cấp kiểu tập hợp. Nguyên lý và phương pháp lập trìnhPhần 1 : Tổng quan các ngôn ngữ lập trình Các ngôn ngữ lập trình thủ tục Tập hợp Các ngôn ngữ lập trình hướng ñối tượng Các ngôn ngữ lập SuivantPrécédent 22 • C++ và Java cung cấp các thư viện cho kiểu tập hợp. trình hàm Các ngôn ngữ lập trình logic • Kiểu gói là một biến thể của tập hợp, trong ñó mỗi giá trị có thể xuất hiện nhiều hơn một lần. • Các thao tác cơ bản trên kiểu gói : - chèn một giá trị, - xóa một giá trị. • Kiểu gói có thể ñược xem là multiset. Nguyên lý và phương pháp lập trìnhPhần 1 : Tổng quan các ngôn ngữ lập trình Các ngôn ngữ lập trình thủ tục Gói (bag) Các ngôn ngữ lập trình hướng ñối tượng Các ngôn ngữ lập SuivantPrécédent 23 • C và Ada không cung cấp kiểu gói. • C++ và Java cung cấp các thư viện cho multiset. trình hàm Các ngôn ngữ lập trình logic • Các cấu trúc cho phép kết hợp một số lượng xác ñịnh các mục dữ liệu có kiểu khác nhau. Ví dụ: record trong Pascal và struct trong C. • Các mục dữ liệu trong một cấu trúc ñược gọi là các trường (fields) hay các thành phần (components). Nguyên lý và phương pháp lập trìnhPhần 1 : Tổng quan các ngôn ngữ lập trình Các ngôn ngữ lập trình thủ tục Cấu trúc Các ngôn ngữ lập trình hướng ñối tượng Các ngôn ngữ lập SuivantPrécédent 24 • Một cấu trúc không thể có trường nào có kiểu là chính nó, trong trường hợp này phải dùng con trỏ trỏ ñến kiểu của chính nó. trình hàm Các ngôn ngữ lập trình logic • Một số ngôn ngữ lập trình cho phép các hàm/thủ tục ñược dùng như một kiểu. • Có thể ñịnh nghĩa một mảng các hàm/thủ tục. • C cho phép sử dụng con trỏ hàm. Ví dụ: trong C int (*convert_to_int) (float); Nguyên lý và phương pháp lập trìnhPhần 1 : Tổng quan các ngôn ngữ lập trình Các ngôn ngữ lập trình thủ tục Kiểu hàm/thủ tục Các ngôn ngữ lập trình hướng ñối tượng Các ngôn ngữ lập SuivantPrécédent 25 Khai báo một biến convert_to_int có kiểu “con trỏ ñến một hàm – hàm này trả về một số kiểu int và có một tham số kiểu float”. i = (*convert_to_int)(3.14); trình hàm Các ngôn ngữ lập trình logic Luồng ñiều khiển: - Sequencing - Selection - Routine Invocation - Repetition - Loops & Exits - Run Time Error Handling Nguyên lý và phương pháp lập trìnhPhần 1 : Tổng quan các ngôn ngữ lập trình Các ngôn ngữ lập trình thủ tục Luồng ñiều khiển Các ngôn ngữ lập trình hướng ñối tượng Các ngôn ngữ lập SuivantPrécédent 26 - Exceptionstrình hàm Các ngôn ngữ lập trình logic • Luồng ñiều khiển: Các ngôn ngữ lập trình thủ tục cho phép ñiều khiển trật tự các phát biểu ñược thực hiện (hoặc bỏ qua). • Các cơ chế : Sequencing (khối lệnh tuần tự, goto) Nguyên lý và phương pháp lập trìnhPhần 1 : Tổng quan các ngôn ngữ lập trình Các ngôn ngữ lập trình thủ tục Luồng ñiều khiển Các ngôn ngữ lập trình hướng ñối tượng Các ngôn ngữ lập SuivantPrécédent 27 Selection (if-then-else hay switch-case, ) Repetition (for-loops, while-loops, repeat- until, ) Routine invocation (gọi hàm và thủ tục) trình hàm Các ngôn ngữ lập trình logic Ba nguyên nhân chính gây ra các lỗi run-time: Lỗi dữ liệu Thiếu tài nguyên hệ thống Các sự cố hay lỗi của hệ thống Nguyên lý và phương pháp lập trìnhPhần 1 : Tổng quan các ngôn ngữ lập trình Các ngôn ngữ lập trình thủ tục Xử lý các lỗi run-time Các ngôn ngữ lập trình hướng ñối tượng Các ngôn ngữ lập SuivantPrécédent 28 trình hàm Các ngôn ngữ lập trình logic • Các ngoại lệ : cung cấp một hay nhiều cơ chế tích hợp ñể xử lý các ñiều kiện lỗi. • Một bộ xử lý lỗi bao gồm một ñiều kiện lỗi và một tập các phát biểu ñể lý lỗi. Nguyên lý và phương pháp lập trìnhPhần 1 : Tổng quan các ngôn ngữ lập trình Các ngôn ngữ lập trình thủ tục Các ngoại lệ Các ngôn ngữ lập trình hướng ñối tượng Các ngôn ngữ lập SuivantPrécédent 29 trình hàm Các ngôn ngữ lập trình logic Nguyên lý và phương pháp lập trìnhPhần 1 : Tổng quan các ngôn ngữ lập trình Các ngôn ngữ lập trình thủ tục Các ngoại lệ Các ngôn ngữ lập trình hướng ñối tượng Các ngôn ngữ lập Statement m has caused the error condition SuivantPrécédent 30 trình hàm Các ngôn ngữ lập trình logic Arrows show the flow of control Các khối lệnh với cơ chế xử lý lỗi

Các file đính kèm theo tài liệu này:

  • pdfbai_giang_nguyen_ly_va_phuong_phap_lap_trinh.pdf