Bài giảng Ngôn ngữ lập trình - Bài 1: Giới thiệu về C++ - Lê Nguyễn Tuấn Thành

pdf 34 trang ngocly 50
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Ngôn ngữ lập trình - Bài 1: Giới thiệu về C++ - Lê Nguyễn Tuấn Thành", để 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_ngon_ngu_lap_trinh_bai_1_gioi_thieu_ve_c_le_nguyen.pdf

Nội dung text: Bài giảng Ngôn ngữ lập trình - Bài 1: Giới thiệu về C++ - Lê Nguyễn Tuấn Thành

  1. Ngôn ngữ lập trình Bài 1: Giới thiệu về C++ Giảng viên: Lê Nguyễn Tuấn Thành Email: [email protected] Bộ Môn Công Nghệ Phần Mềm – Khoa CNTT Tr ường Đại Học Thủy Lợi
  2. Nội dung 1. Giới thiệu C++  Nguồn gốc, Thuật ngữ 2. Biến (variable), Literal, Hằng số (constant) 3. Biểu thức logic 4. Input/Output 5. Phong cách lập trình 6. Thư viện và Namespace Bài giảng có sử dụng hình vẽ trong cuốn sách “Absolute C++. W. Savitch, Addison Wesley, 2002” 2
  3. 1. Giới thiệu C++  Thế nào là Ngôn ngữ, Ngôn ngữ lập trình?  Nguồn gốc (Sự tiến hóa của ngôn ngữ lập trình)  Ngôn ngữ bậc thấp: Assembly  Ngôn ngữ bậc cao: C, C++, FORTRAN, COBOL,  Ngôn ngữ hướng đối tượng (Object-Oriented Programming): C++, Java,  Một số thuật ngữ trong C++  Chương trình (Program),  Hàm (Function),  Thư viện (Library)  Input/Output (IO) 3
  4. Ví dụ chương trình C++ (1/2) 4
  5. Ví dụ chương trình C++ (2/2) 5
  6. 2. Biến (variable) trong C++  Biến (variable) trong C++  Một vùng bộ nhớ để lưu trữ dữ liệu cho một chương trình  PHẢI KHAI BÁO tất cả dữ liệu trước khi sử dụng trong chương trình  Cách đặt tên biến trong C++  Từ khóa (keyword) hoặc từ dành riêng <> Tên biến  Tên biến phân biệt chữ hoa chữ thường  Tên biến nên là những tên có nghĩa (theo chuẩn)  Toán tử số học: +, -, *, /, %, ++, 6
  7. Kiểu dữ liệu (1/2) 7
  8. Kiểu dữ liệu (2/2) 8
  9. Gán dữ liệu cho biến  Khởi tạo dữ liệu bằng một câu khai báo  Nếu không khai báo, một biến sẽ có giá trị “undefined”!  int myVar = 0;  Gán dữ liệu trong lúc chạy  Lvalue (phía bên trái) & Rvalue (phía bên phải)  Lvalue phải là các biến  Rvalue có thể là bất kỳ biểu thức nào  Ví dụ: distance = rate * time; . Lvalue là distance . Rvalue là rate * time 9
  10. Gán dữ liệu: ký hiệu viết tắt (1/2) • Post-Increment: count ++ • Dùng giá trị hiện tại của biến trước, sau đó mới tăng giá trị thêm 1 • Pre-Increment: ++count • Tăng giá trị hiện tại của biến thêm 1 trước, sau đó mới dùng giá trị mới này 10
  11. Gán dữ liệu: ký hiệu viết tắt (2/2)  Câu hỏi 1: giá trị của valueProduced và n ? 1. int n = 2, valueProduced; 2. valueProduced = 2 * (n ++); 3. cout << valueProduced << endl; 4. cout << n << endl;  Câu hỏi 2: giá trị của valueProduced và n ? 1. int n = 2, valueProduced; 2. valueProduced = 2 * (++ n); 3. cout << valueProduced << endl; 4. cout << n << endl; 11
  12. Những quy tắc khi gán dữ liệu  Tính tương thích của dữ liệu  Quy tắc chung là không gán một kiểu dữ liệu cho một biến thuộc kiểu dữ liệu khác  intVar = 2.85; (intVar là một biến kiểu int) => giá trị 2 được gán cho biến intVar  Chỉ phần integer là phù hợp, vì thế nó được gán cho biến intVar  Được gọi là “gán dữ liệu ngầm (implicit)” hoặc “tự động chuyển đổi dữ liệu (automatic type conversion)” 12
  13. Chuỗi escape  Cấu trúc: \  Thông báo với trình biên dịch đó một chuỗi ký tự đặc biệt 13
  14. Literal & HẰNG SỐ (CONSTANT)  Literal  2, 5.85, “A”, “Hello World”  Không thay đổi trong chương trình  Hằng số kiểu literal cung cấp ít ý nghĩa. Ví dụ: số 24 không diễn đạt được thông tin gì  Hằng số được đặt tên (Named Constant hoặc Declared Constant) cung cấp ý nghĩa muốn diễn đạt. Ví dụ:  constant int NUMBER_OF_STUDENTS = 24; 14
  15. Named constant 15
  16. Độ chính xác trong phép tính (1/2)  RẤT QUAN TRỌNG. Biểu thức trong C++ có thể được tính toán không như bạn mong đợi  Toán hạng (operand) có thứ tự cao nhất sẽ quyết định độ chính xác (int, float ) được thực hiện  Ví dụ:  17 / 5 => 3  Cả hai toán hạng đều là số nguyên (integer) => Độ chính xác theo kiểu số nguyên được thực thi !  17.0 / 5 => 3.4  Toán hạng có thứ tự cao nhất là kiểu double (17.0) => Độ chính xác theo kiểu double được thực thi !  int var1 = 1; int var2 = 2;  Câu hỏi: Giá trị của var1/var2 ? 16
  17. Độ chính xác trong phép tính (2/2)  Phép tính được thực hiện từng bước từ trái qua phải  1 / 2 / 3.0 / 4 : Thực thi theo 3 bước 1. 1 / 2 => 0 2. 0 / 3.0 => 0.0 3. 0.0 / 4 => 0.0 17
  18. Độ ưu tiên của toán tử (1/4) 18
  19. Độ ưu tiên của toán tử (2/4) 19
  20. Độ ưu tiên của toán tử (3/4) 20
  21. Độ ưu tiên của toán tử (4/4) 21
  22. Ví dụ độ ưu tiên của toán tử  Toán tử số học có độ ưu tiên cao hơn toán tử logic  x + 1 > 2 || x + 1 2 || (x + 1) < -3  Số nguyên được sử dụng như các giá trị boolean  Giá trị khác 0: true  Giá trị 0: false 22
  23. Ép kiểu (Type casting)  Ép kiểu cho các biến  Có thể thêm “.0” vào các literal để ép buộc thay đổi độ chính xác, nhưng với các biến thì sao ?  static_cast intVar: ép hoặc chuyển đổi intVar sang kiểu double  Đây là các chuyển đổi kiểu giá trị tường minh (explicit)  Hai cách ép kiểu  Ép kiểu ngầm (implicit) hoặc tự động: ví dụ biểu thức 17 / 5.5 sẽ tự động chuyển 17 thành 17.0  Ép kiểu tường minh: (double) 17 / 5.5 23
  24. 3. Biểu thức logic  Toán tử logic trong C++ 1. Toán tử AND (&&) 2. Toán tử OR (||) 3. Toán tử NOT (!): phủ định  Toán tử quan hệ (so sánh) trong C++ 24
  25. Giá trị của biểu thức logic  Kiểu dữ liệu bool. Hai giá trị: true, false là các hằng số được định nghĩa trước 25
  26. 4. Input/Output  Đối tượng I/O: cin, cout, cerr  Thư viện #include using namespace std;  cout << numberOfGames << " games played."; sẽ in ra màn hình giá trị của biến numberOfGames và chuỗi ký tự " games played.“  In dòng mới:  Sử dụng chuỗi “\n” (newline): cout << "Hello World\n";  Sử dụng đối tượng endl: cout << "Hello World" << endl; 26
  27. Định dạng giá trị in ra  cout The price is $78.50 27
  28. Error output  Sử dụng đối tượng cerr  Tương tự như cout  Cung cấp cơ chế để phân biệt màn hình bình thường và màn hình lỗi  Chuyển hướng luồng in ra  Hầu hết các hệ thống cho phép cout và cerr được chuyển hướng sang các thiết bị khác (máy in, file, ) 28
  29. Input sử dụng cin  cin dùng để nhập dữ liệu cho các biến > var  Dấu nhắc trên màn hình đợi nhập dữ liệu vào  Giá trị nhập vào được gán cho biến var 29
  30. 5. Phong cách lập trình  Mục tiêu: tạo chương trình dễ đọc và thay đổi  Chú thích (comment) trong C++, có 2 cách: 1. // câu chú thích 2. /* đoạn chú thích */  Một vài quy ước đặt tên trong C++  Quy tắc: tên phải có ý nghĩa  Sử dụng CHỮ_HOA cho các hằng số (ví dụ: NUMBER_OF_STUDENTS)  Đặt tên biến theo định dạng lowerToUpper (ví dụ: numberStudent), có thể thêm kiểu dữ liệu vào đầu tên biến (ví dụ: iNumberStudent, fCount, ) 30
  31. 6. Thư viện  # include  C++ cung cấp sẵn rất nhiều thư viện: xử lý vào/ra (Input/Output), tính toán (math), chuỗi ký tự (string) 31
  32. Namespace  Namespace xác định một tập các tên được định nghĩa  Ví dụ: #include using namespace std;  Thay vì phải viết std::cin, chúng ta chỉ cần viết cin 32
  33. Tóm tắt  C++ là ngôn ngữ lập trình phân biệt chữ hoa, chữ thường  Nên đặt các tên (biến và hằng số) có ý nghĩa  Các biến phải được khai báo trước khi sử dụng, và nên được khởi tạo  Độ chính xác tính toán phụ thuộc toán hạng có thứ tự cao nhất  #include các thư viện khi cần thiết  Đối tượng cin, cout, cerr  Sử dụng các chú thích khi lập trình giúp chương trình dễ hiểu 33
  34. Giáo trình Tham khảo  Giáo trình chính: W. Savitch, Absolute C++, Addison Wesley, 2002  Tham khảo:  A. Ford and T. Teorey, Practical Debugging in C++, Prentice Hall, 2002  Nguyễn Thanh Thủy, Kĩ thuật lập trình C++, NXB Khoa học và Kĩ Thuật, 2006 34