Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 44

SỞ GIÁO DỤC VÀ ĐÀO TẠO VĨNH PHÚC

TRƯỜNG THPT TAM ĐẢO


=====***=====

BÁO CÁO KẾT QUẢ


NGHIÊN CỨU, ỨNG DỤNG SÁNG KIẾN

Tên sáng kiến: Sử dụng phương pháp dạy học tích cực vào dạy thuật
toán trong ngôn ngữ lập trình Pascal nhằm nâng cao chất lượng bồi dưỡng
học sinh giỏi tin học THPT.

Tác giả sáng kiến: Nguyễn Thị Dung


* Mã sáng kiến: 10.62.01

Vĩnh Phúc tháng 2, năm 2020

1
SỞ GIÁO DỤC VÀ ĐÀO TẠO VĨNH PHÚC
TRƯỜNG THPT TAM ĐẢO
Các từ viết tắt=====***=====Ý nghĩa

THCS Trung học cơ sở


THPT Trung học phổ thông
HSG Học sinh giỏi
QHĐ QHĐ
BÁO CÁO KẾT QUẢ
NGHIÊN CỨU, ỨNG DỤNG SÁNG KIẾN

Tên sáng kiến: Sử dụng phương pháp dạy học tích cực vào dạy thuật toán
trong ngôn ngữ lập trình Pascal nhằm nâng cao chất lượng bồi dưỡng học sinh
giỏi tin học THPT.

Tác giả sáng kiến: Nguyễn Thị Dung


* Mã sáng kiến: 10.62.01

Vĩnh Phúc tháng 2, năm 2020

2
MỤC LỤC
NỘI DUNG TRANG
1. Lời giới thiệu 1
1.1. Lí do chọn đề tài 1
1.2. Mục tiêu đề tài 2
2. Tên sáng kiến 2
3. Tác giả sáng kiến 2
4. Chủ đầu tư tạo ra sáng kiến 3
5. Lĩnh vực áp dụng sáng kiến 3
6. Ngày sáng kiến được áp dụng lần đầu hoặc áp dụng thử 3
7. Mô tả bản chất của sáng kiến 3
7.1 Nội dung sáng kiến 3
7.1.1. Mục đích nghiên cứu 3
7.1.2. Nhiệm vụ nghiên cứu 3
7.1.3 Đối tượng nghiên cứu 4
7.1.4. Phạm vi nghiên cứu 4
7.1.5 Nội dung sáng kiến kinh nghiệm 4
7.1.5.1. Giới thiệu về PPDH tích cực 4
7.1.5.2. Nội dung dạy thuật toán bằng PPDH tích cực 5
7.1.5.3. Nội dung kiến thức 7
7.1.5.3.1. Các thuật toán về số học 7
7.1.5.3.2. Thuật toán QHĐ điển hình 10
7.1.5.4. Quy trình thực hiện dạy học theo PPDH tích cực 16
7.1.5.4.1. Các thuật toán về số học 16
7.1.5.4.2. Thuật toán QHĐ điển hình 23
7.2 Về khả năng áp dụng của sáng kiến 28
8. Những thông tin cần được bảo mật 29
9. Các điều kiện cần thiết để áp dụng sáng kiến 29
10. Đánh giá lợi ích thu được sau khi áp dụng sáng kiến 29
10.1. Đánh giá lợi ích thu được theo ý kiến của tác giả 29
10.2. Đánh giá lợi ích thu được theo ý kiến của tổ chức, cá nhân 30
11. Danh sách những tổ chức/cá nhân đã tham gia áp dụng thử sáng 33
kiến
PHỤ LỤC
TÀI LIỆU THAM KHẢO

3
DANH MỤC CÁC TỪ VIẾT TẮT SỬ DỤNG TRONG SÁNG KIẾN

Các từ viết tắt Ý nghĩa

THCS Trung học cơ sở


THPT Trung học phổ thông
PPDH Phương pháp dạy học
HSG Học sinh giỏi
QHĐ Quy hoạch động

4
BÁO CÁO KẾT QUẢ
NGHIÊN CỨU, ỨNG DỤNG SÁNG KIẾN

1. Lời giới thiệu


