Tải bản đầy đủ (.doc) (28 trang)

SKKN Xây dựng một số bài tập Tin học 11 mở rộng theo hướng tích hợp nhiều môn học nhằm phát triển năng lực cho học sinh.

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 (4.61 MB, 28 trang )

MỤC LỤC
1. LỜI GIỚI THIỆU......................................................................................................2
2. TÊN SÁNG KIẾN KINH NGHIỆM:.........................................................................2
3. TÊN TÁC GIẢ...........................................................................................................3
4. CHỦ ĐẦU TƯ 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:...............................................3
7. MÔ TẢ BẢN CHẤT CỦA SÁNG KIẾN:.................................................................3
7.1 Về nội dung của sáng kiến....................................................................................3
A. NỘI DUNG........................................................................................................4
1. ÁP DỤNG KHI HỌC CHƯƠNG III: “CẤU TRÚC RẼ NHÁNH VÀ LẶP”.....4
2. ÁP DỤNG KHI HỌC CHƯƠNG IV: KIỂU DỮ LIỆU CÓ CẤU TRÚC...........8
3. ÁP DỤNG KHI HỌC XONG TOÀN BỘ CHƯƠNG TRÌNH TIN HỌC 11 VÀ
ĐỐI VỚI HỌC SINH KHÁ, GIỎI........................................................................12
B. KHẢ NĂNG ÁP DỤNG CỦA SÁNG KIẾN...................................................24
8. NHỮNG THÔNG TIN CẦN BẢO MẬT:...............................................................24
9. CÁC ĐIỀU KIỆN CẦN THIẾT ĐỂ ÁP DỤNG SÁNG KIẾN KINH NGHIỆM: 24
10. ĐÁNH GIÁ LỢI ÍCH THU ĐƯỢC:...................................................................24
11. DANH SÁCH CÁ NHÂN ĐÃ THAM GIA ÁP DỤNG SKKN:........................27
TÀI LIỆU THAM KHẢO............................................................................................28

1


1. LỜI GIỚI THIỆU
Thực hiện Nghị quyết Trung ương 8 khóa XI về đổi mới căn bản toàn diện giáo dục và
đào tạo xác định mục tiêu tổng quát của đổi mới là “phát triển con người Việt Nam
phát triển toàn diện và phát huy tốt nhất tiềm năng của mỗi cá nhân; yêu gia đình, yêu
tổ quốc, hết lòng phục vụ nhân dân và đất nước; có hiểu biết và kĩ năng cơ bản, khả
năng sáng tạo để làm chủ bản thân, sống tốt và làm việc hiệu quả. Xây dựng nền giáo
dục mở, thực học, thực nghiệp, dạy tốt, học tốt; có cơ cấu và phương thức hợp lí, gắn


với xây dựng xã hội học tập; bảo đảm các điều kiện nâng cao chất lượng; chuẩn hóa,
hiện đại hóa, dân chủ hóa, xã hội hóa và hội nhập quốc tế hệ thống giáo dục và đào
tạo; giữ vững định hướng xã hội chủ nghĩa và bản sắc dân tộc. Phấn đấu đến năm
2030, nền giáo dục Việt Nam đạt trình độ tiên tiến trong khu vực…” . Để hướng tới
mục tiêu đó cần phải đổi mới đồng bộ mục tiêu giáo dục và chương trình giáo dục,
phương pháp giáo dục.
Trong chương trình giáo dục phổ thông, đối với môn Tin học được các nhà biên soạn
sắp xếp theo một hệ thống đi từ khái quát đến cụ thể, từng phần, từng chương đều có
liên quan chặt chẽ với nhau. Trong đó, đối với tin học 11 tập trung đi sâu vào một lĩnh
vực tương đối khó nhưng khá lí thú đó là thuật toán và lập trình. Tuy nhiên, trong quá
trình giảng dạy bộ môn Tin học tôi nhận thấy đại bộ phận các em đều tỏ thái độ không
tích cực với môn học. Vì các em cho rằng đây là môn học không quan trọng nên với
tâm lí đó các em thường không chú ý trong các giờ lên lớp, về nhà cũng không xem lại
bài, một số khác lại bỏ hẳn không học mà chỉ tập trung nhiều cho các môn cho là trọng
tâm.
Do đó, để phát huy tính tích cực, sáng tạo và nâng cao hứng thú học tập của học sinh
thì đòi hỏi người giáo viên trước hết phải kiên trì, có trách nhiệm với nghề, yêu quí
học sinh, hết lòng vì nhiệm vụ, sau đó là lựa chọn các chuyên đề dạy học, các phương
pháp dạy học tích cực phù hợp với đối tượng, mục đích dạy học.
Trong chương trình Tin học 11, bản thân tôi nhận thấy các bài tập cơ bản trong sách
giáo khoa có nội dung khá gần gũi, có nhiều phần kiến thức liên hệ thực tế và có nhiều
vấn đề cần có sự tích hợp nhiều môn để giải quyết, giúp phát triển năng lực của học
sinh. Vì vậy tôi viết sáng kiến:
Xây dựng một số bài tập Tin học 11 mở rộng theo hướng tích hợp nhiều môn học
nhằm phát triển năng lực cho học sinh.
Nội dung sáng kiến được viết theo ý chủ quan của tác giả nê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.

