Bài 13. Kiểu bản ghi
Chia sẻ bởi Phạm Vân Thái |
Ngày 10/05/2019 |
56
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:
Bài : Kiểu bản ghi
Tiết 31 ppct
GV Ph.Th – Bmt – 1/2/2010
Đặt vấn đề : xét bài tập sau :
viết CT nhập ho , ten , diemtb của n học sinh (n<=30), sau đó viết ra danh sách gồm 3 cột ho ten diemtb theo thứ tự tăng dần của tên.
? Em hãy phát biểu phác thảo tóm tắt lời giải bài tập trên ?
? Em hãy nhận xét về đặc điểm của việc sử dụng biến,
về việc viết CT (phần sắp xếp) ở bài tập trên ?
Bài mới : Kiểu bản ghi -1
? Vì sao ta phải học kiểu bản ghi ?
Đặt vấn đề :
Phác thảo tóm tắt lời giải:
- Nhập ho,ten,diemtb của các học sinh.
-Sắp xếp theo thứ tự tăng dần của tên.
-Viết kết quả ra màn hình theo dạng qui định.
Nhận xét:
Trong lời giải trên ta phải dùng các mảng có kiểu phần tử khác nhau để lưu và xử lý :
ho : array [1..nmax] of string[40];
ten: array [1..nmax] of string[10];
diemtb: array [1..nmax] of real;
có khó khăn ở chỗ dễ sai sót, dễ nhầm lẫn thông tin của hs này sang hs khác khi xử lý, sắp xếp.., viết chương trình dài… ..
Xem lời giải mẫu!
Bài mới : Kiểu bản ghi -2
Nhận xét :
-Trong bài toán quản lý trên ta thấy đối tượng học sinh có nhiều thông tin (ho, ten, diemtb), mỗi thông tin lại có kiểu khác nhau trong lời giải trên ta phải dùng các mảng khác nhau để lưu và xử lý song có khó khăn ở chỗ dễ sai sót, nhầm lẫn thông tin của hs này sang hs khác , viết chương trình dài ..
Có nhiều bài toán dạng quản lý như trên
VD : +quản lý sách trong thư viện: lập danh sách sách theo từng nxb, tìm sách đắt tiền nhất, …
+quản lý nhân viên 1 cơ quan: lập danh sách nhân viên, tính thu nhập bình quân …
? Đối tượng và các thông tin của đối tượng trong các vd trên là gì ?
+đối tượng sach có các thông tin: tensach, nxb, giatien…
+đối tượng nhanvien có các thông tin: hoten, luong, tuoi, diachi, chucvu,…
Bài mới : Kiểu bản ghi -3
Để lưu trữ, xử lý các dữ liệu của 1 đối tượng - (Vd 1 học sinh) – được thuận lợi hơn NNLT cho phép ta khai báo 1 kiểu dữ liệu mới gọi là kiểu bản ghi , khi đó các thông tin của đối tượng gọi là các trường (thuộc tính). (vd với đối tượng hs các trường là : ho , ten ,diemtb…)
* Ta quan tâm tới : khai báo kiểu, biến bản ghi, tham chiếu tới các trường, gán giá trị cho biến , cho từng trường …
Bài mới : Kiểu bản ghi -4
? Hãy phát biểu khái niệm kiểu bản ghi ?
? Hãy phát biểu cách khai báo kiểu và biến bản ghi ?
1. K/n Kiểu bản ghi 0
Kiểu bản ghi 1
1/ Khái niệm : Kiểu bản ghi (record) dùng để mô tả các đối tượng có cùng các thuộc tính (trường) mà các thuộc tính này có thể có các kiểu dữ liệu khác kiểu nhau.
VD : các trường (thuộc tính) của đối tượng hs trong bài toán quản lý điểm của học sinh có thể gồm : hoten (Kiểu xâu), lop (Kiểu xâu), diemtb (Kiểu số thực), xloai (Kiểu xâu) ..
2/ Khai báo :
Type = record
: ;
: ;
: ;
…..
end;
Var : ;
Kiểu bản ghi - 2
VD : các thông tin về 1 hs gồm : hoten (Kiểu xâu), lop (Kiểu xâu), tuoi (Kiểu số), , diemtb (Kiểu số), xloai (Kiểu xâu) ..
Khai báo :
type hs = record
hoten :string[45];
lop : string[8];
tuoi : byte;
diemtb:real;
xloai : string[10];
end;
Var a, b, c : hs ;
AD 1 : viết khai báo kiểu lưu dữ liệu về 1 quyển sách gồm các thông tin: tensach, nxb, sotrang, giatien, tacgia. ?
type sach = record
tensach :string;
nxb : string;
sotrang : word;
giatien : longint ;
tacgia : string[45];
end;
Var t : sach ;
AD 2: viết khai báo kiểu lưu dữ liệu về 1 đoạn thẳng trong mặt phẳng dựa vào tọa độ 2 điểm hai đầu của nó?
(gồm có hoành độ , tung độ của 2 điểm 2 đầu đoạn thẳng. )
type doanthang = record x1,y1,x2,y2 :real; end;
Var t : doanthang ;
Kiểu bản ghi - 3
Kiểu bản ghi - 4
3/Tham chiếu đến từng trường : Tên biến.Tên trường
VD : với biến tên là a kiểu hs ở VD trước ta viết
a.hoten, a.lop, a.tuoi ….
4/ Xử lý trên biến kiểu bản ghi :
a/ lệnh gán giá trị : có 2 trường hợp
1/ gán trực tiếp cả 1 biến từ giá trị đã có trong 1 biến khác cùng kiểu bản ghi đó: viết bình thường (như với 2 biến kiểu chuẩn đã học)
VD : a := b ; a := c;
2/ gán cho từng trường của biến đưa giá trị vào cho từng trường (có thể nhập từ bàn phím hoặc dùng lệnh gán)
VD : a.hoten := ‘ Le van Nam’ ; a.tuoi := 16 ;
VD : write(‘nhap ho ten : ’) ; readln(a.hoten);
write(‘nhap tuoi : ’) ; readln(a.tuoi);
writeln(a.hoten,’ ‘, a.tuoi);
b/ So sánh 2 biến :
chỉ 2 phép so sánh là = và <>.
Kiểu bản ghi - 5
VD mẫu: viết CT nhập ho , tên , diemtb của n học sinh (n<=30), sau đó viết ra danh sách gồm 3 cột ho ten diemtb theo thứ tự tăng dần của tên. (sử dụng kiểu bản ghi)
Const nmax=30;
type hs = record
ho :string[40];
ten:string[10];
diemtb:real;
end;
Var a : array [1..nmax] of hs;
t : hs ;
n,i,j :byte;
Begin {phần nhập dữ liệu vào}
K/n Kiểu bản ghi - 6
Begin {phần nhập dữ liệu vào}
write(‘nhap so hs n= ‘);readln(n);
for i:=1 to n do
begin write(‘nhap thong tin hs thu ‘, i, ‘la:’);
write(‘nhap ho : ‘); readln( a[i].ho );
write(‘nhap ten : ‘); readln( a[i].ten );
write(‘nhap diemtb : ‘);readln(a[i].diemtb);
end;
{phần sắp xếp theo tên}
for i:= n down to 2 do
for j:=1 to i-1 do
if a[j].ten > a[j+1].ten then
begin t:=a[j];
a[j]:=a[j+1];
a[j+1]:=t;
end;
K/n Kiểu bản ghi - 7
{phần Viết kết quả ra màn hình}
writeln(‘Ket qua ds sap tang theo ten la:’);
for i:=1 to n do
begin write( a[i].ho :40);
write(a[i].ten : 10);
writeln(a[i].diemtb : 6 : 1);
end;
readln;
end.
Thử trong Pascal
Chạy Magnifer
BT-AD : ,
1/ Ghi kết quả đúng , sai của mỗi câu sau :
a/ dùng kiểu bản ghi có thể lưu nhiều loại dữ liệu khác kiểu nhau trong 1 biến.
b/ có thể nhập, xuất giá trị 1 biến bản ghi bằng cách viết lệnh nhập, xuất với tham chiếu đến từng trường của biến.
c/ không thể viết lệnh writeln(a); với a là biến kiểu bản ghi.
d/ để gán trị cho trường hoten của biến a ta viết hoten :=‘ Nguyen thi Anh Hong’;
e/ với 2 biến cùng 1 kiểu bản ghi là a,b ta có thể viết lệnh : a:=b ;
f/ để viết nội dung trong trường ho của biến bản ghi a ra màn hình ta dùng lệnh : writeln(a.ho :50);
g/ khai báo kiểu bản ghi như sau là đúng cú pháp không ?
Type diem = record
x,y : real;
Var a,b,c : diem;
Đề BT-AD Kiểu bản ghi -1
1/ Ghi kết quả đúng , sai của mỗi câu sau :
a/ dùng kiểu bản ghi có thể lưu nhiều loại dữ liệu khác kiểu nhau trong 1 biến. Đ
b/ có thể nhập, xuất giá trị 1 biến bản ghi bằng cách viết lệnh nhập, xuất với tham chiếu đến từng trường của biến. Đ
c/ không thể viết lệnh writeln(a); với a là biến kiểu bản ghi. Đ
d/ để gán trị cho trường hoten của biến a ta viết hoten :=‘ Nguyen thi Anh Hong’; S
e/ với 2 biến cùng 1 kiểu bản ghi là a,b ta có thể viết lệnh : a:=b ;Đ
f/ để viết nội dung trong trường ho của biến bản ghi a ra màn hình ta dùng lệnh : writeln(a.ho :50); Đ
g/ khai báo kiểu bản ghi như sau là đúng cú pháp không ? S
Type diem = record
x,y : real;
Var a,b,c : diem;
Kết quả BT-AD -1
BT-AD :
2/ Type sach=record nxb,tensach :string; giatien :longint;
maso :string[10]; end;
Var a,b,c: sach; t: string;
viết kết quả hiện ra trên màn hình khi thực hiện đoạn lệnh sau:
t := ‘bai tap toan 11’; a.tensach := t; b := a; writeln(b.tensach);
c := a; c.giatien := 10000; a := c; writeln(a.tensach,’ ‘,a.giatien);
bai tap toan 11
bai tap toan 11 10000
Đề BT-AD Kiểu bản ghi -2
BT-AD :
3/ CT (dùng kiểu bản ghi) nhập hoten, tuoi, diem1,diem2,diem3 của n học sinh (n<=30), sau đó viết ra danh sách gồm 4 cột hoten tuoi diemtb xloại (xloai xét theo diemtb như những bài trước đây, diemtb là trung bình của các điểm không tính hệ số). Hãy viết khai báo biến cho CT
Type hs=record
hoten:string[45];
tuoi:byte;
diem1,diem2,diem3,diemtb:real;
xloai:string[15];
end;
Var a: array [1..30] of hs;
* Có thể không đưa vào 2 trường diemtb,xloai cũng được…
Đề BT-AD Kiểu bản ghi -2
BT-AD :
4/ CT nhập hoten, tuoi, diemtb của n học sinh (n<=30), sau đó viết ra danh sách gồm 3 cột hoten tuoi diemtb của những học sinh có diemtb cao nhất. Hãy viết đoạn lệnh tìm diemtb cao nhất.
*Giả sử ta đã có khai báo biến là :
Const nmax=30;
type hs = record hoten:string[45];tuoi:byte;diemtb:real; end;
Var a : array [1..nmax] of hs;
n, i, j : byte;
max:=a[1].diemtb;
for i:=1 to n do
if a[i].diemtb > max then max := a[i].diemtb;
writeln(‘diemtb cao nhat la = ’ , max :5:2);
Đề BT-AD Kiểu bản ghi -2
Bài tập về nhà!
5/ viết CT nhập dữ liệu về n quyển sách gồm tensach, nxb, sotrang, giatien, tacgia. (n<=100), sau đó viết ra danh sách các sách có giá tiền thấp nhất mỗi sách viết 3 nội dung tensach, nxb, tacgia. Xem ví dụ
6/ viết CT nhập n (n<=100) đoạn thẳng, dữ liệu về 1 đoạn thẳng: gồm hoành độ, tung độ của 2 điểm 2 đầu đoạn thẳng (xét trong mặt phẳng). Viết ra dữ liệu của những đoạn thẳng có độ dài lớn nhất.
Xem ví dụ
BTVN
Tóm tắt về Kiểu bản ghi -1
? Em hãy nêu sự khác nhau giữa kiểu bản ghi và các kiểu có cấu trúc khác?.
(trả lời theo từng hs)
Minh họa: hình ảnh trong bộ nhớ
*Biến mảng var a: array [1..4] of word;
Tất cả biến a chiếm 8B
*Biến bản ghi type hs = record ho:string[40];ten:string[10];diemtb:real;
end;
var t: hs;
Tất cả biến t chiếm 58B
Tóm tắt về Kiểu bản ghi -2
Sự khác nhau giữa kiểu bản ghi và các kiểu có cấu trúc khác là : các trường (thành phần, phần tử) của bản ghi có thể có kiểu dữ kiệu khác nhau.
Khái niệm : Kiểu bản ghi (record) dùng để mô tả các đối tượng có cùng các thuộc tính (trường) mà các thuộc tính này có thể có các kiểu dữ liệu khác kiểu nhau.
Khai báo :
Type = record
: ;
: ;
…..
end;
Var : ;
+ Tham chiếu đến từng trường : Tên biến.Tên trường
+ Xử lý trên biến kiểu bản ghi :
lệnh gán giá trị : có 2 trường hợp
1/ gán trực tiếp cả 1 biến từ giá trị đã có trong 1 biến khác cùng kiểu bản ghi đó
2/ gán cho từng trường
Tóm tắt về Kiểu bản ghi - 3
Dặn dò – chuẩn bị ở nhà :
1/ học bài và làm các bài tập còn lại.
2/ giờ tới là tiết bài tập.
Dặn dò
Cám ơn đã theo dõi bài
Bài học kết thúc
GV Ph.Th – Bmt – 1/2/2010
Bài : Kiểu bản ghi
Tiết 31 ppct
Kết thúc
LG mẫu VD-dandat -1
Const nmax=100;
Var ho : array [1..nmax] of string[40];
ten: array [1..nmax] of string[10];
diemtb: array [1..nmax] of real;
h:string[40]; t:string[10]; d:real;
n,I,j:byte;
Begin {phần nhập dữ liệu vào}
write(‘nhap so hs n= ‘);readln(n);
for i:=1 to n do
begin write(‘nhap thong tin hs thu ‘, i, ‘la:’);
write(‘nhap ho : ‘);readln(ho[i]);
write(‘nhap ten : ‘);readln(ten[i]);
write(‘nhap diemtb : ‘);readln(diemtb[i]);
end;
LG mẫu VD-dandat -2
{phần sắp xếp theo tên}
for i:=n downto 2 do
for j:=1 to i-1 do
if ten[j] > ten[j+1] then
begin t:=ten[j];
ten[j]:=ten[j+1];
ten[j+1]:=t;
h:=ho[j];
ho[j]:=ho[j+1];
ho[j+1]:=h; d:=diemtb[j];
diemtb[j]:=diemtb[j+1];
diemtb[j+1]:=d;
end;
LG mẫu VD-dandat -3
{phần viết kết quả}
writeln(‘Ket qua ds sap tang theo ten la:’);
for i:=1 to n do
begin write( ho[i] :40);
write(ten[i] : 10);
writeln(diemtb[i] : 6 : 1);
end;
readln;
end.
Thử trong Pascal
Trở về slide cũ
Tiết 31 ppct
GV Ph.Th – Bmt – 1/2/2010
Đặt vấn đề : xét bài tập sau :
viết CT nhập ho , ten , diemtb của n học sinh (n<=30), sau đó viết ra danh sách gồm 3 cột ho ten diemtb theo thứ tự tăng dần của tên.
? Em hãy phát biểu phác thảo tóm tắt lời giải bài tập trên ?
? Em hãy nhận xét về đặc điểm của việc sử dụng biến,
về việc viết CT (phần sắp xếp) ở bài tập trên ?
Bài mới : Kiểu bản ghi -1
? Vì sao ta phải học kiểu bản ghi ?
Đặt vấn đề :
Phác thảo tóm tắt lời giải:
- Nhập ho,ten,diemtb của các học sinh.
-Sắp xếp theo thứ tự tăng dần của tên.
-Viết kết quả ra màn hình theo dạng qui định.
Nhận xét:
Trong lời giải trên ta phải dùng các mảng có kiểu phần tử khác nhau để lưu và xử lý :
ho : array [1..nmax] of string[40];
ten: array [1..nmax] of string[10];
diemtb: array [1..nmax] of real;
có khó khăn ở chỗ dễ sai sót, dễ nhầm lẫn thông tin của hs này sang hs khác khi xử lý, sắp xếp.., viết chương trình dài… ..
Xem lời giải mẫu!
Bài mới : Kiểu bản ghi -2
Nhận xét :
-Trong bài toán quản lý trên ta thấy đối tượng học sinh có nhiều thông tin (ho, ten, diemtb), mỗi thông tin lại có kiểu khác nhau trong lời giải trên ta phải dùng các mảng khác nhau để lưu và xử lý song có khó khăn ở chỗ dễ sai sót, nhầm lẫn thông tin của hs này sang hs khác , viết chương trình dài ..
Có nhiều bài toán dạng quản lý như trên
VD : +quản lý sách trong thư viện: lập danh sách sách theo từng nxb, tìm sách đắt tiền nhất, …
+quản lý nhân viên 1 cơ quan: lập danh sách nhân viên, tính thu nhập bình quân …
? Đối tượng và các thông tin của đối tượng trong các vd trên là gì ?
+đối tượng sach có các thông tin: tensach, nxb, giatien…
+đối tượng nhanvien có các thông tin: hoten, luong, tuoi, diachi, chucvu,…
Bài mới : Kiểu bản ghi -3
Để lưu trữ, xử lý các dữ liệu của 1 đối tượng - (Vd 1 học sinh) – được thuận lợi hơn NNLT cho phép ta khai báo 1 kiểu dữ liệu mới gọi là kiểu bản ghi , khi đó các thông tin của đối tượng gọi là các trường (thuộc tính). (vd với đối tượng hs các trường là : ho , ten ,diemtb…)
* Ta quan tâm tới : khai báo kiểu, biến bản ghi, tham chiếu tới các trường, gán giá trị cho biến , cho từng trường …
Bài mới : Kiểu bản ghi -4
? Hãy phát biểu khái niệm kiểu bản ghi ?
? Hãy phát biểu cách khai báo kiểu và biến bản ghi ?
1. K/n Kiểu bản ghi 0
Kiểu bản ghi 1
1/ Khái niệm : Kiểu bản ghi (record) dùng để mô tả các đối tượng có cùng các thuộc tính (trường) mà các thuộc tính này có thể có các kiểu dữ liệu khác kiểu nhau.
VD : các trường (thuộc tính) của đối tượng hs trong bài toán quản lý điểm của học sinh có thể gồm : hoten (Kiểu xâu), lop (Kiểu xâu), diemtb (Kiểu số thực), xloai (Kiểu xâu) ..
2/ Khai báo :
Type
…..
end;
Var
Kiểu bản ghi - 2
VD : các thông tin về 1 hs gồm : hoten (Kiểu xâu), lop (Kiểu xâu), tuoi (Kiểu số), , diemtb (Kiểu số), xloai (Kiểu xâu) ..
Khai báo :
type hs = record
hoten :string[45];
lop : string[8];
tuoi : byte;
diemtb:real;
xloai : string[10];
end;
Var a, b, c : hs ;
AD 1 : viết khai báo kiểu lưu dữ liệu về 1 quyển sách gồm các thông tin: tensach, nxb, sotrang, giatien, tacgia. ?
type sach = record
tensach :string;
nxb : string;
sotrang : word;
giatien : longint ;
tacgia : string[45];
end;
Var t : sach ;
AD 2: viết khai báo kiểu lưu dữ liệu về 1 đoạn thẳng trong mặt phẳng dựa vào tọa độ 2 điểm hai đầu của nó?
(gồm có hoành độ , tung độ của 2 điểm 2 đầu đoạn thẳng. )
type doanthang = record x1,y1,x2,y2 :real; end;
Var t : doanthang ;
Kiểu bản ghi - 3
Kiểu bản ghi - 4
3/Tham chiếu đến từng trường : Tên biến.Tên trường
VD : với biến tên là a kiểu hs ở VD trước ta viết
a.hoten, a.lop, a.tuoi ….
4/ Xử lý trên biến kiểu bản ghi :
a/ lệnh gán giá trị : có 2 trường hợp
1/ gán trực tiếp cả 1 biến từ giá trị đã có trong 1 biến khác cùng kiểu bản ghi đó: viết bình thường (như với 2 biến kiểu chuẩn đã học)
VD : a := b ; a := c;
2/ gán cho từng trường của biến đưa giá trị vào cho từng trường (có thể nhập từ bàn phím hoặc dùng lệnh gán)
VD : a.hoten := ‘ Le van Nam’ ; a.tuoi := 16 ;
VD : write(‘nhap ho ten : ’) ; readln(a.hoten);
write(‘nhap tuoi : ’) ; readln(a.tuoi);
writeln(a.hoten,’ ‘, a.tuoi);
b/ So sánh 2 biến :
chỉ 2 phép so sánh là = và <>.
Kiểu bản ghi - 5
VD mẫu: viết CT nhập ho , tên , diemtb của n học sinh (n<=30), sau đó viết ra danh sách gồm 3 cột ho ten diemtb theo thứ tự tăng dần của tên. (sử dụng kiểu bản ghi)
Const nmax=30;
type hs = record
ho :string[40];
ten:string[10];
diemtb:real;
end;
Var a : array [1..nmax] of hs;
t : hs ;
n,i,j :byte;
Begin {phần nhập dữ liệu vào}
K/n Kiểu bản ghi - 6
Begin {phần nhập dữ liệu vào}
write(‘nhap so hs n= ‘);readln(n);
for i:=1 to n do
begin write(‘nhap thong tin hs thu ‘, i, ‘la:’);
write(‘nhap ho : ‘); readln( a[i].ho );
write(‘nhap ten : ‘); readln( a[i].ten );
write(‘nhap diemtb : ‘);readln(a[i].diemtb);
end;
{phần sắp xếp theo tên}
for i:= n down to 2 do
for j:=1 to i-1 do
if a[j].ten > a[j+1].ten then
begin t:=a[j];
a[j]:=a[j+1];
a[j+1]:=t;
end;
K/n Kiểu bản ghi - 7
{phần Viết kết quả ra màn hình}
writeln(‘Ket qua ds sap tang theo ten la:’);
for i:=1 to n do
begin write( a[i].ho :40);
write(a[i].ten : 10);
writeln(a[i].diemtb : 6 : 1);
end;
readln;
end.
Thử trong Pascal
Chạy Magnifer
BT-AD : ,
1/ Ghi kết quả đúng , sai của mỗi câu sau :
a/ dùng kiểu bản ghi có thể lưu nhiều loại dữ liệu khác kiểu nhau trong 1 biến.
b/ có thể nhập, xuất giá trị 1 biến bản ghi bằng cách viết lệnh nhập, xuất với tham chiếu đến từng trường của biến.
c/ không thể viết lệnh writeln(a); với a là biến kiểu bản ghi.
d/ để gán trị cho trường hoten của biến a ta viết hoten :=‘ Nguyen thi Anh Hong’;
e/ với 2 biến cùng 1 kiểu bản ghi là a,b ta có thể viết lệnh : a:=b ;
f/ để viết nội dung trong trường ho của biến bản ghi a ra màn hình ta dùng lệnh : writeln(a.ho :50);
g/ khai báo kiểu bản ghi như sau là đúng cú pháp không ?
Type diem = record
x,y : real;
Var a,b,c : diem;
Đề BT-AD Kiểu bản ghi -1
1/ Ghi kết quả đúng , sai của mỗi câu sau :
a/ dùng kiểu bản ghi có thể lưu nhiều loại dữ liệu khác kiểu nhau trong 1 biến. Đ
b/ có thể nhập, xuất giá trị 1 biến bản ghi bằng cách viết lệnh nhập, xuất với tham chiếu đến từng trường của biến. Đ
c/ không thể viết lệnh writeln(a); với a là biến kiểu bản ghi. Đ
d/ để gán trị cho trường hoten của biến a ta viết hoten :=‘ Nguyen thi Anh Hong’; S
e/ với 2 biến cùng 1 kiểu bản ghi là a,b ta có thể viết lệnh : a:=b ;Đ
f/ để viết nội dung trong trường ho của biến bản ghi a ra màn hình ta dùng lệnh : writeln(a.ho :50); Đ
g/ khai báo kiểu bản ghi như sau là đúng cú pháp không ? S
Type diem = record
x,y : real;
Var a,b,c : diem;
Kết quả BT-AD -1
BT-AD :
2/ Type sach=record nxb,tensach :string; giatien :longint;
maso :string[10]; end;
Var a,b,c: sach; t: string;
viết kết quả hiện ra trên màn hình khi thực hiện đoạn lệnh sau:
t := ‘bai tap toan 11’; a.tensach := t; b := a; writeln(b.tensach);
c := a; c.giatien := 10000; a := c; writeln(a.tensach,’ ‘,a.giatien);
bai tap toan 11
bai tap toan 11 10000
Đề BT-AD Kiểu bản ghi -2
BT-AD :
3/ CT (dùng kiểu bản ghi) nhập hoten, tuoi, diem1,diem2,diem3 của n học sinh (n<=30), sau đó viết ra danh sách gồm 4 cột hoten tuoi diemtb xloại (xloai xét theo diemtb như những bài trước đây, diemtb là trung bình của các điểm không tính hệ số). Hãy viết khai báo biến cho CT
Type hs=record
hoten:string[45];
tuoi:byte;
diem1,diem2,diem3,diemtb:real;
xloai:string[15];
end;
Var a: array [1..30] of hs;
* Có thể không đưa vào 2 trường diemtb,xloai cũng được…
Đề BT-AD Kiểu bản ghi -2
BT-AD :
4/ CT nhập hoten, tuoi, diemtb của n học sinh (n<=30), sau đó viết ra danh sách gồm 3 cột hoten tuoi diemtb của những học sinh có diemtb cao nhất. Hãy viết đoạn lệnh tìm diemtb cao nhất.
*Giả sử ta đã có khai báo biến là :
Const nmax=30;
type hs = record hoten:string[45];tuoi:byte;diemtb:real; end;
Var a : array [1..nmax] of hs;
n, i, j : byte;
max:=a[1].diemtb;
for i:=1 to n do
if a[i].diemtb > max then max := a[i].diemtb;
writeln(‘diemtb cao nhat la = ’ , max :5:2);
Đề BT-AD Kiểu bản ghi -2
Bài tập về nhà!
5/ viết CT nhập dữ liệu về n quyển sách gồm tensach, nxb, sotrang, giatien, tacgia. (n<=100), sau đó viết ra danh sách các sách có giá tiền thấp nhất mỗi sách viết 3 nội dung tensach, nxb, tacgia. Xem ví dụ
6/ viết CT nhập n (n<=100) đoạn thẳng, dữ liệu về 1 đoạn thẳng: gồm hoành độ, tung độ của 2 điểm 2 đầu đoạn thẳng (xét trong mặt phẳng). Viết ra dữ liệu của những đoạn thẳng có độ dài lớn nhất.
Xem ví dụ
BTVN
Tóm tắt về Kiểu bản ghi -1
? Em hãy nêu sự khác nhau giữa kiểu bản ghi và các kiểu có cấu trúc khác?.
(trả lời theo từng hs)
Minh họa: hình ảnh trong bộ nhớ
*Biến mảng var a: array [1..4] of word;
Tất cả biến a chiếm 8B
*Biến bản ghi type hs = record ho:string[40];ten:string[10];diemtb:real;
end;
var t: hs;
Tất cả biến t chiếm 58B
Tóm tắt về Kiểu bản ghi -2
Sự khác nhau giữa kiểu bản ghi và các kiểu có cấu trúc khác là : các trường (thành phần, phần tử) của bản ghi có thể có kiểu dữ kiệu khác nhau.
Khái niệm : Kiểu bản ghi (record) dùng để mô tả các đối tượng có cùng các thuộc tính (trường) mà các thuộc tính này có thể có các kiểu dữ liệu khác kiểu nhau.
Khai báo :
Type
…..
end;
Var
+ Tham chiếu đến từng trường : Tên biến.Tên trường
+ Xử lý trên biến kiểu bản ghi :
lệnh gán giá trị : có 2 trường hợp
1/ gán trực tiếp cả 1 biến từ giá trị đã có trong 1 biến khác cùng kiểu bản ghi đó
2/ gán cho từng trường
Tóm tắt về Kiểu bản ghi - 3
Dặn dò – chuẩn bị ở nhà :
1/ học bài và làm các bài tập còn lại.
2/ giờ tới là tiết bài tập.
Dặn dò
Cám ơn đã theo dõi bài
Bài học kết thúc
GV Ph.Th – Bmt – 1/2/2010
Bài : Kiểu bản ghi
Tiết 31 ppct
Kết thúc
LG mẫu VD-dandat -1
Const nmax=100;
Var ho : array [1..nmax] of string[40];
ten: array [1..nmax] of string[10];
diemtb: array [1..nmax] of real;
h:string[40]; t:string[10]; d:real;
n,I,j:byte;
Begin {phần nhập dữ liệu vào}
write(‘nhap so hs n= ‘);readln(n);
for i:=1 to n do
begin write(‘nhap thong tin hs thu ‘, i, ‘la:’);
write(‘nhap ho : ‘);readln(ho[i]);
write(‘nhap ten : ‘);readln(ten[i]);
write(‘nhap diemtb : ‘);readln(diemtb[i]);
end;
LG mẫu VD-dandat -2
{phần sắp xếp theo tên}
for i:=n downto 2 do
for j:=1 to i-1 do
if ten[j] > ten[j+1] then
begin t:=ten[j];
ten[j]:=ten[j+1];
ten[j+1]:=t;
h:=ho[j];
ho[j]:=ho[j+1];
ho[j+1]:=h; d:=diemtb[j];
diemtb[j]:=diemtb[j+1];
diemtb[j+1]:=d;
end;
LG mẫu VD-dandat -3
{phần viết kết quả}
writeln(‘Ket qua ds sap tang theo ten la:’);
for i:=1 to n do
begin write( ho[i] :40);
write(ten[i] : 10);
writeln(diemtb[i] : 6 : 1);
end;
readln;
end.
Thử trong Pascal
Trở về slide cũ
* 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ẻ: Phạm Vân Thái
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)