Vì vậy tôi đã trăn trở rất nhiều “Làm thế nào để học sinh có thể giải quyết một bài toán đơn giản bằng ngôn ngữ lập trình pascal” và tôi đã quyết định vận dụng những kinh nghiệm của mình
Trang 1I MỞ ĐẦU
1 Lý do chọn đề tài
Ngôn ngữ lập trình pasal là nội dung khó trong chương trình tin học THPT
hiện nay Hầu hết học sinh lớp 11 khi học phần tin học pascal đều cảm thấy “Khó”,
vì nó liên quan đến rất nhiều môn học như: Toán, Lý, Anh Môn học này yêu cầu cao về tư duy, logic Phần kiến thức quan trọng của tin học 10 có liên quan đến phần học này đó là “Bài toán và thuật toán” thì đa phần học sinh không còn nhớ kiến thức đó Vì vậy khi học đến phần lập trình pascas học sinh cảm thấy khó và không hứng thú học ngay cả những học sinh học tốt các môn học tự nhiên
Trong thực tế dạy học tôi nhận thấy học sinh gặp nhiều khó khăn trong khi học chương trình học pascal này Những kiến thức trong phần tin học pascal là nền tảng cho học sinh sau này khi đi học các trường đại học như: Bách khoa, công nghệ
thông tin, kiến trúc Vì vậy tôi đã trăn trở rất nhiều “Làm thế nào để học sinh có thể giải quyết một bài toán đơn giản bằng ngôn ngữ lập trình pascal” và tôi đã quyết định vận dụng những kinh nghiệm của mình trong dạy học phần “Câu lệnh
rẽ nhánh” Nó là một phần học dễ tạo hứng thú cho học sinh nhất vì học sinh có
thể lấy những ví dụ từ thực tế cuộc sống hàng ngày, trong học tập
Hiện nay có nhiều học sinh rất muốn khám phá môn học mới này nhưng vì không biết phải bắt đầu từ đâu Để có thể giúp học sinh khắc phục những hạn chế
trong quá trình học phần tin học lập trình pascal Vì vậy tôi đã chọn đề tài: “Một số kinh nghiệm tạo hứng thú và nâng cao hiệu quả học tập cho học sinh khi học phần câu lệnh rẽ nhánh tại trường THPT Lam Kinh”.
2 Mục đích nghiên cứu
Đề tài của tôi nhằm mục đích đó là: Thông qua việc hướng dẫn cho học sinh vận dụng phần câu lệnh rẽ nhánh trong giải quyết một số bài toán đơn giản, để từ
đó tạo cho học sinh hứng thú học lập trình pascal Học sinh có thể tự giải quyết các bài toán thực tế, những bài toán từ dễ đến khó
Hiểu thế nào là rẽ nhánh, các loại rec nhánh Vận dụng câu lệnh rẽ nhánh vào giải quyết một số bài toán đơn giản
Các kiến thức trên góp phần phát triển khả năng tư duy khi giải quyết các vấn đề trong khoa học cũng như trong cuộc sống
Luyện tập cách xây dựng ý tưởng, xác định Input và Output của bài toán Biểu diễn thuật toán bằng hai cách: liệt kê hoặc sơ đồ khối Kĩ năng Biết cách xác định Input và Output Có thể vận dụng ngôn ngữ lập trình pascal để giải bài toán trên máy tính
3 Đối tượng nghiên cứu
Phần ngôn ngữ lập trình pascal là một phần học có thể nói là khó Các kiến thức trong phần học này góp phần phát triển khả năng tư duy khi giải quyết các vấn đề trong khoa học cũng như trong cuộc sống, hình thành một số kĩ năng trong việc giải quyết bài toán bằng ngôn ngữ lập trình; cách dùng biến, khởi tạo các giá trị biến…
Vì vậy tôi thấy rằng cần giúp học sinh tạo cho mình một số kĩ năng học tin học nhất
là tin học lập trình ở chương trình tin 11 mà học sinh không có cảm giác sợ học hay
Trang 2chán nãn với sự khô khan của nó và tôi đã bước đầu sử dụng kết hợp một số phương pháp trong quá trình dạy phần câu lệnh rẽ nhánh tin học 11 đễ cho học sinh
không còn những suy nghĩ đó trong giờ học tin học Vì vậy đề tài của tôi là: “Một
số kinh nghiệm tạo hứng thú và nâng cao hiệu quả học tập cho học sinh khi học phần câu lệnh rẽ nhánh tại trường THPT Lam Kinh”.
4 Phương pháp nghiên cứu
Tìm hiểu đối tượng học sinh của từng lớp, thuyết trình, hướng dẫn học sinh theo hướng học sinh chủ động Có thể kết hợp cả các biện pháp khuyến khích như cho điểm cao để học sinh hứng thú và hăng say phát biểu bài hơn Cho những ví dụ thực tế phù hợp với các nhóm đối tượng học sinh (Giỏi, khá, trung bình, yếu), ứng dụng phương pháp dạy học theo NCBH trong các tiết dạy Có thể nói đây là một nội dung khó vì vậy cần kết hợp nhiều biện pháp để hướng dẫn cho học sinh giải quyết các thuật toán từ dễ đến khó, không tạo cho học sinh áp lực dẫn đến chán nãn trong quá trình học phần này
Tôi đã sử dung, lồng ghép một số phương pháp dạy học với nhau: Phương pháp nghiên cứu xây dựng cơ sở lý thuyết, phương pháp điều tra khảo sát thực tế, thu thập thông tin, dạy học theo hướng tích hợp các môn Toán, Lý, Tin, Anh; dạy học theo nhóm
II NỘI DUNG CỦA SÁNG KIẾN KINH NGHIỆM
1 Cơ sở lý luận
Hầu hết học sinh khối 11 khi học phần tin học pascal đều cảm thấy “khó”, vì
nó liên quan đến rất nhiều môn học như: Toán, lý, anh Môn học này yêu cầu cao về
tư duy, logic, kiến thức quan trọng của tin học 10 có liên quan đến phần học này đó
là “Bài toán và thuật toán” thì đa phần học sinh không còn nhớ kiến thức đó Vì vậy khi học đến phần lập trình pascas học sinh cảm thấy khó và không hứng thú học ngay cả những học sinh học tốt các môn học tự nhiên
Những kiến thức trong phần tin học pascal là nền tảng cho học sinh sau này khi đi học các trường đại học như: Bách khoa, công nghệ thông tin, kiến trúc Vì
vậy tôi đã trăn trở rất nhiều “Làm thế nào để học sinh hứng thú học tập phần tin học pascas” và tôi đã quyết định vận dụng những kinh nghiệm của mình trong dạy học phần cấu trúc rẽ nhánh Nó là một phần học dễ tạo hứng thú cho học sinh nhất
vì học sinh có thể lấy những ví dụ từ thực tế cuộc sống hàng ngày, trong học tập Tin học 11 nó có liên quan kiến thức đến cả toán, lý, tiếng anh và yêu cầu cao của môn học về tư duy, logic Vì thế để các em có hứng thú học phần tin học lập trình là cả một vấn đề Tôi đã áp dụng một số kinh nghiệm vào quá trình giảng dạy tại lớp, và đầu tiên đó là phần câu lệnh rẽ nhánh vì phần này có thể dễ dàng khơi gợi lòng ham thích học lập trình của học sinh, rèn luyện một số phẩm chất cần thiết của người lập trình như: cẩn thận, chu đáo, sáng tạo, không thỏa mãn với kết quả đạt được…Điều này thể hiện trong suốt quá trình từ khi phân tích bài toán cho đến khi lựa chọn dữ liệu, viết chương trình, dịch và sửa lỗi…Cải tiến tích ứng của các
bộ dữ liệu và trạng thái của bài toán khác nhau
Trang 3Học sinh có thể hiểu được cấu trúc rẽ nhánh là gì? “Là lựa chọn công việc phù hợp với điều kiện” [3] Nhu cầu của cấu trúc rẽ nhánh trong biều diễn thuật toán, sử
dụng cấu trúc rẽ nhánh trong mô tả thuật toán của một bài toán đơn giản, viết được câu lệnh rẽ nhánh dạng thiếu và dạng đủ, áp dụng để thể hiện được thuật toán của một bài toán đơn giản
Theo tôi muốn cho giờ học đạt kết quả tốt, học sinh nắm bài tốt và có thể vận dụng nó trong quá trình lập trình giải bài toán trên máy tính bằng chương trình PASCAL thì cần phải có tiết dạy tốt Vậy theo bạn thế nào là tiết dạy tốt? Theo tôi tiết dạy tốt là học sinh phải hăng hái học tập, hăng say phát biểu bài, giải quyết tốt những vấn đề mà giáo viên đặt ra Để làm được điều này tôi đã áp dụng một số biện pháp trong tiết dạy nội dung bài cấu trúc rẽ nhánh tại các lớp như sau:
Yêu cầu học sinh nắm được ý nghĩa của cấu trúc rẽ nhánh: Cấu trúc rẽ nhánh
là một điều khiển chọn thực hiện hay không thực hiện công việc phù hợp một điều kiện đang xảy ra [3]
Hai dạng của câu lệnh rẽ nhánh: dạng thiếu và dạng đủ
Câu lệnh ghép là gì? Là dãy lệnh cần thực hiện sau “then” hoặc “else”.[3]
Có thể vận dụng câu lệnh ghép trong giải bài toán
Áp dụng thực hiện làm một số ví dụ thực tế do giáo viên giao và ví dụ trong SGK
2 Thực trạng vấn đề trước khi áp dụng sáng kiến kinh nghiệm
Trước khi tôi áp dụng một số biện pháp theo kinh nghiệm dạy học của mình tôi thấy học sinh không hứng thú với phần tin học lập trình 11 Vì vậy tôi đã mạnh dạn áp dụng một số kinh nghiệm dạy học bắt đầu từ phần “cấu trúc rẽ nhánh” cho học sinh để nâng cao hiệu quả học tập và tôi nhận thấy kết quả học tập tại các lớp tốt hơn nhiều, học sinh ham thích học tin học lập trình hơn
Nội dung học phần tin học 11 là phần học khá khó, vì vậy với nội dung trong SGK học sinh rất khó hiểu, từ đó sẽ dẫn đến tình trạng ngại học Kinh nghiệm của tôi sau nhiều năm dạy tin học nhất là phần lập trình, dạy phần này cần tạo cho học sinh hứng thú học cần thiết Trong SGK tin 11 trong phần cấu trúc rẽ nhánh cho học sinh học một số ví dụ ban đầu không phù hợp với học sinh Vì vậy tôi đưa ra một số ví dụ có yêu cầu thấp hơn, dễ dàng giải quyết với học sinh hơn và kết hợp
cả các biện pháp khuyến khích như cho điểm cao để học sinh hứng thú và hăng say phát biểu bài hơn Từ đó có thể giải quyết các ví dụ trong SGK
3 Các kinh nghiệm đã áp dụng để giải quyết vấn đề
Theo tôi muốn cho giờ học đạt kết quả tốt, học sinh nắm bài tốt và có thể vận dụng nó trong quá trình lập trình giải bài toán trên máy tính bằng chương trình PASCAL thì cần phải có tiết dạy tốt Vậy theo bạn thế nào là tiết dạy tốt? Theo tôi tiết dạy tốt là học sinh phải hăng hái học tập, hăng say phát biểu bài, giải quyết tốt những vấn đề mà giáo viên đặt ra Để làm được điều này tôi đã áp dụng một số biện pháp trong tiết dạy nội dung bài câu lệnh rẽ nhánh tại các lớp như sau:
Trang 4- Tôi đã thực hiện lồng ghép các phương pháp dạy học vào với nhau trong các tiết dạy thuật toán
- Cho ví dụ phù hợp với nhóm đối tượng học sinh không nhất thiết phải áp dụng
ví dụ trong SGK
- Ứng dụng phương pháp dạy học theo NCBH…
3.1 Phần lý thuyết
Yêu cầu học sinh học nội dung chính của bài và yêu cầu học sinh cần nắm được:
Hiểu thế nào là
rẽ nhánh
Thể hiện sự lựa chọn công việc cho phù hợp với điều kiện
Nếu ĐTB≥8.0 thì xếp loại học lực loại GIỎI
Câu lệnh rẽ
nhánh dạng
thiếu
Nếu điều kiện đúng thì câu lệnh
sẽ được thực hiện, ngược lại câu lệnh sẽ bị bỏ qua
IF <ĐIỀU KIỆN > THEN
<CÂU LỆNH>;
Câu lệnh rẽ
nhánh dạng đủ
Nếu điều kiện đúng thì câu lệnh 1
sẽ được thực hiện, ngược lại câu lệnh 2 sẽ được thực hiện
IF <ĐIỀU KIỆN > THEN
<CÂU LỆNH 1> ELSE
<CÂU LỆNH 2>;
Câu lệnh ghép Là nhiều câu lệnh để mô tả thao
tác (câu lệnh hợp thành)
… BEGIN
<DÃY LỆNH>
END;
… Chiếu cho học sinh xem sơ đồ hoạt động của câu lệnh rẽ nhánh dạng đủ và dạng thiếu để học sinh hiểu được hoạt động và nhớ lại hình khối trong câu lệnh điều kiện
Câu lệnh rẽ nhánh dạng thiếu:
Câu lệnh rẽ nhánh dạng đủ
Điều kiện
Điều kiện
Câu lệnh
Đ
S
Trang 5Yều cầu học sinh làm một số ví dụ, thực hiện các bước:
1 Xác định bài toán
2 Nêu ý tưởng
3 Xây dựng thuật toán (Sơ đồ khối hoặc liệt kê)
Theo phân phối chương trình bài câu lệnh rẽ nhánh chỉ được dạy lý thuyết trong
1 tiết Vì vậy tôi phân học sinh ra làm 12 nhóm theo bàn học và yêu cầu hai nhóm làm một bài toán có nội dung giống nhau Tôi đã chuẩn bị cho từng nhóm một nội dung in ra giấy và phát cho từng nhóm, bên cạnh đó tôi chiếu nội dung của 6 bài toán đó trên màn hình để các nhóm có thể biết được nội dung bài toán của nhau, nếu nhóm nào làm xong bài của mình có thể làm các bài của nhóm khác, giáo viên khuyến khích cho điểm các nhóm làm tốt
Bài toán 1:
Viết chương trình nhập vào 2 số a, b từ bàn phím Cho xuất hiện ra màn hình
số có giá trị lớn hơn Nếu 2 số có giá trị bằng nhau thì cho xuất hiện dòng thông báo “khong co so lon hon”.[4]
Bài toán 2
Viết chương trình nhập vào 2 số a, b từ bàn phím Cho xuất hiện ra màn hình
số mang giá trị âm Nếu 2 số có giá trị dương thì cho xuất hiện dòng thông báo
“khong co so am”.[4]
Bài toán 3
Viết chương trình nhập vào 2 số a, b từ bàn phím Tính tông của hai số đó nếu
số a>b, còn nếu a≤b thì xuất hiện dòng thông báo yêu cầu nhập lại a và b
Bài toán 4
Viết chương trình nhập vào a từ bàn phím Kiểm tra xem số a có chia hết cho
3 không? Nếu không chia hết cho ra dòng thông báo “a khong chia het cho 3”.[1]
Bài toán 5
Viết chương trình nhập vào 3 số a, b, c từ bàn phím Kiểm tra xem 3 số vừa nhập vào có phải là bộ số pi-ta-go không?[1]
Bài toán 6
Viết chương trình tìm nghiệm của phương trình bậc hai ax2+bx+c=0, với a≠0 [1]
Trước khi viết chương trình tôi yêu cầu các nhóm phải thực hiện các thao tác:
1 Xác định bài toán (đại diện các nhóm nêu INPUT, OUTPUT)
2 Nếu ý tưởng (đại diện các nhóm nêu ý tưởng)
3 Xây dựng thuật toán (trình bày ra giấy A4 gắn lên bảng và trình bày lại) Sau khi thực hiện xong 3 bước trên 2 nhóm có đề bài giống nhau nhận xét bổ sung lẫn nhau, ngoài ra có thể nhận xét, bổ sung các bài toán khác
Nội dung Xác định bài toán – ý
tưởng
Thuật toán Bài toán 1: *) xác định bài toán: B1 nhập a,b
Trang 6Viết chương trình nhập
vào 2 số a, b từ bàn
phím Cho xuất hiện ra
màn hình số có giá trị
lớn hơn Nếu 2 số có
giá trị bằng nhau thì
cho xuất hiện dòng
thông báo “khong co so
lon hon”
INPUT: a,b OUTPUT: a hoặc b hoặc
“khong co so lon”
*) Ý tưởng: so sánh a với b
- a>b số lớn là a
- a<b số lớn là b
- a=b không có số lớn
B2 so sánh a với b B2.1 Nếu a>b thì cho ra kết quả là a, chuyển đến B3
B2.2 Nếu a<b thì cho ra kết quả là b, chuyển đến B3
B2.3 Nếu a=b thì cho ra thông báo “khong co so lon” chuyển đến B3 B3 kết thúc
Bài toán 2.
Viết chương trình nhập
vào 2 số a, b từ bàn
phím Cho xuất hiện ra
màn hình số mang giá
trị âm Nếu 2 số có giá
trị dương thì cho xuất
hiện dòng thông báo
“khong co so am”
*) xác định bài toán:
INPUT: a,b OUTPUT: a hoặc b hoặc cả
a bà b hoặc “khong co so am”
*) Ý tưởng: so sánh a và b với 0
- a<0 và b<0 số a và b đều
là số âm
- a<0 và b>0 số a là số âm
- a>0 và b<0 số b là số âm
- a>0 và b>0 khong co so am
B1 nhập a,b B2 so sánh a và b với 0 B2.1 Nếu a<0 và b<0 thì cho ra kết quả là a và b chuyển đến B3
B2.2 Nếu a<0 và b>0 thì cho ra kết quả là a, chuyển đến B3
B2.3 Nếu a>0 va b<0 thì cho ra kết quả là b, chuyển đến B3
B2.4 Nếu a>0 va b>0 thì cho ra thông báo “khong
co so am” chuyển đến B3
B3 kết thúc
Bài toán 3.
Viết chương trình nhập
vào 2 số a, b từ bàn
phím Tính tông của
hai số đó nếu số a>b,
còn nếu a≤b thì xuất
hiện dòng thông báo
yêu cầu nhập lại a và b
*) xác định bài toán:
INPUT: a,b (a>b)
OUTPUT: S
*) Ý tưởng: so sánh a với b
- a>b thì tính tổng
- a≤b thì không tính tổng
B1 nhập a,b B2 so sánh a với b Nếu a>b thì sang bước 3, ngược lại thì quay lại B1 B3 tính S¬ a+b
B4 cho ra S, kết thúc
Bài toán 4.
Viết chương trình nhập
vào a từ bàn phím
Kiểm tra xem số a có
chia hết cho 3 không?
*) xác định bài toán:
INPUT: a
OUTPUT: a chia hết cho 3 hoặc a không chia hết cho 3
*) Ý tưởng: a chia 3 lấy
B1 nhập a
B2 Chia a cho 3
B2.1 Nếu a mod 3 = 0 thì cho ra dòng thông báo “a chia het cho 3”,
Trang 7Nếu không chia hết cho
ra dòng thông báo “a
khong chia het cho 3”
phần dư
- Nếu a chia cho 3 có dư bằng 0 thì a chia hết cho 3
- Nếu a chia cho 3 có dư khác 0 thì a không chia hết cho 3
kết thúc
B2.2 Nếu a mod 3 <> 0 thì cho ra dòng thông báo “a khong chia het cho 3”, kết thúc
Bài toán 5.
Viết chương trình nhập
vào 3 số a, b, c từ bàn
phím Kiểm tra xem 3
số vừa nhập vào có
phải là bộ số pi-ta-go
không?
*) xác định bài toán:
INPUT: a, b, c
OUTPUT: là bộ pi-ta-go hoặc không phải là bộ pi-ta-go
*) Ý tưởng:
Nếu a2=b2+c2 hoặc b2=a2+c2
hoặc c2=b2+a2 thì a,b, c là
bộ pi-ta-go ngược lại a, b, c không phải là bộ pi-ta-go
B1 nhập a,b,c
B2 Nếu (a2=b2+c2 ) hoặc (b2=a2+c2 ) hoặc
(c2=b2+a2 ) thì thông báo a,b, c là bộ pi-ta-go, kết thúc
ngược lại: thông báo a,
b, c không phải là bộ pi-ta-go, kết thúc
Bài toán 6
Viết chương trình tìm
nghiệm của phương
ax2+bx+c=0, với a≠0.
*) xác định bài toán:
INPUT: a, b, c (a≠0)
OUTPUT: nghiệm của phương trình bậc hai
*) Ý tưởng:
So sánh D với 0
- Nếu D<0 thì PTVN
- Nếu D=0 thì PT có nghiệm kép x1,2 = -b/(2*a)
- Nếu D>0 thì tính nghiệm của phương trình
x1 = (-b-sqrt(D))/(2*a)
x2 = (-b-sqrt(D))/(2*a)
B1 nhập a,b,c (a≠0).
B2 Tính DT¬ b2-4*a*c B3 so sánh DT với 0 B3.1 Nếu DT<0 kết luận
“phuong trinh vo nghiem”, kết thúc
B3.2 Nếu DT=0 kết luận
“phuong trinh co nghiem kep”, tính nghiệm: x1¬ x2¬ b/ (2*a), kết thúc
B3.3 Nếu DT>0 kết luận
“phuong trinh co hai nghiem phan biet”, tính nghiệm:
x1¬ (-b–qrt(DT))/(2*a) x2¬ (-b+qrt(DT))/(2*a) kết thúc
3.2 Phần thực hành
Học sinh hoạt động theo nhóm
Trang 8Viết chương trình (hướng dẩn của giáo viên) Sau khi thực hiện tốt ba bước ở phần học lý thuyết tại lớp dưới sự hướng dẫn của giáo viên học sinh viết chương trình bằng ngôn ngữ lập trình pascal
Trước khi lập trình giải quyết bài toán trên máy tính, tôi yêu cầu học sinh nhắc lại:
- Cấu trúc lệnh: nhập từ bàn phím (read hoặc readln)
READ (<danh sách biến vào>);[1]
READLN(<danh sách biến vào>);[1]
- Xuất hiện ra màn hình(write hoặc writeln)
WRITE(<danh sách kết quả ra>);[1]
WRITELN(<danh sách kết quả ra>);[1]
- Kiểu dữ liệu đã học(sử dụng kiểu real, integer)
- Chạy chương trình(ctrl + F9), sửa lỗi(F9), báo kết quả(màn hình kết quả) Sau khi đã ôn lại kiến thức trên tôi yêu cầu học sinh lập trình trên máy bằng nội dung ví dụ đã viết trên giấy Trong vòng 45 phút của tiết học thực hành tôi yêu cầu mỗi nhóm phải chạy ba bài và chấm lấy điểm, nếu nhóm nào làm thêm bài sẽ
có điểm khuyến khích
Bài toán 1
Học sinh chạy bài với a=7, b=8
Kết quả báo: “so lon la b”
Bài toán 2
Học sinh chạy bài lần thứ nhất với cặp số a=9, b=8, kết quả : “khong co so am”
Chạy bài lần thứ hai với cặp số a=-8, b=-6, kết quả : “ca a va b deu la so am”
Trang 9Bài toán 3
Học sinh chạy bài lần thứ nhất với cặp số a=8, b=9, kết quả : “nhap lai so a” Chạy bài lần thứ hai với cặp số a=9, b=6, kết quả cho ra “tong la : 15”
Bài toán 4
Học sinh chạy bài lần thứ nhất với a=7, kết quả : “a khong chia het cho 3” Chạy bài lần thứ hai với a=9, kết quả: “a chia het cho 3”
Trang 10Bài toán 5.
Học sinh chạy bài lần thứ nhất với a=1, b=0, c=1, kết quả : “bo so da nhap
la bo so pi-ta-go”
Học sinh chạy bài lần thứ hai với a=3, b=4, c=5, kết quả : “bo so da nhap khong phai la bo pi-ta-go”
Bài toán 6
Học sinh chạy bài lần thứ nhất với a=1, b=-3, c=2, kết quả : “phuong trinh co nghiem la: x1=1.00 x2=2.00”
Lần thứ hai học sinh chạy bài với a=1, b=2, c=1, kết quả : “phuong trinh co nghiem kep x1=x2=-1.00”
Lần thứ ba học sinh chạy bài với a=1, b=0, c=1, kết quả : “phuong trinh vo nghiem”