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

SKKN dạy học kiểu dữ liệu mảng theo định hướng phát triển năng lực học sinh

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 (121.41 KB, 21 trang )

Sáng kiến kinh nghiệm Tin học

2018 - 2019

MỤC LỤC
Trang
I. Mở đầu ……………………………………………………………………. 2
1.1. Lí do chọn đề tài ……………….………………………………….. 2
1.2. Mục đích nghiên cứu …………………………….………………... 2
1.3. Đối tượng nghiên cứu ……………………………………………… 3
1.4. Phương pháp nghiên cứu ………………………………….……….. 3
II. Nội dung sáng kiến kinh nghiệm ………………………………….…....... 3
2.1. Cơ sở lí luận ……………………………...………………….…….. 3
2.2. Thực trạng vấn đề trước khi áp dụng SKKN …………………...…. 4
2.3. Giải quyết vấn đề và tổ chức thực hiện ………………………........ 4
2.4. Hiệu quả bước đầu của SKKN …………………………..……..… 18
III. Kết luận, kiến nghị ……………………………………………..…..…… 18
3.1. Kết luận …………………………………………………………… 18
3.2. Kiến nghị ………………………………………………………….. 19

Giáo viên: Nguyễn Văn Đông

1


Sáng kiến kinh nghiệm Tin học

2018 - 2019

DẠY HỌC KIỂU DỮ LIỆU MẢNG
THEO ĐỊNH HƯỚNG PHÁT TRIỂN NĂNG LỰC HỌC SINH


I. MỞ ĐẦU
1.1. Lí do chọn đề tài.
Qua nghiên cứu thực tế dạy học cho thấy việc rèn luyện phương pháp học
tập cho học sinh không chỉ là một biện pháp nâng cao hiệu quả dạy học mà còn
là mục tiêu dạy học. Hiện nay một số học sinh học rất chăm chỉ nhưng vẫn học
chưa tốt, nhất là ở các môn tự nhiên, các em không nhớ được những kiến thưc
đã học, học phần sau đã quên phần trước và không biết liên kết các kiến thức với
nhau, không biết vận dụng kiến thức đã học. Phần lớn số học sinh này khi đọc
sách hoặc nghe giảng trên lớp không biết cách tự ghi chép để lưu thông tin, lưu
kiến thức trọng tâm vào trí nhớ của mình. Dạy học theo định hướng phát triển
năng lực học sinh sẽ học được phương pháp học, tăng tính độc lập, chủ động,
sáng tạo và phát triển tư duy. Cách học này còn phát triển được năng lực riêng
của từng học sinh không chỉ về trí tuệ, hệ thống hóa kiến thức (huy động những
điều đã học trước đó để chọn lọc các ý để ghi) mà còn là sự vận dụng kiến thức
được học qua sách vở vào cuộc sống. Kể từ năm học 2014 - 2015, hình thức dạy
học theo định hướng phát triển năng lực đã tập huấn đến từng giáo viên. Phương
pháp có ưu điểm là phát huy tối đa tính sáng tạo của học sinh, phát triển năng
khiếu. Tất cả những điều đó làm học sinh giảm áp lực trong học tập.
Phương pháp dạy học theo định hướng phát triển năng lực trong dạy học Tin
học sẽ dần dần hình thành cho học sinh tư duy mạch lạc, hiểu biết vấn đề một
cách sâu sắc, có cách nhìn vấn đề một cách hệ thống, khoa học. Chính vì vậy, tôi
mạnh dạn viết sáng kiến “DẠY HỌC KIỂU DỮ LIỆU MẢNG THEO ĐỊNH
HƯỚNG PHÁT TRIỂN NĂNG LỰC HỌC SINH”. Hy vọng rằng những
kinh nghiệm này của tôi có thể góp phần giúp các em học sinh hiểu bài, vận
dụng tốt đồng thời có hứng thú hơn với môn Tin học.
1.2. Mục đích nghiên cứu
Mục tiêu nghiên cứu của đề tài là giúp các em học sinh lớp 11 khi học
kiểu dữ liệu mảng thay vì cách tiếp cận theo nội dung sẽ là cách tiếp cận theo
định hướng phát triển năng lực. Thông qua các ví dụ và bài tập học sinh sẽ biết
vận dụng kiểu dữ liệu mảng để viết chương trình. Đồng thời thông qua các bài


Giáo viên: Nguyễn Văn Đông

2


Sáng kiến kinh nghiệm Tin học

2018 - 2019

tập này để phát triển năng lực tư duy phát hiện và giải quyết vấn đề, tư duy sáng
tạo cho học sinh.
1.3. Đối tượng nghiên cứu
Đối tượng nghiên cứu của đề tài là kiểu dữ liệu mảng một chiều trong
chương trình tin học 11. Sử dụng hình thức dạy học theo định hướng phát triển
năng lực để học sinh nắm vững và vận dụng thành thạo các thao tác thường gặp
khi làm việc với kiểu dữ liệu mảng một chiều.
1.4. Phương pháp nghiên cứu
Nghiên cứu lí luận: Nghiên cứu các tài liệu về kiểu dữ liệu có cấu trúc nói
chung, kiểu dữ liệu mảng nói riêng trong chương trình tin học 11.
Nghiên cứu thực tiễn: Khảo sát năng lực học sinh khi sử dụng kiểu dữ liệu
mảng để viết chương trình.
Thực nghiệm sư phạm: Tiến hành thực nghiệm trên những đối tượng học
sinh cụ thể nhằm đánh giá hiệu quả của đề tài.
II. NỘI DUNG SÁNG KIẾN KINH NGHIỆM
2.1. Cơ sở lí luận:
Môn Tin học không phải là môn khoa học lý thuyết thuần túy vì vậy học
sinh không thể nhớ nếu như không hiểu bài. Việc giáo viên bắt học sinh ghi nhớ
thụ động từng nội dung trong sách giáo khoa là một điều rất khó, cho dù học
sinh có cố gắng ghi nhớ thì vẫn bị lẫn lộn. Do đó, giáo viên phải không ngừng

