Tải bản đầy đủ (.docx) (34 trang)

SKKN Chuyên đề bài toán và thuật toán trong bồi dưỡng học sinh giỏi môn tin 10

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (733.15 KB, 34 trang )

SỞ GIÁO DỤC VÀ ĐÀO TẠO HÀ NỘI

SÁNG KIẾN KINH NGHIỆM
CHUYỀN ĐỀ BÀI TOÁN VÀ THUẬT TOÁN TRONG BỒI
DƯỠNG HỌC SINH GIỎI MÔN TIN HỌC LỚP 10

Lĩnh vực/ Môn:

Tin học – Công nghệ

Cấp học:

THPT

Tên tác giả:

Trần Thị Huyền

Đơn vị công tác:

Trường THPT Đoàn Kết – Hai Bà Trưng

Chức vụ:

Giáo viên

NĂM HỌC 2018 - 2019


Chuyên đề Bài toán và thuật toán trong bồi dưỡng học sinh giỏi môn tin học lớp 10


MỤC LỤC
A. ĐẶT VẤN ĐỀ.......................................................................................2
I. Lý do chọn đề tài:...............................................................................................2
II. Mục đích nghiên cứu:........................................................................................2
III. Nhiệm vụ và phạm vi nghiên cứu:...............................................................2
1. Nhiệm vụ nghiên cứu:.............................................................................2
2. Phạm vi nghiên cứu.................................................................................3
B. GIẢI QUYẾT VẤN ĐỀ.........................................................................4
I. Cơ sở lý luận.......................................................................................................4
1. Cơ sở tâm lý học:.........................................................................................4
1.1. Đặc điểm nhận thức của học sinh đối với môn Tin học:....................4
1.2. Tư duy của học sinh :........................................................................4
2. Cơ sở thực tiễn:...........................................................................................4
II. Nội dung chuyên đề: Bài toán và thuật toán trong bồi dưỡng học sinh giỏi môn
tin học lớp 10 trường THPT Đoàn Kết - Hai Bà Trưng..........................................5
1. Xây dựng chương trình bồi dưỡng..........................................................5
2. Nội dung chuyên đề: Bài toán và thuật toán trong bồi dưỡng học sinh
giỏi tin học lớp 10.........................................................................................6
2.1. Tóm tắt lý thuyết................................................................................6
2.2. Bài tập..............................................................................................10
C. KẾT LUẬN.........................................................................................29
I. Một số kết luận:................................................................................................29
II. Kiến nghị:........................................................................................................30
D. TÀI LIỆU THAM KHẢO.....................................................................31

1/34


Chuyên đề Bài toán và thuật toán trong bồi dưỡng học sinh giỏi môn tin học lớp 10


A. ĐẶT VẤN ĐỀ
I. Lý do chọn đề tài:
Như chúng ta đã biết, học sinh giỏi đạt kết quả cao trong các kỳ thi do nhiều
yếu tố: Tố chất học sinh, sự quan tâm của gia đình, ý thức học tập của học sinh,
việc bồi dưỡng và không ngoại trừ yếu tố may mắn. Tuy nhiên chúng ta không
chỉ chờ đợi và cầu mong ở sự may mắn bởi vì yếu tố may mắn chỉ là một phần
rất nhỏ. Phương ngôn có câu: “ Trở thành nhân tài một phần do tài năng còn 99
phần là ở sự tôi luyện". Theo quan điểm của tôi, điều quan trọng hơn cả là chúng
ta phải trang bị cho các em vững vàng kiến thức trước khi đi thi. Do vậy việc bồi
dưỡng vẫn là yếu tố quan trọng hơn cả. Nhưng chúng ta cần bồi dưỡng học sinh
giỏi những nội dung gì, bồi dưỡng như thế nào cho đạt hiệu quả?
Thực hiện được điều đó, nhà trường của chúng ta đang cố gắng hướng đến
sự phát triển tối đa những năng lực tiềm tàng trong mỗi học sinh. Ở các trường
THPT hiện nay, việc nâng cao chất lượng đại trà, chăm lo bồi dưỡng học sinh
giỏi đang được nhiều cấp bộ chính quyền và nhân dân địa phương quan tâm
nhưng nguyên nhân sâu xa nhất đó chính là thực hiện mục tiêu giáo dục mà
Đảng và Nhà nước đã đề ra.
Thực tế hiện nay ở các trường THPT về công tác bồi dưỡng học sinh giỏi đã
được chú trọng song vẫn còn những bất cập nhất định như: sự say mê của học
sinh với môn Tin học chưa cao; nội dung bài 4: Bài toán và thuật toán khó, trừu
tượng; cách tuyển chọn; phương pháp giảng dạy và đặc biệt là môn Tin học chưa
được chú trọng. Từ những bất cập trên dẫn đến hiệu quả bồi dưỡng không đạt
được như ý muốn. V. ì vậy tôi chọn đề tài: Chuyên đề Bài toán và thuật toán
trong bồi dưỡng học sinh giỏi khối 10 để nghiên cứu.

