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.
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:
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.
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.
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;
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
Có 2 cách để gán giá trị cho biến bản ghi:
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:
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.
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:
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.
Phát biểu nào sau đây về chức năng của kiểu bản ghi là phù hợp nhất?
Phát biểu nào sau đây về bản ghi là không phù hợp?
Câu 3-5: Mời các em đăng nhập xem tiếp nội dung và thi thử Online để củng cố kiến thức về bài học này nhé!
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 DapAnHay 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 DapAnHay
Phát biểu nào sau đây về chức năng của kiểu bản ghi là phù hợp nhất?
Phát biểu nào sau đây về bản ghi là không phù hợp?
Cho bản ghi sinh_vien gồm các trường ho_ten, ngay_sinh. Biểu thức nào truy cập đến trường ho_ten của bản ghi này?
Phát biểu nào dưới đây là đúng khi nói về kiểu bản ghi?
Phát biểu nào dưới đây là sai khi nói về kiểu bản ghi?
Họ và tên
Tiêu đề câu hỏi
Nội dung câu hỏi
Câu trả lời của bạn
Câu trả lời của bạn
Câu trả lời của bạn
(số vừa chia hết cho 2 mà vừa chia hết cho 3 thì sẽ chia hết cho 6)
var array: K[1..100] of integer;
array: T[1...100] of integer;
j,i,n: integer;
begin
writeln ('nhap n'); readln (n);
repeat
writeln ('nhap lai'); readln(n);
until (n<100);
j:=1;
for i:= 1 to n do
begin
writeln ('nhap phan tu thu ',i); readln (k[i]);
if k[i] mod 6 = 0 then
begin
t[j]:=k[i];
j:=j+1;
end;
end;
for i:= 1 to j do
if i mod 10 = 0 then writeln(t[i]) else write(t[i],' ');
readln;
end.
Câu trả lời của bạn
uses crt;
var s:string;
i,d:integer;
kt:boolean;
begin
clrscr;
write('Nhap xau:'); readln(s);
d:=length(s);
for i:=1 to d do
if s[i]=' ' then delete(s,i,1);
s:=upcase(s);
writeln(s);
readln;
end.
Câu trả lời của bạn
uses crt;
var a:array[1..1000]of integer;
n,i,t,dem:integer;
begin
clrscr;
write('n='); readln(n);
for i:=1 to n do
begin
write('a[',i,']='); readln(a[i]);
end;
dem:=0;
t:=0;
for i:=1 to n do
if (a[i]>0) and (a[i] mod 2<>0) then
begin
inc(dem);
t:=t+a[i];
end;
writeln(t/dem:4:2);
readln;
end.
Câu trả lời của bạn
uses crt;
var a:array[1..100,1..100]of integer;
n,i,j:integer;
begin
clrscr;
write('nhap n='); readln(n);
for i:=1 to n do
for j:=1 to n do
begin
write('a[',i,',',j,']='); readln(a[i,j]);
end;
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j]:4);
writeln;
end;
readln;
end.
Câu trả lời của bạn
uses crt;
var a:array[1..100]of real;
i,n:integer;
k:real;
begin
clrscr;
write('Nhap n='); readln(n);
for i:=1 to n do
begin
write('A[',i,']='); readln(a[i]);
end;
write('Nhap so k='); readln(k);
writeln('Cac boi cua ',k:4:2,' trong day la: ');
for i:=1 to n do
if a[i] mod k=0 then write(a[i]:4);
writeln;
writeln('Cac uoc cua ',k:4:2,' trong day la: ');
for i:=1 to n do
if k mod a[i]=0 then write(a[i]:4);
readln;
end.
Câu trả lời của bạn
uses crt;
var st,st1:string;
d,i,d1:integer;
begin
clrscr;
write('Nhap xau ban dau:'); readln(st);
d:=length(st);
st1:='';
for i:=1 to d do
if st[i] in ['a'..'z'] then st1:=st1+st[i];
d1:=length(st1);
write('Xau ban vua tao la: ');
for i:=1 to d1 do
write(st1[i]);
readln;
end.
Câu trả lời của bạn
Mảng là 1 tập hợp các phần tử được đánh số có thứ tự thường là từ 0 hoặc 1cho nên khi khai báo mảng ta cần khai báo thêm kích thước để máy có thể cấp phát đủ bộ nhớ chứa số lượng các phần tử.
Câu trả lời của bạn
Mảng là kiểu dữ liệu có cấu trúc bởi vì mảng (một chiều, hai chiều hay nhiều chiều) là kiểu có cấu trúc được đề cập tới sớm nhất trong các ngôn ngữ lập trình. Nó được xây dựng từ những kiểu dữ liệu dã có theo quy tắc khuôn dạng do ngôn ngữ lập trình cung cấp. Nó được dùng để chỉ định một nhóm đối tượng cùng một tính chất nào đó. Chẳng hạn, vectơ là một nhóm các số mà mỗi số ta có thể xác định chỉ cần biết chỉ số. Như vậy, để khai báo kiểu mảng phải chỉ ra kiểu dữ liệu chung của các phần tử và kiểu chỉ số.
Câu trả lời của bạn
Program HOC24;
var i: integer;
begin
for i:=1 to 15 do write('EM yeu pascal');
readln
end.
– 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í.
Câu trả lời của bạn
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;
constMax = 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
then Lop[i].XepLoai:=’B’;
if (Lop[i].Toan+Lop[i].Van>=10)And
(Lop[i].Toan+Lop[i].Van
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.
Câu trả lời của bạn
uses crt;
var i,n:integer;
s,t:real;
begin
clrscr;
readln(n);
s:=0.5;
for i:=2 to n do
s:=s+1/(i+1);
writeln('tong la: ',s:5:2);
readln;
end.
Câu trả lời của bạn
Kiểu dữ liệu của mảng có thể là những kiểu dữ liệu chuẩn (integer,byte,real,…), kiểu dữ liệu có cấu trúc (string,kiểu bản ghi).
A. Để mô tả đối tượng chứa nhiều loại thông tin khác nhau
B. Để mô tả nhiều dữ liệu
C. Để mô tả dữ liệu gồm cả số và xâu kí tự
D. Để tạo mảng nhiều chiều
Câu trả lời của bạn
Kiểu dữ liệu bản ghi dùng để mô tả hay lưu trữ các đối tượng có cùng một số thuộc tính (thông tin), mà các thuộc tính có thể có các kiểu dữ liệu khác nhau.
Đáp án: A
A. Bản ghi là dữ liệu có cấu trúc
B. Bản ghi thường có nhiều trường dữ liệu
C. Trường dữ liệu của bản ghi có thể là một kiểu bản ghi khác
D. Bản ghi thường được dùng để thay thế mảng
Câu trả lời của bạn
Kiểu dữ liệu bản ghi dùng để mô tả hay lưu trữ các đối tượng có cùng một số thuộc tính cần quản lý mà các thuộc tính có thể có các kiểu dữ liệu khác nhau. Đối với kiểu mảng thì dùng để mô tả các đối tượng có cùng thuộc tính nhưng kiểu dữ liệu giống nhau. Vì vậy không thể dùng bản ghi để thay thế mảng.
Đáp án: D
A. ho_ten;
B. sinh_vien → ho_ten;
C. sinh_vien.(ho_ten,ngay_sinh);
D. sinh_vien.ho_ten;
Câu trả lời của bạn
Cấu trúc tham chiếu đến một trường trong bản ghi là:
< Tên biến kiểu bản ghi>.< tên trường>;
Đáp án: D
A. Kiểu bản ghi là một kiểu dữ liệu có cấu trúc
B. Mỗi bản ghi mô tả một đối tượng, mỗi bản ghi có thể gồm một số thành phần gọi là trường, mỗi trường mô tả một thuộc tính của đối tượng. Giống như kiểu mảng, các thành phần tạo thành một bản ghi phải thuộc cùng một kiểu dữ liệu.
C. Có thể so sánh các bản ghi bất kì với nhau bằng các quan hệ <, >, =, <>
D. Trên các biến bản ghi, ta có thể sử dụng các phép toán số học +, – , *, /
Câu trả lời của bạn
Kiểu bản ghi là một kiểu dữ liệu có cấu trúc. Mỗi bản ghi mô tả một đối tượng, mỗi bản ghi có thể gồm một số thành phần gọi là trường, mỗi trường mô tả một thuộc tính của đối tượng. Giống như kiểu mảng, các trường tạo thành một bản ghi có thể có các kiểu dữ liệu khác nhau.
Đáp án: A
A. Có thể so sánh các bản ghi bất kì với nhau bằng các quan hệ <, >, =, <>
B. Kiểu bản ghi là một kiểu dữ liệu có cấu trúc
C. Với A. B là hai biến bản ghi thì ta chỉ có thể dùng lệnh gán A := B trong trường hợp A và B là cùng kiểu
D. Kiểu bản ghi cho chúng ta một phương thức xây dựng các kiểu dữ liệu mới một cách linh hoạt và phong phú. Kiểu bản ghi thường được dùng để mô tả các đối tượng trong các bài toán quản lí
Câu trả lời của bạn
Không thể so sánh các bản ghi bất kì với nhau bằng các quan hệ <, >, =, <>, vì các phép toán quan hệ dùng trong các biểu thức quan hệ.
Đáp án: A
A. Gán giá trị cho từng trường;
B. Gán giá trị cho bảng ghi;
C. Nhập giá trị từ bàn phím;
D. Cả 3 cách trên;
Câu trả lời của bạn
Trong ngôn ngữ lập trình Pascal, có thể gán giá trị cho bản ghi bằng cách:
+ 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
+ Dùng lệnh trực tiếp: nếu A. B là hai bản ghi cùng kiểu, ta có thể gán giá trị của B cho A bằng câu lệnh A:= B;
Đáp án: D
0 Bình luận
Để lại bình luận
Địa chỉ email của hạn sẽ không được công bố. Các trường bắt buộc được đánh dấu *