đổi mới phương pháp dạy học, lấy “chuẩn kiến thức, kỹ năng” làm kim chỉ nam
trong quá trình dạy học, đồng thời phải biết chọn nội dung “lồng ghép” phù hợp
với kiến thức trong từng bài giảng, nhằm hình thành cho học sinh thói quen tích
cực, độc lập, sáng tạo và giải quyết tình huống có vấn đề. Một trong những
phương pháp dạy học mới và hiện đại nhất được đưa vào là phương pháp dạy
học theo định hướng phát triển năng lực. Đây một phương pháp dạy học mới
đang được rất nhiều nước trên thế giới áp dụng. Qua việc tìm hiểu và vận dụng
phương pháp dạy học theo định hướng phát triển năng lực, tôi nhận thấy
phương pháp dạy học này rất có hiệu quả trong quá trình dạy học của giáo viên
và học tập của học sinh.

Giáo viên: Nguyễn Văn Đông

3


Sáng kiến kinh nghiệm Tin học

2018 - 2019

2.2. Thực trạng của vấn đề trước khi áp dụng SKKN
Từ thực tiễn giảng dạy học phần “kiểu mảng” (mảng một chiều) trong
chương trình tin học lớp 11 tại trường THPT Tống Duy Tân tôi nhận thấy
rằng: Sau khi học xong, giáo viên kiểm tra lại khả năng nhớ bài và khả năng
trình bày lại phần nội dung chính trong bài thì học sinh thể hiện rất máy móc,
gò bó. Học sinh học bài theo hình thức thuộc lòng, những kỹ năng vận dụng rất
hạn chế. Việc thực hành rất khó khăn. Do không nhớ được trình tự cú pháp các
câu lệnh, các thao tác với mảng nên học sinh không viết ra được những gì mình
nhớ, không lập trình được các bài toán cần sử dụng kiểu dữ liệu mảng để lưu
trữ dữ liệu. Cũng chính vì vậy mà học sinh không hoàn thành được mục tiêu

kiến thức kỷ năng mà giáo viên đã đặt ra.
2.3. Giải quyết vấn đề và tổ chức thực hiện
Bước 1: Lựa chọn chủ đề, nội dung dạy học
Chủ đề: Kiểu dữ liệu mảng (mảng một chiều)
Bước 2: Xác định yêu cầu kiến thức, kĩ năng, thái độ
Kiến thức:
- Biết định nghĩa kiểu dữ liệu mảng;
- Biết cú pháp khai báo mảng một chiều, tham chiếu đến phần tử
của mảng một chiều;
- Hiểu rõ kiểu mảng là một kiểu dữ liệu có cấu trúc, rất cần thiết và
hữu ích trong nhiều chương trình.
- Hiểu một số chương trình đơn giản có sử dụng kiểu dữ liệu mảng
một chiều;
Kỹ năng:
- Biết khai báo biến kiểu mảng một chiều;
- Biết sử dụng kiểu dữ liệu mảng trong các bài toán lập trình;
Thái độ:
- Thấy được sự cần thiết của kiểu dữ liệu mảng
- Học sinh làm quen dần với các chương trình có sử dụng dữ liệu
kiểu mảng.
- Tiếp tục rèn luyện tư duy lập trình.
Giáo viên: Nguyễn Văn Đông

4


Sáng kiến kinh nghiệm Tin học

2018 - 2019


Bước 3: Lập bảng mô tả yêu cầu cần đạt
Loại câu
Nội dung
hỏi/bài
Nhận biết
tập
1. Khai Câu
HS chỉ ra
báo.
hỏi/bài tập được dữ liệu
định tính
trong các bài
toán không
chỉ thuộc kiểu
đơn
giản
chuẩn mà còn
có kiểu dữ
liệu có cấu
trúc.

Thông hiểu

HS chỉ ra và
giải
thích
được một số
bài toán lập
trình ta không
thể giải được

(hoặc rất khó
khăn) khi chỉ
sử dụng các
kiểu dữ liệu
đơn
giản
chuẩn đã học.
Kiểu dữ liệu
mảng
giúp
giải quyêt các
bài toán lập
trình đơn giản
hơn.
Bài
tập Hs biết cú HS biết các
định
pháp khai báo cách khai báo
lượng
mảng
một mảng
một
chiều.
chiều. Tham
chiếu đến các
phần tử trong
mảng.
Bài
tập
HS thực hiện

thực hành
khai báo các
biển
kiểu
mảng
một
chiều.

