Tin học 11 Bài tập và thực hành 7
Để các em học sinh có cái nhìn tổng quan hơn về môn Tin học 11, eLib xin giới thiệu nội dung của bài tập và thực hành 7 dưới đây với nội dung được trình bày đầy đủ, chi tiết. Mời các em cùng tham khảo!
Mục lục nội dung
1. Tóm tắt lý thuyết
1.1. Mục đích, yêu cầu
- Củng cố lại kiến thức về chương trình con: thủ tục, hàm, tham số biến và tham số giá trị, biến toàn bộ và biến cục bộ.
- Sử dụng được chương trình để giải quyết trọn vẹn một bài toán trên máy tính.
- Biết cách viết một chương trình có cấu trúc để giải một bài toán trên máy tính.
- Nâng cao kĩ năng viết, sử dụng chương trình con.
1.2. Nội dung
a) Tìm hiểu việc xây dựng các hàm và thủ tục thực hiện tính độ dài các cạnh, chu vi, diện tích, kiểm tra các tính chất đều, cân, vuông của tam giác được trình bày dưới đây.
Giả thiết tam giác được xác định bởi tọa độ của ba đỉnh. Ta sử dụng kiểu bản ghi để mô tả một tam giác.
Type Diem=record
X,y:real
End;
Tamgiac=record
A,B,C:Diem;
End;
Ta xây dựng các thủ tục và hàm :
+ Thủ tục nhận dữ liệu vào là biến mô tả tam giác R và dữ liệu ra là độ dài của ba cạnh a,b,c: Procedure Daicanh(var R:Tamgiac; var a,b,c:real);
+ Hàm tính chu vi của tam giác R: function ChuVi(var R:Tamgiac):real;
+ Hàm tính diện tích của tam giác R: function Dientich(var R:Tamgiac):real;
+ Thủ tục nhận đầu vào là biến mô tả tam giác R và đầu ra là tính chất của tam giác: procedure Tinhchat(var R:Tamgiac;var Deu,Can,Vuong:boolean);
+ Thủ tục hiển thị tọa độ ba đỉnh của tam giác lên màn hình: procedure Hienthi (var R:tamgiac);
+ Hàm tính khoảng cách giữa hai điểm P,Q: function Kh_cach(P,Q:Diem):real;
b) Tìm hiểu chương trình nhập vào tọa độ ba đỉnh một tam giác và sử dụng hàm, thủ tục được xây dựng dưới đây để khảo sát các tính chất của tam giác.
uses crt;
const eps=1.0E-6;
type
Diem=record
x,y:real;
end;
Tamgiac=record
A,B,C:Diem;
end;
var T:Tamgiac;
Deu,Can,Vuong:boolean;
function Kh_cach(P,Q:Diem):real;
begin
Kh_cach:=sqrt((P.X-Q.x)*(P.x-Q.x)+(P.y-Q.y)*(P.y-Q.y));
end;
procedure Daicanh(var R:Tamgiac;var a,b,c:real);
begin
a:=Kh_cach(R.B,R.C);
b:=Kh_cach(R.A,R.C);
c:=Kh_cach(R.A,R.B);
end;
function ChuVi(var R:Tamgiac):real;
var a,b,c:real;
begin
Daicanh(R,a,b,c);
Chuvi:=a+b+c;
end;
function Dientich(var R:Tamgiac):real;
var a,b,c,p:real;
begin
Daicanh(R,a,b,c);
p:=(a+b+c)/2;
Dientich:=sqrt(p*(p-a)*(p-b)*(p-c));
end;
procedure Hienthi (var R:tamgiac);
begin
writeln('Toa do 3 dinh cua tam giac la :');
writeln('-Dinh A(',R.A.x:0:3,',',R.A.y:0:3,')');
writeln('-Dinh B(',R.B.x:0:3,',',R.B.y:0:3,')');
writeln('-Dinh C(',R.C.x:0:3,',',R.C.y:0:3,')');
end;
procedure Tinhchat(var R:Tamgiac;var Deu,Can,Vuong:boolean);
var a,b,c:real;
begin
Deu:=false;Can:=false;;Vuong:=false;
Daicanh(R,a,b,c);
if (abs(a-b)
Deu:=true
else
if (abs(a-b)
then Can:=true;
if (abs(a*a+b*b-c*c)
then Vuong:=true;
end;
begin
clrscr;
writeln('Nhap tam giac :');
write('Toa do dinh A:'); readln(T.A.x,T.A.y);
write('Toa do dinh B:'); readln(T.B.x,T.B.y);
write('Toa do dinh C:'); readln(T.C.x,T.C.y);
writeln('======================================');
Hienthi(T);
writeln('Dien tich: ',Dientich(t):9:3);
writeln('Chu vi:',Chuvi(T):9:3);
Tinhchat(T,Deu,Can,Vuong);
writeln('Tam giac co tinh chat :');
if Deu then writeln('La tam giac deu ')
else if Can then writeln('La tam giac can ');
if Vuong then writeln('La tam giac vuong ');
readln;
end.
Kết quả:
c) Viết chương trình sử dụng các hàm và thủ tục xây dựng ở trên để giải bài toán:
Cho tệp dữ liệu TAMGIAC.DAT có cấu trúc như sau:
+ Dòng đầu tiên chứa số N;
+ N dòng tiếp theo, mỗi dòng chứa sáu số thực Xa, Xb, Xc, Ya, Yb, Yc là tọa độ của ba đỉnh A, B, C của tam giác ABC.
Hãy nhập dữ liệu từ tệp đã cho và trong số N tam giác đó, đưa ra tệp TAMGIAC.OUT gồm 3 dòng:
+ Dòng đầu tiên là số lượng tam giác đều.
+ Dòng thứ hai là số lượng tam giác cân (nhưng không đều );
+ Dòng thứ ba là số lượng các tam giác vuông;
Trả lời:
+ Ta cần 2 biến kiểu tệp để tham chiếu đến 2 tệp 'TAMGIAC.DAT' và 'TAMGIAC.OUT' .
+ Đầu tiên ta đọc số N ở đầu tệp 'TAMGIAC.DAT' từ đó biết tiến hành đọc bấy nhiêu tam giác.
+ Sau đó dùng thủ tục Tinhchat để xác định tính chất của các tam giác. Rồi dùng các biến đếm để lưu số lượng các tam giác.
uses crt;
const eps=1.0E-6;
type
Diem=record
x,y:real;
end;
Tamgiac=record
A,B,C:Diem;
end;
var T:array[1..1000] of Tamgiac;
Deu,Can,Vuong:boolean;
N,i:integer;
sdeu,scan,svuong:integer;
tin,tout:text;
function Kh_cach(P,Q:Diem):real;
begin
Kh_cach:=sqrt((P.X-Q.x)*(P.x-Q.x)+(P.y-Q.y)*(P.y-Q.y));
end;
procedure Daicanh(var R:Tamgiac;var a,b,c:real);
begin
a:=Kh_cach(R.B,R.C);
b:=Kh_cach(R.A,R.C);
c:=Kh_cach(R.A,R.B);
end;
procedure Tinhchat(var R:Tamgiac;var Deu,Can,Vuong:boolean);
var a,b,c:real;
begin
Deu:=false;Can:=false;;Vuong:=false;
Daicanh(R,a,b,c);
if (abs(a-b)
Deu:=true
else
if (abs(a-b)
then Can:=true;
if (abs(a*a+b*b-c*c)
then Vuong:=true;
end;
begin
assign(tin,'TAMGIAC.DAT');
reset(tin);
assign(tout,'TAMGIAC.OUT');
rewrite(tout);
sdeu:=0;
scan:=0;
svuong:=0;
readln(tIN,N);
for i:=1 to N do
begin
Deu:=false;
Can:=false;
Vuong:=false;
readln(tin,T[i].A.x,T[i].A.y,T[i].B.x,T[i].B.y,T[i].C.x,T[i].C.y);
Tinhchat(T[i],Deu,Can,Vuong);
if Deu then
sdeu:=sdeu+1
else if Can
then scan:=scan+1;
if Vuong then
svuong:=svuong+1;
end;
writeln(tout,'So luong cac tam giac deu la ',sdeu);
writeln(tout,'So luong cac tam giac can ma khong deu la ',scan);
write(tout,'So luong cac tam giac vuong la ',svuong);
close(tin);
close(tout);
end.
Kết quả:
Với dữ liệu file nguồn:
Kết quả nhận được ở file đích
2. Luyện tập
Câu 1: Biến toàn cục là các biến được khai báo trong?
A. Phần khai báo của chương trình con
B. Phần khai báo của thủ tục
C. Tựa đề chương trình chính
D. Phần khai báo của chương trình chính
Câu 2: Khẳng định nào sau đây là đúng?
A. Biến cục bộ là biến chỉ được dùng trong chương trình con chứa nó
B. Biến toàn bộ chỉ được sử dụng trong chương trình chính và không được sử dụng trong các chương trình con.
C. Biến cục bộ là biến được dùng trong chương trình con chứa nó và trong chương trình chính
D. Biến cục bộ là biến chỉ được dùng trong chương trình chính
Câu 3: Khẳng định nào sau đây là đúng?
A. Cả thủ tục và hàm đều có thể có tham số hình thức
B. Thủ tục và hàm nào cũng phải có tham số hình thức.
C. Chỉ có thủ tục mới có thể có tham số hình thức
D. Chỉ có hàm mới có thể có tham số hình thức
Câu 4: Khẳng định nào sau đây là đúng?
A. Một chương trình con nhất thiết phải có biến cục bộ
B. Một chương trình con nhất thiết phải có tham số hình thức, không nhất thiết phải có biến cục bộ
C. Một chương trình con nhất thiết phải có tham số hình thức
D. Một chương trình con có thể không có tham số hình thức và cũng có thể không có biến cục bộ
Câu 5: Biến cục bộ là các biến được khai báo trong?
A. Phần khai báo của chương trình chính
B. Tựa đề của hàm
C. Phần khai báo của chương trình con
D. Tựa đề của chương trình con
3. Kết luận
Qua bài thực hành số 7 môn Tin học 11 các em nắm vững được một số ý chính sau đây:
- Củng cố lại kiến thức về chương trình con: thủ tục, hàm, tham số biến và tham số giá trị, biến toàn bộ và biến cục bộ.
- Sử dụng được chương trình để giải quyết trọn vẹn một bài toán trên máy tính.
- Để mô tả và quan lý điểm hay tam giác.. ta dùng kiểu dữ liệu bảng ghi sẽ làm việc khai báo các tham số hình thức của chương trình con ngắn gọn, sáng sủa, dễ hiểu hơn.
Tham khảo thêm
- doc Tin học 11 Bài 17: Chương trình con và phân loại
- doc Tin học 11 Bài 18: Ví dụ về cách viết và sử dụng chương trình con
- doc Tin học 11 Bài tập và thực hành 6
- doc Tin học 11 Bài 19: Thư viện chương trình con chuẩn
- doc Tin học 11 Bài tập và thực hành 8