Ngày soạn: 04/10/2009
Ngày giảng:06/10/2009
Tiết theo PPCT: 19
Chương IV - KIỂU DỮ LIỆU CÓ CẤU TRÚC
§11. Kiểu Mảng
I - Mục tiêu bài học
1. Kiến thức
- Biết được một số kiểu dữ liệu mới là kiểu mảng một chiều, biết được loại biến có chỉ
số.
- Biết cấu trúc tạo kiểu mảng một chiều, và cách khai báo biến kiểu mảng một chiều.
2. Kỹ năng
- Tạo được kiểu mảng một chiều và sử dụng biến mảng một chiều trong ngôn ngữ lập
trình Pascal để giải quyết một số bài toán cụ thể.
II – Phương pháp, phương tiện dậy học
- Phương pháp: Thuyết trình, vấn đáp, hội thoại…
- Phương tiện: sgk, giáo án…
III- Tiến trình bài giảng
1. Ổn định tổ chức lớp:
- Lớp:
- Sĩ số:
- Lí do vắng:
2. Kiểm tra bài cũ
3. Nội dung bài mới
Hoạt động của giáo viên và học sinh Nội dung
Với những kiểu dữ liệu như đã biết thì làm
thế nào để:
- Lưu trữ và xử lí một dãy số…
- Lưu trữ và xử lí họ tên 1 người…
- Lưu trữ và xử lí bảng kết quả thi…
Các ngôn ngữ lập trình thường cung cấp
một số kiểu dữ liệu xây dựng từ những kiểu
dữ liệu chuẩn gọi là kiểu dữ liệu có cấu trúc.
Chương này chúng ta sẽ tìm hiểu thêm một
số kiểu dữ liệu trong Pascal: kiểu mảng, kiểu
sâu, kiểu bản ghi…
Làm thế nào để lưu trữ và xử lí một dãy số
nguyên trong khi lập trình? Xét ví dụ
1. Kiểu mảng một chiều
VD: Nhập vào nhiệt độ (trung bình) 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
Phân tích bài toán:
? Bài toán cho biết gì, và yêu cầu thực hiện
công việc gì?
- Nhiệt độ các ngày trong tuần
- Tính nhiệt độ trung bình của tuần và số
ngày có nhiệt độ cao hơn nhiệt độ trung bình.
? Làm thế nào để tính được nhiệt độ trung
bình của tuần?
- Cộng nhiệt độ các ngày trong tuần chia
cho 7
? Làm thế nào để biết được trong tuần có bao
nhiêu ngày có nhiệt độ cao hơn nhiệt độ
trung bình của tuần?
- So sánh nhiệt độ từng ngày với nhiệt độ
trung bình của tuần.
? Bài toán này sử dụng những biến nào?
- Biến nhiệt độ các ngày trong tuần, nhiệt
độ trung bình tuần, đếm số lượng ngày có
nhiệt độ cao hơn nhiệt độ trung bình.
? Với những kiểu dữ liệu đã học ta giải bài
toán này thế nào?
- Đưa ra chương trình trong Pascal.
ngày có nhiệt độ cao hơn nhiệt độ trung
bình của tuần.
Program nhietdo_tuan;
Uses crt;
Var t1,t2,t3,t4,t5,t6,t7,tb:real;
dem :integer;
Begin clrscr;
Writeln(‘nhap vao nhiet do 7 ngay:’);
Readln(n);
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 la:’,tb);
writeln(‘so ngay co nhiet do cao hon
trung binh la:’,dem);
Readln
End.
? Khi giải bài toán trên với n ngày thì n lớn
chương trình sẽ có những hạn chế gì?
- Phải khai báo nhiều biến, chương trình
phải viết rất dài.
Để khắc phục những hạn chế trên người ta
thường ghép chung các biến đó lại và đặt cho
chúng 1 cái tên, đánh cho mỗi tên 1 chỉ số và
dãy có các biến đó được gọi là mảng một
chiều.
? Vậy mảng một chiều là gì?
? Để mô tả mảng 1 chiều cần xác định những
yếu tố nào?
? Cách khai báo mảng 1 chiều?
Khái niệm:
Mảng một chiều là một dãy hữu hạn các
phẩn tử có cùng kiểu dữ liệu. Các phần tử
trong mảng có cùng chung 1 tên và phân
biệt với nhau bởi chỉ số.
Để mô tả mảng 1 chiều cần xác định
những yếu tố nào?
- Kiểu của các phần tử
- Cách đánh số các phần tử
Các ngôn ngữ lập trình có quy tắc, cách
th ức cho phép xác định
- Tên kiểu mảng 1 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 đến phần tử
a, Khai báo
* 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ử>;
* Khai b áo gi án ti ếp
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 đó:
- Kiểu chỉ số: thường là 1 đoạn số
nguyên liên tục có dạng n1 n2, với n1 là
chỉ số đầu, n2 là chỉ số cuối.
- Kiểu phần tử: là kiểu của các phần tử
mảng.
- Type: là từ khoá dùng để khai báo biến
? Ý nghĩa của câu lệnh là gì?
- Tạo 1 kiểu dữ liệu mới có tên là mmc,
gồm 100 phần tử, có kiểu số nguyên.
- Array: là từ khoá dùng để khai báo
mảng
*Tham chiếu đến các phần tử của mảng
<tên biến mảng>[chỉ số]
VD1:Type mmc=array[1 100] of integer;
VD2: Cho 1 số khai báo sau, khai báo nào
đúng?
1, Type Arrayr = array[1 100] of integer;
Var A: Arrayr;
2, Var Arrayr : array[real] of integer;
3, Type Arrayr = array[-100 0] of integer;
Var A: Arrayr;
Khai báo 1, 3 đúng
IV - C ủng c ố
- Cách khai báo mảng 1 chiều
- Cách tham chiếu đến phần tử mảng