2. Một số Câu
HS biết được
ví dụ
hỏi/bài tập cú pháp tham
định tính
chiếu
đến
phần tử trong
mảng
một
chiều,
các
thao
tác
thường gặp
khi làm việc
với
kiểu
mảng
một
Giáo viên: Nguyễn Văn Đông


HS hiểu được
cách
nhập
xuất dữ liệu
đối với phần
tử mảng một
chiều.

Vận dụng
thấp

Vận dụng
cao

HS tìm hiểu và
đề xuất các
cách khai báo
và cú pháp
tham chiếu khi
làm việc với
kiểu dữ liệu
mảng
một
chiều.

HS chỉ ra
được ưu điểm
và sự cần thiết
của kiểu dữ
liệu

mảng
trong các bài
toán lập trình.

HS lấy được
các ví dụ khai
báo mảng một
chiều.

HS chỉ ra các
khai báo kiểu
mảng
một
chiều
đúng
(sai) trong các
ví dụ khai báo
mảng.
HS lấy được ví
dụ thao tác dơn
giản với phần
tử mảng một
chiều.

Học sinh chỉ
ra cách tham
chiếu
đến
từng phần tử
trong mảng

một chiều.

.

5


Sáng kiến kinh nghiệm Tin học

chiều (nhập
dữ liệu vào
mảng,
xuất
dữ liệu ra từ
mảng)
Bài
tập HS biết thao HS hiểu được
định
tác với mảng ý nghĩa của
lượng
một chiều.
mảng
một
chiều trong
lập trình.

Bài
tập
thực hành


2018 - 2019

HS viết được HS viết được
chương trình và so sánh
có sử dụng chương trình
mảng
một sử dụng mảng
chiều.
một chiều và
không
sử
dụng
mảng
một
chiều
(nếu có thể)
HS vận dụng
kiểu dữ liệu
mảng
một
chiều, các thao
tác với phần tử
mảng
một
chiều kết hợp
với các kiêu dữ
liệu khác đã
học để viết
được chương
trình

hoàn
chỉnh,
giải
quyết vấn đề
trong
tình
huống
quen
thuộc.

HS vận dụng
kiểu dữ liệu
mảng,
các
thao tác với
mảng
một
chiều kết hợp
với các kiêu
dữ liệu khác
đã học để viết
được chương
trình
hoàn
chỉnh
giải
quyết vấn đề
trong
tình
huống mới.


Bước 4: Đề xuất năng lực có thể hướng tới
Qua dạy học chủ đề “kiểu dữ liệu mảng” có thể hướng tới hình thành và
phát triển năng lực:
- Năng lực sử dụng ngôn ngữ, thao tác với kiểu dữ liệu mảng một chiều
bước đầu làm quen với kiểu dữ liệu có cấu trúc.
- Năng lực thực hành thao tác với mảng.
- Năng lực thực hành, vận dụng kiến thức tin học vào cuộc sống..
Bước 5: Tiến trình dạy học.
Chuẩn bị của giáo viên và học sinh:
- Chuẩn bị của học sinh: Sách GK tin 11, vở ghi.
- Chuẩn bị của giáo viên:
Giáo viên: Nguyễn Văn Đông

6


Sáng kiến kinh nghiệm Tin học

2018 - 2019

+ Giáo án, Sách GK Tin 11, Sách GV Tin 11, chuẩn kiến thức kĩ năng Tin
học 11, máy tính, máy chiếu;
+ Giáo viên chuẩn bị các chương trình có sử dụng kiểu dữ liệu mảng, các
thao tác cơ bản với mảng (sử dụng để chạy minh họa các chương trình trong
Pascal và trình chiếu)
Chương trình nhiệt độ trung bình tuần (chương trinh 1- hoạt động 2)
Chương trình nhập xuất dữ liệu từ phần tử mảng một chiếu (chương trinh
2- hoạt động 7)
Chương trình nhiệt độ trung bình N ngày (chương trình 3- hoạt động 9).

Chương trình kết hợp các thao tác với kiểu dữ liệu mảng một chiều bài tập
1 (chương trình 4 - hoạt động 10).
Chương trình kết hợp các thao tác với kiểu dữ liệu mảng một chiều bài tập
2 (chương trình 5 - hoạt động 10).
Chương trình kết hợp các thao tác với kiểu dữ liệu mảng một chiều bài tập
3 (chương trình 6- hoạt động 11)
Chương trình kết hợp các thao tác với kiểu dữ liệu mảng một chiều bài tập
4 (chương trình 7- hoạt động 11)
Chương trình kết hợp các thao tác với kiểu dữ liệu mảng một chiều bài tập
5 (chương trình 8- hoạt động 11)
Hoạt động 1. Lựa chọn tình huống công việc (gợi động cơ).
GV đặt vấn đề yêu cầu HS hãy cho biết các kiểu dữ liệu đã học.
GV nhận xét câu trả lời và nhấn mạnh các kiểu dữ liệu đã học trước đây
gọi là các kiểu dữ liệu chuẩn (đơn giản chuẩn).
Hoạt động 2: Lựa chọn tình huống công việc.
GV đặt vấn đề lập trình giải bài toán nhiệt độ trung bình tuần (ví dụ sgk).
HS lập trình giải bài toán nhiệt độ tuần.
GV trình chiếu, chạy chương trình bài toán nhiệt độ tuần (chương trình
chỉ sử dụng các kiểu dữ liệu chuẩn).
Program nhiet_do_tuan;
{chuong trinh 1}
Var
t1, t2, t3, t4, t5, t6, t7, tb: real;
Dem: byte;
Begin
Giáo viên: Nguyễn Văn Đông

