Chương trình trên để thực hiện được yêu cầu của đề bài, chúng ta phải viết đi viết lại ba dòng liên tiếp tính chu vi, diện tích và đường chéo của từng hình chữ nhật.. Giả sử nếu phải tín[r]
(1)1) Đáp ứng nhu cầu xóa bỏ hạn chế Xét bài toán : “Viết chương trình cho máy tính chu vi, diện tích và đường chéo ba hình chữ nhật theo hai kích thước hình Trong đó: - Hình thứ có hai kích thước là a1, a2 - Hình thứ hai có hai kích thước là b1, b2 - Hình thứ ba có hai kích thước là a1+b1 và a2*b2” Var a1, b1, a2, b2, c1, c2, c3, d1, d2, d3, m1, m2, m3 : Real; Begin Writeln('Nhap hai canh cua hinh chu nhat thu nhat:'); Write('a1 = '); Readln(a1); Write('b1 = '); Readln(b1); Writeln('Nhap hai canh cua hinh chu nhat thu hai:'); Write('a2 = '); Readln(a2); Write('b2 = '); Readln(b2); c1 := * (a1 + b1); c2 := * (a2 + b2); c3 := * ((a1 + b1) + (a2 * b2)); d1 := a1 * b1; d2 := a2 * b2; d3 := (a1 + b1) * (a2 * b2); m1 := sqrt(a1 * a1 + b1 * b1); m2 := sqrt(a2 * a2 + b2 * b2); m3 := sqrt(sqr(a1 + b1) + sqr(a2 * b2)); Writeln('Hinh chu nhat thu nhat:'); Writeln('Chu vi bang : ',c1:0:2); Writeln('Dien tich bang : ',d1:0:2); Writeln('Duong cheo bang: ',m1:0:2); Writeln('Hinh chu nhat thu hai:'); Writeln('Chu vi bang : ',c2:0:2); (2) Writeln('Dien tich bang : ',d2:0:2); Writeln('Duong cheo bang: ',m2:0:2); Writeln('Hinh chu nhat thu ba:'); Writeln('Chu vi bang : ',c3:0:2); Writeln('Dien tich bang : ',d3:0:2); Writeln('Duong cheo bang: ',m3:0:2); Readln End Chương trình trên để thực yêu cầu đề bài, chúng ta phải viết viết lại ba dòng liên tiếp tính chu vi, diện tích và đường chéo hình chữ nhật Giả sử phải tính đến n hình chữ nhật thì vấn đề thực là phức tạp Trong bài toán trên ta còn chưa có phần kiểm tra điều kiện nhập vào hình Nếu có thêm điều kiện này, chắn chương trình còn dài Vấn đề đặt là: làm nào có thể xóa bỏ hạn chế này? Ở đây, chúng ta có thể hướng dẫn cho học sinh sử dụng chương trình để khắc phục hạn chế đó Thay vì phải viết nhiều lần lệnh nhập, tính tính lại cho hình ta có thể viết thủ tục: Thủ tục nhập hai cạnh hình chữ nhật Thủ tục Tính ba giá trị cho hình Var a1, b1, a2, b2: Real; Procedure Nhap(Var x, y: Real; i: Byte); Begin Writeln('Nhap hai kich thuoc cua hinh chu nhat thu ',i,':'); Repeat Write('Canh thu nhat: '); Readln(x); Write('Canh thu hai : '); Readln(y); If (x <= 0) Or (y <= 0) Then Writeln('Nhap lai!'); Until (x > 0) And (y > 0); (3) End; Procedure Tinh(a, b: Real; k: Byte); Begin Writeln('Hinh chu nhat thu ',k,':'); Writeln('Chu vi bang : ',2 * (a + b):0:2); Writeln('Dien tich bang : ',a * b:0:2); Writeln('Duong cheo bang: ',sqrt(a * a + b * b):0:2); End; Begin Nhap(a1, b1, 1); Nhap(a2, b2, 2); Tinh(a1, b1, 1); Tinh(a2, b2, 2); Tinh(a1 + b1, a2 * b2, 3); Readln End (4)