1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

37 22 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề 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ác giả Lê Thị Quỳnh
Trường học Trường THPT Triệu Sơn 3
Chuyên ngành Tin học
Thể loại sáng kiến kinh nghiệm
Năm xuất bản 2018
Thành phố Thanh Hoá
Định dạng
Số trang 37
Dung lượng 264,38 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • Người thực hiện: Lê Thị Quỳnh

  • 1. MỞ ĐẦU

    • 1.1. LÝ DO CHỌN ĐỀ TÀI

    • 1.2. MỤC ĐÍCH NGHIÊN CỨU

    • 1.3. ĐỐI TƯỢNG NGHIÊN CỨU CỦA ĐỀ TÀI

    • 1.4. PHƯƠNG PHÁP NGHIÊN CỨU

  • 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

    • 2.2. THỰC TRẠNG VÀ NHỮNG VẤN ĐỀ CẦN GIẢI QUYẾT

      • Bài 4.12/tr33

      • Bài 4.25/tr39

      • Bài 4.27/tr39

      • Bài 4.39/tr45

      • Bài 4.40/tr45

      • Bài 4.41/tr45

      • Bài 4.42/tr46

      • Bài 7.14/tr68

      • Bài 7.16/tr69

      • Bài 7.40/tr75

    • 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

        • 2.3.1.1. Bài 4.12/tr33

        • * Xác định input và output của bài toán.

        • * Khai báo dữ liệu bài toán.

        • * Thuật toán.

      • 2.3.1.2. Bài 4.25/tr38

        • * Xác định input và output của bài toán.

        • * Khai báo dữ liệu bài toán.

        • * Thuật toán

      • 2.3.1.3. Bài 4.27/tr39

        • * Xác định input và output của bài toán

        • * Khai báo dữ liệu bài toán

        • * Thuật toán

      • 2.3.1.4. Bài 4.39/tr45

        • * Xác định input và output của bài toán

        • * Khai báo dữ liệu bài toán

        • * Thuật toán

      • 2.3.1.5. Bài 4.40/tr45

        • * Xác định input và output của bài toán

        • * Khai báo dữ liệu bài toán

        • * Thuật toán

        • * Xác định input và output của bài toán

        • * Khai báo dữ liệu bài toán

        • * Thuật toán

      • 2.3.1.7. Bài 4.42/tr46

        • * Xác định input và output của bài toán

        • * Khai báo dữ liệu bài toán

        • * Thuật toán

      • 2.3.1.8. Bài 7.14/tr6 8

        • * Xác định input và output của bài toán

        • * Khai báo dữ liệu bài toán

        • * Thuật toán

      • 2.3.1.9. Bài 7.16/tr69

        • * Xác định input và output của bài toán

        • * Khai báo dữ liệu bài toán

        • * Thuật toán

      • 2.3.1.10. Bài 7.40/tr75

        • * Xác định input và output của bài toán

        • * Khai báo dữ liệu bài toán

        • * Thuật toán

      • 2.3.2. Lựa chọn học sinh khá giỏi thông qua các bài tập

      • 2.3.2.1. Lựa chọn thông qua việc phát hiện ý tưởng

      • 2.3.2.2. Lựa chọn thông qua việc lập trình giải các bài toán

      • 2.3.3. Mở rộng các bài tập đã đưa ra nhằm bồi dưỡng học sinh khá giỏi

    • 2.4. HIỆU QUẢ CỦA SÁNG KIẾN KINH NGHIỆM

      • 2.4.1. Kết quả học tập

      • 2.4.2. Đối với nhóm học sinh khá giỏi.

  • 3. KẾT LUẬN, KIẾN NGHỊ

    • 3.1. KẾT LUẬN

    • 3.2. KIẾN NGHỊ

    • TÀI LIỆU THAM KHẢO

  • DANH MỤC

  • PHỤ LỤC 1

  • PHỤ LỤC 2: CODE CÁC BÀI TẬP TRONG SÁCH BÀI TẬP

  • PHỤ LỤC 3: CODE CÁC BÀI TẬP MỞ RỘNG

Nội dung

NỘI DUNG CỦA SÁNG KIẾN KINH NGHIỆM

CƠ SỞ LÍ LUẬN CỦA SÁNG KIẾN KINH NGHIỆM

