SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HÓATRƯỜNG THPT QUẢNG XƯƠNG 2 SÁNG KIẾN KINH NGHIỆM ỨNG DỤNG CỦA LẬP TRÌNH TURBO PASCAL KHI GIẢI QUYẾT CÁC BÀI TOÁN THỰC TẾ Người thực hiện: Nguyễn Thị Phượn
Trang 1SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HÓA
TRƯỜNG THPT QUẢNG XƯƠNG 2
SÁNG KIẾN KINH NGHIỆM
ỨNG DỤNG CỦA LẬP TRÌNH TURBO PASCAL KHI GIẢI
QUYẾT CÁC BÀI TOÁN THỰC TẾ
Người thực hiện: Nguyễn Thị Phượng Chức vụ: Giáo viên
SKKN thuộc lĩnh vực: Tin học
THANH HÓA NĂM 2021
Trang 2MỤC LỤC
Trang
1 Mở đầu ……….………
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……… ………
2 Nội dung ………
2.1 Cơ sở lý luận……….………
2.1.1 Khái niệm ứng dụng………
2.1.2 Khái niệm lập trình ………
2.2 Thực trạng vấn đề……… ………
2.3 Giải pháp và tổ chức thực hiện……….………
2.3.1 Ôn lại cấu trúc lặp, thao tác với mảng 1 chiều và thao tác với tệp………
2.3.2 Một số bài toán thực tế………
2.3.2.1 Sử dụng cấu trúc lặp để tính tiền gửi tiết kiệm ngân hàng… 2.3.2.2 Sử dụng lập trình turbo PASCAL để giải quyết các bài toán thống kê trong thực tế……… …
2.3.3 Tổng kết ………
2.4 Hiệu quả………
3 Kết luận và kiến nghị ………
3.1 Kết luận………
3.2 Kiến nghị………
Tài liệu tham khảo ………
2 2 2 2 2 2 2 2 3 3 3
3 3 3
6 9 9 10 11 12 13
Trang 31 MỞ ĐẤU
1.1 Lý do chọn đề tài
Chương trình tin học lớp 11 học sinh làm quen với lập trình là một kiến thức mới và rất trừu tượng với học sinh
Đây là môn học được ứng dụng và bổ ích ở thời đại 4.0 hiện nay Tuy nhiên học sinh ở vùng nông thôn thì máy tính còn hạn chế nên các em chưa có phương tiện để phục vụ việc học tin học Học lập trình turbo PASCAL đa số học sinh thấy rất khó khăn khi diễn tả tả thuật toán và sử dụng các câu lệnh để mô tả Các em không nắm vững các thao tác xử lí dữ liệu Học sinh chưa thấy được lập trình ứng dụng trong thực tế như thế nao, mà chỉ học lí thuyết suông Học sinh chưa biết áp dụng lập trình để giải quyết các bài toán thực tế hàng ngày xung quanh ta
Với những lí do trên tôi đã chọn đề tài: “Ứng dụng của lập trình turbo PASCAL khi giải quyết các bài toán thực tế” khi học lập trình - tin học lớp 11 1.2 Mục đích nghiên cứu:
Giúp học sinh thấy được mối quan hệ giữa bài toán tin học với bài toán thực tế Biết áp dụng kiến thức đã học vào thực tế hàng ngày
1.3 Đối tượng nghiên cứu
Học sinh lớp: 11B1, 11B2, 11B3 trường trung học phổ thông Quảng Xương II năm học 2020 -2021
1.4 Phương pháp nghiên cứu
- Phương pháp ngiên cứu lý thuyết
- Phương pháp điều tra thực tiễn
- Phương pháp toán học so sánh
2 NỘI DUNG
2.1 Cơ sở lý luận
2.1.1 Khái niệm ứng dụng:
Ứng dụng là một khái niệm được sử dụng rất phổ biến trong các lĩnh vực của đời sống xã hội của loài người Ứng dụng là áp dụng, vận dụng lí thuyết vào trong thực tiễn
Ứng dụng lập trình turbo PASCAL là cách sử dụng ngôn ngữ lập trình trong việc giải quyết các bài toán thực tế của con người
2.1.2 Khái niệm lập trình.
- Lập trình là cách cách sử dụng cấu trúc dữ liệu để mô tả thuật toán của một số
bài toán
2.2 Thực trạng vấn đề
Tin học ngày nay đang được quan tâm vào thời đại công nghệ 4.0 trên khắp mọi miền tổ quốc từ thành thị đến nông thôn, tất cả các ứng dụng trong một lĩnh vực nào đó đều là sản phẩm của quá trình lập trình sẵn Nhu cầu này đòi hỏi cần có các kĩ sư công nghệ thông tin lập trình
Trường THPT Quảng Xương 2 được thành lập từ tháng 3 năm 1967 Địa bàn nhà trường đóng trên vùng nông thôn bảy xã miền đồng của huyện Quảng Xương Các học sinh chủ yếu là con em nông thôn, nên việc trang bị máy tính riêng cho từng em ở mỗi gia đình là không có Chỉ một số ít con em của giáo viên, công chức mới có máy tính riêng ở nhà
Trang 4Nhà trường có 2 phòng máy nhưng các máy cũ đã lâu, thường xuyên hư hỏng nên số lượng máy rất ít Khi thực hành giáo viên thường xuyên phải chia
ca thay nhau thực hành Do ít máy nên khi các em lên thực hành phải 2 em sử dụng một máy tính để thực hành
Do đặc thù môn tin trong trường THPT ở vùng nông thôn đang thiếu thốn
về cơ sở vật chất nên học sinh ít được khám phá.Trong đề tài này tôi viết nhằm tạo ra hứng thú, kích thích tinh thần học tập của các em khi thấy được ứng dụng thực tế của lập trình để giải quyết các bài toán thực tế Đề tài tôi nghiên cứu cho
3 lớp 11B1, 11B2, 11B3 THPT Quảng Xương 2, năm học 2020-2021 như sau:
2.3 Giải pháp và cách tổ chức thực hiện
Với những lí do và thực trạng đã nêu tôi xin trình bày giải pháp thực hiện như sau:
2.3.1 Ôn lại cấu trúc lặp, thao tác với mảng 1 chiều và thao tác với tệp.
Giáo viên hỏi:
- Nhắc lại cấu trúc For To Do và While…Do
- Các thao tác với mảng 1 chiều
- Cách đọc dữ liệu trong tệp
HS trả lời:
Giáo viên: Thâu tóm các nội dung của bài tập thực hành tổng hợp
1 Cấu trúc lặp:
- Lặp với số lần lặp biết trước: For <biến đếm>:=<giá trị đầu> to <giá trị cuối> do < câu lệnh lặp >;
- Lặp với số lần chưa biết nhưng biết điều kiện lặp: While < điều kiện> do
< câu lệnh>;
2 Các thao tác với mảng một chiều:
- Khai báo mảng 1 chiều:
- Tham chiếu đến các phần tử của mảng
3. Cách đọc dữ liệu trong tệp
- Read/readln(<tên biến têp>, <danh sách biến>);
2.3.2 Một số bài toán thực tế
2.3.2.1 Sử dụng cấu trúc lặp để tính tiền gửi tiết kiệm trong ngân hàng.
Giáo viên: Trong thực tế, ta muốn gửi một số tiền tiết kiệm vào ngân hàng sau một thời gian có kì hạn ta rút về hoặc đến khi đạt được một lượng tiền tiết kiệm nhất định ta rút về Từ những hiểu biết về lập trình em hãy lập trình để giúp ngân hàng tính tiền trong hai trươờng hợp trên
- Khi ngân hàng cho biết lãi suất hàng tháng thì ta hoàn toàn tính được lãi thu được sau mỗi tháng theo công thức: tiền lãi = tiền gốc *lãi suất
- Bài toán đặt ra:
o Cho vay có kì hạn sau một số tháng đã biết trước Tính tiền thu được
o Tính tiền thu được và số tháng cho vay
Trang 5Bài toán 1 : Một gia đình có số tiền là a (triệu đồng) đem gửi ngân hàng Lãi
suất là b% /tháng Tính số tiền thu về sau t (tháng) Với a, b, t nhập từ bàn phím
Giáo viên: Yêu cầu học sinh xác định: input, output
Học sinh trả lời:
- Input: số tiền ban đầu a, số tháng là t, lãi suất b
- Output: tổng tiền thu về
Giáo viên: Nêu cách tính tổng tiền sau mỗi tháng:
- Tiền lãi:=tiền gốc*lãi suất/100
- Tổng tiền:=tiền gốc +tiền lãi
a:=a+a*b/100
- Quá trình tính này được thực hiện ở các tháng giống nhau nên ta lặp đi lặp lại t lần
Giáo viên: Yêu cầu học sinh nêu câu lệnh lặp để tính số tiền sau t tháng
Học sinh: Nêu câu lệnh lặp
Giáo viên: Yêu cầu học sinh hoàn thành chương trình vào máy tính Chạy chương trình với bộ dữ liệu vào a,b,t giáo viên cho trước, quan sát kết quả trực tiếp trên màn hình
Giáo viên: Chiếu chương trình mẩu
Code chương trình
Kết quả khi chạy chương trình
Trang 6HS: Quan sát kết quả chương trình mẩu và so sánh với chương trình của mình Kết quả quan sát trực quan giúp học sinh nhớ rõ các thao tác, gây hứng thú trong giờ học thực hành của các em
Bài tập 2: Một gia đình có số tiền là a (triệu đồng) đem gửi ngân hàng Lãi suất
là b% /tháng Cho vay đến khi số tiền thu về ít nhất đạt s (triệu đồng) Hỏi cho vay bao nhiêu tháng và số tiền thu được khi đó là bao nhiêu? Với a, b nhập từ bàn phím
Giáo viên: Yêu cầu học sinh xác định Input và output
- Input: a,b,s
- Output: tổng tiền, số tháng (t)
Giáo viên: Yêu cầu học sinh so sánh sự giống nhau và khác nhau giữa bài tập 1
và bài tập 2
Học sinh: Rút ra sự giống nhau và khác nhau giữa hai bài tập
Giáo viên: Nhận xét và thâu tóm các ý kiến của học sinh Phân tích thuật toán bài tập 2
- Giống nhau:
o Công thức tính lãi hàng tháng: tiền lãi= tiền gốc*lãi suất/100
o Tổng tiền sau mỗi tháng: tổng tiền= tiền gốc+ tiền lãi
o a:=a+a*b/100
- Khác nhau: Trong bài toán 1 số tháng đã biết còn bài toán 2 thì số tháng chưa biết nhưng biết khi nào số tiền còn bé hơn s (triệu đồng) thì còn cho vay Do vậy bài 1 ta sử dụng cấu trúc For…to…do Bài 2 ta sử dụng cấu trúc While…Do
Giáo viên: Yêu cầu học sinh viết đoạn lệnh lặp
Học sinh: Trả lời
Giáo viên: Nhận xét
Đoạn lệnh:
Giáo viên yêu cầu học sinh hoàn thành bài 2 vào máy tính
Học sinh: Viết chương trình vào máy tính
Giáo viên: Sửa lỗi cho học sinh và chiếu chương trình mẩu Yêu cầu các máy nhập bộ input theo chương trình mẩu, quan sát và so sánh kết quả
Trang 7
Học sinh quan sát kết quả và so sánh với kết quả với chương trình của mình, sửa lổi nếu kết quả khác nhau
2.3.2.2 Sử dụng lập trình turbo PASCAL để giải quyết các bài toán thống
kê trong thực tế.
Bài tập 3: Bình chọn qua điện thoại:
Trong một vòng chung kết cuộc thi “Vietnam Next Top Model” trên
VTV3 các thí sinh được đánh số báo danh là một số nguyên dương có giá trị không vượt quá 1000 Khán giả xem truyền hình có thể bình chọn cho thí sinh
mà minh yêu thích bằng cách nhắn tin qua điện thoại di động
Ban tổ chức nhận được tin nhắn hợp lệ của n khán giả (các khán giả được đánh số từ 1 đến n) Khán giả thứ i bình chọn cho thí sinh mang số báo danh ai Hãy liệt kê số khán giả bình chọn của từng thí sinh
Dữ liệu: vào từ file VNMODEL.INP
- Dòng 1: chứa số n
- N dòng tiếp theo, dòng thứ i ghi số dương ai là số báo danh của thí sinh
mà khán giả thứ i bình chọn
Code chương trình
Kết quả khi chạy chương trình
Trang 8Kết quả: Ghi vào tệp VNMODEL.OUT gồm n dòng mỗi dòng ghi sô báo danh cùng với số lần bình chọn ( số báo danh không được bình chọn thì không liệt kê)
Ví dụ:
5 4 3 4 2 1 2
1 1
2 2
3 1
4 2
Giáo viên: Yêu cầu học sinh xác định Input, output, nêu ý tưởng?
Học sinh: Trả lời
Giáo viên: Nhận xét và phân tích bài toán
- Input: n, a1, a2,……an lấy từ tệp MODEL.INP
- Out: liệt kê số báo danh cùng với số lần được chọn ghi vào tệp
MODEL.OUT
Giáo viên:
- Yêu cầu học sinh nhắc lại các thao tác chính với tệp ?
- Câu lệnh đếm số lần xuất hiện của một phần tử?
Học sinh: Trả lời
Giáo viên: Nhận xét
- Lệnh đọc tệp: read/readln(<tên biến têp>, <danh sách biến>);
- Câu lệnh đếm: d:=d+1
Với bài toán này, số báo danh từ 1 1000 do vậy ta có 1000 biến đếm để đếm
số lần xuất hiện của mỗi số báo danh Cần dùng mảng D[1 10000] để lưu trữ từng giá trị từ 1 1000 là số lần xuất hiện của mỗi số nguyên
Đoạn lệnh đọc tệp như sau:
For i:=1 to 1000 do d[i]:=0;
Readln(f,n);
For i:=1 to n do
Begin
Readln(f,x);
D[x]:=d[x]+1;
End;
Giáo viên: Yêu cầu học sinh hoàn thành chương trình và sửa lổi cho học sinh Học sinh: Thực hiện gõ chương trình, chạy chương trình với bộ input mẩu, so sánh output
Giáo viên: Nhận xét và chiếu chương trình mẩu để học sinh quan sát
Trang 9Học sinh quan chương trình.
Bài tập 4: Bình chọn qua điện thoại:
Trong một vòng chung kết cuộc thi “Vietnam Next Top Model” trên
VTV3 các thí sinh được đánh số báo danh là một số nguyên dương có giá trị không vượt quá 1000 Khán giả xem truyền hình có thể bình chọn cho thí sinh
mà minh yêu thích bằng cách nhắn tin qua điện thoại di động
Ban tổ chức nhận được tin nhắn hợp lệ của n khán giả (các khán giả được đánh số từ 1 đến n) Khán giả thứ i bình chọn cho thí sinh mang số báo danh ai Hãy liệt kê số khán giả bình chọn của từng thí sinh
Dữ liệu: vào từ file VNMODEL.INP
- Dòng 1: chứa số n
- N dòng tiếp theo, dòng thứ i ghi số dương ai là số báo danh của thí sinh
mà khán giả thứ i bình chọn
Kết quả: Ghi vào tệp VNMODEL.OUT In ra số báo danh được bình chọn nhiều nhất theo thứ tự số báo danh tăng dần
Ví dụ:
5 3 1 3 2 2
2 3
Code chương trình và file Input, Output
Trang 10Giáo viên: Nếu bài toán yêu cầu in ra số báo danh được bình chọn nhiều nhất theo thứ tự số báo danh tăng dần thì chương trình trên được sửa như thế nào? Giáo viên: Yêu cầu học sinh phân tích mối quan hệ giữa bài 3 và bài 4
Học sinh: Suy nghĩ và trả lời
Giáo viên: phân tích thuật toán, ở bài tập 3 là liệt kê mảng d khi d[i]>0 còn bài 5
là tìm các giá trị i đạt giá trị lớn nhất Thực chất đây là bài toán chỉ ra các vị trí đạt max trong mảng D Yêu cầu học sinh sửa từ bài tập 3 để hoàn thành bài tập 4
Học sinh: thực hiện sửa chương trình, chạy chương trình, quan sát kết quả
Giáo viên: Nhận xét và rút ra mối quan hệ giữa 2 bài toán, chiếu code bài toán
để học sinh quan sat
Code chương trình và file Input, Output
2.3.3 Tổng kết
- Giáo viên tổng kết lại nội dung 2 tiết thực hành: ứng dụng của lập trình turbo PASCAL trong giải quyết các bài toán thực tế
- Lấy ý kiến nhận xét tiết học thực hành
2.4 Hiệu quả
Thông qua tiến hành nghiên cứu thực hành tại phòng máy các lớp 11 của
nhà trường trong hai năm liên tục với đề tài:“ Ứng dụng của lập trình turbo PASCAL khi giải quyết các bài toán thực tế” khi học lập trình - Tin học lớp
11 Tôi đã thu được một số kết quả: Các em đã biết ứng dụng lập trình để giải
quyết các bài toán trong thực tế, gây hứng thú cho học sinh yêu thích môn học Giúp học sinh tìm tòi sáng tạo ra các bài toán thực tế khác để ứng dụng trong lập trình
Kết quả khảo sát thực hành lập trình turbo PASCAL - Tin học 11 của ba lớp 10B1, 10B2, 10B3 trường THPT Quảng Xương 2, năm học 2020 -2021 về kết quả thực hành khi chưa áp dụng đề tài
Trang 11Lớp Số
máy
Số học sinh
Số máy kết quả đúng
Sô máy kết quả chưa
đúng Số
máy
Số học sinh
Tỉ lệ Số
may
Số học sinh
Tỉ lệ
Kết quả khảo sát bài kiểm tra thực hành của ba lớp 10B1, 10B2, 10B3 trường THPT Quảng Xương 2, năm học 2020-2021 về kết quả thực hành khi áp dụng
đề tài
máy
Số học sinh
Số máy kết quả đúng Sô máy kết quả chưa
đúng Số
máy
Số học sinh
Tỉ lệ Số
may
Số học sinh
Tỉ lệ
Đối chiếu kết quả thực hiện ở 2 năm học tôi thấy sau khi áp dụng đề tài này vào giảng dạy tại trường thông qua giảng dạy bằng giáo án điện tử kết hợp với phòng máy tính đa số học sinh của các lớp đều nắm vững những phần kiến thức cơ bản của bài học như mục tiêu, yêu cầu đã đề ra Các em có tinh thần trách nhiệm, nhận thức đúng đắn về môn học, có nhiều hứng thú học tập ở những tiết học tiếp theo Điều này khẳng định tính phù hợp của sáng kiến kinh nghiệm này trong việc làm tài liệu tham khảo cho các giáo viên và học sinh
3 KẾT LUẬN VÀ KIẾN NGHỊ
3.1 Kết luận
Thông qua tiến hành nghiên cứu trên các lớp 11 của nhà trường trong hai
năm liên tục với đề tài: “Ứng dụng của lập trình turbo PASCAL khi giải quyết các bài toán thực tế” khi học lập trình - Tin họclớp 11 tôi tự nhận thấy:
Đối với giáo viên, sáng kiến kinh nghiệm này là một tài liệu có giá trị trong công tác giảng dạy Tin học 11 Giúp học sinh chủ động nghiên cứu, phát huy được khả năng tư duy sáng tạo của học sinh, qua đó hiểu sâu hơn, có hứng thú hơn đối với môn học Giải quyết được các bài toán thực tế thông qua lập trình Bước đầu tạo hứng thú cho các em lập trình ở mức độ đơn giản, là tiền đề
để các em nghiên cứu tiếp lập trình nâng cao khi vào đại học, cao đẳng
Từ kết quả nghiên cứu, bản thân tôi cũng đã rút ra các bài học kinh nghiệm sau:
Trang 12Đối với giáo viên phải không ngừng tìm tòi, sáng tạo để nâng cao trình
độ chuyên môn và nghiệp vụ sư phạm cho bản thân, phải chú ý việc phát triển tư duy, nâng cao hiểu biết cho học sinh, ham mê hơn môn học và ứng dụng môn học vào cuộc sống
Đối với học sinh các em muốn trở thành người có hiểu biết toàn diện thì phải có kiến thức về tin học, các em hiểu được lập trình là làm gi, ứng dựng của lập trình trong thực tế hàng ngày
Việc thực hiện đề tài đã tạo được hứng thú học tập cho học sinh, giúp học sinh thấy được tầm quan trọng của lập để giải quyết các bài toán thực tế hàng ngày của chúng ta Góp phần nâng cao hiểu biết, làm phát huy tư duy sáng tạo cho học sinh