D, x1, x2: real; Begin clrscr;
1. Kiểu mảng một chiều
a) Khái niệm
Bài toán: Nhập vào nhiệt độ (trung
bình) của mỗi ngày trong tuần. Tính và đa ra màn hình nhiệt độ trung bình của tuần và số lợng ngày trong tuần có nhiệt độ cao hơn nhiệt độ trung bình của tuần.
program Nhietdo_Tuan;
var t1,t2,t3,t4,t5,t6,t7,tb: real; dem: integer;
begin
writeln('Nhap vao nhiet to cua 7 ngay: ');
readln(t1,t2,t3,t4,t5,t6,t7); tb:=(t1+t2+t3+t4+t5+t6+t7)/7; dem:= 0;
if t1>tb then dem:= dem+1;
if t2>tb then dem:= dem+1;
if t3>tb then dem:= dem+1;
if t4>tb then dem:= dem+1;
if t5>tb then dem:= dem+1;
if t6>tb then dem:= dem+1;
if t7>tb then dem:= dem+1; writeln ('Nhiet do trung
binh tuan: ',tb:4:2); writeln ('So ngay nhiet do cao hon trung binh: ',dem); readln
end.
Mảng một chiều là dãy hữu hạn các phần tử cùng kiểu. Mảng đợc đặt
các thao tác trên mảng một chiều.
GV: Qua tìm hiểu chơng trình trên theo
em để mô tả mảng một chiều, ta cần xác định những yếu tố nào? Khi sử dụng mảng một chiều ta cần quan tâm điều gì?
HS: Suy nghĩ trả lời.
GV: Nhận xét và kết luận: Với mảng một
chiều ta cần quan tâm: - Tên mảng một chiều.
- Số lợng phần tử trong mảng. - Kiểu dữ liệu của các phần tử.
- Cách khai báo biến mảng một chiều. - Cách truy cập vào các phần tử trong mảng.
Hoạt động 2. Tìm hiểu cách khai báo mảng một chiều.
GV: Hãy cho biết cách khai báo kiểu dữ
liệu mảng một chiều trong ngôn ngữ lập trình Pascal. Cho ví dụ.
GV: Chia lớp thành ba nhóm, phát phiếu
học tập và yêu cầu các nhóm viết kết quả của nhóm vào phiếu học tập.
HS: Thảo luận theo nhóm và cử đại diện
nhóm để trình bày. Các nhóm theo dõi và cho nhận xét.
GV: Nhận xét và kết luận (treo phần khai
báo đã chuẩn bị sẵn ở giấy khổ lớn lên bảng). Giới thiệu khi nào sử dụng cách 1 khi nào nên sử dụng cách 2 để khai báo mảng.
GV: Chiếu lên bảng một số khai báo mảng
một chiều đã chuẩn bị trớc và yêu cầu HS xác định khai báo đúng hay sai.
HS: Suy nghĩ trả lời.
GV: Nhận xét và đa ra kết luận.
GV: Giả sử mảng A biểu diễn nhiệt độ của
các ngày trong tháng, vậy muốn biết nhiệt độ
tên và mỗi phần tử của nó có một chỉ số.
program Nhietdo_Nngay;
const Max = 366;
type Kmang1 = array[1..Max]
of real;
var Nhietdo: Kmang1; dem, i, N: byte;
Tong, Trung_binh: real;
begin write('Nhap so ngay: '); readln(N); Tong:= 0; for i:= 1 to N do begin
write('Nhap nhiet do ngay ',i, ': ');
readln(Nhietdo[i]);
Tong:= Tong + Nhietdo[i]; end;
dem:= 0;
trung_binh:= Tong/N;
for i:= 1 to N do
if Nhietdo[i] > trung_binh
then dem:= dem+1; writeln('Nhiet do trung
binh',N,' ngay:', trung_binh:8:3);
writeln('So ngay nhiet do cao hon trung binh: ',dem);
readln
end.
b) Khai báo
Cách 1. Khai báo trực tiếp biến
mảng một chiều:
var <tên biến mảng >: array[kiểu chỉ số]of<kiểu phần tử>;
Cách 2. Khai báo gián tiếp biến
mảng qua kiểu mảng một chiều:
type<tên kiểu mảng>= array [kiểu chỉ số]of<kiểu phần tử>;
var<tên biến mảng>:<tên kiểu mảng>;
trong đó:
của ngày 25 trong tháng phải viết thế nào?
HS: Suy nghĩ trả lời.
GV: Nhận xét và đa ra kết luận.
Hoạt động 3. Rèn luyện kĩ năng sử dụng mảng một chiều.
GV: Giới thiệu đề bài (ví dụ 1, SGK trang
56), chiếu đề bài lên bảng. Yêu cầu HS xác định dữ liệu vào, dữ liệu ra. Sau đó nêu thuật toán để giải bài toán (thuật toán đã học ở lớp 10).
GV: Nếu không sử dụng biến mảng một
chiều, có thể giải quyết đợc bài toán không? Khó khăn chỗ nào?
HS: Suy nghĩ trả lời.
GV: Định hớng cho HS sử dụng kiểu
mảng một chiều để giải quyết bài toán. Gợi ý để HS có ý tởng viết chơng trình: - Khai báo kiểu mảng.
- Xác định các thao tác chính cần giải quyết.
GV: Chiếu chơng trình lên bảng và chạy
thử với các bộ dữ liệu khác nhau.
GV: Giới thiệu đề bài (ví dụ 2, SGK trang
57), chiếu đề bài lên bảng. Yêu cầu HS phân tích bài toán và xác định dữ liệu vào, dữ liệu ra. Sau đó nhắc lại thuật toán đã học ở lớp 10.
HS: Suy nghĩ và hoạt động dới sự hớng
dẫn của GV.
GV: Chia lớp thành ba nhóm, yêu cầu các
nhóm viết chơng trình lên giấy bóng trong hoặc lên bìa cứng.
HS: Làm việc theo nhóm.
GV: Theo dõi các nhóm thảo luận và làm
nguyên liên tục có dạng n1..n2 với
n1,n2 là các hằng hoặc biểu thức
nguyên xác định chỉ số đầu và chỉ số cuối (n1 ≤ n2);
Kiểu phần tử là kiểu của phần tử mảng.
Ví dụ. Các khai báo kiểu mảng một
chiều sau đây là hợp lệ:
type ArrayReal = array[-100..200] of real; ArrayBoolean = array[-n+1.. n+1] of boolean; ArrayInt = [-100..0] of integer; trong đó, n là hằng nguyên.
Tham chiếu tới phần tử của mảng một chiều đợc xác định bởi tên mảng cùng với chỉ số, đợc viết trong cặp ngoặc [ và ].