Bài 13. Kiểu bản ghi

Chia sẻ bởi Trần Văn Huế | Ngày 10/05/2019 | 99

Chia sẻ tài liệu: Bài 13. Kiểu bản ghi thuộc Tin học 11

Nội dung tài liệu:

KIỂU BẢN GHI (RECORD)
& CÂU LỆNH WITH
I. Kiểm tra kiến thức cũ:
Câu 1: Hãy nêu các kiểu dữ liệu cơ bản đã học trong Pascal?
Các kiểu dữ liệu cơ bản sau:
Kiểu Integer,
Kiểu Real,
Kiểu Char,
Kiểu String,
Kiểu Boolean.
I. Kiểm tra kiến thức cũ:
Câu 2: Nêu cách khai báo biến mảng một chiều?
Khai báo biến mảng:

Var tên_mảng : ARRAY[kiểu_chỉ_số] OF kiểu_phần_tử;

Ví dụ: Khai báo mảng chứa 50 số nguyên:
Var songuyen: ARRAY[1..50] OF integer;
II. Đặt vấn đề:
Để quản lý thông tin về một học sinh gồm các thông tin sau:
Họ và tên,
Giới tính,
Năm sinh,
Điểm.
Họ tên
Năm sinh
Giới tính
Điểm
II. Đặt vấn đề:
Như vậy với mỗi thông tin của học sinh sẽ ứng với các kiểu dữ liệu khác nhau để khai báo, với mỗi một kiểu dữ liệu đã học không thể bao quát hết một lúc các thông tin đã nêu. Turbo Pascal cung cấp cho ta một kiểu dữ liệu để có thể đáp ứng yêu cầu trên là Kiểu dữ liệu Bản Ghi (RECORD).
III. Nội dung bài mới:
1. Định nghĩa kiểu Bản Ghi:
TYPE Tên_kiểu_bản_ghi = RECORD
Tên_trường_1: Kiểu_dữ_liệu_1;
Tên_trường_2: Kiểu_dữ_liệu_2;
...
Tên_trường_n: Kiểu_dữ_liệu_n;
End;
A. KIỂU BẢN GHI (RECORD)
III. Nội dung bài mới:
Trong đó:
- TYPE, RECORD, END : các từ khoá,
- Tên_kiểu_bản_ghi: Là tên kiểu dữ liệu định nghĩa
- Tên_trường: Là tên thành phần của biến Bản ghi
- Kiểu_dữ_liệu_1,2..n : Là các kiểu dữ liệu chuẩn của Pascal.
A. KIỂU BẢN GHI (RECORD)
III. Nội dung bài mới:
TYPE Hocsinh=RECORD
Hoten: String[30];
Gtinh: Boolean;
Nsinh: Integer;
Diem:Real;
End;
Var: hsinh1,hsinh2:Hocsinh;
Ví dụ: Khai báo một kiểu bản ghi để mô tả các thông tin của một học sinh như đã nêu trên:
A. KIỂU BẢN GHI (RECORD)
III. Nội dung bài mới:
2. Cách dùng biến bản ghi:
Bản ghi là một kiểu dữ liệu có cấu trúc, một bản ghi có thể có nhiều trường. Để truy xuất thông tin mỗi trường của bản ghi đó, ta dùng qui tắc sau:

Tên_biến_bản_ghi.Tên_trường
A. KIỂU BẢN GHI (RECORD)
III. Nội dung bài mới:
2. Cách dùng biến bản ghi:
Ví dụ 1: Nhập liệu cho biến bản ghi hsinh1:
Readln(hsinh1.hoten);
Readln(hsinh1.gtinh);
Readln(hsinh1.nsinh);
Readln(hsinh1.diem);
Ta có thể thực hiện phép gán cho biến bản ghi:
hsinh2:=hsinh1; (lúc này giá trị của các trường ở bản ghi hsinh2 có nội dung như bản ghi hsinh1)
A. KIỂU BẢN GHI (RECORD)
III. Nội dung bài mới:
Ví dụ 2: In dữ liệu của biến bản ghi hsinh2 ra màn hình:
Writeln(‘Ho ten hoc sinh:’,hsinh2.hoten);
Writeln(‘ Gioi tinh:’,hsinh2.gtinh);
Writeln(‘Nam sinh:’,hsinh2.nsinh);
Writeln(‘Diem hoc tap:’,hsinh2.diem);
A. KIỂU BẢN GHI (RECORD)
2. Cách dùng biến bản ghi:
III. Nội dung bài mới:
4. Bài toán:
Viết chương trình nhập kết quả học tập của N (N<=50) học sinh lớp 11C gồm các thông tin sau:
Họ tên, Giới tính, Năm sinh và Điểm học tập.
Gợi ý phân tích bài toán:
Mỗi học sinh sẽ gồm có các thông tin Họ tên, Giới tính, Năm sinh, Điểm học tập tương ứng với một kiểu Bản ghi như sau:
A. KIỂU BẢN GHI (RECORD)
III. Nội dung bài mới:
TYPE Hocsinh=RECORD
Hoten: String[30];
Gtinh: Boolean;
Nsinh: Integer;
Diem:Real;
End;
A. KIỂU BẢN GHI (RECORD)
III. Nội dung bài mới:
Và với nhiều học sinh ta có thể mô tả một dãy các bản ghi tương tự

