1. 1
BÀI TẬP VÀTHƢ̣C HÀNH SỐ7 (TỔNG HỢP)
PHIẾU BÀI TẬP
BÀI TOÁN 1: VIẾT CHƢƠNG TRÌNH NHẬP VÀO TỌA ĐỘBA ĐỈNH CỦA MỘT TAM GIÁC , XUẤT RA CHU VI ,
DIỆN TÍCH, VÀ TÍNH CHẤT CỦA TAM GIÁC (ĐỀU, CÂN, VUÔNG)
MỘT SỐNỘI DUNG CHUẨN BỊ:
-Đọc sách giáo khoa, Bài tập và thực hành 7, trang 105 – 108
-Xác định bài toán, tìm hiểu cách xử lý bài toán bằng toán học
-Hiểu tại sao cần phải định nghĩa kiểu dƣ̃liệu cócấu trúc (DIEM, TAMGIAC)
-Hiểu tại sao cần phải sƣ̉dụng các thủtục, hàm nhƣ trong bài mẫu của SGK
YÊU CẦU: chƣơng trình đƣợc xây dƣ̣ng dƣới dạng các chƣơng trình con (thủ tục và hàm), tận
dụng việc khai kiểu dữ liệu có cấu trúc (record cho điểm vàtam giác)
1. XÁC ĐỊNH BÀI TOÁN
Input: Tọa độ 3 đỉnh tam giác ABC,với A(xA, yA), B(xB, yB), C(xC, yC)
Output: chu vi, diện tích, tính chất: đều, cân, vuông
2. PHÂN TÍCH VÀTHIẾT KẾ
a. Phân tích:
-Thành phần dữ liệu:
Input: sốthƣ̣c xA, yA, xB, yB, xC, yC
Output: sốthƣ̣c chuvi, dientich
chuỗi thông báo “tam giac can”, “tam giac deu”, “tam giac vuong”
-Thành phần xử lý:
Nhập tọa độđỉnh
1. Tính độdài cạnh a, b, c
2. Tính chu vi = a + b + c
3. Tính diện tích = sqrt(p(p-a)*(p-b)*(p-c)) với p = (a+b+c)/2
4. Kiểm tra tính chất
Nếu a = b = c thìlà“deu”
Nếu a = b hoặc b = c hoặc c = a thìlà“can”
Nếu a2
+b2
=c2
hay a2
+c2
=b2
hay b2
+c2
=a2
thì là “vuong”
5. Xuất chu vi, diện tích, tính chất: đều, cân, vuông tƣơng ƣ́ng
b. Thiết kế
-Đơn vịdƣ̃liệu:
Input:
xA, yA, xB, yB, xC, yC = real;
Output:
chuvi, dientich: real;
deu, can, vuong: boolean;
Cải tiến: sƣ̉dụng cách định nghĩa kiểu dƣ̃liệu cócấu trúc (RECORD)
(*MO TA DIEM CUA TAM GIAC *)
Diem = record
x, y: real;
End;
(* MO TA TAM GIAC VOI BA DINH A,B,C *)
Tamgiac = record
A,B,C: Diem;
End;
-Đơn vịxƣ̉lý: sƣ̉dụng các chƣơng trình con nhƣ sau
Lƣu ý: tìm hiểu sự khác biệt khi sử dụng hàm và thủ tục , cách truyền tham biến và
truyền tham trịtrong các hàm vàthủtục của chƣơng trình này .
2. 2
(*HAM TINH KHOANG CACH GIUA 2 DIEM P, Q *)
Function Kh_cach (P,Q: Diem):real;
(*THU TUC NHAN DAU VAO LA BIEN MO TA TAM GIAC R VA DAU RA LA DO DAI CUA 3 CANH a,b,c*)
Procedure Daicanh(var R: Tamgiac;var a,b,c: real);
(* HAM TINH CHU VI TAM GIAC R *)
Function Chuvi(var R: Tamgiac): real;
(* HAM TINH DIEN TICH CUA TAM GIAC R *)
Function Dientich(var R: Tamgiac): real;
(* THU TUC HIEN THI TOA DO 3 DINH TAM GIA LEN MAN HINH *)
Procedure Hienthi(var R: Tamgiac);
(* THU TUC NHAN DAU VAO LA BIEN MO TA TAM GIAC R VA DAU RA LA TINH CHAT TAM GIAC *)
Procedure Tinhchat(var R:Tamgiac;var Deu,Can,Vuong:boolean);
- Sơ đồthủtục/hàm:
-Thuật giải chi tiết:
Sƣ̉dụng lƣu đồđểthểhiện các thuật giải chi tiết khó, phƣ́c tạp
Hƣớng dẫn vàlƣu ýcác điểm khótrong chƣơng trình
(* THU TUC HIEN THI TOA DO 3 DINH TAM GIA LEN MAN HINH *)
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;
(*HAM TINH KHOANG CACH GIUA 2 DIEM P, Q *)
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;
(*THU TUC NHAN DAU VAO LA BIEN MO TA TAM GIAC R VA DAU RA LA DO DAI CUA 3 CANH a,b,c*)
Tinh_chat_tam_giac
Hienthi Chuvi Dientich Tinhchat
Daicanh
Kh_cach
3. 3
Procedure Daicanh(var R: Tamgiac;var a,b,c: real);
Begin
a:=Kh_cach(R.B,R.C); (* a la do dai canh BC *)
b:=Kh_cach(R.A,R.C); (* B la do dai canh AC *)
c:=Kh_cach(R.B,R.A); (* c la do dai canh AB *)
End;
(* THU TUC NHAN DAU VAO LA BIEN MO TA TAM GIAC R VA DAU RA LA TINH CHAT TAM GIAC *)
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)< eps) and (abs(a-c)< eps) then
Deu:=true;(*kiem tra deu*)
Else
If(abs(a-b)<eps) or (abs(a-c)<eps) or (abs(b-c)<eps) then Can:=true;
(*kiem tra can*)
If(abs(a*a+b*b-c*c)<eps)or(abs(a*a+c*c-b*b)<eps)or(abs(b*b+c*c-a*a)<eps)then
Vuong:=true; (*kiem tra vuong*)
End;
3. CÀI ĐẶT CHƢƠNG TRÌNH
(* KHAI BAO BIEN TOAN CUC *)
Var T:Tamgiac;
Deu,Can,Vuong: boolean;
(*CHUONG TRINH CHINH *)
Begin
CLRSCR;
writeln('nhap vao toa do 3 dinh cua 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('Chu vi : ',Chuvi(T):9:3);
writeln('Dien tich : ',Dientich(T):9:3);
Tinhchat(T,Deu,Can,Vuong);
if Deu then writeln('TAM GIAC ABC BAN VUA NHAP LA TAM GIAC DEU');
if Can then writeln('TAM GIAC ABC BAN VUA NHAP LA TAM GIAC CAN');
if Vuong then writeln('TAM GIAC ABC BAN VUA NHAP LA TAM GIAC VUONG');
readln;
End.
4. BỘDƢ̃LIỆU KIỂM TRA (EPS=1.0E-3)
A B C Chu vi Diện tích Tính chất
1 1 12 12 -9 -9 59.397 0.000 SAI
7 9 13 6 0 12.5 29.069 0.000 SAI
2 -3 3 -2 1 -1 5.886 1.500 TGIAC CAN
-1 2 3 4 3 2 10.472 4.000 TGIAC VUONG
2 30 15 20 15 40 52.802 130.000 TGIAC CAN
0 0 3 4 4 3 11.414 3.500 TGIAC CAN
0 0 3 0 1.5 2.599 9.002 3.899 TGIAC DEU
4. 4
BÀI TOÁN 2: MỞRỘNG CỦA BÀI TOÁN 1.
VỚI CÁC YÊU CẦU SAU:
1. KIỂM TRA DƢ̃LIỆU ĐẦU VÀO, TỌA ĐỘ CÁC ĐỈNH PHẢI THỎA MÃN TẠO THÀNH TAM GIÁC
3 điểm A(xA, yA), B(xB, yB), C(xC, yC) không thẳng hàng.
Lập phƣơng trình đƣờng thẳng qua 2 điểm, kiểm tra điểm còn lại cónằm trên đƣờng
thẳng hay không?
Kiểm tra điều kiện sau a+b > c vàa+c > b vàc+b>a, dùng để kiểm tra khi cho trƣớc
3 độdài a,b,c là các cạnh của tam giác . Kiểm tra thoảđiều kiện trên đểđảm bảo
đólà1 tam giác.
2. KIỂM TRA ĐƢỢC THÊM TÍNH CHẤT VUÔNG CÂN, THƢỜNG
Lƣu ý: trƣờng hợp tam giác đều cũng làtam giác cân – không hiển thịthông báo là
“tam giác đều”, và “tam giác cân”
BÀI TOÁN 3: Viết chƣơng trình sƣ̉dụng các hàm vàthủtục đãxây dƣ̣ng ởbài toán 1 để
giải bài toán.
Cho tệp dƣ̃liệu TAMGIAC.DAT có cấu trúc nhƣ sau:
a. Dòng đầu tiên chứa số N; (* sốlƣợng tam giác *)
b. N dòng tiếp theo , mỗi dòng chƣ́a s áu số thực x A, yA, xB, yB, xC, yC là tọa độ 3 đỉnh
A(xA, yA), B(xB, yB), C(xC, yC) 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 làđều);
Dòng thứ ba là số lƣợng tam giác vuông
Hƣớng dẫn: sƣ̉dụng 2 chƣơng trình con Daicanh vàTinhchat
Cùng với các thủ tục xử lý tệp nhƣ assign, reset, readln, writeln
1. CÀI ĐẶT CHƢƠNG TRÌNH
(* KHAI BAO BIEN TOAN CUC *)
Var n,i,deu1,can1,vuong1:integer;
f:text;
(*CHUONG TRINH CHINH*)
Begin
CLRSCR;
Assign(f,'TAMGIAC.DAT');
Reset(f);
Read(f,n);
deu1:=0; can1:=0; vuong1:=0;
For i:=1 to n do
Begin
Read(f,T.A.x,T.A.Y);
Read(f,T.B.x,T.B.Y);
Read(f,T.C.x,T.C.Y);
Hienthi(T);
Tinhchat(T,Deu,Can,Vuong);
If Deu then deu1 := deu1 + 1;
If Can then can1 := can1 + 1;
If Vuong then vuong1 := vuong1 +1 ;
End;
Assign(f,'TAMGIAC.OUT');
Rewrite(f);
Writeln(f,'co tat ca ',deu1,' tam giac deu');
Writeln(f,'co tat ca ',can1,' tam giac can');