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

SKKN sáng kiến kinh ngiệm phương pháp phân loại và giải bài tập tin phổ thông

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 (177.4 KB, 17 trang )

A. ĐẶT VẤN ĐỀ
I. LÍ DO CHỌN ĐỀ TÀI
Trong thời đại ngày nay, thế giới đã và đang diễn ra quá trình Tin học hóa
trong nhiều lĩnh vực của đời sống xã hội. Tin học phát triển nhanh như vũ bão
và đã trở thành một ngành khoa học đóng vai trò quan trọng không thể thiếu đối
với sự phát triển của xã hội.
Nhiều quốc gia đã ý thức được tầm quan trọng của Tin học và đã có
những đầu tư lớn vào lĩnh vực này đặc biệt là lĩnh vực giáo dục nhằm đảo tạo
một đội ngũ tri thức trẻ có nền tảng Tin học vững vàng đáp ứng nhu cầu ngày
càng cao của xã hội.
Từ năm 2006 ngành giáo dục Việt Nam đã chính thức đưa bộ môn Tin
học vào trường THPT nhằm cung cấp cho học sinh những kiến thức phổ thông
về Tin học, hình thành và phát triển năng lực cũng như ứng dụng các thành tựu
Tin học trong học tập và trong các lĩnh vực hoạt động của mình sau này.
Đi đôi với hệ thống các kiến thức lý thuyết là hệ thống bài tập không thể
tách rời trong hệ thống Tin học phổ thông. Hệ thống bài tập nhằm giúp học sinh
hình thành, củng cố tri thức, kỹ năng, kỷ xảo ở các khâu khác nhau của quá trình
học tập, phát triển năng lực trí tuệ, rèn luyện những hoạt động tư duy.
Tuy nhiên, do Tin học là bộ môn mới mẻ nên quá trình tiếp thu kiến thức
lý thuyết cũng như giải quyết các bài tập của học sinh còn nhiều vướng mắc.
Các em chưa biết cách phân loại dạng bài tập khi giải quyết, đặc biệt trong bài
tập Tin học 11 các em chưa nắm vững các hệ thống thuật toán để giải quyết các
bài toán này. Đây chính là lý do tôi chọn đề tài này, nhằm giúp các em có thể
phân loại được các dạng bài tập, áp dụng các thuật toán để giải quyết các bài tập
trong chương trình Tin học phổ thông.
II. MỤC ĐÍCH NGHIÊN CỨU
Mục đích của tôi khi thực hiện đề tài này là làm giúp các em học sinh có
thể phân loại các dạng bài tập, áp dụng các thuật toán để giải quyết các bài toán
ở chương trình Tin học 11 một cách hiệu quả nhất. Từ đó giúp các em tiếp cận
dễ dàng với môn học này, khơi dậy lòng đam mê của các em đối với bộ môn Tin
học.


III. ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU
1.Đối tượng nghiên cứu: Là các em học sinh của trường THPT Triệu Sơn 2
2.Phạm vi nghiên cứu: Tập trung vào hệ thống bài tập Tin học phổ thông, đặc
biệt là hệ thống bài tập môn Tin học khối 11.

1


B. GIẢI QUYẾT VẤN ĐỀ
I. CƠ SỞ LÝ LUẬN
Bài tập là một vấn đề đặt ra đòi hỏi học sinh phải giải quyết trên cơ sở
những kiến thức đã tiếp thu trong quá trình học tập. Bài tập Tin học phổ thông là
một bộ phận không thể tách rời trong chương trình Tin học phổ thông, giúp học
sinh hoàn thiện những kiến thức phổ thông căn bản nhất, phát triển năng lực trí
tuệ rèn luyện các hoạt động tư duy cho học sinh.
Để giải quyết được các bài tập trước hết cần biết cách phân loại, vận dụng
kiến thức lý thuyết vào các dạng bài tập khác nhau.
II. THỰC TRẠNG CỦA VẤN ĐỀ
1. Thuận lợi
Được sự quan tâm và đầu tư của Sở giáo dục và đào tạo Thanh Hóa nói
chung và của các Ban ngành trường THPT Triệu Sơn 2 nói riêng, về cơ sở vật
chất môn Tin học đã có 2 phòng máy thực hành trong đó 1 phòng được kết nối
Internet, 2 phòng máy chiếu đa chức năng dành cho bộ môn Tin học và nhiều
lớp học có trang bị hệ thống máy tính, máy chiếu…
Mặc dù môn Tin học không phải là môn học chính nhưng được Ban giám
hiệu nhà trường quan tâm động viên và tạo mọi điều kiện trong công tác giảng
dạy. Bên cạnh đó cũng có những học sinh yêu thích bộ môn Tin học…
Trong quá trình thực hiện đề tài này tôi đã được các giáo viên trong tổ bộ
môn tư vấn và hỗ trợ rất nhiều giúp tôi hoàng thành đề tài.
2. Khó khăn