Để diễn đạt điều này ta khai báo một mảng gồm n phần tử, mỗi phần tử có kiểu là kiểu bản ghi Hocsinh chứa thông tin về một học sinh trong lớp.
1
2
3
4
n
A. KIỂU BẢN GHI (RECORD)
III. Nội dung bài mới:
Chương trình được viết như sau:
TYPE Hocsinh=RECORD
Hoten: String[30];
Gtinh: Boolean;
Nsinh: Integer;
Diem:Real;
End;
Var hsinh: array[1..50] of Hocsinh;
I,n:integer;
A. KIỂU BẢN GHI (RECORD)
III. Nội dung bài mới:
BEGIN
Writeln(‘Nhap so hoc sinh cua lop:’);Readln(n);
For i:=1 to n do
Begin
Writeln(‘Nhap ten hoc sinh:’);Readln(hsinh[i].hoten);
Writeln(‘Nhap gioi tinh:’);Readln(hsinh[i].gtinh);
Writeln(‘Nhap nam sinh :’);Readln(hsinh[i].nsinh);
Writeln(‘Nhap diem hoc sinh:’);Readln(hsinh[i].diem);
End;
END.
A. KIỂU BẢN GHI (RECORD)
III. Nội dung bài mới:
B. CÂU LỆNH WITH
Khi khai báo một biến bản ghi có nhiều thành phần, thì ta có rất nhiều câu lệnh chỉ dẫn đến các thành phần của biến bản ghi đó, điều này dẫn đến sự lặp đi lặp lại các truy xuất cùng một biến bản ghi với nhiều tên trường khác nhau, chương trình dài và rườm rà. Để khắc phục điều này, Pascal cung cấp cho ta thêm một câu lệnh nhằm giảm sự dài dòng, làm cho chương trình trở nên sáng sủa hơn, đó là câu lệnh WITH.
III. Nội dung bài mới:
1.��Cỏch vi?t cõu l?nh WITH:
WITH Bi?n_b?n_ghi DO Cõu_l?nh;
-���Trong dú: + WITH, DO l� t? khúa;
+ Bi?n_b?n_ghi: L� tờn bi?n b?n ghi c?n truy xu?t giỏ tr?.
+ Cõu_l?nh: L� cỏc cõu l?nh x? lý tỏc d?ng d?n cỏc th�nh ph?n c?a bi?n b?n ghi, ta ch? c?n ghi tờn t?ng th�nh ph?n c?a bi?n b?n ghi. Cõu l?nh cú th? l� t?p cỏc l?nh thỡ du?c bao b?i t? khúa Begin ... End;
B. CÂU LỆNH WITH
III. Nội dung bài mới:
2. Vớ d?: D? nh?p d? li?u cho cỏc h?c sinh nhu trờn ta cú th? vi?t l?i nhu sau:
For i:=1 to n do
With hsinh[i] do
Begin
Writeln(`Nhap ten hoc sinh:`);Readln(hoten);
Writeln(`Nhap gioi tinh hoc sinh:`);Readln(gtinh);
Writeln(`Nhap nam sinh :`);Readln(nsinh);
Writeln(`Nhap diem hoc sinh:`);Readln(diem);
End;
B. CÂU LỆNH WITH
III. Nội dung bài mới:
B. CÂU LỆNH WITH
So sánh hai cách viết trên:
III. Củng cố, luyện tập:
B�i t?p v? nh�:
Hóy vi?t chuong trỡnh tớnh di?m trung bỡnh cho mụn Tin h?c c?a h?c sinh l?p 11 g?m cỏc thụng tin: H? tờn, Nam sinh, DLT, DTH, DTB ( trong dú: DTB=(DLT+DTH*2)/3).
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...

Người chia sẻ: Trần Văn Huế
Dung lượng: | Lượt tài: 0
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)