1 of 14

C++ programming language

Authors: Trần Đức Mạnh, Trần Đức Khánh, Nguyễn Ngọc Đức, Lê Ngọc Thiện

Buổi 3: Các kiểu dữ liệu số học, string, hàm

2 of 14

Kiểu dữ liệu số học

Định nghĩa:

Trong C++ có 2 dạng dữ liệu số học chính là số nguyên (Integer) và số thực (Floating point).

Khai báo:

<kiểu dữ liệu> <tên biến>;

Ví dụ:

int a;

float b = 0.5;

Category

Type

Minimum size

Integer

short

2 bytes

int

2 bytes

long

4 bytes

long long

8 bytes

Floating point

float

4 bytes

double

8 bytes

long double

8 bytes

3 of 14

Kiểu số nguyên

Số nguyên có dấu (signed): gồm các số nguyên dương (1,2,3,...), số âm (-1, -2, -3) và số 0.

Số nguyên không dấu (unsigned): gồm các số nguyên dương (1,2,3,...) và số 0.

Ví dụ:

signed int a;

unsigned float b;

Chú ý: nếu không khai báo rõ là số nguyên có dấu hay không thì mặc định sẽ là có dấu (signed)

Type

Size

Range (Min)

Range (Max)

signed short/int

2 bytes

-32 768

32 768

unsigned short/int

2 bytes

0

65 535

signed long

4 bytes

-2 147 483 648 (~ -2*109)

2 147 483 648 (~ 2*109)

unsigned long

4 bytes

0

4 294 967 295 (~ 4*109)

signed long long

8 bytes

~ -9*1018

~ 9*1018

unsigned long long

8 bytes

0

~ 18*1018

4 of 14

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.

Ví dụ:

long double a = 4.0;

float b = 6.9e4;

double c = 6.9e-4;

Chú ý:

  • Hằng số dưới dạng floating-point phải có ít nhất 1 chữ số thập phân.
  • Không được so sánh 2 biến số thực bằng nhau hay không.

Type

Size

Range (Min)

Range (Max)

float

4 bytes

± 1.18*10-38

± 3.4*1038

double

8 bytes

± 2.23*10-308

± 1.80*10308

long double

16 bytes

± 3.36*10-4932

± 1.18*104932

5 of 14

Xử lý số học

Chuyển đổi giữa các kiểu dữ liệu:

(<tên kiểu dữ liệu>) <tên biến>

Độ chính xác của số thập phân:

  • Mặc định cout có thể xuất ra số có 6 chữ số (kể cả phần nguyên và thập phân)
  • Kiểu float có độ chính xác 7 chữ số
  • Kiểu double có độ chính xác 16 chữ số

cout << std::setprecision(<số lượng>);

Các hàm làm tròn:

  • ceil: trả ra số nguyên gần nhất lớn hơn hoặc bằng x
  • floor: trả ra số nguyên gần nhất nhỏ hơn hoặc bằng x
  • round: trả ra số nguyên gần x nhất (0.5 làm tròn lên 1)

<tên hàm>(<tên biến>)

6 of 14

Xử lý số học

Các hàm xử lý số học khác

7 of 14

String

Định nghĩa:

Chuỗi ký tự (string) là tập hợp các ký tự được đặt trong dấu ngoặc kép.

Khai báo:

string <tên biến>;

Ví dụ:

string greeting = "Hello";

string clb_tinhoc("ITMO BRAIN");

8 of 14

Nhập xuất chuỗi ký tự

Xuất chuỗi ký tự:

cout << <tên biến>;

Nhập chuỗi ký tự liền nhau ko có dấu cách:

cin >> <tên biến>;

Nhập chuỗi ký tự gồm 1 dòng:

getline(cin, <tên biến>);

Nhập chuỗi ký tự gồm nhiều dòng:

getline(cin, <tên biến>, <ký tự kết thúc>);

9 of 14

Các toán tử, method của String

10 of 14

Các hàm cơ bản String

11 of 14

12 of 14

Hàm (functions)

Ưu điểm

  • Dễ đọc: sqrt (5) rõ ràng và dễ hiểu hơn việc viết một thuật toán để tính căn bậc hai.

  • Dễ bảo trì: Để thay đổi thuật toán, chỉ cần thay đổi hàm (so với thay đổi code trên toàn chương trình).

  • Có thể sử dụng lại: Cho phép người khác sử dụng lại hàm bạn đã viết.

Phân loại

13 of 14

Cấu trúc của hàm

14 of 14

Userful link

From Boss to Sen

https://www.cplusplus.com/reference/string/string/

https://github.com/arduino/ArduinoCore-API/blob/master/api/String.cpp

https://itmobrain.github.io/function-cpp

https://www.javatpoint.com/cpp-strings