Chương trình môn Tin học THPT cung cấp cho học sinh kiến thức cơ bản về Công nghệ Thông tin và kỹ năng sử dụng như soạn thảo văn bản, sử dụng bảng tính, lập trình giải toán, tìm kiếm thông tin trên Internet và sử dụng Email Hơn nữa, môn học còn giúp học sinh phát triển phương pháp tư duy và giải quyết vấn đề một cách khoa học Đặc biệt, phần Lập trình trong chương trình Tin học lớp 11 đóng vai trò quan trọng trong việc hình thành kỹ năng giải quyết vấn đề theo "kiểu thuật toán", một phương pháp hiệu quả trong nhiều lĩnh vực Các bài tập lập trình đơn giản giúp học sinh nhận thức rõ ràng và hình thành kỹ năng giải quyết vấn đề qua các bước: 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ử) và viết báo cáo.

Sách bài tập Tin học 11 cung cấp nhiều bài tập từ cơ bản đến nâng cao, là nền tảng cho việc xây dựng đề thi học sinh giỏi cấp trường và tỉnh Tuy nhiên, nhiều bài tập thiếu hướng dẫn chi tiết, khiến học sinh khó hiểu và không hứng thú với việc học Điều này dẫn đến việc học sinh không tự học và thiếu tư duy trong môn học, gây khó khăn cho giáo viên trong việc phát hiện và tuyển chọn học sinh có năng lực tham gia kỳ thi học sinh giỏi cấp tỉnh.

THỰC TRẠNG VÀ NHỮNG VẤN ĐỀ CẦN GIẢI QUYẾT

Trường THPT Triệu Sơn 3 tọa lạc tại vùng bán sơn địa, nơi có điểm thi đầu vào thấp và điều kiện sống còn khó khăn, với phần lớn học sinh thuộc hộ nghèo và cận nghèo Trong mỗi khóa học, chỉ khoảng 1-2 lớp đăng ký các môn khoa học tự nhiên để thi THPT Quốc gia, dẫn đến số lượng học sinh tham gia đội dự tuyển cho các môn học như Toán, Vật Lí, Hóa học, Sinh học, Tiếng Anh, Tin học và Ngữ văn rất hạn chế Đặc biệt, Tin học thường là môn được lựa chọn cuối cùng Việc nâng cao chất lượng học tập và bồi dưỡng học sinh giỏi trở thành một nhiệm vụ đầy thách thức và cơ hội cho giáo viên trong quá trình ôn luyện.

Sách bài tập Tin học 11 cung cấp nhiều bài tập đa dạng từ dễ đến khó, giúp học sinh hiểu sâu về vấn đề và giải quyết bài tập hiệu quả hơn Tuy nhiên, một số bài tập có phần hướng dẫn chưa đầy đủ, gây khó khăn cho học sinh Với thời gian và khả năng hạn chế, tôi đã chọn 10 bài tập trong sách để thực hiện đề tài, những bài tập này có thể mở rộng thành tài liệu tham khảo cho việc bồi dưỡng học sinh khá giỏi, nhằm chuẩn bị cho 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, vì vậy tôi chỉ liệt kê tên các bài tập và phần hướng dẫn giải nguyên văn 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

Khi tìm giá trị lớn nhất (max) trong SBT tr98, cần kiểm tra điều kiện "lớn hơn" và thực hiện tìm kiếm từ đầu đến cuối Ngược lại, để tìm giá trị nhỏ nhất (min), cần kiểm tra điều kiện "nhỏ hơn" và tiến hành tìm kiếm từ cuối về đầu.

SBT, tr 100: Sử dụng biến đếm d kiểu integer khởi tạo bằng 0 để đếm hoặc duyệt từ trái sang phải Tăng d lên 1 khi gặp dấu ngoặc mở và giảm d một đơn vị khi gặp dấu ngoặc đóng Biểu thức ngoặc được coi là sai khi d = -1 hoặc khi kết thúc biểu thức mà d vẫn lớn hơn 0.

SBT , tr 101 : Để 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;

SBT , tr 103 : Tạo hàng rào theo kỹ thuật ở các bài 4.35, 4.36

SBT, tr 103: Sử dụng hàm pos(' ', s) để kiểm tra sự tồn tại của hai dấu cách liên tiếp trong xâu Nếu tìm thấy, xóa một dấu cách tại vị trí đó và lặp lại quá trình cho đến khi không còn hai dấu cách liên tiếp Cuối cùng, kiểm tra và xóa các dấu cách ở đầu và cuối xâu nếu có.

SBT tr103 hướng dẫn cách đếm số lượng đầu từ, trong đó ký tự "I" được xác định là đầu từ nếu nó không phải là ký tự phân cách và đứng ở vị trí đầu tiên hoặc có dấu cách trước nó Ngoài ra, có thể đếm số ký tự cuối từ để có được thông tin đầy đủ hơn.

