SKKN Hướng dẫn giải một số bài tập trong sách bài tập Tin học 11 nhằm nâng cao kết quả học tập cho học sinh và lựa chọn, bồi dưỡng học sinh giỏi

SKKN Hướng dẫn giải một số bài tập trong sách bài tập Tin học 11 nhằm nâng cao kết quả học tập cho học sinh và lựa chọn, bồi dưỡng học sinh giỏi

Sách giáo khoa và sách bài tập là hai cuốn tài liệu rất quan trọng cho chương trình mỗi môn học. Đối với môn Tin học, sách giáo khoa cung cấp kiến thức các nội dung học tập, sách bài tập mở rộng, khắc sâu hơn kiến thức cho người học thông qua các bài tập với các mức độ khác nhau. Trên cơ sở các bài tập trong sách bài tập có thể mở rộng các bài tập phức tạp hơn để làm nguồn tài liệu cho việc bồi dưỡng học sinh thi học sinh giỏi cấp Tỉnh.

Học sinh theo học các môn khoa học tự nhiên và học sinh khá giỏi là đối tượng học sinh ham học hỏi, thích tìm hiểu và không muốn thua kém bạn bè nên giáo viên cần tạo tạo động lực, kích thích học sinh nghiên cứu, tìm hiểu môn học. Từ đó, hướng dẫn, rèn luyện thông qua nhiều bài tập mới, giúp các em thực sự phát huy hết khả năng tư duy, sáng tạo không chỉ trong phạm vi môn học mà còn hỗ trợ việc học tốt các môn học liên quan. Giúp nâng cao kết quả học tập của học sinh, đồng thời lựa chọn được những học sinh tham gia kì thi học sinh giỏi cấp Tỉnh.

 Các bài tập trong cuốn Bài tập Tin học 11, tác giả không nêu đủ hướng dẫn và lời giải chi tiết cho từng bài trong sách. Thậm chí một số giáo viên trẻ tuổi cũng gặp khó khăn trong việc nêu thuật toán và lời giải cho một số bài tập trong sách bài tập.

Với kinh nghiệm của bản thân trong quá trình giảng dạy Tin học lớp 11 và ôn thi học sinh giỏi, tôi quyết định chọn đề tài : "Hướng dẫn giải một số bài tập trong sách bài tập Tin học 11 nhằm nâng cao kết quả học tập cho học sinh và lựa chọn, bồi dưỡng học sinh giỏi" làm đề tài nghiên cứu của mình trong năm học 2017-2018.

 

doc 37 trang thuychi01 6703
Bạn đang xem 20 trang mẫu của tài liệu "SKKN Hướng dẫn giải một số bài tập trong sách bài tập Tin học 11 nhằm nâng cao kết quả học tập cho học sinh và lựa chọn, bồi dưỡng học sinh giỏi", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
SỞ GIÁO DỤC VÀ ĐÀO TẠO THANH HOÁ 
TRƯỜNG THPT TRIỆU SƠN 3
SÁNG KIẾN KINH NGHIỆM
HƯỚNG DẪN GIẢI MỘT SỐ BÀI TẬP TRONG
SÁCH BÀI TẬP TIN HỌC 11 NHẰM 
NÂNG CAO KẾT QUẢ HỌC TẬP CHO HỌC SINH VÀ 
LỰA CHỌN, BỒI DƯỠNG HỌC SINH GIỎI
Người thực hiện: Lê Thị Quỳnh
Chức vụ: Giáo viên
Đơn vị công tác: Trường THPT Triệu Sơn 3
SKKN thuộc lĩnh vực (môn): Tin học
THANH HOÁ NĂM 2018
 MỤC LỤC
