Ngôn ngữ lập trình - Bài 1: Giới thiệu ngôn ngữ lập trình C++
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 ngôn ngữ lập trình 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:
- ngon_ngu_lap_trinh_bai_1_gioi_thieu_ngon_ngu_lap_trinh_c.pdf
Nội dung text: Ngôn ngữ lập trình - Bài 1: Giới thiệu ngôn ngữ lập trình C++
- NGÔN NGỮ LẬP TRÌNH Bài 1: Giới thiệu ngôn ngữ lập trình C++ Giảng viên: Lý Anh Tu ấn Email: tuanla@tlu.edu.vn
- Nội dung 1. Giới thiệu C++ ◦ Nguồn gốc, Lập trình hướng đối tượng, Các thuật ngữ 2. Biến, Biểu thức, Lệnh gán 3. Vào ra dữ liệu 4. Phong cách lập trình 5. Thư viện và Không gian tên 2
- Giới thiệu C++ Nguồn gốc C++ ◦ Ngôn ngữ bậc thấp: Mã máy, Assembly ◦ Ngôn ngữ bậc cao: C, C++, FORTRAN, COBOL ◦ Lập trình hướng đối tượng trong C++ Thuật ngữ C++ ◦ Chương trình (Program), Hàm (Function), Thư viện (Library) ◦ Vào ra cơ bản (IO) với cin/cout 3
- Chương trình C++ ví dụ (1/2) 4
- Chương trình C++ ví dụ (2/2) 5
- Biến trong C++ Định danh trong C++ ◦ Không trùng với từ khóa hoặc từ dành riêng ◦ Phân biệt chữ hoa, chữ thường ◦ Nên là tên có nghĩa Biến trong C++ ◦ Là một vùng bộ nhớ để lưu trữ dữ liệu cho một chương trình ◦ Phải được khai báo trước khi sử dụng trong chương trình 6
- Các kiểu dữ liệu (1/2) 7
- Các kiểu dữ liệu (2/2) 8
- Gán dữ liệu cho biến Khởi tạo dữ liệu trong câu lệnh khai báo ◦ Nếu chưa được khởi tạo, biến sẽ có giá trị “undefined”! int myVar = 0; Gán dữ liệu trong khi chạy chương trình ◦ Vế trái & Vế phải Vế trái phải là biến Vế phải có thể là bất kỳ biểu thức nào Ví dụ: distance = rate * time; Vế trái là distance Vế phải là rate * time 9
- Gán dữ liệu: Ký hiệu viết tắt (1/2) 10
- Những quy tắc gán dữ liệu Tính tương thích của gán dữ liệu ◦ Khác kiểu dữ liệu: Quy tắc: không gán giá trị thuộc một kiểu dữ liệu cho biến thuộc một kiểu dữ liệu khác ◦ intVar = 2.99; // 2 được gán cho intVar! Chỉ phần nguyên là hợp kiểu, vì thế chỉ nó được gán cho biến intVar Được gọi là “ép kiểu ngầm” hoặc “chuyển đổi dữ liệu tự động” ◦ 2, 5.75, “Z”, “Hello World” được xem là các hằng literal, không thể thay đổi giá trị khi chạy chương trình 11
- Chuỗi escape Cú pháp: \ Báo với trình biên dịch đây là một ký tự đặc biệt 12
- Chuỗi escape 13
- Hằng Đặt tên cho hằng ◦ Hằng literal ít mang ý nghĩa. VD: số 24 không cho biết nó diễn đạt thông tin gì Hằng được đặt tên cung cấp ý nghĩa nó muốn diễn đạt ◦ VD: const int NUMBER_OF_STUDENTS = 24; Là hằng được khai báo hay hằng được đặt tên Có thể sử dụng tên của hằng bất cứ chỗ nào trong chương trình 14
- Hằng được đặt tên 15
- Độ chính xác phép toán Biểu thức trong C++ có thể được tính toán không như bạn mong đợi Toán hạng bậc cao nhất sẽ quyết định kiểu độ chính xác phép toán được thực hiện Ví dụ: ◦ 17 / 5 trả về giá trị 3 Cả hai toán hạng là số nguyên Phép chia số nguyên được thực hiện! ◦ 17.0 / 5 trả về giá trị 3.4 Toán hạng bậc cao nhất có kiểu thực Phép chia độ chính xác số thực được thực hiện! ◦ int var1 = 1, var2 = 2; var1/var2 = ? 16
- Độ chính xác phép toán Các phép toán được thực hiện từng bước một ◦ 1 / 2 / 3.0 / 4 : Thực hiện 3 phép chia riêng rẽ đầu tiên 1 / 2 bằng 0 tiếp đó 0 / 3.0 bằng 0.0 tiếp đó 0.0 / 4 bằng 0.0 ! Sẽ là không đủ nếu chỉ thay đổi một toán tử trong một biểu thức lớn ◦ Phải lưu ý đến tất cả các phép toán riêng rẽ sẽ được thực hiện 17
- Ép kiểu Ép kiểu các biến ◦ Có thể thêm “.0” vào các literal để ép phép toán độ chính xác, nhưng với các biến thì sao ? static_cast intVar: ép kiểu tường minh hoặc chuyển intVar sang kiểu double ◦ VD: doubleVar=static_cast intVar1/intVar2; ◦ Ép thực hiện phép chia số thực giữa hai biến nguyên Hai cách ép kiểu ◦ Ép kiểu ngầm 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 hoặc (double)myInt/ myDouble 18
- Các toán tử viết tắt Các toán tử tăng giảm ◦ Toán tử tăng, ++ intVar++; tương đương với intVar = intVar + 1; ◦ Toán tử giảm, intVar ; tương đương với intVar = intVar – 1; ◦ Tăng hậu tố: intVar++ Sử dụng giá trị hiện tại của biến, sau đó tăng biến ◦ Tăng tiền tố: ++intVar Trước hết tăng biến, sau đó sử dụng giá trị mới 19
- Tăng hậu tố vs Tăng tiền tố VD 1: Giá trị của valueProduced và n ? int n = 2, valueProduced; valueProduced = 2 * (n ++); cout << valueProduced << endl; cout << n << endl; VD 2: Giá trị của valueProduced và n ? int n = 2, valueProduced; valueProduced = 2 * (++ n); cout << valueProduced << endl; cout << n << endl; 20
- Vào/ra dữ liệu Các đối tượng I/O: cin, cout, cerr Được định nghĩa trong thư viện Phải có các dòng này ở đầu chương trình #include using namespace std; Tất cả các kiểu dữ liệu đều có thể hiển thị trên màn hình: ◦ Biến, hằng, literal, biểu thức ◦ cout << numberOfGames << “ games played.”; sẽ xuất ra giá trị của biến numberOfGames và chuỗi ký tự “ games played.” 21
- Xuống dòng khi xuất dữ liệu Tạo dòng mới: ◦ Sử dụng chuỗi escape “\n” VD: cout << "Hello World\n"; ◦ Sử dụng đối tượng endl VD: cout << "Hello World" << endl; ◦ Hai ví dụ cho kết quả giống nhau 22
- Định dạng giá trị in ra Giá trị in ra có thể không như mong muốn. VD: 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 Quy định kích thước phần thập phân: ◦ cout.setf(ios::fixed); cout.setf(ios::showpoint); cout.precision(2); ◦ Lệnh cout ở VD trên cho kết quả là: The price is $78.50 23
- Xuất ra lỗi Sử dụng đối tượng cerr ◦ Làm việc tương tự như cout ◦ Cung cấp cơ chế để phân biệt giữa xuất dữ liệu thông thường và xuất ra lỗi Chuyển hướng luồng xuất 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. VD: máy in, file, 24
- Sử dụng đầu vào cin cin dùng để nhập dữ liệu, cout dùng để xuất dữ liệu Khác nhau: ◦ Toán tử “>>” hướng theo chiều ngược lại ◦ Tên là cin thay cho cout ◦ Chỉ được nhập dữ liệu cho biến cin >> num; ◦ Dừng màn hình đợi nhập dữ liệu vào ◦ Giá trị nhập vào được gán cho biến num 25
- Yêu cầu nhập giá trị Luôn luôn yêu cầu người dùng nhập giá trị cout > numOfDragons; Nếu không có “\n” trong cout con chạy đợi nhập dữ liệu ở trên cùng với lời nhắc Enter number of dragons: ___ Tất cả cin nên có lời nhắc cout 26
- Phong cách lập trình Mục tiêu: làm cho chương trình dễ đọc và thay đổi Chú thích trong C++, có 2 cách: 1. // cau chu thich cho mot dong 2. /* doan chu thich */ Quy ước đặt tên trong C++ ◦ Tên phải có ý nghĩa ◦ Tên hằng được viết toàn bộ VD: NUMBER_OF_STUDENTS ◦ Tên biến được viết theo cách lowerToUpper VD: numberStudent 27
- Thư viện Các thư viện chuẩn của C++ # include ◦ Khai báo này thêm nội dung của file thư viện vào chương trình của bạn C++ cung cấp sẵn rất nhiều thư viện: xử lý vào/ra, toán học, chuỗi ký tự, 28
- Không gian tên Không gian tên xác định một tập các tên được định nghĩa Hiện tại sử dụng không gian tên std ◦ Nó có tất cả các định nghĩa thư viện chuẩn chúng ta cần Ví dụ: #include using namespace std; Thay vì phải viết std::cin, chúng ta chỉ cần viết cin 29
- Tóm tắt C++ là 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 phép toán phụ thuộc toán hạng bậc cao nhất #include các thư viện chuẩn của C++ khi cần thiết Các đố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 30