II. Mục đích nghiên cứu:
Đề xuất một số phương pháp trong việc bồi dưỡng học sinh giỏi môn Tin
học ở trường THPT Đoàn Kết - Hai Bà Trưng, Hà Nội.

III. Nhiệm vụ và phạm vi nghiên cứu:

1. Nhiệm vụ nghiên cứu:
1 - Xây dựng chuyên đề Bài toán và thuật toán
2 - Dạy như thế nào cho đạt hiệu quả?
3 - Các bước rèn luyện cho học sinh
4 - Đề xuất một số biện pháp nhằm nâng cao chất lượng bồi dưỡng học
sinh giỏi môn Tin học ở THPT Đoàn Kết - Hai Bà Trưng.

2/34


Chuyên đề Bài toán và thuật toán trong bồi dưỡng học sinh giỏi môn tin học lớp 10

2. Phạm vi nghiên cứu.
Đề tài chuyên đề Bài toán và thuật toán trong bồi duõng học sinh giỏi khối
10 được nghiên cứu trong quá trình bồi dưỡng học sinh giỏi môn Tin học, tại
trường THPT Đoàn Kết - Hai Bà Trưng qua các năm học 2016 – 2017, 2017 –
2018, 2018 – 2019

3/34


Chuyên đề Bài toán và thuật toán trong bồi dưỡng học sinh giỏi môn tin học lớp 10

B. GIẢI QUYẾT VẤN ĐỀ
I. Cơ sở lý luận
1. Cơ sở tâm lý học:
1.1. Đặc điểm nhận thức của học sinh đối với môn Tin học:
Đối với khối THPT, hiện nay học sinh coi bộ môn Tin học vẫn được xem là
môn học phụ. Do vậy mà đa số học sinh vẫn không quan tâm cho lắm. Có một
số ít học sinh xem môn Tin học là học cho vui. Nhận thức của học sinh về môn

học này còn hạn chế. Bên cạnh đó vẫn có một số em học sinh rất yêu thích, đam
mê.
1.2. Tư duy của học sinh :
Tư duy là quá trình các em hiểu được, phản ánh được bản chất của đối
tượng của các sự vật, hiện tượng được xem xét nghiên cứu trong quá trình học
tập ở học sinh.
Ở các em học sinh khối THPT thì môn Tin học các em bước đã làm quen
nhưng không chú trọng nên khả năng tư duy vẫn còn hạn chế nên việc phân tích
để hiểu được bản chất của vấn đề là rất khó.
2. Cơ sở thực tiễn:
Môn tin học nói chung và chuyên đề Bài toán và thuật toán nói riêng nhìn
chung là khó hiểu, có vẻ hơi trừu tượng. Chính vì vậy mà đối với các em học
sinh lớp 10 đôi lúc vẫn chưa hiểu được các hình khối và sơ đồ khối, bên cạnh đó
đầu vào tuyển sinh vào 10 của nhà trường còn thấp.
Trong thời gian được phân công bồi dưỡng học sinh giỏi môn Tin học lớp
10 tôi nhận thức được tầm quan trọng của công tác bồi dưỡng học sinh giỏi, tôi
đã luôn bám sát, tìm tòi và phát hiện học sinh giỏi. Với nhận thức đó tôi luôn đi
sâu tìm hiểu cấu trúc bài thi học sinh giỏi cụm qua các năm. Cấu trúc đề thi:
Bài
Điểm Nội dung chương trình
Mức độ
1 (Trắc nghiệm) 05
Thông tin và dữ liệu
Dễ
2 (Trắc nghiệm) 02
Cấu trúc máy tính
Vừa
3 (Tự luận )
05
Thuật toán cơ bản

