Tin học 11
Trần Văn Thịnh – CNTT - ĐHSPHN 1
Giáo án
KIỂU MẢNG
Mảng một chiều
A. Mc đích yêu cu:
Sau bài học học sinh cn nm được:
- Khái nim v Kiu mng
- Nhận biết được các thành phần trong khai báo mng 1 chiều.
- Biết cách khai báo mng đơn giản với chỉ số kiểu min con của
kiểu nguyên.
- Biết đượcc quy tắc,ch thức trong xây dựng và s dụng
mảng một chiu.
B. Phương pháp, phương tiện:
1. Pơng pháp:
Kết hợp các phương pháp như thuyết trình, vn đáp,
2. Pơng tin:
- Sách giáo khoa Tin học 11.
- Vở ghi thuyết Tin học 11.
- Một số sách nâng cao (nếu có)
C. Tiến trình lên lớp, nội dung bài ging:
I. Ổn định lớp: (1’)
Lp trưởng báo cáo sĩ số.
II. Kiểm tra bài cũ : (3’)
Giáo viên nhắc li kiến thức của chương trước.
III. Gợi động cơ: (2’)
Chúng ta đã được biết đến các kiểu dữ liu chuẩn, nhưng trên
thực tế, kiểu dữ liu chuẩn không đủ để biểu diễn dữ liu của các
bài toán thực tế.
Các ngôn nglp trình có các quy tắc, cách thức cho phép
người lập trình y dng những kiểu dữ liu phức tạp từ những
kiểu đã có. Đó được gi là kiểu dữ liu có cấu trúc.
m nay chúng ta s chuyển sang chương mới: Kiểu dữ liệu
cấu trúc.Bài hôm nay là bài: Kiu mng.
IV. Nội dung bài ging:
Tin học 11
Trần Văn Thịnh – CNTT - ĐHSPHN 2
Nội dung Hoạt động giữa thầy và trò Thời
gian
1. Định nghĩa:
- 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 tên và mỗi
phần tử của nó có một chỉ số.
- Để mô tả mng một chiều
cần xác định kiểu của các
phần tử và cách đánh số các
phần tử của nó.
- Có thể tham chiếu các phần
tử của mng bằng tên của
mảng và chỉ số tương ứng
của phần tử này.
Thuyết trình:
Định nghĩa mảng một chiều:
Mng một chiều là dãy hữu
hạn các phần tử cùng kiểu.
Mảng được đặt tên và mỗi phần
tử của nó có một chỉ số.
Để người lập trình có th
xây dng và sử dụng kiểu mng
một chiều, các ngôn ngữ lập
trình có quy tắc,ch thức cho
phép xác định:
- Tên kiểu mảng mt chiu;
- Số lượng phần tử;
- Kiều dữ liu của phần tử;
- Cách khai báo biến mảng;
- Cách tham chiếu đến phần tử.
5’
2. dụ:
Xét một dụ đơn gin như
sau:
Nhập vào nhiệt độ (trung bình
của mỗi ngày trong tun.Tính
và đưa màn hình nhiệt độ trung
bình của tuần và số lượng ngày
trong tun có nhiệt độ cao hơn
nhiệt độ trung bình của tuần
Chương trình dùng khi dùng 7
biến thực:
program Nhietdotuan;
Var t1,t2,t3,t4,t5,t6,t7,tb
:Real;
dem:integer;
Begin
Write('Nhap vaonhiet do
cua 7 ngay:');
Yêu cu học sinh:
Em có thể nhận xét gì khi s
dụng 7 biến ? Nếu cần tính toán
với N ngày t sao?
HS: Quan sát bài toán
Trlời :
Dùng các biến như trên rất dài
dòng, cùng một tháo tác thực hiện
nhiều lần cho nhiều biến. Nếu
dùng cho N ngày phi dùng N
biến sẽ rất dài.
Chúng ta có thể khắc phục điều
đó bằng cách dùng mng một
chiều
Nhắc li định nghĩa mảng một
chiều :
GV: Minh hoạ bằng TP .
10’
Tin học 11
Trần Văn Thịnh – CNTT - ĐHSPHN 3
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 d trung
binh tuan:', tb);
Writeln('so ngay nhiet
do cao hon nhiet do tb
la:',dem);
Readln
End.
d:
- Khai báo kiểu mng mt
chiều gm Max số thực
Type MyArray = Array[1..Max] of
Real;
- Khai báo biến mng nhit
độ gián tiếp qua kiểu mảng
Var Nhietdo : Nhietdo1;
- Khai báo biến mng nhit
độ trực tiếp
Var Nhietdo : Array[1..Max] of
Real;
GV:
Trong ví dụ SGK, nếu mở
rộng bài toán n N ngày, ta
thể khai báo theo kiu mng
như thế nào? Đâu là biến ?
Chúng cùng kiểu gì ?
2.Ví dmở rộng:
Mở rộng bài toán lên N ngày.
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);
Giáo viên:
Dẫn dắt học sinh qua 2
chương trình để thấy được: tương
ứng vi mỗi giá trị của i, một phần
tử của mng được xác định bởi
Nhiêtdo[i] ; có th thực hiện thao
tác nhp, xuất hay xử lý trên phn
tnày.
15’
Tin học 11
Trần Văn Thịnh – CNTT - ĐHSPHN 4
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.
Khai báo:
Có 2 cách để khai báo(định
nghĩa) kiểu dữ liu mảng 1
chiều:
GV:
Ví d khác
Program TimMax;
Uses crt;
const
nmax = 250;
type
Arrint = array[1..max] of
integer;
var
N, i, max, csmax: integer;
a:arrint;
begin
GV: Trong đoạn chương trình
trên:
- Cho biết tên kiu dữ liu?
- Kiu mảng đó có bao nhiêu
phần tử?
- Mỗi phần tử của mảng
thuộc kiểu gì?
- Qua phn khai báo biến cho
biết tên của các mng sẽ
dùng trong chương trình?
GV: Những kiu dữ liệu nào có
thể là kiểu thành phần của mng?
GV: Những kiu dữ liệu nào có
thể là kiểu chỉ số?
GV: Kích thước cho phép của
mảng?
5’
Tin học 11
Trần Văn Thịnh – CNTT - ĐHSPHN 5
V. Củng c bài: (2’)
- Trực tiếp trong phn khai
báo biến (với từ khoá var)
Var tên
<biến mng> :array
[kiểu chỉ số] of<kiểu phần tử>
- Đặt tên và định nghĩa cho
kiểu dữ liệu mới này (vi từ
khoá type), ri sau đó khai
báo các biến thuộc kiu mi
ã có tên)
Type <tên biến 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>;
Để khai báo kiu dữ liệu mảng
1 chiu, người lập trình cn
xác định các yếu tố sau:
- Kiu phần tử: Kiểu của các
phần tử tạo nên mảng
- Kiu chỉ số: Thường dùng
một đoạn số nguyên liên tục
làm chỉ số ca mảng, s
nguyên đầu tiên là phn tử
thnht của mảng, số
nguyên cuối cùng tương ứng
là phần tử cuối cùng của
mảng
Xác định cả kích thước ca
mảng.
Giáo viên hướng dẫn ví dụ trong
sách giáo khoa và chỉ cho học
sinh thy các kiểu khai báo không
hợp lệ và hợp lệ
GV: Cho ví dụ:
Var B: array [1..100] of real;
Hãy chuyển sang khai báo kiểu
Type