Do đây là bộ môn mới nên bước đầu khi tiếp xúc với bộ môn này các em
còn nhiều bỡ ngỡ. Các em chưa biết cách phân loại các dạng bài tập và vận dụng
các thuật toán để giải quyết các bài tập đó.
Bên cạnh đó, với tâm lý thường các em coi bộ môn Tin học là môn phụ
nên không chú trọng, nhiều em học sinh không dành đủ thời gian học nên không
hiểu bài và dần bị mất căn bản. Đây cũng là lý do nhiều em bị điểm kém (đặc
biệt là ở khối lớp 11) thậm chí là thi lại, học lại môn Tin học mặc dù các em học
rất giỏi các môn học khác.
3. Kết quả trước khi nghiên cứu
Trước khi áp dụng đề tài trong quá trình giảng dạy, bằng hình thức giám
sát và ra đề kiểm tra kết hợp thực hành tôi thu được kết quả sau ( trung bình ở cả
3 khối 10, 11 và 12):
Nội dung cần nắm bắt
Số lượng
Tỷ lệ(%)
Biết phân loại các dạng
70/315
22%
bài tập
Vận dụng kiến thức đã
49/315
15,5%
học để làm tốt bài tập
III. BIỆN PHÁP GIẢI QUYẾT
1. Phân loại bài tập
1.1. Quan điểm phân loại.

2



Việc phân loại hệ thống bài tập Tin học phổ thông mang tính tương đối, ở
đây quan điểm phân loại của tôi là dựa vào mục tiêu của hệ thống bài tập.
Qua tìm hiểu chương trình Tin học phổ thông và hệ thống bài tập ta thấy
được mục tiêu chính của chương trình Tin học phổ thông được thể hiện trên 3
lớp: lớp 10, lớp 11 và lớp 12 cơ bản là khác nhau.
Lớp 10, nội dung chương trình mang tính cung cấp kiến thức phổ thông
cơ bàn nhất nhằm đảm bảo được trình độ xuất phát chính vì thế mục tiêu của hệ
thống bài tập ở lớp này chủ yếu là củng cố tri thức sau khi học. Học sinh được
cung cấp các câu hỏi mang tính phân tích nhằm khái quát lại vấn đề hoặc đào
xâu mở rộng vấn đề, mở mang kiến thức và nắm bắt thông tin, thông qua đó
giáo dục tư tưởng nhận thức và tiếp cận thông tin mang tính thời đại.
Lớp 11 và lớp 12, nội dung chương trình đã bắt đầu đi vào chiều sâu như
nghiên cứu về ngôn ngữ lập trình, hệ quản trị cơ sở dữ liệu, cơ sở dữ liệu quan
hệ, vấn đề bảo mật… Do vậy hệ thống bài tập của 2 lớp này chủ yếu nhằm vào
mục tiêu rèn luyện tư duy, phát triển năng lực trí tuệ và rèn luyện kỹ năng thao
tác, thực hành trên máy tính. Tuy nhiên lớp 11 được tác giả nhằm vào việc rèn
luyện giải thuật nhiều hơn, còn lớp 12 là rèn luyện kỹ năng thao tác và thực
hành trên máy tính.
1.2. Các dạng bài tập.
Với quan điểm phân loại trên, hệ thống bài tập tin học phổ thông có thể
chia làm 3 nhóm:
+ Nhóm 1: Củng cố tri thức.
+ Nhóm 2: Rèn luyện tư duy, phát triển năng lực trí tuệ.
+ Nhóm 3: Rèn luyện kỹ năng thao tác.
1.2.1 Dạng câu hỏi, bài tập củng cố tri thức:
- Nhận dạng: Hình thức chủ yếu của dạng này là hệ thống các câu hỏi được xây
dựng trên các bài học lý thuyết, cung cấp thông tin, dữ kiện, sự kiện, cấu tạo,
thành phần của một đối tượng.
- Mục đích: Nhằm nhắc lại kiến thức đã học và đào sâu, mở rộng, vận dụng, liên
hệ với thực tế cuộc sống với những kiến thức đã được cung cấp mang tính lý

thuyết, chưa mang tính định lượng.
1.2.2 Dạng câu hỏi, bài tập rèn luyện tư duy, phát triển năng lực trí tuệ:
- Nhận dạng: Hình thức chủ yếu là các bài toán được cung cấp giả thiết (Input)
và kết luận (Output) và đưa ra yêu cầu xác định phương pháp/ giải thuật để từ
Input xác định Output.
- Mục đích: Phát triển năng lực phân tích, xác định bài toán, khả năng tư duy
giải thuật của học sinh vận dụng vào việc giải quyết bài toán đặt ra.
1.2.3 Dạng câu hỏi, bài tập rèn luyện kỹ năng thao tác, thực hành máy tính:
- Nhận dạng: Thường tồn tại ở dạng yêu cầu thao tác theo các bước và kiểm tra
kết quả, đánh giá nhận xét hoặc tồn tại ở dạng bài tập lập trình vận dụng, xây
dựng, đặc tả một hệ thống thực nào đó.
- Mục đích: Thông qua yêu cầu, các vấn đề thực tế nhằm giúp học sinh tiếp cận
máy tính, rèn luyện kỹ năng thao tác, thực hành trên máy tính.
3


2. Phương pháp giải bài tập tin học phổ thông
2.1 Phương pháp chung để tiếp cận và giải một bài toán.
Ta có thể thấy rằng “tham vọng có được một giải thuật có thể áp dụng
được đối với mọi bài toán là một điều ảo tưởng ”
Trang bị những hướng dẫn chung, gợi ý suy nghĩ mang tính định hướng
theo nhóm, chủ đề, phát hiện cách giải quyết một vấn đề là hết sức cần thiết.
Có thể tiếp cận một bài toán (bài tập tin học) theo các bước:
Bước 1: Tìm hiểu nội dung đề bài
- Phát biểu lại bài toán để có thể hiểu rõ hơn (nếu thấy cần thiết)
- Xác định các dữ kiện vào (Input), ra (Output)
Bước 2: Tìm cách giải
- Tìm tòi, phát hiện cách giải nhờ vào khả năng tư duy kết hợp với các
giải thuật đã được cung cấp.
- Thể hiện ý tưởng thông qua việc liệt kê các bước giải/ dùng sơ đồ khối.

