Ngôn ngữ lập trình - Bài 1: Giới thiệu về C++

pdf 34 trang vanle 2900
Bạn đang xem 20 trang mẫu của tài liệu "Ngôn ngữ lập trình - Bài 1: Giới thiệu về C++", để 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:

  • pdfngon_ngu_lap_trinh_bai_1_gioi_thieu_ve_c.pdf

Nội dung text: Ngôn ngữ lập trình - Bài 1: Giới thiệu về C++

  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: thanhlnt@tlu.edu.vn 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 2 Bài giảng có sử dụng hình vẽ trong cuốn sách “Practical Debugging in C++, A. Ford and T. Teorey, Prentice Hall, 2002”
  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 9 Rvalue là rate * time
  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 10 giá trị mới này
  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; 16 Câu hỏi: Giá trị của var1/var2 ?
  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