2. TÊN SÁNG KIẾN KINH NGHIỆM:

Xây dựng một số bài tập Tin học 11 mở rộng theo hướng tích hợp nhiều môn học
nhằm phát triển năng lực cho học sinh.

2


3. TÊN TÁC GIẢ
- Họ và tên: Phạm Thị Hồng Hạnh
- Địa chỉ tác giả sáng kiến: Trường THPT Tam Đảo 2.
- Số điện thoại: 0973590228 .
- E_mail:

4. CHỦ ĐẦU TƯ SÁNG KIẾN:
Phạm Thị Hồng Hạnh – GV trường THPT Tam Đảo 2 – Vĩnh Phúc

5. LĨNH VỰC ÁP DỤNG SÁNG KIẾN:
- Giảng dạy môn Tin Học lớp 11 và bồi dưỡng học sinh giỏi.

6. NGÀY SÁNG KIẾN ĐƯỢC ÁP DỤNG LẦN ĐẦU:
- 29/09/2013

7. MÔ TẢ BẢN CHẤT CỦA SÁNG KIẾN:
7.1 Về nội dung của sáng kiến.
7.1.1.Mục tiêu nghiên cứu
Nội dung tài liệu phục vụ công tác dạy học môn Tin học, ôn thi học sinh giỏi môn Tin
học, có tích hợp với nội dung các môn học khối tự nhiên, các bài toán trong thực tế,
giúp học sinh ôn lại kiến thức các môn học khác thông qua việc giải các bài toán trong
tài liệu
7.1.2.Nhiệm vụ nghiên cứu
Tích hợp các bài toán toán học, vật lý và các bài toán trong thực tế phù hợp vào những

nội dung của từng bài học nhằm tạo hứng thú cho học sinh khi học Tin học 11 tại
trường THPT Tam Đảo 2.
7.1.3.Khách thể và đối tượng nghiên cứu
- Khách thể nghiên cứu: Chương trình Tin Học 11 (Cơ bản và nâng cao).
- Đối tượng nghiên cứu: Tích hợp các môn học khác phù hợp vào những bài tập Tin
học 11 để tạo hứng thú cho học sinh khi học.
7.1.4.Phạm vi nghiên cứu
Tích hợp các bài toán toán học, vật lý và các bài toán trong thực tế phù hợp vào những
nội dung của từng bài học nhằm tạo hứng thú cho học sinh khi học Tin học 11 tại
trường THPT Tam Đảo 2 - Huyện Tam Đảo - Tỉnh Vĩnh Phúc.

3


7.1.5. Nội dung của sáng kiến
A. NỘI DUNG
1. ÁP DỤNG KHI HỌC CHƯƠNG III: “CẤU TRÚC RẼ NHÁNH VÀ LẶP”
Bài toán 1: Cho 3 số nguyên dương a, b, c. Nếu 3 số này theo thứ tự tạo thành 1 cấp
số cộng thì đưa ra công sai, nếu chúng tạo thành cấp số nhân thì đưa ra công bội. Viết
chương trình thực hiện yêu cầu trên.
+ Input: 3 số nguyên a, b, c
+ Output: công sai d nếu 3 số đã nhập tạo thành cấp số cộng, công bội q nếu 3 số đã
nhập tạo thành cấp số nhân
Bài toán này học sinh cần sử dụng kiến thức về cấp số cộng, cấp số nhân trong toán
học và các kiến thức về câu lệnh ghép, câu lệnh rẽ nhánh trong Pascal để viết chương
trình.
Thuật toán:
B1: Nhập a, b, c.
B2: Nếu 2*b =a+c thì d:=b-a;
B3: Nếu b2=a*c thì q:=b/a;

B4: Đưa ra giá trị của d hoặc q.
Chương trình minh họa:
program vidu1;
var a, b, c, d, q: integer;
begin
write(‘Nhap a, b, c: ’);
readln(a, b, c);
if a + c = 2*b then
begin d:=b-a; writeln(‘cap so cong co cong sai bang: ‘,d); end;
if a*c = b*b then
begin q:=b/a; write(‘cap so nhan co cong boi bang: ‘,q); end;
readln
end.

4


Bài toán 2: Nhập từ bàn phím toạ độ của 2 điểm M, N trong mặt phẳng. Tính và đưa
ra màn hình độ dài đoạn MN. Nếu chúng trùng nhau thì thông báo “M trùng với N”.
Xác định bài toán:
+/ Input: Bốn số x1,y1,x2,y2
+/ Output: Độ dài đoạn MN hoặc thông báo “M trùng với N”
Với bài toán này, các em cần sử dụng kiến thức toán học về tính khoảng cách giữa 2
điểm trong tọa độ Oxy.
Thuật toán:
B1. Nhập 4 số x1, y1, x2, y2; d 0;
2
2
(
x

2

x
1
)

(
y
2

y
1
)
B2. d 

