Bài 1. Đúng.
Bài 2. Lợi ích chính của việc sử dụng biến mảng là rút gọn việc viết chơng trình, có thể sử dụng câu lệnh lặp để thay nhiều câu lệnh. Ngoài ra chúng ta còn có thể lu trữ và xử lí nhiều dữ liệu có nội dung liên quan đến nhau một cách hiệu quả.
Bài 3. Đáp án a) Sai. Phải thay dấu phẩy bằng hai dấu chấm; b) và c) Sai, vì giá trị nhỏ nhất và lớn nhất của chỉ số mảng phải là số nguyên; d) Sai, vì giá trị đầu của chỉ số mảng phải nhỏ hơn hoặc bằng chỉ số cuối; e) Đúng.
Bài 4. Không. Giá trị nhỏ nhất và lớn nhất của chỉ số mảng phải đợc xác định ngay khi khai báo biến mảng.
Bài 5. Chơng trình có thể nh sau:
var N, i: integer;
A: array[1..100] of real;
begin
write('Nhap so phan tu cua mang, n= '); read(n);
for i:=1 to n do
begin
write('Nhap gia tri ',i,'cua mang, a[',i,']= ');
readln(a[i]) end;
end.
Bài 6. Đúng.
Bài 7. a) Nếu không sử dụng biến mảng, chơng trình có thể dài nh sau:
uses crt;
var So_1, So_2, So_3, So_4, So_5, Max: integer;
begin
clrscr;
write('Nhap so thu nhat: '); readln(So_1); write('Nhap so thu hai: '); readln(So_2); write('Nhap so thu ba: '); readln(So_3); write('Nhap so thu tu: '); readln(So_4); write('Nhap so thu nam: '); readln(So_5); Max:=So_1;
If Max<So_2 then Max:=So_2;
If Max<So_3 then Max:=So_3;
If Max<So_4 then Max:=So_4;
If Max<So_5 then Max:=So_5; writeln('So lon nhat: ',Max);
end.
b) Nếu sử dụng biến mảng, chơng trình chỉ ngắn gọn nh sau:
uses crt;
var i, Max: integer;
A: array[1..5] of integer;
begin
clrscr;
for i:=1 to 5 do
begin write('Nhap so thu ',i,':'); readln(A[i]) end; Max:=a[1];
writeln('So lon nhat: ',Max);
end.
Lu ý. Xem cách viết chơng trình ngắn gọn hơn và không sử dụng biến mảng trong bài tập 9, bài 7.
Tuy nhiên, cách viết đó sẽ không cho kết quả mong muốn nếu sau khi nhập giá trị của các biến còn cần thực hiện các thao tác dữ liệu khác với các giá trị đó.
Bài 8. Viết chơng trình sử dụng biến mảng để tính giá trị trung bình của tổng N số nguyên đợc nhập vào từ bàn phím. uses crt; var N, i: integer; TB: real; A: array[1..100] of real; begin clrscr;
write('Nhap so phan tu cua mang, n= '); read(n);
for i:=1 to n do
begin
write('Nhap gia tri ',i,'cua mang, a[',i,']= '); readln(a[i])
end; TB:=0;
for i:=1 to n do TB:=TB+a[i]; TB:=TB/n;
write('Trung binh bang ',TB);
end.
Bài 9. Chơng trình nhập n số nguyên từ bàn phím và tính tổng các số dơng:
uses crt;
var n,k,S: integer;
X: array[1..1000] of integer;
begin
clrscr;
write('Nhap so tu nhien n: '); readln(n);
for k:=1 to n do
begin write('Nhap X[',k,']='); readln(X[k]) end; S:=0;
for k:=1 to n do
if X[k]>0 then S:=S+X[k]; writeln('Tong cac duong S=',S); readln;
end.
Bài 10. Nội dung bài 2 của bài thực hành 6 là viết chơng trình nhận biết một số tự nhiên có phải là số nguyên tố hay không. Nội dung của bài tập 9, bài 8, là viết chơng trình tính tổng các ớc số thực sự của một số nguyên, nhng cha liệt kê đợc các ớc số đó. Để có thể liệt kê, chơng trình cần phải ghi lại chúng. ý tởng chính là sử dụng một biến mảng phục vụ cho điều này. Chơng trình tơng tự nh trong bài tập 9, Bài 8:
uses crt;
var n,i,k,S: integer;
X: array[1..10000] of integer;
begin
clrscr; i:=2; S:=0;
for k:=1 to (n-1) do X[k]:=0; {Dat lai = 0} write('Cho so tu nhien n>2: n= '); readln(n);
while i<=(n-1) do {Ghi lai uoc so vao X[i]}
begin if (n mod i)=0 then begin X[i]:=i; S:=S+X[i] end; i:=i+1;
end;
writeln('Tong cac uoc so thuc su cua ',n,' la: ',S);
if S<>0 then begin write('Cac uoc so cua ',n,' la: ');
for i:=1 to (n-1) do if X[i]<>0 then write(X[i],' ') end else writeln(n,' la so nguyen to.');
readln;
end.
Bài thực hành 7. Xử lí dãy số trong chơng trình
1. Mục đích, yêu cầu
• Thực hành khai báo và sử dụng các biến mảng ;
• Ôn luyện cách sử dụng câu lệnh lặp if...then, for...do; • Củng cố kĩ năng đọc, hiểu và chỉnh sửa chơng trình.
• Hiểu và viết đợc chơng trình với thuật toán tìm giá trị lớn nhất, nhỏ nhất của một dãy số, tính tổng dãy số.
2. Những điểm cần lu ý và gợi ý dạy học
Để gây hứng thú cho HS, cần dành thời gian để HS gõ, chạy thử chơng trình tìm Max, Min, Tính tổng dãy số. Hơn thế nữa, việc thực hiện các bài học là cần thiết do yêu cầu trong Chơng trình. HS cần viết đợc các chơng trình này. Chơng trình tìm Max đã đợc tiến hành ở bài lí thuyết, GV cần hớng dẫn HS tham khảo chơng trình P_Max để tự viết đợc chơng trình P_Min và chơng trình tính tổng P_Sum.
Chơng trình tìm Max đã đợc giới thiệu ở trên, dới đây là chơng trình P_Min và chơng trình P_Sum. Chơng trình tìm giá trị nhỏ nhất trong dãy số nguyên P_Min:
Program P_Min;
Var
i, n, Min : integer;
A: array[1..100] of integer;
Begin
write('Hay nhap do dai cua day so, N = '); readln(n); writeln('Nhap cac phan tu cua day so:');
Begin
write('a[',i,']='); readln(a[i]); End;
Min:=a[1];
for i:=2 to n do if Min>a[i] then Min:=a[i]; write('So nho nhat la Min = ',Min);
readln;
End.
Chơng trình tính tổng dãy số, trong chơng trình này có thêm câu lệnh in ra màn hình dãy số vừa nhập để ngời sử dụng có thể thuận tiện kiểm chứng kết quả chơng trình. Nhng đây cũng nhằm mục đích luyện tập với việc in phần tử của mảng ra màn hình.
Program P_Sum;
Var
i, n, Sum : integer;
A: array[1..100] of integer;
Begin
write('Hay nhap do dai cua day so, N = '); readln(n); writeln('Nhap cac phan tu cua day so:');
For i:=1 to n do
Begin
write('a[',i,']='); readln(a[i]); End;
Sum:=0;
for i:=1 to n do Sum:= Sum + a[i]; write('Day so vua nhap la: '); for i:=1 to n do write(a[i], ' '); writeln;
write('Tong day so la = ',Sum); readln;
End.
Thời gian còn lại dành để HS thực hành với các bài sử dụng kết hợp nhiều câu lệnh, biểu thức điều kiện... trong SGK.
Lu ý: Theo yêu cầu của chuẩn kiến thức, kĩ năng, kết thúc bài này phải đảm bảo HS hiểu đợc thuật toán, tự viết đợc chơng trình tìm số lớn nhất, nhỏ nhất của dãy số, kiểm tra điều kiện ba số a, b, c có phải là độ dài của ba cạnh của một tam giác hay không (hoặc các bài toán tơng đơng). HS cần tự viết đợc chơng trình nhập giá trị phần tử mảng, in ra màn hình các phần tử của mảng, tính tổng các phần tử của mảng. Do vậy, trong trờng hợp cần thiết GV cần lựa chọn, xây dựng nội dung tiết bài tập , ôn tập trên lớp hoặc thực hành trên phòng máy để đảm bảo đạt đợc yêu cầu quy định trong chuẩn kiến thức, kĩ năng.