tài liệu C++(10)

- 0 / 0
(Tài liệu chưa được thẩm định)
Nguồn:
Người gửi: Lê Văn Thuận (trang riêng)
Ngày gửi: 00h:23' 09-04-2024
Dung lượng: 3.2 MB
Số lượt tải: 60
Nguồn:
Người gửi: Lê Văn Thuận (trang riêng)
Ngày gửi: 00h:23' 09-04-2024
Dung lượng: 3.2 MB
Số lượt tải: 60
Số lượt thích:
0 người
1
Ngôn ngữ Lập trình C++
Chương I - Giới thiệu ngôn ngữ C++
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 1.
2
Nội dung chính
•
•
•
•
•
Mã máy, Hợp ngữ, và ngôn ngữ bậc cao
Một số ngôn ngữ lập trình bậc cao
Lịch sử C và C++
Hệ thống và môi trường lập trình C++
Giới thiệu về C++
–
–
–
–
–
ví dụ về chương trình C++ đơn giản
khái niệm biến
vào ra dữ liệu
các phép toán số học
ra quyết định - các phép toán quan hệ
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 1.
https://fb.com/tailieudientucntt
3
1.1 Mã máy, Hợp ngữ, và Ngôn ngữ bậc cao
1. Mã máy (machine language)
–
–
–
–
–
–
Là ngôn ngữ duy nhất máy tính trực tiếp hiểu được, là “ngôn
ngữ tự nhiên” của máy tính
Được định nghĩa bởi thiết kế phần cứng, phụ thuộc phần cứng
Gồm các chuỗi số, => chuỗi các số 0 và 1
Dùng để lệnh cho máy tính thực hiện các thao tác cơ bản, mỗi
lần một thao tác
Nặng nề, khó đọc đối với con người
Ví dụ:
+1300042774
+1400593419
+1200274027
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 1.
4
1.1 Mã máy, Hợp ngữ, và Ngôn ngữ bậc cao
2. Hợp ngữ (assembly)
–
–
–
Những từ viết tắt kiểu tiếng Anh, đại diện cho các thao tác
cơ bản của máy tính
Dễ hiểu hơn đối với con người
Máy tính không hiểu
•
–
Cần đến các chương trình dịch hợp ngữ (assembler) để
chuyển từ hợp ngữ sang mã máy
Ví dụ:
LOAD
BASEPAY
ADD
OVERPAY
STORE GROSSPAY
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 1.
https://fb.com/tailieudientucntt
5
1.1 Mã máy, Hợp ngữ, và Ngôn ngữ bậc cao
3. Các ngôn ngữ bậc cao (high-level languages)
–
–
–
Tương tự với tiếng Anh, sử dụng các ký hiện toán học thông dụng
Một lệnh thực hiện được một công việc mà hợp ngữ cần nhiều
lệnh để thực hiện được.
Ví dụ:
grossPay = basePay + overTimePay
–
–
Các chương trình dịch (compiler) để chuyển sang mã máy
Các chương trình thông dịch (interpreter program) trực tiếp chạy
các chương trình viết bằng ngôn ngữ bậc cao.
•
•
Chậm hơn
Thuận tiện khi đang phát triển chương trình
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 1.
6
1.2 Một số ngôn ngữ lập trình bậc cao
•
•
•
•
FORTRAN
– FORmula TRANslator (1954-1957: IBM)
– Tính toán toán học phức tạp, thường dùng trong các ứng dụng khoa học và kỹ
thuật
COBOL
– COmmon Business Oriented Language (1959)
– Thao tác chính xác và hiệu quả đối với các khối lượng dữ liệu lớn,
• Các ứng dụng thương mại
Pascal
– Tác giả: Niklaus Wirth
– Dùng trong trường học.
Java
– Tác giả: Sun Microsystems (1991)
– Ngôn ngữ điều khiển theo sự kiện (event-driven), hoàn toàn hướng đối tượng,
tính khả chuyển (portable) rất cao.
– Các trang Web với nội dung tương tác động
– Phát triển các ứng dụng quy mô lớn
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 1.
https://fb.com/tailieudientucntt
7
1.2 Một số ngôn ngữ lập trình bậc cao
• BASIC
– Beginner's All-Purpose Symbolic Instruction Code
– Từ giữa những năm1960
• Visual Basic
– GUI, xử lý sự kiện (event handling), sử dụng Win32 API, lập trình hướng
đối tượng (object-oriented programming), bắt lỗi (error handling)
• Visual C++
– C++ của Microsoft và mở rộng
• Thư viện của Microsoft (Microsoft Foundation Classes -MFC)
• Thư viện chung
– GUI, đồ họa, lập trình mạng, đa luồng (multithreading), …
– Dùng chung giữa Visual Basic, Visual C++, C#
• C#
– Bắt nguồn từ C, C++ và Java
– Ngôn ngữ điều khiển theo sự kiện (event-driven), hoàn toàn hướng đối
tượng, ngôn ngữ lập trình trực quan (visual programming language)
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 1.
8
1.3 Lịch sử ngôn ngữ C và C++
• C
–
–
–
–
–
Dennis Ritchie (Bell Laboratories)
Là ngôn ngữ phát triển của hệ điều hành UNIX
Độc lập phần cứng => có thể viết các chương trình khả chuyển
Chuẩn hóa năm 1990 – ANSI C
Kernighan & Ritchie “The C Programming Language”, 2nd, 1988
• C++
–
–
–
–
Là mở rộng của C
Đầu những năm 1980: Bjarne Stroustrup (phòng thí nghiệm Bell)
Cung cấp khả năng lập trình hướng đối tượng.
Ngôn ngữ lai
• Lập trình cấu trúc kiểu C
• Lập trình hướng đối tượng
• Cả hai
• Có cần biết C trước khi học C++?
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 1.
https://fb.com/tailieudientucntt
9
1.4 Hệ thống C++
– Môi trường phát triển chương trình (Program-development
environment)
– Ngôn ngữ
– Thư viện chuẩn (C++ Standard Library)
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 1.
10
1.4 Môi trường cơ bản cho lập trình C++
Các giai đoạn của
chương trình C++:
1. Soạn thảo - Edit
2. Tiền xử lý - Preprocess
3. Biên dịch - Compile
4. Liên kết - Link
Disk
Chương trình được viết
bằng chương trình soạn
thảo và lưu trên đĩa.
Preprocessor
Disk
Chương trình tiền xử lý
thực hiện xử lý mã nguồn
Compiler
Disk
Linker
Disk
Editor
Loader
Disk
5. Nạp - Load
Trình biên dịch tạo object
code và lưu trên đĩa.
Primary
Memory
Trình kết nối kết hợp
objectcode với các thư viện,
tạo file chạy được và lưu
lên đĩa
Trình nạp nạp
trình vào bộ nhớ
..
..
..
Primary
Memory
CPU
6. Chạy - Execute
..
..
..
CPU nhận từng lệnh, thực
thi lệnh đó, có thể lưu các
giá trị dữ liệu mới khi
chương trình chạy.
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
chương
Chương 1.
https://fb.com/tailieudientucntt
11
1.4 Môi trường cơ bản cho lập trình C++
• Soạn thảo
– File có kiểu mở rộng *.cpp, *cxx, *.cc, *.C
– Unix/Linux:
vi, emacs
– MS.Windows: các môi trường soạn thảo tích hợp: Devcpp, Microssoft Visual C++, Borland C++ Builder, …
• Chú ý mức độ hỗ trợ C++ chuẩn – ANSI/ISO C++
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 1.
12
Ví dụ 1: Hello World!
1
2
3
4
5
6
7
8
9
10
11
12
/* A first program in C++.
Print a line of text to standard output */
#include
hàm main trả về một giá trị kiểu số nguyên.
Chú thích
// function main begins program execution
int main()
Định hướng tiền xử lý (preprocessor directive) để khai
{
báo sử dụng thư viện ra/vào chuẩn.
std::cout << “Hello World!\n";
return 0;
// indicate that program ended successfully
Viết một dòng ra output
} // end function main
chuẩn (màn hình)
hàm main xuất hiện đúng
một lần trong mỗi chương
trình C++.
Ngoặc trái { bắt đầu thân hàm.
Hello World!
Tương ứng, ngoặc phải }
kết thúc thân hàm.
Các lệnh kết thúc bằng dấu
chấm phảy;
Từ khóa return là một cách
thoát khỏi hàm; giá trị 0 được
trả về có nghĩa chương trình
kết thúc thành công.
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 1.
https://fb.com/tailieudientucntt
13
1.5 Các thành phần cơ bản
Chú thích và định hướng tiền xử lý
• Chú thích - comment
// A first program in C++.
–
–
–
–
Làm tài liệu cho các chương trình
Làm chương trình dễ đọc dễ hiểu hơn
được trình biên dịch (compiler) bỏ qua
1 dòng chú thích bắt đầu với //
• Các định hướng tiền xử lý - directive
#include
– Được xử lý ngay trước khi biên dịch
– Bắt đầu bằng #
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 1.
14
Ví dụ 1 - mở rộng 1
1
2
3
// Fig. 1.4: fig01_04.cpp
// Printing a line with multiple statements.
#include
4
5
6
7
8
9
// function main begins program execution
int main()
{
std::cout << "Welcome ";
std::cout << "to C++!\n";
10
11
12
13
return 0;
fig01_04.cpp
Nhiều dòng lệnh tạo output
trên một dòng.
// indicate that program ended successfully
} // end function main
Welcome to C++!
©2004 Trần Minh Châu.
FOTECH. VNU.
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
15
Ví dụ 1 - mở rộng 2
1
2
3
// Fig. 1.5: fig01_05.cpp
// Printing multiple lines with a single statement
#include
4
5
6
7
8
// function main begins program execution Dùng ký tự dòng mới \n để in
trên nhiều dòng.
int main()
{
std::cout << "Welcome\nto\n\nC++!\n";
9
10
11
12
return 0;
// indicate that program ended successfully
} // end function main
Welcome
to
C++!
©2004 Trần Minh Châu.
FOTECH. VNU.
16
Ví dụ 2:
Chương trình tính tổng hai số nguyên
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Enter first integer
45
Enter second integer
72
Sum is 117
// Fig. 1.6: fig01_06.cpp
// Addition program.
#include
// function main begins program execution
int main()
Khai báo các biến nguyên.
{
int integer1; // first number to be input by user
int integer2; // second number to be input by user
Nhập
một
số nguyên
từ input
int sum;
// variable in which
sum
will
be stored
chuẩn,
ghi vào biến integer1
std::cout << "Enter first integer\n";
std::cin >> integer1;
// prompt
endl
// read an integer
cho kết quả là một dòng
trống.
std::cout << "Enter second integer\n"; // prompt
std::cin >> integer2;
integer
Tính toán có //
thểread
đượcan
thực
hiện trong
lệnh output: Thay cho các
dòng 18 và 20:
sum = integer1 + integer2; cout
// assign
result
<< "Sum
is " to
<< sum
integer1 + integer2 << endl;
std::cout << "Sum is " << sum << endl; // print sum
return 0;
// indicate that program ended successfully
} // end function main
CuuDuongThanCong.com
©2004 Trần Minh Châu.
FOTECH. VNU.
https://fb.com/tailieudientucntt
17
1.5 Các thành phần cơ bản
Biến chương trình
• Biến - variable: Một nơi trong bộ nhớ, có thể lưu các giá trị
thuộc một kiểu nào đó.
• Các kiểu dữ liệu cơ bản
•
•
•
•
int - số nguyên
char – ký tự
double - số chấm động
bool – các giá trị logic true hoặc false
• Các biến phải được khai báo tên và kiểu trước khi sử dụng
int integer1;
int integer2;
int sum;
• Có thể khai báo nhiều biến thuộc cùng một kiểu dữ liệu
trong một dòng khai báo biến.
int integer1, integer2, sum;
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 1.
18
1.5 Biến chương trình
• Quy tắc đặt tên biến
• Chuỗi ký tự (chữ cái a..z, A..Z, chữ số 0..9, dấu gạch dưới _ )
• Không được bắt đầu bằng chữ số
• Phân biệt chữ hoa chữ thường.
Ví dụ:
Tên biến hợp lệ: h678h_m2, _adh2, taxPayment…
Không hợp lệ: áadàn, so chia, 2n, …
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 1.
https://fb.com/tailieudientucntt
19
1.5 Biến chương trình
• Các khái niệm về bộ nhớ (memory)
–
–
–
–
Mỗi biến tương ứng với một khu trong bộ nhớ máy tính
Mỗi biến có tên, kiểu, kích thước, và giá trị
Khi biến được gán một giá trị mới, giá trị cũ bị ghi đè
Đọc giá trị của các biến trong bộ nhớ không làm thay đổi các
biến trong bộ nhớ.
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 1.
20
1.5 Biến chương trình
std::cin >> integer1;
integer1
45
integer1
45
integer2
72
integer1
45
integer2
72
– giả sử người dùng nhập 45
std::cin >> integer2;
– giả sử người dùng nhập 72
sum = integer1 + integer2;
sum
117
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 1.
https://fb.com/tailieudientucntt
21
1.6 Vào ra dữ liệu
Các đối tượng vào/ra cơ bản
• cin
• dòng dữ liệu vào chuẩn - Standard input stream
• thường là từ bàn phím
• cout
• dòng dữ liệu ra chuẩn - Standard output stream
• thường là màn hình máy tính
• cerr
• dòng báo lỗi chuẩn - Standard error stream
• hiện các thông báo lỗi
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 1.
22
1.6 Vào ra dữ liệu
In dòng văn bản ra màn hình
std::cout << "Enter first integer\n";
•
// prompt
Đối tượng ra chuẩn - Standard output stream object
– std::cout
– “nối” với màn hình
– <<
• toán tử chèn vào dòng dữ liệu ra – stream insert operator
• giá trị bên phải (right operand) được chèn vào dòng dữ liệu ra
•
Không gian tên - Namespace
– std:: có nghĩa là sử dụng tên thuộc “namespace” std
– std:: được bỏ qua nếu dùng các khai báo using
•
Escape characters
\
– đánh dấu các ký tự đặc biệt
• ví dụ \\, \', \n, \t
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 1.
https://fb.com/tailieudientucntt
23
1.6 Vào ra dữ liệu
Các chuỗi escape
Chuỗi Escape
Mô tả
\n
Dòng mới. Đặt con trỏ màn hình tại đầu
dòng tiếp theo.
Tab. Di chuyển con trỏ đến điểm dừng tab
tiếp theo.
Về đầu dòng. Chuyển con trỏ màn hình tới
đầu dòng hiện tại; không xuống dòng mới.
Chuông. Bật chuông hệ thống.
Chéo ngược. Dùng để in một đấu chéo
ngược.
Nháy kép. Dùng để in một dấu nháy kép.
\t
\r
\a
\\
\"
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 1.
24
1.6 Vào ra dữ liệu
Nhập dữ liệu từ thiết bị vào chuẩn
std::cin >> integer1;
// read an integer
• Đối tượng dòng dữ liệu vào - Input stream object
– >> (toán tử đọc từ dòng dữ liệu vào)
• được sử dụng với std::cin
• đợi người dùng nhập giá trị, rồi gõ phím Enter (Return)
• lưu giá trị vào biến ở bên phải toán tử
– đổi giá trị được nhập sang kiểu dữ liệu của biến
• = (toán tử
gán)
– gán giá trị cho biến
– toán tử hai ngôi - Binary operator
– Ví dụ:
sum = variable1 + variable2;
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 1.
https://fb.com/tailieudientucntt
25
1.7 Tính toán số học
• Các phép toán số học
Phép nhân
Phép chia
– *
– /
• Phép chia với số nguyên lấy thương là số nguyên và bỏ phần
dư
– 7 / 5 cho kết quả 1
• Phép chia với số thực cho kết quả là số thực
– 7.0 / 5.0 cho kết quả 1.4
Phép lấy số dư
– %
– 7 % 5 cho kết quả 2
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 1.
26
1.7 Tính toán số học
• Các quy tắc ưu tiên - Rules of operator precedence
– Các phép toán trong ngoặc được tính trước
• ngoặc lồng nhau
– các phép toán ở bên trong nhất được tính trước nhất
– tiếp theo là các phép nhân, chia, và phép lấy số dư
• các phép toán được tính từ trái sang phải
– cộng và trừ được tính cuối cùng
• các phép toán được tính từ trái sang phải
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 1.
https://fb.com/tailieudientucntt
27
1
2
3
4
// Fig. 1.14: fig01_14.cpp
// Using if statements, relational
// operators, and equality operators.
#include
5
6
7
8
using std::cout;
using std::cin;
using std::endl;
9
10
11
12
13
14
// function main begins program execution
int main()
Có thể viết cout và cin mà không cần tiền tố std::
{
int num1; // first number to lệnh
be read
from
if kiểm
tra user
xem các giá trị của
int num2; // second number tonum1
be read
fromcóuser
và num2
bằng nhau không.
// program uses cout
// program uses cin
// program uses endl
fig01_14.cpp
(1 of 2)
khai báo using để sau đó
không cần dùng tiền tố std::
Khai báo biến.
15
16
17
18
cout << "Enter two integers, and I will tell you\n"
<< "the relationships they satisfy: ";
cin >> num1 >> num2;
// read two integers
19
20
21
if ( num1 == num2 )
cout << num1 << " is equal to " << num2 << endl;
Nếu điều kiện là đúng (nghĩa
là hai giá trị bằng nhau) thì
thực hiện lệnh này.
lệnh if kiểm tra xem các giá trị của
num1 và num2 có khác nhau không.
Nếu điều kiện là đúng (nghĩa là hai giá trị
22
23
24
25
if ( num1 != num2 )
khác nhau) thì thực hiện lệnh này.
cout << num1 << " is not equal to " << num2 << endl;
26
27
if ( num1 < num2 )
cout << num1 << " is less than " << num2 << endl;
28
29
30
fig01_14.cpp
if ( num1 > num2 )
Một lệnh có(2
thểofđược
2) tách
cout << num1 << " is greater than " << num2 << endl;
31
32
33
34
if ( num1 <= num2 )
cout << num1 << " is less than or equal to "
<< num2 << endl;
35
36
37
38
if ( num1 >= num2 )
cout << num1 << " is greater than or equal to "
<< num2 << endl;
39
40
return 0;
41
42
©2004 Trần Minh Châu.
FOTECH. VNU.
28
thành nhiều dòng.
fig01_14.cpp
output (1 of 2)
// indicate that program ended successfully
} // end function main
Enter two integers, and I will tell you
the relationships they satisfy: 22 12
22 is not equal to 12
22 is greater than 12
22 is greater than or equal to 12
CuuDuongThanCong.com
©2004 Trần Minh Châu.
FOTECH. VNU.
https://fb.com/tailieudientucntt
29
Enter two integers, and I will tell you
the relationships they satisfy: 7 7
7 is equal to 7
7 is less than or equal to 7
7 is greater than or equal to 7
fig01_14.cpp
output (2 of 2)
©2004 Trần Minh Châu.
FOTECH. VNU.
30
1.8 Ra quyết định: Các phép toán quan hệ
Ký hiệu toán học
Toán tử của C++
Ví dụ điều kiện C++ Ý nghĩa của điều kiện
>
>
x > y
x lớn hơn y
<
<
x < y
x nhỏ hơn y
≥
>=
x >= y
x lớn hơn hoặc bằng y
≤
<=
x <= y
x nhỏ hơn hoặc bằng y
=
==
x == y
x bằng y
≠
!=
x != y
x khác y
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 1.
https://fb.com/tailieudientucntt
31
1.8 Ra quyết định: Các phép toán quan hệ
• cấu trúc if
– Đưa ra quyết định dựa vào kết quả đúng hoặc
sai của điều kiện
• Nếu điều kiện thỏa mãn thì thực hiện tập lệnh S
• nếu không, tập lệnh S không được thực hiện
if ( num1 == num2 )
cout << num1 << " is equal to " << num2 <<
endl;
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 1.
32
1.9 Khai báo using
• Khai báo sử dụng toàn bộ không gian tên
– using namespace std;
– Để không cần tiền tố std:: cho mọi tên trong std
1
2
3
// Fig. 1.4: fig01_04.cpp
// Printing a line with multiple statements.
#include
4
5
6
7
8
9
10
using namespace std;
// function main begins program execution
int main()
{
cout << "Welcome ";
std::cout << "to C++!\n";
11
12
13
14
return 0;
} // end function main
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 1.
https://fb.com/tailieudientucntt
33
1.9 Khai báo using
• Khai báo sử dụng từng tên
using std::cout; // program uses cout
using std::cin;
// program uses cin
using std::endl; // program uses endl
...
cout << "No need to write std::";
cin >> somevariable;
...
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 1.
https://fb.com/tailieudientucntt
1
Ngôn ngữ lập trình C++
Chương 2 – Các kiểu dữ liệu cơ bản
Các cấu trúc điều khiển
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 2.
2
Tài liệu đọc thêm
• Tài liệu đọc thêm cho chương này:
– 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)
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 2.
https://fb.com/tailieudientucntt
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
3
Đề mục
2.1
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 toán
2.10
Điều khiển lặp bằng con đếm và giá trị canh
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 2.
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
4
Đề mục (tiếp theo)
2.11
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
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 2.
https://fb.com/tailieudientucntt
5
2.1 Các kiểu dữ liệu cơ bản
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ế
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 2.
6
2.2 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 (++, --)
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 2.
https://fb.com/tailieudientucntt
7
2.2 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
( &, |, ^, ~, <<, >> ).
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 2.
8
2.2 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
e
f
g
-=
*=
/=
%=
4
5
3
9
(d
(e
(f
(g
=
=
=
=
d
e
f
g
*
/
%
4)
5)
3)
9)
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 2.
https://fb.com/tailieudientucntt
9
2.2 Các phép tăng và giảm
• Phép tăng - Increment operator (++)
– có thể được dùng thay cho c += 1
• Phép giảm - Decrement operator (--)
– có thể được dùng thay cho c -= 1
• Tăng/giảm trước – Preincrement/Predecrement
• ++c hoặc --c
• 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
• 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
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 2.
10
2.2 Các phép tăng và giảm
• Ví dụ: nếu c = 5
– cout << ++c;
• c nhận giá trị 6, rồi được in ra
– cout << c++;
• in giá trị 5 (cout được chạy trước phép tăng).
• sau đó, c nhận giá trị 6
• Khi biến không nằm trong biểu thức
– Tăng trước và tăng sau có kết quả như nhau
++c;
cout << c;
và
c++;
cout << c;
là như nhau
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 2.
https://fb.com/tailieudientucntt
1
2
3
4
5
6
7
8
9
10
11
11
// Fig. 2.14: fig02_14.cpp
// Preincrementing and postincrementing.
#include
fig02_14.cpp
(1 of 2)
using std::cout;
using std::endl;
// function main begins program execution
int main()
{
int c;
// declare variable
5
5
6
12
13
14
15
16
17
// demonstrate postincrement
c = 5;
//
cout << c << endl;
//
cout << c++ << endl;
//
cout << c << endl << endl; //
assign 5 to c
print 5
print 5 then postincrement
print 6
18
19
20
21
22
23
// demonstrate preincrement
c = 5;
//
cout << c << endl;
//
cout << ++c << endl;
//
cout << c << endl;
//
assign 5 to c
print 5
preincrement then print 6
print 6
24
25
return 0;
26
27
5
6
6
// indicate successful termination
©2004 Trần Minh Châu.
FOTECH. VNU.
} // end function main
12
2.3 Các phép toán logic
• được dùng làm điều kiện trong các vòng lặp và
lệnh if
• && (logical AND)
– true nếu cả hai điều kiện là true
if ( gender == 1 && age >= 65 )
++seniorFemales;
• || (logical OR)
– true nếu ít nhất một trong hai điều kiện là true
if ( semesterAverage >= 90 || finalExam >= 90 )
cout << "Student grade is A" << endl;
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 2.
https://fb.com/tailieudientucntt
13
2.3 Các phép toán logic
• ! (logical NOT, phủ định logic – logical negation)
– trả về giá trị true khi điều kiện là false, và ngược lại
if ( !( grade == sentinelValue ) )
cout << "The next grade is " << grade << endl;
tương đương với:
if ( grade != sentinelValue )
cout << "The next grade is " << grade << endl;
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 2.
Nhầm lẫn giữa
phép so sánh bằng (==) và phép gán (=)
14
• 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)
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 2.
https://fb.com/tailieudientucntt
Nhầm lẫn giữa
phép so sánh bằng (==) và phép gán (=)
15
• Ví dụ
if ( 4 == payCode )
cout << "You get a bonus!" << endl;
– Nếu mã tiền lương (paycode) là 4 thì thưởng
• Nếu == bị thay bởi =
if ( payCode = 4 )
cout << "You get a bonus!" << endl;
– 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
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 2.
Nhầm lẫn giữa
phép so sánh bằng (==) và phép gán (=)
16
• 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ể
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 2.
https://fb.com/tailieudientucntt
17
Viết chương trình
• Trước khi viết chương trình
– Hiểu kỹ bài toán
– Lập kế hoạch giải quyết bài toán
• Trong khi viết chương trình
– 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
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 2.
18
Thuật toán - Algorithm
• Các bài toán tin học
– đượ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ể
• Thuật toán: một quy trình quyết định
– 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
– Chỉ ra thứ tự thực hiện các lệnh
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 2.
https://fb.com/tailieudientucntt
19
Mã giả - Pseudocode
• Mã giả: ngôn ngữ không chính thức được dùng để
mô tả thuật toán
– tương tự với ngôn ngữ hàng ngày
• Không chạy được trên máy tính
– dùng để mô tả chương trình trước khi viết chương trình
• dễ chuyển thành chương trình C++
– chỉ gồm các lệnh chạy
• không cần khai báo biến
Ví dụ:
tìm số nhỏ hơn trong hai số
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
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 2.
Các cấu trúc điều khiển - Control Structures
Khái niệm
20
• Thực thi tuần tự - Sequential execution
– Các lệnh được thực hiện theo thứ tự tuần tự
• Chuyển điều khiển - Transfer of control
– Lệnh tiếp theo được thực thi không phải lệnh tiếp theo trong
chuỗi lệnh.
• 3 cấu trúc điều khiển
– 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
– 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
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 2.
https://fb.com/tailieudientucntt
21
Các cấu trúc điều khiển
• 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
C++ Keyw o rd s
Keywords common to the
C and C++ programming
languages
auto
continue
enum
if
short
switch
volatile
C++ only keywords
asm
delete
inline
private
static_cast
try
wchar_t
break
default
extern
int
signed
typedef
while
case
do
float
long
sizeof
union
char
double
for
register
static
unsigned
const
else
goto
return
struct
void
bool
dynamic_cast
mutable
protected
template
typeid
catch
explicit
namespace
public
this
typename
class
false
new
reinterpret_cast
throw
using
const_cast
friend
operator
true
virtual
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 2.
22
Các cấu trúc điều khiển
true
grade >= 60
print “Passed”
false
• Sơ đồ khối - Flowchart
– mô tả thuật toá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)
• kiểu hành động bất kỳ
– ký hiệu oval
• 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
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 2.
https://fb.com/tailieudientucntt
23
Cấu trúc lựa chọn if
• Cấu trúc lựa chọn - Selection structure
– chọn giữa các tuyến hành động khác nhau
– ví dụ bằng mã giả:
If student's grade is greater than or equal to 60
Print “Passed”
– Nếu điều kiện thỏa mãn (có giá trị true)
• lệnh Print được thực hiện, chương trình chạy tiếp lệnh tiếp theo
– 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
– 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.)
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 2.
24
Cấu trúc lựa chọn if
• Dịch sang C++
If student's grade is greater than or equal to 60
Print “Passed”
grade >= 60
if ( grade >= 60 )
cout << "Passed";
true
print “Passed”
false
• ký hiệu hình thoi (ký hiệu quyết định)
– đá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
• kiểm tra điều kiện, đi theo đường thích hợp
• cấu trúc if
– 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
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 2.
https://fb.com/tailieudientucntt
25
Cấu trúc chọn lựa if/else
• if
– Thực hiện hành động nếu điều kiện thỏa mãn
• if/else
– 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
• mã giả
if student's grade is greater than or equal to 60
print “Passed”
else
print “Failed”
• mã C++
if ( grade >= 60 )
cout << "Passed";
else
cout << "Failed";
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 2.
26
Cấu trúc chọn lựa if/else
• phép toán điều kiện 3 ngôi (?:)
– ba tham số (điều kiện, giá trị nếu true, giá trị nếu false)
• mã có thể được viết:
cout << ( grade >= 60 ? “Passed” : “Failed” );
Condition
false
print “Failed”
Value if true
grade >= 60
Value if false
true
print “Passed”
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 2.
https://fb.com/tailieudientucntt
27
Cấu trúc chọn lựa if/else
• Các cấu trúc if/else lồng nhau
– lệnh này nằm trong lệnh kia, kiểm tra nhiều trường hợp
– Một khi điều kiện thỏa mãn, các lệnh khác bị bỏ qua
if student's grade is greater than or equal to 90
Print “A”
else
if student's grade is greater than or equal to 80
Print “B”
else
if student's grade is greater than or equal to 70
Print “C”
else
if student's grade is greater than or equal to 60
Print “D”
else
Print “F”
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 2.
28
Cấu trúc chọn lựa if/else
• Ví dụ
if ( grade >= 90 )
cout << "A";
else if ( grade >= 80 )
cout << "B";
else if ( grade >= 70 )
cout << "C";
else if ( grade >= 60 )
cout << "D";
else
cout << "F";
// 90 and above
// 80-89
// 70-79
// 60-69
// less than 60
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 2.
https://fb.com/tailieudientucntt
29
Cấu trúc chọn lựa if/else
• lệnh phức – compound statement
– tập lệnh bên trong một cặp ngoặc
if ( grade
cout <<
else {
cout <<
cout <<
>= 60 )
"Passed.\n";
...
Ngôn ngữ Lập trình C++
Chương I - Giới thiệu ngôn ngữ C++
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 1.
2
Nội dung chính
•
•
•
•
•
Mã máy, Hợp ngữ, và ngôn ngữ bậc cao
Một số ngôn ngữ lập trình bậc cao
Lịch sử C và C++
Hệ thống và môi trường lập trình C++
Giới thiệu về C++
–
–
–
–
–
ví dụ về chương trình C++ đơn giản
khái niệm biến
vào ra dữ liệu
các phép toán số học
ra quyết định - các phép toán quan hệ
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 1.
https://fb.com/tailieudientucntt
3
1.1 Mã máy, Hợp ngữ, và Ngôn ngữ bậc cao
1. Mã máy (machine language)
–
–
–
–
–
–
Là ngôn ngữ duy nhất máy tính trực tiếp hiểu được, là “ngôn
ngữ tự nhiên” của máy tính
Được định nghĩa bởi thiết kế phần cứng, phụ thuộc phần cứng
Gồm các chuỗi số, => chuỗi các số 0 và 1
Dùng để lệnh cho máy tính thực hiện các thao tác cơ bản, mỗi
lần một thao tác
Nặng nề, khó đọc đối với con người
Ví dụ:
+1300042774
+1400593419
+1200274027
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 1.
4
1.1 Mã máy, Hợp ngữ, và Ngôn ngữ bậc cao
2. Hợp ngữ (assembly)
–
–
–
Những từ viết tắt kiểu tiếng Anh, đại diện cho các thao tác
cơ bản của máy tính
Dễ hiểu hơn đối với con người
Máy tính không hiểu
•
–
Cần đến các chương trình dịch hợp ngữ (assembler) để
chuyển từ hợp ngữ sang mã máy
Ví dụ:
LOAD
BASEPAY
ADD
OVERPAY
STORE GROSSPAY
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 1.
https://fb.com/tailieudientucntt
5
1.1 Mã máy, Hợp ngữ, và Ngôn ngữ bậc cao
3. Các ngôn ngữ bậc cao (high-level languages)
–
–
–
Tương tự với tiếng Anh, sử dụng các ký hiện toán học thông dụng
Một lệnh thực hiện được một công việc mà hợp ngữ cần nhiều
lệnh để thực hiện được.
Ví dụ:
grossPay = basePay + overTimePay
–
–
Các chương trình dịch (compiler) để chuyển sang mã máy
Các chương trình thông dịch (interpreter program) trực tiếp chạy
các chương trình viết bằng ngôn ngữ bậc cao.
•
•
Chậm hơn
Thuận tiện khi đang phát triển chương trình
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 1.
6
1.2 Một số ngôn ngữ lập trình bậc cao
•
•
•
•
FORTRAN
– FORmula TRANslator (1954-1957: IBM)
– Tính toán toán học phức tạp, thường dùng trong các ứng dụng khoa học và kỹ
thuật
COBOL
– COmmon Business Oriented Language (1959)
– Thao tác chính xác và hiệu quả đối với các khối lượng dữ liệu lớn,
• Các ứng dụng thương mại
Pascal
– Tác giả: Niklaus Wirth
– Dùng trong trường học.
Java
– Tác giả: Sun Microsystems (1991)
– Ngôn ngữ điều khiển theo sự kiện (event-driven), hoàn toàn hướng đối tượng,
tính khả chuyển (portable) rất cao.
– Các trang Web với nội dung tương tác động
– Phát triển các ứng dụng quy mô lớn
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 1.
https://fb.com/tailieudientucntt
7
1.2 Một số ngôn ngữ lập trình bậc cao
• BASIC
– Beginner's All-Purpose Symbolic Instruction Code
– Từ giữa những năm1960
• Visual Basic
– GUI, xử lý sự kiện (event handling), sử dụng Win32 API, lập trình hướng
đối tượng (object-oriented programming), bắt lỗi (error handling)
• Visual C++
– C++ của Microsoft và mở rộng
• Thư viện của Microsoft (Microsoft Foundation Classes -MFC)
• Thư viện chung
– GUI, đồ họa, lập trình mạng, đa luồng (multithreading), …
– Dùng chung giữa Visual Basic, Visual C++, C#
• C#
– Bắt nguồn từ C, C++ và Java
– Ngôn ngữ điều khiển theo sự kiện (event-driven), hoàn toàn hướng đối
tượng, ngôn ngữ lập trình trực quan (visual programming language)
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 1.
8
1.3 Lịch sử ngôn ngữ C và C++
• C
–
–
–
–
–
Dennis Ritchie (Bell Laboratories)
Là ngôn ngữ phát triển của hệ điều hành UNIX
Độc lập phần cứng => có thể viết các chương trình khả chuyển
Chuẩn hóa năm 1990 – ANSI C
Kernighan & Ritchie “The C Programming Language”, 2nd, 1988
• C++
–
–
–
–
Là mở rộng của C
Đầu những năm 1980: Bjarne Stroustrup (phòng thí nghiệm Bell)
Cung cấp khả năng lập trình hướng đối tượng.
Ngôn ngữ lai
• Lập trình cấu trúc kiểu C
• Lập trình hướng đối tượng
• Cả hai
• Có cần biết C trước khi học C++?
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 1.
https://fb.com/tailieudientucntt
9
1.4 Hệ thống C++
– Môi trường phát triển chương trình (Program-development
environment)
– Ngôn ngữ
– Thư viện chuẩn (C++ Standard Library)
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 1.
10
1.4 Môi trường cơ bản cho lập trình C++
Các giai đoạn của
chương trình C++:
1. Soạn thảo - Edit
2. Tiền xử lý - Preprocess
3. Biên dịch - Compile
4. Liên kết - Link
Disk
Chương trình được viết
bằng chương trình soạn
thảo và lưu trên đĩa.
Preprocessor
Disk
Chương trình tiền xử lý
thực hiện xử lý mã nguồn
Compiler
Disk
Linker
Disk
Editor
Loader
Disk
5. Nạp - Load
Trình biên dịch tạo object
code và lưu trên đĩa.
Primary
Memory
Trình kết nối kết hợp
objectcode với các thư viện,
tạo file chạy được và lưu
lên đĩa
Trình nạp nạp
trình vào bộ nhớ
..
..
..
Primary
Memory
CPU
6. Chạy - Execute
..
..
..
CPU nhận từng lệnh, thực
thi lệnh đó, có thể lưu các
giá trị dữ liệu mới khi
chương trình chạy.
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
chương
Chương 1.
https://fb.com/tailieudientucntt
11
1.4 Môi trường cơ bản cho lập trình C++
• Soạn thảo
– File có kiểu mở rộng *.cpp, *cxx, *.cc, *.C
– Unix/Linux:
vi, emacs
– MS.Windows: các môi trường soạn thảo tích hợp: Devcpp, Microssoft Visual C++, Borland C++ Builder, …
• Chú ý mức độ hỗ trợ C++ chuẩn – ANSI/ISO C++
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 1.
12
Ví dụ 1: Hello World!
1
2
3
4
5
6
7
8
9
10
11
12
/* A first program in C++.
Print a line of text to standard output */
#include
hàm main trả về một giá trị kiểu số nguyên.
Chú thích
// function main begins program execution
int main()
Định hướng tiền xử lý (preprocessor directive) để khai
{
báo sử dụng thư viện ra/vào chuẩn
std::cout << “Hello World!\n";
return 0;
// indicate that program ended successfully
Viết một dòng ra output
} // end function main
chuẩn (màn hình)
hàm main xuất hiện đúng
một lần trong mỗi chương
trình C++.
Ngoặc trái { bắt đầu thân hàm.
Hello World!
Tương ứng, ngoặc phải }
kết thúc thân hàm.
Các lệnh kết thúc bằng dấu
chấm phảy;
Từ khóa return là một cách
thoát khỏi hàm; giá trị 0 được
trả về có nghĩa chương trình
kết thúc thành công.
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 1.
https://fb.com/tailieudientucntt
13
1.5 Các thành phần cơ bản
Chú thích và định hướng tiền xử lý
• Chú thích - comment
// A first program in C++.
–
–
–
–
Làm tài liệu cho các chương trình
Làm chương trình dễ đọc dễ hiểu hơn
được trình biên dịch (compiler) bỏ qua
1 dòng chú thích bắt đầu với //
• Các định hướng tiền xử lý - directive
#include
– Được xử lý ngay trước khi biên dịch
– Bắt đầu bằng #
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 1.
14
Ví dụ 1 - mở rộng 1
1
2
3
// Fig. 1.4: fig01_04.cpp
// Printing a line with multiple statements.
#include
4
5
6
7
8
9
// function main begins program execution
int main()
{
std::cout << "Welcome ";
std::cout << "to C++!\n";
10
11
12
13
return 0;
fig01_04.cpp
Nhiều dòng lệnh tạo output
trên một dòng.
// indicate that program ended successfully
} // end function main
Welcome to C++!
©2004 Trần Minh Châu.
FOTECH. VNU.
CuuDuongThanCong.com
https://fb.com/tailieudientucntt
15
Ví dụ 1 - mở rộng 2
1
2
3
// Fig. 1.5: fig01_05.cpp
// Printing multiple lines with a single statement
#include
4
5
6
7
8
// function main begins program execution Dùng ký tự dòng mới \n để in
trên nhiều dòng.
int main()
{
std::cout << "Welcome\nto\n\nC++!\n";
9
10
11
12
return 0;
// indicate that program ended successfully
} // end function main
Welcome
to
C++!
©2004 Trần Minh Châu.
FOTECH. VNU.
16
Ví dụ 2:
Chương trình tính tổng hai số nguyên
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Enter first integer
45
Enter second integer
72
Sum is 117
// Fig. 1.6: fig01_06.cpp
// Addition program.
#include
// function main begins program execution
int main()
Khai báo các biến nguyên.
{
int integer1; // first number to be input by user
int integer2; // second number to be input by user
Nhập
một
số nguyên
từ input
int sum;
// variable in which
sum
will
be stored
chuẩn,
ghi vào biến integer1
std::cout << "Enter first integer\n";
std::cin >> integer1;
// prompt
endl
// read an integer
cho kết quả là một dòng
trống.
std::cout << "Enter second integer\n"; // prompt
std::cin >> integer2;
integer
Tính toán có //
thểread
đượcan
thực
hiện trong
lệnh output: Thay cho các
dòng 18 và 20:
sum = integer1 + integer2; cout
// assign
result
<< "Sum
is " to
<< sum
integer1 + integer2 << endl;
std::cout << "Sum is " << sum << endl; // print sum
return 0;
// indicate that program ended successfully
} // end function main
CuuDuongThanCong.com
©2004 Trần Minh Châu.
FOTECH. VNU.
https://fb.com/tailieudientucntt
17
1.5 Các thành phần cơ bản
Biến chương trình
• Biến - variable: Một nơi trong bộ nhớ, có thể lưu các giá trị
thuộc một kiểu nào đó.
• Các kiểu dữ liệu cơ bản
•
•
•
•
int - số nguyên
char – ký tự
double - số chấm động
bool – các giá trị logic true hoặc false
• Các biến phải được khai báo tên và kiểu trước khi sử dụng
int integer1;
int integer2;
int sum;
• Có thể khai báo nhiều biến thuộc cùng một kiểu dữ liệu
trong một dòng khai báo biến.
int integer1, integer2, sum;
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 1.
18
1.5 Biến chương trình
• Quy tắc đặt tên biến
• Chuỗi ký tự (chữ cái a..z, A..Z, chữ số 0..9, dấu gạch dưới _ )
• Không được bắt đầu bằng chữ số
• Phân biệt chữ hoa chữ thường.
Ví dụ:
Tên biến hợp lệ: h678h_m2, _adh2, taxPayment…
Không hợp lệ: áadàn, so chia, 2n, …
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 1.
https://fb.com/tailieudientucntt
19
1.5 Biến chương trình
• Các khái niệm về bộ nhớ (memory)
–
–
–
–
Mỗi biến tương ứng với một khu trong bộ nhớ máy tính
Mỗi biến có tên, kiểu, kích thước, và giá trị
Khi biến được gán một giá trị mới, giá trị cũ bị ghi đè
Đọc giá trị của các biến trong bộ nhớ không làm thay đổi các
biến trong bộ nhớ.
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 1.
20
1.5 Biến chương trình
std::cin >> integer1;
integer1
45
integer1
45
integer2
72
integer1
45
integer2
72
– giả sử người dùng nhập 45
std::cin >> integer2;
– giả sử người dùng nhập 72
sum = integer1 + integer2;
sum
117
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 1.
https://fb.com/tailieudientucntt
21
1.6 Vào ra dữ liệu
Các đối tượng vào/ra cơ bản
• cin
• dòng dữ liệu vào chuẩn - Standard input stream
• thường là từ bàn phím
• cout
• dòng dữ liệu ra chuẩn - Standard output stream
• thường là màn hình máy tính
• cerr
• dòng báo lỗi chuẩn - Standard error stream
• hiện các thông báo lỗi
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 1.
22
1.6 Vào ra dữ liệu
In dòng văn bản ra màn hình
std::cout << "Enter first integer\n";
•
// prompt
Đối tượng ra chuẩn - Standard output stream object
– std::cout
– “nối” với màn hình
– <<
• toán tử chèn vào dòng dữ liệu ra – stream insert operator
• giá trị bên phải (right operand) được chèn vào dòng dữ liệu ra
•
Không gian tên - Namespace
– std:: có nghĩa là sử dụng tên thuộc “namespace” std
– std:: được bỏ qua nếu dùng các khai báo using
•
Escape characters
\
– đánh dấu các ký tự đặc biệt
• ví dụ \\, \', \n, \t
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 1.
https://fb.com/tailieudientucntt
23
1.6 Vào ra dữ liệu
Các chuỗi escape
Chuỗi Escape
Mô tả
\n
Dòng mới. Đặt con trỏ màn hình tại đầu
dòng tiếp theo.
Tab. Di chuyển con trỏ đến điểm dừng tab
tiếp theo.
Về đầu dòng. Chuyển con trỏ màn hình tới
đầu dòng hiện tại; không xuống dòng mới.
Chuông. Bật chuông hệ thống.
Chéo ngược. Dùng để in một đấu chéo
ngược.
Nháy kép. Dùng để in một dấu nháy kép.
\t
\r
\a
\\
\"
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 1.
24
1.6 Vào ra dữ liệu
Nhập dữ liệu từ thiết bị vào chuẩn
std::cin >> integer1;
// read an integer
• Đối tượng dòng dữ liệu vào - Input stream object
– >> (toán tử đọc từ dòng dữ liệu vào)
• được sử dụng với std::cin
• đợi người dùng nhập giá trị, rồi gõ phím Enter (Return)
• lưu giá trị vào biến ở bên phải toán tử
– đổi giá trị được nhập sang kiểu dữ liệu của biến
• = (toán tử
gán)
– gán giá trị cho biến
– toán tử hai ngôi - Binary operator
– Ví dụ:
sum = variable1 + variable2;
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 1.
https://fb.com/tailieudientucntt
25
1.7 Tính toán số học
• Các phép toán số học
Phép nhân
Phép chia
– *
– /
• Phép chia với số nguyên lấy thương là số nguyên và bỏ phần
dư
– 7 / 5 cho kết quả 1
• Phép chia với số thực cho kết quả là số thực
– 7.0 / 5.0 cho kết quả 1.4
Phép lấy số dư
– %
– 7 % 5 cho kết quả 2
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 1.
26
1.7 Tính toán số học
• Các quy tắc ưu tiên - Rules of operator precedence
– Các phép toán trong ngoặc được tính trước
• ngoặc lồng nhau
– các phép toán ở bên trong nhất được tính trước nhất
– tiếp theo là các phép nhân, chia, và phép lấy số dư
• các phép toán được tính từ trái sang phải
– cộng và trừ được tính cuối cùng
• các phép toán được tính từ trái sang phải
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 1.
https://fb.com/tailieudientucntt
27
1
2
3
4
// Fig. 1.14: fig01_14.cpp
// Using if statements, relational
// operators, and equality operators.
#include
5
6
7
8
using std::cout;
using std::cin;
using std::endl;
9
10
11
12
13
14
// function main begins program execution
int main()
Có thể viết cout và cin mà không cần tiền tố std::
{
int num1; // first number to lệnh
be read
from
if kiểm
tra user
xem các giá trị của
int num2; // second number tonum1
be read
fromcóuser
và num2
bằng nhau không.
// program uses cout
// program uses cin
// program uses endl
fig01_14.cpp
(1 of 2)
khai báo using để sau đó
không cần dùng tiền tố std::
Khai báo biến.
15
16
17
18
cout << "Enter two integers, and I will tell you\n"
<< "the relationships they satisfy: ";
cin >> num1 >> num2;
// read two integers
19
20
21
if ( num1 == num2 )
cout << num1 << " is equal to " << num2 << endl;
Nếu điều kiện là đúng (nghĩa
là hai giá trị bằng nhau) thì
thực hiện lệnh này.
lệnh if kiểm tra xem các giá trị của
num1 và num2 có khác nhau không.
Nếu điều kiện là đúng (nghĩa là hai giá trị
22
23
24
25
if ( num1 != num2 )
khác nhau) thì thực hiện lệnh này.
cout << num1 << " is not equal to " << num2 << endl;
26
27
if ( num1 < num2 )
cout << num1 << " is less than " << num2 << endl;
28
29
30
fig01_14.cpp
if ( num1 > num2 )
Một lệnh có(2
thểofđược
2) tách
cout << num1 << " is greater than " << num2 << endl;
31
32
33
34
if ( num1 <= num2 )
cout << num1 << " is less than or equal to "
<< num2 << endl;
35
36
37
38
if ( num1 >= num2 )
cout << num1 << " is greater than or equal to "
<< num2 << endl;
39
40
return 0;
41
42
©2004 Trần Minh Châu.
FOTECH. VNU.
28
thành nhiều dòng.
fig01_14.cpp
output (1 of 2)
// indicate that program ended successfully
} // end function main
Enter two integers, and I will tell you
the relationships they satisfy: 22 12
22 is not equal to 12
22 is greater than 12
22 is greater than or equal to 12
CuuDuongThanCong.com
©2004 Trần Minh Châu.
FOTECH. VNU.
https://fb.com/tailieudientucntt
29
Enter two integers, and I will tell you
the relationships they satisfy: 7 7
7 is equal to 7
7 is less than or equal to 7
7 is greater than or equal to 7
fig01_14.cpp
output (2 of 2)
©2004 Trần Minh Châu.
FOTECH. VNU.
30
1.8 Ra quyết định: Các phép toán quan hệ
Ký hiệu toán học
Toán tử của C++
Ví dụ điều kiện C++ Ý nghĩa của điều kiện
>
>
x > y
x lớn hơn y
<
<
x < y
x nhỏ hơn y
≥
>=
x >= y
x lớn hơn hoặc bằng y
≤
<=
x <= y
x nhỏ hơn hoặc bằng y
=
==
x == y
x bằng y
≠
!=
x != y
x khác y
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 1.
https://fb.com/tailieudientucntt
31
1.8 Ra quyết định: Các phép toán quan hệ
• cấu trúc if
– Đưa ra quyết định dựa vào kết quả đúng hoặc
sai của điều kiện
• Nếu điều kiện thỏa mãn thì thực hiện tập lệnh S
• nếu không, tập lệnh S không được thực hiện
if ( num1 == num2 )
cout << num1 << " is equal to " << num2 <<
endl;
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 1.
32
1.9 Khai báo using
• Khai báo sử dụng toàn bộ không gian tên
– using namespace std;
– Để không cần tiền tố std:: cho mọi tên trong std
1
2
3
// Fig. 1.4: fig01_04.cpp
// Printing a line with multiple statements.
#include
4
5
6
7
8
9
10
using namespace std;
// function main begins program execution
int main()
{
cout << "Welcome ";
std::cout << "to C++!\n";
11
12
13
14
return 0;
} // end function main
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 1.
https://fb.com/tailieudientucntt
33
1.9 Khai báo using
• Khai báo sử dụng từng tên
using std::cout; // program uses cout
using std::cin;
// program uses cin
using std::endl; // program uses endl
...
cout << "No need to write std::";
cin >> somevariable;
...
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 1.
https://fb.com/tailieudientucntt
1
Ngôn ngữ lập trình C++
Chương 2 – Các kiểu dữ liệu cơ bản
Các cấu trúc điều khiển
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 2.
2
Tài liệu đọc thêm
• Tài liệu đọc thêm cho chương này:
– 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)
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 2.
https://fb.com/tailieudientucntt
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
3
Đề mục
2.1
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 toán
2.10
Điều khiển lặp bằng con đếm và giá trị canh
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 2.
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
4
Đề mục (tiếp theo)
2.11
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
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 2.
https://fb.com/tailieudientucntt
5
2.1 Các kiểu dữ liệu cơ bản
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ế
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 2.
6
2.2 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 (++, --)
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 2.
https://fb.com/tailieudientucntt
7
2.2 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
( &, |, ^, ~, <<, >> ).
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 2.
8
2.2 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
e
f
g
-=
*=
/=
%=
4
5
3
9
(d
(e
(f
(g
=
=
=
=
d
e
f
g
*
/
%
4)
5)
3)
9)
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 2.
https://fb.com/tailieudientucntt
9
2.2 Các phép tăng và giảm
• Phép tăng - Increment operator (++)
– có thể được dùng thay cho c += 1
• Phép giảm - Decrement operator (--)
– có thể được dùng thay cho c -= 1
• Tăng/giảm trước – Preincrement/Predecrement
• ++c hoặc --c
• 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
• 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
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 2.
10
2.2 Các phép tăng và giảm
• Ví dụ: nếu c = 5
– cout << ++c;
• c nhận giá trị 6, rồi được in ra
– cout << c++;
• in giá trị 5 (cout được chạy trước phép tăng).
• sau đó, c nhận giá trị 6
• Khi biến không nằm trong biểu thức
– Tăng trước và tăng sau có kết quả như nhau
++c;
cout << c;
và
c++;
cout << c;
là như nhau
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 2.
https://fb.com/tailieudientucntt
1
2
3
4
5
6
7
8
9
10
11
11
// Fig. 2.14: fig02_14.cpp
// Preincrementing and postincrementing.
#include
fig02_14.cpp
(1 of 2)
using std::cout;
using std::endl;
// function main begins program execution
int main()
{
int c;
// declare variable
5
5
6
12
13
14
15
16
17
// demonstrate postincrement
c = 5;
//
cout << c << endl;
//
cout << c++ << endl;
//
cout << c << endl << endl; //
assign 5 to c
print 5
print 5 then postincrement
print 6
18
19
20
21
22
23
// demonstrate preincrement
c = 5;
//
cout << c << endl;
//
cout << ++c << endl;
//
cout << c << endl;
//
assign 5 to c
print 5
preincrement then print 6
print 6
24
25
return 0;
26
27
5
6
6
// indicate successful termination
©2004 Trần Minh Châu.
FOTECH. VNU.
} // end function main
12
2.3 Các phép toán logic
• được dùng làm điều kiện trong các vòng lặp và
lệnh if
• && (logical AND)
– true nếu cả hai điều kiện là true
if ( gender == 1 && age >= 65 )
++seniorFemales;
• || (logical OR)
– true nếu ít nhất một trong hai điều kiện là true
if ( semesterAverage >= 90 || finalExam >= 90 )
cout << "Student grade is A" << endl;
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 2.
https://fb.com/tailieudientucntt
13
2.3 Các phép toán logic
• ! (logical NOT, phủ định logic – logical negation)
– trả về giá trị true khi điều kiện là false, và ngược lại
if ( !( grade == sentinelValue ) )
cout << "The next grade is " << grade << endl;
tương đương với:
if ( grade != sentinelValue )
cout << "The next grade is " << grade << endl;
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 2.
Nhầm lẫn giữa
phép so sánh bằng (==) và phép gán (=)
14
• 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)
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 2.
https://fb.com/tailieudientucntt
Nhầm lẫn giữa
phép so sánh bằng (==) và phép gán (=)
15
• Ví dụ
if ( 4 == payCode )
cout << "You get a bonus!" << endl;
– Nếu mã tiền lương (paycode) là 4 thì thưởng
• Nếu == bị thay bởi =
if ( payCode = 4 )
cout << "You get a bonus!" << endl;
– 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
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 2.
Nhầm lẫn giữa
phép so sánh bằng (==) và phép gán (=)
16
• 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ể
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 2.
https://fb.com/tailieudientucntt
17
Viết chương trình
• Trước khi viết chương trình
– Hiểu kỹ bài toán
– Lập kế hoạch giải quyết bài toán
• Trong khi viết chương trình
– 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
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 2.
18
Thuật toán - Algorithm
• Các bài toán tin học
– đượ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ể
• Thuật toán: một quy trình quyết định
– 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
– Chỉ ra thứ tự thực hiện các lệnh
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 2.
https://fb.com/tailieudientucntt
19
Mã giả - Pseudocode
• Mã giả: ngôn ngữ không chính thức được dùng để
mô tả thuật toán
– tương tự với ngôn ngữ hàng ngày
• Không chạy được trên máy tính
– dùng để mô tả chương trình trước khi viết chương trình
• dễ chuyển thành chương trình C++
– chỉ gồm các lệnh chạy
• không cần khai báo biến
Ví dụ:
tìm số nhỏ hơn trong hai số
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
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 2.
Các cấu trúc điều khiển - Control Structures
Khái niệm
20
• Thực thi tuần tự - Sequential execution
– Các lệnh được thực hiện theo thứ tự tuần tự
• Chuyển điều khiển - Transfer of control
– Lệnh tiếp theo được thực thi không phải lệnh tiếp theo trong
chuỗi lệnh.
• 3 cấu trúc điều khiển
– 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
– 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
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 2.
https://fb.com/tailieudientucntt
21
Các cấu trúc điều khiển
• 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
C++ Keyw o rd s
Keywords common to the
C and C++ programming
languages
auto
continue
enum
if
short
switch
volatile
C++ only keywords
asm
delete
inline
private
static_cast
try
wchar_t
break
default
extern
int
signed
typedef
while
case
do
float
long
sizeof
union
char
double
for
register
static
unsigned
const
else
goto
return
struct
void
bool
dynamic_cast
mutable
protected
template
typeid
catch
explicit
namespace
public
this
typename
class
false
new
reinterpret_cast
throw
using
const_cast
friend
operator
true
virtual
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 2.
22
Các cấu trúc điều khiển
true
grade >= 60
print “Passed”
false
• Sơ đồ khối - Flowchart
– mô tả thuật toá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)
• kiểu hành động bất kỳ
– ký hiệu oval
• 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
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 2.
https://fb.com/tailieudientucntt
23
Cấu trúc lựa chọn if
• Cấu trúc lựa chọn - Selection structure
– chọn giữa các tuyến hành động khác nhau
– ví dụ bằng mã giả:
If student's grade is greater than or equal to 60
Print “Passed”
– Nếu điều kiện thỏa mãn (có giá trị true)
• lệnh Print được thực hiện, chương trình chạy tiếp lệnh tiếp theo
– 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
– 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.)
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 2.
24
Cấu trúc lựa chọn if
• Dịch sang C++
If student's grade is greater than or equal to 60
Print “Passed”
grade >= 60
if ( grade >= 60 )
cout << "Passed";
true
print “Passed”
false
• ký hiệu hình thoi (ký hiệu quyết định)
– đá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
• kiểm tra điều kiện, đi theo đường thích hợp
• cấu trúc if
– 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
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 2.
https://fb.com/tailieudientucntt
25
Cấu trúc chọn lựa if/else
• if
– Thực hiện hành động nếu điều kiện thỏa mãn
• if/else
– 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
• mã giả
if student's grade is greater than or equal to 60
print “Passed”
else
print “Failed”
• mã C++
if ( grade >= 60 )
cout << "Passed";
else
cout << "Failed";
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 2.
26
Cấu trúc chọn lựa if/else
• phép toán điều kiện 3 ngôi (?:)
– ba tham số (điều kiện, giá trị nếu true, giá trị nếu false)
• mã có thể được viết:
cout << ( grade >= 60 ? “Passed” : “Failed” );
Condition
false
print “Failed”
Value if true
grade >= 60
Value if false
true
print “Passed”
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 2.
https://fb.com/tailieudientucntt
27
Cấu trúc chọn lựa if/else
• Các cấu trúc if/else lồng nhau
– lệnh này nằm trong lệnh kia, kiểm tra nhiều trường hợp
– Một khi điều kiện thỏa mãn, các lệnh khác bị bỏ qua
if student's grade is greater than or equal to 90
Print “A”
else
if student's grade is greater than or equal to 80
Print “B”
else
if student's grade is greater than or equal to 70
Print “C”
else
if student's grade is greater than or equal to 60
Print “D”
else
Print “F”
© 2004 Trần Minh Châu. FOTECH. VNU
Chương 2.
28
Cấu trúc chọn lựa if/else
• Ví dụ
if ( grade >= 90 )
cout << "A";
else if ( grade >= 80 )
cout << "B";
else if ( grade >= 70 )
cout << "C";
else if ( grade >= 60 )
cout << "D";
else
cout << "F";
// 90 and above
// 80-89
// 70-79
// 60-69
// less than 60
© 2004 Trần Minh Châu. FOTECH. VNU
CuuDuongThanCong.com
Chương 2.
https://fb.com/tailieudientucntt
29
Cấu trúc chọn lựa if/else
• lệnh phức – compound statement
– tập lệnh bên trong một cặp ngoặc
if ( grade
cout <<
else {
cout <<
cout <<
>= 60 )
"Passed.\n";
...
 









Các ý kiến mới nhất