SBT , tr 103 : 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).

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 SBT , tr 116: Dùng xâu P=’0123456789ABCDEF’ để lưu

7.16/tr69 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.

SBT , tr 117 : 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.

Nhiều học sinh gặp khó khăn trong việc hiểu và giải các bài tập trong sách bài tập Tin học 11 do gợi ý còn mơ hồ Việc làm thêm bài tập ở nhà là cần thiết để củng cố kiến thức và nâng cao khả năng tư duy, lập trình giải toán Khảo sát 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 cho thấy thực trạng này diễn ra trong hai năm học liên tiếp.

Các lớp được chọn cho nghiên cứu này có nhiều điểm tương đồng về ý thức học tập và thái độ của học sinh đối với môn Tin học, đặc biệt là năng lực học tập trước khi có sự can thiệp.

Bảng 1: Nguyện vọng tham gia đội dự tuyển học sinh giỏi của trường:

Năm học 2016-2017 Năm học 2017-2018 Tổng

SL % SL % SL % SL % SL %

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:

Do là môn học khó

Do là môn học phụ

Do gia đinh không đồng ý Ý kiến khác

Kết quả điều tra cho thấy 74.6% học sinh không muốn tham gia đội dự tuyển thi học sinh giỏi cấp Tỉnh, điều này gây khó khăn trong việc tìm nguồn học sinh cho môn học Nguyên nhân chính là do học sinh cảm thấy môn học khó, khó tự nghiên cứu và làm bài tập, dẫn đến việc họ không đủ khả năng đầu tư thời gian cho môn học này, ảnh hưởng đến các môn học cơ bản cần thiết cho kỳ thi THPT Quốc gia.

Để nâng cao kết quả học tập và khuyến khích học sinh tiếp thu kiến thức một cách sáng tạo, cần tạo ra môi trường học tập hứng thú Điều này không chỉ giúp học sinh cảm thấy chủ động hơn trong việc học mà còn nâng cao chất lượng học tập chung Bên cạnh đó, việc lựa chọn những học sinh có tố chất để tham gia đội tuyển thi học sinh giỏi cấp Tỉnh cũng là một mục tiêu quan trọng mà tôi luôn trăn trở 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ôi sẽ trình bày thuật toán cụ thể cho từng bài tập đã nêu, kèm theo mã nguồn viết bằng ngôn ngữ Pascal (xem thêm trong phần phụ lục) Các em học sinh có thể tham khảo để tự viết chương trình giải quyết bài toán Các đoạn mã nguồn đã được thử nghiệm và có độ tin cậy cao, được học sinh 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.

* 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 Pmax, imax, Pmin, và imin lần lượt lưu trữ giá trị lớn nhất, vị trí của giá trị lớn nhất, giá trị nhỏ nhất, và vị trí của giá trị nhỏ nhất trong mảng Bên cạnh đó, biến N được sử dụng để lưu kích thước của mảng, trong khi biến i đóng vai trò là chỉ số để duyệt qua các phần tử trong mảng Việc nhập và in mảng được thực hiện với kiểu dữ liệu Integer cho các biến N và i.

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.

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

Để xác định ý tưởng, sử dụng biến đếm d kiểu integer với giá trị khởi đầu là 0 Khi duyệt từ trái sang phải, tăng d lên 1 khi gặp dấu ngoặc mở và giảm d đi 1 khi gặp dấu ngoặc đóng Biểu thức ngoặc sẽ được coi là sai nếu d bằng -1 hoặc khi duyệt hết biểu thức mà d vẫn lớn hơn 0.

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

* 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)

Để mã hóa xâu S, đầu tiên xác định ý tưởng bằng cách tạo xâu P gồm 26 ký tự của bảng chữ cái Tiếng Anh Sau đó, gấp đôi xâu P để tạo thành xâu mẫu Tiếp theo, duyệt qua từng ký tự S[i] và thay thế nó bằng ký tự cách S[i] trong xâu mẫu P một khoảng K vị trí, từ đó nhận được ký tự X[i] là ký tự được mã hóa.

