BÀI 12: KIỂU MẢNG MẢNG MỘT CHIỀU SINH VIÊN : TRẦN THỊ THƠM KHOA CNTT- ĐHSP HÀ NỘI... Cho biết số lượng phần tử của mỗi dãy?... KHÁI NIỆM Khái niệm: các phần tử cùng kiểu... KHÁI NIỆM Đ
Trang 1BÀI 12: KIỂU MẢNG
MẢNG MỘT CHIỀU
SINH VIÊN : TRẦN THỊ THƠM KHOA CNTT- ĐHSP HÀ NỘI
Trang 2ĐẶT VẤ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 có nhiệt độ TB cao hơn nhiệt trung bình trong tuần?
• Dữ liệu nhập vào (INPUT):
• t1, t2, t3, t4, t5, t6, t7
* Dữ cần tính và in ra (OUTPUT): tb, dem
Hãy xác định Input, Output và đưa ra ý tưởng giải bài toán
trên ?
Trang 3ĐẶT VẤN ĐỀ
Trang 4ĐẶT VẤN ĐỀ
Trang 5ĐẶT VẤN ĐỀ
Quan sát chương trình, hãy cho biết nếu muốn tính nhiệt
độ trung bình của N ngày trong năm (VD:
N=365) thì sẽ gặp khó
khăn gì ?
Khai báo quá lớn (t1,t2,t3, ,t365) và chương trình quá dài (với 365 lệnh
IF) !!!!!
Giải pháp: tìm ra kiểu
dữ liệu mới cho phép lưu
trữ một dãy số thực, số
nguyên và dễ truy xuất
Trang 6KHÁI NIỆM
1 Khái niệm:
Ví dụ 1: Cho dãy số sau:
Dãy A: -1,-3,-6, 5, 4, 9, 8, 4
Dãy B: 0.3, 8.5, 9.3, -6.2, -4.1
Quan sát và nhận xét:
a Mỗi phần tử trong dãy A và dãy B thuộc
kiểu nào?
b Cho biết số lượng phần tử của mỗi dãy?
Trang 7KHÁI NIỆM
Khái niệm:
các phần tử cùng kiểu.
nó có một chỉ số
Ví dụ:
Nhietdo 30.5 35 32 37 36.5 33 34
Trang 8KHÁI NIỆM
Để mô tả mảng một chiều cần xác định các yếu
tố sau:
Tên kiểu mảng một chiều:
Số lượng phần tử:
Kiểu dữ liệu của phần tử:
Cách khai báo biến mảng;
Cách tham chiếu (truy xuất) đến các phần tử
nhietdo 7
real
Trang 9KHAI BÁO
2 Khai báo mảng một chiều trong PASCAL
Cách 1: Khai báo gián tiếp
TYPE <tên kiểu mảng> = array[< kiểu chỉ số>] of
<kiểuphầntử>;
Var <tên biến mảng> : <tên kiểu mảng>;
Ví dụ: TYPE STT = array[1 365] of integer;
Var A: STT;
Ví dụ: TYPE nhietdo = array[1 365] of integer;
Trang 10KHAI BÁO
* Cách 2: Khai báo trực tiếp
Var <tên biến mảng> : array[< kiểu chỉ số >] of < kiểu phần tử>;
Var A,B : array[1 100] of real;
Ví dụ: Var nhietdo : array[1 365] of integer;
Trang 11KHAI BÁO
Hai cách khai báo sau có tương đương hay
không?
Var A: nhietdo;
Trang 12 Cách tham chiếu tới một phần tử
Kiểu dữ liệu của các phần tử: Kiểu nguyên
Khai báo: var A: array[1 100] of integer;
khi than chiều đến phần tử thứ i ta viết A[i]
Số phần tử của mảng: 7
Tên biến mảng : A
Trong đó :
17 20 18 25 19 12 19
A
Ví dụ: Cho dãy gồm 7 số nguyên như sau:
Trang 13CỦNG CỐ
Trò chơi
KHAI BÁO
CÁCH THAM CHIẾU
KHÁI NIỆM
Trang 14CỦNG CỐ
Chỉ ra cách khai báo đúng trong những khai báo dưới đây
A Var A : array [1 100] of integer
B TYPE A1= array [-100 100] of real;
var A1 : A1;
D Var K : array [-100 0] of real;
C TYPE Bool = array [-n+1 n+1] of boolean;
var A : Bool;
START 123456
10
Trang 15CỦNG CỐ
Điền từ vào chỗ trống:
Mảng một chiều là dãy Các phần tử
Mảng được đặt tên và mỗi phần tử của nó có
A Vô hạn / cùng kiểu/ chỉ số
B Hữu hạn / khác kiểu / chỉ số
C Vô hạn / khác kiểu / chỉ số
D Hữu hạn / cùng kiểu / chỉ số
START 123456789
10
Trang 16CỦNG CỐ
Chọn cách viết đúng khi tham chiếu tới phần từ
trong mảng
START 123456
10
A A[i]
Trang 17CỦNG CỐ
Mảng một chiều là một dãy hữu
hạn các phần tử cùng kiểu
Khai báo: tên mảng, kiểu chỉ số,
kiểu phần tử
Tham chiếu phần tử mảng:
Tên biến mảng[chỉ số phần tử]
15 20 19 25 18 12 16
Var A :ARRAY[ 1 100 ] OF
A[5] = 18
Trang 18BÀI TẬP VỀ NHÀ
5 Bài tập về nhà
Bài 1: cài đặt bài toán tính nhiệt độ bằng cách
sử dụng mảng
Đọc trước ví dụ về tìm giá trị lớn nhất và tìm kiếm nhị phân