HS2: viết chương trình tính số lượng ngày trong tuần có nhiệt độ cao hơn nhiệt độ trung bình tính được.. II.[r]
(1)Ngày soạn 15/01/2009 §11 KIỂU MẢNG
(TIẾT 1)
A MỤC TIÊU: 1 Kiến thức:
- Kiểu mảng kiểu liệu có cấu trúc, cần thiết hữu ích nhiều chương trình
- Mảng chiều dãy hữu hạn phần tử kiểu
- Có thể truy xuất (hay thao tác) phần tử mảng, việc làm phần tử mảng xác định tên mảng số tương ứng phần tử
- Các ngơn ngữ lập trình thơng dụng cho phép người lập trình xây dựng kiểu liệu mảng chiều
- Có hai cách khai báo: trực tiếp gián tiếp
2 Kỹ năng:
- Nhận biết thành phần khai báo kiểu mảng chiều - Nhận biết định danh phần tử xuất chương trình
- Biết cách viết khai báo mảng đơn giản với số kiểu miền kiểu nguyên - Cài đặt thuật toán số toán đơn giản với kiểu liệu chiều - Thực khai báo mảng, truy cập, tính tốn phần tử mảng
3 Thái độ:
- Tiếp tục xây dựng lịng ham thích lập trình, nhằm giải toán MTĐT - Tiếp tục rèn luyện phẩm chất cần thiết người lập trình
B PHƯƠNG PHÁP: Nêu tình có vấn đề, câu hỏi gợi mở.
C CHUẨN BỊ CỦA GIÁO VIÊN, HỌC SINH:
1 Chuẩn bị giáo viên: giáo án, phấn, bút, sổ điểm, SGK, dụng cụ trực quan, chương trình minh họa
2 Chuẩn bị học sinh: SGK, vở, bút
D TIẾN TRÌNH LÊN LỚP: I Ổn định:
II Kiểm tra cũ: Nhập vào nhiệt độ trung bình ngày tuần Tính in hình nhiệt độ trung bình tuần số lượng ngày tuần có nhiệt độ cao nhiệt độ trung bình tính
GV: gọi hs lên bảng
HS1: viết chương trình nhập vào nhiệt độ trung bình ngày tuần Tính in hình nhiệt độ trung bình tuần
HS2: viết chương trình tính số lượng ngày tuần có nhiệt độ cao nhiệt độ trung bình tính
II Bài mới:
1 Đặt vấn đề: kiểu nguyên, thực, kí tự gọi chung kiểu vơ hướng chuẩn kiểu liệu đơn giản Như ta biết, TP từ câu lệnh đó, ta xây dựng
(2)những câu lệnh có cấu trúc phức tạp Sau mặt liệu ta tính cấu trúc tương tự, kiểu liệu phức tạp xây dựng từ liệu đơn giản
2 Triển khai bài:
Hoạt động 1: Tìm hiểu Ví dụ
Hoạt động thầy trò Nội dung học GV: Dựa vào kiến thức
học giải toán Hỏi:
- Input: - Output: - Giải thuật:
Nếu có nhiều tháng, năm sao???
Chúng ta khai báo 365 biến???
GV: Nhập vào dãy n số nguyên Tính tổng số vừa nhập
- Bài toán giải quyết, nhiên giá trị nhập vào không lưu giữ được, dựa vào lần nhập cộng dồn vào tổng, sau lần nhập giá trị biến thay đổi
- Nếu thêm điều kiện cho toán: in giá trị dương không thực
- Với kiểu liệu học làm để:
Lưu trữ xử lý dãy số? Lưu trữ xử lý họ tên người?
Lưu trữ xử lý bảng kết thi tốt nghiệp?
- Nếu làm cho chương trình phức tạp với nhiều biến chương trình tính dài Để khắc phục khó khăn đó, TP sử dụng mảng chiều
I Mảng chiều: * Ví dụ:
Nhập vào nhiệt độ trung bình ngày tuần Tính in hình nhiệt độ trung bình tuần số lượng ngày tuần có nhiệt độ cao nhiệt độ trung bình tính
- Chương trình:
Var t1,t2,t3,t4,t5,t6,t7,tb:real; dem:integer;
Begin
Write('Nhap nhiet 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 tbinh: ',tb); Writeln('So :',dem); readln;
End
Hoạt động 2: Tìm hiểu khái niệm mảng chiều
Hoạt động thầy trò Nội dung học T
25 20.5 22 30.5 31 21 26.5
a Khái niệm:
(3)1 2 3 4 5 6 7
- Tên dãy gì? - Dãy T gồm số?
- Các số có kiểu liệu kiểu gì?
- Để lấy giá trị dãy ta làm nào?
GV: Dựa vào ví dụ khái niệm mảng chiều?
HS trả lời
GV: Dựa vào khái niệm kiểu mảng chiều em cho biết khai báo kiểu mảng xác định gì?
HS: dựa vào khái niệm để trả lời
mỗi phần tử có số
* Với mảng chiều xác định:
- Tên mảng chiều; - Số lượng phần tử;
- Kiểu liệu phần tử; - Các khai báo biến mảng; - Cách tham chiếu đến phần tử
Hoạt động 3: Tìm hiểu cách khai báo mảng chiều
Hoạt động thầy trò Nội dung học GV: Hãy nêu cú pháp khai báo biến?
Hs: Trả lời
GV: khai báo Pascal sau:
Var a:array[1 10] of integer; Begin
End.
Dịch chương trình
HS: chú ý quan sát
GV: Gọi HS nhận xét khai báo - Dịch có báo lỗi khơng?
- Biến a khai báo có giống biến khác bình thương khai báo khơng?
HS: chú ý trả lời câu hỏi
GV: cung cấp cú pháp khai báo trực tiếp giải thích
HS: chú ý nghe giảng ghi
GV: Để lập trình giải tốn ta khai báo sau:
Var T: Array[1 7] of Real;
Hoặc: Type nhietdo = Array[1 7] of Real;
Var T:nhietdo;
GV: Nêu cách khai báo giải thích
HS: ý để vận dụng khai báo cho toán
GV: Hãy ghi số khai báo mảng chiều
b Khai báo:
- Trực tiếp:
Var <tên biến mảng>: Array[kiểu số] of <Kiểu phần tử>;
- Gián tiếp:
Type <tên kiểu mảng> = Array[kiểu số] of <Kiểu phần tử>;
Var <tên biến mảng>:<tên kiểu mảng>;
Trong đó:
- Kiểu số:là kiểu miền con, đoạn số nguyên liên tục
- Kiểu phần tử kiểu phần tử mảng, kiểu liệu đơn giản
Ví dụ
(4)hợp lệ Kiểm tra số học sinh
HS: ghi số khai báo vào giấy nháp
GV: thực khai báo máy để thực cho học sinh thấy khai báo có hợp lệ hay khơng?
GV: đưa khai báo, gọi học sinh nhận xét khai báo:
Var nguyen:array[1 n] of byte;
HS: số phần tử mảng chưa xác định
GV: Vậy làm để xác định số phần tử mảng dùng khai báo
HS: n có giá trị, khai báo cho biến n
Const n=100;
Var nguyen:array[1 n] of byte;
GV:
- Cho biết tên kiểu liệu mới? - Kiểu mảng có phần tử? - Mỗi phần tử mảng thuộc kiểu gì? - Cho biết tên mảng dùng chương trình?
HS: trả lời câu hỏi
Hoạt động 4: Tìm hiểu cách tham chiếu đến phần tử mảng chiều Hoạt động thầy trò Nội dung học GV: Để tham chiếu đến phần tử
mảng ta dùng cú pháp sau:
<tên biến mảng>[chỉ số] HS: Chú ý lắng nghe ghi
GV: Cho ví dụ sau:
T
25 20.5 22 30.5 31 21 26.5 1 2 3 4 5 6 7
T[3]: có nghĩa gì? T[3]=?
T[6]=?
HS: dựa cú pháp dựa vào dãy số để trả lời
c Tham chiếu đến phần tử mảng: <tên biến mảng>[chỉ số]
Hoạt động 5: Tìm hiểu cách nhập xuất liệu mảng chiều
(5)các giá trị cho mảng in mảng
VD:
+ Nhập phần tử thứ mảng: Read(T[1]);
Nhiều phần tử?
Readln(T[2],T[5],T[7]); + Mảng T, nhập vào phần tử
For i:=1 To Do Begin
Write(‘Nhap nhiet thu ’,i,’:’); Readln(A[i]);
End;
HS: đưa cách nhập giá trị cho trường hợp tổng quát (n phần tử)
- Trường hợp giá trị mảng có điều kiện cần phải thực ntn? (VD phần tử mảng phải số dương)
For i:=1 To 10 Do Repeat
Write(‘A[’,i,’]=’);Readln(A[i]); Until A[i] >0;
- Trường hợp khống chế số lượng phần tử mảng? Sử dụng Repeat
GV: Để in hình phần tử mảng T ghi nào?
Write(T[1];)
VD:
For i:=1 To Do Write(T[i]:3);
- trường hợp in có rõ phần tử thứ mảng:
For i:=1 To 10 Do
Write(‘A[‘,i,’]=’,A[i]:3);
- Nhập:
Read /Readln/(<tên biến mảng> [chỉ số ]);
Đoạn chương trình nhập mảng 1 chiều gồm n phần tử:
Write('nhap so phan tu cua mang: '); Readln(n);
For i:=1 to n Begin
Write('Nhap phan tu thu ',i,': ');
Readln(<tên biến mảng>a[i]); End;
- Xuất:
Write/Writeln(<tên biến mảng>[chỉ số]);
Đoạn chương trình in mảng chiều gồm n phần tử:
For i:=1 to n
Write(<tên biến mảng>[i],’ ‘);
Hoạt động 6: Viết chương trình ví dụ
Hoạt động thầy trị Nội dung học GV: Kết hợp phần khai báo,
nhập mảng thực để nói cách viết chương trình
(6)HS: ý nghe giảng
GV: Để biết số ngày có nhiết độ lớn nhiệt độ trung bình ta làm nào?
HS: liên hệ kiến thức học trả lời câu hỏi:
For i:= to n
If T[i]>tb then dem:=dem+1;
GV: thực chương trình Pascal để học sinh quan sát kết
HS: ý máy chiếu
độ trung bình tính được Chương trình:
Var T : Array[1 366] of Real; Tong, tb:Real; i,n,dem:byte; Begin
Write(‘Nhap so ngay: ’); Readln(n); Tong:=0;
For i:= to n Begin
Write(‘Nhap nhiet ’, i,’: ’); Readln(T[i]);
Tong:=Tong+T[i]; End;
Tb:=tong/n; dem:=0; For i:= to n
If T[i]>tb then dem:=dem+1; Writeln('Nhiet tbinh: ',tb); Writeln('So :',dem); readln;
End
IV Củng cố:
- Khái niệm kiểu mảng? - Khai báo?
- Tham chiếu đến phần tử mảng chiều?
V Dặn dò, hướng dẫn học sinh học tập nhà
- Làm tập nhà
Viết chương trình cho máy làm việc sau:
a Nhận vào mảng A [1 n] (n > 9), phần tử số thực lớn -2 nhỏ b Tính trung bình cộng phần tử dương mảng
c So sánh số phần tử dương với số phần tử âm mảng
d Tìm phần tử nhỏ lớn mảng Chỉ vị trí giá trị chúng e Tính a[1] + a[2]2 + a[3]3 + + a[n]n
- Học kỹ để chọn cấu trúc viết chương trình
Duyệt Tổ trưởng CM/ Hiệu trưởng :
(7)