Nội dung lý thuyết
BÀI 9: LÀM VIỆC VỚI DÃY SỐ
- Ví dụ 1. Trong Pascal ta cần nhiều câu lệnh khai báo và nhập dữ liệu dạng sau đây, mỗi câu lệnh tương ứng với điểm của một học sinh:
=> Để giúp giải quyết các vấn đề trên, một kiểu dữ liệu được gọi là kiểu mảng.
- Dữ liệu kiểu mảng là một tập hợp hữu hạn các phần tử có thứ tự, mọi phần tử đều có cùng một kiểu dữ liệu, gọi là kiểu của phần tử. Việc sắp thứ tự được thực hiện bằng cách gán cho mỗi phần tử một chỉ số:
- Khi khai báo một biến có kiểu dữ liệu là kiểu mảng, biến đó được gọi là biến mảng.
-Giá trị của biến mảng là một mảng, tức một dãy số (số nguyên, hoặc số thực) có thứ tự, mỗi số là giá trị của biến thành phần tương ứng.
- Để làm việc với các dãy số nguyên hay số thực, chúng ta phải khai báo biến mảng.
- Xét ví dụ về khai báo đơn giản một biến mảng trong ngôn ngữ Pascal như sau:
=> Với câu lệnh thứ nhất, ta đã khai báo một biến có tên Chieucao gồm 50 phần tử, mỗi phần tử là biến có kiểu số thực. Với câu lệnh khai báo thứ hai, ta có biến Tuoi gồm 60 phần tử (từ 21 đến 80) có kiểu số nguyên.
- Cách khai báo mảng trong ngôn ngữ lập trình Pascal như sau:
Var Tên mảng: array[<chỉ số đầu>..<chỉ số cuối>] of
<kiểu dữ liệu
>
- Trong đó:
- Tiếp tục với ví dụ 1, thay vì khai báo các biến Diem_1, Diem_2, Diem_3,... để lưu điểm số của các học sinh, ta khai báo biến mảng Diem như sau:
var Diem: array[1..50] of real;
(?) Cách khai báo và sử dụng biến mảng như trên có lợi gì?
- Trước hết, có thể thay rất nhiều câu lệnh nhập và in dữ liệu ra màn hình bằng một câu lệnh lặp. Chẳng hạn, ta có thể viết:
For i:=1 to 50 do readln(Diem[i]);
=> để nhập điểm của các học sinh.
- Để so sánh điểm của mỗi học sinh với một giá trị nào đó, ta cũng chỉ cần một câu lệnh lặp, chẳng hạn:
For i:=1 to 50 do if Diem[i]>8.0 then writeln('Gioi');
=> Điều này giúp tiết kiệm rất nhiều thời gian và công sức viết chương trình.
- Hơn nữa, mỗi học sinh có thể có nhiều điểm theo từng môn học: điểm Toán, điểm Văn, điểm Lí,... Để xử lí đồng thời các loại điểm này, ta có thể khai báo nhiều biến mảng:
var DiemToan: array[1..50] of real;
var DiemVan: array[1..50] of real;
var DiemLy: array[1..50] of real;
hay
var DiemToan, DiemVan, DiemLy: array[1..50] of real;
=> Khi đó, ta cũng có thể xử lí điểm thi của một học sinh cụ thể:
- Nhận xét:
A[1]:=5;
A[2]:=8;
for i := 1 to 5 do readln(a[i]);
- Phần khai báo của chương trình có thể như sau:
program MaxMin;
uses crt;
Var
i, n, Max, Min: integer;
A: array[1..100] of integer;
- Phần thân chương trình sẽ tương tự dưới đây:
Begin
clrscr;
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;
Max:=a[1]; Min:=a[1];
for i:=2 to n do
begin
if Max<
a
[i
]
then Max:=a
[
i];
if Min
>
a[i] then Min:=a
[i];
end;
write('So lon nhat la Max = ',Max);
write('; So nho nhat la Min = ',Min);
readln;
End.