1.1 Lý do chọn đề tài
Kỳ thi chọn học sinh giỏi Trung học phổ thông cấp tỉnh là kỳ thi chọn HSG dành
cho học sinh cấp trung học phổ thông do Sở Giáo dục và Đào tạo Vĩnh Phúc tổ chức vào
tháng 12 với khối 12 và tháng 4 dành cho khối 10,11 hàng năm. Kỳ thi này có ý nghĩa rất
quan trọng trong việc đánh giá chất lượng học tập giữa học sinh trong tỉnh. Công tác bồi
dưỡng HSG là một nhiệm vụ quan trọng trong việc nâng cao chất lượng giáo dục.
Trong quá trình giảng dạy bồi dưỡng HSG của trường, ngoài phương pháp truyền
thống như kỹ thuật đặt câu hỏi trong đàm thoại, tôi cũng đã thử qua rất nhiều PPDH như
dạy học tích hợp để cho học sinh hứng thú. Bản thân tôi cũng đã sử dụng vào dạy học kết
hợp với các PPDH đổi mới, phát huy tính tích cực, sáng tạo của người học. Nhận thấy học
sinh hào hứng tham gia, tích cực, làm việc nhóm và trao đổi với giáo viên, những giờ học
bồi dưỡng học sinh sôi nổi và hào hứng hơn. Trong giảng dạy bồi dưỡng HSG theo phân
phối và kế hoạch chương trình của nhà trường. Trong bậc THPT môn lập trình được sử
dụng phổ biến là ngôn ngữ Pascal với hệ thống lập trình Free Pascal. Việc trang bị cho
học sinh năng khiếu, phục vụ cho kì thi tin học là vấn đề xem xét và xử lý. Để việc học có
hiệu quả và chất lượng cho môn thi các em tham gia, ngoài kiến thức cơ bản của lập trình,
các em muốn giải quyết các bài toán khó và đạt kết quả tốt trong các kì thi thì các em cần
được ôn luyện kiến thức thuật toán kĩ và bài bản.
Thuật toán là nội dung kiến thức quan trọng giành cho cả ba khối học bồi dưỡng
HSG ở trường. Nếu học sinh tham gia học bồi dưỡng HSG thì học sinh nhất định phải biết
thuật toán từ cơ bản cho đến thuật toán kinh điển. Với thuật toán số học thì trong các đề
thi không thể thiếu, và gần một nửa các bài thi trong các cuộc thi HSG môn Tin THPT
cần đến QHĐ. Tất nhiên, có những cách khác để giải bài toán đó. Nhưng vì các cuộc thi
HSG đều có giới hạn về thời gian, cũng như bộ nhớ của chương trình, nên một thuật toán
hiệu quả là cực kỳ cần thiết. Và trong những trường hợp như vậy, QHĐ là một trong
những thuật toán xuất hiện nhiều nhất. Thuật toán QHĐ được ưa chuộng bởi vì ban đầu,
bài toán có muôn hình vạn trạng và học sinh suy nghĩ rất nhiều mới tìm ra được lời giải.
Không có một công thức chuẩn mực nào áp dụng được cho mọi bài toán. Bởi vì sự phổ
biến của nó, học sinh bắt buộc phải cực kỳ thuần thục thuật toán này nếu muốn có kết quả
tốt trong các cuộc thi.
Bám sát đề thi và nội dung chương trình ôn bồi dưỡng HSG tôi thấy được tầm
quan trọng của nội dung này đối với học sinh khi học và phù hợp khi dùng PPDH tích cực
nên tôi đã thiết kế hình thành kĩ thuật dạy học và chọn phương pháp này vào thử nghiệm
dạy học làm phương pháp đổi mới trong giảng dạy để góp phần nâng cao hiệu quả chất
lượng HSG.
5
Với những yêu cầu đổi mới giáo dục hiện nay, công tác bồi dưỡng HSG cũng có
thêm nhiều nhiệm vụ nặng nề hơn về chất lượng. Trên cơ sở tự đổi mới, các nhà trường
chủ động thay đổi các PPDH tích cực, phương thức và nội dung đào tạo HSG từ học cái
gì sang học như thế nào và học để làm gì, triển khai các hoạt động dạy học tích cực, rèn
luyện cho học sinh tính năng động, sáng tạo, năng lực, thay đổi hình thức bồi dưỡng từ
truyền đạt sang tổ chức cho học sinh làm chuyên đề, luyện đề… Nhận thấy chất lượng
công tác bồi dưỡng HSG có sự cải thiện đáng kể, số lượng giải cũng được tăng đều qua
từng năm.
Vì vậy tôi viết sáng kiến: “ Sử dụng phương pháp dạy học tích cực vào dạy thuật
toán trong ngôn ngữ lập trình Pascal nhằm nâng cao hiệu quả bồi dưỡng học sinh giỏi
tin học THPT”.
Nội dung sáng kiến không thể tránh khỏi các sai sót. Tác giả mong nhận được
những chia sẻ, đóng góp để sáng kiến được hoàn thiện hơn.
1.2 Mục tiêu đề tài
- Dạy học theo PPDH tích cực là PPDH đổi mới vào dạy phần thuật toán trong lập trình
Pascal nhằm tăng tính chủ động tìm tòi, sáng tạo, tư duy của học sinh, tích cực giải quyết
vấn đề cho các bài toán góp phần nâng cao chất lượng bồi dưỡng HSG.
- Nhằm hiểu rõ và nắm vững các PPDH đổi mới, áp dụng PPDH tích cực, thông qua đó
tích lũy những kinh nghiệm dạy học. Đồng thời giúp học sinh không những có cách học
chủ động mà còn tăng hứng thú, biết vận dụng các kiến thức đã học, kích thích được sự
ham học hỏi của các em. Rèn luyện cho học sinh phát triển các kĩ năng tích cực liên quan
đến nội dung học tập và cuộc sống.
- Tạo sự đổi mới trong công tác bồi dưỡng HSG ở các giáo viên trong trường nhằm góp
phần nâng cao chất lượng hiệu quả trong giảng dạy.
- Giúp học sinh nắm chắc kiến thức từ cơ bản đến mở rộng và nâng cao. Điều này có được
là do trong quá trình tìm hiểu, sáng tạo, tư duy và giải quyết vấn đề, học sinh hoàn toàn
chủ động trong việc xác định những nội dung có liên quan để nghiên cứu, tìm hiểu và vận
dụng.
- Giúp học sinh phát triển năng lực đọc tài liệu, kĩ năng nghiên cứu kiến thức, kĩ năng giải
quyết vấn đề, kĩ năng làm việc nhóm, thuyết trình, tranh luận, thương lượng… Những kĩ
năng này được hình thành trong quá trình học sinh nghiên cứu, tìm tòi, vận dụng tài liệu,
làm việc cùng với nhóm để giải quyết vấn đề và sau đó là trình bày báo cáo kết quả trước
lớp học. Từ đó hình thành cho các em học sinh thấy đam mê, ý nghĩa và yêu thích môn
học, thấy được những giá trị của hoạt động nhóm đối với bản thân. Sự thay đổi về thái độ
như vậy sẽ diễn ra từng bước theo quá trình phát triển của PPDH nếu được tổ chức có
hiệu quả.
2. Tên sáng kiến
Sử dụng phương pháp dạy học tích cực vào dạy thuật toán trong ngôn ngữ lập trình
Pascal nhằm nâng cao chất lượng bồi dưỡng học sinh giỏi tin học THPT.
3. Tác giả sáng kiến
- Họ và tên: Nguyễn Thị Dung
6
- Địa chỉ tác giả sáng kiến: Trường THPT Tam Đảo
- Số điện thoại: 09777980
- Email: nguyenthidung2.gvtamdao@vinhphuc.edu.vn
4. Chủ đầu tư tạo ra sáng kiến
- Nguyễn Thị Dung - Trường THPT Tam Đảo - Vĩnh phúc.
5. Lĩnh vực áp dụng sáng kiến:
- Lĩnh vực áp dụng sáng kiến: Đổi mới PPDH theo hướng phát huy năng lực, tính tích
cực, hứng thú, chủ động sáng tạo và phát huy tư duy sáng tạo của học sinh.
- Vấn đề sáng kiến giải quyết: Sử dụng PPDH tích cực vào dạy học nhằm tăng tính chủ
động, khả năng sáng tạo để giải quyết vấn đề khi học phần “Thuật toán trong ngôn ngữ
lập trình Pascal” từ đó nâng cao hiệu quả chất lượng học bồi dưỡng HSG. Qua đó học
sinh nắm được những kiến thức trọng tâm của môn học, hứng thú khi học, say mê tìm tòi
khi được giao nhiệm vụ, giúp học sinh tích cực, yêu thích và gắn bó học đội tuyển hơn.
Và đạt kết quả cao nhất trong các kì thi HSG cấp trường và cấp tỉnh.
- Giảng dạy bồi dưỡng HSG lớp 10,11,12
6. Ngày sáng kiến được áp dụng lần đầu hoặc áp dụng thử
- Trong giảng dạy bồi dưỡng HSG tháng 09/2019 khối 12, lớp 10A1 (vượt cấp),12A1
trường THPT Tam Đảo, năm học 2019 - 2020.
- Trong giảng dạy bồi dưỡng HSG tháng 09/2019 khối 12 , lớp 12A1,12A2 trường THPT
A năm học 2019 - 2020.
7. Mô tả bản chất của sáng kiến
7.1 Nội dung sáng kiến
7.1.1. Mục đích nghiên cứu
- Sử dụng PPDH tích cực, đưa ra những gợi mở cho một vấn đề và cùng học sinh bàn
luận, tìm ra mấu chốt vấn đề cũng như những vấn đề liên quan. Thông qua những dẫn dắt
sẽ kích thích học sinh tiếp tục tìm tòi và khám phá kiến thức. Nhằm tăng tính chủ động,
khả năng sáng tạo, tìm tòi, tư duy của học sinh để vận dụng vào bài học khi học phần
thuật toán trong lập trình Pascal môn Tin học.
- Đặt vấn đề, tìm giải pháp, xây dựng thuật toán, phát hiện tình huống có vấn đề, tính toán
logic, tìm giải pháp để giải quyết vấn đề, và hình thành chương trình tối ưu.
7.1.2. Nhiệm vụ nghiên cứu
- Tìm hiểu cơ sở lý thuyết của PPDH tích cực.
- Tìm hiểu nội dung, đặc điểm và việc dạy học phần kiến thức thuật toán trong ngôn ngữ
lập trình Pascal của môn Tin
- Tìm hiểu đặc điểm tâm lý học sinh học bồi dưỡng HSG
7
- Thực nghiệm sáng kiến ở trường THPT A để đánh giá tính khả thi và rút ra những bài
học kinh nghiệm.
- Đánh giá hiệu quả, chất lượng của giờ học bồi dưỡng HSG của trường THPT.
7.1.3. Đối tượng nghiên cứu
- Sử dụng PPDH tích cực vào giảng dạy thuật toán trong lập trình Pascal
- Hoạt động dạy và học bồi dưỡng HSG của giáo viên và học sinh ở trường THPT theo
PPDH tích cực.
7.1.4. Phạm vi nghiên cứu
Khi dạy bồi dưỡng HSG môn Tin, trong ngôn ngữ lập trình nói chung và ngôn ngữ
lập trình Pascal nói riêng thì có rất nhiều thuật toán, rất phong phú và đa dạng. Tuy nhiên
trong phạm vi sáng kiến kinh nghiệm này tôi chỉ trình bày một số thuật toán phạm vi nằm
trong chương trình bồi dưỡng HSG cả ba khối 10,11,12 và tôi trình bày theo kế hoạch
chương trình bồi dưỡng HSG khối 12 tại trường THPT Tam Đảo và tiến hành thực
nghiệm ở trường THPT A trên cùng địa bàn.
7.1.5. Nội dung sáng kiến kinh nghiệm
7.1.5.1. Giới thiệu về PPDH tích cực
* Tổng quan về PPDH tích cực
- Phương pháp giảng dạy được gọi là tích cực nếu hội tụ được các yếu tố sau:
+ Thể hiện rõ vai trò của nguồn thông tin và các nguồn lực sẵn có
+ Thể hiện rõ được động cơ học tập của người học khi bắt đầu môn học
+ Thể hiện rõ bản chất và mức độ kiến thức cần huy động
+ Thể hiện rõ được vai trò của người học, người dạy, vai trò của các mối tương tác trong
quá trình học
+ Thể hiện được kết quả mong đợi của người học
- Đổi mới phương pháp: được hiểu là “đổi mới cách thực hiện phương pháp”
- PPDH tích cực: được hiểu là “PPDH theo hướng tích cực hóa người học”; hoặc “PPDH
phát huy tính tích cực của người học”.
- Một số PPDH tích cực: Thảo luận nhóm (hợp tác nhóm nhỏ), quan sát, xử lý tình huống,
nghiên cứu trường hợp điển hình, tổ chức trò chơi, dự án, .
- Một số kĩ thuật dạy học tích cực: Động não, khăn trải bàn, trưng bày phòng tranh, công
đoạn, trình bày 1 phút, hỏi chuyên gia, hoàn tất 1 nhiệm vụ, hỏi và trả lời, ...
- Một số PPDH và kĩ thuật dạy tích cực khác : Nêu và giải quyết vấn đề, hỏi đáp trong giờ
học , ghi ý kiến lên bảng, phỏng vấn nhanh, lựa chọn đúng sai, ...

8
- Nói đến PPDH tích cực chính là nói đến cách dạy học mà ở đó, giáo viên là người đưa ra
những gợi mở cho một vấn đề và cùng học sinh bàn luận, tìm ra mấu chốt vấn đề cũng
như những vấn đề liên quan. Không cho phép giáo viên truyền đạt hết kiến thức mình có
đến với học sinh, mà thông qua những dẫn dắt sẽ kích thích học sinh tiếp tục tìm tòi và
khám phá kiến thức đó. Phương pháp này lấy sự chủ động tìm tòi, sáng tạo, tư duy của
học sinh làm nền tảng, giáo viên, chỉ là người dẫn dắt và gợi mở vấn đề. Cách dạy này đòi
hỏi những giáo viên phải có bản lĩnh, vận dụng linh hoạt các PPDH, kĩ thuật dạy học tích
cực tốt, chuyên môn tốt và cả sự nhiệt thành, hoạt động hết công suất trong quá trình
giảng dạy.
* Cách tiến hành PPDH tích cực
- Dạy học thông qua hoạt động của học sinh là chủ yếu
Trong tiết học, học sinh chính là đối tượng chính để khai phá kiến thức. Lấy người học là
trung tâm và giáo viên có vai trò tổ chức, kiểm tra, hỗ trợ hoạt động học tập của học sinh
một cách hợp lý sao cho học sinh tự chủ chiếm lĩnh tri thức. Chính vì thế, giáo viên phải
làm sao đó, với những cách thức gợi mở vấn đề ở một mức độ nhất định sẽ tác động đến
tư duy của học sinh, khuyến khích học sinh tìm tòi và cùng bàn luận về vấn đề đó.
- Chú trọng đến phương pháp tự học
Với PPDH tích cực, giáo viên sẽ chú trọng cho học sinh cách thức rèn luyện và tự học, tự
tìm ra phương pháp học tốt nhất để có thể tự nắm bắt kiến thức mới. Giáo viên loại bỏ
hoàn toàn suy nghĩ cầm tay chỉ việc, đọc - chép… như những cách thức giảng dạy thông
thường khác.
- Ưu tiên phương pháp học nhóm, tập thể
Với phương pháp học tích cực, giáo viên phải biết cách chia đội, nhóm và giúp các học
sinh phối hợp cùng với nhau để tìm ra phương pháp học tốt nhất.
- Chốt lại kiến thức học
Cuối mỗi buổi học, giáo viên sẽ cùng học sinh tổng hợp lại những kiến thức tìm hiểu
được, đồng thời giải đáp những vấn đề học còn thắc mắc, cùng trao đổi và chốt lại kiến
thức cho cả buổi học.
7.1.5.2. Nội dung dạy thuật toán bằng PPDH tích cực
- Phần thuật toán trong ngôn ngữ lập trình Pascal môn Tin học ( Bồi dưỡng HSG tin 12).
- Giáo viên lập kế hoạch tìm hiểu trước những nội dung liên quan đến phần học, đặt mục
tiêu, giao nhiệm vụ cụ thể cho học sinh, cung cấp tài liệu hỗ trợ cho học sinh.
- Giáo viên thiết kế các bước cho thực hiện dạy học theo PPDH tích cực, nêu những mục
tiêu cụ thể giải quyết vấn đề và hướng dẫn học sinh thực hiện.
- Nội dung dạy học theo PPDH tích cực :
Chương trình bồi dưỡng HSG Tin 12 năm 2019 - 2020