Bước 1: Nhập số nguyên K (1 length(S) thì đến bước 4;

* 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

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

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 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 8: In giá trị Count và kết thúc.

* 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

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ôi sẽ trình bày thuật toán chi tiết cho từng bài tập đã đề cập, kèm theo mã nguồn viết bằng ngôn ngữ Pascal (xem phần phụ lục) Điều này giúp học sinh 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 đã được kiểm tra, có độ tin cậy cao và được học sinh xuất sắc của 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.

* 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 được sử dụng để lưu trữ giá trị lớn nhất, vị trí của giá trị lớn nhất, giá trị nhỏ nhất và vị trí của giá trị nhỏ nhất trong mảng Bên cạnh đó, biến N lưu kích thước của mảng, và biến i được dùng làm chỉ số để duyệt qua mảng Việc nhập và in mảng sẽ được thực hiện với các biến N và i có kiểu Integer.

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.

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

Để xác định tính hợp lệ của biểu thức ngoặc, ta sử dụng một biến đếm d kiểu integer khởi tạo bằng 0 Khi duyệt từ trái sang phải, nếu gặp dấu ngoặc mở, ta tăng d lên 1; nếu gặp dấu ngoặc đóng, ta giảm d đi 1 Biểu thức ngoặc sẽ được coi là sai nếu d trở thành -1 hoặc nếu duyệt hết biểu thức mà d vẫn lớn hơn 0.

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

* 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)

Để mã hóa một chuỗi S, đầu tiên cần xác định ý tưởng bằng cách tạo ra một xâu P gồm 26 ký tự của bảng chữ cái Tiếng Anh Sau đó, gấp đôi xâu P để tạo thành xâu mẫu Tiếp theo, duyệt từng ký tự trong xâu S; với mỗi ký tự S[i], thay thế nó bằng ký tự cách S[i] trong xâu mẫu P một khoảng K vị trí, từ đó nhận được ký tự mã hóa X[i].

