skkn đổi mới phương pháp giảng dạy theo hướng tổ chức hoạt động học theo nhóm và hướng dẫn học sinh tự học trong bài dữ liệu kiểu mảng một chiều - Pdf 50

SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HOÁ

TRƯỜNG THPT LƯU ĐÌNH CHẤT

SÁNG KIẾN KINH NGHIỆM

ĐỀ TÀI: ĐỔI MỚI PHƯƠNG PHÁP GIẢNG DẠY THEO
HƯỚNG TỔ CHỨC HOẠT ĐỘNG HỌC THEO NHÓM VÀ
HƯỚNG DẪN HỌC SINH TỰ HỌC TRONG BÀI DỮ LIỆU
KIỂU MẢNG MỘT CHIỀU.

Người thực hiện: Nguyễn Thị Hường
Chức vụ: Giáo viên
SKKN thuộc lĩnh vực: Tin Học

THANH HOÁ NĂM 2018


MỤC LỤC

A.

NỘI DUNG
1. PHẦN MỞ ĐẦU

TRANG

1.1. Lí do chọn đề tài
1.2. Mục đích nghiên cứu
1.3. Đối tượng nghiên cứu
1.4. Phương pháp nghiên cứu

với nhiều phương dạy học được bàn cải sôi nổi để cuối cùng đi đến một cái
chung nhất là đưa chất lượng nền giáo dục nước nhà đi lên.
Qua đợt thi quốc tề vừa qua nước ta đã gặt hái được khá nhiều thành công
trong lĩnh vực giáo dục mang về nhiều tấm huy chương vàng, bạc, đồng danh
giá trong đó có sự góp mặt của bộ môn Tin học. Đó là minh chứng rõ nhất cho
thấy Việt Nam là một nước không thua kém với các cường quốc năm châu. Vậy
tại sao thực trạng chung ở các nhà trường THPT bộ môn Tin học lại không được
đón nhận một cách nhiệt tình từ phía các em học sinh. Phải chăng đối với các em
nó là môn phụ hay nó quá trừu tượng hoặc quá khó để các em có thể yêu thích
và đam mê. Mặc dù các em biết trong thời kỳ công nghệ thông tin ngày nay tin
học là một phần không thể thiếu trong sự phát triển chung của nhân loại. Đó là
câu hỏi được đặt ra rất nhiều không chỉ cho những người giáo viên chúng tôi mà
cho toàn ngành giáo dục và hơn nữa là cho toàn xã hội. Liệu giải pháp nào là tốt
nhất để khắc phục tình trạng này. Tựu chung lại dù là lí do gì đi nữa thì đấy cũng
là những nguyên nhân để những người giáo viên như chúng tôi trăn trở oằn
mình trong từng tiết học mong các em có niềm đam mê hơn trong môn học của
mình để mục tiêu cuối cùng không chỉ là những tấm huy chương vàng mà còn là
những sáng chế, những phát minh tạo ra nhiều sản phẩm giúp ích cho đời.
Đợt tập huấn gần đây nhất tôi được tham dự bàn về vấn đề “Phương pháp
và kĩ thuật tổ chức hoạt động học theo nhóm và hướng dẫn học sinh tự học” mà
bộ giáo dục và đào tạo đang có hướng triển khai. Đây là một phương pháp
không mới đối với nhiều nước trên thế giới, nó đã và đang mang lại khá nhiều
thành công trong lĩnh vực giáo dục của họ. Vậy liệu đối với nước Việt nam thân
yêu của chúng ta có nên áp dụng các phương pháp đó để mang lại hiều quả giáo
dục không nhỉ?
Bản thân Tôi nhận thấy để đạt hiệu quả cao trong mỗi phần học, tiết học
cần có cách thiết kế bài giảng cho phù hợp với nội dung kiến thức; phương
pháp, phương tiện dạy học phải phù hợp với từng đối tượng học sinh. Để qua
mỗi phần học, tiết học học sinh thích thú với kiến thức mới, qua đó hiểu được
kiến thức đã học trên lớp, đồng thời học sinh thấy được tầm quan trọng của vấn

+ Dự giờ, thăm lớp, tích luỹ kinh nghiệm thực tế.
2. Nội dung sáng kiến kinh nghiệm
2.1. Cơ sở lí luận của sáng kiến kinh nghiệm
- Đối với các em học sinh bậc THPT thì bộ môn Tin học đang còn khá
mới mẻ và khó để các em có thể tiếp cận một cách tốt nhất, đặc biệt là chương
trình Tin học lớp 11. Vì thế cần phải tạo hứng thú học tập trong mỗi em học
sinh. Bởi khi có hứng thú, say mê trong nghiên cứu, học tập thì thì việc lĩnh hội
tri thức trở nên dễ dàng hơn; ngược lại, khi nắm bắt được vấn đề, tức là hiểu
được bài thì người học lại có thêm hứng thú để học.
- Nhiều bài trong chương trình Tin học 11 thực sự gây nhiều khó khăn cho
cả giáo viên lẫn học sinh trong việc truyền thụ và lĩnh hội tri thức. Đặc biệt để
các em có thể hiểu được kiểu mảng là gì, khi nào thì dùng nó và việc sử dụng
kiểu mảng như thế nào là điều rất khó.
2.2. Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm.
- Đại bộ phận Học sinh còn coi nhẹ bộ môn, coi đây là môn phụ nên
không mấy hứng thú với môn học, chưa đầu tư nhiều thời gian công sức nên
giáo viên rất khó khăn trong việc truyền đạt kiến thức, đổi mới phương pháp dạy
học.
- Chất lượng học sinh còn chưa cao và chưa đồng đều. Lớp mũi nhọn thì
tiếp thu tốt, các lớp khác thì tiếp thu còn chậm.
2


- Các em học sinh vẫn còn quen với cách dạy truyền thống là ỉ lại cho
giáo viên, không chủ động trong lĩnh hội tri thức.
- Môn học khá mới mẻ và khó.
- Kiến thức có liên quan nhiều đến toán học nên yêu cầu học sinh phải có
tư duy tốt.
2.3. Các sáng kiến kinh nghiệm hoặc các giải pháp đã sử dụng để giải
quyết vấn đề.

A. KHỞI ĐỘNG
Hoạt động 1: Kiểm tra bài cũ
(1) Mục tiêu: Kiểm tra kiến thức của bài học trước về câu lệnh rẽ nhánh If
– Then và câu lệnh lặp For – Do nhằm đáp ứng được lượng kiến thức cần thiết
để giải quyết bài toán ví dụ ở hoạt động 2.
3


(2) Phương pháp/Kĩ thuật: Vấn đáp
(3) Hình thức tổ chức hoạt động: Thảo luận nhóm
(4) Phương tiện dạy học: Sách giáo khoa, máy tính, máy chiếu.
(5) Sản phẩm: Học sinh hiểu và vận dụng được cấu trúc rẽ nhánh và cấu
trúc lặp để giải quyết tình huống cụ thể (mức vận dụng cao).
Nội dung hoạt động
Trong ngôn ngữ lập trình Pascal, đoạn chương trình sau cho kết quả là gì?
T:=0;
For i:=1 to n do if (I mod 2=0) then
T:=T+i;
Tính tổng các số nguyên là số lẻ từ 0 đến n.
Tính tổng các số nguyên là số chẵn từ 0 đến n.
Tính tổng các số nguyên là số chẵn từ 1 đến n.
Tính tổng các số nguyên từ 1 đến n.
Đáp án: C
Hoạt động 2: Tìm hiểu bài toán ví dụ
(1) Mục tiêu: Học sinh hiểu được nhu cầu của việc sử dụng kiểu mảng.
(2) Phương pháp/Kĩ thuật: Dạy học nêu vấn đề.
(3) Hình thức tổ chức hoạt động: Thảo luận nhóm.
(4) Phương tiện dạy học: Sách giáo khoa, máy tính, máy chiếu, phiếu câu
hỏi, các chương trình nguồn mẫu.
(5) Sản phẩm: Học sinh không nhàm chán khi tiếp cận vấn đề mới. Học

Bài này cho nhiệt độ trung bình của 7 ngày
Bài này phải khai báo 7 biến lưu giá trị nhiệt độ cho 7 ngày, 1 biến lưu
nhiệt độ trung bình, một biến lưu tổng số ngày có nhiệt độ cao hơn nhiệt độ
trung bình.
Các biến này có kiểu dữ liệu là số thực: Real.
Có 9 biến cùng kiểu dữ liệu với nhau.
Tính nhiệt độ trung bình của cả tuần và số ngày có nhiệt độ cao hơn nhiệt
độ trung bình.
Câu lệnh tính nhiệt độ trung bình: tb:=(t1+t2+t3+t4+t5+t6+t7)/7
Câu lệnh để đếm các ngày thõa mãn điều kiện bài toán có cú pháp là:
If
t1>tb
then dem:=dem+1; {kiểm tra ngày thứ nhất}
Có 7 câu lệnh như vậy.
Các câu lệnh tương tự nhau
Nếu bài toán xử lí với số ngày là một tháng thì phải cần 30 biến, một năm
là 366 biến.
Có 30 hoặc 366 câu lệnh đếm số ngày thõa mãn điều kiện bài toán.
Chương trình như vậy gặp các khó khăn sau:
+ Khai báo quá nhiều.
+ Chương trình quá dài vì nhiều câu lệnh.
Các biến cùng kiểu dữ liệu với nhau, nhiều lệnh tương tự nhau.
Giáo viên chiếu chương trình mẫu chạy trên pascal khi không dùng kiểu
mảng và khi có dùng kiểu mảng.
Giáo viên nhận xét
Để khắc phục những hạn chế trên, người ta thường ghép chung 7 biến trên
thành một dãy và đặt cho nó chung một tên và đánh cho mỗi phần tử một chỉ số.
Cách làm như vậy tạo nên một kiểu dữ liệu mới có tên là kiểu mảng một
chiều. Và bài học hôm nay chúng ta sẽ cùng nhau bàn về kiểu dữ liệu đó.
B. HÌNH THÀNH KIẾN THỨC

4
5
6
7
29.
27 26
28
28
30
28
Nhietdo
5
+ Tên mảng: Nhietdo
+ Số lượng phần tử: 7
+ Kiểu dữ liệu của phần tử: real (số thực)
+ Phần tử thứ 5 là 28.5
PHIẾU CÂU HỎI
Số lượng các phần tử của mảng một chiều là hữu hạn hay vô hạn?
Kiểu dữ liệu của các phần tử trong mảng một chiều như thế nào?
Mảng một chiều là gì?
Biến mảng có được đặt tên không?
Các phần tử của mảng có tên như thế nào?
Phân biệt các phần tử thông qua cái gì?
Khi tham gia vào chương trình biến kiểu mảng có cần khai báo không?
Hãy xác định tên mảng, số lượng phần tử, kiểu dữ liệu của phần tử, giá trị
của phần tử thứ 5 của ví dụ đã cho.
Hãy tự đặt câu hỏi cho nội dung này?
Giáo viên cho học sinh dán phiếu trả lời lên bảng rồi cho học sinh
thảo luận và phản biện lẫn nhau.
Giáo viên chính xác lại các câu trả lời của Học sinh như sau:

a. Khai báo biến mảng một chiều:
Cách 1: Khai báo trực tiếp:
[4]
Var <Danh sách tên biến mảng>:array[chỉ số đầu..chỉ số cuối] of
<Kiểu dữ liệu của phần tử>;
Cách 2: Khai báo gián tiếp:
[4]
Type <tên kiểu mảng>=array[chỉ số đầu..chỉ số cuối] of ;
Var < Danh sách tên biến mảng>:<tên kiểu mảng>;
Trong đó:
Of: từ khóa.
Var: từ khóa để khai báo biến.
Type: từ khóa để định nghĩa kiểu.
Array: từ khóa để khai báo mảng.
Chỉ số đầu, chỉ số cuối: là các hằng hoặc biểu thức nguyên. Chỉ số tăng
đều mỗi lần lên 1 đơn vị nguyên. Chỉ số đầu
Với mảng m và b: chỉ số tăng lên 1 đơn vị số nguyên. Với mảng c: chỉ số
tăng lên một kí tự theo bảng chữ cái tiếng anh.
Kiểu dữ liệu phần tử của mảng m và b là char; của mảng c là integer.
8


Mảng m và b có 14 phần tử, mảng c có 26 phần tử.
Nếu chỉ số là kiểu số nguyên ta có thể tính theo công thức: chỉ số cuối –
chỉ số đầu +1 (Vd: 10- (-3)+1=14). Còn nếu là giá trị khác thì có thể đếm.
Ví dụ 3:
Var m,b:array[3..-10] of char;
PHIẾU CÂU HỎI
Cho nhận xét về ví dụ này?
Giáo viên có thể gọi học sinh bất kỳ trả lời.
Giáo viên nhận xét câu trả lời của học sinh rồi chính xác và nhấn
mạnh lại:
Đây là một ví dụ sai vì chỉ số đầu lớn hơn chỉ số cuối.
PHIẾU CÂU HỎI
Mỗi nhóm tự đặt hai ví dụ sai và hai ví dụ đúng về khai báo trực tiếp
biến mảng một chiều?
Giáo viên cho các nhóm dán câu trả lời lên bảng. Yêu cầu cả lớp thảo
luận rồi nhận xét chéo giữa các nhóm. Giáo viên chính xác lại các câu trả
lời.
Ví dụ về khai báo gián tiếp:
Ví dụ 1:
Type mangnd= array[1..7] of real;
Var nhietdo:mangnd;
Ví dụ 2:
Type mang1= aray[-3..10] of char;
Type mang2= array[a..c] of integer;

Khi nào chọn cách khai báo gián tiếp?
Cách tham chiếu đến từng phần tử của mảng một chiều.
Hãy tự đặt các câu hỏi trắc nghiệm cho nội dung này.
Giáo viên chính xác lại các câu trả lời của Học sinh như sau:
Type Kmang1=array[1..Nmax] of real;
Var nhietdo:Kmang1;
Khai báo trực tiếp: Là khai báo không qua bước trung gian.
Khai báo gián tiếp: Là khai báo có thông qua bước trung gian.
Lấy mỗi cách khai báo hai ví dụ.
Ví dụ về khai báo trực tiếp:
Ví dụ 1:
Var nhietdo:array[1..7] of real;
Ví dụ 2:
Var m,b:aray[-3..10] of char;
c:array[a..c] of integer;
Ví dụ về khai báo gián tiếp:
Ví dụ 1:
Type mangnd= array[1..7] of real;
Var nhietdo:mangnd;
Ví dụ 2:
Type mang1= aray[-3..10] of char;
Type mang2= array[a..c] of integer;
Var m,b:mang; c:mang2;
Cách khai báo trực tiếp ngắn gọn và thuận tiện khi tên kiểu mảng ít được
sử dụng.
Khi tên kiểu mảng được sử dụng nhiều lần trong chương trình ta chọn
cách khai báo gián tiếp.
<Tên biến mảng>[Chỉ số]
Giáo viên cùng các nhóm chính xác lại câu hỏi và câu trả lời
Giáo viên trình chiếu các đoạn chương trình trên Pascal về khai báo

Readln(n);
Write(‘Nhap gia tri cho tung phan tu: ’);
For i:=1 to n do
Begin
Write(‘Phan tu thu ’ , i , ‘ la: ’);
Readln(Nhietdo[i]);
End;
+ Cách in mảng Nhietdo ra màn hình:
Write(‘Mang vua nhap la: ’);
For i:=1 to n do write(Nhietdo[i]:4);
+ Cách duyệt mảng một chiều:
t:=0;
For i:=1 to n do t:=t+Nhietdo[i];
PHIẾU CÂU HỎI
Lệnh nà dùng để nhập dữ liệu vào cho từng phần tử của mảng?
Lệnh nào dùng để xuất dữ liệu ra cho từng phần tử của mảng?
Nếu mảng có n phần tử thì lệnh nhập hay xuất giá trị cho từng phần tử ấy
lặp lại bao nhiêu lần?
Vòng lặp nào phù hợp cho việc nhập/xuất giá trị cho các phần tử của
mảng?
Mỗi học sinh lấy một ví dụ về nhập và xuất dữ liệu?
Giáo viên chính xác lại các câu trả lời của Học sinh như sau:
Readln(
B. Var mang1c: array[100] of char ;
C. Var mang1c: array[-1..98] of char ;
D. Var mang1c= array[0..100] of char ;
(4) cho các câu lệnh sau:
Var a: array[1..5] of integer ; i,s:integer;

S:=0;
For i:=1 to 4 do s:=s+a[i];
12


Với a[1]=1;a[2]=2;a[3]=3;a[4]=4;a[5]=5; sau khi thực hiện thì s=?
15
B. 6
C. 5
D. 10
C. VẬN DỤNG
Hoạt động 7: Lập trình giải bài toán “Tìm phần tử nhỏ nhất”.
(1) Mục tiêu: Học sinh nhận dạng và hiểu được thuật toán với việc sử
dụng kiểu mảng một chiều.
(2) Phương pháp/Kĩ thuật: Rèn tư duy phân tích, tổng hợp, so sánh tương
tự.
(3) Hình thức tổ chức hoạt động: Thảo luận nhóm + Cá nhân.
(4) Phương tiện dạy học: Sách giáo khoa, máy tính, máy chiếu, phiếu câu
hỏi, chương trình mẫu.
(5) Sản phẩm: Học sinh được giao nhiệm vụ tìm hiểu bài toán, thuật toán
rồi trả lời phiếu câu hỏi để giúp các em biết cách nhận diện và làm việc với
mảng một chiều trong giải quyết bài toán thực tế. (mức độ vận dụng thấp).
Nội dung hoạt động
Ví dụ 1: Tìm phần tử lớn nhất của dãy số nguyên.

Type

Arrint=array[1..Nmax] of integer;

Var

n,i,min,csmin:integer;
a:arrint;
Var a:array[1..250] of integer;
n,i,min,csmin:integer;
Đoạn lệnh nhập giá trị cho n số nguyên dương:
Readln(n);
For i:=1 to n do
Begin
Writeln(‘phan tu thu ‘,i,’ =’);
Readln(a[i]);
End;
Để tìm được phần tử lớn nhất ta phải duyệt hết tất cả các phần tử của dãy.
Đoạn lệnh tìm ra phần tử lớn nhất của dãy:
Max:=a[1]; csmax:=1;
For i:=2 to n do
If a[i]>max then
Begin
Max:=a[i]; Csmax:=i;
End;
Đoạn lệnh tìm ra phần tử nhỏ nhất của dãy:
Min:=a[1]; csmin:=1;
For i:=2 to n do
If a[i]>min then
Begin

Hãy viết khai báo biến cho dãy số A?
Để tráo đổi giá trị của hai biến b1, b2 cho nhau ta thực hiện thế nào?
Hãy viết câu lệnh tráo đổi giá trị cho hai phần tử A[i] và A[i+1].
Khi nào thực hiện tráo đổi giá trị của A[i] và A[i+1] cho nhau.
Dùng câu lệnh nào để duyệt các phần tử?
Hãy viết đoạn lệnh sắp xếp các phần tử của mảng A.
Hãy trình bày chương trình hoàn chỉnh.
Giáo viên chính xác lại các câu trả lời của Học sinh như sau:
Dãy A thành dãy không giảm là phần tử nhỏ hoặc bằng đứng trước, phần
tử lớn đứng sau.
Dãy A thành dãy không tăng là phần tử lớn hoặc bằng đứng trước, phần tử
nhỏ đứng sau.
Ý tưởng: Với mỗi cặp số hạng đứng liền kề trong dãy, nếu số trước nhỏ
hơn hoặc bằng số sau ta đổi chỗ chúng cho nhau. Việc đó được lặp lại cho đến
khi không có sự đổi chỗ nào xảy ra nữa.
Khai báo biến cho dãy số A: Var A:array[1..250] of integer;
Để tráo đổi giá trị của hai biến cho nhau ta mượn một biến trung gian thứ
ba: Tg:=b1; b1:=b2; b2:=tg;
Câu lệnh tráo đổi giá trị cho hai phần tử A[i] và A[i+1]:
T:=A[i]; A[i]:=A[i+1]; A[i+1]:=t;
Nếu A[i]
For i:=1 to 7 do read(Nhietdo[i]);
- Gán giá trị cho các phần tử ở phần khai báo.
Const <Danh sách tên biến mảng>:array[chỉ số đầu..chỉ số cuối] of
<Kiểu dữ liệu của phần tử>=(hằng 1, hằng 2, … ,hằng n);
[5]
Trong đó: hằng 1, hằng 2, … ,hằng n mang các giá cùng kiểu dữ liệu của
phần tử.
PHIẾU CÂU HỎI
Lấy ví dụ tương ứng cho mỗi cách gán giá trị.
Cho các lệnh sau:
Const
a:array[1..3] of integer=(2,3,5);
Var
b:array[1..3] of integer;

For i:=1 to 3 do b[i]:=i*i;
16


a:=b;
For i:=1 to 3 do write(a[i]:5);
Sẽ cho kết quả là gì?
2 3 5 B. 1 4 9
C. 1 2 3
D. Không cho kết quả
Chỉ ra chỗ sai của các câu lệnh sau:
Var
b:array[1..3] of integer;

b[1]:=3.5; b[2]:=6; b[3]:=9.0;

Type
m:array[1..5]
of
integer;
Var
b,c:array[1..10]
of
m;
PHIẾU CÂU HỎI
Lấy 3 ví dụ về khai báo biến mảng một chiều dạng mảng trong mảng.
Giáo viên cùng các nhóm chính xác lại câu trả lời.
E. HƯỚNG DẪN HỌC Ở NHÀ
- Ôn lại bài học.
17


- Lập trình giải bài toán: Cho dãy A gồm n số nguyên. Tính và in ra màn
hình tổng các phần tử của dãy đó.
- Làm bài tập 5,6,7 trang 79 SGK 11 – NXB GD.
- Đọc bài tập và thực hành 3 - SGK 11 – NXB GD.
2.4. Hiệu quả của sáng kiến kinh nghiệm đối với hoạt động giáo dục,
với bản thân, đồng nghiệp và nhà trường.
- Học sinh ham thích môn học hơn.
- Tạo được hứng thú trong lập trình của các em
- Học sinh biết cách chủ động tìm tòi trong lĩnh hội tri thức.
- Tạo phong trào học tập mới tích cực, chủ động và sáng tạo.
- Giúp cho bản thân tôi nâng cao khả năng ứng dụng công nghệ thông tin
trong giảng dạy, khả năng nghiên cứu khoa học, tìm tòi và sáng tạo.
- Giúp đồng nghiệp có thêm kinh nghiệm được rút ra từ hạn chế của sáng
kiến kinh nghiệm cho một phương pháp dạy học mới.

1
11A4
37
12
15
10
2
11A5
44
14
19
11

Yếu

Kém

1
2

0
0

Yếu

Kém

0
0


nghiệm của mình viết không sao chép
nội dung của người khác.
Hoằng Hóa, tháng 5 năm 2018
Người viết

Nguyễn Thị Hường

19


Tài liệu tham khảo
[1] Tài liệu tập huấn “Phương pháp và kĩ thuật tổ chức hoạt động học theo
nhóm và hướng dẫn học sinh tự học – môn Tin học” của Bộ giáo dục và đào tạo
[2] Sách giáo khoa Tin học 11.
[3]. Sách giáo viên Tin học 11.
[4] Ngôn ngữ lập trình Pascal của Nguyễn Thanh Tiên – Nguyễn Hải Lộc –
ĐHSP Huế.
[5] Một số tài liệu trên các trang mạng…

20





Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status