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

SKKN PHÂN LOẠI DẠNG bài tập và PHƯƠNG PHÁP GIẢI các bài tập TIN học 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 (110.42 KB, 18 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.

3


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 PTTT 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ó nhiều 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 bộ 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

4


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:
Việc phân lọai 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.
5


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.
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.

6


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 đó?
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.

7


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:
- 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 a 1, 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;
8


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 a1, 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.
* Ý 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?
9


(để 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 { a 1, 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;
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’);
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
10


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 ( 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
11


đơ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 length(S)>100 thì kết thúc và đưa ra dem;
B4: Kiểm tra, nếu S[i] in [‘0’..’9’] thì dem dem +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?
(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:
Var a, b: Interger;

Function
ƯCLN(x, y: Interger): Interger;
Begin
While x<> y do
If x> y then x:= x-y
12


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.
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.

13


Đố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.
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.

14


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.
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:
15


+ 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.
- Sau khi giải(có thể học sinh giải), giáo viên đưa ranhậ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

16


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 dung
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…

17


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.
XÁC NHẬN CỦA

Thanh Hóa, ngày 14 tháng 04 năm 2019

THỦ TRƯỞNG ĐƠN VỊ


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

Nguyễn Thị Phượng

18


SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HOÁ

TRƯỜNG THPT TRIỆU SƠN 2

SÁNG KIẾN KINH NGHIỆM

PHÂN LOẠI DẠNG BÀI TẬP VÀ PHƯƠNG PHÁP GIẢI CÁC
BÀI TẬP TIN HỌC PHỔ THÔNG

Người thực hiện: Nguyễn Thị Phượng
Chức vụ: Giáo viên
Đơn vị công tác: Trường THPT Triệu Sơn 2
SKKN thuộc lĩnh vực : Tin học

THANH HOÁ NĂM 2019
19


20