Tin học 11 Bài 13: Kiểu bản ghi


Nội dung của Bài 13: Kiểu bản ghi dưới đây, các em sẽ cùng tìm hiểu về một số khái niệm kiểu bản ghi, cách khai báo kiểu, biến, tham chiếu đến trường và phép gán giá trị bản ghi trong Pascal,... Mời các em cùng theo dõi nội dung chi tiết của bài học.

Tóm tắt lý thuyết

Dữ liệu kiểu bản ghi (record) dùng để mô tả các đối tượng có cùng một số thuộc tính mà các thuộc tính có thể có các kiểu dữ liệu khác nhau.

Để mô tả kiểu bản ghi ta cần xác định:

  • Tên kiểu bản ghi;
  • Tên các thuộc tính (trường);
  • Kiểu dữ liệu của mỗi trường;
  • Cách khai báo biến;
  • Cách tham chiếu đến trường.

Dưới đây giới thiệu cách khai báo kiểu, biến, tham chiếu đến trường và phép gán giá trị bản ghi trong Pascal.

1.1. Khai báo và tham chiếu đến trường

a. Khai báo

Do dữ liệu kiểu bản ghi thường dùng để mô tả nhiều đối tượng nên ta thường định nghĩa một kiểu bản ghi và sau đó dùng nó để khai báo các biến liên quan.

  • Kiểu bản ghi thường được định nghĩa như sau:

 type < tên kiểu bản ghi > = record

                                                      < tên trường 1 > : < kiểu trường 1 >

                                                       ……………………………….

                                                       < tên trường k > : < kiểu trường k >;

                                          end;

  • Sau khi có kiểu bản ghi, biến kiểu bản ghi có thể được khai báo như sau:

var   < tên biến bản ghi > : < tên kiểu bản ghi >;

Ví dụ 1: Quan sát hình 1 dưới đây và khai báo cho kiểu bản ghi học sinh

const Max =60; {gia thiet si so lop cao nhat la 60}

type

   HocSinh = record

                HoTen: string[30];

                NgaySinh: string[10];

                GioiTinh: boolean;

                Tin, Toan, Li, Hoa, Van, Su, Dia: Real;

             end;

var

   A, B: HocSinh;

   Lop: array[1..Max] of HocSinh;

Hình 1. Bản ghi học sinh

b. Tham chiếu đến trường

  • Cú pháp: < Tên biến bản ghi >. < Tên trường >
  • Ví dụ 2:
    • Nếu A là biến kiểu bản ghi và X là tên một trường của A, thì tham chiếu đến trường X, ta viết: A.X
    • Để tham chiếu đến điểm tin học của một học sinh trong ví dụ trên ta viết: A.Tin

1.2. Gán giá trị

Có 2 cách để gán giá trị cho biến bản ghi:

  • Cách 1. Dùng lệnh gán trực tiếp: Nếu A và B là hai biến bản ghi cùng kiểu và thì ta có thể gán giá trị của B cho A bằng câu lệnh: A:= B;
  • Cách 2. Gán giá trị cho từng trường: Có thể thực hiện bằng lệnh gán hoặc nhập từ bàn phím. 

Bài tập minh họa

Ví dụ

Một lớp gồm N (N \(\leq\) 60) học sinh. Cần quản lí học sinh với các thuộc tính như họ và tên, ngày sinh, địa chỉ, điểm toán, điểm văn, xếp loại. Giả sử việc xếp loại được xác định như sau:

  • Nếu tổng điểm toán và văn lớn hơn hoặc bằng 18 thì xếp loại A.
  • Nếu tổng điểm toán và văn lớn hơn hoặc bằng 14 và nhỏ hơn 18 thì xếp loại B.
  • Nếu tổng điểm toán và văn lớn hơn hoặc bằng 10 và nhỏ hơn 14 thì xếp loại C.
  • Nếu tổng điểm toán và văn nhỏ hơn 10 thì xếp loại D.

Chú ý rằng, trong các thuộc tính cần quản lí, chỉ có 5 thuộc tính đầu là độc lập, còn thuộc tính xếp loại được xác định dựa vào các điểm toán và văn. Để lưu trữ thông tin về học sinh, ta dùng kiểu bản ghi với 6 trường tương ứng với 6 thuộc tính cần quản lí.

Gợi ý làm bài:

Dưới đây là chương trình nhập vào từ bàn phím thông tin của từng học sinh trong lớp, thực hiện xếp loại và đưa ra màn hình kết quả xếp loại học sinh:

program Xep_loai;

uses crt;

const Max = 60;

type     HocSinh = record

                HoTen:string[30];

               NgaySinh:string[10];

              DiaChi:string[50];

              Toan,Van:real;

              XepLoai:char;

                       end;

var

   Lop: array[1..Max] of HocSinh;

   N,i: Byte;

begin

   clrscr;

   write('So luong hoc sinh trong lop N = '); readln(N);

   for i:= 1 to N do

         begin

               writeln('Nhap so lieu ve hoc sinh thu ',i,': ');

               write('Ho va ten: ');readln(Lop[i].HoTen);

               write('Ngaysinh: ');readln(Lop[i].Ngaysinh);

               write('Dia chi: ');readln(Lop[i].DiaChi);

               write('Diem Toan: ');readln(Lop[i].Toan);

               write('Diem Van: ');readln(Lop[i].Van);

               if Lop[i].Toan+Lop[i].Van>=18

                     then Lop[i].XepLoai:='A';

               if (Lop[i].Toan+Lop[i].Van>=14)And

                     (Lop[i].Toan+Lop[i].Van<18)

                     then Lop[i].XepLoai:='B';

               if (Lop[i].Toan+Lop[i].Van>=10)And

                     (Lop[i].Toan+Lop[i].Van<14)

                     then Lop[i].XepLoai:='C'

                     else Lop[i].XepLoai:='D';

 end;

         clrscr;

         writeln('Danh sach xep loai hoc sinh trong lop:');

         for i:= 1 to N do

                writeln(Lop[i].HoTen:30,' - Xep loai: ',Lop[i].XepLoai);

readln

end.

3. Luyện tập Bài 13 Tin học 11

Sau khi học xong Bài 13: Kiểu bản ghi, các em cần nắm vững các nội dung trọng tâm:

  • Khai báo kiểu bản ghi: tên bản ghi, tên và kiểu các trường.
  • Tham chiếu trường của bản ghi: tên biến bản ghi.tên trường.

3.1. Trắc nghiệm

Các em có thể hệ thống lại nội dung kiến thức đã học được thông qua bài kiểm tra Trắc nghiệm Tin học 11 Bài 13 cực hay có đáp án và lời giải chi tiết. 

Câu 3-Câu 5: Xem thêm phần trắc nghiệm để làm thử Online

4. Hỏi đáp Bài 13 Tin học 11

Trong quá trình học tập nếu có thắc mắc hay cần trợ giúp gì thì các em hãy comment ở mục Hỏi đáp, Cộng đồng Tin học HOC247 sẽ hỗ trợ cho các em một cách nhanh chóng!

Chúc các em học tập tốt và luôn đạt thành tích cao trong học tập!

-- Mod Tin Học 11 HỌC247

Được đề xuất cho bạn