1. MỞ ĐẦU
1.1. LÝ DO CHỌN ĐỀ TÀI
Sách giáo khoa và sách bài tập là hai cuốn tài liệu rất quan trọng cho chương trình mỗi môn học. Đối với môn Tin học, sách giáo khoa cung cấp kiến thức các nội dung học tập, sách bài tập mở rộng, khắc sâu hơn kiến thức cho người học thông qua các bài tập với các mức độ khác nhau. Trên cơ sở các bài tập trong sách bài tập có thể mở rộng các bài tập phức tạp hơn để làm nguồn tài liệu cho việc bồi dưỡng học sinh thi học sinh giỏi cấp Tỉnh.
Học sinh theo học các môn khoa học tự nhiên và học sinh khá giỏi là đối tượng học sinh ham học hỏi, thích tìm hiểu và không muốn thua kém bạn bè nên giáo viên cần tạo tạo động lực, kích thích học sinh nghiên cứu, tìm hiểu môn học. Từ đó, hướng dẫn, rèn luyện thông qua nhiều bài tập mới, giúp các em thực sự phát huy hết khả năng tư duy, sáng tạo không chỉ trong phạm vi môn học mà còn hỗ trợ việc học tốt các môn học liên quan. Giúp nâng cao kết quả học tập của học sinh, đồng thời lựa chọn được những học sinh tham gia kì thi học sinh giỏi cấp Tỉnh.
 	Các bài tập trong cuốn Bài tập Tin học 11, tác giả không nêu đủ hướng dẫn và lời giải chi tiết cho từng bài trong sách. Thậm chí một số giáo viên trẻ tuổi cũng gặp khó khăn trong việc nêu thuật toán và lời giải cho một số bài tập trong sách bài tập.
Với kinh nghiệm của bản thân trong quá trình giảng dạy Tin học lớp 11 và ôn thi học sinh giỏi, tôi quyết định chọn đề tài : "Hướng dẫn giải một số bài tập trong sách bài tập Tin học 11 nhằm nâng cao kết quả học tập cho học sinh và lựa chọn, bồi dưỡng học sinh giỏi" làm đề tài nghiên cứu của mình trong năm học 2017-2018.
1.2. MỤC ĐÍCH NGHIÊN CỨU 
Với lý do chọn đề tài đã trình bày ở trên, tôi mong muốn đề tài của mình sẽ giúp đỡ phần nào các khó khăn cho việc nâng cao chất lượng, hiệu quả của môn học cho học sinh; Hỗ trợ các đồng nghiệp trong việc giảng dạy bộ môn Tin học 11, giúp đồng nghiệp có thêm một nguồn tài liệu cơ bản để ôn tập, bồi dưỡng cho học sinh giỏi. Từ đó, có thể giảm bớt khó khăn tìm được nguồn học sinh tham gia kì thi học sinh giỏi cấp Tỉnh. Cụ thể:
- Khảo sát, đánh giá được thực trạng việc lựa chọn, bồi dưỡng học sinh tham gia thi học sinh giỏi cấp Tỉnh của trường Trung học phổ thông Triệu Sơn 3.
- Nâng cao được hiệu quả sử dụng sách bài tập Tin học 11.
- Nâng cao được kết quả học tập môn Tin học 11 cho học sinh các lớp đăng kí theo học các môn khoa học tự nhiên.
- Có thêm một tài liệu dễ dàng tự học, tư duy sáng tạo để từ đó nâng cao chất lượng dạy – học và sẽ có nhiều học sinh khá giỏi tham gia vào nguồn thi học sinh giỏi cấp Tỉnh.
1.3. ĐỐI TƯỢNG NGHIÊN CỨU CỦA ĐỀ TÀI 
- Các bài tập trong sách bài tập Tin học 11 THPT.
- Các bài tập mở rộng trên cơ sở các bài tập trong sách bài tập Tin học 11
- Sự tư duy, ý thức học tập của học sinh lớp 11 THPT.
1.4. PHƯƠNG PHÁP NGHIÊN CỨU 
	Để thực hiện đề tài này, tôi đã sử dụng các phương pháp: 