B3. Nếu d=0 thì thông báo “M trùng với N”, ngược lại đưa d ra màn hình rồi kết thúc.
Bài toán mở rộng 2.1: Xây dựng thuật toán và viết chương trình giải bài toán nhập từ
bàn phím toạ độ của các đỉnh của một tam giác trong mặt phẳng. Tính và đưa ra màn
hình chu vi, diện tích của tam giác đó.
Sau khi đã hoàn thành bài toán cơ sở, các em cần sử dụng kiến thức toán học về cách
tính chu vi và diện tích hình tam giác khi biết độ dài 3 cạnh để xây dựng thuật toán và
viết chương trình.
Xác định bài toán:
+/ Input: Các số x1, y1, x2, y2, x3, y3.
+/ Output: Chu vi, diện tích tam giác
Thuật toán:
B1. Nhập 6 số x1, y1, x2, y2, x3, y3;
B2. a 
b
c


( x 2  x1) 2  ( y 2  y1) 2
( x3  x1) 2  ( y3  y1) 2
( x3  x 2) 2  ( y3  y 2) 2

p a+b+c; s

p / 2( p / 2  a)( p / 2  b)( p / 2  c)

b3. Đưa p, s ra màn hình rồi kết thúc.

5


Bài toán mở rộng 2.2: Xây dựng thuật toán nhập từ bàn phím toạ độ của các đỉnh của
một đa giác N đỉnh. Tính và đưa ra màn hình chu vi của đa giác đó.
Xác định bài toán:
+/ Input: Các cặp số (xi, yi), với i nhận giá trị từ 1 đến N.
+/ Output: Chu vi của đa giác.
Từ kết quả xác định bài toán ta thấy đây cũng là một bài toán được mở rộng từ bài
toán cơ sở nêu trên vì thực chất đây cũng là bài toán tính độ dài các đoạn thẳng khi
biết toạ độ các điểm. Từ đó học sinh dễ dàng xây dựng thuật toán để giải bài toán này.
Thuật toán:
B1. Nhập toạ độ của N đỉnh;
B2. Tính độ dài các các cạnh, tính chu vi;
B3. Đưa chu vi ra màn hình, rồi kết thúc.
Chương trình minh họa:
uses crt;
var x1,x2,y1,y2,cv,a,b:real;
d,n:integer;

begin
clrscr;
repeat write('nhap n: '); readln(n); until n>=3;
d:=1; writeln('nhap dinh ',d); write('x= ');read(x1); write('y= ') ;read(y1);
cv:=0; a:=x1;b:=y1;
while dbegin
inc(d);
writeln('nhap dinh ',d); write('x= ');read(x2); write('y= ') ;read(y2);
cv:=cv+ sqrt(sqr(x2-x1)+sqr(y2-y1)); x1:=x2; y1:=y2;
end;
cv:=cv+ sqrt(sqr(x2-a)+sqr(y2-b));
write('chu vi da giac ',n,' dinh: ',cv:10:2);
readln;
end.

6


Ta có thể mở rộng bài toán tính chu vi của đa giác N đỉnh trong không gian.
Bài toán 3: Một người chuyển động thẳng biến đổi đều theo chiều dương của trục tọa
độ với vận tốc lúc đầu V0, vận tốc tại thời điểm t là Vt (V0<>Vt). Hãy tính gia tốc a của
người đó và cho biết người đó chuyển động nhanh dần đều hay chậm dần đều?
+ Input: Vo, Vt, t
+ Output: Vật chuyển động nhanh dần đều hay chậm dần đều.
Thuật toán:
B1: Nhập Vo,Vt, t
B2: Tính a:=(Vt-Vo)/t;
B3:
Nếu a>0 thì đưa ra kết luận chuyển động nhanh dần đều

Đưa ra kết luận chuyển động chậm dần đều trong trường hợp ngược lại.
Bài toán mở rộng 3.1: Cho 2 vật chuyển động biến đổi đều, xuất phát cùng 1 thời
điểm, cùng 1 vị trí và cùng hướng với vận tốc ban đầu và gia tốc lần lượt là V1, V2, a1,
a2. Hỏi 2 vật trên có thể gặp nhau không? Nếu gặp nhau thì sau thời gian bao lâu?
Xác định bài toán:
+ Input: V1, V2, a1, a2.
+ Output: Hai vật có gặp nhau không? Nếu gặp t bằng bao nhiêu?
Để giải được bài toán này học sinh cần sử dụng kiến thức môn Vật lý về chuyển động
thẳng biến đổi đều để kiểm tra xem 2 vật có thể gặp nhau hay không và tính được thời
gian để 2 vật gặp nhau (nếu có).
Thuật toán:
B1. Nhập V1, V2, a1, a2.
B2. Nếu (V1 – V2) (a1 – a2) >=0 thì 2 vật không gặp nhau.
Nếu (V1 – V2) (a1 – a2) <0 thì 2 vật gặp nhau, t = (V2 – V1)/(a1 – a2);
B3. Đưa ra kết luận.

7


2. ÁP DỤNG KHI HỌC CHƯƠNG IV: KIỂU DỮ LIỆU CÓ CẤU TRÚC
Bài toán 1: Xây dựng thuật toán tìm max trong 2 số nguyên a, b. Nếu chúng bằng
nhau thì đưa ra màn hình một trong hai số đó.
Xác định bài toán:
+/ Input: Hai số a, b.
+/ Output: Max của hai số a, b.
Thuật toán:
B1. Nhập a, b
B2. Max  a;
B3. Nếu Max < b thì Max b
B4. Đưa Max ra màn hình rồi kết thúc.

