ngôn ngữ lập trình c

181 454 1
ngôn ngữ lập trình c

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

GIỚI THIỆU C++ ngơn ngữ lập trình hướng đối tượng mở rộng từ ngôn ngữ C Do vậy, C++ có ưu điểm kế thừa điểm mạnh truyền thống ngôn ngữ C uyển chuyển, tương thích với thiết bị phần cứng Hiện nay, C++ ngơn ngữ lập trình phổ biến, giảng dạy trường đại học nước giới đặc biệt sử dụng rộng rãi cho nhu cầu phát triển công nghiệp phần mềm Tài liệu nhằm giới thiệu cho sinh viên ngơn ngữ lập trình C++, mà mong muốn qua sinh viên hiểu tư tưởng phương pháp lập trình hướng đối tượng nói chung Nội dung tài liệu bao gồm hai phần chính: • Phần thứ lập trình nâng cao với C++, bao gồm lập trình C++ với trỏ mảng, kiểu liệu có cấu trúc thao tác vào tệp • Phần thứ hai lập trình hướng đối tượng với C++, bao gồm định nghĩa thao tác lớp đối tượng, tính kế thừa tương ứng bội C++, cách sử dụng số lớp thư viện C++ Nội dung tài liệu tổ chức thành chương: Chương 1: Giới thiệu tổng quan phương pháp lập trình Trình bày phương pháp lập trình tuyến tính, lập trình cấu trúc đặc biệt, làm quen với khái niệm lập trình hướng đối tượng Chương 2: Con trỏ mảng Trình bày cách khai báo sử dụng kiểu trỏ mảng ngôn ngữ C++ Chương 3: Kiểu liệu có cấu trúc Trình bày cách biểu diễn cài đặt số kiểu cấu trúc liệu trừu tượng C++ Sau đó, trình bày cách áp dụng kiểu liệu ứng dụng cụ thể Chương 4: Vào tệp Trình bày thao tác đọc, ghi liệu tệp tin khác nhau: tệp tin văn tệp tin nhị phân Trình bày cách truy nhập tệp tin trực tiếp Chương 5: Lớp đối tượng Trình bày khái niệm mở đầu cho lập trình hướng đối tượng C++, bao gồm cách khai báo sử dụng lớp, thuộc tính lớp; cách khởi tạo huỷ bỏ đối tượng, quy tắc truy nhập đến thành phần lớp Chương 6: Tính kế thừa tương ứng bội Trình bày cách thức kế thừa lớp C++, nguyên tắc truy nhập kế thừa, định nghĩa nạp chồng phương thức tính đa hình lập trình hướng đối tương với C++ Chương 7: Một số lớp quan trọng Trình bày cách sử dụng số lớp có sẵn thư viện chuẩn C++, bao gồm lớp: lớp tập hợp, lớp chuỗi, lớp ngăn xếp, lớp hàng đợi lớp danh sách liên kết Để đọc sách này, sinh viên phải quen biết khái niệm lập trình, có số kỹ lập trình với ngơn ngữ C C++ Cuốn sách dùng tài liệu tham khảo cho sinh viên muốn tìm hiểu kỹ thuật lập trình nâng cao lập trình hướng đối tượng với C++ Cuốn sách có kèm theo đĩa chương trình chứa tồn chương trình lấy làm minh hoạ tập sách Mặc dù tác giả có nhiều cố gắng việc biên soạn tài liệu này, song khơng thể tránh khỏi thiếu sót Rất mong nhận ý kiến đóng góp quý báu từ sinh viên bạn đồng nghiệp CHƯƠNG GIỚI THIỆU VỀ CÁC PHƯƠNG PHÁP LẬP TRÌNH Nội dung chương tập trung trình bày phương pháp lập trình: • Phương pháp lập trình tuyến tính • Phương pháp lập trình hướng cấu trúc • Phương pháp lập trình hướng đối tượng 1.1 LẬP TRÌNH TUYẾN TÍNH Đặc trưng lập trình tuyến tính tư theo lối Chương trình thực theo thứ tự từ đầu đến cuối, lệnh lệnh kết thúc chương trình Đặc trưng Lập trình tuyến tính có hai đặc trưng: • Đơn giản: chương trình tiến hành đơn giản theo lối tuần tự, không phức tạp • Đơn luồng: có luồng cơng việc nhất, công việc thực luồng Tính chất • Ưu điểm: Do tính đơn giản, lập trình tuyến tính ứng dụng cho chương trình đơn giản có ưu điểm dễ hiểu • Nhược điểm: Với ứng dụng phức tạp, người ta khơng thể dùng lập trình tuyến tính để giải Ngày nay, lập trình tuyến tính tồn phạm vi modul nhỏ phương pháp lập trình khác Ví dụ chương trình lập trình cấu trúc, lệnh thực theo từ đầu đến cuối chương trình 1.2 LẬP TRÌNH HƯỚNG CẤU TRÚC 1.2.1 Đặc trưng lập trình hướng cấu trúc Trong lập trình hướng cấu trúc, chương trình chia nhỏ thành chương trình chương trình thực cơng việc xác định Chương trình gọi đến chương trình theo giải thuật, cấu trúc xác định chương trình Các ngơn ngữ lập trình cấu trúc phổ biến Pascal, C C++ Riêng C++ ngồi việc có đặc trưng lập trình cấu trúc kế thừa từ C, có đặc trưng lập trình hướng đối tượng Cho nên C++ gọi ngơn ngữ lập trình nửa cấu trúc, nửa hướng đối tượng Đặc trưng Đặc trưng lập trình cấu trúc thể mối quan hệ: Chương trình = Cấu trúc liệu + Giải thuật Trong đó: • Cấu trúc liệu cách tổ chức liệu cho việc xử lý hay nhiều chương trình • Giải thuật quy trình để thực cơng việc xác định Trong chương trình, giải thuật có quan hệ phụ thuộc vào cấu trúc liệu: • Một cấu trúc liệu phù hợp với số hạn chế giải thuật • Nếu thay đổi cấu trúc liệu phải thay đổi giải thuật cho phù hợp • Một giải thuật thường phải kèm với cấu trúc liệu định Tính chất • Mỗi chương trình gọi thực nhiều lần chương trình • Các chương trình gọi đến để thực theo thứ tự bất kì, tuỳ thuộc vào giải thuật chương trình mà khơng phụ thuộc vào thứ tự khai báo chương trình • Các ngơn ngữ lập trình cấu trúc cung cấp số cấu trúc lệnh điều khiển chương trình Ưu điểm • Chương trình sáng sủa, dễ hiểu, dễ theo dõi • Tư giải thuật rõ ràng Nhược điểm • Lập trình cấu trúc không hỗ trợ mạnh việc sử dụng lại mã nguồn: Giải thuật phụ thuộc chặt chẽ vào cấu trúc liệu, đó, thay đổi cấu trúc liệu, phải thay đổi giải thuật, nghĩa phải viết lại chương trình • Khơng phù hợp với phần mềm lớn: tư cấu trúc với giải thuật phù hợp với toán nhỏ, nằm phạm vi modul chương trình Với dự án phần mềm lớn, lập trình cấu trúc tỏ không hiệu việc giải mối quan hệ vĩ mô modul phần mềm Vấn đề Vấn đề lập trình cấu trúc cách để phân chia chương trình thành chương trình cho phù hợp với yêu cầu, chức mục đích tốn Thơng thường, để phân rã tốn lập trình cấu trúc, người ta sử dụng phương pháp thiết kế xuống (top-down) 1.2.2 Phương pháp thiết kế xuống (top-down) Phương pháp thiết kế top-down tiếp cận toán theo hướng từ xuống dưới, từ tổng qúat đến chi tiết Theo đó, tốn chia thành toán nhỏ Mỗi toán lại chia nhỏ tiếp, có thể, thành tốn nhỏ Q trình gọi trình làm mịn dần Quá trình dừng lại tốn khơng cần chia nhỏ thêm Nghĩa tốn giải chương trình với giải thuật đơn giản Ví dụ, sử dụng phương pháp top-down để giải toán xây nhà Chúng ta phân rã tốn theo bước sau: • Ở mức thứ nhất, chia toán xây nhà thành tốn nhỏ làm móng, đổ cột, đổ trần, xây tường, lợp mái • Ở mức thứ hai, phân rã công việc mức thứ việc làm móng nhà phân rã tiếp thành cơng việc đào móng, gia cố nền, làm khung sắt, đổ bê tong; công việc đổ cột phần rã thành … • Ở mức thứ ba, phân rã công việc mức thứ hai việc đào móng phân chia tiếp thành cơng việc đo đạc, cắm mốc, dây, đào kiểm tra móng Việc gia cố phân rã thành … Q trình phân rã dừng mức này, cơng việc thu đo đạc, cắm mốc, dây, đào… thực ngay, không cần chia nhỏ thêm Lưu ý: • Cùng sử dụng phương pháp top-down với tốn, cho nhiều kết khác Nguyên nhân khác tiêu chí để phân rã tốn thành tốn Ví dụ, áp dụng phương pháp top-down để giải toán xây nhà, sử dụng cách khác để phân chia tốn, ta thu kết khác biệt so với phương pháp ban đầu: • Ở mức thứ nhất, chia toán xây nhà thành toán nhỏ làm phần gỗ, làm phần sắt, làm phần bê tơng làm phần gạch • Ở mức thứ hai, phân rã công việc mức thứ làm phần gỗ chia thành công việc xẻ gỗ, gia công gỗ, tạo khung, lắp vào nhà Việc làm sắt chia nhỏ thành… Rõ ràng, với cách làm mịn này, ta thu kết khác hẳn với cách thức thực phần 1.3 LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG 1.3.1 Lập trình hướng đối tượng Trong lập trình hướng đối tượng: • Người ta coi thực thể chương trình đối tượng sau trừu tượng hố đối tượng thành lớp đối tượng • Dữ liệu tổ chức thành thuộc tính lớp Nguời ta ngăn chặn việc thay đổi tuỳ tiện liệu chương trình cách giới hạn truy nhập cho phép truy nhập liệu thông qua đối tượng, thông qua phương thức mà đối tượng cung cấp… • Quan hệ đối tượng quan hệ ngang hàng quan hệ kế thừa: Nếu lớp B kế thừa từ lớp A A gọi lớp sở B gọi lớp dẫn xuất Ngôn ngữ lập trình hướng đối tượng phổ biến Java, C++, C# Mặc dù C++ có đặc trưng lập trình hướng đối tượng khơng phải ngơn ngữ lập trình hướng đối tượng Đặc trưng Lập trình hướng đối tượng có hai đặc trưng bản: • Đóng gói liệu: liệu tổ chức thành thuộc tính lớp đối tượng Việc truy nhập đến liệu phải thông qua phương thức đối tượng lớp • Sử dụng lại mã nguồn: việc sử dụng lại mã nguồn thể thông qua chế kế thừa Cơ chế cho phép lớp đối tượng kế thừa từ lớp đối tượng khác Khi đó, lớp dẫn xuất, sử dụng phương thức (mã nguồn) lớp sở mà không cần phải định nghĩa lại Ưu điểm Lập trình hướng đối tượng có số ưu điểm bật: • Khơng nguy liệu bị thay đổi tự chương trình Vì liệu đóng gói vào đối tượng Nếu muốn truy nhập vào liệu phải thông qua phương thức cho phép đối tượng • Khi thay đổi cấu trúc liệu đối tượng, không cần thay đổi mã nguồn đối tượng khác, mà cần thay đổi số thành phần đối tượng dẫn xuất Điều hạn chế ảnh hưởng xấu việc thay đổi liệu đến đối tượng khác chương trình • Có thể sử dụng lại mã nguồn, tiết kiệm tài nguyên, chi phí thời gian Vì ngun tắc kế thừa cho phép lớp dẫn xuất sử dụng phương thức từ lớp sở phương thức nó, mà khơng cần thiết phải định nghĩa lại • Phù hợp với dự án phần mềm lớn, phức tạp 1.3.2 Một số khái niệm Trong mục này, làm quen với số khái niệm lập trình hướng đối tượng Bao gồm: • Khái niệm đối tượng (object) • Khái niệm đóng gói liệu (encapsulation) • Khái niệm kế thừa (inheritance) • Khái niệm đa hình (polymorphism) Đối tượng (Object) Trong lập trình hướng đối tượng, đối tượng coi đơn vị nhỏ Các diệu cách xử lí thành phần đối tượng mà không coi thực thể Một đối tượng chứa liệu riêng nó, đồng thời có phương thức (hành động) thao tác liệu đó: Đối tượng = liệu + phương thức Lớp (Class) Khi có nhiều đối tượng giống mặt liệu phương thức, chúng nhóm lại với gọi chung lớp: • Lớp trừu tượng hố đối tượng • Đối tượng thể lớp Đóng gói liệu (Encapsulation) • Các liệu đóng gói vào đối tượng Mỗi liệu có phạm vi truy nhập riêng • Khơng thể truy nhập đến liệu cách tự lập trình cấu trúc • Muốn truy nhập đến liệu bảo vệ, phải thông qua đối tượng, nghĩa phải sử dụng phương thức mà đối tượng cung cấp truy nhập đến liệu đối tượng Tuy nhiên, C++ ngơn ngữ lập trình nửa đối tượng, C++ cho phép định nghĩa biến liệu hàm tự do, kết kế thừa từ ngơn ngữ C, ngơn ngữ lập trình cấu trúc Kế thừa (Inheritance) Tính kế thừa lập trình hướng đối tượng cho phép lớp kế thừa từ số lớp tồn Khi đó, lớp sử dụng liệu phương thức lớp sở Ngồi ra, lớp dẫn xuất bổ sung thêm số liệu phương thức Ưu điểm kế thừa thay đổi liệu lớp, cần thay đổi phương thức phạm vi lớp sở mà không cần thay đổi lớp dẫn xuất Đa hình (Polymorphsim) Đa hình khái niệm kèm với kế thừa Do tính kế thừa, lớp sử dụng lại phương thức lớp khác Tuy nhiên, cần thiết, lớp dẫn xuất định nghĩa lại số phương thức lớp sở Đó nạp chồng phương thức kế thừa Nhờ nạp chồng phương thức này, ta cần gọi tên phương thức bị nạp chồng từ đối tượng mà không cần quan tâm đối tượng lớp Chương trình tự động kiểm tra xem đối tượng thuộc kiểu lớp sở hay thuộc lớp dẫn xuất, sau gọi phương thức tương ứng với lớp Đó tính đa hình 1.3.3 Lập trình hướng đối tượng C++ Vì C++ ngơn ngữ lập trình mở rộng từ ngơn ngữ lập trình cấu trúc C nên C++ xem ngơn ngữ lập trình nửa hướng đối tượng, nửa hướng cấu trúc Những đặc trưng hướng đối tượng C++ • Cho phép định nghĩa lớp đối tượng • Cho phép đóng gói liệu vào lớp đối tượng Cho phép định nghĩa phạm vi truy nhập liệu lớp từ khoá phạm vi: public, protected, private • Cho phép kế thừa lớp với kiểu kế thừa khác tuỳ vào từ khoá dẫn xuất • Cho phép lớp dẫn xuất sử dụng phương thức lớp sở (trong phạm vi quy định) • Cho phép định nghĩa chồng phương thức lớp dẫn xuất Những hạn chế hướng đối tượng C++ Những hạn chế C++ phát triển từ ngơn ngữ lập trình cấu trúc C • Cho phép định nghĩa sử dụng biến liệu tự • Cho phép định nghĩa sử dụng hàm tự • Ngay liệu đóng gói vào lớp, liệu truy nhập trực tiếp liệu tự hàm bạn, lớp bạn (friend) C++ TỔNG KẾT CHƯƠNG Chương trình bày tổng quan phương pháp lập trình Nội dung tập trung vào ba phương pháp lập trình có liên quan trực tiếp đến ngơn ngữ lập trình C++: • Lập trình tuyến tính • Lập trình hướng cấu trúc • Lập trình hướng đối tượng C++ ngơn ngữ lập trình mở rộng từ ngơn ngữ lập trình cấu trúc C Do đó, C++ vừa có đặc trưng lập trình cấu trúc, vừa có đặc trưng lập trình hướng đối tượng CHƯƠNG CON TRỎ VÀ MẢNG Nội dung chương tập trung trình bày vấn đề liên quan đến thao tác kiểu liệu trỏ mảng C++: • Khái niệm trỏ, cách khai báo sử dụng trỏ • Mối quan hệ trỏ mảng • Con trỏ hàm • Cấp phát nhớ cho trỏ 2.1 KHÁI NIỆM CON TRỎ 2.1.1 Khai báo trỏ Con trỏ biến đặc biệt chứa địa biến khác Con trỏ có kiểu liệu với kiểu liệu biến mà trỏ tới Cú pháp khai báo trỏ sau: *; Trong đó: • Kiểu liệu: Có thể kiểu liệu C++, kiểu liệu có cấu trúc, kiểu đối tượng người dùng tự định nghĩa • Tên trỏ: Tuân theo qui tắc đặt tên biến C++: - Chỉ bắt đầu kí tự (chữ), dấu gạch “_” - Bắt đầu từ kí tự thứ hai, có kiểu kí tự số - Khơng có dấu trống (space bar) tên biến - Có phân biệt chữ hoa chữ thường - Không giới hạn độ dài tên biến Ví dụ, để khai báo biến trỏ có kiểu int tên pointerInt, ta viết sau: int *pointerInt; Lưu ý • Có thể viết dấu trỏ “*” sau kiểu liệu, nghĩa hai cách khai báo sau tương đương: int *pointerInt; int* pointerInt; • Các cách khai báo trỏ sau sai cú pháp: *int pointerInt; // Khai báo sai trỏ int pointerInt*; // Khai báo sai trỏ 2.1.2 Sử dụng trỏ Con trỏ sử dụng theo hai cách: • Dùng trỏ để lưu địa biến để thao tác 10 in hình nội dung phần tử thứ danh sách myList 7.5.4 Áp dụng Trong phần này, ta cài đặt lại chương trình 3.6c trình bày phần cấu trúc danh sách liên kết (chương 3) Nhưng thay tự tạo danh sách liên kết, ta dùng lớp List thư viện C++ để quản lí nhân viên văn phòng Chương trình 7.5 #include #include #include #include typedef struct{ char name[25]; // Tên nhân viên int age; // Tuổi nhân viên float salary; // Lương nhân viên } Employee; void main(){ clrscr(); List myList; int function; do{ clrscr(); cout