- Phương pháp nghiên cứu xây dựng cơ sở lí thuyết: Cơ sở lý thuyết là các tài liệu liên quan đến nội dung về bài tập trong sách bài tập Tin học lớp 11: Chuẩn kiến thức kỹ năng và chương trình Tin học 11 hiện hành của Bộ GD&ĐT, Sách Giáo khoa Tin học 11, sách Giáo viên Tin học 11, sách Bài tập Tin học 11 hiện hành; Sự hứng thú trong giờ học môn Tin học và ý thức tự học của học sinh đối với môn học.
- Phương pháp điều tra khảo sát thực tế, thu thập thông tin: Thông qua các phiếu điều tra về nguyện vọng tham gia đội dự tuyển thi học sinh giỏi cấp Tỉnh môn Tin học và nguyên nhân làm học sinh không muốn tham gia đội dự tuyển thi học sinh giỏi cấp Tỉnh môn Tin học của học sinh lớp 11 trường THPT Triệu Sơn 3.
- Phương pháp thống kê, xử lý số liệu: Trên cơ sở các phiếu điều tra, các kết quả học tập, thống kê các số liệu, xử lí số liệu để so sánh giữa nhóm lớp thực nghiệm và đối chứng.
2. NỘI DUNG CỦA SÁNG KIẾN KINH NGHIỆM
2.1. CƠ SỞ LÍ LUẬN CỦA SÁNG KIẾN KINH NGHIỆM
Chương trình môn Tin học THPT nhằm trang bị cho học sinh những kiến thức cơ bản nhất về Công nghệ Thông tin, hình thành cho học sinh một số kỹ năng cơ bản trong việc sử dụng Công nghệ Thông tin như soạn thảo văn bản, sử dụng bảng tính, lập trình giải toán, sử dụng Internet tìm kiếm thông tin, Email,... Nhưng ý nghĩa sâu xa hơn của môn học là nhằm trang bị cho học sinh phương pháp tư duy và giải quyết vấn đề một cách khoa học. Với ý nghĩa này, phần chương trình Tin học lớp 11 - Lập trình đóng vai trò quan trọng cho việc hình thành kỹ năng giải quyết vấn đề theo "kiểu thuật toán", đây là cách giải quyết vấn đề rất hiệu quả trong mọi lĩnh vực trong cuộc sống. Những bài tập lập trình giải toán đơn giản trong chương trình Tin học 11, giúp các em nhận thức rõ ràng và hình thành kỹ năng giải quyết vấn đề theo các bước cơ bản: lập kế hoạch (xây dựng thuật toán, xác định dữ liệu), triển khai thực hiện (viết chương trình), kiếm tra tính đúng đắn của kết quả (soát lỗi, kiểm thử), viết báo cáo. 
Trong sách bài tập Tin học 11 bao gồm các bài tập từ cơ bản, đến trung bình, và khó. Vì vậy, các bài tập trong sách bài tập là cơ sở để gợi mở, xây dựng các đề thi học sinh giỏi cấp trường, cấp Tỉnh. Tuy nhiên, nhiều bài tập có hướng dẫn giải còn sơ sài hoặc không có hướng dẫn. Điều này khiến cho học sinh không thể tự hiểu nên không hứng thú học tập, từ đó không tự học, không chịu tư duy môn học, dẫn đến việc phát hiện học sinh có tố chất môn học rất khó khăn, hệ quả là giáo viên trong trường khó tìm nguồn học sinh cho kì thi học sinh giỏi cấp Tỉnh.
2.2. THỰC TRẠNG VÀ NHỮNG VẤN ĐỀ CẦN GIẢI QUYẾT 
Trường THPT Triệu Sơn 3 là một trường nằm trong vùng bán sơn địa, điểm thi đầu vào tương đối thấp, dân cư còn nghèo, điều kiện học tập của học sinh còn khó khăn, cơ sở vật chất trong nhà trường còn nhiều hạn chế. Học sinh của trường đa số là học sinh thuộc hộ nghèo, cận nghèo. Mỗi khóa học (trong những năm gần đây khoảng 7-8 lớp/khóa) chỉ có khoảng 1 đến 2 lớp là học sinh đăng kí theo học các môn khoa học tự nhiên để thi THPT Quốc gia, đây cũng là số học sinh có thể tham gia vào các đội dự tuyển của trường thi học sinh giỏi cấp Tỉnh tất cả các môn Toán, Vật Lí, Hóa học, Sinh học, Tiếng Anh, Tin học, thậm chí cả Ngữ văn, Địa lí,... Đối với học sinh, Tin học là môn lựa chọn sau cùng trong các đội dự tuyển. Vì vậy, việc nâng cao chất lượng học tập, lựa chọn và bồi dưỡng học sinh giỏi là vấn đề vô cùng khó khăn, là nhiệm vụ, là cơ hội và cũng là thách thức đối với giáo viên khi phụ trách ôn luyện học sinh giỏi.
Trong sách bài tập Tin học 11 là những bài tập mang tính chất gợi mở, đa dạng từ dễ đến khó, học sinh cần hiểu bản chất vấn đề, thực hiện từng bước thì việc giải quyết các bài tập sẽ đơn giản hơn rất nhiều. Tuy nhiên, rất nhiều bài tập thì phần hướng dẫn chưa đầy đủ, khó hiểu đối với học sinh. Với khả năng và thời gian còn hạn chế, tôi lựa chọn 10 bài tập trong sách bài tập để thực hiện trong đề tài, các bài tập được lựa chọn trong đề tài có thể mở rộng thành nhiều bài tập tham khảo cho việc bồi dưỡng học sinh khá giỏi để lựa chọn và bồi dưỡng những học sinh này có thể tham gia kì thi học sinh giỏi cấp Tỉnh. Đề bài của các bài tập này có sẵn trong sách Bài tập Tin học 11, xin không nêu ra trong đề tài. Dưới đây tôi chỉ liệt kê tên các bài tập này và nguyên văn phần hướng dẫn giải trong sách bài tập Tin học 11.
STT
Tên bài
Gợi ý trong sách bài tập
1
Bài 4.12/tr33
SBT, tr98: Khi tìm max phải kiểm tra điều kiện "lớn hơn" và tìm từ đầu về cuối, còn tìm min thì phải kiểm tra điều kiện "nhỏ hơn" và tìm từ cuối về đầu.
2
Bài 4.25/tr39
SBT, tr100: Dùng biến đếm d kiểu integer với giá trị ban đầu bằng 0 để đếm hoặc duyệt từ trái sang phải, gặp dấu ngoặc mở thì tăng d lên 1, gặp dấu ngoặc đóng thì giảm d một đơn vị. Biểu thức ngoặc là sai khi gặp d=-1 hoặc hết biểu thức ngoặc d vẫn lớn hơn 0.
 	 1 2 3 4 5 6 7 
 	 ( ( ) ( ) ) ) ( ( ) )
