SlideShare ist ein Scribd-Unternehmen logo
1 von 30
Downloaden Sie, um offline zu lesen
Bộ môn Công nghệ phần mềm
Khoa Công nghệ thông tin
Trường Đại học Khoa học Tự nhiên
VCBB© 13.09a

class
operator

true
public

C++

PP LT HƯỚNG ĐỐI TƯỢNG
cout

catch

ThS. Đặng Bình Phương

this

dbphuong@fit.hcmus.edu.vn

KIỂU DỮ LIỆU CƠ SỞ
& LỚP DỰNG SẴN

inline
new

cin
friend

STL

bool
using

OOP

try
virtual

false

private

throw
delete

1
1 2 3 4 5

VC


BB

Nội dung

Các kiểu dữ liệu cơ sở và phép toán
Kiểu chuỗi kí tự
Dữ liệu động
Đối sánh các kiểu dữ liệu cơ sở của C++, Java và C#
Những điểm hạn chế của C++

#include <iostream>
using namespace std;
void main()
{
cout << “Hello World”;
cout << endl;

Kiểu dữ liệu cơ sở & lớp dựng sẵn

2
1 2 3 4 5 Các kiểu dữ liệu cơ sở và phép toán

VC


BB

Các kiểu dữ liệu cơ sở

NNLT C++ hỗ trợ 4 kiểu cơ sở sau:
Kiểu số nguyên
•
•

•

•

Số nguyên không dấu
Số nguyên có dấu

Kiểu ký tự
•

Kiểu số thực

Ký tự 1 byte
(bảng mã ASCII)
Ký tự 2 byte
(bảng mã quốc tế UTF-16)

C++
•

Số có độ chính xác đơn
(single-precision)
• Số có độ chính xác kép
(double-precision)

Kiểu luận lý
Giá trị đúng (true) hoặc sai (false)

Kiểu dữ liệu cơ sở & lớp dựng sẵn

3
1 2 3 4 5 Các kiểu dữ liệu cơ sở và phép toán

VC


BB

Kiểu số nguyên

Kiểu số nguyên có dấu
 Miền giá trị (số n-bit): -2n – 1 … +2n – 1 – 1
Kiểu
(Type)

Độ lớn
(Byte)

Miền giá trị
(Range)

char

1

–128 … +127

int

2
4

–32.768 … +32.767
–2.147.483.648 … +2.147.483.647

short

2

–32.768 … +32.767

long

4

–2.147.483.648 … +2.147.483.647

long long

8

–9,223,372,036,854,775,808
… 9,223,372,036,854,775,807

Một số môi trường lập trình đồng nhất kiểu long long với kiểu long cho nên
kiểu này ít được sử dụng trong lập trình ứng dụng.
Kiểu dữ liệu cơ sở & lớp dựng sẵn

4
1 2 3 4 5 Các kiểu dữ liệu cơ sở và phép toán

VC


BB

Kiểu số nguyên

Kiểu số nguyên không dấu
 Miền giá trị (số n-bit): 0 … 2n – 1
Kiểu
(Type)

Độ lớn
(Byte)

Miền giá trị
(Range)

unsigned char

1

0 … 255

unsigned int

2
4

0 … 65535
0 … 4.294.967.295

unsigned short

2

0 … 65535

unsigned long

4

0 … 4.294.967.295

unsigned long long

8

0 …
18,446,744,073,709,551,615

Một số môi trường lập trình đồng nhất kiểu unsigned long long với kiểu
unsigned long cho nên kiểu này ít được sử dụng trong lập trình ứng dụng.
Kiểu dữ liệu cơ sở & lớp dựng sẵn

5
1 2 3 4 5 Các kiểu dữ liệu cơ sở và phép toán

VC


BB

Các phép toán trên kiểu số nguyên

Các phép toán số học:
 Phép cộng: +, phép trừ: -, phép nhân: *
 Phép chia lấy phần nguyên: /
 Phép chia lấy phần dư: %
Hằng số nguyên có thể biểu diễn ở 3 dạng:
 Bát phân: viết bắt đầu bằng số 0.
 Thập lục phân: viết bắt đầu bằng 0x.
 Thập phân: viết bắt đầu bằng số từ 1 đến 9.

Kiểu dữ liệu cơ sở & lớp dựng sẵn

6
1 2 3 4 5 Các kiểu dữ liệu cơ sở và phép toán

VC


BB

Kiểu số thực

Cấu trúc lưu trữ bên trong của
số thực được thiết kế theo chuẩn
số chấm động (floating-point) của IEEE.
Kiểu
(Type)

Độ lớn
(Byte)

float

4

Miền giá trị
(Range)

1,4x10-45 … 3,4x1038

float có độ chính xác đơn (single-precision), chính xác đến 7 chữ số.

double

8

4,94x10-324 … 1,79x10308

double có độ chính xác kép (double-precision), chính xác đến 15 chữ số.

long double

10

… 3,4x104932

Một số môi trường lập trình đồng nhất kiểu long double với kiểu double
cho nên kiểu này ít được sử dụng trong lập trình ứng dụng.
Kiểu dữ liệu cơ sở & lớp dựng sẵn

7
1 2 3 4 5 Các kiểu dữ liệu cơ sở và phép toán

VC


BB

Các phép toán trên kiểu số thực

Các phép toán số học +, -, *, /
Các hàm toán học thường dùng
1
2

#include <cmath>

// C++ chuẩn

#include <math.h>

// C hoặc C++ không chuẩn

Công dụng

Nguyên mẫu hàm

double sqrt(double x);

Tính

double pow(double x,
double y);

Tính 𝑥 𝑦 (𝑥 > 0)

double exp(double x);

Tính 𝑒 𝑥 (𝑒 ≈ 2,71828)

double log(double x);

Tính ln 𝑥

𝑥

double log10(double x); Tính log10 𝑥
Kiểu dữ liệu cơ sở & lớp dựng sẵn

8
1 2 3 4 5 Các kiểu dữ liệu cơ sở và phép toán

VC


BB

Các phép toán trên kiểu số thực

Các hàm toán học thường dùng (tiếp theo)
Công dụng

Nguyên mẫu hàm

int abs(int x);
long labs(long x);
double fabs(double x);

Tính 𝑥 (x kiểu int)
Tính 𝑥 (x kiểu long)
Tính 𝑥 (x kiểu double)

double cos(double x);
double sin(double x);
double tan(double x);

Tính cos 𝑥 , sin 𝑥 , tan 𝑥 (x
tính theo radian,
1 radian bằng 180/𝜋 độ)

double acos(double x);
double asin(double x);
double atan(double x);

Tính cos −1 𝑥
Tính sin−1 𝑥
Tính tan−1 𝑥

double floor(double x); Tính 𝑥
double ceil(double x); Tính 𝑥
Kiểu dữ liệu cơ sở & lớp dựng sẵn

9
1 2 3 4 5 Các kiểu dữ liệu cơ sở và phép toán

VC


BB

Kiểu luận lý

Khai báo kiểu bool đối với C++ chuẩn hoặc kiểu
số nguyên bất kỳ (short, long, …).
 Giá trị khác 0 nghĩa là đúng (true).
 Giá trị bằng 0 nghĩa là sai (false).
Lưu ý: Kết quả lượng giá một biểu thức luận lý bất kỳ thực hiện bởi
C++ luôn cho kết quả là 0 (false) hay 1 (true).

Các phép toán
 Kết hợp: && (and), || (or), ~ (not)
 So sánh: >, >=, <, <=, ==, !=
Kiểu dữ liệu cơ sở & lớp dựng sẵn

10
1 2 3 4 5 Các kiểu dữ liệu cơ sở và phép toán

VC


BB

Kiểu ký tự

Kiểu ký tự 8-bit
 Kiểu char hoặc unsigned char.
 Lưu mã ASCII của ký tự, giá trị từ 0 đến 255.
 Một số ký tự nên nhớ
Ký tự

Mã

‘ ’ (khoảng trắng)

32

‘0’ .. ‘9’

48 .. 57

‘A’ .. ‘Z’

65 .. 90

‘a’ .. ‘z’

97 .. 122

Kiểu dữ liệu cơ sở & lớp dựng sẵn

11
1 2 3 4 5 Các kiểu dữ liệu cơ sở và phép toán

VC


BB

Kiểu ký tự

Kiểu ký tự 16-bit
 Kiểu wchar_t (#include <cwchar>)
 Lưu trữ dự trên bảng mã quốc tế UTF-16
(một dạng mã Unicode).
•

Mã UTF-16 của ký tự thông thường (‘0’ đến ‘9’,
‘a’ đến ‘z’, ‘A’ đến ‘Z’, …) trùng mã ASCII.

 Hằng ký tự kiểu wchar_t được đặt trước
bằng chứ L.
•

Lưu ý, ‘B’ và L‘B’ như nhau (cùng giá trị 66)
nhưng kích thước trong bộ nhớ khác nhau
(sizeof(‘B’) = 1, sizeof(L‘B’) = 2)
Kiểu dữ liệu cơ sở & lớp dựng sẵn

12
1 2 3 4 5 Các kiểu dữ liệu cơ sở và phép toán

VC


BB

Kiểu ký tự

Một số hàm liên quan đến ký tự
Nguyên mẫu hàm

bool isupper(char ch);
bool iswupper(wchar_t ch);

Công dụng

Kiểm tra ch có phải là
ký tự hoa?

char toupper(char ch);
Trả về ký tự hoa
wchar_t towupper(wchar_t ch); tương ứng với ch
bool islower(char ch);
bool iswlower(wchar_t ch);

Kiểm tra ch có phải là
ký tự thường?

char tolower(char ch);
Trả về ký tự thường
wchar_t towlower(wchar_t ch); tương ứng với ch

Kiểu dữ liệu cơ sở & lớp dựng sẵn

13
1 2 3 4 5 Kiểu chuỗi ký tự

VC


BB

Giới thiệu

Kiểu chuỗi ký tự trong C++ không được xây
dựng sẵn (không phải là “built-in string”) mà
được cài đặt trong một lớp của thư viện chuẩn
STL (C++ Standard Template Library).
Hai kiểu dữ liệu chuỗi
 string (chuỗi ký tự 8-bit): mỗi ký tự trong
chuỗi là một ký tự 8-bit có kiểu là char.
 wstring (chuỗi ký tự 16-bit): mỗi ký tự trong
chuỗi là một ký tự 16-bit có kiểu là wchar_t.
Kiểu dữ liệu cơ sở & lớp dựng sẵn

14
1 2 3 4 5 Kiểu chuỗi ký tự

VC


BB

Kiểu chuỗi 8-bit

Khai báo
1
2

#include <string>
using namespace std;

Một số toán tử trên chuỗi
 Toán tử gán: =
 Toán tử ghép chuỗi: +
 Toán tử so sánh: >, >=, <, <=, ==, !=
 Toán tử xuất, nhập: <<, >>

Kiểu dữ liệu cơ sở & lớp dựng sẵn

15
1 2 3 4 5 Kiểu chuỗi ký tự

VC



Kiểu chuỗi 8-bit

BB

Các phương thức của kiểu string (xem chi tiết
trong [OOP] trang 58-59).











length(): trả về chiều dài chuỗi.
substr(): trích ra chuỗi con.
insert(): chèn ký tự hoặc chuỗi vào chuỗi cho trước.
erase(): xóa một số ký tự tại vị trí cho trước.
find(), find_first_of(): tìm ký tự hoặc chuỗi trong chuỗi cho trước
từ trái sang phải.
replace(): thay thế một đoạn con trong chuỗi cho trước.
rfind(), find_last_of(): ngược với find() và find_first_of().
find_first_not_of(), find_last_not_of(): tìm vị trí đầu tiên/cuối
cùng khác với ký tự hay chuỗi cho trước.
swap(): hoán chuyển nội dung 2 chuỗi.
char* c_str(): trả về chuỗi ký tự dạng cũ của C (ký tự kết thúc NULL).
Kiểu dữ liệu cơ sở & lớp dựng sẵn

16
1 2 3 4 5 Kiểu chuỗi ký tự

VC



Kiểu chuỗi 8-bit

BB

Ví dụ về các toán tử trên chuỗi
1
2
3
4
5
6
7
8
9
10
11
12
13
14

#include <string>
#include <iostream>

using namespace std;
void main()
{
string str1(“Object Oriented”);
string str2 = “Programming”;

string str3 = str1 + “ ” + str2 + “.”;
cout << “Final string: ” << str3 << endl;
cout << “Length: ” << str3.length() << endl;
char cFirst = str3[0];
int iLastPos = str3.length() – 1;

char cLast = str3[iLastPos];
}
Kiểu dữ liệu cơ sở & lớp dựng sẵn

17
1 2 3 4 5 Kiểu chuỗi ký tự

VC


BB

Kiểu chuỗi 8-bit

Lưu ý
 Toán tử >> chỉ cho phép đọc một dãy gồm
các ký tự liền nhau (không có khoảng trắng)
vào đối tượng có kiểu string.
 Để đọc chuỗi có khoảng trắng từ đối tượng
nhập của lớp istream (ví dụ cin) có thể sử
dụng hàm getline() (trong namespace std)
Đây là hàm toàn cục chứ không phải thành viên của một lớp,
khác với phương thức cin.getline() để đọc chuỗi dạng cũ của C.
1
2

istream& std::getline(istream& is, string& str, char delim);
istream& std::getline(istream& is, string& str);
Kiểu dữ liệu cơ sở & lớp dựng sẵn

18
1 2 3 4 5 Kiểu chuỗi ký tự

VC



Kiểu chuỗi 8-bit

BB

Ví dụ về nhập chuỗi có khoảng trắng
1
2
3
4
5
6
7
8
9
10
11

#include <iostream>
#include <string>

using namespace std;
void main()
{
string str;

cout << “Enter a string: ”;
getline(cin, str);
cout << “Inputed string: ” << str;
}

Enter a string: Object Oriented Programming _
_
Inputed string: Object Oriented Programming_
Kiểu dữ liệu cơ sở & lớp dựng sẵn

19
1 2 3 4 5 Kiểu chuỗi ký tự

VC


BB

Kiểu chuỗi 16-bit

Cách thao tác hoàn toàn tương tự như kiểu
chuỗi 8-bit nhưng cần lưu ý:
 Hằng chuỗi được đặt trước bằng ký tự L.
 Phương thức length() trả về số lượng ký tự
chứ không phải số lượng byte để lưu trữ.
 Sử dụng thay thế:
string → wstring , char → wchar_t
• ostream → wostream, istream → wistream
• cin → wcin, cout → wcout.
•

Kiểu dữ liệu cơ sở & lớp dựng sẵn

20
1 2 3 4 5 Kiểu chuỗi ký tự

VC



Kiểu chuỗi 16-bit

BB

Ví dụ về các toán tử trên chuỗi
1
2
3
4
5
6
7
8
9
10
11
12
13
14

#include <string>
#include <iostream>

using namespace std;
void main()
{
wstring str1(L“Object Oriented”);
wstring str2 = L“Programming”;

wstring str3 = str1 + L“ ” + str2 + L“.”;
wcout << L“String: ” << str3 << endl;
cout << “Length: ” << str3.length() << endl;
wchar_t wcFirst = str3[0];
int iLastPos = str3.length() – 1;

wchar_t wcLast = str3[iLastPos];
}
Kiểu dữ liệu cơ sở & lớp dựng sẵn

21
1 2 3 4 5 Dữ liệu động

VC


BB

Một số lớp hữu ích

Thư viện chuẩn STL hỗ trợ sẵn nhiều lớp phục
vụ cho việc lập trình với dữ liệu động
Tên lớp

Chỉ thị #include

vector<T>

#include <vector>

list<T>

#include <list>

stack<T>

#include <stack>

queue<T>

#include <queue>

priority_queue<T>

#include <queue>/<functional>

Một số lớp dựng sẵn không chuẩn
 CString, CArray, CList trong thư viên lớp MFC
(Microsoft Foundation Classes) trong Visual C++.
Kiểu dữ liệu cơ sở & lớp dựng sẵn

22
1 2 3 4 5 Dữ liệu động

VC



Ví dụ sử dụng lớp vector<T>

BB

Kích thước mảng được xác định từ đầu
1
2
3
4
5
6
7
8
9
10
11
12
13
14

#include <vector>
#include <iostream>

using namespace std;
void main() {
int i, n;
vector<int> a;
cout << “Enter the number of elements: ”;

cin >> n;
a.resize(n);
for (i = 0; i < n; i++) {
cout << “Enter a[” << i << “]: ”;
cin >> a[i];

}
}
Kiểu dữ liệu cơ sở & lớp dựng sẵn

23
1 2 3 4 5 Dữ liệu động

VC



Ví dụ sử dụng lớp vector<T>

BB

Kích thước mảng tự động điều chỉnh
1
2
3
4
5
6
7
8
9
10
11
12
13
14

#include <vector>
#include <iostream>

using namespace std;
void main() {
int i, n, nTemp;
vector<int> a;
cout << “Enter the number of elements: ”;

cin >> n;
for (i = 0; i < n; i++) {
cout << “Enter a[” << i << “]: ”;
cin >> nTemp;
a.push_back(nTemp);

}
}
Kiểu dữ liệu cơ sở & lớp dựng sẵn

24
1 2 3 4 5 Đối sánh các kiểu dữ liệu cơ sở của C++, Java và C#

VC


BB

Đọc thêm [OOP] trang 68-75

Kiểu dữ liệu số và vô hướng.
Kiểu chuỗi ký tự.
Mảng động một chiều và nhiều chiều.

Kiểu dữ liệu cơ sở & lớp dựng sẵn

25
1 2 3 4 5 Những điểm hạn chế của C++

VC


BB

Thảo luận

Kiểu dữ liệu cơ sở & lớp dựng sẵn

26
1 2 3 4 5

VC


BB

Một số thuật ngữ

basic data type: kiểu dữ liệu cơ sở (của NNLT)
built-in class: lớp xây dựng sẵn
built-in data type: kiểu dữ liệu có sẵn (của NNLT)
built-in dynamic array: kiểu mảng động có sẵn (của NNLT)
built-in string: kiểu dữ liệu chuỗi có sẵn (của NNLT)
dynamic array: mảng động (kích thước xác định lúc chạy chương trình)
FIFO (first in first out): cơ chế hoạt động của ngăn xếp (vào trước ra trước)
LIFO (last in first out): cơ chế hoạt động của hàng đợi (vào sau ra trước)
MFC (Microsoft Foundation Classes): thư viện lớp của Visual C++
priority queue: hàng đợi theo độ ưu tiên
read-only variable: biến chỉ được phép đọc
static array: mảng tĩnh (kích thước xác định lúc khai báo)
STL (standard template library): thư viện chuẩn của C++

Kiểu dữ liệu cơ sở & lớp dựng sẵn

27
1 2 3 4 5

VC


BB

Tài liệu tham khảo

[OOP] Chương 2 – Kiểu dữ liệu cơ sở và lớp
dựng sẵn (trang 51-75)
[Primer] Chapter 3 – Dealing with Data
Simple Variables, Floating-Point Numbers
& C++ Arithmetic Operators (trang 66-105)

[Primer] Chapter 4 – Compound Types
Strings (trang 114-125)
Introducing the string Class (trang 125-131)

[Primer] Chapter 16 – The string class
and the STL
The string Class (trang 857-872)
Kiểu dữ liệu cơ sở & lớp dựng sẵn

28
1 2 3 4 5

VC


BB

Bài tập

Bài tập 3.1: Sửa lại bài tập 2.8 sử dụng lớp
string thay thế kiểu chuỗi ký tự dạng cũ của C.
Bài tập 3.2: Sửa lại bài tập 2.9 sử dụng lớp
vector thay thế mảng tĩnh (CDynamicArray).
Bài tập 3.3: Cài đặt lớp chuỗi ký tự (CString)
sử dụng mảng ký tự được cấp phát động để
lưu trữ, hỗ trợ một số phương thức cơ bản như:
 Nhập, xuất, khởi tạo, lấy/gán, lấy độ dài.
 Tạo chuỗi in, thường, đảo chuỗi, nối chuỗi.
 So sánh với chuỗi khác.
Kiểu dữ liệu cơ sở & lớp dựng sẵn

29
1 2 3 4 5

VC


BB

Bài tập

Bài tập 3.4: Xây dựng lớp ma trận (CMatrix) sử
dụng lớp vector để lưu trữ, hỗ trợ một số
phương thức cơ bản như:
 Nhập, xuất, khởi tạo.
 Lấy/Gán phần tử tại vị trí bất kỳ.
 Cộng, trừ, nhân với ma trận khác phù hợp.
Bài tập 3.5: Xây dựng lớp mảng nhọn, là mảng
hai chiều với số cột trên mỗi dòng có thể khác
nhau (CJaggedArray) sử dụng lớp vector để
lưu trữ, hỗ trợ một số phương thức cơ bản.
Kiểu dữ liệu cơ sở & lớp dựng sẵn

30

Weitere ähnliche Inhalte

Was ist angesagt?

Phần 7: Mảng một chiều
Phần 7: Mảng một chiềuPhần 7: Mảng một chiều
Phần 7: Mảng một chiều
Huy Rùa
 
Phần 1: Các khái niệm cơ bản về lập trình
Phần 1: Các khái niệm cơ bản về lập trìnhPhần 1: Các khái niệm cơ bản về lập trình
Phần 1: Các khái niệm cơ bản về lập trình
Huy Rùa
 
Phần 12: Hàm (Nâng cao)
Phần 12: Hàm (Nâng cao)Phần 12: Hàm (Nâng cao)
Phần 12: Hàm (Nâng cao)
Huy Rùa
 
Phần 2: Giới thiệu ngôn ngữ lập trình C
Phần 2: Giới thiệu ngôn ngữ lập trình CPhần 2: Giới thiệu ngôn ngữ lập trình C
Phần 2: Giới thiệu ngôn ngữ lập trình C
Huy Rùa
 
Phần 8: Mảng hai chiều
Phần 8: Mảng hai chiềuPhần 8: Mảng hai chiều
Phần 8: Mảng hai chiều
Huy Rùa
 
Lap trinh huong_doi_tuong_cpp_dhct_lesson09
Lap trinh huong_doi_tuong_cpp_dhct_lesson09Lap trinh huong_doi_tuong_cpp_dhct_lesson09
Lap trinh huong_doi_tuong_cpp_dhct_lesson09
xcode_esvn
 
Bài giảng ngôn ngữ lập trình c c++ phạm hồng thái[bookbooming.com]
Bài giảng ngôn ngữ lập trình c c++   phạm hồng thái[bookbooming.com]Bài giảng ngôn ngữ lập trình c c++   phạm hồng thái[bookbooming.com]
Bài giảng ngôn ngữ lập trình c c++ phạm hồng thái[bookbooming.com]
bookbooming1
 

Was ist angesagt? (17)

Phần 7: Mảng một chiều
Phần 7: Mảng một chiềuPhần 7: Mảng một chiều
Phần 7: Mảng một chiều
 
Phần 1: Các khái niệm cơ bản về lập trình
Phần 1: Các khái niệm cơ bản về lập trìnhPhần 1: Các khái niệm cơ bản về lập trình
Phần 1: Các khái niệm cơ bản về lập trình
 
Phần 12: Hàm (Nâng cao)
Phần 12: Hàm (Nâng cao)Phần 12: Hàm (Nâng cao)
Phần 12: Hàm (Nâng cao)
 
Phần 2: Giới thiệu ngôn ngữ lập trình C
Phần 2: Giới thiệu ngôn ngữ lập trình CPhần 2: Giới thiệu ngôn ngữ lập trình C
Phần 2: Giới thiệu ngôn ngữ lập trình C
 
Phần 8: Mảng hai chiều
Phần 8: Mảng hai chiềuPhần 8: Mảng hai chiều
Phần 8: Mảng hai chiều
 
Nmlt c01 cac_khainiemcobanvelaptrinh
Nmlt c01 cac_khainiemcobanvelaptrinhNmlt c01 cac_khainiemcobanvelaptrinh
Nmlt c01 cac_khainiemcobanvelaptrinh
 
Oop 2
Oop 2Oop 2
Oop 2
 
Bài giảng Lập trình cơ bản - truongkinhtethucpham.com
Bài giảng Lập trình cơ bản - truongkinhtethucpham.comBài giảng Lập trình cơ bản - truongkinhtethucpham.com
Bài giảng Lập trình cơ bản - truongkinhtethucpham.com
 
Chuong3 c
Chuong3 c Chuong3 c
Chuong3 c
 
Lap trinh huong_doi_tuong_cpp_dhct_lesson09
Lap trinh huong_doi_tuong_cpp_dhct_lesson09Lap trinh huong_doi_tuong_cpp_dhct_lesson09
Lap trinh huong_doi_tuong_cpp_dhct_lesson09
 
Bài giảng ngôn ngữ lập trình c c++ phạm hồng thái[bookbooming.com]
Bài giảng ngôn ngữ lập trình c c++   phạm hồng thái[bookbooming.com]Bài giảng ngôn ngữ lập trình c c++   phạm hồng thái[bookbooming.com]
Bài giảng ngôn ngữ lập trình c c++ phạm hồng thái[bookbooming.com]
 
Mang1 chieu
Mang1 chieuMang1 chieu
Mang1 chieu
 
Lập trình hướng đối tượng - p2
Lập trình hướng đối tượng - p2Lập trình hướng đối tượng - p2
Lập trình hướng đối tượng - p2
 
Chuong5 (2)
Chuong5 (2)Chuong5 (2)
Chuong5 (2)
 
C9 templates
C9 templatesC9 templates
C9 templates
 
Bai07 da hinh
Bai07 da hinhBai07 da hinh
Bai07 da hinh
 
C# coban
C# cobanC# coban
C# coban
 

Ähnlich wie Pplthdt c03 kieu_dulieucoso_lopdungsan_v13.09a

Nmlt c03 cac_kieudulieucoso_in
Nmlt c03 cac_kieudulieucoso_inNmlt c03 cac_kieudulieucoso_in
Nmlt c03 cac_kieudulieucoso_in
Huy Nguyễn
 
Phần 9: Chuỗi ký tự
Phần 9: Chuỗi ký tựPhần 9: Chuỗi ký tự
Phần 9: Chuỗi ký tự
Huy Rùa
 
Bai giangtrenlop
Bai giangtrenlopBai giangtrenlop
Bai giangtrenlop
Hồ Lợi
 
06 tong quan ve ngon ngu c
06 tong quan ve ngon ngu c06 tong quan ve ngon ngu c
06 tong quan ve ngon ngu c
Trí Nguyễn
 
Nmlt c09 chuoi_kytu_in
Nmlt c09 chuoi_kytu_inNmlt c09 chuoi_kytu_in
Nmlt c09 chuoi_kytu_in
Huy Nguyễn
 
chapter2.2.Variable.datatype.Arithmetic_Expression.pdf
chapter2.2.Variable.datatype.Arithmetic_Expression.pdfchapter2.2.Variable.datatype.Arithmetic_Expression.pdf
chapter2.2.Variable.datatype.Arithmetic_Expression.pdf
NguyenDiem50
 
6 - Lập trình C++ cơ bản_print.pdf
6 - Lập trình C++ cơ bản_print.pdf6 - Lập trình C++ cơ bản_print.pdf
6 - Lập trình C++ cơ bản_print.pdf
SonNguyen642431
 

Ähnlich wie Pplthdt c03 kieu_dulieucoso_lopdungsan_v13.09a (20)

Nmlt c03 cac_kieudulieucoso_in
Nmlt c03 cac_kieudulieucoso_inNmlt c03 cac_kieudulieucoso_in
Nmlt c03 cac_kieudulieucoso_in
 
Nmlt c03 cac_kieudulieucoso
Nmlt c03 cac_kieudulieucosoNmlt c03 cac_kieudulieucoso
Nmlt c03 cac_kieudulieucoso
 
Chapter07 io
Chapter07 ioChapter07 io
Chapter07 io
 
Basic C programming
Basic C programmingBasic C programming
Basic C programming
 
06 tong quan ve ngon ngu c
06 tong quan ve ngon ngu c06 tong quan ve ngon ngu c
06 tong quan ve ngon ngu c
 
Lect09 string
Lect09 stringLect09 string
Lect09 string
 
Oop unit 02 java cơ bản
Oop unit 02 java cơ bảnOop unit 02 java cơ bản
Oop unit 02 java cơ bản
 
C++ can ban
C++ can banC++ can ban
C++ can ban
 
Thdc3 Lap Trinh C
Thdc3 Lap Trinh CThdc3 Lap Trinh C
Thdc3 Lap Trinh C
 
Phần 9: Chuỗi ký tự
Phần 9: Chuỗi ký tựPhần 9: Chuỗi ký tự
Phần 9: Chuỗi ký tự
 
Bai giangtrenlop
Bai giangtrenlopBai giangtrenlop
Bai giangtrenlop
 
Giới thiệu ngôn ngữ lập trình C++
Giới thiệu ngôn ngữ lập trình C++Giới thiệu ngôn ngữ lập trình C++
Giới thiệu ngôn ngữ lập trình C++
 
chuỗi ký tự c++
chuỗi ký tự c++chuỗi ký tự c++
chuỗi ký tự c++
 
Chuong 2@ngon ngu c
Chuong 2@ngon ngu cChuong 2@ngon ngu c
Chuong 2@ngon ngu c
 
06 tong quan ve ngon ngu c
06 tong quan ve ngon ngu c06 tong quan ve ngon ngu c
06 tong quan ve ngon ngu c
 
Stl string
Stl stringStl string
Stl string
 
Nmlt c09 chuoi_kytu_in
Nmlt c09 chuoi_kytu_inNmlt c09 chuoi_kytu_in
Nmlt c09 chuoi_kytu_in
 
chapter2.2.Variable.datatype.Arithmetic_Expression.pdf
chapter2.2.Variable.datatype.Arithmetic_Expression.pdfchapter2.2.Variable.datatype.Arithmetic_Expression.pdf
chapter2.2.Variable.datatype.Arithmetic_Expression.pdf
 
Nhập môn lập trình - Vương Bá Thịnh
Nhập môn lập trình - Vương Bá ThịnhNhập môn lập trình - Vương Bá Thịnh
Nhập môn lập trình - Vương Bá Thịnh
 
6 - Lập trình C++ cơ bản_print.pdf
6 - Lập trình C++ cơ bản_print.pdf6 - Lập trình C++ cơ bản_print.pdf
6 - Lập trình C++ cơ bản_print.pdf
 

Kürzlich hochgeladen

SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
ChuThNgnFEFPLHN
 
Bài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptx
Bài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptxBài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptx
Bài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptx
DungxPeach
 

Kürzlich hochgeladen (20)

1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
 
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
SD-05_Xây dựng website bán váy Lolita Alice - Phùng Thị Thúy Hiền PH 2 7 8 6 ...
 
Bài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptx
Bài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptxBài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptx
Bài tập nhóm Kỹ Năng Gỉai Quyết Tranh Chấp Lao Động (1).pptx
 
Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hội
Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hộiTrắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hội
Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hội
 
powerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgs
powerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgspowerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgs
powerpoint mẫu họp phụ huynh cuối kì 2 học sinh lớp 7 bgs
 
kinh tế chính trị mác lênin chương hai và hàng hoá và sxxhh
kinh tế chính trị mác lênin chương hai và hàng hoá và sxxhhkinh tế chính trị mác lênin chương hai và hàng hoá và sxxhh
kinh tế chính trị mác lênin chương hai và hàng hoá và sxxhh
 
TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...
TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...
TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...
 
cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-
cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-
cac-cau-noi-tthcm.pdf-cac-cau-noi-tthcm-
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdf
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI KỸ NĂNG VIẾT ĐOẠN VĂN NGHỊ LUẬN XÃ HỘI 200 C...
 
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdfCampbell _2011_ - Sinh học - Tế bào - Ref.pdf
Campbell _2011_ - Sinh học - Tế bào - Ref.pdf
 
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng ĐồngGiới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
Giới thiệu Dự án Sản Phụ Khoa - Y Học Cộng Đồng
 
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfBỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
 
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
SÁNG KIẾN ÁP DỤNG CLT (COMMUNICATIVE LANGUAGE TEACHING) VÀO QUÁ TRÌNH DẠY - H...
 

Pplthdt c03 kieu_dulieucoso_lopdungsan_v13.09a

  • 1. Bộ môn Công nghệ phần mềm Khoa Công nghệ thông tin Trường Đại học Khoa học Tự nhiên VCBB© 13.09a class operator true public C++ PP LT HƯỚNG ĐỐI TƯỢNG cout catch ThS. Đặng Bình Phương this dbphuong@fit.hcmus.edu.vn KIỂU DỮ LIỆU CƠ SỞ & LỚP DỰNG SẴN inline new cin friend STL bool using OOP try virtual false private throw delete 1
  • 2. 1 2 3 4 5 VC  BB Nội dung Các kiểu dữ liệu cơ sở và phép toán Kiểu chuỗi kí tự Dữ liệu động Đối sánh các kiểu dữ liệu cơ sở của C++, Java và C# Những điểm hạn chế của C++ #include <iostream> using namespace std; void main() { cout << “Hello World”; cout << endl; Kiểu dữ liệu cơ sở & lớp dựng sẵn 2
  • 3. 1 2 3 4 5 Các kiểu dữ liệu cơ sở và phép toán VC  BB Các kiểu dữ liệu cơ sở NNLT C++ hỗ trợ 4 kiểu cơ sở sau: Kiểu số nguyên • • • • Số nguyên không dấu Số nguyên có dấu Kiểu ký tự • Kiểu số thực Ký tự 1 byte (bảng mã ASCII) Ký tự 2 byte (bảng mã quốc tế UTF-16) C++ • Số có độ chính xác đơn (single-precision) • Số có độ chính xác kép (double-precision) Kiểu luận lý Giá trị đúng (true) hoặc sai (false) Kiểu dữ liệu cơ sở & lớp dựng sẵn 3
  • 4. 1 2 3 4 5 Các kiểu dữ liệu cơ sở và phép toán VC  BB Kiểu số nguyên Kiểu số nguyên có dấu  Miền giá trị (số n-bit): -2n – 1 … +2n – 1 – 1 Kiểu (Type) Độ lớn (Byte) Miền giá trị (Range) char 1 –128 … +127 int 2 4 –32.768 … +32.767 –2.147.483.648 … +2.147.483.647 short 2 –32.768 … +32.767 long 4 –2.147.483.648 … +2.147.483.647 long long 8 –9,223,372,036,854,775,808 … 9,223,372,036,854,775,807 Một số môi trường lập trình đồng nhất kiểu long long với kiểu long cho nên kiểu này ít được sử dụng trong lập trình ứng dụng. Kiểu dữ liệu cơ sở & lớp dựng sẵn 4
  • 5. 1 2 3 4 5 Các kiểu dữ liệu cơ sở và phép toán VC  BB Kiểu số nguyên Kiểu số nguyên không dấu  Miền giá trị (số n-bit): 0 … 2n – 1 Kiểu (Type) Độ lớn (Byte) Miền giá trị (Range) unsigned char 1 0 … 255 unsigned int 2 4 0 … 65535 0 … 4.294.967.295 unsigned short 2 0 … 65535 unsigned long 4 0 … 4.294.967.295 unsigned long long 8 0 … 18,446,744,073,709,551,615 Một số môi trường lập trình đồng nhất kiểu unsigned long long với kiểu unsigned long cho nên kiểu này ít được sử dụng trong lập trình ứng dụng. Kiểu dữ liệu cơ sở & lớp dựng sẵn 5
  • 6. 1 2 3 4 5 Các kiểu dữ liệu cơ sở và phép toán VC  BB Các phép toán trên kiểu số nguyên Các phép toán số học:  Phép cộng: +, phép trừ: -, phép nhân: *  Phép chia lấy phần nguyên: /  Phép chia lấy phần dư: % Hằng số nguyên có thể biểu diễn ở 3 dạng:  Bát phân: viết bắt đầu bằng số 0.  Thập lục phân: viết bắt đầu bằng 0x.  Thập phân: viết bắt đầu bằng số từ 1 đến 9. Kiểu dữ liệu cơ sở & lớp dựng sẵn 6
  • 7. 1 2 3 4 5 Các kiểu dữ liệu cơ sở và phép toán VC  BB Kiểu số thực Cấu trúc lưu trữ bên trong của số thực được thiết kế theo chuẩn số chấm động (floating-point) của IEEE. Kiểu (Type) Độ lớn (Byte) float 4 Miền giá trị (Range) 1,4x10-45 … 3,4x1038 float có độ chính xác đơn (single-precision), chính xác đến 7 chữ số. double 8 4,94x10-324 … 1,79x10308 double có độ chính xác kép (double-precision), chính xác đến 15 chữ số. long double 10 … 3,4x104932 Một số môi trường lập trình đồng nhất kiểu long double với kiểu double cho nên kiểu này ít được sử dụng trong lập trình ứng dụng. Kiểu dữ liệu cơ sở & lớp dựng sẵn 7
  • 8. 1 2 3 4 5 Các kiểu dữ liệu cơ sở và phép toán VC  BB Các phép toán trên kiểu số thực Các phép toán số học +, -, *, / Các hàm toán học thường dùng 1 2 #include <cmath> // C++ chuẩn #include <math.h> // C hoặc C++ không chuẩn Công dụng Nguyên mẫu hàm double sqrt(double x); Tính double pow(double x, double y); Tính 𝑥 𝑦 (𝑥 > 0) double exp(double x); Tính 𝑒 𝑥 (𝑒 ≈ 2,71828) double log(double x); Tính ln 𝑥 𝑥 double log10(double x); Tính log10 𝑥 Kiểu dữ liệu cơ sở & lớp dựng sẵn 8
  • 9. 1 2 3 4 5 Các kiểu dữ liệu cơ sở và phép toán VC  BB Các phép toán trên kiểu số thực Các hàm toán học thường dùng (tiếp theo) Công dụng Nguyên mẫu hàm int abs(int x); long labs(long x); double fabs(double x); Tính 𝑥 (x kiểu int) Tính 𝑥 (x kiểu long) Tính 𝑥 (x kiểu double) double cos(double x); double sin(double x); double tan(double x); Tính cos 𝑥 , sin 𝑥 , tan 𝑥 (x tính theo radian, 1 radian bằng 180/𝜋 độ) double acos(double x); double asin(double x); double atan(double x); Tính cos −1 𝑥 Tính sin−1 𝑥 Tính tan−1 𝑥 double floor(double x); Tính 𝑥 double ceil(double x); Tính 𝑥 Kiểu dữ liệu cơ sở & lớp dựng sẵn 9
  • 10. 1 2 3 4 5 Các kiểu dữ liệu cơ sở và phép toán VC  BB Kiểu luận lý Khai báo kiểu bool đối với C++ chuẩn hoặc kiểu số nguyên bất kỳ (short, long, …).  Giá trị khác 0 nghĩa là đúng (true).  Giá trị bằng 0 nghĩa là sai (false). Lưu ý: Kết quả lượng giá một biểu thức luận lý bất kỳ thực hiện bởi C++ luôn cho kết quả là 0 (false) hay 1 (true). Các phép toán  Kết hợp: && (and), || (or), ~ (not)  So sánh: >, >=, <, <=, ==, != Kiểu dữ liệu cơ sở & lớp dựng sẵn 10
  • 11. 1 2 3 4 5 Các kiểu dữ liệu cơ sở và phép toán VC  BB Kiểu ký tự Kiểu ký tự 8-bit  Kiểu char hoặc unsigned char.  Lưu mã ASCII của ký tự, giá trị từ 0 đến 255.  Một số ký tự nên nhớ Ký tự Mã ‘ ’ (khoảng trắng) 32 ‘0’ .. ‘9’ 48 .. 57 ‘A’ .. ‘Z’ 65 .. 90 ‘a’ .. ‘z’ 97 .. 122 Kiểu dữ liệu cơ sở & lớp dựng sẵn 11
  • 12. 1 2 3 4 5 Các kiểu dữ liệu cơ sở và phép toán VC  BB Kiểu ký tự Kiểu ký tự 16-bit  Kiểu wchar_t (#include <cwchar>)  Lưu trữ dự trên bảng mã quốc tế UTF-16 (một dạng mã Unicode). • Mã UTF-16 của ký tự thông thường (‘0’ đến ‘9’, ‘a’ đến ‘z’, ‘A’ đến ‘Z’, …) trùng mã ASCII.  Hằng ký tự kiểu wchar_t được đặt trước bằng chứ L. • Lưu ý, ‘B’ và L‘B’ như nhau (cùng giá trị 66) nhưng kích thước trong bộ nhớ khác nhau (sizeof(‘B’) = 1, sizeof(L‘B’) = 2) Kiểu dữ liệu cơ sở & lớp dựng sẵn 12
  • 13. 1 2 3 4 5 Các kiểu dữ liệu cơ sở và phép toán VC  BB Kiểu ký tự Một số hàm liên quan đến ký tự Nguyên mẫu hàm bool isupper(char ch); bool iswupper(wchar_t ch); Công dụng Kiểm tra ch có phải là ký tự hoa? char toupper(char ch); Trả về ký tự hoa wchar_t towupper(wchar_t ch); tương ứng với ch bool islower(char ch); bool iswlower(wchar_t ch); Kiểm tra ch có phải là ký tự thường? char tolower(char ch); Trả về ký tự thường wchar_t towlower(wchar_t ch); tương ứng với ch Kiểu dữ liệu cơ sở & lớp dựng sẵn 13
  • 14. 1 2 3 4 5 Kiểu chuỗi ký tự VC  BB Giới thiệu Kiểu chuỗi ký tự trong C++ không được xây dựng sẵn (không phải là “built-in string”) mà được cài đặt trong một lớp của thư viện chuẩn STL (C++ Standard Template Library). Hai kiểu dữ liệu chuỗi  string (chuỗi ký tự 8-bit): mỗi ký tự trong chuỗi là một ký tự 8-bit có kiểu là char.  wstring (chuỗi ký tự 16-bit): mỗi ký tự trong chuỗi là một ký tự 16-bit có kiểu là wchar_t. Kiểu dữ liệu cơ sở & lớp dựng sẵn 14
  • 15. 1 2 3 4 5 Kiểu chuỗi ký tự VC  BB Kiểu chuỗi 8-bit Khai báo 1 2 #include <string> using namespace std; Một số toán tử trên chuỗi  Toán tử gán: =  Toán tử ghép chuỗi: +  Toán tử so sánh: >, >=, <, <=, ==, !=  Toán tử xuất, nhập: <<, >> Kiểu dữ liệu cơ sở & lớp dựng sẵn 15
  • 16. 1 2 3 4 5 Kiểu chuỗi ký tự VC  Kiểu chuỗi 8-bit BB Các phương thức của kiểu string (xem chi tiết trong [OOP] trang 58-59).           length(): trả về chiều dài chuỗi. substr(): trích ra chuỗi con. insert(): chèn ký tự hoặc chuỗi vào chuỗi cho trước. erase(): xóa một số ký tự tại vị trí cho trước. find(), find_first_of(): tìm ký tự hoặc chuỗi trong chuỗi cho trước từ trái sang phải. replace(): thay thế một đoạn con trong chuỗi cho trước. rfind(), find_last_of(): ngược với find() và find_first_of(). find_first_not_of(), find_last_not_of(): tìm vị trí đầu tiên/cuối cùng khác với ký tự hay chuỗi cho trước. swap(): hoán chuyển nội dung 2 chuỗi. char* c_str(): trả về chuỗi ký tự dạng cũ của C (ký tự kết thúc NULL). Kiểu dữ liệu cơ sở & lớp dựng sẵn 16
  • 17. 1 2 3 4 5 Kiểu chuỗi ký tự VC  Kiểu chuỗi 8-bit BB Ví dụ về các toán tử trên chuỗi 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <string> #include <iostream> using namespace std; void main() { string str1(“Object Oriented”); string str2 = “Programming”; string str3 = str1 + “ ” + str2 + “.”; cout << “Final string: ” << str3 << endl; cout << “Length: ” << str3.length() << endl; char cFirst = str3[0]; int iLastPos = str3.length() – 1; char cLast = str3[iLastPos]; } Kiểu dữ liệu cơ sở & lớp dựng sẵn 17
  • 18. 1 2 3 4 5 Kiểu chuỗi ký tự VC  BB Kiểu chuỗi 8-bit Lưu ý  Toán tử >> chỉ cho phép đọc một dãy gồm các ký tự liền nhau (không có khoảng trắng) vào đối tượng có kiểu string.  Để đọc chuỗi có khoảng trắng từ đối tượng nhập của lớp istream (ví dụ cin) có thể sử dụng hàm getline() (trong namespace std) Đây là hàm toàn cục chứ không phải thành viên của một lớp, khác với phương thức cin.getline() để đọc chuỗi dạng cũ của C. 1 2 istream& std::getline(istream& is, string& str, char delim); istream& std::getline(istream& is, string& str); Kiểu dữ liệu cơ sở & lớp dựng sẵn 18
  • 19. 1 2 3 4 5 Kiểu chuỗi ký tự VC  Kiểu chuỗi 8-bit BB Ví dụ về nhập chuỗi có khoảng trắng 1 2 3 4 5 6 7 8 9 10 11 #include <iostream> #include <string> using namespace std; void main() { string str; cout << “Enter a string: ”; getline(cin, str); cout << “Inputed string: ” << str; } Enter a string: Object Oriented Programming _ _ Inputed string: Object Oriented Programming_ Kiểu dữ liệu cơ sở & lớp dựng sẵn 19
  • 20. 1 2 3 4 5 Kiểu chuỗi ký tự VC  BB Kiểu chuỗi 16-bit Cách thao tác hoàn toàn tương tự như kiểu chuỗi 8-bit nhưng cần lưu ý:  Hằng chuỗi được đặt trước bằng ký tự L.  Phương thức length() trả về số lượng ký tự chứ không phải số lượng byte để lưu trữ.  Sử dụng thay thế: string → wstring , char → wchar_t • ostream → wostream, istream → wistream • cin → wcin, cout → wcout. • Kiểu dữ liệu cơ sở & lớp dựng sẵn 20
  • 21. 1 2 3 4 5 Kiểu chuỗi ký tự VC  Kiểu chuỗi 16-bit BB Ví dụ về các toán tử trên chuỗi 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <string> #include <iostream> using namespace std; void main() { wstring str1(L“Object Oriented”); wstring str2 = L“Programming”; wstring str3 = str1 + L“ ” + str2 + L“.”; wcout << L“String: ” << str3 << endl; cout << “Length: ” << str3.length() << endl; wchar_t wcFirst = str3[0]; int iLastPos = str3.length() – 1; wchar_t wcLast = str3[iLastPos]; } Kiểu dữ liệu cơ sở & lớp dựng sẵn 21
  • 22. 1 2 3 4 5 Dữ liệu động VC  BB Một số lớp hữu ích Thư viện chuẩn STL hỗ trợ sẵn nhiều lớp phục vụ cho việc lập trình với dữ liệu động Tên lớp Chỉ thị #include vector<T> #include <vector> list<T> #include <list> stack<T> #include <stack> queue<T> #include <queue> priority_queue<T> #include <queue>/<functional> Một số lớp dựng sẵn không chuẩn  CString, CArray, CList trong thư viên lớp MFC (Microsoft Foundation Classes) trong Visual C++. Kiểu dữ liệu cơ sở & lớp dựng sẵn 22
  • 23. 1 2 3 4 5 Dữ liệu động VC  Ví dụ sử dụng lớp vector<T> BB Kích thước mảng được xác định từ đầu 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <vector> #include <iostream> using namespace std; void main() { int i, n; vector<int> a; cout << “Enter the number of elements: ”; cin >> n; a.resize(n); for (i = 0; i < n; i++) { cout << “Enter a[” << i << “]: ”; cin >> a[i]; } } Kiểu dữ liệu cơ sở & lớp dựng sẵn 23
  • 24. 1 2 3 4 5 Dữ liệu động VC  Ví dụ sử dụng lớp vector<T> BB Kích thước mảng tự động điều chỉnh 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <vector> #include <iostream> using namespace std; void main() { int i, n, nTemp; vector<int> a; cout << “Enter the number of elements: ”; cin >> n; for (i = 0; i < n; i++) { cout << “Enter a[” << i << “]: ”; cin >> nTemp; a.push_back(nTemp); } } Kiểu dữ liệu cơ sở & lớp dựng sẵn 24
  • 25. 1 2 3 4 5 Đối sánh các kiểu dữ liệu cơ sở của C++, Java và C# VC  BB Đọc thêm [OOP] trang 68-75 Kiểu dữ liệu số và vô hướng. Kiểu chuỗi ký tự. Mảng động một chiều và nhiều chiều. Kiểu dữ liệu cơ sở & lớp dựng sẵn 25
  • 26. 1 2 3 4 5 Những điểm hạn chế của C++ VC  BB Thảo luận Kiểu dữ liệu cơ sở & lớp dựng sẵn 26
  • 27. 1 2 3 4 5 VC  BB Một số thuật ngữ basic data type: kiểu dữ liệu cơ sở (của NNLT) built-in class: lớp xây dựng sẵn built-in data type: kiểu dữ liệu có sẵn (của NNLT) built-in dynamic array: kiểu mảng động có sẵn (của NNLT) built-in string: kiểu dữ liệu chuỗi có sẵn (của NNLT) dynamic array: mảng động (kích thước xác định lúc chạy chương trình) FIFO (first in first out): cơ chế hoạt động của ngăn xếp (vào trước ra trước) LIFO (last in first out): cơ chế hoạt động của hàng đợi (vào sau ra trước) MFC (Microsoft Foundation Classes): thư viện lớp của Visual C++ priority queue: hàng đợi theo độ ưu tiên read-only variable: biến chỉ được phép đọc static array: mảng tĩnh (kích thước xác định lúc khai báo) STL (standard template library): thư viện chuẩn của C++ Kiểu dữ liệu cơ sở & lớp dựng sẵn 27
  • 28. 1 2 3 4 5 VC  BB Tài liệu tham khảo [OOP] Chương 2 – Kiểu dữ liệu cơ sở và lớp dựng sẵn (trang 51-75) [Primer] Chapter 3 – Dealing with Data Simple Variables, Floating-Point Numbers & C++ Arithmetic Operators (trang 66-105) [Primer] Chapter 4 – Compound Types Strings (trang 114-125) Introducing the string Class (trang 125-131) [Primer] Chapter 16 – The string class and the STL The string Class (trang 857-872) Kiểu dữ liệu cơ sở & lớp dựng sẵn 28
  • 29. 1 2 3 4 5 VC  BB Bài tập Bài tập 3.1: Sửa lại bài tập 2.8 sử dụng lớp string thay thế kiểu chuỗi ký tự dạng cũ của C. Bài tập 3.2: Sửa lại bài tập 2.9 sử dụng lớp vector thay thế mảng tĩnh (CDynamicArray). Bài tập 3.3: Cài đặt lớp chuỗi ký tự (CString) sử dụng mảng ký tự được cấp phát động để lưu trữ, hỗ trợ một số phương thức cơ bản như:  Nhập, xuất, khởi tạo, lấy/gán, lấy độ dài.  Tạo chuỗi in, thường, đảo chuỗi, nối chuỗi.  So sánh với chuỗi khác. Kiểu dữ liệu cơ sở & lớp dựng sẵn 29
  • 30. 1 2 3 4 5 VC  BB Bài tập Bài tập 3.4: Xây dựng lớp ma trận (CMatrix) sử dụng lớp vector để lưu trữ, hỗ trợ một số phương thức cơ bản như:  Nhập, xuất, khởi tạo.  Lấy/Gán phần tử tại vị trí bất kỳ.  Cộng, trừ, nhân với ma trận khác phù hợp. Bài tập 3.5: Xây dựng lớp mảng nhọn, là mảng hai chiều với số cột trên mỗi dòng có thể khác nhau (CJaggedArray) sử dụng lớp vector để lưu trữ, hỗ trợ một số phương thức cơ bản. Kiểu dữ liệu cơ sở & lớp dựng sẵn 30