Ngày đăng: 19/11/2017, 19:50

Từ khóa liên quan

Mục lục

  • GIỚI THIỆU

  • CHƯƠNG 1

  • GIỚI THIỆU VỀ CÁC PHƯƠNG PHÁP LẬP TRÌNH

    • 1.1 LẬP TRÌNH TUYẾN TÍNH

      • Đặc trưng

        • Tính chất

        • 1.2 LẬP TRÌNH HƯỚNG CẤU TRÚC

          • 1.2.1 Đặc trưng của lập trình hướng cấu trúc

            • Đặc trưng

            • Tính chất

            • Ưu điểm

            • Nhược điểm

            • Vấn đề

            • 1.2.2 Phương pháp thiết kế trên xuống (top-down)

            • 1.3 LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

              • 1.3.1 Lập trình hướng đối tượng

                • Đặc trưng

                • Ưu điểm

                • 1.3.2 Một số khái niệm cơ bản

                  • Đối tượng (Object)

                  • Lớp (Class)

                  • Đóng gói dữ liệu (Encapsulation)

                  • Kế thừa (Inheritance)

                  • Đa hình (Polymorphsim)

                  • 1.3.3 Lập trình hướng đối tượng trong C++

                    • Những đặc trưng hướng đối tượng của C++

                    • Những hạn chế hướng đối tượng của C++

                    • TỔNG KẾT CHƯƠNG 1

                    • CHƯƠNG 2

Tài liệu cùng người dùng

Tài liệu liên quan