9
Buổi Tên bài Thời lượng
2 Các thuật toán về số học 3 tiết
9 Thuật toán QHĐ điển hình 3 tiết

* Mục tiêu phần thuật toán số học


- Về kiến thức:
+ Xây dựng và trình bày thuật toán cho các bài toán kiểm tra số nguyên tố, tính tổng các
chữ số của một số nguyên, tính UCLN, tính tổng các ước số của một số nguyên.
+Viết chương trình cụ thể cho các bài toán.
- Về kỹ năng:
+ Nhận biết được các thuật toán số học từ đó viết được chương trình cho các bài toán từ
mức cơ bản cho tới mức vận dụng linh hoạt vào các bài toán mở rộng
+ Học sinh được rèn luyện các kĩ năng động não, so sánh, phân tích, kĩ năng thuyết trình,
làm việc nhóm để giải quyết tình huống bài học, kĩ năng sử dụng công nghệ hiệu quả
trong học tập.
- Về thái độ:
+ Học sinh hứng thú tìm hiểu các thuật toán về số học bằng PPDH đổi mới.
+ Rèn luyện phẩm chất của người lập trình: cẩn thận, nghiêm túc và say mê với lập trình
giải quyết bài toán đơn giản nhưng ngày một thực tế hơn.
* Mục tiêu phần thuật toán QHĐ điển hình
- Về kiến thức:
+ Xây dựng và trình bày thuật toán một số bài toán QHĐ kinh điển
+ Phân tích và giới thiệu mô hình, công thức thuật toán và một số gợi ý trong cài đặt ,viết
chương trình cụ thể.
- Về kĩ năng:
+ Xác định cấu trúc con tối ưu của bài toán.
+ Xây dựng công thức truy hồi thể hiện mối quan hệ giữa các bài toán con.
+ Học sinh được rèn luyện các kĩ năng động não, so sánh, phân tích, kĩ năng thuyết trình,
làm việc nhóm để giải quyết tình huống bài học, kĩ năng sử dụng công nghệ hiệu quả
trong học tập.
- Về thái độ:
+ Học sinh chú ý và cẩn thận trong việc tiếp thu kiến thức mới, khó hơn để giải quyết các
bài toán khó trong lập trình.
10
+ Tiếp tục củng cố tư duy thuật toán và kĩ năng lập trình, kĩ năng tổ chức dữ liệu đối với
các bài toán.
7.1.5.3. Nội dung kiến thức
7.1.5.3.1. Các thuật toán về số học
1. Thuật toán kiểm tra số nguyên tố
Bài toán 1 : Cho 1 số nguyên dương p. Làm thế nào để biết được p có phải số nguyên tố
hay không?
Input: p nguyên dương
Output: kết luận về tính nguyên tố của p
Ý tưởng thuật toán:
- p=0 hoặc p=1 thì p không phải số nguyên tố

- Nếu p >1 không chia hết cho số nguyên nào trong tất cả các số từ 2 đến thì p là số
nguyên tố. Do đó ta sẽ kiểm tra tất cả các số nguyên từ 2 đến có round(sqrt(p)), nếu p
không chia hết cho số nào trong đó thì p là số nguyên tố.
Nếu thấy biểu thức round(sqrt(p)) khó viết thì ta có thể kiểm tra từ 2 đến p div 2.
Hàm kiểm tra nguyên tố nhận vào một số nguyên p và trả lại kết quả là true (đúng) nếu p
là nguyên tố và trả lại false nếu p không là số nguyên tố.
Chương trình kiểm tra số nguyên tố :

function ngto(p:integer):boolean;
var i:integer;
begin
ngto:=false;
if p<2 then exit;
for i:=2 to trunc(sqrt(p)) do
if p mod i=0 then exit; {nếu p chia hết cho i thì p không là nguyên tố => thoát luôn}
ngto:=true;
end;
Mở rộng: Dựa trên hàm kiểm tra nguyên tố, ta có thể tìm các số nguyên tố từ 1 đến p bằng
cách cho i chạy từ 1 đến p và gọi hàm kiểm tra nguyên tố với từng giá trị i.
2. Thuật toán tính tổng các chữ số của một số nguyên
Bài toán 2 : Cho 1 số nguyên dương p. Tính tổng các chữ số của số nguyên p
11
Input: p nguyên dương
Outphut: kết luận về tổng các chữ số của số nguyên p
Ý tưởng thuật toán:
- Ta chia số đó cho 10 lấy dư (mod) thì được chữ số hàng đơn vị, và lấy số đó div 10 thì
sẽ được phần còn lại. Do đó sẽ chia liên tục cho đến khi không chia được nữa (số đó bằng
0), mỗi lần chia thì được một chữ số và ta cộng dồn chữ số đó vào tổng.
- Hàm tính tổng chữ số nhận vào 1 số nguyên p và trả lại kết quả là tổng các chữ số của
nó:

function tongcs(p:integer): integer;


var s : integer;
begin
s := 0;
while p <> 0 do begin
s := s + p mod 10;
p := p div 10;
end;
tongcs := s;
end;
Mở rộng: Tính tích các chữ số cũng tương tự, chỉ cần chú ý ban đầu gán s là 1 và thực
hiện phép nhân s với p mod 10.
3. Thuật toán EUCLIDE tính UCLN
Bài toán 3 : Viết chương trình nhập vào 2 số nguyên dương a và b. Tìm ước số chung lớn
nhất của a và b.
Input: a,b nguyên dương
Outphut: kết luận về UCLN của 2 số a,b
Ý tưởng thuật toán Euclide: là UCLN của 2 số a,b cũng là UCLN của 2 số b và a mod b,
vậy ta sẽ đổi a là b, b là a mod b cho đến khi b bằng 0. Khi đó UCLN là a.
Hàm UCLN nhận vào 2 số nguyên a,b và trả lại kết quả là UCLN của 2 số đó.

function UCLN(a,b: integer): integer;


var r : integer;

12
begin
while b<>0 do begin
r := a mod b;
a := b;
b := r;
end;
UCLN := a;
end;
Mở rộng:
- Dựa trên thuật toán tính UCLN ta có thể kiểm tra được 2 số nguyên tố cùng nhau hay
không.
- Ngoài ra cũng có thể dùng để tối giản phân số bằng cách chia cả tử và mẫu cho UCLN.
4. Thuật toán tính tổng các ước số của một số nguyên
Bài toán 4 : Viết chương trình nhập vào 1 số nguyên dương p. Tính tổng các ước số của
số nguyên p
Input: p nguyên dương
Outphut: kết luận về tổng các ước số của số nguyên p
Thuật toán của ta dựa trên ý tưởng:
Để tính tổng các ước số của số p, ta cho i chạy từ 1 đến p div 2, nếu p chia hết cho số nào
thì ta cộng số đó vào tổng. (Chú ý cách tính này chưa xét p cũng là ước số của p).

function tongus(p : integer): integer;


var i,s : integer;
begin
s := 0;
for i := 1 to p div 2 do
if p mod i = 0 then s := s + i;
tongus := s;
end;
Mở rộng: Dựa trên thuật toán tính tổng ước số, ta có thể kiểm tra được 1 số nguyên có là
số hoàn thiện không: số nguyên gọi là số hoàn thiện nếu nó bằng tổng các ước số của nó.
13
7.1.5.3.2. Thuật toán QHĐ điển hình
* Kiến thức của thuật toán
- Chúng ta đều biết rằng điều khó nhất để giải một bài toán QHĐ là biết rằng nó là một
bài toán QHĐ và tìm được công thức QHĐ của nó. Rất khó nếu ta mò mẫm từ đầu, nhưng
nếu chúng ta đưa được bài toán cần giải về một bài toán QHĐ kinh điển thì sẽ dễ dàng
hơn nhiều. Do đó, tìm hiểu mô hình, công thức và cách cài đặt những bài toán QHĐ kinh
điển là một việc rất cần thiết.
- Để tránh tình trạng giải đi giải lại một bài toán, quy hoạch động thực hiện phương pháp
lưu trữ kết quả của các bài toán con đó trên một bảng. Khi cần tìm kết quả của một bài
toán con nào ta chỉ cần lấy trực tiếp từ bảng ra. Tuy nhiên, cái khó nhất để giải một bài
toán QHĐ là ở chỗ, ta biết rằng nó là một bài toán QHĐ, nghĩa là cần phải xác định được
cấu trúc con tối ưu (các bài toán con gối lên nhau) của bài toán đặt ra. Để giúp các em học
sinh tiếp cận dễ dàng với thuật toán này, tôi đề xuất việc giải quyết thuật toán này theo 5
bước như sau:
+Bước 1: Xác định cấu trúc con tối ưu của bài toán.
+Bước 2: Xây dựng công thức truy hồi thể hiện mối quan hệ giữa các bài toán
con. Trong các bài toán QHĐ thì nó có một tên gọi mới là công thức QHĐ.
+ Bước 3: Xác định trình tự tính toán như thế nào cho hợp lý? Nghĩa là: làm thế nào để
trước khi giải bài toán con nào đó ta đã giải cái bài toán con nhỏ hơn nó rồi. Bước này là
bước xác định đâu là bài toán con, đâu là bài toán lớn hơn.
+ Bước 4: Giải quyết trực tiếp các bài toán con cơ bản như thế nào?
+ Bước 5: Dựa trên giá trị tối ưu của các bài toán con xác định được từ công thức QHĐ
tính toán, truy vết tìm ra nghiệm của bài toán ban đầu. Ở đây, bước 1 và bước 2 có mối
quan hệ chặt chẽ với nhau. Để các em có thể hình dung cụ thể từng bước thực hiện như
thế nào, tôi sẽ viết chi tiết nội dung giải các bài toán QHĐ cơ bản dưới đây
* Một số bài toán điển hình
Bài 1: Dãy con đơn điệu dài nhất
Cho dãy a1,a2,..an. Hãy tìm một dãy con tăng có nhiều phần tử nhất của dãy.
N=6