Bước 3: Trình bày lời giải
- Dùng ngôn ngữ lập trình
- Sử dụng phương pháp lập trình Top - Down (từ trên xuống), phải biết
tinh chế từng bước.
- Kiểm tra lời giải
Bước 4: Nghiên cứu sâu lời giải
-Tìm những cách giải khác, so sánh lựa chọn cách giải thích hợp.
- Nghiên cứu khả năng ứng dụng
- Lật ngược vấn đề để xem xét
- Nghiên cứu để áp dung cho những bài toán tương tự.
2.2 Dạng câu hỏi củng cố tri thức
2.1.1 Một số nội dung cần lưu ý:
- Có thể phát biểu lại câu hỏi, chia nhỏ câu hỏi thành các về nhỏ hơn.
- Theo dõi học sinh và có thể đưa ra gợi ý
- Liệt kê các kiến thức dạng khóa
- Mở rộng vấn đề bằng việc đưa ra các câu hỏi liên quan đến nội dung đã được
học sinh trả lời.
2.2.2 Ví dụ
Câu hỏi 1: Hãy nêu những đặc tính ưu việt của máy tính?
(câu hỏi 3 - trang 6 – SGK Tin học 10)
*Phân tích: Với câu hỏi này có thể so sánh những lợi ích của việc sử dụng máy
tính với việc không sử dụng máy tính trong các lĩnh vực khác nhau của đời sống
xã hội. Từ đó để học sinh rút ra những đặc tính ưu việt của máy tính.
Câu hỏi 2: Người ta dùng những đơn vị nào để đo lượng thông tin?
*Phân tích: Với câu hỏi này ta có thể phát biểu lại nhưng vẫn giữ được giá trị
của câu hỏi “ Liệt kê tất cả các đơn vị đo lượng thông tin?”
Để mở rộng kiến thức có thể đưa ra các câu hỏi dạng:
- 1 Byte có thể biểu diễn được bao nhiêu trạng thái?
- Cơ sở nào để xác định số trạng thái đó?
4



Câu hỏi 3: Em hãy cho biết các chức năng chính của hệ điều hành?
(câu hỏi 2 - trang 64 – SGK Tin học 10)
*Phân tích: Có thể đưa ra liên hệ từ hệ điều hành đang học từ đó liệt kê các
chức năng chính của nó, nếu thiếu giáo viên có thể đưa ra câu hỏi bổ sung để
hoàn thiện cho đáp án.
Việc mở rộng kiến thức trong câu hỏi này:
- So sánh các ưu nhược điểm của các hệ điều hành đã học
- Em thử kể lại một hệ điều hành mà em biết và cho biết chức năng cơ bản
của nó?
2.2.3 Một số câu hỏi vận dụng
Câu hỏi 4: Hãy trình bày một số chức năng cơ bản của một hệ soạn thảo?
Câu hỏi 5: Những thành phần nào là cần thiết để có thể dùng tiếng Việt trong
soạn thảo?
Câu hỏi 6: Hãy kể những khả năng định dạng kí tự?
Câu hỏi 7: Hãy kể những nhóm lệnh làm việc với bảng?
Câu hỏi 8: Việc kết nối máy tính nhằm mục đích gì?
Câu hỏi 9: Giao thức truyền thông là gì?
Câu hỏi 10: Địa chỉ IP là gì?
2.3 Dạng bài tập rèn luyện tư duy, phát triển năng lực trí tuệ
2.3.1 Một số nội dung cần lưu ý:
- Cần tìm hiểu kỹ nội dung đề bài để xác định các đại lượng I, O một cách chính
xác, trong trường hợp cần thiết có thể phát biểu lại để thấy rõ yêu cầu của bài
toán.
- Dùng ngôn ngữ tựa hoặc ngôn ngữ tự nhiên liệt kê được sơ bộ các bước giải,
trên cơ sở đó xác định rõ cấu trúc dữ liệu biểu diễn.
- Định hình được thuật giải và dùng ngôn ngữ lập trình để cài đặt.
- Xác định nhất quán một phương pháp lập trình ( ví dụ như lập trình trên xuống
và thực hiện tinh chỉnh từng bước).

- Kiểm thử bằng cách xây dựng bộ test.
- Nghiên cứu mở rộng khả năng áp dụng của thuật toán trên.
2.3.2 Một số thuật toán cơ bản thường gặp
a. Các thuật toán đơn giản
* Hoán đổi giá trị của hai biến (a, b có cùng kiểu):
+ Sử dụng biến trung gian:
Sử dụng 3 thao tác gán TG := a; a := b; b := TG;
+ Không sử dụng biến trung gian (chỉ thực hiện được với a, b kiểu số):
a:=a+b; b:= a-b; a:= a-b;
* Tìm Max, Min:
+ Tìm Max của hai số a, b cho trước (có thể so sánh để xác định hoặc biến
đổi toán học, ta có số lớn là (a+b)/2 + (a-b)/2- với a, b dương); tương tự ta có thể
xác định Min của hai số.
+ Tìm Min của 3 số a, b, c:
Cách 1:
5


