I. MỤC TIÊU 1. Kiến thức. Hiểu được cách khai báo và truy cập cập đến phần tử của mảng một chiều. Hiểu được thủ tục nhập xuất mảng và sắp xếp phần tử trong mảng 2. Kỹ năng Thực hiện được khai báo mảng. Viết được chương trình sử dụng mảng 1 chiều đơn giản. 3. Thái độ Tiếp tục thể hiện lòng yêu thích bộ môn tin học. II. CHUẨN BỊ 1. Giáo viên: Sách giáo khoa Tin học 11, sách giáo viên Tin học 11, bảng phụ. 2. Học sinh: Sách giáo khoa Tin học 11, vở ghi, bút… III. PHƯƠNG PHÁP Phương pháp: Sử dụng các phương pháp, dạy học cơ bản sau một cách linh họat nhằm giúp học sinh tìm tòi, phát hiện, chiếm lĩnh tri thức.
Trang 1TRƯỜNG THPT THÁI PHIÊN
GVHD : TRẦN THỊ PHƯỢNG
GSTT : CHU THÀNH NHÂN
NGÀY SOẠN : 26/2/2017 NGÀY DẠY : 2/3/2017 TIẾT : 3
LỚP : 11/9
GIÁO ÁN GIẢNG DẠY
BÀI TẬP KIỂU MẢNG
I MỤC TIÊU
1 Kiến thức.
- Hiểu được cách khai báo và truy cập cập đến phần tử của mảng một chiều
- Hiểu được thủ tục nhập xuất mảng và sắp xếp phần tử trong mảng
2 Kỹ năng
- Thực hiện được khai báo mảng
- Viết được chương trình sử dụng mảng 1 chiều đơn giản
3 Thái độ
- Tiếp tục thể hiện lòng yêu thích bộ môn tin học
II CHUẨN BỊ
1 Giáo viên: Sách giáo khoa Tin học 11, sách giáo viên Tin học 11, bảng phụ.
2 Học sinh: Sách giáo khoa Tin học 11, vở ghi, bút…
III PHƯƠNG PHÁP
- Phương pháp: Sử dụng các phương pháp, dạy học cơ bản sau một cách linh họat nhằm giúp học sinh tìm tòi, phát hiện, chiếm lĩnh tri thức
IV.HOẠT ĐỘNG DẠY – HỌC
1 Ổn định lớp
2 Tiến trình lên lớp
T
G
Hoạt động của GV Hoạt động của HS Nội dung
Trang 2Hoạt động 1: Ôn tập lý thuyết
4’ GV đưa ra 5 câu hỏi trắc
nghiệm để củng cố kiến thức
về 1 mảng 1 chiều Yêu cầu
học sinh trả lời và nhận xét
HS trả lời câu hỏi BÀI TẬP KIỂU MẢNG
Hoạt động 2: Bài tập 1
20’
Hỏi học sinh : Input và output
của bài toán là gì ?
GV dẫn dắt ý tưởng của bài
toán tương tự với bài toán tìm
số lớn nhất trong dãy các em
đã học ở tiết trước
Yêu cầu học sinh nhắc lại ý
tưởng của bài toán tìm số lớn
nhất
GV dẫn dắt: Bài toán này
cũng tương tự bài toán tìm
max, chỉ khác là không phải
tìm 1 số mà tìm 3 số liên tiếp
có tổng lớn nhất
VD: Cho mảng A gồm 6 phần
tử
1 2 3 4 5 6
Ta cần phải tìm 3 số liên tiếp
có tổng lớn nhất trong mảng
A, có thể là 5, 6 ,1 hoặc có thể
là 6, 1, 2 hoặc 1, 2 ,7 …
Input: Mảng A gồm
n phần tử (n nhập từ
bàn phím) Mỗi phần tử có kiểu số nguyên Output : 3 số liên tiếp có tổng lớn nhất
Gán max := A[1] sau đó sử dụng câu lệnh lặp for do để duyệt mảng, nếu A[i] >
max thì gán max :=
A[i];
Bài tập 1 : Cho mảng A gồm n phần tử (n nhập từ bàn phím) Mỗi phần tử có kiểu số nguyên và
in ra màn hình 3 số liên tiếp có tổng lớn nhất trong mảng
program tim3solonnhat; var A: array [1 100] of integer;
i, n, cs , max , tong : integer;
begin Writeln('Nhap vao so phan tu cua mang'); Readln(n);
For i:= 1 to n do Begin
Writeln('A[',i,']=')
; Readln(A[i]); End;
max:=A[1]+A[2]+A[ 3];
cs:=2;
for i:=3 to n-1 do begin
tong:=A[i-1]+A[i] + A[i+1];
if tong>max then begin
max:=tong;
Trang 3Hỏi học sinh output của mảng
A này là gì ?
GV giảng giải:
Do bài toán tính tổng 3 phần
tử liên tiếp nên ta xét 3 phần
tử A[i] , A[i-1] , A[i+1] trong
đó A[i-1] là số liền trước và
A[i+1] là số liền sau của phần
tử A[i]
Đầu tiên ta gán
max:=A[1]+A[2]+A[3];
Hỏi học sinh chỉ số phần tử
A[i] bằng bao nhiêu ?
Để lưu lại chỉ số i của A[i] thì
ta cần dùng 1 biến cs
Hỏi học sinh biến cs gán giá
trị bằng bao nhiêu ?
GV dẫn dắt ban đầu đã tính
tổng của A[1]+A[2]+A[3] ,
cần tính tổng của A[2]+A[3]
+A[4] thì cần bắt đầu từ i
bằng bao nhiêu ?
Gán
tong:=A[i-1]+A[i] + A[i+1];
Hỏi học sinh so sánh nếu
tong>max thì sẽ như thế nào
VD:
1 2 3 4 5 6
CS=2
1 Gán A[1] + A[2] + A[3] =
Max
2 i = 3 So sánh Max với A[2]
+ A[3] + [A4]
Chỉ số của phần tử
A[i] bằng 2
2
i = 3
Gán max:=tong;
cs:=i;
end;
end;
writeln('3 so ',A[cs-1],' ',A[cs],' ',A[cs+',A[cs-1],'
co tong lon nhat trong mang’);
readln;
end
Trang 46 1 2
3 Cho đến khi tong>max
i = 5
4 5 6
- Với cs = i Khi đó ta in ra
các phần tử
A[cs-1]+A[cs]+A[cs+1];
Giáo viên mời 2 em học sinh
lên viết chương trình, 1 em
viết phần khai báo và nhập
mảng,1 em viết phần tìm 3số
liên tiếp có tổng lớn nhất
Mời 1 em học sinh chạy lại
chương trình bạn đã viết trên
bảng
Hoạt động 2: Bài tập 2
10’
Hỏi học sinh : Input và output
của bài toán là gì?
Yêu cầu học sinh trình bày ý
tưởng để đếm số lần phần tử
X xuất hiện trong dãy
- Input : dãy n số
nguyên (n nhập từ
bàn phím)
- Output: in ra số lần phần tử X xuất hiện trong dãy
Khởi tạo biến đếm ban đầu là dem := 0
Sử dụng vòng lặp i, lặp từ 1 đến N
Đối với mỗi phần tử A[i], nếu A[i] = X thì tăng biến đếm lên 1
Neu dem:= 0 thì in không có giá trị X trong mảng
Kết thúc, giá trị biến đếm là số lần xuất
Bài tập 2 : Nhập vào một dãy gồm n số
nguyên sau đó đếm số lần xuất hiện phần tử có giá trị bằng X trong dãy (n, X nhập từ bàn
phím)
Program DemPtuX; var A: Array[1 100] of Integer;
i, n, dem, X: integer; Begin
Write('Nhap so phan tu cua Day so: ' );
Readln(n);
for i:= 1 to n do begin
Write('Nhap phan
tu thu ',i,'= ' );
Readln(A[i]); end;
Trang 5In số lần xuất hiện của các phần tử trong A
phan tu X can tim: ' ); Readln(X);
dem :=0;
for i:=1 to n do
if A[i] = X then dem := dem + 1;
if dem = 0 then write('Khong
co phan tu ',X,' trong day')
else Write('So lan xuat hien phan tu ',X,'
=====> ',dem );
Readln End
Hoạt động 3: Làm bài tập 2
10’
Cho học sinh thời gian 5’ để
làm bài tập và lấy điểm cộng
cho 3 bạn nộp sớm và đúng
nhất
Chia bảng ra làm 3 và yêu cầu
3 học sinh xung phong lên
bảng viết chương trình
Yêu cầu các học sinh còn lại
nhận xét bài của 3 bạn viết
trên bảng
Giáo viên nhận xét và giải
thích các vấn đề học sinh chưa
nắm rõ
- Học sinh chăm chú
làm bài tập
3 Củng cố -Dặn dò ( TG: 1’)
- Nhấn mạnh kiến thức về mảng một chiều
- Nhắc nhở học sinh về xem trước bài bài tập và thực hành 3
Trang 6PHIẾU HỌC TẬP Câu 1: Mảng một chiều là:
A 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ố
B Dãy hữu hạn các phần tử cùng kiểu Mảng không được đặt tên và mỗi phần tử của
nó có một chỉ số
C Dãy hữu hạn các phần tử khác kiểu Mảng được đặt tên và mỗi phần tử của nó có một chỉ số
D Dãy vô 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ố
Câu 2: Để khai báo biến mảng một chiều, ta cần phải có các thông tin gì?
Câu 3: Khai báo biến DTB để lưu trữ điểm trung bình môn tin học của 54 học sinh, ta
sử dụng:
A Var DTB: array[0 53] of real;
B Var DTB := array[0 53] of integer;
C Var DTB: array[0 54] : real;
D Var DTB: array[0 54] of real;
Câu 4: Cho var A: array[0 99] of integer; Để tham chiếu tới phần tử thứ 20 của biến
mảng A, ta sử dụng:
Câu 5: Cho trước var A: array[1 N] of integer; Hãy cho biết đoạn chương trình sau
dùng để làm gì?
Giatri:= A[1];
For i:= 2 to N do
If A[i] > Giatri then Giatri:= A[i];
A Tìm phần tử nhỏ nhất của mảng
B Tìm phần tử nhỏ nhất từ A[2] đến A[N]
C Tìm phần tử lớn nhất của mảng
D Tìm phần tử lớn nhất từ A[2] đến A[N]
Đáp án: 1A, 2D, 3A, 4C, 5C
Ý kiến nhận xét của giáo viên hướng dẫn chuyên môn:
………
Trang 7………
………
………
………
………
Đà Nẵng, ngày 26 tháng 2 năm 2017
GIÁO VIÊN HƯỚNG DẪN GIÁO SINH THỰC TẬP
Trần Thị Phượng Chu Thành Nhân