7



Sáng kiến kinh nghiệm Tin học

2018 - 2019

Write(‘Nhap vao nhiet do 7 ngay trong tuan: ‘);
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;
Write(‘Nhiet do trung binh trong tuan la: ‘, tb);
Write(‘So ngay co nhiet do cao hon nhiet do tb trong tuan la: ‘,dem);
Readln;
End.
Hoạt động 3: Phát hiện tình huống có vấn đề.
GV đặt vấn đề nếu thay đổi yêu cầu của bài toán tính nhiệt độ trung bình
năm (số liệu là nhiệt độ trung bình của 365 ngày trong năm) thì việc khai báo
các biến trong chương trình như thế nào?
HS từ bài lập trình nhiệt độ tuần và chương trình trên máy chiếu học sinh
sẽ tính được số lượng các biến cần phải dùng trong chương trình nhiệt độ trung
bình năm.
GV nhận xét và trình bày cho học sinh thấy nếu chỉ sử dụng kiểu dữ liệu
chuẩn thì phải dung rất nhiều biến.
GV giới thiệu kiểu dữ liệu mảng một chiều có thể khắc phục các nhược
điểm trên.

Hoạt động 4 HS đọc skg.
Hoạt động 5: Tìm hiểu về định nghĩa mảng một chiều
GV yêu cầu học sinh cho biết định nghĩa mảng một chiều.
GV trình bày để học sinh biết được khi làm việc với mảng một chiều ta
cần xác định những yếu tố nào của mảng?
Hoạt động 6: Tìm hiểu về cú pháp khai báo mảng một chiều.
GV yêu cầu học sinh đọc tìm hiểu SGK và cho biết cú pháp khai báo
mảng một chiều.

Giáo viên: Nguyễn Văn Đông

8


Sáng kiến kinh nghiệm Tin học

2018 - 2019

GV trình bày cú pháp khai báo mảng một chiều.
GV trình bày (ghi bảng) cú pháp khai báo mảng một chiều
Cách 1. Khai báo trực tiếp
VAR <tên biến mảng>: array[<chỉ số đầu>..<chỉ số cuối>] of phần tử>;
Cách 2. Khai báo gián tiếp
TYPE <tên kiểu mảng> = array[<chỉ số đầu>..<Chỉ số cuối>] of phần tử>;
VAR <tên biến mảng> : <tên kiểu mảng>;
GV giải thích các thành phần trong cú pháp khai báo mảng một chiều. Lưu
ý học sinh không cần phải ghi phần giải thích.
GV lưu ý cách khai báo gián tiếp (cách 2). Đây là lần đầu tiên học sinh được

làm quen với cách khai báo này.
GV đưa ra các ví dụ về khai báo mảng một chiều. Yêu cầu học sinh lấy ví
dụ tương tự về việc khai báo mảng một chiều.
Ví dụ 1:
Khai báo mảng A có 10 phần tử kiểu số thực.
VAR A: array[1..10] of real;
Khai báo mảng B có 100 phần tử kiểu số nguyên.
VAR B: array[1..100] of integer;
GV yêu cầu học sinh chỉ ra các khai báo đúng trong phần khai báo sau:
Ví dụ 2:
VAR
A: array[-10..10] of byte;
B,C : array[1..100] of integer;
A,B,C : array[100 ..1] of real;
GV nhận xét phần trả lời của học sinh. Đồng thời nhắc lại để học sinh ghi
nhớ cách đặt chỉ số đầu và chỉ số cuối (chỉ số đầu <= chỉ số cuối). Lưu ý thông
thường người ta chọn chỉ số đầu là 1 để dể khai báo và sử dụng mảng một chiều.
Hoạt động 7: Tìm hiểu cách tham chiếu đến các phần tử trong mảng một chiều.
GV yêu cầu học sinh cho biết cách thức tham chiếu (truy cập) phần tử trong
mảng một chiều.
Ví dụ 3:
Khai báo mảng A có 10 phần tử kiểu nguyên.
Giáo viên: Nguyễn Văn Đông

9


Sáng kiến kinh nghiệm Tin học

2018 - 2019