- Nếu a- Nếu a>=b thì (loại a) so sánh b với c để xác định số bé nhất.
Cách 2: Gán Min:=a;
- Nếu Min > b thì gán Min:=b;
- Nếu Min >c thì gán Min:=c;
b. Bài toán sắp xếp: Trong cuộc sống ta thường gặp những việc liên quan đến
sắp xếp như xếp các học sinh theo thứ tự từ thấp đến cao, xếp điểm trung bình
của học sinh trong lớp theo thứ tự từ cao đến thấp. Nói một cách tổng quát, cho
một dãy đối tượng, cần sắp xếp lại vị trí các đối tượng theo một tiêu chí nào đó.
Dưới đây ta chỉ xét bài toán sắp xếp dạng đơn giản:
Cho một dãy A gồm n số nguyên a1, a2,…,an. Cần sắp xếp các số hạng để
dãy A trở thành dãy không giảm.

Thuật toán sắp xếp bằng tráo đổi (Exchange sort)
* Xác định bài toán:
- Input: Dãy A gốm n số nguyên a1, a2,…,an
- Output: Dãy A được sắp xếp lại thành dãy không giảm.
* Ý tưởng: Với mỗi cặp số hạng đứng liền kề trong dãy, nếu số trước lớn hơn số
sau ta tráo đổi chúng cho nhau. Việc đó được lặp lại cho đến khi không có sự
đổi chỗ nào xảy ra nữa.
* Thuật toán:
Bước 1: Nhập n, các số hạng a1, a2,…,an;
Bước 2: M  N;
Bước 3: Nếu M < 2 thì đưa ra dãy A đã được sắp xếp rồi kêt thúc;
Bước 4: M  M-1, i  0;
Bước 5: i  i+1;
Bước 6: Nếu i >M thì quay lại bước 3;
Bước 7: Nếu ai > ai+1 thì tráo đổi ai và ai+1 cho nhau;
Bước 8: Quay lại bước5;
c. Bài toán tìm kiếm
Tìm kiếm là việc thường xảy ra trong cuộc sống, chẳng hạn cần tìm cuốn
sách giáo khoa Tin học 10 trên giá sách, cần tìm một học sinh trong danh sách
một lớp học… Nói một cách tổng quát là cần tìm một đối tượng nào đó trong tập
các đối thượng cho trước.
Dưới đây ta chỉ xét bài toán tìm kiếm dạng đơn giản sau:
Cho một dãy A gồm n số nguyên khác nhau a 1, a2,…,an và một số
nguyên k. Cần biết có hay không chỉ số i(1<=i<=n) mà a i=k. Nếu có hãy cho
biết chỉ số đó.
Thuật toán tìm kiếm tuần tự (sequential search)
* Xác định bài toán:
- Input: Dãy A gồm n số nguyên khác nhau a 1, a2,…,an và một số nguyên
k.
- Output: Chỉ số i mà a i bặng k hoặc thông báo không có số hạng nào của

A có giá trị bằng k.
6


* Ý tưởng: Tìm kiếm tuần tự được thực hiện một cách tự nhiên. Lần lượt từ số
hạng thứ nhất, ta so sánh giá trị số hạng đang xét với khóa cho đến khi hoặc gặp
một số hạng bằng khóa hoặc dãy A đã được xét hết và không có giá trị nào bằng
khóa.
*Thuật toán:
Bước 1: Nhập n, các số hạng a1, a2,…,an và khóa k;
Bước 2: i 1;
Bước 3: Nếu ai =k thì thông báo chỉ số i rồi kết thúc;
Bước 4: ii+1;
Bước 5: Nếu i>n thì thông báo dãy A không có số hạng nào có giá trị
bằng k, rồi kết thúc;
Bước 6: Quay lại bước 3;
2.3.3 Ví dụ.
Bài tập 1: Viết chương trình nhập từ bàn phím số nguyên dương N (N<=100) và
dãy A có n số hạng nguyên A1, A2, A3… An, các số hạng có trị tuyệt đối không
lớn hơn 1000. Hãy cho biết A có phải là một cấp số cộng hay không? Thông báo
kết quả lên màn hình.
(Bài tập 5- trang 79 Tin học 11)
*Phân tích:
Bước 1: Tìm hiểu nội dung đề bài
- Xác định các dữ kiện vào (Input), ra (Output):
+ Input: N, {an}, với 0 < n <= 100 và |ai| <= 1000.
+ Output: Dãy số {an} có phải là cấp số cộng hay không?
- Để giải quyết tốt các bước tiếp theo, giáo viên cần cho học sinh hiểu về
cấp số cộng bằng việc nhắc lại kiến thức Toán học đã học.
Bước 2: Tìm cách giải

- Tìm tòi, phát hiện cách giải nhờ vào khả năng tư duy kết hợp với hệ
thống các giải thuật đã được cung cấp.
Bản thân người học đã biết như thế nào là một cấp số cộng do vậy trong
bài toán này việc xây dựng giải thuật hết sức đơn giản. Bằng cách xác định công
sai, học sinh dễ dàng nhận ra cách để xác định dãy có phải là cấp số cộng hay
không.
B1: Nhập vào n ( n<= 100) và dãy gồm n số nguyên { a1, a2… an} và |ai|
<= 1000.
B2: Nếu n và dãy chưa thõa mãn yêu cầu. Quay lại B1.
B3: Tính công sai da[2] – a[1]. Khởi tạo biến đếm dem2.
B4: Nếu (dem <= n) và a[dem]– a[dem-1]= d thì demdem + 1. Quay lại
B4.
B5: Nếu dem > n thì kết luận dãy là cấp số cộng, còn ngược lại (dem <=
n) thì kết luận dãy không phải là cấp số cộng. Kết thúc.
Bước 3: Trình bày lời giải
- Dùng ngôn ngữ lập trình Pascal:
Var
a: array[1..100] of integer;
7


