II – CHUẨN BỊ CỦA GIÁO VIÊN VÀ HỌC SINH:
1. Kiểu mảng một chiều
- 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ả mảng 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 mảng
- Để có thể lập trình và sử dụng kiểu mảng một chiều các ngôn ngữ lập trình có quy tắc và cách thức cho phép xác định.
+ Tên mảng một chiều + Số lượng các phần tử
+ Kiểu dữ liệu của phần tử + Cách khai báo mảng + Cách tham chiếu đến phần tử *) Ta xét ví dụ sau: *) Chương trình Program Nhietdotuan; Var t1, t2, t3, t4, t5, t6, t7, tb:Real; dem:Integer; Begin
Write(‘Nhap nhiet do cua 7 ngay: ‘); 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 do trung binh tuan: ’,tb:8:3); Writeln(‘ So ngay co nhiet do lon hon nhiet do tb:’dem);
Readln;
End.
*) Với bài toán trên với N khá lớn ta sử dụng kiểu mảng một chiều để mô tả như sau:
Progarm Nhietdongay; Const Max=360;
Type Kmang1=array[1..Max] of Real;
GV:Cách nhập dữ liệu trong Pascal?
HS: Làm theo hướng dẫn của GV
Giáo viên: Viết chương trình nhập nhiệt độ các ngày trong năm và tính nhiệt độ trung bình.
GV:Để khai báo trực tiếp ta thực hiện như thế nào?
HS: Ta có 2 cách khai báo mảng một chiều như sau:
GV:Kiểu chỉ số thường là kiểu dữ liệu nào?
HS: Kiểu chỉ số thường là một đoạn số nguyên liên tục có dạng n1..n2 là các hằng biểu thức nguyên xác định chỉ số đầu và chỉ số cuối (n1<=n2)
GV:Cách tham chiếu tới các phần tử của mảng như thế nào?
HS: Tham chiếu tới phần tử của mảng một chiều được xác định bởi tên mảng cùng với chỉ số, được viết trong cặp ngoặc [và].
dem, i, n:Byte;
tong, trungbinh:Real;
Begin
Write(‘Nhap so ngay: ’); Readln(n); tong:=0;
For i:=1 to n do Begin
Writeln(‘ Nhap vao nhiet do ngay ’,i,’:’);
Readln(nhietdo[i]); Tong:=tong+nhietdo[i]; End; dem:=0; trungbinh:=tong/n; For i:=1 to n do
If nhietdo[i]>trungbinh then dem:=dem+1; Wrteln(‘Nhiet do trung binh ’,n,’ ngay:
‘,trungbinh:8:3);
Writeln(‘So ngay co nhiet do lon hon nhiet do trung binh la: ’ ,dem);
Readln;
End.
a) Khai báo
Cách khai báo mảng một chiều có dạng:
- Cách 1: Khai báo trực tiệp biến mảng một
chiều
Var <tên biến mảng>:array[kiểu chỉ số] of
<kiểu phần tử>;
- Cách 2: Khai báo gián tiếp biến mảng qua
mảng một chiều;
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>;
Trong đó:
- Kiểu chỉ số thường là một đoạn số nguyên liên tục có dạng n1..n2 là các hằng biểu thức nguyên xác định chỉ số đầu và chỉ số cuối (n1<=n2) - Kiểu phần tử là kiểu phần tử của mảng
*) Tham chiếu tới phần tử của mảng một chiều được xác định bởi tên mảng cùng với chỉ số, được viết trong cặp ngoặc [và].
VD: Tham chiếu tới phần tử thứ 3 của mảng A ta viết A[3]
3. Củng cố, luyện tập
- Nhắc nhở lại kiến thức cơ bản của bài học về khai báo mảng một chiều 4. Hướng dẫn hs tự học ở nhà - Về nhà học bài và làm bài tập ở nhà. - Xem tiếp các một số ví dụ. --- Ngày giảng: Tiết theo PPCT :21 BÀI 11: KIỂU MẢNG <Tiếp> I. MỤC TIÊU 1. Kiến thức:
- Củng cố làm cho học sinh hiểu sâu hơn thuật toán tìm kiếm, sắp xếp cơ bản 2. Kỹ năng
- Hình thành kỹ năng cơ bản về sử dụng kiểu mảng trong cài đặt chương trình.
II. CHUẨN BỊ CỦA GV VÀ HS.
1. Chuẩn bị của GV: Giáo án, phấn, bảng 2. Chuẩn bị của HS: Sách giáo khoa, vở ghi,…
III.TIẾN TRÌNH DẠY HỌC
1. Kiểm tra bài cũ:
Câu hỏi: Trình bày cách khai báo mảng một chiều? 2. Bài mới:
Hoạt động của GV và HS Nội dung chính
HĐ2: áp dụng khai báo mảng một chiều
thực hiện viết chương trình các bài toán
Ví dụ 1: Tìm phần tử lớn nhất của dãy số
nguyên
Ta có thuật toán tim giá trị lớn nhất của dãy số nguyên như sau:
Bước 1: Nhập giá trị N và dãy A1, A2,…, AN
Bước 2: Max←A1; i←2;
Bước 3: Nếu i > N thì đưa ra giá trị Max rồi kết thúc
Bước 4:
Bước 4.1: Nếu Ai > Max thì Max←Ai; Bước 4.2: i←i+1 rồi quay lại bước 3;
GV:Cách duyệt các phần tử trong mảng