Bài giảng Lập trình cơ bản - truongkinhtethucpham.commai_non
Tài liệu này trình bày tổng quan về ngôn ngữ lập trình C - ngôn ngữ lập trình cơ bản mà hầu như những ai học về công nghệ thông tin cũng cần phải biết đến nó.
1. Bài 13: KIỂU BẢN GHI
Trong thực tế, chúng ta thường dùng các bản danh sách, biểu bảng thống kê có nội dung
khác nhau.Trong một lớp học có nhiều học sinh, trong học sinh lại có nam, có nữ, có họ
tên học sinh, ngày sinh, quê quán. Để xử lý những dữ liệu phức tạp kể trên, Pascal cho
phép người lập trình tự định nghĩa một kiểu dữ liệu có cấu trúc đó là kiểu bản ghi
( Record).
Ví dụ 1: Thông tin của một học sinh gồm có:
HỌ VÀ TÊN
NGÀY SINH
ĐIỂM TRUNG BÌNH
Ta có mô tả như sau:
Họ và tên Ngày sinh Giới tính Điểm trung bình Xếp loại
Thái Trí Hằng 19/04/1993 Nam 7.9 Khá
Trương Xuân Di 24/04/1993 Nữ 8.2 Giỏi
Lâm Đạt Khải 17/08/1993 Nam 8.5 Giỏi
- Kiểu dữ liệu bản ghi là một kiểu dữ liệu có cấu trúc. Một bản ghi gồm các thành phần
(trường), các trường có thể thuộc các kiểu dữ liệu khác nhau.
- Kiểu bản ghi có thể mô tả hàng loạt đối tựợng có cùng một số thuộc tính.
- Có thể truy xuất (thao tác) trên từng thành phần của bản ghi, mỗi trường đó được xác
định bởi tên biến bản ghi và tên trường.
Tóm lại, Ngôn ngữ lập trình đưa ra các quy tắc. Cách thức 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;
HỌC SINH
XẾP LOẠI GIỚI TÍNH
2. · Cách khai báo biến;
· Cách tham chiếu đến trường.
1. Khai báo kiểu bản ghi:
Các thông tin cần khai báo bao gồm tên kiểu bản ghi. Tên các thuộc tính, kiểu dữ liệu của
mỗi thuộc tính.
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 dùng định
nghĩa kiểu bản ghi và sau đó dùng nó đề khai báo các biến liên quan.
a. Khai báo kiểu:
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;
b. Khai báo biến:
Có hai cách
Cách 1: VAR
<tên biến> : <Tên kiểu bản ghi>;
<tên mảng> : ARRAY [1..Max] OF < tên kiểu bản ghi>;
Cách 2:
VAR <Tên biến 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;
Ví dụ: Lấy ví dụ 1, ta có Bản ghi Học sinh như sau:
Họ và tên: String [30]
Ngày sinh: String [10]
Giới tính: Boolean
Điểm trung bình: Real
Xếp loại: String [10]
Trong chương trình xử lý kết quả có thể sử dụng khai báo sau đây:
1) Khai báo kiểu:
TYPE Hocsinh = RECORD
Hoten: String [30];
Ngaysinh:String[10];
3. Gioitinh: Boolead;
DiemTB: Real;
Xeploai: String[10]
END;
VAR Hs1, Hs2: Hocsinh;
2) Khai báo biến:
VAR hs1, hs2: RECORD
Hoten: String [30];
DiemTB: Real;
END;
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 trung bính của học sinh trong ví dụ trên ta viết:
A.DiemTB
2. Gán giá trị
Có hai cách để gán giá trị cho biến bản ghi:
+ 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, thì ta có thể gán giá
trị của B cho A bằng câu lệnh:
A:= B;
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.
3. Ví dụ về các thao tác với bản ghi
Viết một chương trình dùng để quản lý kiểm tra chất lượng của học sinh với 2
môn Toán và Văn.
Chương trình qun3 lý gồm có:
STT
Họ và tên
Toán, Văn, Tổng,Kết quả.
a. Nhập thông tin học sinh
- Nhập học sinh:
4. Write(‘ Nhap vao so hoc sinh trong lop’);
Readln(n);
- Nhập dữ liệu các thuộc tính của bản ghi:
For i:=1 to n do
Begin
Write(‘ STT’); readln(Lop[i].STT);
Write(‘ Ho va ten ’); readln(Lop[i].Hoten);
Write(‘ Van’); readln(Lop[i].Van);
Write(‘ Toan’); readln(Lop[i].Toan);
Write(‘ Tong’); readln(Lop[i].Tong);
Write(‘ Ket qua’); readln(Lop[i].Ketqua);
End;
b. Các thao tác xử lý trong bản ghi
Tính điểm Toán và Văn của từng học sinh trên lớp:
For i:=1 to n do
Lop[i].Tong := Lop[i].Toan + Lop[i].Van;
Kiểm tra điều kiện để đưa ra kết quả:
For i:=1 to n do
If Lop[i].Tong >=12 then Lop[i].Ketqua := ‘Dat’
else Lop[i].Ketqua := ‘Khongdat’;
c. In kiểu dữ liệu kiểu bản ghi
Thông báo in:
Writeln(‘ Bang ket qua kt chat luong’);
In dữ liệu kiểu bản ghi:
For i:= 1 to n do
Writeln(Lop[i].STT:5,
Lop[i].Hoten:30, Lop[i].Toan:5:1,
Lop[i].Van:5:1, Lop[i].Tong:8:1,
Lop[i].ketqua:15);
TÓM TẮT
· Cách khai báo (hay định nghĩa) kiểu dữ liệu bản ghi thường dùng là:
Đặt tên và định nghĩa cho kiểu dữ liệu mới này (với từ khóa type) rồi sau đó khai
báo các biến thuộc kiểu mới (đã có tên).
· Để khai báo một kiểu bản ghi, cần phải xác định:
5. + Đối tượng được bản ghi mô tả có những thuộc tính nào cần quản lý, mỗi thuộc
tính sẽ tương ứng với một trường của bản ghi.
+ Tên trường: Tên trường thường được đặt gợi ý nghĩa của thuộc tính nó thể
hiện.Các tên trường của một kiểu bản ghi phải khác nhau..
+ Kiểu dữ liệu của mỗi trường.
· Giống như ở kiểu mảng, không thể nhập hay xuất giá trị của một biến kiểu bản
ghi như nhập hay xuất kiểu giá trị của biến dữ liệu chuẩn mà phải nhập hay xuất
cho từng phần tử của kiểu bản ghi.
· Các thao tác nhập xuất hay xử lý mỗi trường kiểu bản ghi phải tuân theo quy định
của kiểu trường này.
· Chỉ có phép gán là phép toán duy nhất áp dụng được với các biến kiểu bản ghi
cùng kiểu.
6. + Đối tượng được bản ghi mô tả có những thuộc tính nào cần quản lý, mỗi thuộc
tính sẽ tương ứng với một trường của bản ghi.
+ Tên trường: Tên trường thường được đặt gợi ý nghĩa của thuộc tính nó thể
hiện.Các tên trường của một kiểu bản ghi phải khác nhau..
+ Kiểu dữ liệu của mỗi trường.
· Giống như ở kiểu mảng, không thể nhập hay xuất giá trị của một biến kiểu bản
ghi như nhập hay xuất kiểu giá trị của biến dữ liệu chuẩn mà phải nhập hay xuất
cho từng phần tử của kiểu bản ghi.
· Các thao tác nhập xuất hay xử lý mỗi trường kiểu bản ghi phải tuân theo quy định
của kiểu trường này.
· Chỉ có phép gán là phép toán duy nhất áp dụng được với các biến kiểu bản ghi
cùng kiểu.