Chương trình minh họa:
Program Vidu;
Uses crt;
Var a,b,max: integer;
Begin
Writeln(‘Nhap a: ‘); readln(a);
Writeln(‘Nhap b: ‘); readln(b);
Max:=a;
If Max < b then max:=b;
Writeln(‘Gia tri lon nhat: ‘, max);
Readln;
End.
Bài toán mở rộng 1.1: Xây dựng thuật toán tìm max của N số nguyên a1, a2, …, aN.
Xác định bài toán:
+/ Input: Số nguyên dương N và dãy số nguyên a1, a2, …, aN
+/ Output: Max của dãy số đã cho.
Bằng quy luật như trong bài toán cơ sở, ban đầu ta tìm max của a1, a2 ta sẽ được
1 số đó là max. Sau đó ta lại tìm max của max với a3, quá trình sẽ được tiếp diễn cho
đến khi tìm max của max với aN.

8


Thuật toán:
B1. Nhập số nguyên dương N và dãy số nguyên a1, a2, …, aN
B2. Max a1; i 2;
B3. Nếu i>N thì sang B5
B4. Nếu ai>max thì max ai, ii+1, quay lại B3.
B5. Đưa Max ra màn hình rồi kết thúc.
Ngoài ra, với bài toán cơ sở này học sinh dễ dàng xây dựng được thuật toán tìm

min của 2 số, Tìm min của N số.
Bài toán 2: Xây dựng thuật toán tìm số lần xuất hiện của kí tự “ch” trong xâu s
Xác định bài toán:
+/ Input: Kí tự “ch” và xâu s
+/ Output: Số lần xuất hiện của kí tự “ch” trong xâu s.
Thuật toán:
B1. Nhập xâu s và kí tự ch; dem 0;
B2. Duyệt từ đầu đến cuối xâu s, nếu s[i]=ch thì tăng biến đếm lên 1 đơn vị dem
dem+1
B3. Đưa dem ra màn hình rồi kết thúc.
Bài toán mở rộng 2.1. Xây dựng thuật toán tính tần số xuất hiện của mỗi kí tự trong
xâu s.
Xác định bài toán:
+/ Input: Xâu s
+/ Output: Số lần xuất hiện của mỗi kí tự trong xâu s.
Rõ ràng ta thấy đây cũng là bài toán tìm số lần xuất hiện của một kí tự trong xâu.
Vấn đề được mở rộng ở đây là có thể có nhiều hơn một kí tự cần phải tìm số lần xuất
hiện của chúng trong xâu s. Việc nắm vững thuật toán giải bài toán cơ sở nêu trên sẽ
giúp học sinh có thể xây dựng được thuật toán để giải bài toán 4.1 bằng cách xem mỗi
kí tự chưa được tìm số lần xuất hiện của chúng trong xâu s như kí tự “ch” trong bài
toán cơ sở. Khi tìm được số lần xuất hiện của mỗi kí tự rồi thì đưa kí tự đó cùng số lần
xuất hiện của nó ra màn hình. Một vấn đề nảy sinh ở đây là làm thế nào để bỏ qua các
kí tự đã được tìm số lần xuất hiện trong xâu s. Vấn đề này có nhiều cách giải quyết
nhưng cách đơn giản nhất là xoá hết các kí tự đã tìm được tần số xuất hiện. Khi xoá
hết xâu thì công việc tìm số lần xuất hiện của các kí tự cũng kết thúc.

9


Thuật toán:

B1. Nhập xâu s;
B2. Trong khi chưa hết xâu thực hiện:
Tìm số lần xuất hiện của kí tự s[1] trong xâu;
Đưa kí tự s[1] cùng số lần xuất hiện của nó ra màn hình
Xoá các kí tự s[1] trong xâu
B3. Kết thúc.
Bài toán mở rộng 2.2: Xây dựng thuật toán tìm kí tự xuất hiện ít nhất trong xâu
Xác định bài toán:
+/ Input: Xâu s
+/ Output: Kí tự xuất hiện ít nhất trong xâu s .
Bài toán này được phát triển từ bài toán cơ sở vì vấn đề chính ở đây cũng là đi tìm số
lần xuất hiện của một kí tự trong xâu. Tuy nhiên nó được nâng cao hơn một mức đó là
sau khi đếm số lần xuất hiện của mỗi kí tự lại phải kiểm tra xem kí tự đó có phải xuất
hiện ít nhất không? Sẽ đơn giản hơn nếu ta xem đây là bài toán mở rộng của bài toán
1. Thật vậy, ta sẽ sử dụng một biến kiểu kí tự(minchar) để lưu kí tự xuất hiện ít nhất
trong xâu và ban đầu giả thiết rằng số lần xuất hiện của kí tự ít nhất trong xâu
là(min=length(s)), minchar=s[1] . Sau đó mỗi lần đếm được số lần xuất hiện của một
kí tự trong xâu ta lại so sánh với min. Nếu min lớm hơn số lần xuất hiện của kí tự vừa
đếm thì ta gán lại min và minchar, cuối cùng ta sẽ giải quyết được bài toán
Thuật toán:
B1. Nhập xâu s; minchar=s[1]; min=length(s)
B2. Trong khi chưa hết xâu thực hiện:
Tìm số lần xuất hiện của kí tự s[1] trong xâu;
So sánh số lần tìm được đó với min. Nếu min lớn hơn thì thực hiện:
- Min nhận giá trị mới là số lần xuất hiện của kí tự vừa đếm được;
- Minchar:=s[1]
Xoá các kí tự s[1] trong xâu
B3. Đưa minchar và min ra màn hình và kết thúc.