VAR A: array[1..10] of integer;
Tham chiếu đến phần tử thứ 1 ta viết A[1];
Tham chiếu đến phần tử thứ 2 ta viết A[2];
...
Tham chiếu đến phần tử thứ 10 ta viết A[10];
Hoạt động 8: Tìm hiểu về các thao tác với mảng một chiều.
GV Trình bày để học sinh biết được thao tác chủ yếu đối với mảng một
chiều đó là nhập dữ liệu vào mảng một chiều và in (xuất) dữ liệu ra từ mảng một
chiều.
GV nhấn mạnh khi đã tham chiếu đến đên phần tử mảng một chiều, thì việc
nhập xuất dữ liệu trong phần tử mảng tương tự như các biến thông thường (biến
đơn).
GV trình bày (ghi bảng) cú pháp nhập dữ liệu vào mảng.
Ví dụ 4: Nhập dữ liệu vào mảng A (ví dụ 3)
Writeln(‘Nhap du lieu vào mang A’);
Readln(A[1], A[2], A[3], A[4], A[5], A[6], A[7], A[8], A[9], A[10]);
GV đặt vấn đề trong cú pháp nhập dữ liệu vào mảng chỉ thay đổi các chỉ số
(tên mảng được giữ nguyên). Vậy ta có thể sử dụng phần tử tổng quát của mảng
này là A[i], i chạy từ 1 đến 10.
GV yêu cầu học sinh trả lới có thể sử dụng câu lệnh nào để nhập dữ liệu
cho các phần tử mảng.
HS trình bày cách sử dụng câu lệnh lặp (số lần lặp biết trước) để nhập dữ
liệu vào phần tử mảng.
For i:=1 to 10 do
Readln(A[i]);
GV (gợi động cơ) tương tư như thao tác nhập dữ liệu vào mảng. Thao tác in dữ
liệu từ mảng ra ta cũng sử dụng câu lênh lặp (với số lần biết trước).
HS trình bày cú pháp in dữ liệu ra từ mảng.
Writeln(‘in du lieu tu mang’);

For i:=1 to 10 do
Writeln(A[i]);
GV yêu cầu học sinh in dữ liệu mảng một chiều theo hàng ngang và giữa các
phần tử có khoảng cách.
HS trình bày cú pháp đoạn chương trình.
Giáo viên: Nguyễn Văn Đông

10


Sáng kiến kinh nghiệm Tin học

2018 - 2019

Writeln(‘in du lieu tu mang’);
For i:=1 to 10 do
Write(A[i], ‘ ‘);
GV trình chiếu mô phỏng các thao tác nhập xuất dữ liệu vào phần tử mảng
một chiều chương trình đã được chuẩn bị sẵn (chương trình 2).
Program nhap_xuat; {chuong trinh 2}
Var
A: array[1..10] of integer;
i:Byte;
Begin
Writeln(‘nhap du lieu vao phan tu mang’);
For i:=1 to 10 do
Begin
Write (‘Nhap phan tu thu ‘, i);
Readln(A[i]);
End;

Writeln(‘In ket qua tu mang’);
For i:=1 to 10 do
Write(A[i], ‘ ‘);
readln;
End.
GV chạy chương trình, cho HS xem kết quả.
Hoạt động 9: Vận dụng kiểu dữ liệu mảng một chiều giải bài toán nhiệt độ
trung bình N ngày (N<=365). Nhập vào số nguyên dương N, nhiệt độ trung bình
N ngày. Tính nhiệt độ trung bình N ngày. Cho biết có bao nhiêu ngày nhiệt độ
cao hơn trung bình. Đưa các kết quả ra màn hình. (vận dụng thấp)
GV có thể gợi ý cho HS vân dụng các câu lênh như trong chương trình 2
vừa trình chiếu (chương trình nhập xuất dữ liệu mảng một chiều).
GV yêu cầu một HS lên bảng trình bày. Học sinh có thể làm một trong các
chương trình tương đương như sau (chương trình 3).
Program nhiet_do_N_ngay; {chuong trinh 3}
Var
A: array[1..365] of real;
i, N, dem: integer;
Giáo viên: Nguyễn Văn Đông

11


Sáng kiến kinh nghiệm Tin học

2018 - 2019

tb, tong :real;
Begin
Writeln(‘nhap so ngay’);

