Bài giảng Lập trình nâng cao - Chương 1: Giới thiệu về C++
• Chương trình đầu tiên HelloWorld.cpp • Ra vào dữ liệu đơn giản • Biến, hằng, và kiểu dữ liệu • Phép toán • Các lệnh rẽ nhánh điều kiện • Các lệnh lặp
Bạn đang xem trước 20 trang tài liệu Bài giảng Lập trình nâng cao - Chương 1: Giới thiệu về C++, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Lập trình nâng cao
Giới thiệu về C++
Outline
• Chương trình đầu tiên HelloWorld.cpp
• Ra vào dữ liệu đơn giản
• Biến, hằng, và kiểu dữ liệu
• Phép toán
• Các lệnh rẽ nhánh điều kiện
• Các lệnh lặp
Giới thiệu C++ 2
Hello World!
Chú thích
bắt đầu
bằng //
Tiền xử lý #include yêu cầu
nạp nội dung file thư viện
iostream trước khi dịch
Hàm int main() là phần code sẽ được
thực thi khi chương trình chạy
Cặp ngoặc { } đánh
dấu đầu và cuối một
khối lệnh - block
cout << là cách ghi
một đoạn text ra màn hình
std là không gian tên (namespace) của thư viện chuẩn
std::cout có nghĩa là cout thuộc không gian tên std
return 0 hàm ý chương trình kết thúc thành công
3Giới thiệu C++
Variable – Biến
Biến: một vùng nhớ được đặt tên
khai báo biến x thuộc kiểu int
Khởi tạo giá trị cho x. Có thể thay hai dòng 5,6
bằng một dòng với nội dung: int x = 4 + 2;
Với khai báo namespace, sẽ không phải
viết std:: mà chỉ cần viết cout là đủ hiểu
Nối các phép toán << để in một chuỗi giá trị.
4Giới thiệu C++
Data types – các kiểu dữ liệu
Kế thừa từ C
• char
• short, int, long
• float, double, long double
Các kiểu khác
• bool true/false
• wchar_t ký tự, lưu bảng chữ cái quốc tế
5Giới thiệu C++
Standard input – Đọc dữ liệu từ bàn phím
• Gợi ý: mũi tên >>, << đi theo chiều của dữ liệu
Đọc từ bàn phím và ghi giá trị
đọc được vào biến x
6Giới thiệu C++
Hằng – khai báo bằng #define
Định nghĩa hằng không cần biến
trong bộ nhớ. Trước khi dịch, bộ
tiền xử lý sẽ thay thế tất cả các
chuỗi kí tự PI trong code bằng
chuỗi 3.14159
7Giới thiệu C++
Hằng – khai báo bằng const
• Một biến được định nghĩa kèm từ khóa const
là biến có giá trị không thể thay đổi.
8Giới thiệu C++
Các phép toán cơ bản
• phép gán – assignation (=)
x = 5; //x: lvalue, 5: rvalue
– là biểu thức có giá trị là giá trị được gán
• các phép toán số học - Arithmetic operators
(+, -, *, /, %)
• các phép gán kép - Compound assignation operators
(+=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |=)
• phép tăng và phép giảm (++, --)
Giới thiệu C++ 9
Các phép toán cơ bản
• các phép quan hệ - relational operators
( ==, !=, >, =, <= )
• các phép toán logic - Logic operators ( !, &&, || )
• phép điều kiện - Conditional operator ( ? ).
(7 == 5 ? 4 : 3) cho kết quả 3 do 7 khác 5.
• các toán tử bit - Bitwise Operators
( &, |, ^, ~, > ).
Giới thiệu C++ 10
Các phép gán tắt
• Các biểu thức gán tắt - Assignment expression
abbreviations
– Phép gán cộng
c = c + 3; viết tắt thành c += 3;
• Các lệnh có dạng
variable = variable operator expression;
có thể được viết lại thành
variable operator= expression;
• Các phép gán khác
d -= 4 (d = d - 4)
e *= 5 (e = e * 5)
f /= 3 (f = f / 3)
g %= 9 (g = g % 9)
Giới thiệu C++ 11
Increment (++) và Decrement (--)
• a++ và ++a là viết tắt của a = a + 1 với cảnh
báo:
++a tăng a, sau đó trả về giá trị của a
a++ trả về giá trị hiện tại của a, sau đó tăng a
--a giảm a, sau đó trả về giá trị của a
a-- trả về giá trị hiện tại của a, sau đó giảm a
12Giới thiệu C++
1 // Fig. 2.14: fig02_14.cpp
2 // Preincrementing and postincrementing.
3 #include
4
5 using std::cout;
6 using std::endl;
7
8 // function main begins program execution
9 int main()
10 {
11 int c; // declare variable
12
13 // demonstrate postincrement
14 c = 5; // assign 5 to c
15 cout << c << endl; // print 5
16 cout << c++ << endl; // print 5 then postincrement
17 cout << c << endl << endl; // print 6
18
19 // demonstrate preincrement
20 c = 5; // assign 5 to c
21 cout << c << endl; // print 5
22 cout << ++c << endl; // preincrement then print 6
23 cout << c << endl; // print 6
24
25 return 0; // indicate successful termination
26
27 } // end function main
5
5
6
5
6
6
Casting – Đổi kiểu giá trị
Bắt buộc đổi tường minh từ float sang int
Trình biên dịch ngầm đổi kiểu
14Giới thiệu C++
Các phép toán và độ ưu tiên
15Giới thiệu C++
if và phép toán ba ngôi ? :
Tương đương với
16Giới thiệu C++
17
Các phép toán logic
• ! (logical NOT – phủ định logic)
– trả về giá trị true khi điều kiện là false, và
ngược lại
if ( !( grade == ‘F’ ) )
cout << "Congratulation, you’ve passed!" << endl;
tương đương với:
if ( grade != ‘F’ )
cout << "Congratulation, you’ve passed!" << endl;
18
Nhầm lẫn giữa
phép so sánh bằng (==) và phép gán (=)
• Lỗi thường gặp
– Thường không tạo lỗi cú pháp (syntax error)
• Các khía cạnh của vấn đề
– biểu thức có giá trị có thể được dùng làm điều
kiện
• bằng không = false, khác không = true
– Các lệnh gán cũng tạo giá trị (giá trị được gán)
19
Nhầm lẫn giữa
phép so sánh bằng (==) và phép gán (=)
• Ví dụ
if (grade == ‘F’)
cout << "You’ve failed!" << endl;
– Nếu điểm (grade) là F thì trượt
• Nếu == bị thay bởi =
if (grade = ‘F’)
cout << "You’ve failed!" << endl;
– grade được gán giá trị ‘F’ (không cần biết giá trị cũ của
grade)
– lệnh gán trả về true (vì ‘F’ khác 0)
– trường hợp nào cũng trượt
20
Nhầm lẫn giữa
phép so sánh bằng (==) và phép gán (=)
• Lvalue
– là biểu thức có thể xuất hiện tại vế trái của phép gán
– xác định một vùng nhớ có thể được gán trị (i.e, các
biến)
• x = 4;
• Rvalue
– chỉ xuất hiện bên phải phép gán
– hằng, các giá trị (literal)
• không thể viết 4 = x;
• Lvalue có thể được dùng như các rvalue, nhưng
chiều ngược lại là không thể
21
Nhầm lẫn giữa
phép so sánh bằng (==) và phép gán (=)
Lời khuyên: nên viết
‘F’ == grade
thay vì
grade == ‘F’
Lí do: trình biên dịch sẽ phát hiện nếu bạn nhầm
thành ‘F’ = grade