10



Bài toán mở rộng 2.3: Xây dựng thuật toán tìm kí tự xuất hiện nhiều nhất trong xâu
Xác định bài toán:
+/ Input: Xâu s
+/ Output: Kí tự xuất hiện nhiều nhất trong xâu s .
Ta thấy đây là bài toán tương đương của bài toán mở rộng 2. Thuật toán giải bài toán
này như sau:
Thuật toán
B1. Nhập xâu s; maxchar=s[1]; max=0;

B2. Trong khi chưa hết xâu thực hiện:
Tìm số lần xuất hiện của kí tự s[1] trong xâu;
So sánh số lần tìm được đó với max. Nếu max lớn hơn thì thực hiện:
- Max nhận giá trị mới là số lần xuất hiện của kí tự vừa đếm được;
- Maxchar:=s[1]
Xoá các kí tự s[1] trong xâu
B3. Đưa maxchar và max ra màn hình và kết thúc.
Bài toán 3: Viết chương trình kiểm tra một dãy số gồm N số nguyên dương theo thứ
thự nhập vào có phải là một cấp số cộng (cấp số nhân) hay không? Thông báo kết quả
ra màn hình.
Với bài toán này, học sinh cần sử dụng kiến thức về kiểu mảng, kết hợp các kiến thức
toán học về cấp số cộng (cấp số nhân) để giải. Dưới đây là chương trình minh họa.

11


3. ÁP DỤNG KHI HỌC XONG TOÀN BỘ CHƯƠNG TRÌNH TIN HỌC 11 VÀ
ĐỐI VỚI HỌC SINH KHÁ, GIỎI.
Bài toán 1: (bài toán cơ bản)