Vừa
4 (Tự luận)
03
Thuật toán cơ bản
Vừa
5 (Trắc nghiệm) 05
Liên hệ thực tế
Khó
Tôi thấy nội dung bài 4: Bài toán và thuật toán, là một nội dung quan trọng
chiếm 40% số điểm trong bài thi. Nhưng đây là nội dung trừu trượng và khó
dạy, sách tham khảo thì rất ít. Vì vậy tôi đã tìm tòi nghiên cứu kĩ nội dung, các
tài liệu tập huấn. Qua sự đó, đối chiếu với thực tế giảng dạy cố gắng tìm những
biện pháp tối ưu nhằm hỗ trợ công tác giảng dạy, bồi dưỡng đạt hiệu quả cao.
Trên cơ sở nghiên cứu đó tôi nhận thấy: Mục tiêu bồi dưỡng học sinh giỏi với
4/34


Chuyên đề Bài toán và thuật toán trong bồi dưỡng học sinh giỏi môn tin học lớp 10

chuyên đề Bài toán và thuật toán không phải là để tạo ra các nhà lập trình
chuyên nghiệp, mà mục tiêu chính của công tác này là: bồi dưỡng khả năng tư
duy, sáng tạo và lập luận, phân tích, thiết kế của học sinh. Giáo viên bồi dưỡng
học sinh giỏi nắm khá chắc nội dung chương trình và kiến thức về thuật toán,
biết vận dụng đổi mới phương pháp dạy học: lấy học sinh làm trung tâm, biết
tôn trọng sự sáng tạo của học sinh. Trong quá trình giảng dạy biết sử dụng nhiều
câu hỏi gợi mở để hướng học sinh phân tích, tìm ra được thuật toán.
Tóm lại: Thực trạng công tác bồi dưỡng học sinh giỏi môn Tin học nói
chung và chuyên đề: Bài toán và thuật toán nói riêng hiện nay tuy có nhiều
thuận lợi nhưng cũng không ít khó khăn. Tuy vậy, khó khăn nào cũng có hướng
giải quyết, thuận lợi nào đều có thể phát huy những khó khăn đó, đề tài xin đưa

ra một số biện pháp giải quyết trong mục II.

II. Nội dung chuyên đề: Bài toán và thuật toán trong bồi dưỡng học
sinh giỏi môn tin học 10 trường THPT Đoàn Kết - Hai Bà Trưng.
Chuyên đề: Bài toán và thuật toán chiếm 40% số điểm trong bài thi học
sinh giỏi cụm. Thiết nghĩ, việc chú trọng bồi dưỡng nội dung này sẽ giúp học
sinh dễ dàng đạt kết quả khả quan hơn. Và kéo theo đó là hứng thú của học sinh
sẽ phần nào được cải thiện.
1. Xây dựng chương trình bồi dưỡng
Hiện nay có rất nhiều sách nâng cao và các tài liệu tham khảo, Internet,...
song chương trình bồi dưỡng chưa có sách hướng dẫn chi tiết, cụ thể từng tiết,
từng buổi học như trong chương trình chính khoá. Vì thế soạn thảo chương trình
bồi dưỡng là một việc làm hết sức quan trọng và rất khó khăn nếu như chúng ta
không có sự tham khảo, tìm tòi và chọn lọc tốt. Giáo viên cần soạn thảo nội
dung bồi dưỡng dẫn dắt học sinh từ cái cơ bản của nội dung chương trình học
chính khoá, tiến dần tới chương trình nâng cao (tức là trước hết phải khắc sâu
kiến thức cơ bản của nội dung học chính khoá, từ đó vận dụng để mở rộng và
nâng cao dần).
Cần soạn thảo chương trình từ cơ bản tới nâng cao, từ đơn giản tới phức
tạp. Đồng thời cũng phải có ôn tập củng cố.
Một số giờ ôn tập, Giáo viên cần giúp các em tổng hợp các dạng bài, các
phương pháp giải theo hệ thống. Vì hầu hết các em chưa tự mình hệ thống được
mà đòi hỏi phải có sự giúp đỡ của giáo viên.
Điều cần thiết, giáo viên đầu tư nhiều thời gian, tham khảo nhiều tài liệu
để đúc rút, soạn thảo cô đọng nội dung chuyên đề Bài toán thuật toán trong
chương trình bồi dưỡng.
5/34


Chuyên đề Bài toán và thuật toán trong bồi dưỡng học sinh giỏi môn tin học lớp 10


