Academia.eduAcademia.edu
Lập trình CH NG 1: Gi I THI U 8/18/2014 Ch ng 1: Mở đầu 1.1 1.2 1.3 Giới thiệu Giới thiệu chung về kỹ thuật lập trình Một số kỹ thuật lập trình cơ bản 1.4 1.5 Các bước phát triển chương trình Ḷch s̉ ngôn ngữ C/C++ Ch ng 1: Mở đầu 2 1.1 Gi i thi u  3 tín chỉ = 45 tiết  Học trên lớp + thực hành      Ch Điểm=Điểm giữa kỳ (30%)+Điểm thi cuối kỳ(70%) Không l̀m b̀i tập về nh̀: tr̀ điểm giữa kỳ. Thi: lập trình trên giấy. B̀i tập lớn (không bắt buộc): cộng điểm giữa kỳ Mục đích môn học: trang ḅ cho sinh viên kiến thức cơ bản về C/C++, cấu trúc dữ liệu. ng 1: Mở đầu 3 Nguyên tắc học tập      Ch Tích cực, chủ động học thường xuyên Kết hợp giữa nghe giảng, tham khảo tài liệu v̀ thực hành. Không nên học thuộc lòng, học chay Không nên mong đợi nhiều vào ôn tập Không nên dựa dẫm vào các bài tập mẫu trong sách ng 1: Mở đầu 4 Công cụ học tập     Ch Máy tính PC Công cụ lập trình: Visual C++ 6.0 (Visual Studio 6.0), Visual C++ .NET, Borland C++ Builder Nền ứng dụng: Win32 Console Application Tài liệu tham khảo: 1. GS Phạm Văn Ất: Kỹ thuật lập trình C/C++ 2. Stanley B. Lippman, Josée Lajoie: C++ Primer. 3rd Edition. Addison-Wesley 1998. 3. Bjarne Stroustrup: The C++ Programming Language. 3rd Edition. Addison-Wesley 1997. 4. David Musser,…:C++ Programming with Standard Template Library. 2nd Edition, Addison-Wesley 1998. 5. Bruce Eckel: Thinking in C++. www.bruceeckel.com, 2003. ng 1: Mở đầu 5 1.2 Gi i thi u về kỹ thuật lập trình  Kỹ thuật lập trình l̀ gì? – L̀ kỹ thuật thực thi một giải pháp ph̀n mềm – Dựa trên nền tảng một phương pháp luận – D̀ng một học nhiều ngôn ngữ lập trình ph̀ hợp với đ̣c th̀ của ứng dụng  Kỹ thuật lập trình= Kỹ thuật mã hóa? Kỹ thuật lập trình = Tư tưởng thiết kế + Kỹ thuật mã hóa = Cấu trúc dữ liệu + Giải thuật + Ngôn ngữ lập trình Ch ng 1: Mở đầu 6 Thế nào là lập trình  Viết chương trình tính giai th̀a của số 100?  Viết một chương trình in ra 100 số nguyên tố đ̀u tiên? Có phải lập trình không?  Viết một h̀m tính giai th̀a?  Viết một chương trình in ra N số nguyên tố đ̀u tiên? Có phải lập trình không? Ch ng 1: Mở đầu 7 Thế nào là lập trình tốt?  Đ́ng yêu c̀u của khách h̀ng  Tin cậy – Chương trình chạy đ́ng – Chạy ít lỗi (số lượng lỗi ít, cường độ lỗi thấp) – Mức độ lỗi nhẹ  Hiệu suất – Chương trình nhỏ gọn, s̉ dụng ít bộ nhớ – Tốc độ nhanh, s̉ dụng ít thời gian CPU  Hiệu quả: – – – – – Ch Thời gian lập trình ngắn, Khả năng bảo trì dễ d̀ng Giá tṛ s̉ dụng lại lớn S̉ dụng đơn giản, thân thiện Nhiều chức năng tiện ích ng 1: Mở đầu 8 Làm thế nào để lập trình tốt?  Học cách tư duy v̀ phương pháp lập trình – Tư duy toán học, tư duy logic, tư duy có cấu tŕc, tư duy hướng đối tượng, tư duy tổng quát – Tìm hiểu về cấu tŕc dữ liệu v̀ giải thuật  Hiểu sâu về máy tính – Tương tác giữa CPU, chương trình v̀ bộ nhớ – Cơ chế quản lý bộ nhớ  Nắm vững ngôn ngữ lập trình – Biết rõ các khả năng v̀ hạn chế của ngôn ngữ – Kỹ năng lập trình (đọc thông, viết thạo)  Tự rèn luyện trên máy tính – Hiểu sâu được các điểm nêu trên – Rèn luyện kỹ năng lập trình – Th́c đẩy sáng tạo Ch ng 1: Mở đầu 9 Các nguyên tắc c bản Tr̀u tượng hóa  Chắt lọc ra những yếu tố quan trọng, bỏ qua những chi tiết kém quan trọng Đóng gói  Che giấu v̀ bảo vệ các dữ liệu quan trọng qua một giao diện có kiểm soát Module hóa  Chia nhỏ đối tượng/vấn đề th̀nh nhiều module nhỏ để dễ can thiệp v̀ giải quyết Phân cấp  Phân hạng học sắp xếp trật tự đối tượng theo các quan hệ trên dưới Ch ng 1: Mở đầu 10 1.3 M t số kỹ thuật lập trình c bản       Ch Lập trình tùn tự Lập trình có cấu tŕc Lập trình module Lập trình hướng đối tượng Lập trình tổng quát … ng 1: Mở đầu 11 Lập trình tuần tự (Sequential Programming)  Phương pháp cổ điển nhất.  Chương trình g̀m một chuỗi các lệnh kế tiếp nhau.  Mức tr̀u tượng thấp  Điều khiển chương trình bằng các lệnh rẽ nhánh, lệnh nhảy, lệnh gọi chương trình con.  Ví dụ ngôn ngữ đ̣c th̀: – Ngôn ngữ máy – ASSEMBLY – BASIC Ch ng 1: Mở đầu 12 Lập trình tuần tự: Ví dụ tính giai thừa  1:        Ch MOV AX, n 2: DEC n 3: CMP n, 1 4: JMPI 5: MUL AX, n 6: JMP 2 7: MOV n, AX 8: RET ng 1: Mở đầu 13 Lập trình có cấu trúc (structured programming)  Cấu tŕc hóa dữ liệu (xây dựng kiểu dữ liệu) v̀ cấu tŕc hóa chương trình để tránh các lệnh nhảy.  Phân tích v̀ thiết kế theo trật tự t̀ trên xuống v̀ thực hiện t̀ dưới lên.  Trong lập trình có cấu tŕc chỉ s̉ dụng các cấu tŕc điều khiển rẽ nhánh ( if then else...), v̀ng ḷp (while...) và thoát ra (exit).  Ví dụ các ngôn ngữ đ̣c th̀: – PASCAL, FORTRAN, C,... Ch ng 1: Mở đầu 14 Lập trình có cấu trúc: Ví dụ tính giai thừa (PASCAL) function gthua(n: interger) : interger var gt: interger; begin gt := n; while (n > 1) do begin dec(n); gt := gt * n; end gthua := gt; end end; Ch ng 1: Mở đầu 15 Lập trình module (modular programming)  Lập trình module l̀ một dạng cải tiến của lập trình có cấu tŕc. Chương trình được cấu tŕc nghiêm ng̣t hơn, d̀ng đơn ṿ cấu tŕc là module.  Module: – Một đơn ṿ cấu tŕc độc lập, được chuẩn hóa d̀ng để tạo lập một hệ thống. – Mỗi module bao g̀m ph̀n giao diện (mở) v̀ ph̀n thực hiện (che giấu) – Các module giao tiếp với nhau thông qua các giao diện được đ̣c tả rất chính xác.  Ví dụ ngôn ngữ tiêu biểu: – Modula-2, xây dựng trên cơ sở PASCAL, do Niclaus Wirth thiết kế năm 1977. Ch ng 1: Mở đầu 16 Lập trình h programming) ng đối t ợng (object-oriented  Xây dựng chương trình ứng dụng dựa trên các cấu tŕc dữ liệu tr̀u tượng (lớp), các thể nghiệm của các cấu tŕc đó (đối tượng) v̀ quan hệ giữa ch́ng (quan hệ lớp, quan hệ đối tượng).  Ba nguyên lý cơ bản: – Đóng gói dữ liệu (data encapsulation) – Dẫn xuất/th̀a kế (subtyping/inheritance) – Đa hình/đa xạ (polymorphism)  Ví dụ ngôn ngữ hỗ trợ tiêu biểu: – C++, C# – Java, – ... Ch ng 1: Mở đầu 17 Ví dụ minh họa: Quản lý sinh viên (C++) class Date { int Day, Month, Year; public: void setDate(int, int, int); ... }; class Student { string name; Date dob; int code; public: Student(string n, Date d, int c); ... }; class StudentList { Student* list; public: void addStudent(Student*); ... }; Ch ng 1: Mở đầu 18 Lập trình tổng quát (generic programming)  Một tư duy lập trình mở, trên quan điểm tổng quát hóa tất cả những gì có thể nhằm đưa ra một khuôn mẫu giải pháp cho nhiều b̀i toán lập trình cụ thể.  Ưu điểm: – – – – Giảm tối đa lượng mã ngùn Tăng nhiều l̀n giá tṛ s̉ dụng lại của ph̀n mềm Có thể kết hợp t̀y ý với các phương pháp luận khác Tính khả chuyển cao – – – – Kiểu dữ liệu Phép toán cơ bản Cấu tŕc dữ liệu Quản lý bộ nhớ,...  Các hình thức tổng quát hóa: Ch ng 1: Mở đầu 19 1.4 Các b c phát triển ch ng trình  Tạo mã ngùn chương trình  Biên ḍch chương trình  mã đích  Liên kết chương trình với các thư viện  chương trình chạy được  Nạp v̀ chạy chương trình Ch ng 1: Mở đầu 20 Môi tr ờng/công cụ phát triển  IDE (Integrated Development Environment) – Hỗ trợ tòn bộ các bước phát triển chương trình – Ví dụ: MS Visual C++, Borland C++ (Builder), Visual studio C++  Các công cụ tiêu biểu – – – – – – Ch Trình soạn thảo (Editor) Trình biên ḍch (Compiler) Trình liên kết (Linker) Trình nạp (Loader) Trình gỡ rối (Debugger) Trình quản lý dự án (Project Manager) ng 1: Mở đầu 21