i, n, d : integer;
BEGIN
Repeat
Write(‘ Nhap so phan tu:’); readln(n);
Until (n>0) and (n<100);
For i:=1 to n do
Repeat
Write(‘Nhap a[’, i ,‘] = ’), readln(a[i]);
Until (abs(a[i])<= 1000);

d:= a[2] – a[1]; i:=2;
while(i<=n) and (a[i]-a[i-1] =d) do inc(i);
if i > n then writeln(‘day la cap so cong’)
Else writeln(‘day khong phai la cap so cong’);
Readln
END.
- Kiểm tra lời giải: Thứ tự các lệnh trên đã đúng và đầy đủ chưa, các biến có dư
thừa hay sai định kiểu hay không? Đưa ra một dãy đơn giản để kiểm tra thử
xem.
Bước 4: Nghiên cứu sâu lời giải
-Tìm những cách giải khác, so sánh lựa chọn cách giải thích hợp
Cách 2: Có thể xác định cấp số cộng bằng đoạn lệnh sau:
OK := true; d:= a[2]- a[1];
For i:=2 to n do
If a[i] – a[i-1] <> d then OK:= false;
If OK then write (‘Cap so cong’)
Else write(‘Khong la cap so cong’);
Cách 3: Có thể xác định cấp số cộng bằng đoạn lệnh sau:
OK := true; d:= a[2]- a[1]; i:=2;
While OK and (i<=n) do
Begin
Ok:=(a[i]-a[i-1] =d); inc(i);
End;
If OK then write (‘Cap so cong’)
Else write(‘Khong la cap so cong’);
Với cách giải 2 thì học sinh dễ hiểu tuy nhiên lãng phí thời gian do vòng lặp
For (nên đưa ra câu hỏi gợi mở để giải quyết tối ưu tình huống này – dùng được
câu lệnh break).
Với cách giải 3, học sinh thường bị lúng túng trong thao tác gán biến OK, có
thể khắc phục bằng câu lệnh If giúp gỡ được vướng mắc cho học sinh.

Tuy nhiên, việc sử dụng thêm biến kiểu Boolean thường tạo ra khó khăn cho
học sinh nên cách giải quyết như phương án cài đặt trên là tương đối phù hợp,
dễ hiểu và học sinh dễ thấy sự tuần tự trong cách xét tính chất của cấp số cộng

8


( việc xét tuần tự các cặp a[i], a[i-1] kể từ vị trí i = 2 cho đến khi i >n hoặc hiệu
a[i] và a[i-1] khác giá trị công sai học sinh thấy rõ).
- Bài toán trên chỉ xét với trường hợp dãy đã được sắp xếp, nếu trường hợp là
cho tập hữu hạn các số. Hỏi, tập đó có thể tạo thành cấp số cộng hay không?
Phân tích, sắp xếp và vận dụng lại giải thuật trên để giải quyết.
- Với giải thuật trên có thể cải tiến để thực hiện xét một dãy có phải là cấp số
nhân hay không? Nếu được thì đưa ra phương án.
- Xây dựng giải thuật xác định dãy con tăng, dãy con giảm.
Bài tập 2: Viết chương trình nhập từ bàn phím xâu kí tự S có độ dài không quá
100. Hãy cho biết có bao nhiêu chữ số thập phân xuất hiện trong xâu S. Thông
báo kết quả ra màn hình.
(Bài tập 10- trang 80 Tin học 11)
*Phân tích:
Bước 1: Tìm hiểu nội dung đề bài
Xác định các dữ kiện vào (Input), ra (Output):
- Input: Xâu S (length(S) <= 100);
- Output: Số lượng chữ số thập phân trong S
Bước 2: Tìm cách giải
Với bài toán này, người học có thể kết hợp thuật toán tuần tự đã được học
để tìm kiếm tuần tự từ đầu đến cuối xâu. Tại mỗi vị trí kiểm tra xem kí tự tại vị
trí đó có phải là số thập phân hay không, nếu là số thập phân thì tăng biến lưu
lên một đơn vị. Cho đến khi không còn kí tự trong xâu để kiểm tra thì đưa ra giá
trị của biến lưu.

B1: Nhập vào xâu S (length(S) <= 100);
B2: dem  1, i 1;
B3: Kiểm tra, nếu i > length(S) thì kết thúc và đưa ra dem;
B4: Kiểm tra, nếu S[i] in [‘0’.. ‘9’] thì dem dem +1;
B5: i i+1 Quay lại B3;
Bước 3: Dùng ngôn ngữ lập trình Pascal để cài đặt
Var
S: string[100];
I, dem: byte;
Begin
Write(‘Nhap vao xau S:’);
Readln(S);
Dem := 0;
For i := 1 to length(S) do
If S[i] in [‘0’.. ‘9’] then dem := dem + 1;
Write(‘So luong chu so thap phan trong S la:’,dem);
Readln
End.
Bài tập 3: Viết chương trình con (hàm, thủ tục) tìm bội số chung nhỏ nhất của
hai số nguyên dương a, b. Hãy cho biết trong trường hợp này viết CTC dưới
dạng hàm hay dưới dạng thủ tục là thuận tiện hơn. Vì sao?
9