9 1 3 7 4 6
Các phần tử trong dãy kết quả chỉ xuất hiện 1 lần. Vì vậy phương pháp làm là ta sẽ dùng
vòng For duyệt qua các phần tử ai trong dãy, khác với các bài toán của mô hình 4(đặc
trưng là bài toán đổi tiền), các phần tử trong dãy có thể được chọn nhiều lần nên ta thực
hiện bằng phương pháp cho giá trị cần quy đổi tăng dần từng đơn vị.

14
Thứ tự của các phần tử được chọn phải được giữ nguyên so với dãy ban đầu.Đặc trưng
này có thể mất đi trong một số bài toán khác tùy vào yêu cầu cụ thể. Chẳng hạn bài Tam
giác bao nhau.
Công thức QHĐ
Hàm mục tiêu : f = độ dài dãy con.
Vì độ dài dãy con chỉ phụ thuộc vào 1 yếu tố là dãy ban đầu nên bảng phương án là bảng
một chiều. Gọi L(i) là độ dài dãy con tăng dài nhất, các phần tử lấy trong miền từ a1 đến
ai và phần tử cuối cùng là ai. Nhận xét với cách làm này ta đã chia 1 bài toán lớn (dãy con
của n số) thành các bài toán con cùng kiểu có kích thước nhỏ hơn (dãy con của dãy i số).
Vấn đề là công thức truy hồi để phối hợp kết quả của các bài toán con.
Ta có công thức QHĐ để tính L(i) như sau:
• L(1) = 1. (Hiển nhiên)
• L(i) = max(1, L(j)+1 với mọi phần tử j: 0<j<i và aj≤ai).
Tính L(i) : phần tử đang được xét là ai. Ta tìm đến phần tử aj <ai có L(j) lớn nhất. Khi đó
nếu bổ sung ai vào sau dãy con ...aj ta sẽ được dãy con tăng dần dài nhất xét từ a1...ai.
Chương trình

Program ChuongTrinh;
const fi = 'DAYSO.INP';
fo = 'DAYSO.OUT';
MAX = 100;
var a: array [1..MAX] of integer;
n: integer;
L, Truoc: array [1..MAX] of integer;
f: text;
procedure Nhap;
var i: integer;
begin
assign(f, fi); reset(f);
readln(f, n);
for i:= 1 to n do read(f, a[i]);
close(f);

15
end;
procedure QHD;
var i, j: integer;
begin
fillchar(Truoc, sizeof(Truoc), 0);
L[1]:= 1;
for i:= 2 to n do
begin
L[i]:= 1;
for j:= 1 to i-1 do
if a[j] <= a[i] then
if 1 + L[j] > L[i] then
begin
L[i]:= L[j] + 1;
Truoc[i]:= j;
end;
end;
end;
procedure TruyVet(k: integer);
begin
if Truoc[k] = 0 then
begin
write(f, a[k]);
exit;
end;
TruyVet(Truoc[k]);
write(f, ' ', a[k]);
end;
procedure KetQua;
16
var i, k: integer;
begin
k:= 1;
for i:= 2 to n do
if L[i] > L[k] then k:= i;
assign(f, fo); rewrite(f);
writeln(f, L[k]);
TruyVet(k);
close(f);
end;
BEGIN
Nhap;
QHD;
KetQua;
END.
Bài 2: Tìm mảng con liên tục có tổng lớn nhất (Bài toán mở rộng từ bài 1)
N=7

-1 7 -2 -3 4 2 -3
Chúng ta sẽ tuần tự thực hiện 5 bước trên:
Bước 1: Xác định cấu trúc con tối ưu của bài toán
Bằng cách tiếp cận tự nhiên, chúng ta xác định được: mảng con liên tục có tổng lớn nhất
cần tìm sẽ phải kết thúc tại một trong n vị trí: hoặc 1, hoặc 2,…, hoặc n. Vậy nếu ta gọi
L(i) là độ dài mảng con liên tục có tổng lớn nhất lấy từ miền a1 đến ai và phần tử cuối
cùng là ai thì độ dài của mảng con liên tục dài nhất là: max{L(i) với 1≤ i≤ n}. Ta đã đạt
được việc xác định được cấu trúc con tối ưu cho bài toán, điều này được chứng tỏ bằng
bước 2 ngay sau đây:
Bước 2: Xây dựng công thức QHĐ
Do mảng con liên tục lớn nhất từ a1 tới ai hoặc là chứa ai-1 hoặc là không chứa ai-1.
Trường hợp không chứa ai-1 thì mảng con liên tục ñó chỉ chứa một phần tử là ai mà thôi
(vì yêu cầu mảng phải liên tục). Vậy: L(i) = max{a[i], L(i-1) + a[i]}
Bước 3: Xác định trình tự tính toán thế nào cho hợp lý?
17
Trường hợp đơn giản này chỉ cần tính toán theo trình tự tự nhiên. for i:= 2 to n do
L[i]:= max(a[i], L[i-1] + a[i]);
Bước 4: Xác định bài toán con cơ bản
L[1]:= a[1];
Bước 5: Truy vết, tìm nghiệm
max:= -∞;
for i:= 1 to n do
if L[i] > max then
begin
max:= L[i];
k:= i;
end;
i:= k;
while max > 0 do
begin
writeln(i, a[i]);
max:= max - a[i];
i:= i - 1;
end;
Chương trình

Program ChuongTrinh;
const fi = 'DAYSO1.INP';
fo = 'DAYSO1.OUT';
MAX =1000;
var a: array [1..MAX] of integer;
n: integer;
L: array [1..MAX] of integer;
f: text;
procedure Nhap;
18
var i: integer;
begin
assign(f, fi); reset(f);
readln(f, n);
for i:= 1 to n do read(f, a[i]);
close(f);
end;
procedure QHD;
var i, j: integer;
begin
L[1]:= 1;
for i:= 2 to n do
begin
L[i]:= 1;
if a[i-1] <= a[i] then
L[i]:= 1 + L[i-1];
end;
end;
procedure TruyVet(k: integer);
var i: integer;
begin
for i:= k-L[k]+1 to k do
write(f, ' ', a[i]);
end;
procedure KetQua;
var i, k: integer;
begin
k:= 1;
for i:= 2 to n do
19
if L[i] > L[k] then k:= i;
assign(f, fo); rewrite(f);
writeln(f, L[k]);
TruyVet(k);
close(f);
end;
BEGIN
Nhap;
QHD;
KetQua;
END.
7.1.5.4. Quy trình thực hiện dạy học theo PPDH tích cực
Từ những kiến thức về mục tiêu, kĩ năng và thái độ của nội dung bài học, tôi xây
dựng tiến trình PPDH theo PPDH tích cực tương ứng các tiến trình sau:
7.1.5.4.1. Các thuật toán về số học
(Buổi 2 - Các thuật toán về số học. Chương trình bồi dưỡng HSG 12 năm 2019-2020)
Bước 1. Tìm hiểu nội dung cần giải quyết:
Giáo viên cho học sinh xem nội dung đề bài của các bài toán. Sau đó để học sinh xác định
input, output, ý tưởng của bài toán. Kết thúc bước này giáo viên đưa ra câu hỏi dẫn dắt bài
toán.
- Bài toán 1 : Cho 1 số nguyên dương p. Làm thế nào để biết được p có phải số nguyên tố
hay không?
- Bài toán 2 : Cho 1 số nguyên dương p. Tính tổng các chữ số của số nguyên p
- Bài toán 3 : Viết chương trình nhập vào 2 số nguyên dương a và b. Tìm ước số chung
lớn nhất của a và b.
- Bài toán 4 : Viết chương trình nhập vào 1 số nguyên dương p. Tính tổng các ước số của
số nguyên p
Bước 2. Khái quát vấn đề chính trong bài học: Từ việc đọc đề bài, ghi nhớ và làm việc với
tư liệu minh họa học sinh đưa ra nội dung chính của bài học. Giáo viên đưa ra câu hỏi “
trình bày ý tưởng giải quyết cho bài toán”, để trả lời câu hỏi này học sinh sẽ tìm hiểu,
động não qua các ví dụ minh họa… học sinh có thể đối chiếu với những vấn đề qua các ví
dụ minh hoạ khác, so sánh, kiểm tra tính đúng đắn của thuật toán.

