1. Dữ liệu(Data)

Trong bài trước về các câu lệnh và cấu trúc của một chương trình, bạn đã biết được phần lớn các code trong một chương trình là câu lệnh và các câu lệnh được nhóm thành các hàm. Các câu lệnh này thực hiện các hành động để tạo ra bất kỳ kết quả nào từ chương trình với yêu cầu nào đó.

Nhưng làm thế nào để các chương trình thực sự tạo ra kết quả nào đó? Thực chất thì để làm được như vậy thì chúng ta cần phải có các thao tác (đọc, thay đổi và viết) dữ liệu. Trong máy tính, dữ liệu là bất kỳ thông tin nào có thể được di chuyển, xử lý hoặc lưu trữ bởi máy tính.

Chú ý: Các chương trình là tập hợp các dòng code thao tác dữ liệu để tạo ra kết quả mong muốn.

Một chương trình có thể thu thập dữ liệu để làm việc theo nhiều cách như: từ file hoặc cơ sở dữ liệu, qua mạng, từ người dùng cung cấp bằng cách nhập thông tin bằng bàn phím hoặc từ lập trình viên đưa các trực tiếp các dữ liệu vào code của chính chương trình. Trong chương trình Hello Word đã học thì chuỗi Hello Word! đã được chèn trực tiếp vào code của chương trình nhằm cung cấp dữ liệu cho chương trình sử dụng. Và sau đó chương trình sẽ thao tác với dữ liệu này bằng cách gửi nó đến màn hình để hiển thị.

2. Đối tượng và biến(Objects and variables)

Tất cả các máy tính đều có bộ nhớ, được gọi là RAM (viết tắt của bộ nhớ truy cập ngẫu nhiên), có sẵn để sử dụng cho các chương trình của bạn. Bạn có thể nghĩ RAM là một loạt các hộp thư có thể được sử dụng để giữ dữ liệu trong khi chương trình đang chạy. Và một dữ liệu nào đó được lưu trữ trong bộ nhớ ở đâu đó, được gọi là một giá trị.

Trong một số ngôn ngữ lập trình cũ hơn (như Apple Basic), bạn có thể truy cập trực tiếp vào các hộp thư này.

Trong C ++, không cho phép truy cập trực tiếp vào bộ nhớ. Thay vào đó, chúng ta truy cập bộ nhớ gián tiếp thông qua một đối tượng. Một đối tượng là một vùng lưu trữ (thường là bộ nhớ) có giá trị và các thuộc tính liên quan khác (chi tiết về đối tượng, chúng ta sẽ đề cập trong các bài học trong tương lai). Khi một đối tượng được khai báo, trình biên dịch sẽ tự động xác định vị trí của đối tượng sẽ được đặt trong bộ nhớ. Kết quả là, thay vì nói hãy lấy giá trị được lưu trong hộp thư số nào đó, chúng ta có thể nói, hãy lấy giá trị được lưu trữ bởi đối tượng này và trình biên dịch biết vị trí trong bộ nhớ để tìm giá trị đó. Điều này có nghĩa là chúng ta có thể tập trung vào việc sử dụng các đối tượng để lưu trữ và truy xuất các giá trị, và không phải lo lắng về vị trí mà chúng thực sự được đặt trong bộ nhớ.

Các đối tượng có thể được đặt tên hoặc không tên (ẩn danh). Một đối tượng được đặt tên được gọi là một biến và tên của đối tượng được gọi là định danh. Trong các chương trình của chúng ta, hầu hết các đối tượng chúng ta tạo sẽ là các biến.

3. Khởi tạo biến

Để tạo một biến, chúng ta sẽ khai báo biến đó và gọi là định nghĩa (chúng ta sẽ làm rõ sự khác biệt giữa khai báo và định nghĩa sau).

Dưới đây, một ví dụ về việc một biến có tên x:

int x; // define a variable named x, of type int

Tại thời điểm biên dịch, khi trình biên dịch nhìn thấy câu lệnh này, nó sẽ ghi chú rằng chúng ta đang có một biến, đặt tên là x và nó thuộc kiểu int (có khá nhiều kiểu khác nhau). Từ thời điểm đó trở đi, bất cứ khi nào trình biên dịch nhìn thấy định danh x, nó sẽ biết rằng chúng ta đã tham chiếu biến này.

Khi chương trình được chạy, biến sẽ được khởi tạo. Hay nói cách khác là đối tượng sẽ được tạo và gán địa chỉ bộ nhớ. Các biến phải được khởi tạo trước khi chúng có thể được sử dụng để lưu trữ các giá trị. Ví dụ, Ta có biến x được khởi tạo tại vị trí bộ nhớ 140. Bất cứ khi nào chương trình sử dụng biến x, nó sẽ truy cập giá trị trong bộ nhớ tại vị trí 140. Một đối tượng được khởi tạo đôi khi cũng được gọi là một thể hiện(instance).