d= 0 1 2 1 2 1 1 -1
3
Bài 4.27/tr39
SBT, tr101: Để xử lý dữ liệu vòng tròn thông thường ta biểu diễn nó hai lần liên tiếp. Ở bài này ta dùng xâu P chứa xâu.
'abcdefghijklmnopqrstuvxyz abcdefghijklmnopqrstuvxyz'
Việc mã hóa xâu S được thực hiện bằng câu lệnh:
for i := 1 to length(s) do 
begin
	j := pos(s[i], p) + k ;
	s[i] := p[j];	
 end;
4
Bài 4.39/tr45
SBT, tr103: Tạo hàng rào theo kỹ thuật ở các bài 4.35, 4.36
5
Bài 4.40/tr45
SBT, tr103: Kiểm tra sự tồn tại của hai dấu cách liên tiếp giữa xâu bằng hàm pos(‘ ’,s). Nếu có thì xóa một dấu cách ở vị trí tìm được. Lặp lại công việc này cho đến khi không còn hai dấu cách liên tiếp. Kiểm tra kí tự đầu và cuối xâu, nếu là dấu cách thì xóa.
6
Bài 4.41/tr45
SBT,tr103: Đếm số lượng đầu từ. (Kí tự I là đầu từ nếu nó không phải là kí tự phân cách và nó hoặc là đứng vị trí đầu tiên trước nó có dấu cách. Có thể đếm số kí tự cuối từ)
7
Bài 4.42/tr46
SBT, tr103: Dữ liệu vòng tròn, vì vậy phải nhân đôi xâu ban đầu, kiểm tra từng xâu con độ dài N bắt đầu từ vị trí i (i = 1, 2, .., N).
8
Bài 7.14/tr68
SBT, tr116: Tạo mảng thống kê sự xuất hiện các chữ số từ 0 đến 9.
9
Bài 7.16/tr69
SBT, tr116: Dùng xâu P=’0123456789ABCDEF’ để lưu các chữ số hệ 16. Lấy phần dư của phép chia N cho 16 ta được chữ số hàng đơn vị. Từ đó dễ dàng xác định kí tự tương ứng ở hệ 16 qua xâu P. Loại bỏ chữ số đã xử lí bằng cách lấy phần nguyên của phép chi N cho 16. Tiếp tục các công việc trên cho đến khi N=0.
Lưu ý: có một số ngôn ngữ lập trình cung cấp phương tiện đưa trực tiếp một số ra dạng biểu diễn hệ 16.
10
Bài 7.40/tr75
SBT, tr117: Với N≤1000 ta có thể tạo mảng kí tự biểu diễn số N1, sau đó xóa theo quy tắc đã nêu.
Ghi chú: Nếu áp dụng kỹ thuật phân tích nhị phân ta có thể giải được với trường hợp N rất lớn.
Có thể thấy, nếu đọc đầu bài và xem xét các gợi ý trong sách bài tập của các bài tập trên, ta nhận thấy nó còn rất mơ hồ đối với học sinh và có rất ít học sinh hiểu và giải được bài tập theo các gợi ý này. 
Đối với học sinh, việc các em có thể làm thêm các bài tập trong sách bài tập ở nhà là một trong những nội dung quan trọng để các em khắc sâu kiến thức, nâng cao khả năng tư duy, lập trình giải toán. Vấn đề đặt ra là các em gặp khó khăn khi vấp phải các bài tập khó với các gợi ý sơ lược như trong sách bài tập Tin học 11. Theo điều tra khảo sát thực tế học sinh tại các lớp 11C3, 11D3 và nhóm học sinh khá giỏi của lớp 11C4, 11D4 trường THPT Triệu Sơn 3 trong hai năm học liên tiếp:
- 11C3, 11C4: Năm học 2016 – 2017,
- 11D3, 11D4 : Năm học 2017 – 2018. 
(Lưu ý: Các lớp được chọn tham gia nghiên cứu cho đề tài có nhiều điểm tương đồng nhau về ý thức học tập của học sinh, thái độ học tập đối với bộ môn Tin học, đặc biệt là năng lực học tập trước khi tác động.)
Kết quả là: 
Bảng 1: Nguyện vọng tham gia đội dự tuyển học sinh giỏi của trường:
Mức độ 
Năm học 2016-2017
Năm học 2017-2018
Tổng
Lớp 11C3
Lớp 11C4
Lớp 11D3
Lớp 11D4
SL
%
SL
%
SL
%
SL
%
SL
%
Rất muốn tham gia
2
4.4
0
0.0
3
6.7
1
4.5
6
4.4
Muốn tham gia
9
20.0
5
20.0
11
24.4
4
17.4
29
21.0
Không muốn tham gia
34
75.6
20
80.0
31
68.9
18
78.2
103
74.6
Tổng
45
100
25
100
45
100
23
100
138
100
Bảng 2: Về nguyên nhân chủ yếu làm học sinh không muốn tham gia đội dự tuyển thi học sinh giỏi môn Tin học:
Lớp 
Sĩ số
Nguyên nhân
Do là môn học khó
Do là môn học phụ
Do gia đinh không đồng ý
Ý kiến khác
SL
%
SL
%
SL
%
SL
%
11C3
45
23
51.1
18
40.0
3
6.7
1
2.2
11C4
25
15
60.0
7
28.0
3
12.0
0
0.0
11D3
45
21
46.7
19
42.2
5
11.1
0
0.0
11D4
23
15
65.2
6
26.1
2
8.7
0
0.0
138
74
53.6
50
36.2
13
9.4
1
0.7
Từ kết quả điều tra trên cho thấy: Nguyện vọng tham gia đội dự tuyển thi học sinh giỏi cấp Tỉnh của trường (Bảng 1): Có đến 74.6% học sinh được điều tra không muốn tham gia, điều này thực sự khó khăn cho việc tìm nguồn học sinh thi học sinh giỏi cấp Tỉnh của môn học trong nhà trường. Về nguyên nhân chủ yếu làm học sinh không tham gia (Bảng 2): Có nhiều nguyên nhân, song nguyên nhân chiếm phần nhiều nhất ở đây là do học sinh thấy môn học khó, khó tự nghiên cứu và tự làm bài tập, do đó không đủ sức để đầu tư vào môn học, mất thời gian và ảnh hưởng đến các môn học cơ bản (các môn học để thi trong kì thi THPT Quốc gia).
Vậy, làm thế nào để có thể nâng cao kết quả học tập, làm thế nào để các em cảm thấy chủ động tiếp thu kiến thức một cách tư duy sáng tạo, giúp học sinh hứng thú hơn với môn học, kết quả học tập nói chung được nâng lên, lựa chọn được những học sinh có tố chất vào đội dự tuyển của trường tham gia dự thi học sinh giỏi cấp Tỉnh là điều mà bản thân tôi luôn suy nghĩ, trăn trở trong mỗi năm học. 
2.3. CÁC GIẢI PHÁP GIẢI QUYẾT VẤN ĐỀ 
2.3.1. Xác định bài toán, khai báo dữ liệu, xây dựng ý tưởng, viết thuật toán
Trong phần này tương ứng với mỗi bài tập đã nêu ở trên, tôi xin nêu thuật toán cụ thể cho bài tập và mã nguồn viết bằng ngôn ngữ Pascal (mã nguồn xem phần phụ lục), qua đó các em học sinh có thể tham khảo và tự viết chương trình giải quyết bài toán, các đoạn mã nguồn nêu trong đề tài đã được chạy thử, có độ tin cậy cao và đã được các em học sinh khá giỏi trường THPT Triệu Sơn 3 sử dụng tham khảo và so sánh với bài làm của mình.
2.3.1.1. Bài 4.12/tr33
* Xác định input và output của bài toán.
Input: Dãy số nguyên P =(p1, p2, ..., pn), 2 ≤ n ≤ 100; các pi là các số nguyên bất kỳ.
Output: Dãy số nguyên P =(p1, p2, ..., pn), sau khi đã đổi chỗ phần tử lớn nhất có chỉ số nhỏ nhất và phần tử nhỏ nhất có chỉ số lớn nhất.
* Khai báo dữ liệu bài toán.
- Mảng P gồm tối đa 100 phần tử kiểu Integer để lưu dãy số P nhập vào từ bàn phím.
- Các biến nguyên Pmax, imax, Pmin, imin tương ứng là các biến lưu giá trị lớn nhất, vị trí của giá trị lớn nhất, giá trị nhỏ nhất, vị trí của giá trị nhỏ nhất. Ngoài ra cần dùng biến N - lưu kích thước mảng, biến i - dùng làm chỉ số duyệt mảng, nhập và in mảng (N, i - kiểu Integer).
* Thuật toán.
Bước 1: Nhập N và dãy số P =(p1, p2, ..., pn) từ bàn phím;
Bước 2: Pmin ← p[n] ; imin ← n ; Pmax ← p[1] ; imax ← 1; i ← 1;
Bước 3: Nếu i = n thì đến bước 5;
Bước 4: Nếu Pmax < p[i+1] thì Pmax ← p[imax+1]; imax ← i; i ← i+1; sang bước 3;
Bước 5: Nếu imin = 1 thì đến bước 7;
Bước 6: Nếu Pmin > p[i-1] thì Pmin ← p[i-1]; imin ← i; i ← i-1; sang bước 5;
Bước 7: p[imin] ← Pmax; p[imax]← Pmin;
Bước 8: In dãy P ra màn hình và kết thúc.
2.3.1.2. Bài 4.25/tr38
* Xác định input và output của bài toán.
Input: Xâu kí tự s chỉ gồm các dấu ngoặc mở “(” hoặc ngoặc đóng “)”
Output: “Yes” nếu là cách đặt ngoặc đúng, “No” nếu là cách đặt ngoặc sai
* Khai báo dữ liệu bài toán.
- Xâu ký tự S (string), biến nguyên d tăng một đơn vị nếu gặp dấu ngoặc mở hoặc giảm một đơn vị nếu gặp dấu ngoặc đóng.
* Thuật toán 
- Xác định ý tưởng: Dùng biến đếm d kiểu integer với giá trị ban đầu bằng 0 để đếm hoặc duyệt từ trái sang phải, gặp dấu ngoặc mở thì tăng d lên 1, gặp dấu ngoặc đóng thì giảm d một đơn vị. Biểu thức ngoặc là sai khi gặp d=-1 hoặc hết biểu thức ngoặc d vẫn lớn hơn 0.
- Thuật toán:
Bước 1: Nhập xâu st;
Bước 2: d←0; i←1;
Bước 3: 
Bước 3.1: Nếu st[i]= “(” thì d←d+d;
Bước 3.2: Nếu st[i] = “)” thì d←d-1;
Bước 4: Nếu d=-1 thì thông báo “No” rồi kết thúc
Bước 5: Nếu i>length(st) thì sang bước 7;
Bước 6: i←i+1, rồi quay lại bước 3;
Bước 7: Nếu d=0 thì thông báo “Yes” rồi kết thúc, ngược lại thì thông báo “No” rồi kết thúc;
2.3.1.3. Bài 4.27/tr39
* Xác định input và output của bài toán
Input: Số nguyên K (1< K ≤ 26) và xâu ký tự S không quá 255 ký tự
Output: Xâu X là xâu ký tự S sau khi đã mã hóa theo quy tắc Xê Da với khóa là K ra màn hình.
* Khai báo dữ liệu bài toán
Số nguyên K (Integer) và xâu ký tự S, X (string) 
* Thuật toán 
- Xác định ý tưởng: Tạo xâu P gồm 26 ký tự trong bảng chữ cái Tiếng Anh, sau đó gấp đôi xâu P lên và gọi P là xâu mẫu. Duyệt từng ký tự của xâu S, với mỗi ký tự S[i] ta thay bằng ký tự cách ký tự S[i] trong xâu mẫu P là K vị trí để được ký tự X[i] là ký tự được mã hóa.
- Thuật toán: 
Bước 1: Nhập số nguyên K (1<K ≤26), và xâu ký tự S gồm các chữ cái từ 'a' đến 'z'; X ← S ; i ← 1;
P ← ' abcdefghijklmnopqrstuvxyz abcdefghijklmnopqrstuvxyz ';
Bước 2: Nếu i > length(S) thì đến bước 4;
Bước 3: j ← pos(S[i] , P) + k ; X[i] ← P[j] ; i ← i + 1; sang bước 2;
Bước 4: In ra xâu X.
2.3.1.4. Bài 4.39/tr45 
* Xác định input và output của bài toán
Input: Nhập xâu S chứa các ký tự latinh in thường và các chữ số 0..9
Output: Số các ký tự khác nhau trong S.
* Khai báo dữ liệu bài toán
- Khai báo các biến xâu S, biến Count kiểu integer. 
* Thuật toán 
- Xác định ý tưởng: Duyệt trong khoảng từ 'a'..'z' và từ '0'..'9', dùng hàm pos kiểm tra sự xuất hiện của mỗi ký tự này trong S, nếu có thì tăng Count.
- Thuật toán: 
Bước 1: Nhập S chứa các ký tự latinh in thường và các chữ số 0..9; count ← 0; i ← 97 (97 là mã của chữ 'a') ; j ← 48 (48 là mã của chữ số '0');
Bước 2: Nếu chr(i) > 'z' thì sang bước 5;
Bước 3: Nếu pos(chr(i),s)>0 thì Count ← count + 1; 
Bước 4: i ← i+1; sang bước 2;
Bước 5: Nếu chr(j) > '9' thì sang bước 8;
Bước 6: Nếu Pos(chr(j),s)>0 thì Count ← Count + 1;
Bước 7: j ← j + 1; sang bước 5;
Bước 8: In giá trị Count và kết thúc.
2.3.1.5. Bài 4.40/tr45
* Xác định input và output của bài toán
Input: Xâu kí tự st. 
Output: Xâu st đã được chuẩn hóa bằng cách xóa các dấu cách thừa.
* Khai báo dữ liệu bài toán
- Khai báo biến xâu St; biến i kiểu integer. 
* Thuật toán 
- Xác định ý tưởng: Lặp lại việc: xét kí tự đầu xâu, nếu là dấu cách thì xóa; Lặp lại việc: xét kí tự cuối xâu, nếu là dấu cách thì xóa; Nếu tồn tại của hai dấu cách liên tiếp giữa xâu thì xóa một dấu cách ở vị trí tìm được, bằng cách sử dụng hàm Pos(‘ ‘,st). Lặp lại công việc này cho đến khi không còn hai dấu cách liên tiếp.
- Thuật toán:
Bước 1: Nhập xâu st;
Bước 2: i ← 1;
Bước 3: Trong khi st[i]= ‘ ‘ thì delete(st,i,1);
Bước 4: Nếu i>length(st)-1 thì đưa ra xâu st, rồi kết thúc;
Bước 5: Nếu (st[i]= ‘ ‘) và (st[i+1] = ‘ ‘) thì delete(st,i,1);
Bước 6: i←i+1, rồi quay lại bước 3;
2.3.1.6. Bài 4.41/tr45
* Xác định input và output của bài toán
Input: Xâu kí tự st. 
Output: Số lượng từ của xâu.
* Khai báo dữ liệu bài toán
- Khai báo biến xâu St; biến i,d kiểu integer. 
* Thuật toán 
- Xác định ý tưởng: Bắt đầu từ vị trí đầu tiên của xâu, nếu kí tự thứ i là dấu cách và kí tự thứ i+1 khác dấu cách thì tăng d thêm 1 đơn vị. Số lượng từ của xâu là d
- Thuật toán: 
Bước 1. Nhập xâu st;
Bước 2: i←1; d←1;
Bước 3: Trong khi st[i] = ‘ ‘ thì delete(st,i,1); 
Bước 4: i←i+1;
Bước 5: Nếu i> length(st) thì đưa ra d, rồi kết thúc;
Bước 5: Nếu st[i] ‘ ‘ và st[i+1] = ‘ ‘ thì d←d+1;
Bước 6: Quay lại bước 4;
2.3.1.7. Bài 4.42/tr46 
* Xác định input và output của bài toán
Input: Nhập xâu N viên đá quý (5≤ N ≤ 120), mỗi phần tử là số nguyên trong khoảng 1..9.
Output: In ra số vị trí khác nhau có thể mắc khóa tháo lắp vòng.
* Khai báo dữ liệu bài toán
- Khai báo các biến xâu S, biến Count kiểu integer. 
* Thuật toán 
- Xác định ý tưởng: Nhân đôi xâu S, và kiểm tại các vị trí i = 1, 2, ..., N, xem các xâu độ dài N tính từ i về phía đầu S và về phía cuối S có giống nhau không, nếu có thì tăng Count. 
- Thuật toán: 
Bước 1: Nhập S; 
Bước 2: Khởi tạo: N ← Length(s); s ← s + s; count ← 0; i←1; 
Bước 3: Nếu i >N thì sang bước 9;
Bước 4: L ←i; R←i+N-1;
Bước 5: Nếu (L ≥ R)hoặc(S[L] S[R]) thì sang bước 7;
Bước 6: L ← L + 1; R ← R -1; sang bước 5;
Bước 7: Nếu L ≥ R thì Count ← Count + 1; 
Bước 8: i ← i + 1; sang bước 3;
Bước 9: In giá trị Count; Kết thúc.
2.3.1.8. Bài 7.14/tr6 8
* Xác định input và output của bài toán
Input: Xâu số N (Xâu không quá 50 chữ số và không có số 0 không có nghĩa ở đầu) 
Output: In ra số thống kê của N 
* Khai báo dữ liệu bài toán
- Khai báo các biến xâu N, a ; biến i,j kiểu nguyên.
* Thuật toán 
- Xác đị

Tài liệu đính kèm:

  • docskkn_huong_dan_giai_mot_so_bai_tap_trong_sach_bai_tap_tin_ho.doc