Bước 1: Nhập số nguyên K (1 length(S) thì đến bước 4;

* 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

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

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 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 8: In giá trị Count và kết thúc.

* 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

Để xử lý chuỗi văn bản, đầu tiên xác định ý tưởng bằng cách loại bỏ các ký tự không cần thiết Bắt đầu bằng việc kiểm tra ký tự đầu chuỗi; nếu là dấu cách, hãy xóa nó Tiếp theo, kiểm tra ký tự cuối chuỗi và xóa nếu là dấu cách Đặc biệt, nếu chuỗi có hai dấu cách liên tiếp, sử dụng hàm Pos(‘ ‘,st) để xóa một dấu cách Tiếp tục lặp lại quy trình này cho đến khi không còn hai dấu cách liên tiếp trong chuỗi.

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;

* 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

Để xác định số lượng từ trong xâu, bắt đầu từ ký tự đầu tiên; nếu ký tự thứ i là dấu cách và ký tự thứ i+1 không phải là dấu cách, thì tăng biến d lên 1 Cuối cùng, số lượng từ của xâu sẽ được tính bằng giá trị của d.

Bước 3: Trong khi st[i] = ‘ ‘ thì delete(st,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;

* 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

Để xác định ý tưởng, ta nhân đôi xâu S và kiểm tra tại các vị trí i = 1, 2, , N Ta sẽ so sánh các xâu có độ dài N bắt đầu từ vị trí i về phía đầu và phía cuối của S Nếu hai xâu này giống nhau, ta sẽ tăng giá trị Count lên.

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 5: Nếu (L ≥ R)hoặc(S[L] S[R]) thì sang bước 7;

Bước 7: Nếu L ≥ R thì Count ← Count + 1;

Bước 9: In giá trị Count; Kết thúc.

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

- Xác định ý tưởng: Tạo mảng thống kê sự xuất hiện các chữ số từ 0 đến 9

Bước 4: Nếu j0 thì đến bước 8;

Bước 7.1: Nếu i9 thì đến bước 8;

Bước 8: Đưa ra kết quả, rồi kết thúc.

* Xác định input và output của bài toán

Output: Dạng biểu diễn của N ở hệ Hexa

* Khai báo dữ liệu bài toán

- Số nguyên N; Mảng a để lưu trữ kết quả số N ở hệ Hexa

- Xác định ý tưởng: Khởi tạo xâu p=’0123456789ABCDEF’; Lấy số dư của N chia 16 và lưu vào mảng a: i←0;

Trong khi N>0 thì làm: i←i+1; a[i] ←p[(N mod 16) +1];

Bước 1: Nhập số nguyên dương N;

Bước 2: Nếu N=0 thì đưa ra ‘0’, rồi kết thúc.

Bước 5: a[i] ←p[(N mod 16) +1]; N←N div 16; rồi quay lại Bước 4

Bước 9: Nếu j n - 1 thì sang bước 9

2.3.2 Lựa chọn học sinh khá giỏi thông qua các bài tập

Thông qua các bài tập, giáo viên có thể nhận diện học sinh tiềm năng cho kỳ thi học sinh giỏi hoặc những em có thể bù đắp khả năng bằng sự chăm chỉ Nhờ đó, giáo viên có thể lựa chọn những học sinh xuất sắc của trường để tham gia dự tuyển thi học sinh giỏi cấp Tỉnh.

2.3.2.1 Lựa chọn thông qua việc phát hiện ý tưởng

Với mỗi bài toán đặt ra, giáo viên có thể căn cứ vào các yêu cầu sau để lựa chọn được những học sinh khá giỏi:

- Học sinh có thể xác định được ý tưởng giải quyết bài toán không?

- Học sinh có thể sử dụng cấu trúc dữ liệu để mô tả dữ liệu cho bài toán không?

- Học sinh có thể viết thuật toán giải quyết bài toán không?

- Học sinh có thể sử dụng các câu lệnh của ngôn ngữ lập trình để viết chương trình không?

2.3.2.2 Lựa chọn thông qua việc lập trình giải các bài toán

Học sinh có khả năng phát hiện ý tưởng giải bài toán nhanh chóng, nhưng để giải quyết bài toán trên máy tính, các em cần cả tố chất và kỹ năng Việc lập trình là một phần quan trọng trong quá trình này, vì vậy giáo viên cần hướng dẫn học sinh lập trình để biến ý tưởng thành hiện thực Qua đó, giáo viên có thể hỗ trợ và sửa lỗi cho học sinh trong quá trình dịch hoặc thực hiện chương trình, giúp các em nâng cao kỹ năng lập trình trên máy tính.

2.3.3 Mở rộng các bài tập đã đưa ra nhằm bồi dưỡng học sinh khá giỏi

Sau khi lựa chọn và xác định những học sinh khá giỏi có nguyện vọng tham gia đội dự tuyển thi học sinh giỏi cấp Tỉnh, tôi đã mở rộng hệ thống bài tập dựa trên các bài có sẵn trong sách bài tập Các bài tập được sắp xếp theo mức độ khó tăng dần, với những bài yêu cầu kiến thức đa dạng, phù hợp với từng chủ đề ôn luyện.

Các em sẽ nhận ra rằng vấn đề không khó khăn hay mới lạ, mà chỉ cần vận dụng kiến thức đã học để tìm ra ý tưởng cho bài toán mở rộng Điều này sẽ giúp các em cảm thấy hứng thú hơn và học tập một cách chủ động hơn (Lưu ý: mã nguồn cho các bài tập này ở trong phần phụ lục 3)

Có thể mở rộng bài toán với N lớn hơn, cụ thể là N < 10^8, giúp học sinh nhận thức rằng cách khai báo và lựa chọn phương pháp giải quyết phụ thuộc vào phạm vi giới hạn của đề bài để hoàn thành tất cả các test.

Ví dụ 1: Số dãy ngoặc đúng

Có thể định nghĩa khái niệm dãy ngoặc đúng dưới dạng đệ quy như sau:

2 C là dãy ngoặc đúng nếu C = (A) hay C = AB với A, B là các dãy ngoặc đúng.

Ví dụ dãy ngoặc đúng: (), (()), ()(), (())()

Ví dụ dãy ngoặc sai: )(, ((((, ()((, )))), )()(

Viết chương trình liệt kê tất cả các dãy ngoặc đúng có chiều dài n (n chẵn)

Kết quả ra : với m là số lượng các dãy ngoặc đúng có chiều dài n

- Trong m dòng đầu tiên, mỗi dòng liệt kê một dãy ngoặc đúng chiều dài n Các dãy được liệt kê theo thứ tự từ điển: '(' < ')'.

- Dòng cuối cùng: là số m.

Ví dụ 2: Dãy ngoặc đúng (Câu 3-Đề thi HSG Tỉnh Thanh Hóa 2013- 2014):

Người ta định nghĩa một xâu kí tự gồm các kí tự ‘(’ và ‘)’ là một dãy ngoặc đúng như sau:

- Xâu rỗng là một dãy ngoặc đúng.

- Nếu X là dãy ngoặc đúng thì (X) cũng là một dãy ngoặc đúng

- Nếu X, Y là những dãy ngoặc đúng thì XY cũng là dãy ngoặc đúng.

Những dãy ngoặc sau là những dãy ngoặc đúng:

Những dãy ngoặc sau thì không:

Cho một xâu kí tự T = T 1 , T 2 , T n , trong đó T i là một trong hai kí tự ‘(’ hoặc

Yêu cầu: Hãy đếm số cặp i,j (i

Ngày đăng: 20/06/2021, 21:32

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w