CHƯƠNG 4:
KIỂU DỮ LIỆU CÓ CẤU TRÚC
BÀI 11: KiỂU MẢNG
GV: Huỳnh Bảo Thiên
Bài tập1: Viết chương trình pascal nhập vào nhiệt độ các
ngày trong tuần, tính nhiệt độ trung bình của tuần và tìm
số ngày có nhiệt độ cao hơn nhiệt độ trung bình
Hướng dẫn:
Nhập nhiệt độ thứ 2: 5
Nhập nhiệt độ thứ 3: 6
Nhập nhiệt độ thứ 4: 7
Nhập nhiệt độ thứ 5: 2
Nhập nhiệt độ thứ 6:
1
Nhập nhiệt độ thứ 7: 9
…………………………………………..
Xuất
Các số nguyên vừa nhập vào là: 5 6 7 2 1 9
Giá trị Trung Bình: 6.00
Nhận xét:
-Để giải bài này ta phải tìm một kiểu dữ
liệu mới nào đó mà có khả năng lưu trữ
nhiều giá trị cùng kiểu
Trong pascal có một kiểu dữ liệu như
vậy, kiểu dữ liệu mới này gọi là kiểu
mảng.
I. KIỂU MẢNG MỘT CHIỀU
1.Khái niệm
• Mảng là một tập hợp hữu hạn gồm
các phần tử có cùng kiểu dữ liệu.
• Mỗi phần tử của mảng được xác
định bằng chỉ số.
• Phần tử trong mảng được truy cập
bằng cách
Tênmảng[chỉsố];
2. Khai báo mảng.
Cách 1: Khai báo trực tiếp:
Var Tênmảng: array [gt1..gt2] of KiểuDữLiệu;
•Gt1: Chỉ số bắt đầu của mảng
•Gt2: Chỉ số kết thúc của mảng
•Kiểu Dữ Liệu: Kiểu dữ liệu của các phần tử trong
mảng
•Chỉ số của mảng thì khơng được là kiểu thực
Ví dụ:
var a :array[1..10] of integer ;
var b :array[‘a’..’m’] of real ;
Ví dụ:
Var
A : array [1..10] of integer;
B : array [‘a’..’j’] of char ;
C : array [‘a’..’z’] of integer;
D : array [ -4..5] of byte ;
Cách 2: Khai báo gián tiếp.
Type
Kiểumảng= array [gt1..gt2] of
Kiểudữliêu;
Var
Tênmảng: Kiểumảng;
Ví dụ:
Type
AI=Array[1..10] of Integer;
AC=Array[1..10] of Char;
Color=(red,blue,green,white,black);
Var
A,B,C: AI;
X,Y:AC;
MC:Array[‘a’..’z’] of Real;
MM:Array[Color] of Boolean;
Cách tốt nhất:
Tên: array [1..số phần tử] of kiểu ;
Các chú ý quan trọng.
•Mổi phần tử trong mảng có một vị trí xác định,
duy nhất.
•Cách truy xuất phần tử của mảng:Tênmảng[vị
trí].
Ví dụ: A : array [1..10] of integer;
Mảng A
10 12 15
1 18 19 20 40 15
6
Vị trí
1
4 5
10
2
3
6
7
8
9
A[2] = 12, A[5] = 18…
- Ta nên dùng vòng lặp For ..To..Do để duyệt từng phần
tử của mảng.
3. Nhập mảng:
Bước 1:
Nhập số phần tử của mảng
write(‘nhap so phan tu’);
readln(n);
Bước 2:
Nhập giá trị từng phần tử của mảng
for i:=1 to n do
begin
write(‘nhap phan tu thu ’,i,’ :’);
readln(a[i]);
end;
b. Cách nhập dữ liệu vào mảng.
Var
i, n : integer;
A: array[1..100] of integer;
Begin
write(‘Nhập vào số phần tử n : ’);
readln(n);
Nhập số phần tử
của mảng
For i:=1 To n do
begin
write(‘Nhập phần tử thứ ’,i,’ : ’);
readln(A[i]);
end;
…………..
End.
Nhập từng giá trị
vào mảng
4. Xuất mảng:
Xuất giá trị từng phần tử của mảng
for i:=1 to n do
begin
write(‘Xuat phan tu thu ’ ,i, ’ :’);
writeln(‘a[‘ ,i, ‘] =’, a[i] :8:3);
end;
Cách xuất mảng
For i:=1 To n do
Begin
Writeln(‘Phan tu thu’, i,’:’);
writeln(A[i]:5);
End;
…………
Xuất từng
giá trị của
mảng ra.
So sánh nhập và xuất dữ liệu của mảng
Program nhap_xuat_du_lieu;
Var
i, n : integer;
A:array[1..100]of integer;
Begin
write(‘Nhập n: ’);
readln(n);
For i:=1 to n do
For i:=1 to n do
begin
begin
write(‘Nhập phần tử thứ’,i,’:’);
write(‘Phần tử thứ’,i,’:’);
readln(A[i]);
writeln(A[i]);
end;
End.
end;
Đề mô cách nhập và xuất dữ liệu
với n=3.
Khai báo mảng A có 3 phần tử
Mảng A
Nhập readln(A[i]);
Nhập số thứ nhất :
Nhập số thứ hai :
Nhập số thứ ba
:
-10
15
Var
A : array[1..3] of
real;
Xuất Writeln(A[i]);
-10
15
1
2
-5
Phần tử 1 là :
Phần tử 2 là :
Phần tử 3 là :
-5
3
Câu hỏi:
- Có mấy cách khai báo mảng?
Cách 1:
Var
- Lệnh nhập
mảng
và
xuất
mảng
khác
Tên mảng : array [gt1 .. gt2 ] of Kiểu dữ liệu;
báo gián tiếp.
nhauCách
chổ2: Khai
nào?
Type
- Nhập Readln(A[i]);
Kiểumảng: array [gt1..gt2] of Kiểu dữ liêu;
Var
- Xuất Tênmảng:
Writeln(A[i]);
Kiểumảng;
- Kiểu của phần tử trong mảng và kiểu
của mảng có gì giống nhau?
-
Kiểu(dữ liệu) của phần tử trong mảng
mảng giống
củamảng
mảng. là gì?
Cơng
dụngkiểu
của
Lưu các phần tử có cùng kiểu dữ liệu
Cách nào khai báo mảng có 10 phần tử sau đây đúng:
Var
1.
A: array[1..10] of integer;
2.
A: array[1..100] of integer;
3.
A: array[‘a’..’j’] of char;
4.
A: array[-5..4] of real;
BÀI TẬP
Viết chương trình nhập vào một dãy n số ngun,
xuất dãy số ra màn hình và tính trung bình cộng của
dãy số đó.
Company Logo
Hướng dẫn
Program vidumang1;
Uses crt;
Var
A:array[1..100] of Integer;
N,I:integer;
Begin
Write(‘Nhập số phần tử cho mảng:’);
Readln(N);
Writeln(‘Nhập giá trị cho ‘,N,’ phần tử:’);
For i:=1 to N do
Begin
Write(‘Nhập phần tử thứ ‘,I,’ : ‘);
Readln(A[i]);
End;
Hướng dẫn
//Xuat mang
For i:=1 to N do
Write(‘Các giá trị của mảng vừa nhập là:’,A[i]:5);
//Tinh trung binh
Tổng:=0;
For i:=1 to N do
Tổng:=Tổng+A[i];
Writeln;
Writeln(‘Giá trị trung bình là:’,Tổng/N:10:2);
Readln;
End.