Giáo trình Kĩ thuật lập trình - Chương 1: Mở đầu

pdf 48 trang huongle 6520
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình 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:

  • pdfgiao_trinh_ki_thuat_lap_trinh_chuong_1_mo_dau.pdf

Nội dung text: Giáo trình Kĩ thuật lập trình - Chương 1: Mở đầu

  1. Kỹ thuật lập trình Chương 1: Mở₫ầu 010101010101010110000101010101010101011000010101010101010101100001 StateController010101010010101010010101010101001010101001010101010100101010100101 start() 101001100011001001001010100110001100100100101010011000110010010010 stop() 110010110010001000001011001011001000100000101100101100100010000010 010101010101010110000101010101010101011000010101010101010101100001 010101010010101010010101010101001010101001010101010100101010100101 101001100011001001001010100110001100100100101010011000110010010010y = A*x + B*u; 110010110010001000001011001011001000100000101100101100100010000010x = C*x + d*u; LQGController010101010101010110000101010101010101011000010101010101010101100001 start() 010101010010101010010101010101001010101001010101010100101010100101 stop() 101001100011001001001010100110001100100100101010011000110010010010 110010110010001000001011001011001000100000101100101100100010000010 8/13/2007
  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++ Chương 1: Mởđầu © AC - HUT 2
  3. 1.1 Nộidung môn học Các kỹ thuậtlập trình cơ bản, thựchiệnminhhoạ trên các ngôn ngữ lập trình C và C++: —Lậptrìnhcócấutrúc(structured programming) —Lậptrìnhhướng ₫ốitượng (object‐oriented programming) —Lậptrìnhthờigianthực(real‐time programming) —Lậptrìnhtổng quát (generic programming) Tạisaochọn C/C++: — Hai ngôn ngữ lậptrìnhtiêubiểunhất, ₫ủ ₫ể thựchiệncác kỹ thuậtlập trình quan trọng — Hai ngôn ngữ lập trình quan trọng nhất ₫ốivớikỹ sư ₫iện/kỹ sư₫iềukhiển Chương 1: Mởđầu © AC - HUT 3
  4. Quan ₫iểmvề môn học Đề cao kiếnthứccơ bản, nềntả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ấnmạnh tính chuyên nghiệp trong lập trình: hiệu quả + chấtlượng Những nộidung không có trong chương trình: —Lậptrìnhhệ thống (low-level system programming) —Lậptrình₫ồ họa —Lậptrìnhgiaotiếpvớicácthiếtbị ngoại vi ( cổng nốitiếp, song song ) —Lậptrìnhcơ sở dữ liệu —Lậptrìnhthànhphần, lập trình phân tán (mạng, Internet) Chương 1: Mởđầu © AC - HUT 4
  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épnhiềutrênlớp —Họcthuộclòng, họcchay —Mong₫ợinhiềuvàoôntập —Dựadẫm vào các bài tậpmẫutrongsách Chương 1: Mởđầu © AC - HUT 5
  6. Công cụ họctập Máy tính PC Môi trường lậptrì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. Chương 1: Mởđầu © AC - HUT 6
  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 ≠ Phương pháp phân tích & thiết kế (A&D) Chương 1: Mởđầu © AC - HUT 7
  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ừacủ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, 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! Chương 1: Mởđầu © AC - HUT 8
  9. Thế nào là lập trình tốt? Đúng/Chính xác —Thoả mãn ₫úng các nhiệm vụ bài toán lập trình ₫ặt ra, ₫ược khách hàng chấp nhận Ổn ₫ịnh và bền vững —Chương trình chạy ổn ₫ịnh trong cả những trường hợp khắc nghiệt —Chạy ít lỗi (số lượng lỗi ít, cường ₫ộ lỗi thấp) —Mức ₫ộ lỗi nhẹ có thể chấp nhận ₫ược Khả năng chỉnh sửa —Dễ dàng chỉnh sửa trong quá trình sử dụng và phát triển —Dễ dàng thay ₫ổi hoặc nâng cấp ₫ể thích ứng với ₫iều kiện bài toán lập trình thay ₫ổi Khả năng tái sử dụng —Cóthể ₫ược sử dụng hoặc ₫ược kế thừa cho các bài toán lập trình khác Chương 1: Mởđầu © AC - HUT 9
  10. Thế nào là lập trình tốt? Độ tương thích —Khả năng thích ứng và chạy tốt trong các ₫iều kiện môi trường khác nhau Hiệusuấ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, —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 Chương 1: Mởđầu © AC - HUT 10
  11. 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) int kq = 1; while (N > 1) ☺„to iterate is human, kq *= N ; to recurse is device!“ return kq; Chương 1: Mởđầu © AC - HUT 11
  12. 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) 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 © AC - HUT 12
  13. Các nguyên tắc cơ bản Trừutượng hóa Chắtlọcranhững yếutố quan trọng, bỏ qua những chi tiếtkémquantrọng Đóng gói Che giấuvàbảovệ các dữ liệuquantrọng qua mộtgiao diệncókiểmsoát Module hóa Chia nhỏ₫ốitượng/vấn ₫ề thành nhiềumodule nhỏ₫ểdễ can thiệpvàgiảiquyết Phân cấp Phân hạng hoặcsắpxếptrậttự₫ốitượng theo các quan hệ trên dưới Chương 1: Mởđầu © AC - HUT 13
  14. Nguyên tắc tốicao „Keep it simple: as simple as possible, but no simpler!“ (Albert Einstein) Chương 1: Mởđầu © AC - HUT 14
  15. 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 Lập trình phần mềm tối ưu hóa Chương 1: Mởđầu © AC - HUT 15
  16. 1.3 Phương pháp luận Phương pháp: Cách thứctiếnhànhmộtcôngviệc để có hiệuquả cao Phương pháp luận: Mộttậphợpcácphương pháp đượcsử dụng hoặcbộ môn khoa học nghiên cứucácphươ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 — Chương 1: Mởđầu © AC - HUT 16
  17. Lập trình tuần tự (Sequential Programming) Phương pháp cổ₫iểnnhất, bằng cách liệtkêcáclệnh kế tiếp, mứctrừutượng thấp Kiểmsoátdòngmạch thựchiệnchương trình bằng các lệnh rẽ nhánh, lệnh nhảy, lệnh gọichương trình con (subroutines) Ví dụ ngôn ngữ ₫ặc thù: —Ngônngữ máy, — ASSEMBLY — BASIC — IL (Instruction List), STL (Statement List) — LD, LAD (Ladder Diagram) Chương 1: Mởđầu © AC - HUT 17
  18. 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 8: RET Chương 1: Mởđầu © AC - HUT 18
  19. Lập trình tuần tự: Ưu ₫iểm và nhược ₫iểm Ưu ₫iểm: —Tư duy ₫ơn giản —Lậptrìnhở mứctrừutượng thấp, nên dễ kiểmsoátsử dụng tài nguyên —Cóthể có hiệusuấtcao —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ắclỗi —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 Chương 1: Mởđầu © AC - HUT 19
  20. Lập trình có cấu trúc (structured programming) Cấu trúc hóa dữ liệu(xâydựng kiểudữ 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ếtkế theo cách từ trên xuống (top‐ down) Thựchiệntừ dướilê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ấutrúc₫iềukhiểntuầntự, tuyểnchọn( if then else), lặp(while) và thoát ra (exit). Ví dụ các ngôn ngữ ₫ặc thù: — PASCAL, ALGO, FORTRAN, C, —SFC (Sequential Funtion Charts) —ST (Structured Text) Chương 1: Mởđầu © AC - HUT 20
  21. 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 Factorial := X; END END; Chương 1: Mởđầu © AC - HUT 21
  22. 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); void add(Students lop, Student sv); void delete(Students lop, Student sv); Student find(Students lop, int code); Chương 1: Mởđầu © AC - HUT 22
  23. Lập trình module (modular programming) Lập trình module là mộtdạng cải tiếncủalập trình có cấu trúc. Chương trình đượccấu trúc nghiêm ngặthơn, dùng đơn vị cấutrúclàmodule. Module: —Một ₫ơn vị cấutrúc₫ộclập, ₫ượcchuẩn hóa dùng ₫ể tạolập mộthệ thống. —Mỗi module bao gồm phần giao diện(mở) và phầnthựchiện (che giấu) — Các module giao tiếpvới nhau thông qua các giao diện ₫ược ₫ặctả rấtchínhxá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ếtkế năm 1977. Chương 1: Mởđầu © AC - HUT 23
  24. 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). Nguyên lý cơ bản: —Trừu tượng (abstraction) — Đó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, —ADA, Chương— 1: Mởđầu © AC - HUT 24
  25. 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 © AC - HUT 25
  26. 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; // đưa đầu ra y } CTFMatrix G = ss2tf(A,B,C,D); Chương 1: Mởđầu © AC - HUT 26
  27. 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: —Kiểu dữ liệu — Phép toán cơ bản —Cấu trúc dữ liệu —Quản lý bộ nhớ, Chương 1: Mởđầu © AC - HUT 27
  28. 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; TRational IntRational; TRational PolyRational; Chương 1: Mởđầu © AC - HUT 28
  29. 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 — Script, HMTL, XML, —FBD Chương 1: Mởđầu © AC - HUT 29
  30. 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 Đặc thù: —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, 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 Chương 1: Mởđầu © AC - HUT 30
  31. 1.4 Qui trình phát triển phầnmề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Ế PHÂN TÍCH THIẾT KẾ Thiếtkế Chương 1: Mởđầu © AC - HUT 31
  32. Tậphợp và phân tích yêu cầu Bởi vì: Khách hàng thường biết ₫ược là họ muốngì, nhưng không biết lập hoạch các yêu cầu Cho nên: Cầnphảicùng với khách hàng phân hoạch và làm rõ những yêu cầuvề phạm vi chứcnăng của bài toán Kếtquả: Mô hình ₫ặctả (Specification Model) ấn ₫ịnh và chỉ rõ yêu cầu của bài toán một cách tường minh theo một ngôn ngữ mô hình hóa rõ ràng, dễ hiểu ₫ể nhóm phân tích thiết kế lập trình thực hiện Trả lời câu hỏi: Khách hàng cần những gì và nên làm gì? Chương 1: Mởđầu © AC - HUT 32
  33. 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ầnquan 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ốiliên hệ giữacácthànhphầ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? Chương 1: Mởđầu © AC - HUT 33
  34. 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, 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? Chương 1: Mởđầu © AC - HUT 34
  35. 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 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 Chương 1: Mởđầu © AC - HUT 35
  36. 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óahóa ThThửửnghinghiệệmm đơđơnn vvịị ThThửửnghinghiệệmm tíchtíchhhợợpp ĐĐàoàottạạoo ChuChuyyểểngngiaiaoo BBảảototrrìì Chương 1: Mởđầu © AC - HUT 36
  37. Xu thế hiệnnay: Song song và lặp Chương 1: Mởđầu © AC - HUT 37
  38. 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 Chương 1: Mởđầu © AC - HUT 38
  39. Các bướcpháttriển chương trình Mã nguồn Biên dịch Mã đích Liên kết Thư viện CT chạy được Nạp và chạy Chương 1: Mởđầu © AC - HUT 39
  40. Môi trường/công cụ phát triển IDE (Integrated Development Environment) —Hỗ trợ toàn bộ các bướcpháttriểnchương trình —Vídụ: MS Visual C++, Borland C++ (Builder), Keil-C Các công cụ tiêu biểu —Trìnhsoạnthảo(Editor) —Trìnhbiêndịch (Compiler) —Trìnhliênkết(Linker) —Trìnhnạp(Loader) —Trìnhgỡ rối(Debugger) —Trìnhquảnlýdự án (Project Manager) Chương 1: Mởđầu © AC - HUT 40
  41. Môi trường phát triển Chương 1: Mởđầu © AC - HUT
  42. 1.5 Sơ lượcvề C/C++ Lượcsử ngôn ngữ C Tiến hóa từ hai ngôn ngữ lậptrình — BCPL và B: Các ngôn ngữ “phi kiểu” Dennis Ritchie (Bell Laboratories, AT&T) —Bổ sung kiểuhóadữ liệuvàcácyếutố khác Ngôn ngữ phát triểnhệ₫iềuhànhUNIX Không phụ thuộcphầncứng —Tínhkhả chuyển 1989: ANSI chuẩn hóa (ANSI-C) 1990: Công bố chuẩn ANSI và ISO — ANSI/ISO 9899: 1990 Chương 1: Mởđầu © AC - HUT 42
  43. Lượcsử ngôn ngữ C++ Mở rộng, tiến hóa từ C Bjarne Stroustrup (Bell Laboratories) — Đầunhữ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ẩnhóaquốctế: ANSI/ISO 1996 Bổ sung các ₫ặctínhhỗ trợ: —Lậptrìnhhướng ₫ốitượng —Lậptrìnhtổng quát —Lậptrìnhtoánhọc, Ngôn ngữ “lai” Chương 1: Mởđầu © AC - HUT 43
  44. 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 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ử) Chương 1: Mởđầu © AC - HUT 44
  45. Visual C++, .NET & C# Visual C++: —Môitrường/công cụ lập trình C++ củaMicrosoft —Mở rộng mộtsố yếutố —Thư việnlập trình Windows: Microsoft Foundation Classes (MFC), Active Template Library (ATL) —Cácthư viện chung: GUI, graphics, networking, multithreading, .NET (“dot net”) —Kiếntrúcnềntảng phầnmềmlập trình phân tán —Hướng tớicácứng dụng Web, phân tán trên nhiềuchủng loạithiếtbị khác nhau —Cácứng dụng trên nhiềungônngữ khác nhau có thể giao tiếpmộtcách₫ơngiảntrênmộtnền chung —Phương pháp luận: Lậptrìnhthànhphần Chương 1: Mởđầu © AC - HUT 45
  46. Visual C++, .NET & C# C# — Anders Hejlsberg và Scott Wiltamuth (Microsoft) —Thiếtkế riêng cho nền.NET —Nguồngốctừ C, C++ và Java — Điều khiểntheosự kiện, hoàn toàn hướng ₫ốitượng, ngôn ngữ lập trình hiểnthị — Integrated Development Environment (IDE) —Tương tác giữa các ngôn ngữ Chương 1: Mởđầu © AC - HUT 46
  47. Chúng ta ₫ãhọc ₫ượcnhững gì? Biết ₫ượcnhững gì sẽ phảihọc, học ₫ể làm gì và phảihọcnhư thế nào Hàng loạtkháiniệmmới xung quanh kỹ thuậtlập trình và qui trình công nghệ phầnmềm Tổng quan về các kỹ thuậtlậptrình Lượcsử ngôn ngữ C/C++, thế mạnh của chúng so với các ngôn ngữ khác Chương 1: Mởđầu © AC - HUT 47
  48. Chủ₫ềtiếptheo:C/C++ cơ sở Tổ chứcchương trình/bộ nhớ Dữ liệuvàbiến Toán tử, biểuthứcvàcâulệnh Điềukhiểnchương trình: vòng lặp, rẽ nhánh Mảng và con trỏ Cấutrúc Chương 1: Mởđầu © AC - HUT 48