(Bài tập 4- trang 117 Tin học 11)
*Phân tích:
Bước 1: Tìm hiểu nội dung đề bài:
- Input: Hai số nguyên dương a, b.
- Output: BCNN(a, b).
Bước 2: Tìm cách giải:

- Trước hết người học phải nắm được hai loại chương trình con và cách sử
dụng của từng loại. Trong trường hợp bài toán này thì nên sử dụng loại chương
trình con nào?
- Bản thân người học đã biết tích giữa ƯCLN với BCNN của hai số
nguyên dương a, b bằng tích của hai số đó. Do vậy, để tìm BCNN của hai số
nguyên dương a và b thì ta phải tìm ƯCLN(a, b), nghĩa là cần lấy được giá trị trả
về của CTC này. Vậy trong trường hợp này viết CTC dưới dạng hàm là thuận
tiện hơn.
Bước 3: Trình bày lời giải
- Dùng ngôn ngữ lập trình Pascal để cài đặt:
Var a, b: Interger;
Function
ƯCLN(x, y: Interger): Interger;
Begin
While x<> y do
If x> y then x:= x-y
Else y:= y – x;
ƯCLN:= x;
End;
BEGIN
Write(‘Nhap vao hai so nguyen duong a, b: ’);
Readln(a, b);
Write(‘BCNN(a, b)=’,a*b div ƯCLN(a, b));
Readln
END.
- Kiểm tra lời giải: Thứ tự các lệnh trên đã đúng và đầy đủ chưa, các biến có dư
thừa hay sai định kiểu hay không?
Bước 4: Nghiên cứu sâu lời giải
- Tìm những cách giải khác, so sánh lựa chọn cách giải thích hợp.
Cách 2: Có thể tìm ƯCLN bằng đoạn lệnh sau:

Function
ƯCLN(x, y: Interger): Interger;
Var
sodu: interger;
Begin
While y<> 0 do
Begin
Sodu:= x mod y;
x:=y;
y:=sodu;
10


End;
ƯCLN := x;
End;
Với cách giải 2 thì có thể xử lí được những bộ số lớn với thời gian chạy
nhanh và ít tốn bộ nhớ hơn.
2.3.4 Một số bài tập vận dụng:
Bài tập 4: Tìm nghiệm nguyên của phương trình ax + by = c, với a, b, c cho
trước.
Bài tập 5: Viết chương trình liệt kê tất cả các số có 3 chữ số trong đó: tổng các
chữ số của nó bằng một số a và tích các chữ số bằng một số b (a, b cho trước).
Bài tập 6: Viết chương trình liệt kê các số có 4 chữ số thõa mãn điều kiện: Tổng
của chữ số hàng trăm và chữ số hàng nghìn bằng chữ số hàng đơn vị; chữ số
hàng trục gấp đôi chữ số hàng nghìn.
Bài tập 7: Tìm tất cả các số tự nhiên nhỏ hơn 10.000 mà tổng các ước của nó
(trừ nó ra) đúng bằng chính nó.
Bài tập 8: Liệt kê các số chính phương nhỏ hơn một số n cho trước.
Bài tập 9: Tìm tất cả các số nguyên dương a, b sao cho a 2+b2 là một số chính

phương.
Bài tập 10: Lập trình để loại bỏ một phần tử ra khỏi mảng A gồm n phần tử cho
trước(mỗi phần tử là một số nguyên) theo 2 cách:
a) Loại bỏ phần tử tại vị trí k
b) Loại bỏ phần tử có giá trị bằng X
Bài tập 11: : Lập trình thực hiện một số thao tác trên mảng A gồm n phần tử cho
trước(mỗi phần tử là một số nguyên):
- Cho biết phần tử âm lớn nhất và phần tử dương bé nhất.
- Liệt kê các số nguyên tốcó trong dãy
- Đếm xem trong dãy có bao nhiêu số chính phương.
2.4 Dạng bài tập rèn luyện kỹ năng thao tác, thực hành trên máy tính
2.4.1 Một số nội dung cần lưu ý:
- Dạng bài tập này có các yêu cầu sau:
+ Tìm hiểu một ứng dụng.
+ Làm quen với một thiết bị.
+ Kiểm chứng lý thuyết, cài đặt thuật toán trên máy tính.
Đối với dạng tìm hiểu phần mềm, ngôn ngữ: giáo viên cần xây dựng hệ
thống các bước thông qua một bài thực hành để hỗ trợ học sinh khai thác tốt giờ
thực hành đảm bảo lĩnh hội kiến thức, kỹ năng.
Đối với dạng làm quen với các thiết bị như bàn phím, con chuột: giáo viên
phải đầu tư thời gian sưu tầm các công cụ (Tools) giúp rèn luyện các thao tác cơ
bản.
Đối với bài thực hành liên quan đến cài đặt giải thuật trên máy tính giáo
viên cần hướng dẫn học sinh lựa chọn, xây dựng các bộ test phù hợp nhằm kiểm
chứng tính đúng đắn của giải thuật.

11


Sau khi bài thực hành đã chuẩn bị xong nhưng nếu giáo viên thiếu phần

