Bài giảng Kỹ thuật lập trình - Chương 1: Mở đầu

pdf 47 trang cucquyet12 4840
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kỹ thuật lập trình - Chương 1: Mở đầu", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_ky_thuat_lap_trinh_chuong_1_mo_dau.pdf

Nội dung text: Bài giảng Kỹ thuật lập trình - Chương 1: Mở đầu

  1. ng 1 Chương 1: Mở₫ầu ươ 01010101010101011000010101010101010101100001 StateController01010101001010101001010101010100101010100101 start() 10100110001100100100101010011000110010010010 Ch stop() 11001011001000100000101100101100100010000010 01010101010101011000010101010101010101100001 01010101001010101001010101010100101010100101 N Ơ 10100110001100100100101010011000110010010010y = A*x + B*u; 11001011001000100000101100101100100010000010x = C*x + d*u; LQGController01010101010101011000010101010101010101100001 start() 01010101001010101001010101010100101010100101 stop() 10100110001100100100101010011000110010010010 11001011001000100000101100101100100010000010 8/18/2005 2004, HOÀNG MINH S ©
  2. Nộidung bài giảng 1.1 Giới thiệunội dung môn học 1.2 Giới thiệu chung về kỹ thuật lập trình 1.3 Phương pháp luận 1.4 Qui trình phát triển phần mềm 1.5 Sơ lược về ngôn ngữ C/C++ N Ơ Ch2004, HOÀNG MINH S ương 1: Mởđầu 2 © 2005 - HMS ©
  3. 1.1 Nộidung môn học Các kỹ thuậtlậptrìnhcơ bản, thựchiệntrêncác ngôn ngữ lập trình C và C++: —Lập trình có cấutrúc —Lậptrìnhhướng ₫ốitượng —Lậptrìnhthờigianthực —Lậptrìnhtổng quát TạisaochọnC/C++: —Haingônngữ lậptrìnhtiêubiểunhất, ₫ủ cho thựchiệncác kỹ thuậtlậptrìnhquantrọng N Ơ —Haingônngữ lập trình quan trọng nhất ₫ốivớikỹ sư ₫iện/kỹ sư₫iều khiển Ch2004, HOÀNG MINH S ương 1: Mởđầu 3 © 2005 - HMS ©
  4. Quan ₫iểmvề môn học Đề cao kiếnthứccơ bản, nền tảng: —Thiênvề tư duy và phương pháp lậptrình —Tạokhả năng dễ thích ứng vớicácứng dụng khác nhau —Tạokhả năng dễ thích ứng với các ngôn ngữ lậptrình khác (Java, Visual Basic, C#, MATLAB ) —Nhấn mạnh tính chuyên nghiệp trong lập trình: hiệu quả + chất lượng Những nội dung không có trong chương trình: —Lậptrìnhhệ thống (low-level system programming) N Ơ —Lậptrình₫ồ họa —Lậptrìnhgiaotiếpvớicáccổng vào/ra (nốitiếp, song song) —Lậptrìnhcơ sở dữ liệu —Lập trình thành phần, lập trình phân tán (mạng, Internet) Ch2004, HOÀNG MINH S ương 1: Mởđầu 4 © 2005 - HMS ©
  5. Phương pháp họctập Cách thứ nhất: Nghe giảng làm thử ₫ọctài liệu thảoluận luyệntập Cách thứ hai: Đọctàiliệu làm thử nghe giảng thảoluận luyệntập Nguyên tắccơ bản: Chủ₫ộng họcthường xuyên! Những ₫iều không nên làm: — Chép nhiềutrênlớp —Họcthuộclòng, họcchay N —Mong₫ợinhiềuvàoôntập Ơ —Dựadẫm vào các bài tậpmẫutrongsách Ch2004, HOÀNG MINH S ương 1: Mởđầu 5 © 2005 - HMS ©
  6. Công cụ họctập 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ệuthamkhảo: 1. Stanley B. Lippman, Josée Lajoie: C++ Primer. 3rd Edition. Addison-Wesley 1998. 2. Bjarne Stroustrup: The C++ Programming Language. 3rd Edition. Addison-Wesley 1997. N Ơ 3. David Musser, :C++ Programming with Standard Template Library. 2nd Edition, Addison-Wesley 1998. 4. Bruce Eckel: Thinking in C++. www.bruceeckel.com, 2003. Ch2004, HOÀNG MINH S ương 1: Mởđầu 6 © 2005 - HMS ©
  7. 1.2 Tổng quan về kỹ thuật lập trình Kỹ thuật lập trình là gì: Kỹ thuật thực thi một giải pháp phần mềm (cấu trúc dữ liệu + giải thuật) dựa trên nền tảng một phương pháp luận (methodology) và một hoặc nhiều ngôn ngữ lập trình phù hợp với yêu cầu ₫ặc thù của ứng dụng. 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 Kỹ thuật lập trình N Ơ ≠ Phương pháp phân tích & thiết kế (A&D) Ch2004, HOÀNG MINH S ương 1: Mởđầu 7 © 2005 - HMS ©
  8. Thế nào là lập trình? Viết chương trình tính Viết một hàm tính giai thừa của 100! giai thừa! Viết chương trình in ra Viết chương trình in ra 100 số nguyên tố N số nguyên tố ₫ầu tiên! ₫ầu tiên! Lập trình giải bài toán: Lập trình giải bài toán: "Vừa gà vừa chó, "Vừa gà vừa chó, ba mươi sáu con, vừa vặn X con, bó lại cho tròn, bó lại cho tròn, N Ơ một trăm chân chẵn" ₫ủ Y chân chẵn" KHÔNG PHẢI LÀ LẬP TRÌNH! ĐÂY LÀ LẬP TRÌNH! Ch2004, HOÀNG MINH S ương 1: Mởđầu 8 © 2005 - HMS ©
  9. Thế nào là lập trình tốt? Giải ₫úng ₫ề bài, ₫ược khách hàng chấp nhận 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ả: —Thời gian lập trình ngắn, N Ơ —Khả năng bảo trì dễ dàng —Giátrị 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 Ch2004, HOÀNG MINH S ương 1: Mởđầu 9 © 2005 - HMS ©
  10. Ví dụ minh họa: Tính giai thừa Viết chương trình hay xây dựng hàm? — Hàm tính giai thừa của một số nguyên int factorial(int N); Giải thuật: — Phương pháp ₫ệ quy (recursive) if (N > 1) return N*factorial(N-1); return 1; — Phương pháp lặp (iterative) N Ơ int kq = 1; while (N > 1) ☺„to iterate is human, kq *= N ; to recurse is devine!“ return kq; Ch2004, HOÀNG MINH S ương 1: Mởđầu 10 © 2005 - HMS ©
  11. 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 trúc, tư duy hướng ₫ối tượng, tư duy tổng quát — Tìm hiểu về cấu trú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) N Ơ 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 Ch2004, HOÀNG MINH S ương 1: Mởđầu 11 © 2005 - HMS ©
  12. 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 N Phân cấp Ơ Phân hạng hoặc sắp xếp trật tự ₫ối tượng theo các quan hệ trên dưới Ch2004, HOÀNG MINH S ương 1: Mởđầu 12 © 2005 - HMS ©
  13. Nguyên tắc tối cao „Keep it simple: as simple as possible, but no simpler!“ (Albert Einstein) N Ơ Ch2004, HOÀNG MINH S ương 1: Mởđầu 13 © 2005 - HMS ©
  14. Các bài toán lập trình cho kỹ sư ₫iện Lập trình phần mềm ₫iều khiển (μC, PC, PLC, DCS) Lập trình phần mềm thu thập/quản lý dữ liệu quá trình Lập trình phần mềm giao diện người-máy (₫ồ họa) Lập trình phần mềm tích hợp hệ thống (COM, OPC, ) Lập trình phần mềm tính toán, thiết kế Lập trình phần mềm mô phỏng N Ơ Lập trình phần mềm tối ưu hóa Ch2004, HOÀNG MINH S ương 1: Mởđầu 14 © 2005 - HMS ©
  15. 1.3 Phương pháp luận Phương pháp: Cách thức tiến hành một công việc ₫ể có hiệu quả cao Phương pháp luận: Một tập hợp các phương pháp ₫ược sử dụng hoặc bộ môn khoa họcnghiên cứu các phương pháp ₫ó Phương pháp luận phục vụ: —Phân tích hệ thống —Thiết kế hệ thống —Thực hiện —Thử nghiệm N Ơ — Ch2004, HOÀNG MINH S ương 1: Mởđầu 15 © 2005 - HMS ©
  16. Lập trình tuần tự (Sequential Programming) Phương pháp cổ ₫iển nhất, bằng cách liệt kê các lệnh kế tiếp, mức trừu tượng thấp Kiểm soát dòng mạch thực hiệ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 (subroutines) Ví dụ ngôn ngữ ₫ặc thù: —Ngôn ngữ máy, — ASSEMBLY N —BASIC Ơ — IL (Instruction List), STL (Statement List) — LD, LAD (Ladder Diagram) Ch2004, HOÀNG MINH S ương 1: Mởđầu 16 © 2005 - HMS ©
  17. Lập trình tuần tự: Ví dụ tính giai thừa 1: MOV AX, n 2: DEC n 3: CMP n, 1 4: JMPI 5: MUL AX, n 6: JMP 2 7: MOV n, AX N Ơ 8: RET Ch2004, HOÀNG MINH S ương 1: Mởđầu 17 © 2005 - HMS ©
  18. Lập trình tuần tự: Ưu ₫iểm và nhược ₫iểm Ưu ₫iểm: —Tư duy ₫ơn giản —Lập trình ở mức trừu tượng thấp, nên dễ kiểm soát sử dụng tài nguyên —Cóthể có hiệu suất cao —Cóthể thích hợp với bài toán nhỏ, lập trình nhúng, lập trình hệ thống Nhược ₫iểm: —Chương trình khó theo dõi -> dễ mắc lỗi N —Khósử dụng lạI Ơ —Hiệu quả lập trình thấp —Không thích hợp với ứng dụng qui mô lớn Ch2004, HOÀNG MINH S ương 1: Mởđầu 18 © 2005 - HMS ©
  19. Lập trình có cấu trúc (structured programming) Cấu trúc hóa dữ liệu (xây dựng kiểu dữ liệu) và cấu trúc hóa chương trình ₫ể tránh các lệnh nhảy. Phân tích và thiết kế theo cách từ trên xuống (top- down) Thực hiện từ dưới lên (bottom-up) Yêu cầu của chương trình có cấu trúc: chỉ sử dụng các cấu trúc ₫iều khiển tuần tự, tuyển chọn ( if then else), lặp (while) và thoát ra (exit). N Ví dụ các ngôn ngữ ₫ặc thù: Ơ — PASCAL, ALGO, FORTRAN, C, — SFC (Sequential Funtion Charts) —ST (Structured Text) Ch2004, HOÀNG MINH S ương 1: Mởđầu 19 © 2005 - HMS ©
  20. Lập trình có cấu trúc: Ví dụ tính giai thừa (PASCAL) FUNCTION Factorial(n: INTEGER) : INTEGER VAR X: INTERGER; BEGIN X := n; WHILE (n > 1) DO BEGIN DEC(n); X := X * n; END N Ơ Factorial := X; END END; Ch2004, HOÀNG MINH S ương 1: Mởđầu 20 © 2005 - HMS ©
  21. Lập trình có cấu trúc: Ví dụ quản lý sinh viên struct Date { int Day, Month, Year; }; struct Student { string name; Date dob; int code; }; typedef Student* Students; // cấu trúc mảng Students create(int max_items, int item_size ); void destroy(Students lop); N void add(Students lop, Student sv); Ơ void delete(Students lop, Student sv); Student find(Students lop, int code); Ch2004, HOÀNG MINH S ương 1: Mởđầu 21 © 2005 - HMS ©
  22. 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 trúc. Chương trình ₫ược cấu trúc nghiêm ngặt hơn, dùng ₫ơn vị cấu trúc là module. Module: —Một ₫ơn vị cấu trú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 N ₫ặ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. Ch2004, HOÀNG MINH S ương 1: Mởđầu 22 © 2005 - HMS ©
  23. Lập trình hướng ₫ối tượng (object-oriented programming) Xây dựng chương trình ứng dụng theo quan ₫iểm dựa trên các cấu trúc dữ liệu trừu tượng (lớp), các thể nghiệm của các cấu trú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: N Ơ —C++, C# — Java, —ADA, — Ch2004, HOÀNG MINH S ương 1: Mởđầu 23 © 2005 - HMS ©
  24. 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); }; N class StudentList { Ơ Student* list; public: void addStudent(Student*); }; Ch2004, HOÀNG MINH S ương 1: Mởđầu 24 © 2005 - HMS ©
  25. Ví dụ minh họa: Tính toán kiểu MATLAB Vector a(10, 1.0), b(10, 0.5); Vector c = a + b; Vector d = a - b + 2*c; Matrix A(4,4), B(4,2), C(2,4), D(2,2); Vector x(4),u(2),y(2); while (true) { // đọc đầu vào u y = C*x + D*u; x = A*x + B*u; N // đưa đầu ra y Ơ } CTFMatrix G = ss2tf(A,B,C,D); Ch2004, HOÀNG MINH S ương 1: Mởđầu 25 © 2005 - HMS ©
  26. 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ã nguồn —Tăng nhiều lần giá trị 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 Các hình thức tổng quát hóa: N Ơ —Kiểu dữ liệu —Phép toán cơ bản —Cấu trúc dữ liệu —Quản lý bộ nhớ, Ch2004, HOÀNG MINH S ương 1: Mởđầu 26 © 2005 - HMS ©
  27. Ví dụ minh họa: Các cấu trúc toán học typedef TMatrix Matrix; typedef TMatrix > ComplexMatrix; Matrix a(4,4), b(4,4); Matrix c = a*b; ComplexMatrix a1(4,4), b1(4,4); ComplexMatrix c1 = a1*b1; typedef TPoly Poly; typedef TMatrix PolyMatrix; typedef TPoly ComplexMatrixPoly; N Ơ TRational IntRational; TRational PolyRational; Ch2004, HOÀNG MINH S ương 1: Mởđầu 27 © 2005 - HMS ©
  28. Lập trình thành phần (component-based programming) Phương pháp xây dựng phần mềm dựa trên các thành phần "IC" có sẵn, hoặc tạo ra các IC ₫ó. Tiến hóa từ lập trình hướng ₫ối tượng Hầu hết các ứng dụng Windows và ứng dụng Internet ngày nay ₫ược xây dựng theo phương pháp luận này Các ngôn ngữ tiêu biểu —C/C++, C# — Delphi, Visual Basic N — Script, HMTL, XML, Ơ —FBD Ch2004, HOÀNG MINH S ương 1: Mởđầu 28 © 2005 - HMS ©
  29. Lập trình thời gian thực (real-time programming) Xây dựng phầnmềm ₫áp ứng tính năng thờigian thực của hệ thống, ví dụ các hệ thống ₫iềukhiển Đặcthù: —Lập trình cạnh tranh (₫a nhiệm, ₫a luồng) —Cơ chế xử lý sự kiện —Cơ chế₫ịnh thời — Đồng bộ hóa quá trình —Hiệusuấtcao Ngôn ngữ lập trình: ASM, C/C++, ADA, N Ơ Cần sự hỗ trợ của nền cài ₫ặt —Hệ₫iềuhành —Nền phầncứng —Mạng truyềnthông Ch2004, HOÀNG MINH S ương 1: Mởđầu 29 © 2005 - HMS ©
  30. 1.4 Qui trình công nghệ phần mềm BÀI TOÁN ? GIẢI PHÁP THẾ GIỚI THỰC Phân tích Mã hóa Thử nghiệm THẾ GIỚI MÔ HÌNH MÔ HÌNH THIẾT KẾ N PHÂN TÍCH THIẾT KẾ Ơ Thiết kế Ch2004, HOÀNG MINH S ương 1: Mởđầu 30 © 2005 - HMS ©
  31. Phân tích yêu cầu (Requirement analysis) Bởi vì: Khách hàng thường không biếtlàhọ muốngì, nhưng họ biếtchắcchắnlàhọ không muốngì Cho nên: Cầnphảicùng với khách hàng làm rõ những yêu cầuvề phạm chứcnăng, về giao diện sử dụng Kếtquả: Mô hình ₫ặctả (Specification Model), một phần của hợp ₫ồng Cần một ngôn ngữ mô hình hóa dễ hiểu ₫ể trao ₫ổi N giữa khách hàng và nhóm phân tích Ơ Trả lời câu hỏi: Khách hàng cần những gì? Ch2004, HOÀNG MINH S ương 1: Mởđầu 31 © 2005 - HMS ©
  32. Phân tích hệ thống (System analysis) Phân tích mốiliên hệ của hệ thống vớimôi trường xung quanh Tìm ra cấutrúchệ thống và các thành phần quan trọng Định nghĩachứcnăng cụ thể của các thành phần Nhận biết các ₫ặc ₫iểm của từng thành phần Phân loại các thành phần, tổng quát hóa, ₫ặc biệt hóa Nhận biếtmối liên hệ giữacácthànhphần N Ơ Kết quả: Mô hình hệ thống (System model) Cần một ngôn ngữ mô hình hóa ₫ể trao ₫ổi giữa các thành viên trong nhóm phân tích và với nhóm thiết kế Trả lời câu hỏi: Những gì sẽ phải làm? Ch2004, HOÀNG MINH S ương 1: Mởđầu 32 © 2005 - HMS ©
  33. Thiếtkế hệ thống (System Design) Dựa trên mô hình hệ thống, xây dựng các mô hình chi tiết phục vụ sẵn sàng mã hóa/cài ₫ặt Bao gồm: —Thiếtkế cấutrúc(structured design): chương trình, kiểu dữ liệu, ₫ối tượng, quan hệ cấu trúc giữa các ₫ối tượng và kiểu) —Thiết kế tương tác (interaction design): quan hệ tương tác giữa các ₫ối tượng —Thiếtkế hành vi (behaviour design): sự kiện, trạng thái, phép toán, phản ứng —Thiếtkế chứcnăng (funtional design): tiến trình hành ₫ộng, N Ơ hàm, thủ tục) Kếtquả: Mô hình thiếtkế (các bảnvẽ và lờivăn mô tả) Trả lờicâu hỏi: Làm như thế nào? Ch2004, HOÀNG MINH S ương 1: Mởđầu 33 © 2005 - HMS ©
  34. Các bướckhác Mã hóa/cài ₫ặt (Coding/Implementation): Thể hiện mô hình thiếtkế với một ngôn ngữ lập trình cụ thể Thử nghiệm (Testing, Verification): Chạy thử, phân tích và kiểm chứng: —Thử ₫ơn vị (Unit Test) —Thử tích hợp (Integration Test) Gỡ rối (Debugging): Tìm ra và sửa các lỗi chương trình chạy (các lỗi logic) Xây dựng tài liệu (Documenting): Xây dựng tài liệu phát N Ơ triển, tài liệu hướng dẫn sử dụng Đào tạo, chuyển giao Bảo trì, bảo dưỡng Ch2004, HOÀNG MINH S ương 1: Mởđầu 34 © 2005 - HMS ©
  35. Chu trình cổ ₫iển: “Waterfall Model” NghiênNghiên ccứứuu khkhảảthithi PhânPhân tíchtích yêuyêu ccầầuu ThiThiếếtt kkếế MãMã hóa hóa ThThửửnghinghiệệmm đơđơnn vvịị ThThửửnghinghiệệmm tíchtích h hợợpp ĐĐàoào t tạạoo N Ơ ChuyChuyểểnn giao giao BBảảotrìotrì Ch2004, HOÀNG MINH S ương 1: Mởđầu 35 © 2005 - HMS ©
  36. Xu thế hiện nay: Song song và lặp N Ơ Ch2004, HOÀNG MINH S ương 1: Mởđầu 36 © 2005 - HMS ©
  37. Lập trình là gì, nằm ở₫âu? Lập trình > Mã hóa Lập trình ≈ Tư tưởng thiếtkế +Mãhóa +Thử nghiệm + Gỡ rối N Ơ Ch2004, HOÀNG MINH S ương 1: Mởđầu 37 © 2005 - HMS ©
  38. Các bước phát triển chương trình Mã nguồn Biên dịch Mã đích Liên kết Thư viện N Ơ CT chạy được Nạp và chạy Ch2004, HOÀNG MINH S ương 1: Mởđầu 38 © 2005 - HMS ©
  39. Môi trường/công cụ phát triển IDE (Integrated Development Environment) —Hỗ trợ toàn bộ các bước phát triển chương trình —Vídụ: MS Visual C++, Borland C++ (Builder), Keil-C Các công cụ tiêu biểu —Trình soạn thảo (Editor) —Trình biên dịch (Compiler) — Trình liên kết (Linker) —Trình nạp (Loader) —Trình gỡ rối (Debugger) N —Trình quản lý dự án (Project Manager) Ơ Ch2004, HOÀNG MINH S ương 1: Mởđầu 39 © 2005 - HMS ©
  40. Môi trường phát triển N Ơ Ch2004, HOÀNG MINH S ương 1: Mởđầu © 2005 - HMS ©
  41. 1.5 Sơ lược về C/C++ Lược sử ngôn ngữ C Tiến hóa từ hai ngôn ngữ lập trình — BCPL và B: Các ngôn ngữ “phi kiểu” Dennis Ritchie (Bell Laboratories, AT&T) —Bổ sung kiểu hóa dữ liệu và các yếu tố khác Ngôn ngữ phát triển hệ ₫iều hành UNIX Không phụ thuộc phần cứng —Tính khả chuyển N Ơ 1989: ANSI chuẩn hóa (ANSI-C) 1990: Công bố chuẩn ANSI và ISO — ANSI/ISO 9899: 1990 Ch2004, HOÀNG MINH S ương 1: Mởđầu 41 © 2005 - HMS ©
  42. Lược sử ngôn ngữ C++ Mở rộng, tiến hóa từ C Bjarne Stroustrup (Bell Laboratories) — Đầu những năm 1980: “C with classes” — 1984: Tên C++ — 1987: “The C++ Programming Language” 1st Edition — 1997: “The C++ Programming Language” 3rd Edition —Chuẩn hóa quốc tế: ANSI/ISO 1996 Bổ sung các ₫ặc tính hỗ trợ: —Lập trình hướng ₫ối tượng N Ơ —Lập trình tổng quát —Lập trình toán học, Ngôn ngữ “lai” Ch2004, HOÀNG MINH S ương 1: Mởđầu 42 © 2005 - HMS ©
  43. Tạisao chọnC/C++ Đáp ứng các yêu cầu: —Gầngũivớiphầncứng —Hiệu suất cao —Tương ₫ối thân thiện vớingườilập trình —Khả chuyển —Chuẩn hóa quốc tế (tương lai vững chắc) Thế mạnh tuyệt ₫ối của ANSI-C: —Phổ biến cho hầu hết các nền vi xử lý, vi ₫iều khiển, DSP —Phổ biến cho “mỗi người lập trình” trên thế giới N Ơ Thế mạnh tuyệt ₫ối của ANSI/ISO C++: —Lập trình hướng ₫ối tượng —Lập trình tổng quát (template) —Lập trình toán học (dữ liệutrừutượng và nạp chồng toán tử) Ch2004, HOÀNG MINH S ương 1: Mởđầu 43 © 2005 - HMS ©
  44. Visual C++, .NET & C# Visual C++: —Môi trường/công cụ lập trình C++ của Microsoft —Mở rộng một số yếu tố —Thư viện lập trình Windows: Microsoft Foundation Classes (MFC), Active Template Library (ATL) —Các thư viện chung: GUI, graphics, networking, multithreading, .NET (“dot net”) —Kiến trúc nền tảng phần mềm lập trình phân tán —Hướng tới các ứng dụng Web, phân tán trên nhiều chủng N Ơ loại thiết bị khác nhau —Các ứng dụng trên nhiều ngôn ngữ khác nhau có thể giao tiếp một cách ₫ơn giản trên một nền chung —Phương pháp luận: Lập trình thành phần Ch2004, HOÀNG MINH S ương 1: Mởđầu 44 © 2005 - HMS ©
  45. Visual C++, .NET & C# C# — Anders Hejlsberg và Scott Wiltamuth (Microsoft) —Thiết kế riêng cho nền.NET —Nguồn gốc từ C, C++ và Java — Điều khiển theo sự kiện, hoàn toàn hướng ₫ối tượng, ngôn ngữ lập trình hiển thị — Integrated Development Environment (IDE) —Tương tác giữa các ngôn ngữ N Ơ Ch2004, HOÀNG MINH S ương 1: Mởđầu 45 © 2005 - HMS ©
  46. Chúng ta ₫ãhọc ₫ượcnhững gì? Biết ₫ược những gì sẽ phải học, học ₫ể làm gì và phải học như thế nào Hàng loạt khái niệm mới xung quanh kỹ thuật lập trình và qui trình công nghệ phần mềm Tổng quan về các kỹ thuật lập trình Lược sử ngôn ngữ C/C++, thế mạnh của chúng so N với các ngôn ngữ khác Ơ Ch2004, HOÀNG MINH S ương 1: Mởđầu 46 © 2005 - HMS ©
  47. Chủ ₫ề tiếp theo: C/C++ cơ sở Tổ chức chương trình/bộ nhớ Dữ liệu và biến Toán tử, biểu thức và câu lệnh Điều khiển chương trình: vòng lặp, rẽ nhánh Mảng và con trỏ Cấu trúc N Ơ Ch2004, HOÀNG MINH S ương 1: Mởđầu 47 © 2005 - HMS ©