Giáo viên cần hướng cho học sinh làm quen cách giải một bài toán cụ thể:
Phân tích kĩ bài toán để tìm INPUT và OUTPUT, tìm ý tưởng từ đó xây dựng
thuật toán cho bài toán
Giáo viên mô tả mẫu thuật toán đối với một bài cụ thể và chỉ rõ cho học
sinh nên viết như thế nào cho đúng, đủ, đẹp để người đọc nhìn vào hiểu ngay
thuật toán đó mình đang làm gì.
Sau khi mô tả thuật toán bằng cách liệt kê và sơ đồ khối, giáo viên hướng
dẫn học sinh mô phỏng thuật toán với ví dụ cụ thể để kiểm tra tính đúng đắn của
thuật toán. Giáo viên nên sử dụng phần mềm Crocodile ICT 605 để mô phỏng
thuật toán cho những bài số dữ liệu nhập vào lớn mà việc chạy thủ công rất khó
để kiểm thử được chương trình.
Và theo tôi nên phân tích nhiều thuật toán, học sinh tự lựa chọn thuật toán
phù hợp.
Cần lưu ý rằng: Tuỳ thuộc vào thời gian bồi dưỡng, khả năng tiếp thu của
học sinh mà lựa chọn mức độ bài khó và từng dạng luyện tập nhiều hay ít.
2. Nội dung chuyên đề: Bài toán và thuật toán trong bồi dưỡng học sinh giỏi
tin học lớp 10.
2.1. Tóm tắt lý thuyết
2.1.1. Cấu trúc rẽ nhánh
 Dạng thiếu:
* Sơ đồ thực hiện:

* Ý nghĩa:
- Nếu điều kiện đúng thực hiện câu lệnh, nếu điều kiện sai thì bỏ qua.
 Dạng đủ:

6/34



Chuyên đề Bài toán và thuật toán trong bồi dưỡng học sinh giỏi môn tin học lớp 10

*Sơ đồ thực hiện:
* Ý nghĩa:
- Nếu điều kiện đúng thực hiện câu lệnh 1, nếu sai thực hiện câu lệnh 2
2.1.2. Cấu trúc lặp
 Lặp với số lần biết trước
* Sơ đồ thực hiện:

* Ý nghĩa:
- B1: Gán giá trị ban đầu cho biến đếm
- B2: Nếu biến đếm ≤ giá trị cuối thì thực hiện lệnh cần lặp, tăng biến
đếm lên 1 đơn vị, quay lại B2
 Lặp với số lần chưa biết trước.
*Sơ đồ khối:

7/34


Chuyên đề Bài toán và thuật toán trong bồi dưỡng học sinh giỏi môn tin học lớp 10

* Ý nghĩa:
- B1: Tính giá trị của điều kiện
- B2: Nếu điều kiện có giá trị đúng thì thực hiện lệnh cần lặp nếu sai thì
thoát ra khỏi vòng lặp.
2.1.3. Rèn luyện kĩ năng xác định bài toán:
Để mô tả thuật toán chính xác thì bước phân tích đề là rất quan trọng,
bước này không thể bỏ qua và nếu bước này làm không kĩ thì có thể sai cả bài
toán.
Ví dụ : Hãy xác định Input và Output, mô tả thuật toán bằng sơ đồ khối để giải

bài toán sau: Nhập vào số N bất kỳ. Kiểm tra xem đó có phải số hoàn hảo
không? Biết rằng số hoàn hảo là số có tổng các ước của nó (trừ chính nó) bằng
chính số đó.
VD: Số 6 có các ước là 1, 2, 3 mà 6 = 1+2+3
Số 28 có các ước 1, 2, 4, 7, 14 mà 28 = 1 + 2 + 4 + 7 +14
* Xác định bài toán
- Input: nhập N
- Output: Thông báo N có phải là số hoàn hảo hay không
*Ý tưởng: GV: Yêu cầu học sinh nêu cách tìm các ước? Cách cộng các ước lại?
Tìm các ước của N (trừ chính nó) sau đó cộng các ước lại và kiểm tra tổng các
ước có bằng N không? Nếu bằng thì thông báo N là số hoàn hảo. Tìm ước bằng
cách lấy N chia cho i với i chạy từ 1  N/2.
2.1.4. Rèn luyện kĩ năng viết thuật toán:
Ta có thể viết thuật toán theo hai cách
- Cách 1: Liệt kê
Bước 1: Bắt đầu
Bước 2: Nhập số nguyên dương N;
Bước 3: S  0; i  1;
Bước 4: Nếu N mod i = 0 thì S  S + i;
Bước 5: i  i+1;
8/34