20
Bước 3. Tiến hành cho học nhóm. Giáo viên sau khi chia 2 nhóm (Do đặc thù môn học, số
lượng học sinh bồi dưỡng ít hoặc nhiều, việc chia nhóm và hoạt động cho học sinh giáo
viên bám sát nội dung công việc, và linh hoạt phân chia nhóm cho hợp lí) thực hiện hoạt
động bài học. Các nhóm bắt đầu phân công nhiệm vụ cụ thể cho mỗi thành viên. Trong
hoạt động của nhóm thì nhóm 1 lại chia làm 2 đội, mỗi đội nhỏ đảm nhận 1 nội dung, khi
làm thì các đội nhỏ dưới sự chỉ đạo của nhóm trưởng có thể trao đổi qua lại với các thành
viên khác trong nhóm khác và tạo ra kết quả chung là sản phẩm được giao thực hiện.
Từng cá nhân sẽ thu thập dữ liệu qua các nguồn, phân tích và tích lũy kiến thức thu được
trong khi làm việc, các kiến thức mà học sinh tích lũy được thử nghiệm qua thực tiễn. Để
xây dựng thuật toán thống nhất, tối ưu và hiệu quả nhất, hình thành năng lực viết chương
trình cho các em.
- Nhóm 1 : Bài 1 và bài 2 (Chia làm 2 đội)
Đội 1: Bài toán 1
p=0 hoặc p=1 thì p không phải số nguyên tố

Nếu p >1 không chia hết cho số nguyên nào trong tất cả các số từ 2 đến thì p là số
nguyên tố. Do đó ta sẽ kiểm tra tất cả các số nguyên từ 2 đến có round(sqrt(p)), nếu p
không chia hết cho số nào trong đó thì p là số nguyên tố.
Nếu thấy biểu thức round(sqrt(p)) khó viết thì ta có thể kiểm tra từ 2 đến p div 2.
Hàm kiểm tra nguyên tố nhận vào một số nguyên p và trả lại kết quả là true (đúng) nếu p
là nguyên tố và trả lại false nếu p không là số nguyên tố.
Đội 2: Bài toán 2 :
Ta chia số đó cho 10 lấy dư (mod) thì được chữ số hàng đơn vị, và lấy số đó div 10 thì sẽ
được phần còn lại. Do đó sẽ chia liên tục cho đến khi không chia được nữa (số đó bằng 0),
mỗi lần chia thì được một chữ số và ta cộng dồn chữ số đó vào tổng.
Hàm tính tổng chữ số nhận vào 1 số nguyên p và trả lại kết quả là tổng các chữ số của nó:
- Nhóm 2 : Thực hiện bài 3 và 4 (Nhóm 2 chia làm 2 đội)
Đội 1 :Bài toán 3
Ý tưởng của thuật toán Euclide là UCLN của 2 số a,b cũng là UCLN của 2 số b và a mod
b, vậy ta sẽ đổi a là b, b là a mod b cho đến khi b bằng 0. Khi đó UCLN là a.
Hàm UCLN nhận vào 2 số nguyên a,b và trả lại kết quả là UCLN của 2 số đó.
Đội 2 :Bài toán 4
Để tính tổng các ước số của số p, ta cho i chạy từ 1 đến p div 2, nếu p chia hết cho số nào
thì ta cộng số đó vào tổng. (Chú ý cách tính này chưa xét p cũng là ước số của p).

21
Bước 4. Thu thập kết quả, báo cáo: Kết quả cuối cùng của nhóm thực hiện là chương trình
được học sinh viết trên phần mềm Free Pascal. Giáo viên cho các nhóm báo cáo việc thực
hiện chương trình và sản phẩm của nhóm.

- Nhóm 1 thực hiện:


Bài toán 1 : Cho 1 số nguyên dương p. Làm thế nào để biết được p có phải số nguyên tố
hay không?

Hình 1.1. Hình ảnh sản phẩm bài 1 nhóm 1

22
Hình 1.2. Hình ảnh kết quả bài 1 nhóm 1

Bài toán 2 : Cho 1 số nguyên dương p. Tính tổng các chữ số của số nguyên p

Hình 2.1. Hình ảnh sản phẩm bài 2 nhóm 1

Hình 2.2. Hình ảnh kết quả bài 2 nhóm 1

23
- Nhóm 2 thực hiện:
Bài toán 3 : Viết chương trình nhập vào 2 số nguyên dương a và b. Tìm ước số chung lớn
nhất của a và b.

Hình 3.1. Hình ảnh sản phẩm bài 3 nhóm 2

Hình 3.2. Hình ảnh kết quả bài 3 nhóm 2

24
Bài toán 4 : Viết chương trình nhập vào 1 số nguyên dương p. Tính tổng các ước số của
số nguyên p

Hình 4.1. Hình ảnh sản phẩm bài 4 nhóm 2

Hình 4.2. Hình ảnh kết quả bài 4 nhóm 2

Ban giám khảo là giáo viên dạy và đại diện của các nhóm, giáo viên dự giờ (giáo viên dạy
mời các giáo viên trong nhóm Tin tại trường ).

25
Bước 5. Đánh giá giờ học, rút kinh nghiệm:
- Giáo viên đánh giá bài báo cáo của nhóm học sinh, cả quá trình thực hiện qua sản phẩm
như thuyết trình trên lớp, trình bày chương trình trên máy tính, tinh thần hợp tác khi làm
việc nhóm và hỏi: “Bài báo cáo, chương trình và kết quả chương trình đạt yêu cầu về ý
tưởng, chương trình và câu hỏi tham luận, tính chính xác, thuật toán đã tối ưu hiệu quả
nhất chưa?”, “Các thành viên nhóm khác đánh giá chéo lẫn nhau. Mục đích giúp học sinh
biết cách đánh giá rút kinh nghiệm cho nhau, rèn tư duy biện chứng vấn đề.
- Giáo viên rút kinh nghiệm thông qua 1 số câu hỏi: “Trong quá trình học em học được gì
từ các bạn học sinh trong nhóm?”. Học sinh học được qua những câu hỏi cả của người
học, dự báo cáo và giáo viên.
- Giáo viên mở rộng cho từng bài toán, yêu cầu các em vận dụng linh hoạt thuật toán đã
được học từ đó có thể giải quyết các bài toán khác sáng tạo, và xử lý tốt các bài toán bắt
gặp trong đề thi HSG mà cần có các thuật toán này hỗ trợ.
Nhóm 1:
Bài toán 1 :
Mở rộng: Dựa trên hàm kiểm tra nguyên tố, ta có thể tìm các số nguyên tố từ 1 đến p bằng
cách cho i chạy từ 1 đến p và gọi hàm kiểm tra nguyên tố với từng giá trị i.
Bài toán 2 :
Mở rộng: Tính tích các chữ số cũng tương tự, chỉ cần chú ý ban đầu gán s là 1 và thực
hiện phép nhân s với p mod 10.
Nhóm 2:
Bài toán 3 :
Mở rộng:
Dựa trên thuật toán tính UCLN ta có thể kiểm tra được 2 số nguyên tố cùng nhau hay
không.
Ngoài ra cũng có thể dùng để tối giản phân số bằng cách chia cả tử và mẫu cho UCLN.
Bài toán 4 :
Mở rộng: Dựa trên thuật toán tính tổng ước số, ta có thể kiểm tra được 1 số nguyên có là
số hoàn thiện không: số nguyên gọi là số hoàn thiện nếu nó bằng tổng các ước số của nó.
- Học sinh tiếp tục thực hiện công việc mới được giao với những gợi ý và dẫn dắt của giáo
viên trong phần mở rộng.
- Giáo viên tiếp tục đánh giá kĩ năng lập trình, năng lực áp dụng thuật toán vào giải các
bài toán thường gặp trong đề thi HSG.

26
7.1.5.4.2. Thuật toán QHĐ kinh điển
(Buổi 9 - Thuật toán quy hoạch động điển hình - Chương trình bồi dưỡng HSG 12 năm
học 2019-2020).
Bước 1. Tìm hiểu nội dung cần giải quyết:
Giáo viên cho học sinh xem nội dung đề bài của các bài toán. Sau đó để học sinh xác định
input, output, ý tưởng của bài toán. Kết thúc bước này giáo viên đưa ra câu hỏi dẫn dắt bài
toán.
Bài 1: Gọi L[i] là độ dài dãy con tăng dần, dài nhất của a[1],a[2],..,a[i] và kết thúc bởi a[i]
thì ta tính được:
L[1]=?; L[2]=?; …; L[i]=?
Bước 2. Khái quát vấn đề chính trong bài học: Từ việc đọc đề bài, ghi nhớ và làm việc với
tư liệu minh họa học sinh đưa ra nội dung chính của bài học. Giáo viên đưa ra câu hỏi “
trình bày ý tưởng giải quyết cho bài toán”, để trả lời câu hỏi này học sinh sẽ tìm hiểu,
động não qua các ví dụ minh họa… học sinh có thể đối chiếu với những vấn đề qua các ví
dụ minh hoạ khác, so sánh, kiểm tra tính đúng đắn của thuật toán.
Bài 1:
VD: n=6

9 1 3 7 4 6
Giáo viên cụ thể đưa ra gợi ý.

n 9 1 3 7 4 6
i 1 2 3 4 5 6
L[1]=1; L[2]=1;
L[3]=1
=L[2]+1=1+1=2  Truoc[3]=2;
L[4]=1
=max(1+L[2],1+L[3])
=1+2=3  Truoc[4]=3
L[5]=1
=max(1+L[2],1+L[3])
=1+2=3  Truoc[5]=3
L[6]=1