4. Các kiểu dữ liệu

Chúng ta đã nói về các biến là một vùng lưu trữ và được đặt tên, có thể lưu trữ một giá trị dữ liệu. Một kiểu dữ liệu (thường được gọi là type) cho trình biên dịch biết biến đó thuộc kiểu giá trị nào (ví dụ: một số, một chữ cái, văn bản, vv.).

Trong ví dụ trên, biến x của chúng ta được đưa ra kiểu int, có nghĩa là biến x sẽ đại diện cho một giá trị nguyên. Một số nguyên là một số có thể được viết mà không có thành phần phân số, chẳng hạn như 4, 27, 0, -2 hoặc -12. Nói tóm lại, chúng ta có thể nói rằng x là một biến số nguyên.

Trong C ++, Kiểu dữ liệu cho biến phải được biết tại thời gian biên dịch (khi chương trình được biên dịch) và Kiểu đó không thể thay đổi nếu không biên dịch lại chương trình. Điều này có nghĩa là một biến số nguyên chỉ có thể giữ các giá trị nguyên. Nếu bạn muốn lưu trữ một số loại giá trị khác, bạn sẽ cần sử dụng một biến khác.

Số nguyên chỉ là một trong nhiều kiểu mà C ++ hỗ trợ. Đối với minh họa ở đây về một ví dụ khai báo một biến sử dụng kiểu dữ liệu double:

double width; // define a variable named width, of type double

C ++ cũng cho phép bạn tạo các kiểu dữ liệu do người dùng định nghĩa ra. Đây là điều mà chúng ta sẽ làm rất nhiều trong các bài học tới và nó là một phần của những gì làm cho C ++ trở nên mạnh mẽ.

Chúng ta sẽ gắn bó với các biến số nguyên vì chúng đơn giản về mặt khái niệm, nhưng chúng ta sẽ khám phá nhiều kiểu dữ kiệu khác trong các bài tiếp theo.

5. Khái báo nhiều biến

Có thể định nghĩa nhiều biến cùng kiểu trong một câu lệnh bằng cách tách các tên bằng dấu phẩy. 2 đoạn code sau đây thực sự giống nhau:

int a;
int b;

giống như:

int a, b;

Khi kháo báo nhiều biến theo cách này, có hai lỗi phổ biến mà các lập trình viên mới có xu hướng mắc phải (không nghiêm trọng, vì trình biên dịch sẽ biết các biến này và yêu cầu bạn sửa chúng):

Lỗi đầu tiên là cho mỗi biến một kiểu dữ liệu khi định nghĩa các biến theo thứ tự.

int a, int b; // wrong (compiler error)
 
int a, b; // correct

Sai lầm thứ hai là cố gắng khai báo các biến của các kiểu dữ liệu khác nhau trong cùng một câu lệnh, điều này không được phép. Các biến có kiểu khác nhau phải được khai báo trong các câu lệnh riêng biệt.

int a, double b; // wrong (compiler error)
 
int a; double b; // correct (but not recommended)
 
// correct and recommended (easier to read)
int a;
double b;

Mẹo

Mặc dù ngôn ngữ cho phép bạn làm như vậy, nhưng hãy tránh khai báo nhiều biến trong một câu lệnh (ngay cả khi chúng cùng kiểu). Thay vào đó, hãy khai báo từng biến trong một câu lệnh riêng (và sau đó sử dụng một comment một dòng để ghi lại những gì nó được sử dụng cho cái gì đó).

6. Tóm lược

Trong C ++, chúng ta sử dụng các biến để truy cập bộ nhớ. Các biến có một code định danh, một kiểu dữ liệu và một giá trị (và một số thuộc tính khác có liên quan ở đây).

Trong bài học tiếp theo, chúng ta sẽ tìm hiểu cách đưa ra các giá trị cho các biến của chúng ta và cách thực sự sử dụng chúng.

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!

5 BÌNH LUẬN

  1. […] Trong bài 1.3 – Giới thiệu về các biến, chúng tôi đã thảo luận về cách định nghĩa biến như int x; làm cho biến được khởi tạo khi câu lệnh này được thực thi. Các tham số của hàm được tạo và khởi tạo khi hàm được gọi và các biến trong thân hàm được tạo và khởi tạo tại thời điểm định nghĩa. […]

  2. […] Trong bài biến – Cái nhìn đầu tiên về các biến, chúng ta đã biết rằng một biến là tên của một phần bộ nhớ nơi mà nó chứa một giá trị. Khi chương trình khởi tạo một biến, một địa chỉ bộ nhớ trống/khả dụng sẽ tự động được gán cho biến đó và bất kỳ giá trị nào chúng ta gán cho biến đó, sẽ được lưu trong địa chỉ bộ nhớ này. […]

Bình luận bị đóng.