Chuyên đề Bài toán và thuật toán trong bồi dưỡng học sinh giỏi môn tin học lớp 10

Bước 6: Nếu i > N/2 thì chuyển đến bước 8;
Bước 7: quay lại bước 4;
Bước 8: Nếu S = N thì N là số hoàn hảo và kết thúc
Bước 9: N không là số hoàn hảo và kết thúc
- Cách 2: Sơ đồ khối.

Nếu việc phân tích và đưa ra thuật toán khó bao nhiêu thì việc vẽ sơ đồ
khối lại càng phải chính xác và khó khăn hơn. Phải sử dụng đúng các hình khối
cho các bước và có khả năng tư duy tốt thì mới làm được. Chính vì vậy, trước
khi vẽ sơ đồ khối phải yêu cầu học sinh nắm rõ được chức năng của các hình.
Các ký hiệu dùng trong sơ đồ khối
STT

Ký hiệu

Diễn giải

1

Bắt đầu và kết thúc chương trình

2

In dữ liệu ra màn hình

3

Thực hiện việc tính toán giá trị

4

Thực hiện phép so sánh

5

Quy trình thực hiện các thao tác


2.1.5 Rèn luyện kỹ năng mô phỏng thuật toán

Sau khi mô tả thuật toán để biết thuật toán đã chính xác chưa giáo viên
cần hướng dẫn học sinh mô phỏng thuật toán với ví dụ cụ thể. Học sinh phải xác
9/34


Chuyên đề Bài toán và thuật toán trong bồi dưỡng học sinh giỏi môn tin học lớp 10

định các biến trong bài sau đó chạy chương trình với số liệu cụ thể, từng bước
một kiểm tra sự thay đổi giá trị của các biến xem chính xác chưa. Nếu thuật toán
có bước nào chưa đúng thì việc mô phỏng sẽ giúp học sinh tìm ra được những
lỗi sai đó và sửa lại cho đúng.

Với những thuật toán đơn giản giáo viên có thể mô phỏng thủ công cho
học sinh. Nhưng với những thuật toán khó, dữ liệu nhâp vào lớn thì giáo viên
nên sử dụng phần mềm Crocodile ICT 605 để mô phỏng. Bởi vì việc mô phỏng
thuật toán với giao diện đồ họa rất trực quan, đồng thời người sử dụng có thể
tương tác với hệ thống mô phỏng. Mô phỏng sẽ giúp cho người học nhanh
chóng hiểu được bản chất, hiểu được từng thao tác trong thuật toán hoạt động
như thế nào, đồng thời đánh giá được tính đúng đắn của thuật toán. Còn đối với
người dạy, mô phỏng sẽ giúp cho người dạy dễ dàng truyền đạt ý tưởng của
thuật toán, giúp cho quá trình giảng dạy thuận lợi hơn, chạy được nhiều bộ
test trong thời gian ngắn.
Sau đây là hình ảnh mô phỏng thuật toán kiểm tra tính hoàn hảo của số
nguyên dương N khi sử dụng phần mềm Crocodile ICT 605.

10/34



Chuyên đề Bài toán và thuật toán trong bồi dưỡng học sinh giỏi môn tin học lớp 10

Do giới hạn của sáng kiến nên tôi không trình bày tập trung vào phần mềm
này mà chỉ tập trung vào các dạng bài tập để ôn luyện cho học sinh. Tôi sẽ chia
sẻ kinh nghiệm này vào một sáng kiến khác.
2.2. Bài tập
2.2.1 Cấu trúc rẽ nhánh
Bài 1. Giải phương trình bậc hai: ax2 + bx + c = 0
GV: Yêu cầu học sinh nêu cách giải bài toán trong toán học từ đó đưa ra ý
tưởng.
 Xác định bài toán:
- Input: nhập a,b,c
- Output: đưa ra nghiệm của phương trình
 Ý tưởng:
- Tính Delta = b2 – 4ac
- Nếu Delta = 0 phương trình có 1 nghiệm kép x1, x2 = -b/2a
- Nếu Delta > 0 phương trình có 2 nghiệm phân biệt
- x1, x2 =
- Nếu Delta < 0 phương trình vô nghiệm
 Sơ đồ khối:
11/34


Chuyên đề Bài toán và thuật toán trong bồi dưỡng học sinh giỏi môn tin học lớp 10

