PHÂN LOẠI BÀI TÂP
MÔN CÔNG NGHỆ PHẦN MỀM
CNT 45ĐH
GROUP
1
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
PHÂN LOẠI BÀI TÂP
MÔN CÔNG NGHỆ PHẦN MỀM
CNT 45ĐH
GROUP
2
i:=k ;
while i<=m do
Begin
A;
i:=i+1;
end;
b, Chuyển về cấu trúc "if X then Y"
while X do
Begin
Y;
X:= not X
end;
Bài 3:
Chuyển cấu trúc sau vế dạng tuần tự và while:
a) if A then V;
b) Repeat C until X;
Giải:
a, Chuyển cấu trúc "if A then V" về dạng tuần tự và while:
while A do
Begin
V ;
A := not A
end;
b, Chuyển cấu trúc "repeat C until X" :
C;
while not X do C
Bài 4:
Chuyển cấu trúc sau về dạng tuần tự và while:
a, For i:= m k do A ;
b, Repeat C until D ;
PHÂN LOẠI BÀI TÂP
MÔN CÔNG NGHỆ PHẦN MỀM
CNT 45ĐH
GROUP
3
Giải:
a, Chuyển cấu trúc "for i:=m downto k do A" về dạng tuần tự và while
i:=m
while i >=k do
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 = (x
i j
)n*n
x
i j
= x[ i, j ]
i, j =1..n
n = 2k + 1 k 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ành 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:
PHÂN LOẠI BÀI TÂP
MÔN CÔNG NGHỆ PHẦN MỀM
CNT 45ĐH
GROUP
4
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 bên trái bằng phần tử ở góc 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 = (x
i j
)n*n
x
i j
= x[ i, j ]
i, j =1..n
n = 2k + 1 k N
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
x[ 1, 1 ] = x[n, n]
b, Phần tử ở trung tâm bằng trung bình cộng của 2 phần tử đờng chéo phụ
x[ (n+1)/2, (n+1)/2 ] = (x[1, n] + x[n, 1])/2
III, DẠNG BÀI TẬP BẮT LỖI TRONG ĐOẠN CHƯƠNG TRÌNH:
Bài 1: 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);
Readln
End.
- Chương trình cho kết quả đúng hay sai? vì sao? Cho 1 ví dụ cụ thể.
Giải:
PHÂN LOẠI BÀI TÂP
MÔN CÔNG NGHỆ PHẦN MỀM
CNT 45ĐH
GROUP
5
- Chương trình cho kết quả sai vì u là biến toàn cục, nó đợc sử dụng cả trong và ngoài
CTC và lệnh u:=u/2 trong hàm f đã làm thay đổi giá trị được nhập vào của u, lúc in ra
kết quả sai vì u bị giảm nửa giá trị.
- Ví dụ khi nhập u=4 v=3 thì kết quả in ra là 2/2 + 5*3 - 1 = 16
Bài 2: Cho đoạn chương trình sau:
Var u,v,t : real;
Funtion f : real;
Var x : real;
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;