27
=max(1+L[2],1+L[3],1+L[4])
=1+3=4  Truoc[6]=5
Bước 3. Tiến hành cho học nhóm. Giáo viên sau khi chia 2 nhóm thực hiện hoạt động bài
học. Các nhóm bắt đầu phân công nhiệm vụ cụ thể cho mỗi thành viên. Trong hoạt động
của nhóm thì nhóm 1 lại chia làm 2 đội, mỗi đội nhỏ đảm nhận 1 nội dung, khi làm thì các
đội nhỏ dưới sự chỉ đạo của nhóm trưởng có thể trao đổi qua lại với các thành viên khác
trong nhóm khác và tạo ra kết quả chung là sản phẩm được giao thực hiện. Từng cá nhân
sẽ thu thập dữ liệu qua các nguồn, phân tích và tích lũy kiến thức thu được trong khi làm
việc, các kiến thức mà học sinh tích lũy được thử nghiệm qua thực tiễn. Để xây dựng
thuật toán thống nhất, tối ưu và hiệu quả nhất, hình thành năng lực viết chương trình cho
các em.
Nhóm 1 :
- Xác định cấu trúc con tối ưu của bài toán.
- Xây dựng công thức truy hồi thể hiện mối quan hệ giữa các bài toán
con.
Nhóm 2:
- Xác định trình tự tính toán như thế nào cho hợp lý?
- Giải quyết trực tiếp các bài toán con cơ bản như thế nào?
- Dựa trên giá trị tối ưu của các bài toán con xác định được từ công thức QHĐ tính toán,
truy vết tìm ra nghiệm của bài toán ban đầu.
Bước 4. Thu thập kết quả, báo cáo: Kết quả cuối cùng của nhóm thực hiện là chương trình
được học sinh viết trên phần mềm Free Pascal. Giáo viên cho các nhóm báo cáo việc thực
hiện chương trình và sản phẩm của nhóm.
Nhóm 1 và 2 trình bày báo cáo và chương trình trên máy chiếu, mà nhóm làm.
Nhóm 1: Xây dựng công thức QHĐ
L[1]=1
L[i]  L[1]…L[i-1] với (1<=j<=i-1) thỏa mãn a[j]<=a[i];
L[i] = max(1+L[j]) = 1+ max( L[j])
Nhóm 2: Thực hiện truy vết
Truoc[j]=j0
a1 a2 ..aj0…ai-1 ai  a[j0] = a[Truoc[j]]
L[1]…L[k]…L[i] a[k]=a[Truoc[k]]

28
- Sau khi đại diện nhóm báo cáo, học sinh giữa các nhóm lớp trao đổi tranh luận tham
chiếu và đặt câu hỏi với nhau để cùng làm sáng tỏ vấn đề, đưa ra lựa chọn thuật toán tốt
nhất cho bài toán.
Nhóm 1:

procedure QHD;
var i, j: integer;
begin
fillchar(Truoc, sizeof(Truoc), 0);
L[1]:= 1;
for i:= 2 to n do
begin
L[i]:= 1;
for j:= 1 to i-1 do
if a[j] <= a[i] then
if 1 + L[j] > L[i] then
begin
L[i]:= L[j] + 1;
Truoc[i]:= j;
end;
end;
end;
Nhóm 2:

procedure TruyVet(k: integer);


begin
if Truoc[k] = 0 then
begin
write(f, a[k]);
exit;
end;

29
TruyVet(Truoc[k]);
write(f, ' ', a[k]);
end;
Kết quả đạt được từ công việc của nhóm 1 và nhóm 2

Hình 5.1.Hình ảnh sản phẩm và kết quả bài 1 của học sinh
- Ban giám khảo là giáo viên dạy và đại diện của các nhóm, giáo viên dự giờ (giáo viên
dạy mời các giáo viên trong nhóm Tin tại trường )
Bước 5. Đánh giá giờ học, rút kinh nghiệm:
- Giáo viên đánh giá bài báo cáo của nhóm học sinh, cả quá trình thực hiện qua sản phẩm
như thuyết trình trên lớp, trình bày chương trình trên máy tính, tinh thần hợp tác khi làm
việc nhóm và hỏi: “Bài báo cáo, chương trình và kết quả chương trình đạt yêu cầu về ý
tưởng, chương trình và câu hỏi tham luận, tính chính xác, thuật toán đã tối ưu hiệu quả
nhất chưa?”, “Các thành viên nhóm khác đánh giá chéo lẫn nhau. Mục đích giúp học sinh
biết cách đánh giá rút kinh nghiệm cho nhau, rèn tư duy biện chứng vấn đề.
- Giáo viên rút kinh nghiệm thông qua 1 số câu hỏi: “Trong quá trình học em học được gì
từ các bạn học sinh trong nhóm?”. Học sinh học được qua những câu hỏi cả của người
học, dự báo cáo và giáo viên.
- Giáo viên mở rộng cho từng bài toán, yêu cầu các em vận dụng linh hoạt thuật toán đã
được học từ đó có thể giải quyết các bài toán khác sáng tạo, và xử lý tốt các bài toán bắt
gặp trong đề thi HSG mà cần có các thuật toán này hỗ trợ.
Bài2: Tìm mảng con liên tục có tổng lớn nhất (bài toán mở rộng)

30
N=7

-1 7 -2 -3 4 2 -3
Nhóm 1:
- Xác định cấu trúc con tối ưu của bài toán
Bằng cách tiếp cận tự nhiên, chúng ta xác định được: mảng con liên tục có tổng lớn nhất
cần tìm sẽ phải kết thúc tại một trong n vị trí: hoặc 1, hoặc 2,…, hoặc n. Vậy nếu ta gọi
L(i) là độ dài mảng con liên tục có tổng lớn nhất lấy từ miền a1 đến ai và phần tử cuối
cùng là ai thì độ dài của mảng con liên tục dài nhất là: max{L(i) với 1≤ i≤ n}. Ta đã đạt
được việc xác định được cấu trúc con tối ưu cho bài toán, điều này được chứng tỏ bằng
bước 2 ngay sau đây:
- Xây dựng công thức QHĐ
Do mảng con liên tục lớn nhất từ a1 tới ai hoặc là chứa ai-1 hoặc là không chứa ai-1.
Trường hợp không chứa ai-1 thì mảng con liên tục ñó chỉ chứa một phần tử là ai mà thôi
(vì yêu cầu mảng phải liên tục). Vậy: L(i) = max{a[i], L(i-1) + a[i]}
Nhóm 2:
- Xác định trình tự tính toán thế nào cho hợp lý?
Trường hợp đơn giản này chỉ cần tính toán theo trình tự tự nhiên. for i:= 2 to n do
L[i]:= max(a[i], L[i-1] + a[i]);
- Xác định bài toán con cơ bản
L[1]:= a[1];
Bước 5: Truy vết, tìm nghiệm
max:= -∞;
for i:= 1 to n do
if L[i] > max then
begin
max:= L[i];
k:= i;
end;
i:= k;
while max > 0 do
begin

31
writeln(i, a[i]);
max:= max - a[i];
i:= i - 1;
end;
- Học sinh tiếp tục thực hiện công việc mới được giao với những gợi ý và dẫn dắt của giáo
viên trong phần mở rộng.
Kết quả đạt được từ công việc của nhóm 1 và nhóm 2

Hình 5.2. Hình ảnh sản phẩm và kết quả bài 2 mở rộng của học sinh
- Giáo viên đánh giá năng lực học sinh, kĩ năng lập trình, hiểu bài, biết cách vận dụng
sáng tạo giải quyết các bài toán khác.
7.2 Về khả năng áp dụng của sáng kiến:
- Sáng kiến được đưa vào dạy học bồi dưỡng HSG các khối lớp 10, 11, 12 : Phần thuật
toán trong ngôn ngữ lập trình Pascal.
- Hiện sáng kiến đang được sử dụng bồi dưỡng HSG khối 12 năm học 2019 - 2020, đang
dần được triển khai ở cả 3 cấp học, và thí điểm một lớp ở trường THPT A trên cùng địa
bàn với giáo viên dạy môn tin học để đảm bảo tính ứng dụng cao và đem lại kết quả tốt
nhất.
- Trong dạy học bồi dưỡng HSG khối 12 tại trường THPT A
- Sáng kiến được áp dụng trong việc dạy bồi dưỡng HSG lớp 10, lớp 11 và lớp 12.
- Qua nghiên cứu, tìm hiểu về cách thức và phương pháp bồi dưỡng HSG ở một số trường
THPT trên địa bàn tỉnh Vĩnh Phúc, tôi nhận thấy việc thực hiện bồi dưỡng HSG được
32
trình bày trong sáng kiến mang lại kiệu quả, kết quả cao cho HSG trên địa bàn tỉnh Vĩnh
Phúc và nhiều địa phương khác, giúp học sinh hứng thú, phát huy năng lực sáng tạo trong
quá trình học tập.
8. Những thông tin cần được bảo mật : Không có
9. Các điều kiện cần thiết để áp dụng sáng kiến
* Đối với lãnh đạo nhà trường:
- Tạo điều kiện về cơ sở vật chất, về thời gian, và khuyến khích giáo viên tích cực bồi
dưỡng đội tuyển HSG môn Tin
- Tăng cường các buổi sinh hoạt chuyên môn tổ, nhóm chuyên môn, thảo luận về các
PPDH tích cực hiện nay. Có kế hoạch tổ chức dạy học và triển khai đưa vào giảng dạy bồi
dưỡng HSG, chính khóa bằng các PPDH tích cực nhằm nâng cao hiệu quả học tập.
* Đối với giáo viên:
- Giáo viên thường xuyên học hỏi, nâng cao trình độ chuyên môn , xây dựng các kiến
thức, PPDH, kĩ thuật dạy học để kích thích sự hứng thú học tập cho các em. Bên cạnh đó,
giáo viên phải tâm huyết với nghề, nắm bắt tâm sinh lí của học sinh, không tạo áp lực cho
học sinh, tích cực động viên các em kịp thời. Thường xuyên giao nhiệm vụ học tập cho
học sinh chuẩn bị tương ứng nội dung bài học, giao cho các em các tình huống và vấn đề
giải quyết để phát huy khả năng năng lực sáng tạo lập trình.
- Trao đổi, chuyên môn với đồng nghiệp, trao đổi kiến thức liên quan bộ môn với các giáo
viên thuộc nhóm, tổ chuyên môn
* Về phía học sinh
- Học sinh phát huy tính tự giác tự học, nghiên cứu, tìm tòi tài liệu và kiến thức, trao đổi
thường xuyên với giáo viên và các bạn học sinh.
- Học sinh có ý thức học tập, ham học hỏi, hứng thú, tích cực tìm hiểu kiến thức nâng cao,
mới mẻ và nhiệt tình tham gia các hoạt động giáo viên đưa ra.
10. Đánh giá lợi ích thu được hoặc dự kiến có thể thu được do áp dụng sáng kiến
theo ý kiến của tác giả và theo ý kiến của tổ chức, cá nhân đã tham gia áp dụng sáng
kiến lần đầu, kể cả áp dụng thử (nếu có) theo các nội dung sau:
10.1. Đánh giá lợi ích thu được hoặc dự kiến có thể thu được do áp dụng sáng kiến
theo ý kiến của tác giả:
- Nhận thấy trường THPT mà bản thân tôi đang công tác là trường THPT thuộc huyện
miền núi, chất lượng đầu vào thấp so với các trường khác trong tỉnh. Kết quả và chất
lượng HSG môn Tin của nhiều năm không đều và chưa nổi bật. Sau khi tôi áp dụng sáng
kiến vào công tác giảng dạy đội tuyển đã đạt hiệu quả vả kết quả nhất định cho đội tuyển,
góp phần mang lại chất lượng cho nhà trường trong năm học 2019-2020. Đặc biệt là đối
tượng học sinh lại là học sinh lớp 10, là học sinh thi vượt cấp chương trình 12. Kết quả kỳ
thi HSG cấp Tỉnh khối 12 năm 2019-2020 như sau: 1 giải nhì, 1 giải ba và 1 giải khuyến
khích. (Phụ lục 1)