Bài 2 Tính tiền điện
Viết chương trình tính tiền điện sinh hoạt hàng tháng với biểu giá như sau
Bậc 1: Cho kWh 0 – 50:
1.549 đồng/kWh

Bậc 2: Cho kWh 51 – 100:
1.600 đồng/kWh
Bậc 3: Cho kWh 101 – 200:
1.858 đồng/kWh
Bậc 4: Cho kWh 201 trở lên:
2.000 đồng/kWh





Xác định bài toán:
Input: Nhập số điện tiêu thụ
Output: Thành tiền
Ý tưởng: Nếu số điện tiêu thụ là N thì
Nếu N > 200 thì Thành tiền = 50*1.549 + 50 *1.600 + 100*1.858 + (N 200)*2.000
Nếu 100 < N < 200 thì Thành tiền = 50*1.549 + 50*16.00 + (N100)*1.858
Nếu 50 < N <100 thì Thành tiền = 50*1.549 + (N-50)*1.600
Còn lại Thành tiền = N *1.549
Sơ đồ khối:

12/34


Chuyên đề Bài toán và thuật toán trong bồi dưỡng học sinh giỏi môn tin học lớp 10

Bài tập tự giải
Bài 3. Mô tả thuật toán để giải các bài toán sau. Giải phương trình bậc nhất:
ax + b = 0
 Ý tưởng:

Bài toán có các trường hợp sau;
a= 0, b=0  Phương trình vô số nghiệm
a= 0, b <> 0  Phương trình vô nghiệm
a <> 0  Phương trình có nghiệm duy nhất là x = -b/a
Bài 4. Nhập vào 3 số a,b,c bất kỳ. Hãy kiểm tra xem 3 số đó có phải là độ dài 3
cạnh của tam giác hay không? Nếu có hãy tính chu vi và diện tích theo công
thức Heron: P = (a+b+c)/2; S =.
 Ý tưởng:
Ba số a,b,c thỏa mãn là 3 cạnh của tam giác khi: a + b > c; a + c > b; b + c >
a và a, b, c > 0.
Bài 5. Viết chương trình nhập vào 3 số nguyên dương, in ra màn hình 3 số theo
thứ tự tăng dần
 Ý tưởng:
Nếu a > b tráo đổi a và b
Nếu a > c thì tráo đổi a và c
Nếu b > c thì tráo đổi b và c
In ra a, b, c
13/34


Chuyên đề Bài toán và thuật toán trong bồi dưỡng học sinh giỏi môn tin học lớp 10

Bài 6. Hãy nhập vào giờ, phút, giây. Sau đó nhập thêm một số giây, hãy in kết
quả ra giờ, phút, giây.
 Ý tưởng:
Gọi số giây cộng thêm là S: giây  giây + S
Nếu giây ≥ 60 thì: phút  phút + giây DIV 60; giây  giây MOD 60
Nếu phút ≥ 60 thì: giờ  giờ + phút DIV 60; phút  phút MOD 60
2.2.2 Cấu trúc lặp
Bài 1. Hãy mô tả thuật toán tính tổng S = 1 – 2 + 3 – . … + (-1)N-1N. Với N > 0

 Xác định bài toán:
- Input: nhập N
- Output: đưa ra S
 Ý tưởng:
Dùng một biến T để thể hiện dấu của các số, ban đầu biến T = 1 sau lặp tiếp theo
T  -T.
 Mô tả thuật toán:

Bài 2. Hãy mô tả thuật toán tính tổng S = 1/a + 1/(a+1) + 1/(a+2) + … + 1/(a+N)
+ … Cho đến khi 1/(a+N) < 0,01. Với a nhập từ bàn phím và a > 2.

14/34


Chuyên đề Bài toán và thuật toán trong bồi dưỡng học sinh giỏi môn tin học lớp 10

Bài 3. Hãy mô tả thuật toán giải bài toán sau: Cho dãy A gồm N số hạng A1, A2,
A3, … , AN. Hãy tính tổng các số chẵn
 Xác định bài toán:
- Input: Nhập N và dãy A
- Output: Đưa ra tổng số chẵn
 Ý tưởng: Xét lần lượt các số hạng trong dãy A. Nếu số hạng nào chia hết