hướng dẫn kiểm tra kết quả của giải thuật thì sẽ gây khó khăn cho một số học
sinh.
Việc xây dựng bộ test sẽ giúp học sinh nhanh chóng khẳng định được giải
thuật và kết thúc bài toán với những niềm tin rõ ràng và tiếp nhận kiến thức một
cách chắc chắn.
2.4.2 Ví dụ:
Bài thực hành 1 (Bài thực hành 2 - trang 27sgk lớp 10): Làm quen với máy
tính.
Với bài thực hành này giáo viên nên:
- Giới thiệu các thành phần cơ bản của máy tính trên cơ sở học sinh đã
được học lý thuyết ở lớp.
- Chỉ cách khởi động và tắt máy.
- Cung cấp cho học sinh một số phần mềm nhằm rèn luyện cách gõ phím
như TOUCH hoặc MARIO (Có thể hướng dẫn qua để học sinh biết cách sử
dụng phần mềm).
- Cung cấp một số trò chơi giúp học sinh thao tác với chuột (mouse) như
Freecell, Solitaire, Minesweeper,…nhằm rèn luyện các thao tác như nháy
chuột(click), nháy đúp chuột (double click), kéo và thả (drag).
Giáo viên nên có những yêu cầu rõ ràng để học sinh không lười biếng,
không
chịu tìm hiểu hoặc tìm hiểu và thực hành không theo quy trình của giáo viên, dễ
tạo
ra thái độ thiếu nghiêm túc trong giờ học.
Bài thực hành 2:(Bài thực hành 1 - trang 34 sgk lớp 11)Cài đặt giải thuật giải
phương trình bậc hai trên máy tính bằng ngôn ngữ lập trình Pascal.
Nên xây dựng bộ test với các trường hợp có thể nhẩm được bằng cách vận
dụng linh hoạt các kiến thức có được về toán học như định lý Vi-ét,…
Cho các hệ số:
a=1; b=3; c=2 => nghiệm x1 = -1, x2 = -2.
a=1; b=2; c=1 => nghiệm kép

a=10; b=2; c=2 => vô nghiệm
Khi xây dựng bộ test cũng nên đưa ra dụng ý xây dựng của mình để học
sinh biết và có thể vận dụng vào các tình huống tương tự.
2.4.3. Một số bài tập vận dụng:
Bài thực hành 3(Bài thực hành 3 - trang 72 sgk lớp 10): Làm quen với hệ điều
hành.
Bài thực hành 4(Bài thực hành 6 - trang 106 sgk lớp 10): Làm quen với Word.
Bài thực hành 5(Bài thực hành 10 - trang 152 sgk lớp 10): Sử dung trình duyệt
Internet explorer.
Bài tập thực hành 6(Bài thực hành 3 - trang 63 sgk lớp 11): Tìm hiểu và chạy
thử chương trình tạo mảng A gồm n(n<= 100) số nguyên, mỗi số có giá trị tuyệt
đối không vượt quá 300. Tính tổng các phần tử của mảng là bội số của một số
nguyên dương k cho trước.
12


Bài tập thực hành 7(Bài thực hành 4 - trang 65 sgk lớp 11): Hãy tìm hiểu và
chạy thử chương trình thực hiện thuật toán sắp xếp dãy số nguyên băng thuật
toán tráo đổi với các giá trị khác nhau của n.
Bài tập thực hành 8 (Bài thực hành 2 - trang 40 sgk lớp 12): Tạo cẩu trúc bảng.
Bài tập thực hành 9(Bài thực hành 4 - trang 55 sgk lớp 12): Tạo biểu mẫu đơn
giản.
Bài tập thực hành 10(Bài thực hành 10 - trang 87 sgk lớp 12): Hệ cơ sở dữ liệu
quan hệ.
3. Hoạt động dạy học sửa bài tập
3.1 Mục đích.
- Hoạt động dạy học sữa bài tập có những mục đích cơ bản sau:
+ Củng cố lí thuyết.
+ Liên kết kiến thức, hệ thống lại các vấn đề đã học để vận dụng vào việc
giải quyết các bài toán.

+ Rèn luyện kỹ năng (tư duy, phân tích, thực hành, thao tác).
+ Phát triển tư duy sáng tạo.
3.2. Xây dựng bài giảng
3.2.1. Phân tích nội dung:
- Xác định mục tiêu bài học.
- Xây dựng hệ thống kiến thức.
- Chọn hệ thống bài tập phù hợp với hệ thống kiến thức và phù hợp với năng lực
của đối tượng học sinh.
3.2.2. Lựa chọn phương pháp:
- Trên cơ sở phân hóa học sinh để từ đó đưa ra phương pháp dạy học phù hợp:
+ Làm mẫu.
+ Hướng dẫn giải.
+ Kiểm tra – đối chiếu, đảm bảo mối liên hệ ngược đi kèm với những hoạt
động sửa lỗi, rút kinh nghiệm.
3.2.3. Thể hiện bài giảng:
- Xác định mục tiêu cụ thể cho từng bài toán.
- Xác định kiến thức liên quan đến từng bài toán cụ thể để có biện pháp cung
cấp, gợi nhớ.
- Phân tích bài toán: Xác định các yếu tố Input, Output và gợi ý hình thành
phương pháp giải.
- Trình bày phương pháp giải bài toán:
+ Trước hết xây dựng các yếu tố để học sinh có ý tưởng và giải thuật đối
với bài toán.
+ Liệt kê giải thuật theo từng bước.
+ Cài đặt chương trình bằng ngôn ngữ Pascal.
- Dự kiến các tình huống khó khăn, những sai lầm mà học sinh có thể vấp.
- Từ đó đưa ra hệ thống câu hỏi nhằm gợi ý, đàm thoại, giải quyết các khó khăn,
các suy nghĩ lệch lạc của học sinh mà giáo viên đã dự kiến trong quá trình dạy
học.
13