33
- Bên cạnh đó khi áp dụng sáng kiến, giờ học bồi dưỡng HSG của tôi trở nên sinh động,
hấp dẫn và có ý nghĩa.
- Qua kết quả đạt được, sáng kiến có thể được áp dụng và sử dụng như một tài liệu bồi
dưỡng HSG cho các giáo viên khác cùng trường, các giáo viên giảng dạy bồi dưỡng HSG
môn Tin trên quy mô đối với trường THPT trong địa bàn.
- Trong giờ học sử dụng PPDH tích cực vào dạy bồi dưỡng HSG tôi nhận thấy các em sôi
nổi hơn, học sinh chủ động trao đổi vấn đề khó với giáo viên và tranh luận tích cực với
bạn trong lớp, trong nhóm khi báo cáo sản phẩm, kết quả, chương trình.
- So sánh sự hiệu quả, chất lượng và kết quả với năm học trước chưa áp dụng sáng kiến
thì không khí học trầm, ko sôi nổi học sinh chủ yếu ghi chép, hạn chế hoạt động trao đổi
kiến thức và tự tìm hiểu kiến thức, không có sự trao đổi tranh luận với nhau, tập trung
không cao, kết quả kì thi đạt không cao.
- Đáp ứng đổi mới giáo dục, chương trình giáo dục phổ thông mới, giáo viên nắm vững
kiến thức kĩ năng môn học, nắm vững PPDH, dạy học phân hóa, dạy học tích hợp, không
ngừng cố gắng, nhiệt tình đóng góp trí tuệ và sức lực để hoàn thành các nhiệm vụ được
giao. Góp phần to lớn tạo nên những thành tích rất đáng tự hào của nhà trường trong năm
2019-2020. Bước sang năm 2021, bản thân tôi tiếp tục phấn đấu thực hiện mục tiêu nâng
cao chất lượng đào tạo, góp phần đổi mới PPDH theo hướng phát huy tính tích cực học
tập của học sinh theo định hướng phát triển năng lực học sinh. Để phát triển tư duy độc
lập sáng tạo, tính tự chủ, hợi mở cho học sinh trí tò mò và ý thức tự chủ khám phá kiến
thức. Với việc sử dụng PPDH tích cực chính bản thân giáo viên cũng sẽ say mê tìm tòi và
ứng dụng các phương pháp mới vào dạy học để những bài học thêm sinh động, học sinh
tích cực sáng tạo, góp phần vào đổi mới sự nghiệp giáo dục.
10.2. Đánh giá lợi ích thu được hoặc dự kiến có thể thu được do áp dụng sáng kiến
theo ý kiến của tổ chức, cá nhân
- Sau khi tiến hành tổ chức dạy học theo PPDH tích cực, tôi phát phiếu thăm dò ý kiến
của học sinh đội tuyển khối 12 ở các các lớp 10A1 (tham gia thi vượt cấp), 12A1 trường
THPT Tam Đảo và lớp 12A1, 12A2 trường THPT A trên cùng địa bàn (Phụ lục 2,3,4).
Bên cạnh đó giáo viên chuẩn bị phiếu lấy ý kiến của giáo viên (Phụ lục 5). Sau khi học
sinh và giáo viên đánh dấu theo ý kiến cá nhân tôi tổng hợp kết quả từ hai lớp bồi dưỡng
ở 2 điểm trường khác nhau nhưng đa số các em học sinh đều có chung mong muốn giống
nhau là đều thích học PPDH cách đổi mới này, ý kiến của các giáo viên khác về việc sử
dụng dạy học tích cực cho học sinh và kết quả đều rất khách quan. Giáo viên trong trường
và trường THPT A đều thấy đạt hiểu quả và chất lượng hơn so với cách dạy học và
phương pháp trước đây. Trong quá trình học, học sinh tích cực trao đổi kiến thức với học
sinh khác trong đội tuyển, với giáo viên giảng dạy. Học sinh chủ động vận dụng linh hoạt
những kiến thức, kĩ năng đã học để nhận thức những vấn đề mới và kết quả đạt được cao
hơn. Học sinh tham gia học bồi dưỡng rất sôi nổi, nghiêm túc, tích cực và yêu thích môn
học hơn không còn cảm giác đơn điệu, khô khan, chán học. Góp phần tăng tính sáng tạo,
hứng thú, tìm tòi và nghiên cứu khi học kiến thức giúp ích cho ôn luyện HSG ở trường
THPT. Học sinh thu thập được kiến thức một cách vững chắc hơn tạo nền tảng kiến thức
chắc chắn khi thi HSG. PPDH tích cực mang lại hiệu quả cao trong giờ học đội tuyển ở
34
trường THPT. Giúp học sinh có niềm say mê và hứng thú với môn học, hình thành và
phát triển khả năng tư duy, sáng tạo của học sinh.
- Trong năm học 2019 - 2020, bản thân tôi sử dụng PPDH tích cực cho học sinh ở những
tiết học có nội dung bài học phù hợp. Điểm mới của sáng kiến này của tôi là lựa chọn kiến
thức trọng tâm, mới và khó hơn so với các kiến thức sách giáo khoa, đòi hỏi các em phải
ham học hỏi và nghiên cứu sáng tạo. Thông qua dạy học các em được rèn luyện kĩ năng
lập trình thành thạo và chuyên nghiệp. Đây là điểm mới trong PPDH này và đáp ứng được
yêu cầu đối mới dạy học theo định hướng phát triển năng lực học sinh.
- Tiến hành tổ chức kiểm tra bằng đề thi kiểm tra chất lượng HSG lớp 12 trên lớp cho 2
trường (Phụ lục 6). Lấy kết quả đối chiếu 2 trường nhằm đánh giá hiệu quả sáng kiến đạt
được.
Kết quả kiểm tra chất lượng thi HSG lớp 12 tại trường tôi dạy
Bài kiểm tra thang điểm 20
Số lượng HS 05
Điểm đạt trên 10 05
Điểm đạt trên 10 0
Kết quả kiểm tra chất lượng thi HSG lớp 12 tại trường THPT A
Bài kiểm tra thang điểm 20
Số lượng HS 03
Điểm đạt trên 10 03
Điểm đạt trên 10 0
Ngoài kết quả và đánh giá chất lượng học sinh ở trên lớp thì kết quả các em thi HSG cấp
trường tổ chức cuối tháng 11 có kết quả như sau:
Giải khối 12 Số lượng giải
Nhất 01
Nhì 02
Ba 0
Khuyến khích 0
Kết quả của kì thi HSG năm 2017 - 2018 chưa áp dụng sáng kiến:
Giải khối 10 Số lượng giải
Nhất 0
Nhì 0
Ba 0
Khuyến khích 0
35
Giải khối 12 Số lượng giải
Nhất 0
Nhì 0
Ba 0
Khuyến khích 0
Kết quả của kì thi HSG năm 2018 - 2019 tiến hành thử nghiệm thử sáng kiến:
Giải khối 11 Số lượng giải
Nhất 0
Nhì 0
Ba 0
Khuyến khích 02
Kết quả của kì thi HSG năm 2019 - 2020 được áp dụng sáng kiến:
Giải khối 12 Số lượng giải
Nhất 0
Nhì 01
Ba 01
Khuyến khích 01
- Cùng thực hiện PPDH tích cực, tôi có triển khai mở rộng thêm đối tượng học sinh tại 1
trường THPT A trên cùng địa bàn. Kết quả này tôi có được trong kì thi HSG khối 12 năm
học 2019-2020. Kết quả này đánh giá giữa các lớp áp dụng sáng kiến và lớp chưa áp dụng
sáng kiến để thấy được hiệu quả khi áp dụng phương pháp này vào dạy học.
Kết quả của kì thi HSG năm 2019 - 2020 của trường THPT A áp dụng sáng kiến
Giải khối 12 Số lượng giải
Nhất 0
Nhì 01
Ba 02
Khuyến khích 0
- Nhận thấy khi áp dụng dạy học theo PPDH tích cực vào dạy bồi dưỡng HSG cho phần
thuật toán đã mang lại kết quả, thành tích và chất lượng đạt giải tiến bộ hơn. Thống kê kết
quả qua bảng, đối chiếu so sánh với những lớp chưa thực hiện và thực hiện ở cả hai
trường THPT đều cho kết quả giải HSG chất lượng cao, có tiến bộ rõ rệt so với trước đây
chưa áp dụng PPDH tích cực. Vậy nên, tôi thấy rằng việc sử dụng PPDH tích cực vào

36
giảng dạy bồi dưỡng cho HSG là sự thay đổi, sự cần thiết, đáp ứng được những yêu cầu
về kiến thức, sự nhận thức và khả năng lĩnh hội tìm tòi, sáng tạo lập trình của học sinh.
11. Danh sách những tổ chức/cá nhân đã tham gia áp dụng thử sáng kiến