Viết chương trình nhập từ bàn phím số nguyên dương N, tính tổng các ước thực sự của
N và in ra màn hình. Ví dụ: N=6 thì tổng các ước là 1+2+3 =6; N=9 thì tổng các ước là
1+ 3 =4
Học sinh biết để kiểm tra xem số i có phải là ước của số N hay không thì dùng phép
toán Mod (N mod i = 0.
Chương trình minh họa:
Program bai1;
Var

i,tg,N:word;

Begin
Write(‘Nhap N=’);
Readln(N);
Tg:=0;
For i:=1 to N div 2 do
If n mod i =0 then tg:=tg+i;
Writeln(‘Tong cac uoc la= ‘, tg:5);
Readln;
End.
Bài toán mở rộng 1.1: Số N được gọi là số hoàn hảo nếu tổng các ước thực sự của N
bằng chính nó. Viết chương trình nhập từ bàn phím số nguyên dương N, thông báo ra
màn hình DUNG nếu N là số hoàn hảo, ngược lại thì thông báo KHONG.
Học sinh dễ dàng nhận thấy cách làm bài 2 sẽ tương tự cách làm bài 1, chỉ thêm một
công việc đó là kiểm tra xem tổng các ước đó có bằng N hay không?
Chương trình minh họa:
Program bai2;
Var

i,tg,N:word;


Begin
Write(‘Nhap N=’);
Readln(N);
Tg:=0;

12


For i:=1 to N div 2 do
If n mod i =0 then tg:=tg+i;
If tg=N then Writeln(‘DUNG’) else writeln(‘KHONG’);
Readln;
End.
Bài toán mở rộng 1.2: Viết chương trình in ra màn hình các số hoàn hảo trong khoảng
từ a đến b (với 1Chương trình minh họa:
Program bai3;
Var

i,a,b,k,tg:word;

Begin
Write(‘Nhap a,b=’);
Readln(a,b);
For k:=a to b do
Begin
Tg:=0;
For i:=1 to K div 2 do
If K mod i =0 then tg:=tg+i;

If tg=K then Writeln(k);
End;
Readln;
End.
Bài toán mở rộng 1.3: Lập chương trình tìm tất cả các số hoàn hảo nhỏ hơn số
nguyên N (N >=10), in các số hoàn hảo và và các ước của số tìm được ra màn hình.
Giá trị của N được nhập từ bàn phím.
Tương tự ta yêu cầu học sinh sao chép sửa lại chương trình bài tập 3 để được bài tập 4.
Bài toán mở rộng 1.4: Hai số a và b được gọi là bạn của nhau nếu tổng các ước của a
bằng b và ngược lại tổng các ước của b bằng a. Viết chương trình tìm các số bè bạn
như trên trong khoảng từ m đến n (m < n, m và n nhập từ bàn phím).
Bài toán 1.5: Viết chương trình nhập vào 2 số a, b (1hình số lượng các số chẵn, số lượng các số lẽ, số lượng các số hoàn hảo trong khoảng
từ a đến b, với a, b được nhập từ bàn phím.
Bài toán 2: (Bài toán cơ bản)

13


Viết chương trình nhập vào từ bàn phím số nguyên N, Kiểm tra và thông báo ra màn
hình N là số nguyên tố hoặc N không là số nguyên tố.
Chương trình minh họa:
Program b1;
Var

i,n:integer;

kq:boolean;
begin
write('N = ');readln(n);

kq:=true;{Giả sử N là SNT, Gán kq bằng true}
if n<=1 then kq:=false
else
for i:=2 to trunc(sqrt(n)) do{i chạy từ 2 đến phần nguyên căn bậc 2 của N}
if n mod i=0 then{Nếu n chia hết cho i thì}
begin
kq:=false;{Gán kq=false}
break;{thoát vòng lặp bằng lệnh Break}
end;
if kq then writeln('So nguyen to') else write('Khong la so nguyen to');
readln;
end.
Bài toán mở rộng 2.1: Viết chương trình nhập vào từ bàn phím số nguyên N (N>10),
in ra màn hình các số nguyên tố trong khoảng từ 1 đến N.
Nhận xét: Học sinh sẽ áp dụng thuật toán của bài 1 để giải quyết bài 2.
Chương trình minh họa:
Program b2;
Var

i,k,n:integer;

kq:boolean;
begin
write('N = ');readln(n);
For k:=1 to N do
begin

14



kq:=true;{Giả sử k là SNT, Gán kq bằng true}
if K<=1 then kq:=false
else
for i:=2 to trunc(sqrt(K)) do{i chạy từ 2 đến phần nguyên căn bậc 2 của k}
if k mod i=0 then{Nếu n chia hết cho i thì}
begin
kq:=false;{Gán kq=false}
break;{thoát vòng lặp trong bằng lệnh Break}
end;
if kq then write(k:5);
end;
readln;
end.

15


Bài toán mở rộng 2.2: Cho số nguyên N chẵn (nhập từ bàn phím), lập chương trình
phân tích N thành tổng 2 số nguyên tố. Nếu có in ra các cách phân tích. VD: 6 = 3+ 3;
Chương trình minh họa:
program bai3;
var N,i , j, k, m,d : longint;
kq1, kq2:boolean;
begin
writeln(‘Nhap N= ‘); readln(N);
for i:=2 to N-1 do

{vong lap 1}

begin {kiem tra xem so i co phai la so nguyen to hay khong}

kq1:=true;
for k:=2 to trunc(sqrt( i )) do

{vong lap 2}

if i mod k =0 then
begin
kq1:=false;{do i chia het cho k nen i khong nguyen to}
break;
end;
if kq1 then {neu so i la snto thi tim so j la so nto ma i+j=N}
for j := i to N-1 do

{vong lap 3}

begin {kiem tra xem so j co phai la so nguyen to hay khong}
kq2:=true;
for m:=2 to trunc(sqrt( j )) do
if j mod m=0 then
begin
kq2:=false;{Gan kq2=false, tuc j khong la so nto}
break;
end;
if kq2 then
if i+j = N then
begin
writeln(N ,' = ', i, ' + ', j);

16



d:=d+1;
end;
end;
end;
readln;
End.
Bài toán mở rộng 2.3:
Nhập vào một số tự nhiên N (1 < N ≤ 65355). Hãy kiểm tra số N vừa nhập có phải là
số nguyên tố hay không? Nếu đúng thì thông báo ra màn hình đây là số nguyên tố,
ngược lại thì phân tích số N thành tích các thừa số nguyên tố.
Ví dụ:
Dữ liệu vào

Dữ liệu ra

Nhap 1 so tu nhien: 37

37 la so nguyen to

Nhap 1 so tu nhien: 30

30 = 2. 3. 5

Nhap 1 so tu nhien: 3456

3456 = 2. 2. 2. 2. 2. 2. 2. 3. 3. 3

Nhap 1 so tu nhien: 677


677 la so nguyen to

Chương trình minh họa:
Program bai4;
uses crt;
Var m, n: longint;
dem,i:integer;
kq:boolean;
Begin
repeat
clrscr;
Write('Nhap mot so tu nhien:'); readln(n);
Until (n>1) and (n<=65355);
Kq:=true;
for i:=2 to trunc(sqrt(n)) do
if n mod i=0 then
begin

17


kq:=false;
break;
end;
if kq then
else

writeln(n,' la so nguyen to')

{tach so n thanh cac thua so nguyen to}


begin
dem:=0;

m:=n;

Write(n,' = ');
While (m mod 2 = 0) do
Begin
dem:=dem+1;
m:=m div 2;
write('2');
if m>0 then write('.');
End;
i:=3;
While (m > 2) do
Begin
While (m mod i = 0) do
Begin
dem:=dem+1;

m:=m div i;

write(i);
if m>2 then write('.');
End;
i:=i+2;
End;
End;
Readln;

End.
Bài toán 2.4: Số siêu nguyên tố là số nguyên tố mà khi bỏ một số tuỳ ý các chữ số bên
phải của nó thì phần còn lại vẫn tạo thành một số nguyên tố.

18


Ví dụ 37337 là một số siêu nguyên tố có 5 chữ số vì 3733, 373, 37,3 cũng là các số
nguyên tố.
Hãy viết chương trình đọc dữ liệu vào là một số nguyên N (0< N <10) từ bàn phím và
đưa ra kết quả ra màn hình là các số siêu nguyên tố có N chữ số cùng số lượng của
chúng.
Ví dụ khi chạy chương trình:
Dữ liệu vào
5

Dữ liệu ra
23333 23339 23399 23993 29399 31193
31379 37337 37339 37397 59393 59399
71933 73331 73939
Co 15 so sieu nguyen to co 5 chu so

Hướng dẫn thuật toán:
-

Viết hàm kiểm tra số nguyên tố (ngto(n)).

Nhận xét: Từ định nghĩa về số siêu nguyên tố ta thấy các số siêu nguyên tố có N chữ
số được xây dựng từ các số nguyên tố có một chữ số là 2, 3, 5, 7. Từ các số nguyên tố
có một chữ số ta sẽ ghép chúng với các chữ số từ 0 đến 9 để được số có 2 chữ số và

chỉ lấy các số có 2 chữ số là số nguyên tố vd 23, 29, 31…. Và cứ tiếp tục xây dựng các
số nguyên tố như vậy cho đến khi đủ N chữ số.
-

Dùng mảng A để tính và lưu các số siêu nguyên tố có 1, 2, …,n chữ số (lần lượt
xây dựng từng số một)

Dùng mảng B để lưu lại mảng A trươc đó có i chữ số để xây dựng các số siêu nguyên
tố có i+1 chữ số.
Thuật toán cụ thể như sau:
Bước 1: Nhập sô nguyên N (số chữ số của số siêu nguyên tố)
Bước 2:

Gán ka =1 {ka là số lượng phần tử của mảng A, ban đầu gán ka=1}
Gán a[ka]=0; {giả sử phần tử đầu tiên của mảng A bằng 0}
i:=1; {biến đếm vòng lặp, dùng để xây dựng số siêu nguyên tố có i chữ

số}
Bước 3: Nếu i>N thì chuyển sang Bước 7 {Đã xây dựng đủ N chữ số}
Bước 4:
4.1 Gán kb=0; {kb là số phần tử của mảng B, đóng vai trò là mảng lưu kết quả trung
gian dùng để lưu lại mảng A trong khi tính toán}
4.2 Gán k=1 {là biến dùng để duyệt các phần tử trong mảng A}
4.3 Nếu k>ka thì chuyển sang Bước 5

19


4.4 Gán biến cs =0 {là biến dùng để duyệt các chữ số từ 0 đến 9}
4.5 Nếu cs>9 thì chuyển sang Bước 4.6

4.5.1 Gán m=a[k]*10 + cs; {dùng biến m để xây dựng số siêu ntố}
4.5.2 Nếu m là số nguyên tố thì sang Bước 4.5.3
{Thuật toán kiểm tra số nguyên tố học sinh đã biết nên không hướng dẫn ở đây}
4.5.3 kb := kb+1 {tăng kb lên 1 để lưu số tiếp theo}, b[kb]:=a[k]*10 + cs; {lưu lại số
vừa xây dựng vào mảng B}
4.5.4 Gán cs= cs+1 quay lại Bước 4.5
4.6 Gán k = k +1 quay lại Bước 4.3
Bước 5: Gán ka=kb; {lưu lại số phần tử của mảng A = số phần tử của mảng B vừa xây
dựng được}
5.1 Gán t =1 {dùng biến đếm t để lưu kết quả từ mảng B vào mảng A}
5.2 Nếu t > ka thì chuyển sang Bước 6
5.3 Gán a[t]=b[t], gán t=t+1 quay lại Bước 5.2
Bước 6: Gán i= i+1 và quay lại Bước 3
Bước 7: In ra màn hình các số siêu nguyên tố có N chữ số, số lượng các số siêu
nguyên tố là ka, kết thúc.
Chương trình minh họa:
Program Bai5;
var a,b: array [1..100] of longint;
N,i,k,ka,kb,cs,t: byte;
kt:boolean;
m,j:longint;
BEGIN
Write ('Nhap N: ');
Readln (N);
ka:=1; a[ka]:=0;
For i:=1 to N do
Begin
Kb:=0;
For k:=1 to ka do


20


For cs:=0 to 9 do
begin
m:=a[k]*10+cs; {kiem tra xem m co la so nguyen to khong}
kt:=true;
If (m<=1) then kt:=false
Else
Begin
for j:= 2 to trunc(Sqrt(m)) do
If (m mod j =0) then
begin
kt:=false; break;
end;
End; {het doan lenh kiem tra so nguyen to}
If kt then {neu la so nguyen to thi}
Begin
Inc(kb); b[kb]:=a[k]*10+cs;
end;
end;
ka:=kb;
For t:=1 to ka do
a[t]:=b[t]; {luu lai cac gia tri cua mang b vao mang a}
end;
For k:=1 to ka do
Write(a[k]:10);
Writeln;
Writeln('Co tat ca ',ka,' so sieu nguyen to co ',N,' chu so.');
Readln;

END.
Bài tập 3: (Bài toán cơ bản)
Viết chương trình nhập vào từ bàn phím số nguyên N và mảng A gồm N phần tử.
Thông báo ra màn hình các số chẵn có trong mảng đã nhập và số lượng của chúng.

21


Chương trình minh họa:
Program bai1;
Const Nmax=100;
Var

A:array[1..Nmax] of integer;
I,dem,N : integer;

Begin
Writeln(‘Nhap n=’); Readln(N);
For i:=1 to N do
begin
writeln(‘nhap phan tu thu ‘,i);
read(A[i]); {doc tung phan tu vao mang}
end;
Dem:=0; {khoi tao bien dem=0 (chua dem duoc so nao thoa man)}
For i:=1 to N do
if A[i] mod 2 =0 then {Xu li luon cac phan tu cua mang}
begin
write(A[i],’ ‘); {in phan tu thoa man ra man hinh}
inc(dem); {tang bien dem len mot don vi}
end;

writeln; {Dua con tro xuong dong de in so luong phan tu thoa man}
writeln(dem); {in so luong ra man hinh}
readln;
END.
Bài toán 3.1: Viết chương trình nhập vào từ bàn phím số nguyên N và mảng A gồm N
phần tử. Thông báo ra màn hình các số lẽ có trong mảng đã nhập và số lượng của
chúng.
Bài toán 3.2: Viết chương trình nhập vào từ bàn phím số nguyên N, số K và mảng A
gồm N phần tử. Thông báo ra màn hình các số chia hết cho K có trong mảng đã nhập
và số lượng của chúng.
Bài toán 3.3: Viết chương trình nhập vào từ bàn phím số nguyên N và mảng A gồm N
phần tử. Thông báo ra màn hình các số nguyên tố có trong mảng đã nhập và số lượng
của chúng.

22


Bài toán 3.4: Viết chương trình nhập vào từ bàn phím số nguyên N và mảng A gồm N
phần tử. Thông báo ra màn hình các số hoàn hảo có trong mảng đã nhập và số lượng
của chúng.

23


B. KHẢ NĂNG ÁP DỤNG CỦA SÁNG KIẾN
Xây dựng một số bài tập Tin học 11 mở rộng theo hướng tích hợp nhiều môn học
nhằm phát triển năng lực cho học sinh đồng thời áp dụng các hình thức, phương pháp
tổ chức dạy học tích cực mới.
Đề tài được ứng dụng vào giảng dạy tại trường THPT Tam Đảo 2 và đạt kết quả tốt.
Phần lớn các em rất hứng thú, gây được sự chú ý và tìm hiểu trong quá trình học lập

trình.
- Đề tài này mới chỉ là một phần ứng dụng vào dạy tin học lớp 11 và ôn luyện học sinh
giỏi. Tôi mong được sự góp ý của đồng nghiệp để đề tài ngày một hoàn thiện hơn.

8. NHỮNG THÔNG TIN CẦN BẢO MẬT:
- Không.

9. CÁC ĐIỀU KIỆN CẦN THIẾT ĐỂ ÁP DỤNG SÁNG KIẾN
KINH NGHIỆM:
- Cơ sở vật chất đáp ứng đủ máy tính và cài đặt đủ phần mềm để học sinh học tập.

10. ĐÁNH GIÁ LỢI ÍCH THU ĐƯỢC:
- Học sinh chủ động, tích cực và yêu thích lập trình hơn, có thể tự học lập trình bằng
cách xây dựng thuật toán, học sinh chủ động giải các bài toán trong các môn học khác
và các bài toán trong thực tế bằng kiến thức Tin học.

11. DANH SÁCH CÁ NHÂN ĐÃ THAM GIA ÁP DỤNG SKKN:
Số Tên tổ chức/cá nhân
TT

Địa chỉ

1

THPT Tam Đảo 2

Phạm Thị Hồng Hạnh

Phạm vi/Lĩnh vực
áp dụng sáng kiến

Giảng dạy Tin Học 11

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

Tam Đảo, ngày 06 .tháng 12 năm 2019

Thủ trưởng đơn vị/

Tác giả sáng kiến

Chính quyền địa phương

(Ký, ghi rõ họ tên)

(Ký tên, đóng dấu)

Phạm Thị Hồng Hạnh

24


TÀI LIỆU THAM KHẢO
1. Tác giả: Hồ Sĩ Đàm - Hồ Cẩm Hà - Nguyễn Đức Nghĩa - Nguyễn Thanh Tùng Ngô Ánh Tuyết (sách tin học 11).
2. Tác giả: Lê Khắc Thành - Hồ Cẩm Hà - Nguyễn Vũ Quốc Hưng: Tài liệu bồi dưỡng
thường xuyên VG THPT chu kỳ III (2004-2007).
3. Tác giả: Quách Tuấn Ngọc - Ngôn ngữ lập trình PASCAL (Lý thuyết và Bài tập)
4. Một số tài liệu liên quan các môn Toán Học, Vật Lý nguồn Internet.

25



×