- Sau khi giải(có thể học sinh giải), giáo viên đưa ra nhận xét, rút kinh nghiệm
và đặc biệt gợi ý các hướng mở rộng bài toán.
3.2.4. Tổng kết:
- Tổng kết cuối tiết học, xây dựng hệ thống bài tập tương tự, yêu cầu bài tập ở
nhà đối với học sinh.
- Xây dựng vấn đề gợi mở cho tiết lý thuyết tiếp theo. Đây là một vấn đề khó
nhưng nếu thực hiện được thì tạo ra được nhiệm vụ cho học sinh học tập ở nhà,
đồng thời giáo viên củng có được bài toán đặt vấn đề cho tiết học sau.
IV. KẾT QUẢ THỰC NGHIỆM
- Sau khi áp dụng đề tài trong quá trình giảng dạy, bằng hình thức giám sát và ra
đề kiểm tra kết hợp thực hành tôi đã thu được kết quả sau(trung bình đối với 3
khối 10, 11, 12):
Nội dung cần nắm bắt
Số lượng
Tỷ lệ(%)
Biết phân loại các dạng
286/315
91%
bài tập
Vận dụng kiến thức đã
235/315
75%
học để làm tốt bài tập

14


C.KẾT LUẬN VÀ ĐỀ XUẤT

I. KẾT LUẬN
- Nhìn chung, hệ thống bài tập Tin học phổ thông bước đầu củng cố lý
thuyết, liên kết các kiến thức, hệ thống lại các vấn đề đã học để vận dụng vào
việc giải quyết các bài toán, rèn luyện kĩ năng và phát triển tư duy sáng tạo. Để
có thể giải quyết các bài tập đó người học cần nắm vững kiến thức lý thuyết
cùng với hệ thống các thuật toán. Bên cạnh đó, người học cần biết cách phân
loại các bài tập, vận dụng kiến thức lý thuyết để giải quyết các bài toán đó một
cách hiệu quả nhất.
- Đề tài này là một phần kết quả của quá trình nghiên cứu và giảng dạy
của bản thân tôi trong những năm qua. Tôi mong rằng đề tài này có thể giúp cho
việc dạy và học môn Tin THPT đạt hiệu quả cao.
- Đề tài này còn nhiều thiếu sót, mong được sự góp ý của các giáo viên
trong tổ bộ môn cũng như các giáo viên khác để đề tài được hoàn thiện hơn.
II. ĐỀ XUẤT VÀ KIẾN NGHỊ
- Đối với cấp trường: Hiện nay trong trường mới có một phòng thực hành
đã cũ, cấu hình thấp dẫn đến khó khăn cho việc thực hành của học sinh do vậy
cần nâng cấp và bổ xung thêm máy.
- Đối với cấp sở: Cần quan tâm và đầu tư thêm cơ sở và vật chất cho bộ
môn Tin học như máychiếu đa năng, phòng thực hành…
XÁC NHẬN CỦA

Thanh Hóa, ngày 20 tháng 05 năm 2015

THỦ TRƯỞNG ĐƠN VỊ

CAM KẾT KHÔNG COPY
Người viết

Nguyễn Thị Phượng


15


1.
2.
3.
4.

TÀI LIỆU THAM KHẢO
SGK tin học 10, bài tập tin học 10(NXBGD)
SGK tin học 11, bài tập tin học 11(NXBGD)
SGK tin học 12, bài tập tin học 12(NXBGD)
Một số tài liệu tham khảo khác trên Internet.

16


MỤC LỤC
A. ĐẶT VẤN ĐỀ………………………………………………………...
I. Lý do chọn đề tài……………………………………………………….
II. Mục đích SỞ
nghiên
cứu………………………………..............................
GIÁO
DỤC VÀ ĐÀO TẠO THANH HÓA
III. Đối tượng và phạm TRƯỜNG
vi nghiên cứu
…………………...........................
THPT
TRIỆU SƠN 2

1. Đối tượng nghiên cứu ……………...…….............................................
2. Phạm vi nghiên cứu …………………...................................................
B. GIẢI QUYẾT VẤN ĐỀ…………………..………...............................
I. Cơ sở lý luận…………………………………………...........................
II. Thực trạng của vấn đề…………………………………………………
1. Thuận lợi …………………...…….........................................................
2. Khó khăn………………………………………….................................
SÁNG
KIẾN KINH NGHIỆM
3. Kết quả trước khi nghiên
cứu………………………………………….
III. Biện pháp giải quyết vấn đề………………………………………….
1. Phân loại bài tập……………………………………………………….
2. Phương pháp giải bài tập tin học phổ thông……………..…………….
3. Hoạt động dạy học sửa bài tập…………………………………………
IV. Kết quả thực nghiệm…………………………………………………
C. KẾT LUẬN VÀ ĐỀ XUẤT…………………………………………..
I. Kết luận………………………………………………………………...
II. Đề xuất, kiến nghị……………………………………………………..
PHƯƠNG PHÁP PHÂN LOẠI VÀ GIẢI BÀI TẬP
TÀI LIỆU THAM KHẢO………………………………………………..

TIN HỌC PHỔ THÔNG

1
1
1
1
1
1

2
2
2
2
2
2
2
2
4
13
14
15
15
15
16

Người thực hiện: NguyễnThị Phượng
Chức vụ: Giáo viên
SKKN thuộc lĩnh vực(môn): Tin học

17

THANH HÓA NĂM 2015