Nội dung tin học lập trình lớp 11 là một nội dung mới lạ đối với đa sốhọc sinh với nhiều khái niệm, thuật ngữ, cấu trúc dữ liệu mà học sinh mới được tiếp xúc lần đầu.Tuy nhiên mọi thứ đi
Trang 1MỤC LỤC
A PHẦN I: ĐẶT VẤN ĐỀ
1 Lý do chọn đề tài 2
2 Mục đích nghiên cứu 3
3 Phạm vi đề tài 3
4 Đối tượng, kế hoạch và phạm vi nghiên cứu 3
B PHẦN II: NỘI DUNG CHƯƠNG I : TỔNG QUAN 4
1 Cơ sở lý luận .4
2 Cơ sở thực tiễn ., 4
CHƯƠNG II : NỘI DUNG VẤN ĐỀ NGHIÊN CỨU 5
I Giới thiệu về Pascal và cấu trúc lặp trong Pascal … 5
II Cấu trúc chung của cấu trúc lặp trong Pascal 5
III Tìm hiểu về bộ Test:6 IV Một số bài toán về cấu trúc lặp……… 7
1) Bài toán 1 7
2) Bài toán 2 8
3) Bài toán 3 10
4) Bài toán 4 11
5) Bài toán 5 12
6) Bài toán 6 13
7) Bài toán 7 14
8) Bài toán 8 16
CHƯƠNG III: PHƯƠNG PHÁP VÀ KẾT QUẢ NGHIÊN CỨU 19
1) Phương pháp nghiên cứu 19
2) Kết quả nghiên cứu 19
C PHẦN III: PHẦN KẾT THÚC TÀI LIỆU THAM KHẢO 21
Trang 2Tin học là một môn học mới ở các trường phổ thông nên học sinh còn nhiều bỡ ngỡ khitiếp cận với môn học này Nội dung tin học lập trình lớp 11 là một nội dung mới lạ đối với đa sốhọc sinh với nhiều khái niệm, thuật ngữ, cấu trúc dữ liệu mà học sinh mới được tiếp xúc lần đầu.Tuy nhiên mọi thứ điều có điểm khởi đầu của nó, với học sinh việc học ngôn ngữ lập trìnhTurbo Pascal là khởi đầu cho việc tiếp cận ngôn ngữ lập trình bậc cao, qua đó giúp các em hìnhdung được sự ra đời, cấu tạo, hoạt đông cũng như ích lợi của các chương trình hoạt động trongmáy tính, các máy tự động… Qua đó giúp các em có thêm một định hướng, một niềm đam mê
về tin học, về nghề nghiệp mà các em chọn sau này
Xuất phát từ cơ sở trên, tôi đã chọn đề tài “Sử dụng linh hoạt bộ Test trong giảng dạy cấu
trúc lặp”.
2) Mục đích nghiên cứu:
Do gặp phải những bài toán khó nên khi giải các em gặp rất nhiều khó khăn, đôi khi dẫnđến nản chí, do đó khi cho các em lập trình giải các bài toán bằng máy tính, sẽ gây được hứngthú tìm tòi và học tập Vì vậy trong nội dung đề tài này tôi giới thiệu việc lập trình giải một vàibài toán toán học để giúp cho học sinh lớp 11
Trang 3Tuy vậy, đối với đối tượng học sinh khá giỏi, đa phần các em rất hào hứng với việc họclập trình, cụ thể là ngôn ngữ lập trình Turbo Pascal Do đó, đề tài này giúp học sinh có thêm kĩnăng lập trình Pascal thông qua một số ví dụ từ cơ bản đến nâng cao thích hơn với mọi đốitượng học sinh.
3) Phạm vi đề tài:
Khi dạy ngôn ngữ lập trình nói chung, ngôn ngữ lập trình Turbo Pascal nói riêng là rấtnhiều, rất phong phú với các bộ Test khác nhau Tuy nhiên trong phạm vi sáng kiến kinh nghiệmnày tôi chỉ trình bày một số kinh nghiệm của cá nhân tôi qua một số bài tập cụ thể
4) Đối tượng, kế hoạch và phạm vi nghiên cứu:
Đối tượng nghiên cứu: học sinh các lớp 11B6, 11B7, 11B8, 11B9 trường THPT Tôn ĐứcThắng năm học 2013-2014
Kế hoạch nghiên cứu: ở các tiếp bài tập và thực hành
Phạm vi nghiên cứu: phần cấu trúc lặp ở chương trình tin học lớp 11
Trang 4B PHẦN II: NỘI DUNG
CHƯƠNG I TỔNG QUAN
1. Cơ sở lí luận:
Trong bối cảnh toàn ngành Giáo dục và Đào tạo đang nỗ lực đổi mới phương pháp dạy họctheo hướng phát huy tính tích cực chủ động của học sinh trong hoạt động học tập Chỉ thị số55/2008/CT- BGTĐT ngày 30/9/2008 của Bộ trưởng Bộ GD& ĐT về tăng cường giảng dạy, đàotạo và ứng dụng công nghệ thông tin trong ngành giáo dục giai đoạn 2008-2011 Điều 24.2 của
Luật giáo dục đã nêu rõ : “Phương pháp giáo dục phổ thông phải phát huy tính tích cực, tự giác, chủ động, sáng tạo của học sinh, phù hợp với đặc điểm của từng lớp học, môn học; bồi dưỡng phương pháp tự học, rèn luyện kỹ năng vận dụng kiến thức vào thực tiễn, tác động đến tình cảm, đem lại niềm vui, hứng thú học tập cho học sinh” Như vậy, chúng ta có thể thấy định
hướng đổi mới phương pháp dạy học đã được khẳng định, không còn là vấn đề tranh luận Cốtlõi của việc đổi mới phương pháp dạy học ở trường phổ thông là giúp học sinh hướng tới việchọc tập chủ động, chống lại thói quen học tập thụ động Với một số nội dung trong đề tài này,học sinh có thể tự học, tự rèn luyện thông qua một số bài tập, dạng bài tập cụ thể
2. Cơ sở thực tiễn:
Thực tế giảng dạy ở trường THPT Tôn Đức Thắng cho thấy: lập trình Pascal là phần họckhó nhất trong 3 năm Học sinh tiếp thu kiến thức mơ hồ, máy móc Ảnh hưởng từ môn họcToán đến phần học này cũng khá nhiều, thực tế đã chứng minh nếu không có nền tảng kiến thứctoán học tốt thì không thể học Pascal
Tuy vậy, Pascal vẫn gây được hứng thú khi giải quyết được các bài toán toán học bằngmáy tính với nhiều bộ Test khác nhau Trước khi cho chạy chương trình bằng phần mềm tương
ứng, tôi đã hướng dẫn các em sử dụng các bộ dữ liệu chạy thử bằng “tay” để kiểm tra tính đúng
đắn của đoạn code đó Với sự chạy “tay” này đã giúp các em phần nào hiểu rõ hơn về thuật toáncủa bài toán Từ đó sẽ hăng say lập trình giải quyết các bải toán khó hơn Bằng cách này sẽ giúpphần nào cho các em trong việc giải quyết các bài toán trong môn học toán, một môn khá khó
Trang 5CHƯƠNG II:
NỘI DUNG VẤN ĐỀ NGHIÊN CỨU
I GIỚI THIỆU VỀ PASCAL VÀ CẤU TRÚC LẶP TRONG PASCAL:
Pascal là ngôn ngữ lập trình bậc cao do giáo sư Niklaus Wirth (trường đại học mỹ thuật,Zurich, Thụy Sĩ) sáng tác và công bố vào đầu những năm 1970, với tên Pascal để kỷ niệm nhàtoán học người Pháp Blaise Pascal, thế kỷ 17 Lúc đầu, Pascal được sáng tác ra với mục đíchlàm một ngôn ngữ máy tính để dạy học cho sinh viên ở các trường đại học: nó giúp cho sinhviên cũng như những người mới học lập trình có được thói quen viết một chương trình có cấutrúc sáng sủa, rõ ràng, dễ hiểu và dễ đọc cho các đối tượng khác nhau Trước khi có Pascal, cácsinh viên đều được học ngôn ngữ lập trình Fortran, một ngôn ngữ lâu đời nhất và là một ngônngữ không có cấu trúc Giáo sư Wirth thấy rằng có thể tránh được rất nhiều
Pascal là một ngôn ngữ lập trình cho máy tính thuộc dạng mệnh lệnh, là ngôn ngữ đặcbiệt thích hợp cho kiểu lập trình có cấu trúc.Pascal dựa trên ngôn ngữ lập trình Algol Cho đếnnay Pascal vẫn được dùng để giảng dạy về lập trình trong nhiều trường trung học và đại học trênthế giới, và nhiều thế hệ sinh viên đã "vào đời" thông qua việc học Pascal như ngôn ngữ vỡ lòngtrong các chương trình học đại cương Nhiều biến thể của Pascal ngày nay vẫn còn được sửdụng khá phổ biến, cả trong giảng dạy lẫn trong công nghiệp phát triển phần mềm.Phần lớn hệđiều hành Macintosh được viết bằng Pascal Hệ sắp chữ TeX được Donald Knuth viết bằngngôn ngữ mang nhiều yếu tố của Pascal.Trong chương trình Tin học cấp trung học phổ thông, ởlớp 11 phần lập trình đơn giản, học sinh được học ngôn ngữ lập trình Pascal để lập trình giải cácbài toán trong chương trình trung học và cũng như nội dung thi học sinh giỏi môn Tin học đều
sử dụng ngôn ngữ lập trình Pascal để giải các bài toán đó
Cấu trúc lặp trong Pascal là một dạng bài tập ít nhiều gây khó khăn cho học sinh lớp 11.Lặp là một việc gì đó có sự giống nhau về cả tính chất lẫn số lượng
II CẤU TRÚC CHUNG CỦA CẤU TRÚC LẶP TRONG CHƯƠNG TRÌNH PASCAL:
Trong chương trình tin học lớp 11 chỉ tìm hiểu 2 loại lặp: Lặp với số lần lặp biết trước vàlặp với số lần lặp chưa biết trước
1 Lặp với số lần lặp biết trước và câu lệnh For…Do:
Trang 6Giá_trị_đầu, Giá_trị_cuối là các biểu thức cùng kiểu với Biến_đếm và Giá_trị_đầu <Giá_trị_cuối Nếu Giá_trị_đầu > Giá_trị_cuối thì vòng lặp không được thực hiện.
Lưu đồ vòng lặp xác định FOR…TO….DO
2 Lặp với số lần lặp chưa biết trước và câu lệnh While…Do:
While <điều kiện> do <câu lệnh>;
Trong đó:
Điều kiện: biểu thức logic
Câu lệnh: là một câu lệnh hoặc câu lệnh ghép
Sai
Đúng
III TÌM HIỀU VỀ BỘ TEST :
Testing hay còn gọi là kiểm thử là một công đoạn được thực thi nhằm mục đích đánh giámột sản phẩm nào đó Testinh là một trong những công đoạn quan trọng nhất trong vòng đời của
Trang 7một sản phẩm, không những giúp bạn đánh giá chất lượng sản phẩm mà còn đóng vai trò nhưmột công cụ giúp bạn biết được tiến độ thi hành sản phẩm đó tới đâu, còn thiếu sót gỉ?
Để dễ dàng hình dung được quá trình testing, chúng ta xét một bài toán tin học đơn giảnnhư sau: Hãy lập chương trình xác định một số nguyên là số chẵn hay số lẻ Giả sử bạn viếtxong chương trình giải bài toán này, điểu bạn cần làm tiếp theo là kiểm tra chương trình ấy đúnghay sai Các thao tác để kiểm thử có thể được làm như sau:
Bước 1: Chạy chương trình.
Bước 2: Nhập số 2 cho chương trình đọc ( bạn mong chờ chương trình thông báo kết quả
là số chẵn)
Bước 3: Chương trình in kết quả Bạn ghi lại kết quả này.
Bước 4: So sánh kết quả với kết quả mong đợi xem có khớp nhau hay không Nếu kết
quả khớp nhau, chương trình của bạn đã chạy đúng trong trường hợp cần xét số 2 chuyển quabước 6 Nếu kết quả không khớp, chương trình của bạn bị sai bạn cần chuyển sang bước 5
Bước 5: Sửa lại chương trình Sau khi sửa xong quay lại bước 1.
Bước 6: Lập lại bước 1 với dữ liệu nhập vào là một số khác cho đến khi nào cảm thấy
không cần kiểm thử nữa
Đó chính là công đoạn testing Công đoạn này nhằm đảm bảo xem bạn đã giải quyếtđược bài toán hay chưa, nếu giải quyết ở mức độ nào
Vậy: test là một bộ dữ liệu, bao gồm input đưa vào chương trình và output dự kiếnchương trình đưa ra, phục vụ cho công đoạn testing
IV MỘT SỐ BÀI TOÁN VỀ CẤU TRÚC LẶP:
1 BÀI TOÁN 1: Với a là số nguyên và a > 2, tính tổng:
Trang 8b Chạy Test bằng tay:
Ở bài toán này, cần giúp học sinh biết được số lần lặp không thay đổi khi a thay đổi Tôihướng dẫn học sinh thay lần lượt 4 giá trị 10, 100, 200, 1000 của a vào để kiểm tra sự lặp
Nếu a = 10 lúc này tổng S = 1 1 1 1
10 10 1 10 2 100 lặp 100 lần
a = 100 lúc này tổng S = 1 1 1 1
100 100 1 100 2 100 100 lặp 100 lần Tương tự cho 2 giá trị 200 và 1000.
a 10 100 200 1000
Số lần lặp 100 100 100 100
c Chạy chương trình bằng Turbo Pascal:
2 BÀI TOÁN 2: : Viết chương trình nhập từ bàn phím 2 số nguyên dương M, N (M < N),
tính và đưa ra màn hình tổng các số chia hết cho 3 hoặc 5 trong phạm vi tử M, N
Trang 103 BÀI TOÁN 3: Cho đoạn chương trình sau:
Trang 125 BÀI TOÁN 5: Giải bài toán cổ:
b Chạy Test bằng tay:
Cho biến Cho chạy từ 1 đến 24 biến Ga = 24 - Cho
Kiểm tra xem cho*2 + ga = 50 hay không
Cho 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Ga 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20
Số chân 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 51
Cho 17 18 19 20 21 22 23 24
Ga 19 18 17 16 15 14 13 12
Số chân 53 54 55 56 57 58 59 60
Trang 13c Chạy chương trình bằng Turbo Pascal:
6 BÀI TOÁN 6: Nhập từ bàn phím tuổi của cha và con ( hiện tại tuổi cha lớn hơn hai lần
tuổi con và tuổi cha hơn tuổi con ít nhất là 25) Đưa ra màn hình câu trả lời cho câu hỏi:
“Bao nhiêu năm nữa thì tuổi cha gấp đôi tuổi con?
a Chương trình:
Trang 14
b Chạy Test bằng tay:
Tuổi cha 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
Tuổi con 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Năm 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Tuổi cha 42 43 44 45 46 47 48 49 50
Trang 15b Chạy Test bằng tay: Với bài toán này, không thể xác định lặp bao nhiêu lần mà phải
phụ thuộc vào giá trị của a và điều kiện 1 0,0001
a N Nếu a = 10 lúc này tổng S = 1 1 1 1
10 10 1 10 2 10 N Cho đến khi 1
10 N < 0, 0001 (= 1
10000) N = 9991 lặp 9991 lần Nếu a = 100 lúc này tổng S = 1 1 1 1
100 100 1 100 2 100 N Cho đến khi 1
Trang 168 BÀI TOÁN 8: Bài toán tháp Hà Nội của các nhà sư.
Tương truyền rằng ở một ngôi đền lớn tại Bénarès (Ấn Độ) có một tấm đế bằng đồng,trên đó có 3 cái cọc bằng kim loại, trong đó Thượng đế khi khai sinh ra thế giới đã xếp 64 cáiđĩa bằng vàng trên một cái cọc khác với nguyên tắc sau:
Mỗi lần chỉ được dịch chuyển một đĩa
Một đĩa có thể được chuyển từ một cọc này sang cọc khác bất kỳ
Không được để một đĩa trên một đĩa khác có đường kính nhỏ hơn
Và ngày tận thế sẽ đến khi 64 chiếc đĩa vàng được dịch chuyển và để làm việc này phảimất trên 58 tỉ năm!
3 sang cọc 2, chuyển 2 đĩa 1 và 2 từ cọc 3 sang cọc 2
Chúng ta có thể tổng quát hóa thuật toán chuyển như sau: lập một chương trình conDICH_CHUYEN N đĩa từ cọc này tới cọc khác thông qua cọc trung gian (là cọc thứ ba còn lại)
DICH_CHUYEN(N_Dia, TuCoc, ToiCoc, CocTrungGian);
Với N = 2 công việc được diễn tả lại như sau:
Trang 17DICH_CHUYEN (2, 1, 2 ,3) Di chuyển cột 1 sang cột 3DICH_CHUYEN(1, 1, 3 ,2) Di chuyển cột 2 sang cột 1DICH_CHUYEN(2, 2, 3, 1) Di chuyển cột 2 sang cột 3+ DICH_CHUYEN (2, 1, 2, 3)
DICH_CHUYEN(1, 1, 3, 2) Di chuyển cột 1 sang cột 3DICH_CHUYEN(1, 1, 2, 3) Di chuyển cột 1 sang cột 2DICH_CHUYEN(1, 3, 2, 1) Di chuyển cột 3 sang cột 2
Trang 18+ DICH_CHUYEN(1, 1, 3, 2)
DICH_CHUYEN(1, 2, 3)
c Chạy chương trình bằng Turbo Pascal:
Trang 19
CHƯƠNG III:
PHƯƠNG PHÁP VÀ KẾT QUẢ NGHIÊN CỨU
1) Phương pháp nghiên cứu:
Sáng kiến kinh nghiệm đang trình bày của tôi dựa theo các luận cứ khoa học hướng đốitượng, cụ thể: thuyết trình, quan sát, điều tra cơ bản, 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
2) Kết quả nghiên cứu:
- Bảng số liệu kết quả đạt được của học sinh lớp 11 năm học 2012-2013 khi chưa thực hiện đềtài:
STT Lớp Sĩ số Đạt yêu cầu Không đạt yêu cầu
Lớp Số học sinh Kết quả từ TB trở lên
Đầu năm Học kì I Cuối năm
Trang 20Trong nội dung của đề tài này, với mong muốn giúp cho việc dạy và học ngôn ngữ lậptrình nói chung và Pascal nói riêng của giáo viên và học sinh được tốt hơn.
Trên đây là kinh nghiệm của tôi dạy ở khối lớp 11 cũng như tham khảo qua nhiều nguồnthông tin, tư liệu khác nhau, rất mong được sự đóng góp của các đồng nghiệp nhằm giúp đề tàicủa tôi được hoàn thiện thêm
Trang 21TÀI LIỆU THAM KHẢO
1) Tài liệu nghiên cứu khoa học sư phạm ứng dụng
2) Tạp chí “Tin học và nhà trường”
3) Hồ Sĩ Đàm (chủ biên) - Sách giáo khoa, sách giáo viên tin học lớp 11
4) GS - TS Hoàng Kiếm - “Giải một bài toán trên máy tính như thế nào”
5) Quách Tuấn Ngọc - Ngôn ngữ lập trình Pascal
6) Các bài tập tham khảo ở đĩa CD “100 bài toán - tin”