Tải bản đầy đủ (.doc) (7 trang)

Bài tập kiểu mảng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (137.72 KB, 7 trang )

TRƯỜ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

1


4’


Hoạt động 1: Ôn tập lý thuyết
GV đưa ra 5 câu hỏi trắc HS trả lời câu hỏi .
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.
Hoạt động 2: Bài tập 1
Hỏi học sinh : Input và output
Input: Mảng A gồm
của bài toán là gì ?
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
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ử
20’


1

2

3

4

5

6

5

6

1

2

7

9

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 ….


BÀI TẬP KIỂU MẢNG

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;
Gán max := A[1] sau begin
đó sử dụng câu lệnh Writeln('Nhap vao so
lặp for..do để duyệt
phan tu cua mang');
mảng, nếu A[i] >
Readln(n);
max thì gán max :=
For i:= 1 to n do
A[i];
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;
cs:=i;

2


Hỏ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];
Chỉ số của phần tử
Hỏi học sinh chỉ số phần tử
A[i] bằng 2.
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.
2
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
5

2

3

4

5

6

6
1
CS=2


2

7

9

end;
end;
writeln('3 so ',A[cs1],' ',A[cs],' ',A[cs+1],'
co tong lon nhat trong
mang’);
readln;
end.

i=3

Gán max:=tong;
cs:=i;

1. Gán A[1] + A[2] + A[3] =
Max
5

6

1

2. i = 3. So sánh Max với A[2]
+ A[3] + [A4].


3


6
1
2
3. Cho đến khi tong>max .
i = 5.
2
4

7
5

9
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

Hỏi học sinh : Input và output - Input : dãy n số Bài tập 2 : Nhập vào
của bài toán là gì?
nguyên (n nhập từ một dãy gồm n số
bàn phím)
nguyên sau đó đếm số
lần xuất hiện phần tử có
- Output: in ra số lần
giá trị bằng X trong dãy
phần tử X xuất hiện
(n, X nhập từ bàn
trong dãy.
phím).
Yêu cầu học sinh trình bày ý
tưởng để đếm số lần phần tử Khởi tạo biến đếm
ban đầu là dem := 0.
X xuất hiện trong dãy
Sử dụng vòng lặp i,
lặp từ 1 đến N.
10’

Đố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
hiện cử X trong A.


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;
write('Nhap gia tri

4


In 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
Cho học sinh thời gian 5’ để - Học sinh chăm chú
làm bài tập và lấy điểm cộng làm bài tập.
cho 3 bạn nộp sớm và đúng
nhất.
10’ 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õ.

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.

5



PHIẾ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ì?
A. Tên biến mảng.
C. Kiểu của các phần tử mảng.
B. Số lượng phần tử mảng
D. Tất cả đáp án A, B, C.
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:
A. A20
C. A[19]
B. A[20]
D. A19
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.
B.
C.
D.

Tìm phần tử nhỏ nhất của mảng.
Tìm phần tử nhỏ nhất từ A[2] đến A[N].
Tìm phần tử lớn nhất của mảng.
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:
…………………………………………………………………………………………
…………………………………………………………………………………………

6


…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………

Đà 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

7



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×