cho 2 thì cộng vào tổng, số hạng nào không chia hết cho 2 thì bỏ qua.
Thuật toán kết thúc khi xét xong số hạng cuối cùng của dãy và đưa ra
tổng.
Bài 4.. Hãy xác định Input và Output, mô tả thuật toán bằng sơ đồ khối để in ra
màn hình số đảo ngược của số đó
VD: input: 4879 output: 9784
 Xác định bài toán:
- Input: Nhập N

- Output: Đưa ra số đảo ngược của N
 Ý tưởng: Trong toán học khi tính toán với số nguyên, có phép chia lấy
phần dư là MOD, phép chia lấy phần dư là DIV. Ví dụ 7 MOD 3 = 1; 7
DIV 3 = 2. Sử dụng 2 hàm DIV và MOD để tách số hàng đơn vị của số
ban đầu rồi chuyển dần thành số đứng đầu tiên.
 Sơ đồ khối:

15/34


Chuyên đề Bài toán và thuật toán trong bồi dưỡng học sinh giỏi môn tin học lớp 10

Bài 5. Cho số nguyên dương M. Hãy xác định số nguyên dương M nhỏ nhất để
+ …+ > M
(Đề thi học sinh giỏi cụm HK-HBT năm 2015-2016)
 Ý tưởng: Ban đầu gán N  2, xét biểu thức nếu đúng thì kết thúc và đưa
ra N. Nếu sai tiếp tục tính tổng theo công thức S  S + , sau mỗi lần tính
tổng thì tăng N lên 1 đơn vị.
 Sơ đồ khối:

16/34


Chuyên đề Bài toán và thuật toán trong bồi dưỡng học sinh giỏi môn tin học lớp 10

Bài 6. Hãy xác định Input, Output và viết thuật toán bằng sơ đồ khối cho bài
toán sau: Cho số nguyên dương N, hãy cho biết giá trị của S
(Đề thi học sinh giỏi cụm HK-HBT năm 2016-2017)
 Ý tưởng: Công thức tính tổng của bài này: S  S với i chạy từ 1N, khi i
> N thuật toán dừng lại và đưa ra S. Khi nào i là số lẻ thì là dấu +, khi i là

số chẵn thì là dấu -.
 Sơ đồ khối:

Bài 7. Cho số nguyên dương P. Hãy xác định số nguyên N nhỏ nhất để 1! + 2! +
3! + …+ N! ≥ P
(Đề thi học sinh giỏi cụm HK-HBT năm 2017-2018)
 Ý tưởng: Cần sử dụng 1 biến để tính giai thừa gọi là GT, công thức tính
giai thừa: GT GT*N (giống bài 2), công thức tính tổng S  S+ GT, với N
chạy từ 1 cho đến khi SP thì đưa ra N và dừng lại.
 Sơ đồ khối:

17/34


Chuyên đề Bài toán và thuật toán trong bồi dưỡng học sinh giỏi môn tin học lớp 10

Bài 8. Hãy xác định Input và Output, mô tả thuật toán bằng sơ đồ khối để tính
tổng các chữ số trong biểu diễn thập phân của số tự nhiên N. Ví dụ nếu N=4879
thì tổng các chữ số của nó bằng 4 + 8 + 7 + 9 = 28.
(Đề thi học sinh giỏi cụm HK – HBT năm 2013 - 2014)
 Ý tưởng: Sử dụng hàm div và mod để lấy dần các số đơn vị rồi cộng dồn
vào tổng. Để tách được số 4: du  n mod 10; giá trị n sau khi tách số 4 sẽ
là: n  n div 10. Công thức tính tổng S S+du; công việc này sẽ lặp đi lặp
lại cho đến khi n=0 thì đưa ra S và dừng lại.

 Sơ đồ khối:

18/34



Chuyên đề Bài toán và thuật toán trong bồi dưỡng học sinh giỏi môn tin học lớp 10

Bài 9. Mô tả thuật toán tìm tất cả các số có 3 chữ số a,b,c sao cho tổng các lập
phương của số đó bằng chính nó
VD: abc = 100a + 10b + c = a3 + b3 + c3
 Ý tưởng: Cho a chạy từ 0  9, với mỗi giá trị của a cho b chạy từ 0 9, với
mỗi giá trị của b cho c chạy từ 0  9. Sao cho thỏa mãn biểu thức: 100*a
+ 10*b + C = a*a*a + b*b*b + c*c*c thì in ra a, b, c sau đó tiếp tục thử
lại với các giá trị khác của a,b,c cho đến khi a>9 thì kết thúc.
 Sơ đồ thuật toán:

