2.7.1 Tại sao cần structure ? (1)

Trước khi chúng ta bắt đầu về structure (viết tắt là struct), chúng tôi muốn giới thiệu với các bạn về một kiểu dữ liệu hoàn toàn mới, đó là string. Tại thời điểm này, chúng tôi chỉ giới thiệu cho bạn biết chúng ta sử dụng nó để làm gì và cách chúng ta khai báo các biến kiểu này như thế nào. Chi tiết về string sẽ được đề cập trong một bài học khác. Một string không đơn thuần là một kiểu dữ liệu, nhưng tất cả những gì chúng tôi muốn nói với bạn tại thời điểm này là các biến kiểu string có thể lưu trữ chuỗi các ký tự, như họ tên người, tên đường phố và tất cả các tên khác mà bạn có thể nghĩ đến. Các biến kiểu string có thể được gán bằng cách sử dụng các toán tử giống như bất kỳ biến nào khác mà chúng ta đã gặp từ trước tới giờ. Ví dụ, nếu chúng ta muốn lưu tên một món ăn yêu thích của chúng ta trong một biến string, chúng ta làm theo cách sau:

Hãy tưởng tượng rằng, chúng ta, với tư cách là các nhà phát triển, có những công việc sau đang cần phải làm: thiết kế một cấu trúc dữ liệu có thể lưu trữ thông tin về sinh viên tham dự một khóa học nào đó. Chúng ta cần phải lưu trữ tên của mỗi sinh viên và thời gian tam gia khóa học. Giả sử số lượng sinh viên không quá 50 người. Để làm việc này chúng ta sẽ phải khai báo như sau →

Mảng student_name cho phép chúng ta lưu được tên của 50 sinh viên. Giả sử sinh viên đầu tiên có tên là Tuan, khi đó chúng ta sẽ lưu tên của sinh viên đó vào mảng bằng cách sau:

Thời gian tham gia khóa học chúng ta sẽ dung kiểu float để lưu. Chúng cũng sẽ cần khai báo một mảng float như sau để lưu →

Nếu thời gian tham gia khóa học của sinh viên Tuan là 3.5 giờ thì sẽ được lưu như sau →

Vấn đề chính ở đây là các dữ liệu liên quan đến cùng một đối tượng (một sinh viên) được phân tán thành 2 biến ở 2 mảng khác nhau. Việc xử lý nhiều mảng là rườm rà và dễ bị lỗi, và nếu chúng ta cần phải thu thập thêm thông tin bổ sung (ví dụ như địa chỉ e-mail), chúng ta lại phải khai báo thêm một mảng khác và thực hiện nhiều thay đổi khác trong suốt chương trình. Điều đó không tốt chút nào. Chúng ta đã biết mảng là gì, mảng là một tập hợp các phần tử, các phần tử được đánh số và có cùng kiểu.Vậy chúng ta có thể sử dụng một tập hợp các phần tử có kiểu dữ liệu khác nhau không ? Các phần tử sẽ được xác định theo tên, chứ không phải bằng số? Vâng, đó là một ý tưởng tuyệt vời! Và trong ngôn ngữ lập trình thì nó gọi là struct.

Một struct có thể chứa các phần tử của bất kỳ kiểu dữ liệu nào. Mỗi phần tử được gọi là trường (field). Mỗi trường được xác định theo tên của nó, không phải bằng số thứ tự. Rõ ràng, tên trường phải là duy nhất và không thể trùng nhau trong một struct. Chúng tôi sẽ cho bạn thấy làm thế nào để khai báo một struct để giải quyết bài toán mà chúng ta đang làm.

Chúng ta sẽ khai báo một struct như thế này →

  • Khai báo của struct luôn bắt đầu bằng từ khóa  “struct”
  • Ngay tiếp theo của từ khóa  “struct” sẽ là tên của struct (trong trường hợp này là STUDENT); thường thì tên struct nên viết hoa để phân biệt với các biến bình thường
  • Tiếp theo là dấu mở ngoặc nhọn “{“, khai báo các trường bên trong struct sẽ bắt đầu từ đây
  • Struct này của chúng ta có 2 trường:
    • Đầu tiên là một string có tên là name
    • Thứ hai là một số float có tên là time
  • Kết thúc khai báo struct là dấu đóng ngoặc nhọn đi kèm dấu chấm phẩy “};”