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óm tắt 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: ...ed; 2. valueProduced = 2 * (++ n); 3. cout << valueProduced << endl; 4. cout << n << endl; 11 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; (int...2 ? 16 ĐỘ 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 ĐỘ ƯU TIÊN CỦA TOÁN TỬ (1/4) 18 ĐỘ ƯU TIÊN CỦA TOÁN TỬ (2/4) 19 ĐỘ ƯU TIÊ... 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 ĐỊNH DẠNG GIÁ TRỊ IN RA  cout << "The price is $" << price << endl;  Nếu biến price có giá trị 78.5, màn hình sẽ hiển th...
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 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” 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 VÍ DỤ CHƯƠNG TRÌNH C++ (1/2) 4 VÍ DỤ CHƯƠNG TRÌNH C++ (2/2) 5 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 KIỂU DỮ LIỆU (1/2) 7 KIỂU DỮ LIỆU (2/2) 8 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 GÁN DỮ LIỆU: KÝ HIỆU VIẾT TẮT (1/2) 10 • 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 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 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 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 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 NAMED CONSTANT 15 ĐỘ 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 ĐỘ 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 ĐỘ ƯU TIÊN CỦA TOÁN TỬ (1/4) 18 ĐỘ ƯU TIÊN CỦA TOÁN TỬ (2/4) 19 ĐỘ ƯU TIÊN CỦA TOÁN TỬ (3/4) 20 ĐỘ ƯU TIÊN CỦA TOÁN TỬ (4/4) 21 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 É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 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 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 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 ĐỊNH DẠNG GIÁ TRỊ IN RA  cout << "The price is $" << price << endl;  Nếu biến price có giá trị 78.5, màn hình sẽ hiển thị: The price is $78.500000 hoặc The price is $78.5 Chỉ định kích thước phần thập phân: cout.precision(2); => The price is $78.50 27 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 INPUT SỬ DỤNG CIN  cin dùng để nhập dữ liệu cho các biến cout dùng để in dữ liệu ra  cin >> 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 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 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 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 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 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
File đính kèm:
 bai_giang_ngon_ngu_lap_trinh_bai_1_gioi_thieu_ve_c_le_nguyen.pdf bai_giang_ngon_ngu_lap_trinh_bai_1_gioi_thieu_ve_c_le_nguyen.pdf