Bài 10. Mô tả thuật toán nhập vào 2 số nguyên dương M, N in ra màn hình
UCLN và BCNN của 2 số nguyên đó (Sử dụng thuật toán Euclid)
 Ý tưởng: Thuật toán Euclid: tìm UCLN(a,b)
- Nếu a chia hết cho b (a chia b dư 0) thì UCLN(a,b) là b
- Nếu a chia b dư r thì UCLN(a,b) = UCLN(b,r)
Như vậy r  a mod b, nếu r = 0 thì đưa ra UCLN=b, nếu r <> 0 thì: b  r,
ab.

 Sơ đồ khối:
19/34


Chuyên đề Bài toán và thuật toán trong bồi dưỡng học sinh giỏi môn tin học lớp 10

Bài 11. Mô tả thuật toán tìm UCLN của dãy A gồm N số hạng A1, A2, A3, … ,
AN
 Ý tưởng: Tìm UCLN của (A1, A2, A3, … , AN) thì tìm u1 = ucln(A1, A2), rồi
tìm u2 = ucln(u1, A3), rồi u3 = ucln(u2,A4), v.v…un-1(un-2,An) tới khi hết thì
un-1 chính. Dựa vào cách tìm UCLN của bài trên thì UCLN của cả dãy

chính bằng An
 Sơ đồ khối:

20/34


Chuyên đề Bài toán và thuật toán trong bồi dưỡng học sinh giỏi môn tin học lớp 10

Bài 12. Mô tả thuật toán tìm và in tất cả các số hoàn hảo ≤N, với N nhập từ bàn
phím
 Ý tưởng:
- Nhập vào 1 số N
- Kiểm tra xem số M với 1 ≤ M ≤N có phải là số hoàn hảo hay không?
- Cho i chạy từ 1  M/2
Nếu M là đúng thì cộng dồn i vào S, tăng i lên 1 đơn vị;
Nếu M là sai thì chỉ tăng i lên 1 đơn vị;
- Khi i >M/2 kiểm tra xem S = M không?
o Nếu S=M là đúng thì in ra M và tăng M lên 1 đơn vị
o Nếu S=M là đúng thì chỉ tăng M lên 1 đơn vị
- Khi M>N thì kết thúc

 Sơ đồ khối:

21/34


Chuyên đề Bài toán và thuật toán trong bồi dưỡng học sinh giỏi môn tin học lớp 10

Mô phỏng thuật toán bằng ví dụ cụ thể


22/34


Chuyên đề Bài toán và thuật toán trong bồi dưỡng học sinh giỏi môn tin học lớp 10

Bài 13. Mô tả thuật toán: nhập vào 1 dãy số tối đa 100 số sau đó in ra màn hình
các số khác nhau.
Input: 6, 8, 6, 7, 5, 5
Output: 6, 8, 7, 5

 Ý tưởng:

 Sơ đồ khối
Bài 14. Xác định input và output, xây dựng ý tưởng và viết thuật toán bằng sơ
đồ khối của bài toán: Cho dãy A gồm N phần tử A1, A2, A3, … , AN đếm xem
trong dãy có bao nhiêu phần tử là số nguyên tố?
(Đề thi học sinh giỏi cụm HK – HBT năm 2014-2015)
 Ý tưởng:kiểm tra từng phần tử trong dãy A nếu đó là số nguyên tố thì sẽ
tăng biến đếm lên 1 giá trị. Cần các biến: đếm – đếm các số nguyên tố; ichỉ số của từng phần tử trong dãy A, i chạy từ 1 N. Để kiểm tra Ai có
phải là số nguyên tố không, ta lấy Ai : j với J chạy từ 2 nếu không chia
hết cho j thì đó là số nguyên tố và tăng biến đếm lên 1 giá trị, rồi tăng i
lên 1 dơn vị; nếu Ai chia hết cho J thì tăng i lên 1 đơn vị để kiểm tra phần
tử tiếp theo
 Sơ đồi khối:
23/34


Chuyên đề Bài toán và thuật toán trong bồi dưỡng học sinh giỏi môn tin học lớp 10

 Mô phỏng thuật toán với ví dụ cụ thể


Bài 15. Tại cửa hàng thời trang, nhân dịp 8/3, cửa hàng tặng cho mỗi
khách hàng một phiếu dự thưởng mỗi khi mua hàng. Khách hàng sau khi có
24/34


×