Đề bài
Bài tập và thực hành 7 trang 105 SGK Tin học 11
Lời giải chi tiết
1. Mục đích, yêu cầu
- Nâng cao kĩ năng viết, sử dụng chương trình con.
- 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.
2. Nội dung
a) Câu này nhằm mục đích 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 đều, cân, vuông của tam giác. Cụ thể là:
- Chúng ta cần hiểu rõ cách sử dụng kiểu bản ghi để mô tả một tam giác.
- 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à đầu ra là độ dài của ba cạnh a, b, c;
- Hàm tính chu vi của tam giác R;
- Hàm tính diện tích cùa tam giác R;
- Hàm tính khoảng cách giữa hai điểm P, Q
- Thủ tục hiển thị tọa độ ba đỉnh tam giác lên màn hình;
- 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 (Deu hay Can hay Vuong);
b) Trong câu này các chương trình con giải quyết một số bài toán đơn giản liên quan đến tam giác khi biết tọa độ các đỉnh, đó là: tính độ dài cạnh, tính chu vi, tính diện tích, kiểm tra các tính chất (đều, cân, vuông).
Khi dạy chương trình, giả sử ta nhập tọa độ của các đinh A, B, C theo thứ tự là: (2, 30), (15,10), (15, 40) thì trên màn hình thông báo:
Dien tich: 130.000,Chu vi: 52.802 Tam giac co tinh Chat: la tam giac can
Kết quả chương trình như hình 75 dưới đây:
Còn khi nhập tọa độ cùa các đinh A, B, c theo thứ tự là: (5, 30), (15,20) , (75. 40) thì trên màn hình thông báo:
Dien tich: 100.000,Chu i: 48.284 Tam giac co tinh Chat: la tam giac vuong can
Kết quả chương trình như hình 76 dưới đây:
c) Để xây dựng chương trình có sử dụng các hàm và thủ tục xây dựng ở câu a) trên nhằm đưa ra tính chất các tam giác:
- Số lượng tam giác đều;
- Số lượng tam giác cân;
- Số lượng tam giác vuông.
ta cần tạo tệp tamgiac. dat, để từ tệp này đọc dữ liệu sang tệp của chương trình chính.
- Chương trình tạo tệp tamgỉac. dat nhằm mục đích để nhập tọa độ (Các đỉnh của tam giác.
program cau_c_btth7;
uses crt;
type
Diem = record X, y:real,
end;
Tamgiac= record
A, B, C: Diem;
end;
var i, n: integer; f: text;
T: Tamgiac;
begin
clrscr;
assign(f,'tamgiac.dat');
rewrite(f) ,
writs 'Nhap so tam giac: ' );
read(n);
writeln (f , n) ;
for i:= 1 to n do
begin
wrri teln ( ' Nhap toa cua tam giac ',i,' la:');
read(T.A.X, T.A.y, T.B.X,T.B.y,T.C.X,T.C.y);
writeln ( f , T. A. X, T.A.y, T.B.x,T.B.y,T.C.x,T.C.y);
end
clrscr(f) ;
reacln
end.
Khi chạy chương trình, ta nhập số tam giác N= 3, với các tọa độ của tam giác lần lượt như sau (Hình 77):
Tọa độ của tam giác 1 là: (5; 10); (20; 10); (20; 50) (đây là tam giác vuông)
Tọa độ của tam giác 2 là: (2;30); (15; 20); (15; 40) (đây là tam giác cán)
Tọa độ của tam giác 2 là: (5; 30); (15; 20); (15; 35) (đây là tam giác thường)
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); ifMabs (a-b) <eps) and (abs (a-c) <eps) then
begin
Deu:= true;
Can:= true;
end else
if (abs (a-b) <eps) or (abs (a-c) <eps) or (abs (b-c) <ep:S) then Can:=true;
if (abs(a*a+b*b-c*c)<eps) or (abs (a*a+c*c-k*b) <c-ps) or (abs(b*b+c*c-a*a)<eps) then Vuong:= truer
end;
Begin
deu:= 0; can:= 0; vuong:= 0;
assign ( f, ' tamgiac . dat' ) ,
reset(f);
readln(f,N);
for i:= 1 to N do
begin
readln(f, T.A.X, T.A.y, T.B.x,T.B.y,T.C.x,T.C.y);
Tinhchat(T, D, Cn, V);
If D then deu:= deu + 1 else
begin
if Cn then can:= can + 1;
if V then vuong:= vuong + 1;
end;end;
writeln('Co: ',deu,'tam giac deu');
writeln('Co: can,'tam giac can(khong deu)' );
writeln('Co: ’,vuong, 'tam giac vuong);
readln;
end
Co 0 tam giac deu
Co 1 tam giac can(khong deu)
Co 1 tam giac vuong
Kết quả chương trình như hình 78 dưới đây: