Khi dạy theo phương pháp này việc học sinh đã hiểu thuật toán thì việcchuyển đổi sang Ngôn ngữ C++ để thi học sinh giỏi tỉnh hay sau này sách giáokhoa diễn tả theo ngôn ngữ Python là dễ
Trang 1MỤC LỤC
1 Mở đầu……….…2
1.1 Lí do chọn đề tài……… 2
1.2 Mục đích nghiên cứu……… …… 3
1.3 Đối tượng nghiên cứu………3
1.4 Phương pháp nghiên cứu……… ….4
1.5 Những điểm mới của SKKN……….4
2 Nội dung sáng kiến kinh nghiệm……….….4
2.1 Cơ sở lí luận của sáng kiến kinh nghiệm……… …4
2.2 Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm……….…… …6
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 đề……… …….6
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……….……….…24
3 Kết luận, kiến nghị……….… 24
3.1 Kết luận……….24
3.2 Kiến nghị……… 25
Tài liệu tham khảo………26
Trang 21 Mở đầu 1.1 Lí do chọn đề tài.
Trong quá trình giảng dạy môn Tin học cho học sinh Tin học lớp 11- lậptrình, là một phần nội dung có thể nói là khó nhất trong chương trình tin học THPT.Nhất là trường THPT Thạch Thành 3 là một trường miền núi, học sinh dân tộc thiểu
số và vùng 135 chiếm trên 80% tổng số học sinh nhà trường Đây cũng là hạn chếlớn của các em trong việc tiếp cận nội dung kiến thức khó như là việc lập trình trênngôn ngữ lập trình Pascal Thực tế khi giảng dạy cho các em về các câu lệnh tôithấy các em còn gặp nhiều khó khăn trong việc xác định các câu lệnh (cú pháp câulệnh, hoạt động của câu lệnh) cần dùng để làm bài tập Khi viết câu lệnh thể hiệnphép toán còn nhầm lẫn giữa viết câu lệnh và viết biểu thức bình thường
Trình tự trình bày nội dung kiến thức trong sách giáo khoa từ câu lệnh gánđến cấu trúc rẽ nhánh tiếp theo là vòng lặp… Kiến thức có sự liền mạnh từ dễ đếnkhó, từ thực tế rồi xây dựng câu lệnh Sách giáo khoa đưa ra nhiều ví dụ thực tiễnnhưng chưa có sự gắn kết thực sự từ câu lệnh dễ đến câu lệnh khó, từ bài trước rồiđến bài sau, ưu điểm của cách đưa ra ví dụ như vậy tạo điều kiện phát triển tư duyhọc sinh nhưng chưa phù hợp với học sinh như một trường miền núi như trườngtôi
Khi dạy theo phương pháp này việc học sinh đã hiểu thuật toán thì việcchuyển đổi sang Ngôn ngữ C++ để thi học sinh giỏi tỉnh hay sau này sách giáokhoa diễn tả theo ngôn ngữ Python là dễ dàng Trong bài viết này tôi đưa ra một số
ví dụ xuyên suốt chương trình lớp 11 với mục đích học cú pháp câu lệnh thay vìhọc sinh phải học cả cú pháp câu lệnh cả thuật toán của ví dụ mới Còn các ví dụkhác tôi khuyến khích học sinh tự đọc, tự học ở nhà
Ngoài ra tôi dạy theo hướng nghiên cứu bài học có sử dụng đồ dùng dạy học
do học sinh tự làm nhằm giúp các em nắm vững câu lệnh qua đó giúp các em yêuthích và hứng thú học tập môn Tin học hơn Trong quá trình giảng dạy tin học ởkhối lớp 11 tôi đã đúc rút ra kinh nghiệm dưới đây tôi xin trình bày về sáng kiến: “DẠY LẬP TRÌNH THEO HƯỚNG PHÁT TRIỂN, TỪ MỘT THUẬT TOÁN XÂY DỰNG CÁC CÚ
PHÁP CÂU LỆNH ” sách giáo khoa tin học 11 Rất mong được sự tham khảo góp ý
của các giáo viên và học sinh về sáng kiến kinh nghiệm này để giúp tôi có nhữngbài giảng hay giúp học sinh học tốt môn Tin học hơn
Trang 31.2 Mục đích nghiên cứu
Dạy lập trình phát triển từ một ví dụ (thuật toán) giúp học sinh tiếp cận cúpháp câu lệnh một cách dễ dàng vì chỉ có một thuật toán ( bài toán) đã được hìnhthành và biết từ trước đó Khi học sinh tiếp cận được cú pháp câu lệnh việc còn lạichỉ là dạy cho học sinh biết hoạt động của câu lệnh đó như thế nào mà thôi
Khi dạy theo phương pháp này việc học sinh đã hiểu thuật toán thì việcchuyển đổi sang Ngôn ngữ C++ để thi học sinh giỏi tỉnh hay sau này sách giáokhoa diễn tả theo ngôn ngữ Python là dễ dàng
Dạy theo hướng nghiên cứu bài học có sử dụng đồ dùng dạy học do học sinh
tự làm: học sinh được hoạt động cá nhân, hoạt động nhóm, thảo luận nhóm để cóđược sản phẩm của chính mình từ những đồ dùng do chính tay tự làm tạo hứng thúnhất định trong giờ học Học sinh tiếp nhận kiến thức một cách chủ động, loại bỏđược tính ỉ lại, trông chờ kiến thức truyền thụ thụ động từ giáo viên
1.3 Đối tượng nghiên cứu
Xây dựng các cú pháp câu lệnh phát triển từ một ví dụ duy nhất học sinh nhớ
cú pháp câu lệnh, hoạt động câu lệnh và không quan tâm đến thuật toán là tăng khảnăng tiếp cận kiến thức lập trình của học sinh, học sinh thấy học dễ hơn thích thúvới lập trình Dạy như vậy phù hợp với yêu cầu của chuẩn kiến thức tin học lớp 11
là học sinh viết được chương trình pascal cơ bản
Khi dạy theo phương pháp này việc học sinh đã hiểu thuật toán thì việcchuyển đổi sang Ngôn ngữ C++ để thi học sinh giỏi tỉnh hay sau này sách giáokhoa diễn tả theo ngôn ngữ Python là dễ dàng
Đa số học sinh chấp nhận hay thừa nhận các thuật toán sách giáo khoa đưa
ra Giáo viên yêu cầu học sinh học thuộc, sau đó kiểm tra yêu cầu học sinh viết lạithuật toán, cách học này là học thuộc lòng Khi viết chương trình chỉ sử dụng mộtthuật toán học sinh có thể hiểu sâu sắc hơn thuật toán đó Các thuật toán khác giáoviên khuyến khích học sinh học ở nhà đối với những học sinh có khả năng
Dạy lập trình theo hướng nghiên cứu bài học, ngoài ra còn sử dụng đồ dùngdạy học cộng thêm máy chiếu giúp rút ngắn thời gian viết bảng không cần thiết
Trang 41.4 Phương pháp nghiên cứu.
Viết sáng kiến kinh nghiệm thường xuyên liên tục cũng là nhiệm vụ chính trịcủa mỗi giáo viên, nhưng cần phải lựa chọn phương pháp nghiên cứu đúng đắn vàphù hợp với nhà trường trung học phổ thông Sáng kiến kinh nghiệm đang trình bàycủa tôi dựa theo các luận cứ khoa học hướng đối tượng, cụ thể: thuyết trình,quan sát, điều tra khảo sát thực tế, phân tích kết quả thực nghiệm sư phạm, v.v…phù hợp với bài học và môn học thuộc lĩnh vực Tin học
Nêu vấn đề và giải quyết vấn đề đi từ thực tế hiện thực khánh quan → cụ thểhóa → tổng quát hóa, trừu tượng hoá
1.5 Những điểm mới của SKKN.
Trong sách giáo khoa Tin học 11 ứng với một cú pháp câu lệnh mới thì cómột bài toán mới đi cùng phù hợp nhất với cú pháp đó, một điều chắc chắn rằnghọc sinh phải hiểu thuật toán giải bài toán này trước sau đó còn phải học cú pháp
câu lệnh Trong sáng kiến kinh nghiệm của tôi tôi sử dụng một bài toán " Giải tam
giác" để dạy tất cả các cú pháp câu lệnh, kiểu dữ liệu, chương trình con
Khi dạy theo phương pháp này việc học sinh đã hiểu thuật toán thì việcchuyển đổi sang Ngôn ngữ C++ để thi học sinh giỏi tỉnh hay sau này sách giáokhoa diễn tả theo ngôn ngữ Python là dễ dàng
Trước đây dạy học, viết sáng kiến kinh nghiệm theo hướng nghiên cứu bàihọc khi thảo luận nhóm thường chia thành 4 nhóm mỗi nhóm 8 học sinh trở lên dẫnđến việc thảo luận không hiệu quả vẫn có học sinh ỉ lại vào trưởng nhóm và nhữnghọc sinh tích cực Do đó trường tôi đã thay đổi cho phù hợp bằng cách mỗi nhómchỉ 2 học sinh trên cùng 1 bàn
Đồ dùng học tập, phiếu học tập tôi giao cho tất cả các học sinh làm từ đó họcsinh vừa lĩnh hội được những kiến thức mình đã chuẩn bị do tay mình tự làm
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.
2.1.1 Một số khái niệm
a Bài toán
Là một công việc nào đó mà ta muốn máy tính thực hiện [1]
VD: Tính chu vi, diện tích tam giác khi biết độ dài ba cạnh a,b,c
Trang 5b Thuật toán
Thuật toán để giải một bài toán là dãy hữu hạn các thao tác được sắp xếptheo trình tự xác định sao cho sau khi thực hiện dãy thao tác đó từ Input của bàitoán ta được Output cần tìm [1]
c Khái niệm lập trình:
Lập trình (programming): Là sử dụng cấu trúc dữ liệu và các câu lệnh củangôn ngữ lập trình cụ thể nào đó để mô tả dữ liệu và diễn đạt các thao tác của thuậttoán.[1]
d Khái niệm ngôn ngữ lập trình:
Ngôn ngữ lập trình ( programming language): Là một hệ thống các kí hiệu tuân theo các quy ước về ngữ pháp và ngữ nghĩa, dùng để xây dựng các chương trình cho máy tính [1]
Cú pháp (syntax): là bộ quy tắc để viết chương trình Dựa vào chúng, người lậptrình và CT dịch biết được tổ hợp nào của các ký tự trong bảng chữ cái là hợp lệ và
tổ hợp nào là không hợp lệ Nhờ đó có thể mô tả chính xác thuật toán để máy thựchiện [1]
Ngữ nghĩa (sematics): xác định ý nghĩa thao tác cần phải thực hiện, ứng với tổhợp ký tự dựa vào ngữ cảnh của nó [1]
Chương trình (program): Là một tập hợp các mô tả, các phát biểu, nằm
trong một hệ thống quy ước về ý nghĩa và thứ tự thực hiện, nhằm điều khiển
máy tính làm việc
2.1.2 Các loại câu lệnh trong ngôn ngữ lập trình pascal.
a Phép toán, câu lệnh gán
Cú pháp: <Tên biến>:= <biểu thức>;[1]
Chức năng của câu lênh gán là: đặt cho biến có tên ở vế trái dấu “:=” giá trị mớibằng giá trị của biểu thức ở vế phải [1]
b Nhập dữ liệu vào từ bàn phím
Cú pháp: Readln(<danh sách biến vào>);[1]
c Đưa dữ liệu ra màn hình
Cú pháp write(<danh sách kết quả ra>);
hoặc: writeln(<danh sách kết quả ra>); [1]
Trang 62.2 Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm.
Học sinh đa số có lực học trung bình, số học sinh khá giỏi rất ít chỉ đếm trênđầu ngón tay, khi dạy câu lệnh mới cộng tuật toán mới học sinh như chui đầu vàobụi dậm Khi thực hiện các câu lệnh trên một ví dụ học sinh chỉ cần học câu lệnh.Rất phù hợp với khả năng tiếp thu của học sinh
Khi dạy theo phương pháp này việc học sinh đã hiểu thuật toán thì việcchuyển đổi sang Ngôn ngữ C++ để thi học sinh giỏi tỉnh hay sau này sách giáokhoa diễn tả theo ngôn ngữ Python là dễ dàng
Trước đây dạy học theo phương pháp thông thường hay hướng nghiên cứubài học khi thảo luận nhóm thường chia thành 4 nhóm mỗi nhóm 8 học sinh trở lêndẫn đến việc thảo luận không hiệu quả vẫn có học sinh ỉ lại vào trưởng nhóm vànhững học sinh tích cực
2.3 Các sáng kiến kinh nghiệm hoặc các giải pháp đã sử dụng để
Trang 7Bước 3: Giáo viên gọi hai nhóm học sinh trình bày sản phẩm trên bảng, gọi các nhóm khác nhận xét.
Bước 4: Giáo viên nhận xét cho điểm -> nhận xét chốt kiến thức
p
Nhóm 2:
CV=a+b+cS= p(p a)(p b)(p c) với
2
c b a
Bước 2: Học sinh thảo luận cá nhân, thảo luận nhóm
Bước 3: Giáo viên gọi hai nhóm học sinh trình bày sản phẩm trên bảng, gọi các nhóm khác nhận xét
Bước 4: Giáo viên nhận xét cho điểm -> nhận xét chốt kiến thức
p
Nhóm 2:
CV=a+b+cS= p(p a)(p b)(p c) với
2
c b a
p Nhóm 3:
Trang 8Câu hỏi 3: Hãy sử dụng kiến thức trong bài 6 : Vị trí phép toán, biểu thức, câu lệnh gán, tại sao sau một biểu thức lại có dấu ";" trong trình bày của nhóm 3 và nhóm 4.Nhóm 3:
+, -,*, /, div, mod
Các phép toán số học với
số thực
+ (cộng), - (trừ),(nhân), : (chia)
+,-, *,/
Các phép toán quan hệ < (nhỏ hơn), ≤ (nhỏ hơn hoặc
bằng), ≥ (lớn hơn hoặcbằng), = (bằng), (khác)
- Chỉ dùng cặp ngoặc tròn để xác định trình tự thực hiện phép toán trong trường hợp cần thiết
- Viết lần lượt từ trái qua phải
- Không được bỏ qua dấu nhân (*) trong tích
Các phép toán được thực hiện theo thứ tự:
- Thực hiện các phép toán trong ngoặc trước;
- Trong dãy các phép toán không chứa ngoặc thì thực hiện từ trái sang phải,theo thứ tự các phép toán nhân (*), chia nguyên (div), lấy phần dư (mod) thực hiệntrước và các phép toán cộng (+), trừ (-) thực hiện sau
Phép chia Phép nhân Lệnh gán
Hàm căn bậc hai
Trang 9Ví dụ: Nhóm 4 sản phẩm sai nhưng khi các nhóm khác nhận xét không pháthiện ra vì học sinh không nhận ra được
2
c b a
p và a+b+c/2 khác nhau thế nàotrong tin học hay nói cách khác phải biết cách dùng "(" và ")"
Trang 10Cos Cosx Cos(x) Thực Thực
Thực hiện phép toán quan hệ
Kết quả của biểu thức quan hệ là giá trị logic: true (đúng) hoặc false (sai)
Ví dụ: nếu a=1, b=2, c=3 thì a+b <= c có giá trị true
thì a+b > c có giá trị false
Biểu thức logic [1]
Biểu thức lôgic đơn giản là biến lôgic hoặc lôgic
Biểu thức lôgic là các biểu thức logic đơn giản, các biểu thức quan hệ liên kết với nhau bởi phép toán logic Giá trị biểu thức logic là true hoặc false Các biểu thức quan hệ thường đặt trong cặp ngoặc "(" và ")"
Dấu phép toán not được viết trước biểu thức cần phủ định.
Các phép toán and và or dùng để kết hợp nhiều biểu thức lôgic hoặc quan hệ,
thành một biểu thức thường được dùng để diễn tả các điều kiện phức tạp
Ta có bảng giá trị phép toán logic:
Trang 11<tên biến>:= <biểu thức>;
Trong trường hợp đơn giản, tên biến là tên của biến đơn
Lệnh gán có chức năng gán giá trị cho một biến, nghĩa là thay giá trị cũ trong
ô nhớ (tương ứng với biến) bởi giá trị mới Giá trị mới là giá trị của một biểu thức
Biểu thức này đã có giá trị xác định thuộc phạm vi của biến Kiểu giá trị củabiểu thức phải phù hợp với kiểu của biến Một biến chỉ được coi là đã xác định giátrị khi đã nhận được giá trị từ ngoài (đọc từ bàn phím hoặc từ tệp, ) hoặc trực tiếpqua lệnh gán trong chương trình
Kiểu của biến phải phù hợp với kiểu dữ liệu của giá trị biểụ thức bên phải
Hoạt động 2:
Câu hỏi 1:
a Để tính được chu vi (CV), diện tích (S) ở công thức C:=a+b+c; p:=C/2;
S:=sqrt(p*(p-a)*(p-b)*(p-c)); thì cần giá trị của những biến nào ?
b Tương tự như giải phương trình bậc 2 trên máy tính khi giải phương trình bậc 2
ta cần thực hiện như thế nào ? Trước khi có kết quả máy tính có phải thực hiện việctính toán không ? Máy tính cho ta thông tin gì ? thông tin đó hiển thị ở đâu ?
c Vận dụng kết quả câu b để tính được chu vi (CV), diện tích (S) ở câu a
Thực hiện:
Trang 12Bước 1: Yêu cầu học sinh thảo luận cá nhân ( 8 phút ) sau đó thảo luận nhóm 2 học sinh / 1 bàn ( 6 phút ).
Bước 2: Học sinh thảo luận cá nhân, thảo luận nhóm
Bước 3: Giáo viên gọi hai nhóm học sinh trình bày sản phẩm trên bảng, gọi các nhóm khác nhận xét
Bước 4: Giáo viên nhận xét cho điểm -> nhận xét chốt kiến thức
+ Máy tính tính chu vi (CV), diện tích (DT)
+ Hiển thị chu vi, diện tích ra màn hình
Giáo viên trình chiếu thủ tục chuẩn vào/ ra đơn giản:
Nhập dữ liệu vào từ bàn phím[1]
Nhập dữ liệu vào từ bàn phím được thực hiện bằng thủ tục chuẩn:
Read(<danh sách biến vào>);
Việc nhập giá trị của biến từ bàn phím được kết thúc bởi việc nhấn phím
Enter nên không phân biệt read và readln Do đó khi nhập từ bàn phím nên dùng
readln.
Đưa dữ liệu ra màn hình[1]
Để đưa dữ liệu ra màn hình Pascal cung cấp thủ tục chuẩn:
write(<danh sách kết quả ra>);
Trang 13writeln(<danh sách kết quả ra>);
Trong đó: <danh sách kết quả ra> có thể là tên biến đơn, biểu thức hoặc hằng
Chú ý: Với thủ tục write, sau khi đưa các kết quả ra màn hình, con trỏ không
chuyển xuống dòng tiếp theo Với thủ tục writeln, sau khi đưa thông tin ra màn
hình con trỏ chuyển xuống đầu dòng tiếp theo.
Câu hỏi 2: Dựa vào kiến thức phần trình chiếu và kiến thức đã học thực hiện công việc câu hỏi 1.c
+ Nhập độ dài 3 cạch a, b, c từ bàn phím
+ Máy tính tính chu vi, diện tích
+ Hiển thị chu vi, diện tích ra màn hình
Thực hiện:
Bước 1: Yêu cầu học sinh thảo luận cá nhân ( 8 phút ) sau đó thảo luận nhóm 2 học sinh / 1 bàn ( 5 phút )
Bước 2: Học sinh thảo luận cá nhân, thảo luận nhóm
Bước 3: Giáo viên gọi hai nhóm học sinh trình bày sản phẩm trên bảng, gọi các nhóm khác nhận xét
Bước 4: Giáo viên nhận xét cho điểm -> nhận xét chốt kiến thức
S:=sqrt(((a+b+c)/2)*((a+b+c)/2-a)* ((a+b+c)/2-b)*((a+b+c)/2-c)));
Write(CV) ;Write(S) ;
Trang 14Giáo viên trình chiếu cấu trúc chương trình, khai báo biến:
Khai báo tên chương trình: có thể có hoặc không
Với Pascal phần khai báo tên chương trình như sau:
Program <tên chương trình>;
Khai báo thư viện: muốn sử dụng thư viện nào thì ta cần phải khai báothư viện đó trước: uses < tên thư viện >;
Khai báo hằng: const < hằng > = < giá trị >;
Khai báo biến: Var < danh sách biến > : <Kiểu dữ liệu >;
Khai báo biến[1]
Trong Pascal, khai báo biến có dạng:
Var <danh sách biến>:<kiểu dữ liệu>;
Trong đó:
- <danh sách biến> là một hoặc nhiều tên biến, các tên biến được viết cách nhau
bởi dấu phảy
- <kiểu dữ liệu> thường là một trong các kiểu dữ liệu chuẩn hoặc kiểu dữ liệu do
người lập trình định nghĩa
- Sau từ khoá var có thể khai báo nhiều danh sách biến khác nhau, tức là cấu trúc:
Var <danh sách biến>:<kiểu dữ liệu>;
<danh sách biến>:<kiểu dữ liệu>;
Một số kiểu dữ liệu chuẩn[1]
a Kiểu nguyên
Các kiểu nguyên được lưu trữ và kết quả tính toán là số đúng, nhưng có
hạn chế về miền giá trị Tập số nguyên là vô hạn và có thứ tự, đếm được nhưngtrong máy tính thì kiểu nguyên là hữu hạn, có thứ tự
Kiểu Bộ nhớ lưu trữ một giá trị Phạm vi giá trị