.c
om
ng
th
an
co
Ngơn ngữ lập trình C++
cu
u
du
o
ng
Chương 2 – Các kiểu dữ liệu cơ bản
Các cấu trúc điều khiển
CuuDuongThanCong.com
/>
Tài liệu đọc thêm
.c
om
• Tài liệu đọc thêm cho chương này:
cu
u
du
o
ng
th
an
co
ng
– Section 2.1. Complete C++ Language Tutorial (CCLT)
– Day 7. Teach Yourself C++ in 21 Days (TY21)
– Namespace (Sec.5-2.CCLT) (Không bắt buộc)
CuuDuongThanCong.com
/>
Chương 2 – Kiểu dữ liệu và phép toán cơ bản
Cấu trúc điều khiển và cấu trúc chương trình
.c
om
Đề mục
Các kiểu dữ liệu cơ bản
2.2
Các phép gán tắt, phép tăng, phép giảm
2.3
Các phép toán logic
2.4
Thuật toán, mã giả, điều khiển của chương trình, sơ đồ khối
2.5
Sơ lược về các cấu trúc điều khiển
2.6
Cấu trúc lựa chọn if, if/else
2.7
Phép toán lựa chọn 3 ngơi
2.8
Cấu trúc lặp while
2.9
Thiết lập thuật tốn
2.10
Điều khiển lặp bằng con đếm và giá trị canh
cu
u
du
o
ng
th
an
co
ng
2.1
CuuDuongThanCong.com
/>
Chương 2 – Kiểu dữ liệu và phép toán cơ bản
Cấu trúc điều khiển và cấu trúc chương trình
.c
om
Đề mục (tiếp theo)
Các cấu trúc lồng nhau
2.12
Vòng lặp for
2.13
Cấu trúc đa lựa chọn switch
2.14
Vòng lặp do/while
2.15
break và continue
2.16
Sơ lược về lập trình cấu trúc
cu
u
du
o
ng
th
an
co
ng
2.11
CuuDuongThanCong.com
/>
2.1 Các kiểu dữ liệu cơ bản
cu
u
du
o
ng
th
an
co
ng
.c
om
char
ký tự hoặc số nguyên 8 bit
short
số nguyên 16 bit
long
số nguyên 32 bit
int
số nguyên độ dài bằng 1 word (16 bit
hoặc 32 bit)
float
số chấm động 4 byte
double
số chấm động 8 byte
long double số chấm động 10 byte
bool
giá trị Boolean, true hoặc false
wchar_t
ký tự 2 byte, lưu bảng chữ cái quốc tế
CuuDuongThanCong.com
/>
2.2 Các phép tốn cơ bản
x = 5;
.c
om
• phép gán – assignation (=)
//x: lvalue, 5: rvalue
ng
– là biểu thức có giá trị là giá trị được gán
cu
u
du
o
ng
th
an
co
• các phép tố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 (++, --)
CuuDuongThanCong.com
/>
2.2 Các phép tốn cơ bản
an
co
ng
.c
om
• 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 ( ? ).
th
(7 == 5 ? 4 : 3) cho kết quả 3 do 7 khác 5.
cu
u
du
o
ng
• các tốn tử bit - Bitwise Operators
( &, |, ^, ~, <<, >> ).
CuuDuongThanCong.com
/>
2.2 Các phép gán tắt
.c
om
• Các biểu thức gán tắt - Assignment expression
abbreviations
ng
– Phép gán cộng
co
c = c + 3; viết tắt thành c += 3;
an
• Các lệnh có dạng
th
variable = variable operator expression;
ng
có thể được viết lại thành
du
o
variable operator= expression;
• Các phép gán khác
4
5
3
9
u
-=
*=
/=
%=
cu
d
e
f
g
CuuDuongThanCong.com
(d
(e
(f
(g
=
=
=
=
d
e
f
g
*
/
%
4)
5)
3)
9)
/>
• Phép tăng - Increment operator (++)
– có thể được dùng thay cho c += 1
co
– có thể được dùng thay cho c -= 1
ng
• Phép giảm - Decrement operator (--)
.c
om
2.2 Các phép tăng và giảm
an
• Tăng/giảm trước – Preincrement/Predecrement
th
• ++c hoặc --c
du
o
ng
• Giá trị của biến bị thay đổi, sau đó biểu thức chứa nó được tính giá trị.
• Biểu thức có giá trị là giá trị của biến sau khi tăng/giảm
• Tăng/giảm sau - Postincrement/Predecrement
cu
u
• c++ hoặc c--
• Biểu thức chứa biến được thực hiện, sau đó biến được thay đổi.
• Biểu thức có giá trị là giá trị của biến trước khi tăng/giảm
CuuDuongThanCong.com
/>
2.2 Các phép tăng và giảm
.c
om
• Ví dụ: nếu c = 5
– cout << ++c;
• c nhận giá trị 6, rồi được in ra
ng
– cout << c++;
th
an
co
• in giá trị 5 (cout được chạy trước phép tăng).
• sau đó, c nhận giá trị 6
ng
• Khi biến khơng nằm trong biểu thức
du
o
– Tăng trước và tăng sau có kết quả như nhau
cu
và
u
++c;
cout << c;
c++;
cout << c;
là như nhau
CuuDuongThanCong.com
/>
// Fig. 2.14: fig02_14.cpp
// Preincrementing and postincrementing.
#include <iostream>
using std::cout;
using std::endl;
an
th
assign 5 to c
print 5
print 5 then postincrement
print 6
5
5
6
5
6
6
du
o
ng
// demonstrate postincrement
c = 5;
//
cout << c << endl;
//
cout << c++ << endl;
//
cout << c << endl << endl; //
co
ng
// function main begins program execution
int main()
{
int c;
// declare variable
.c
om
fig02_14.cpp
(1 of 2)
u
// demonstrate preincrement
c = 5;
//
cout << c << endl;
//
cout << ++c << endl;
//
cout << c << endl;
//
cu
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
return 0;
assign 5 to c
print 5
preincrement then print 6
print 6
// indicate successful termination
} // end function main
CuuDuongThanCong.com
/>
2.3 Các phép tốn logic
ng
.c
om
• được dùng làm điều kiện trong các vịng lặp và
lệnh if
• && (logical AND)
co
– true nếu cả hai điều kiện là true
du
o
• || (logical OR)
ng
th
an
if ( gender == 1 && age >= 65 )
++seniorFemales;
– true nếu ít nhất một trong hai điều kiện là true
cu
u
if ( semesterAverage >= 90 || finalExam >= 90 )
cout << "Student grade is A" << endl;
CuuDuongThanCong.com
/>
2.3 Các phép tốn logic
.c
om
• ! (logical NOT, phủ định logic – logical negation)
– trả về giá trị true khi điều kiện là false, và ngược lại
co
ng
if ( !( grade == sentinelValue ) )
cout << "The next grade is " << grade << endl;
an
tương đương với:
cu
u
du
o
ng
th
if ( grade != sentinelValue )
cout << "The next grade is " << grade << endl;
CuuDuongThanCong.com
/>
Nhầm lẫn giữa
phép so sánh bằng (==) và phép gán (=)
.c
om
• Lỗi thường gặp
• Các khía cạnh của vấn đề
ng
– Thường không tạo lỗi cú pháp (syntax error)
co
– biểu thức có giá trị có thể được dùng làm điều kiện
an
• bằng không = false, khác không = true
cu
u
du
o
ng
th
– Các lệnh gán cũng tạo giá trị (giá trị được gán)
CuuDuongThanCong.com
/>
Nhầm lẫn giữa
phép so sánh bằng (==) và phép gán (=)
.c
om
• Ví dụ
ng
if ( 4 == payCode )
cout << "You get a bonus!" << endl;
th
• Nếu == bị thay bởi =
an
co
– Nếu mã tiền lương (paycode) là 4 thì thưởng
du
o
ng
if ( payCode = 4 )
cout << "You get a bonus!" << endl;
cu
u
– Paycode được gán giá trị 4 (không cần biết giá trị của
paycode trước đó)
– lệnh gán cho giá trị true (vì 4 khác 0)
– trường hợp nào cũng được thưởng
CuuDuongThanCong.com
/>
Nhầm lẫn giữa
phép so sánh bằng (==) và phép gán (=)
.c
om
• Lvalue
ng
– 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)
co
• x = 4;
an
• Rvalue
du
o
ng
th
– 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;
cu
u
• Lvalue có thể được dùng như các rvalue, nhưng
chiều ngược lại là không thể
CuuDuongThanCong.com
/>
• Trước khi viết chương trình
ng
– Hiểu kỹ bài tốn
– Lập kế hoạch giải quyết bài tốn
.c
om
Viết chương trình
co
• Trong khi viết chương trình
cu
u
du
o
ng
th
an
– Biết lời giải có sẵn cho các bài toán con
– Sử dụng các nguyên lý lập trình tốt
CuuDuongThanCong.com
/>
Thuật tốn - Algorithm
.c
om
• Các bài tốn tin học
ng
– được giải bằng cách thực hiện một chuỗi hành động theo
một thứ tự cụ thể
co
• Thuật tốn: một quy trình quyết định
du
o
ng
th
an
– Các hành động cần thực hiện
– Thứ tự thực hiện
– Ví dụ: cách nấu một món ăn
• Điều khiển của chương trình – Program Control
cu
u
– Chỉ ra thứ tự thực hiện các lệnh
CuuDuongThanCong.com
/>
Mã giả - Pseudocode
ng
– tương tự với ngôn ngữ hàng ngày
.c
om
• Mã giả: ngơn ngữ khơng chính thức được dùng để
mơ tả thuật tốn
co
• Khơng chạy được trên máy tính
th
an
– dùng để mơ tả chương trình trước khi viết chương trình
ng
• dễ chuyển thành chương trình C++
du
o
– chỉ gồm các lệnh chạy
Ví dụ:
tìm số nhỏ hơn trong hai số
cu
u
• khơng cần khai báo biến
CuuDuongThanCong.com
1.
nhập 2 số x,y
2.
nếu x>y thì in y ra màn hình
3.
nếu khơng, in x ra màn hình
/>
Các cấu trúc điều khiển - Control Structures
Khái niệm
.c
om
• Thực thi tuần tự - Sequential execution
– Các lệnh được thực hiện theo thứ tự tuần tự
ng
• Chuyển điều khiển - Transfer of control
ng
th
• 3 cấu trúc điều khiển
an
co
– Lệnh tiếp theo được thực thi không phải lệnh tiếp theo trong
chuỗi lệnh.
du
o
– Cấu trúc tuần tự - Sequence structure
• theo mặc định, chương trình chạy tuần tự từng lệnh
cu
u
– Các cấu trúc chọn lựa - Selection structures
• if, if/else, switch
– Các cấu trúc lặp - Repetition structures
• while, do/while, for
CuuDuongThanCong.com
/>
Các cấu trúc điều khiển
.c
om
• Các từ khóa của C++
– Không thể dùng làm tên biến hoặc tên hàm
ng
C + + K e y w o rd s
co
K e y w o r d s c o m m o n to th e
C a n d C + + p r o g r a m m in g
la n g u a g e s
char
const
continue
default
do
double
else
enum
extern
float
for
goto
if
int
long
register
return
short
signed
sizeof
static
struct
union
unsigned
void
bool
catch
class
const_cast
dynamic_cast
explicit
false
friend
mutable
namespace
new
operator
private
protected
public
reinterpret_cast
static_cast
template
this
throw
true
try
typeid
typename
using
virtual
typedef
volatile
while
u
C + + o n ly k e y w o r d s
inline
cu
asm
delete
du
o
switch
an
case
th
break
ng
auto
wchar_t
CuuDuongThanCong.com
/>
Các cấu trúc điều khiển
true
print “Passed”
.c
om
grade >= 60
ng
false
co
• Sơ đồ khối - Flowchart
ng
th
an
– mơ tả thuật tốn bằng hình vẽ
– gồm các ký hiệu đặc biệt được nối bằng các mũi tên
(flowlines)
– Hình chữ nhật (ký hiệu hành động)
du
o
• kiểu hành động bất kỳ
– ký hiệu oval
cu
u
• Bắt đầu hoặc kết thúc một chương trình,
hoặc một đoạn mã (hình trịn)
• Các cấu trúc điều khiển có đúng 1 đầu vào, 1 đầu ra
– Kết nối đầu ra của một cấu trúc điều khiển với đầu vào của
cấu trúc tiếp theo
– xếp chồng các cấu trúc điều khiển
CuuDuongThanCong.com
/>
Cấu trúc lựa chọn if
.c
om
• Cấu trúc lựa chọn - Selection structure
ng
– chọn giữa các tuyến hành động khác nhau
– ví dụ bằng mã giả:
an
co
If student’s grade is greater than or equal to 60
Print “Passed”
th
– Nếu điều kiện thỏa mãn (có giá trị true)
ng
• lệnh Print được thực hiện, chương trình chạy tiếp lệnh tiếp theo
du
o
– Nếu điều kiện khơng thỏa mãn (có giá trị false)
• lệnh Print bị bỏ qua, chương trình chạy tiếp
cu
u
– Cách viết thụt đầu dịng làm chương trình dễ đọc hơn
• C++ bỏ qua các ký tự trắng (tab, space, etc.)
CuuDuongThanCong.com
/>
Cấu trúc lựa chọn if
.c
om
• Dịch sang C++
co
grade >= 60
true
print “Passed”
false
an
if ( grade >= 60 )
cout << "Passed";
ng
If student’s grade is greater than or equal to 60
Print “Passed”
th
• ký hiệu hình thoi (ký hiệu quyết định)
du
o
ng
– đánh đấu chọn lựa cần thực hiện
– chứa một biểu thức có giá trị true hoặc false
cu
• cấu trúc if
u
• kiểm tra điều kiện, đi theo đường thích hợp
– Single-entry/single-exit
Một biểu thức bất kỳ đều
có thể được sử dụng làm
điều kiện cho lựa chọn.
bằng 0 - false
khác 0 - true
Ví dụ:
3 - 4 có giá trị true
CuuDuongThanCong.com
/>
Cấu trúc chọn lựa if/else
.c
om
• if
– Thực hiện hành động nếu điều kiện thỏa mãn
ng
• if/else
an
co
– thực hiện những hành động khác nhau tùy theo điều kiện được
thỏa mãn hay khơng
th
• mã giả
cu
• mã C++
u
du
o
ng
if student’s grade is greater than or equal to 60
print “Passed”
else
print “Failed”
if ( grade >= 60 )
cout << "Passed";
else
cout << "Failed";
CuuDuongThanCong.com
/>