Readln(N);
Writeln (‘nhap nhiet do trung binh cac ngay’);
For i:=1 to N do
Begin
Write (‘Nhap nhiet do trung binh ngay thu ‘, i);
Readln(A[i]);
End;
tong:=0;
For i:=1 to N do
{tinh tong}
tong:= tong +A[i];
tb:=tong/N;
{tinh trung binh n ngay}
dem:=0;
For i:=1 to 10 do
If A[i] >tb then dem:=dem+1;
{dem so ngay cao hon trung binh}
Writeln(‘nhiet do trung binh N ngay la’, tb);
Writeln(‘so ngay cao hon nhiet do trung binh’, dem);
readln;
End.
Hoạt động 10: Vận dụng kiểu dữ liệu mảng một chiều (vận dụng thấp).
GV yêu cầu HS hoàn thành bài tập sau: (Bài tập giải quyết tình huống thực
tế).
Bài tập 1:Viết chương trình nhập vào từ bàn phím số nguyên dương N
(0nhất (phần tử lớn nhất) của dãy, đưa kết quả ra màn hình.
GV có thể gợi ý cho HS vân dụng các câu lênh như trong chương trình 3
vừa trình chiếu (chương trình tính nhiệt độ trung bình N ngày).
GV yêu cầu một HS lên bảng trình bày. Lưu ý bài toán chỉ yêu cầu đưa ra

giá trị lớn nhất trong dãy (mảng). Học sinh có thể làm một trong các chương
trình tương đương như sau (chương trình 4).
Program bai_tap1;
{Chuong trinh4}
Var A: array[1..100] of integer;
Giáo viên: Nguyễn Văn Đông

12


Sáng kiến kinh nghiệm Tin học

2018 - 2019

N, i, max : integer;
Begin
Write(‘Nhap so phan tu cua day so, N=’);
Readln(N);
For i:=1 to N do
Begin
Write(‘Phan tu thu ‘, i );
Readln(A[i]);
End;
Max:=A[1];
For i:=2 to N do
If A[i] > max then
{tim gia tri lon nhat}
Begin
max := A[i];
End;

writeln(‘Gia tri lon nhat trong day la:’, max);
Readln;
End.
GV nhận xét cho điểm bài làm của học sinh. Yêu cầu HS lên thực hiện phần
bài làm trên máy tính và chạy chương trình trong TP (trình chiếu trước lớp). HS
có thể hoàn thành nhanh được yêu cầu do đã làm bài trên bảng.
Bai tập 2: Viết chương trình nhập vào từ bàn phím số nguyên dương N
(0cộng các phần tử chẵn trong dãy. Yêu cầu đưa kết quả ra màn hình.
GV gợi ý cho hoc sinh vận dụng chương trình nhiệt độ N ngày để hoàn
thành chương trình bài tập 2. Lưu ý điểm khác biệt so với bài toán nhiệt độ N
ngày là yêu cầu của bài toán tính trung bình cộng các số chẵn (dãy có thể có cả
số chẵn và lẻ).
GV yêu cầu một HS lên bảng trình bày. HS có thể làm một trong các
chương trình tương đương như sau.
Program bai_tap2;
{Chương trình 5}
Var A: array[1..1000] of word;
N, i, dem : integer;
Tong: longint;
Giáo viên: Nguyễn Văn Đông

13


Sáng kiến kinh nghiệm Tin học

2018 - 2019

tb: real;

Begin
Write(‘Nhap so phan tu cua day so, N=’);
Readln(N);
For i:=1 to N do
Begin
Write(‘Phan tu thu ‘, i );
Readln(A[i]);
End;
Tong:=0; dem:=0;
For i:=1 to N do
If A[i] mod 2 = 0 then
Begin
tong:=tong +A[i];
{tinh tong}
dem:=dem +1;
{dem cac phan tu chan}
End;
tb:=tong/dem;
writeln(‘Trung binh cong cac so chan trong day la:’, tb);
Readln;
End.
GV nhận xét cho điểm bài làm của học sinh. Yêu cầu HS lên thực hiện phần
bài làm trên máy tính và chạy chương trình trong TP (trình chiếu trước lớp)
Hoạt động 11: Vận dụng cao kiểu mảng một chiều.
GV đặt vấn đề trong các bài tập và ví dụ ở trên chúng ta đã sử dụng các
thao tác thường gặp khi làm việc với kiểu dữ liệu mảng một chiều. Trong thực tế
có những bài toán cần kết hợp các thao tác xử lí mảng một chiều để viết chương
trình.
Bài tập 3: Viết chương trình nhập vào từ bàn phím số nguyên dương N
(0

ít nhất hai số 0. Tính tổng các số (phần tử) nằm giữa số 0 đầu tiên và số 0 cuối
cùng trong dãy. Yêu cầu đưa kết quả ra màn hình.
GV gợi ý cho HS đây là bài toán tính tổng như các ví dụ và bài tập đã làm
(bài toán nhiệt độ N ngày, bài tâp 2). Lưu ý học sinh cần xác định vị trí số 0 đầu

Giáo viên: Nguyễn Văn Đông

14


Sáng kiến kinh nghiệm Tin học

2018 - 2019

tiên và số 0 cuối cùng trong dãy (mảng một chiều). Kết quả bài toán sẽ là tổng
các phần tử liên tiếp trong mảng từ phần tử 0 đầu tiên đến phần tử 0 cuối cùng.
GV yêu cầu học sinh sử dụng câu lênh lặp (For- do hoăc While-do) xác
định vị trí số 0 đầu tiên và số 0 cuối cùng. Học sinh có thể viết một trong các
chương trình tương đương như sau:
Program bai_tap3;
{Chương trình 6}
Var A: array[1..100] of integer;
N, i, j, vtdau, vtcuoi : word;
Tong: longint;
Begin
Write(‘Nhap so phan tu cua day so, N=’);
Readln(N);
For i:=1 to N do
Begin
Write(‘Phan tu thu ‘, i );

Readln(A[i]);
End;
i:=1;
While A[i] <> 0 do
{xac đinh vi tri so 0 đau tien}
i:=i+1;
vtdau:=i;
j:=N;
While A[j] <> 0 do
{xac đinh vi tri so 0 cuoi cung}
j:=j - 1;
vtcuoi:=j;
Tong:=0;
For i:=vtdau to vtcuoi do
tong:=tong +A[i];
writeln(‘Ket qua la:’, tong);
Readln;
End.
GV nhận xét cho điểm bài làm của học sinh.
GV lưu ý học sinh có thể sử dụng câu lênh for-do dạng tiến và for-do
dạng lùi để xác định vị trí các số 0 theo yêu cầu.
Giáo viên: Nguyễn Văn Đông

15


Sáng kiến kinh nghiệm Tin học

2018 - 2019


GV yêu cầu HS lên thực hiện phần bài làm trên máy tính chạy chương trình
trong TP (trình chiếu trước lớp).
Bài tập 4: Viết chương trình nhập từ bàn phím số nguyên dương N (N<=100)
và dãy A gồm N số nguyên A1, A2, …AN. Hãy sắp xếp dãy A trở thành dãy
không giảm (Ai <= Ai+1 ). Yêu cầu đưa kết quả ra màn hình.
GV gợi ý học sinh sử dụng thuật toán sắp xếp (đã học ở lớp 10) để săp xếp
mảng một chiều.
Program bai_tap4;
{chuong trinh 7}
Var
A: array[1..100] of integer;
i, j, n, tg: integer;
Begin
Write(‘Nhap so phan tu cua day so, N=’);
Readln(N);
For i:=1 to N do
Begin
Write(‘Phan tu thu ‘, i );
Readln(A[i]);
End;
For j:= N downto 2 do
{thuat toan sap xep}
For i:= 1 to j - 1 do
If a[i] > a[i+1] then
Begin
tg:=a[i];
a[i]:=a[i+1];
a[i+1]:=tg;
end;
writeln(‘Day sau khi duoc sap xep:’);

for i:=1 to N do
{in mang sau khi da sap xep}
write(a[i], ‘ ‘);
readln;
End.
GV nhận xét cho điểm bài làm của học sinh. Nhấn mạnh trong chương
trình có sử dụng thuật toán sắp xếp (thuật toán sắp xếp tráo đổi), học sinh có thể
sử dụng thuật toán sắp xếp khác để giải bài toán. Cần lưu ý học sinh nhớ lại thao
tác in (xuất dữ liệu) mảng một chiều.
Giáo viên: Nguyễn Văn Đông

16


Sáng kiến kinh nghiệm Tin học

2018 - 2019

GV yêu cầu HS lên thực hiện phần bài làm trên máy tính chạy chương trình
trong TP (trình chiếu trước lớp).
Bài tập 5: Viết chương trình nhập từ bàn phím số nguyên dương N (N<=255).
Hãy chuyển số nguyên dương N sang hệ nhị phân (hệ cơ số 2). Yêu cầu đưa kết
quả ra màn hình.
GV gợi ý cho học sinh để chuyển đổi số nguyên dương N sang hệ nhị phân
ta sử dụng các phép toán DIV và MOD. Số dư của phép toán chia cho 2 sẽ được
lưu vào mảng một chiều. Trong bài toán này kiểu dữ liệu mảng một chiều được
ứng dụng rất linh hoạt. Việc hiển thi số nhị phân (đã được lưu vào mảng một
chiều) học sinh có thể thực hiện được.
Program bai_tap5;
{chuong trinh 8}

Var
A: array[1..10] of byte;
i, j, N : byte;
Begin
Write(‘Nhap so nguyen duong N=’);
Readln(N);
i :=0;
While N<> 0 do
{Luu ket qua vao mang A}
begin
i:= i+1;
A[i]:= N mod 2;
N:= N div 2;
End;
Writeln(‘ket qua sau khi chuyen doi nhi phan’);
For j:= i downto 1 do
Write(A[j]);
{In so nhi phan}
Readln;
End.
GV nhận xét cho điểm bài làm của học sinh. Lưu ý học sinh khi in mảng kết
quả, mảng kết quả được in ngược từ phần tử cuối về phần tử đầu (nếu học sinh
in từ đầu đến cuối kết quả sẽ sai).
GV cần nhấn mạnh nhờ sử dụng kiểu dữ liệu mảng, việc giải bải toán
(chuyển đổi hệ đếm- chương trình 8) trở nên dể dàng hơn. Qua đó học sinh sẽ
thấy được sự cần thiết và hữu dụng của kiểu dữ liệu mảng trong lập trình.
Giáo viên: Nguyễn Văn Đông

17



Sáng kiến kinh nghiệm Tin học

2018 - 2019

2.4. Hiệu quả bước đầu của SKKN
Thực tế sau khi áp dụng sáng kiến kinh nghiệm này vào giảng dạy môn
Tin học lớp 11 ở trường, tôi nhận thấy chất lượng bộ môn được nâng cao đáng
kể:
- Khả năng tiếp thu tốt hơn vì các em học và tự kiểm chứng nội dung bằng
chương trình.
- Kỹ năng tư duy, sáng tạo, biết phân tích và giải quyết tình huống của các
em học sinh ngày càng tốt hơn.
- Thông qua một số bài tập mẫu giúp cho học sinh nắm được phương pháp
giải chung, từ đó áp dụng để giải một số bài toán cơ bản có sử dụng kiểu dữ liệu
mảng.
- Sau khi thực hiện đề tài này tại trường trung học phổ thông Tống Duy
Tân. Qua từng tiết học, tôi đã vận dụng phương pháp trên, kết hợp cả lý thuyết
lẫn thực hành cho học sinh thực hiện lập trình giải các bài toán trong chương
trình phổ thông, từ đó áp dụng để giải các bài toán nâng cao và các bài toán
trong thực tế. Thông qua đó tạo hứng thú giúp học sinh tích cực hơn trong học
lập trình Pascal nói riêng và môn Tin học nói chung.
- SKKN cũng được các thầy cô bộ môn Tin trường THPT Tống Duy Tân
sử dụng để giảng dạy kiểu dữ liệu mảng (chương trinh tin học 11), dạy bồi
dưỡng học sinh khá giỏi và nhận được phản hồi tốt. SKKN được các thầy cô sử
dụng làm tài liệu giảng dạy hữu ích.
III. KẾT LUẬN VÀ KIẾN NGHỊ
3.1. Kết luận
Ngôn ngữ lập trình nói chung đóng vai trò rất quan trọng trong việc xây
dựng các chương trình ứng dụng để phục vụ cho cuộc sống. Nhờ sự phát triển

của tin học (trong đó các nhà lập trình chuyên nghiệp đóng vai trò không nhỏ)
mà hiện nay hầu hết các lĩnh vực trong xã hội đã ứng dụng được tin học để giải
quyết công viêc nhanh, hiệu quả và chính xác hơn.
Hiện nay, ngôn ngữ lập trình Pascal đã trở thành ngôn ngữ lập trình phổ
biến nhất trên thế giới sử dụng trong lĩnh vực giảng dạy. Trong quá trình giảng
dạy, các thầy cô có thể đưa ra các vấn đề như lập trình các game nhỏ…để các
em có thể chứng tỏ được khả năng của mình làm cho học sinh yêu thích môn
học, ham học hỏi và sáng tạo.
Giáo viên: Nguyễn Văn Đông

18


Sáng kiến kinh nghiệm Tin học

2018 - 2019

Đề tài này mang tính thực tiễn rất cao cụ thể là: Các em có thể sử dụng
kiến thức lập trình nói chung và kiểu dữ liệu mảng nói riêng để giải các bài toán
thực tế thường gặp. Kết quả là có rất nhiều em đã dễ dàng vận dụng được kiến
thức để giải các bài toán lặp do giáo viên đặt ra.
Qua thực tế giảng dạy và học tập, được sự giúp đỡ của các thầy cô, các
bạn đồng nghiệp, bản thân tôi đã tiếp thu được nhiều điều bổ ích, thiết thực cho
quá trình giảng dạy và công tác. Tôi mạnh dạn chọn đề tài này với mong muốn
tạo được hứng thú khi học sinh học ngôn ngữ lập trình Pascal nói riêng và lập
trình nói chung. Qua thực nghiệm tôi thấy đề tài này đã có tác dụng tốt trong
việc giảng dạy và học tập của thầy và trò. Tôi sẽ cùng các đồng nghiệp áp dụng
sáng kiến kinh nghiệm này vào công tác giảng dạy Tin học khối 11 môn lập trình
pascal cho những năm tiếp theo nhằm nâng cao hiệu quả và chất lượng dạy học.
3.2. Kiến nghị

Xuất phát từ tâm nguyện của một giáo viên trẻ đang từng ngày giảng dạy
cho học sinh, tôi mong muốn nếu đề tài của tôi được đánh giá tốt thì cần được
phổ biến một cách rộng rãi để tài liệu đến tay những giáo viên và học sinh yêu
thích ngôn ngữ lập trình Pascal nói riêng môn tin học nói chung.
XÁC NHẬN CỦA THỦ TRƯỞNG
ĐƠN VỊ

Thanh Hóa, ngày 15 tháng 5 năm 2019
Tôi xin cam đoan đây là SKKN của
mình viết, không sao chép nội dung của
người khác
Người viết

Nguyễn Văn Đông

TÀI LIỆU THAM KHẢO
1. Sách giáo khoa tin học 11
Giáo viên: Nguyễn Văn Đông

Hồ Sĩ Đàm

chủ biên
19


Sáng kiến kinh nghiệm Tin học

2018 - 2019

2. Sách giáo viên tin học 11


Hồ Sĩ Đàm

chủ biên

3. Sách bài tập tin học 11

Hồ Sĩ Đàm

chủ biên

4. Dạy học theo chuẩn kiến thức, kĩ năng môn Tin học lớp 11 – Hồ Cẩm Hà
5. Lý thuyết và Bài tập lập trình Pascal 5.5-6.0 - Nguyễn Thị Kiều Duyên.
6. Lý thuyết và Bài tập lập trình Pascal – Quách Tuấn Ngọc.
7. Một số sáng kiến kinh nghiệm và ý kiến của đồng nghiệp .

DANH MỤC
CÁC ĐỀ TÀI SÁNG KIẾN KINH NGHIỆM ĐÃ ĐƯỢC HỘI ĐỒNG
ĐÁNH GIÁ XẾP LOẠI CẤP PHÒNG GD&ĐT, CẤP SỞ GD&ĐT VÀ CÁC
CẤP CAO HƠN XẾP LOẠI TỪ C TRỞ LÊN
Giáo viên: Nguyễn Văn Đông

20


Sáng kiến kinh nghiệm Tin học

2018 - 2019

Họ và tên tác giả: Nguyễn Văn Đông

Chức vụ và đơn vị công tác: Giáo viên trường THPT Tống Duy Tân

TT

1

Tên đề tài SKKN

Sử dụng kiểu xâu thực hiện phép
toán với số nguyên lớn
Dạy học kiểu dữ liệu tệp, thao tác

2

với tệp theo định hướng phát triển

Kết quả
Cấp đánh
đánh giá
Năm học
giá xếp loại
xếp loại đánh giá xếp
(Phòng, Sở,
(A, B,
loại
Tỉnh...)
hoặc C)
Sở GD&ĐT
Thanh Hóa


C

2012

Sở GD&ĐT
Thanh Hóa

C

2014

Sở GD&ĐT
Thanh Hóa

B

2017

năng lực học sinh
3

Dạy học kiểu dữ xâu theo định
hướng phát triển năng lực học sinh

Giáo viên: Nguyễn Văn Đông

21




×