Số Tên tổ chức/cá nhân Địa chỉ Phạm vi/Lĩnh vực


TT áp dụng sáng kiến
1 Nguyễn Thị Dung Trường THPT Tam Đảo Dạy ôn HSG khối 12
2 Nhóm Tin Trường THPT Tam Đảo Dạy ôn HSG khối 10,11
3 Vũ Văn Hiển Trường THPT A Dạy ôn HSG khối 12
4 Lớp 10A1,12A1 Trường THPT Tam Đảo Đổi mới PPDH
5 Lớp 12A1, 12A2 Trường THPT A Đổi mới PPDH

......., ngày.....tháng......năm...... ........, ngày.....tháng......năm......


Thủ trưởng đơn vị/ Tác giả sáng kiến
(Ký tên, đóng dấu) (Ký, ghi rõ họ tên)

Nguyễn Thị Dung

37
Phụ lục
Phụ lục 1: Kết quả thi chọn HSG cấp tỉnh lớp 12 THPT năm học 2019 - 2020

38
Phụ lục 2: Bảng đo hứng thú học tập của đội tuyển HSG trường THPT Tam Đảo

Lớp Không hứng thú Bình thường Khá hứng thú Rất hứng thú
10A1 0 0 01 02
12A1 0 0 01 01

Phụ lục 3: Bảng đo hứng thú học tập của đội tuyển HSG trường THPT A

Lớp Không hứng thú Bình thường Khá hứng thú Rất hứng thú
12A1 0 0 01 01
12A2 0 0 0 01

39
Phụ lục 4: PHIỂU THĂM DÒ Ý KIẾN HỌC SINH
Em hãy trả lời các câu hỏi sau bằng cách đánh dấu (x) vào sự lựa chọn của em.
1. Khi học đội tuyển môn Tin của trường em ngại nhất điều gì?
Mất nhiều thời gian để học
Phương pháp dạy học của GV khô khan
Kiến thức trừu tượng, khó hiểu
2. Trong giờ học độ tuyển, em thích giáo viên sử dụng phương pháp dạy học nào?
Phương pháp hỏi đáp
Làm việc nhóm
PPDH tích cực
Tất cả các phương pháp trên
3. Trong giờ học đội tuyển em thấy khác các buổi học trước đây ở những chi tiết nào
sau đây?
Giáo viên cho ghi ít
Giáo viên giao làm việc nhiều
Giáo viên sử dụng nhiều câu thoại
Giáo viên kết hợp nhiều PPDH mới
4. Theo em, giáo viên sử dụng PPDH tích cực vào nội dung thuật toán trong bồi
dưỡng HSG tin học có tác dụng gì?
Tạo hứng thú
Học sinh chủ động sáng tạo
Bình thường
Không có tác dụng
Dễ nhớ kiến thức
5. Khi được học theo PPDH tích cực các em học được điều gì từ các bạn trong đội
tuyển?
Tinh thần đoàn kết chung
Tìm hiểu kiến thức nhiều
Tự tin khi thuyết trình
Phát huy được sở trường
Mệt mỏi không muốn làm

40
Phụ lục 5:

PHIẾU LẤY Ý KIẾN CỦA GIÁO VIÊN


1. Nhóm tin học có tổ chức cho giáo viên nghiên cứu, bồi dưỡng về PPDH tích cực
không?
Tổ chức hàng năm
Tổ chức hàng tháng
Đôi khi tổ chức
Không tổ chức (năm có, năm không)
2. Theo thầy, cô hiệu quả của việc áp dụng PPDH tích cực trong dạy bồi dưỡng HSG
sẽ như thế nào?
Phát huy tính tích cực
Học sinh học thụ động
Phát huy tính tự chủ
Ý kiến khác………………
3. Vận dụng PPDH tích cực để dạy học bồi dưỡng HSG phát triển những năng lực
nào của học sinh?
Nhận thức
Giải quyết vấn đề
Vận dụng kiến thức vào cuộc sống
Ý kiến khác………………...
4. Thầy, cô đã vận dụng dạy học theo PPDH tích cực trong bồi dưỡng HSG tin học
THPT ở mức độ nào?
Vận dụng thường xuyên
Ít vận dụng
Không biết vận dụng
Dự định sẽ vận dụng
5. Những lợi ích mà dạy học theo PPDH tích cực lại cho học sinh?
Nâng cao tính tự lực
Giảm thiểu hiện tượng
Phát triển kĩ năng hợp tác, giao tiếp
Cả ba lợi ích trên

41
Phụ lục 6: BÀI KIỂM TRA ĐÁNH GIÁ CHẤT LƯỢNG HSG LỚP 12 SAU KHI
HỌC PPDH TÍCH CỰC

ĐỀ KIỂM TRA ĐÁNH GIÁ CHẤT LƯỢNG HSG MÔN TIN LỚP 12
Thời gian làm bài: 180 phút

TỔNG QUAN ĐỀ BÀI


Tên bài Tên chương trình Tập tin dữ liệu Tập tin kết quả
Bài 1 ĐẾM ƯỚC SỐ UOCSO.* UOCSO.INP CFIBO.OUT
Bài 2 DÃY CON DAYCON.* DAYCON.INP DAYCON.OUT
Bài 3 HỆ ĐẾM HEDEM.* HEDEM.INP HEDEM.OUT
Dấu * được thay thế bởi PAS hay CPP của ngôn ngữ lập trình được sử dụng tương ứng là
Pascal hoặc C++.
Hãy lập trình giải 3 bài toán sau:
Bài 1: ĐẾM ƯỚC SỐ
Bạn Nam rất thích học toán, đặc biệt là các bài toán về tổ hợp. Như ta đã biết, giai thừa
của một số nguyên dương N bằng tích của các số tự nhiên từ 1 đến N. Khi tính toán các
giá trị giai thừa như vậy, bạn Nam nhận thấy kết quả tính được có số lượng ước số nhiều
hơn số thừa số tạo ra kết quả đó. Ví dụ: 4!=24 Là tích của bốn thừa số 1, 2, 3 ,4 nhưng kết
quả 24 thì lại có tới 8 ước số là 1, 2, 3, 4, 6, 8, 12, 24.
Yêu cầu: Với một số nguyên dương N, em hãy lập trình giúp bạn Nam tính xem N! có
bao nhiêu ước số.

Dữ liệu vào: từ tập tin văn bản UOCSO.INP gồm 1 số nguyên N (2 ≤ N ≤ 2*1010).
Kết quả: ghi ra tập tin văn bản UOCSO.OUT một số nguyên duy nhất là số lượng ước số
cần tìm
UOCSO.INP UOCSO.OUT
4 8
6 30
Bài 2: DÃY CON
Một dãy số a1, a2, a3,…, an được gọi là dãy tăng dần nếu
a1 <= a2 <= a3,…, <= an
Yêu cầu: Cho một dãy tối đa n số (1 <= n <= 10000); tìm dãy con liên tiếp tăng dần dài
nhất trong dãy nói trên.
Dữ liệu vào: Từ tập tin văn bản daycon.inp; dòng đầu ghi giá trị n; các dòng tiếp theo
gồm các số a1, a2, a3,…, an nguyên dương.
Dữ liệu ra: Ghi vào tập tin văn bản daycon.out dãy con liên tiếp tăng dần dài nhất tìm
được (nếu có nhiều dãy cùng độ dài thì ghi tất cả các dãy ấy).

42
Ví dụ:

daycon.inp daycon.out
11 1 4 10
1 125
4
10
8
3
4
3
2
1
2
5

Bài 3: Hệ đếm
Lần đầu tiên tiếp xúc với các vấn đề cơ sở Tin học, Mạnh ngỡ ngàng và thú vị khi
đượclàm quen với hệ đếm cơ số 2 (Hệ đếm nhị phân). Mạnh nghĩ ra một xâu kí tự chỉ bao
gồm cáckí tự ‘0’ và ‘1’ biểu diễn một số tự nhiên N trong hệ đếm cơ số 2 và đố Hải tìm
biểu diễn của Ntrong hệ đếm cơ số 10 (Hệ đếm thập phân).Ví dụ: Mạnh nghĩ ra xâu
‘00010101’ là biểu diễn của số tự nhiên 15 trong hệ đếm cơ số 2. Yêu cầu: Hãy giúp Hải
chuyển xâu kí tự biểu diễn số tự nhiên N trong hệ đếm cơ số 2 thànhxâu biểu diễn N trong
hệ đếm cơ số 10.Dữ liệu vào: Từ tệp văn bản BAI1.INP gồm một dòng duy nhất chứa xâu
S có độ dài khôngquá 32 ký tự.Dữ liệu ra: Ghi ra tệp văn bản BAI1.OUT xâu biểu diễn
của N trong hệ đếm cơ số 10.

HEDEM.INP HEDEM.OUT
10101110 174
00010101 21

------ Hết ------

43
TÀI LIỆU THAM KHẢO
[1]. Sách giáo khoa tin học lớp 11, nhà xuất bản giáo dục Việt Nam
[2]. Một số bài toán QHĐ điển hình, Nguyễn Thanh Tùng, Ebook
[3]. Bài tập QHĐ, Trần Đỗ Hùng - Đỗ Đức Đông - Lê Sĩ Quang, NXB Giáo dục
[4]. Giải thuật & Lập trình, Lê Minh Hoàng, Ebook
[5]. Dạy và học tích cực - Nhà xuất bản ĐHSP Hà Nội
[6]. Các phương pháp dạy học hiệu quả, Nguyễn Hồng Vân, NXB Giáo dục
[7]. Đổi mới PPDH ở trường THPT, Trần Kiều - Trần Đình Châu, NXB Giáo dục
[8]. Các trang website tham khảo hình ảnh, tư liệu và tài liệu :
https://dthphuongsp.wordpress.com
https://www.slideshare.net
http://giasuttv.net

44

You might also like