PHÂN LOẠI DẠNG BÀI TẬP
MÔN CÔNG NGHỆ PHẦN MỀM
(Tài liệu tham khảo)
I, DẠNG BÀI TẬP CHUYỂN CẤU TRÚC VỀ DẠNG TUẦN TỰ VÀ WHILE:
Bài 1:
Chuyển cấu trúc sau về dạng tuần tự và while:
if A then V else T;
Giải:
Chuyển cấu trúc "if A then V else T" về dạng tuần tự và while :
B := A ;
while A do
Begin
V;
A :=not A;
end;
while not B do
Begin
T;
B:= not B;
end;
Bài 2:
Chuyển cấu trúc sau về dạng tuần tự và while:
a) For i:= k to m do A
b) if X then Y
Giải:
a, Chuyển cấu trúc "for i:=k to m do A" về cấu trúc tuần tự và while
i:=k ;
while i<=m do
Begin
A;
i:=i+1;
Begin
A;
i:=i-1
end;
b, Chuyển cấu trúc "repeat C until D"
C;
while not D do C
II, DẠNG BÀI TẬP VỀ ĐẶC TẢ MA TRẬN:
Bài 1:
Cho ma trận vuông X cấp n, n lẻ. Đặc tả hình thức các điều kiện sau:
a) Tổng 2 phần tử ở 2 đầu đường chéo chính bằng 3 lần phần tử cuối cùng của hàng 1.
b) Phần tử giữa của hàng cuối bằng phần tử giữa của cột cuối.
Giải:
Đặc tả ma trận vuông cấp n lẻ : X = (xi j)n*n
xi j = x[ i, j ]
i, j =1..n
n = 2k + 1 , k thuộc N
a, Tổng 2 phần tử ở 2 đầu đường chéo chính bằng 3 lần phần tử cuối của hàng 1
x[ 1, 1 ] + x[ n, n ] = 3 * x[ 1, n ]
b, Phần tử giữa của hàng cuối bằng phần tử giữa của cột cuối
x[ n, (n+1)/2]=x[ (n+1)/2 , n]
Bài 2:
Cho ma trận vuông cấp n, n lẻ. Đặc tả hình thức các điều kiện sau:
a, Phần tử ở góc trên bên trái bằng phần tử ở góc dưới bên phải.
b, Phần tử ở tâm bằng trung bình cộng của 2 phần tử đầu đường chéo phụ
Giải:
Đặc tả ma trận vuông cấp n lẻ :
X = (xi j)n*n
xi j = x[ i, j ]
i, j =1..n
Begin
x:= u/2;
f:= x+5*v-1;
End;
Begin
Write ('u=') ; readln(u);
Write ('v=') ; readln(v); t:=f;
Writeln (u:6:2 ,'/2 + 5*', v:6:2,'-1=',t:6:2);
End.
- Chương trình cho kết quả đúng hay sai?
- Nếu thay x bằng u thì kết quả sẽ như thế nào?
Giải:
- Chương trình cho kết quả đúng.
- Nếu thay x bằng u thì kết quả sẽ sai vì khi gọi hàm f, u sẽ bị biến đổi giảm đi nửa giá trị.
Bài 3: Cho đoạn chương trình sau:
Uses crt;
Var u,v,t : real;
Function f: real;
Begin
u:= u/2;
f:= x+5*v-1;
End;
Begin
Write ('u=') ; readln(u);
Write ('v=') ; readln(v); t:=f;
Writeln (u:6:2 ,'/2 + 5*', v:6:2,'-1=',t:6:2);
Until (u=v);
Readln
End.
- Chương trình có dừng khi ta nhập v bằng u không ? giải thích?
∨