Đăng ký Đăng nhập
Trang chủ Giáo dục - Đào tạo Tin học Skkn một số bài tập cơ bản về kiểu xâu tin học 11...

Tài liệu Skkn một số bài tập cơ bản về kiểu xâu tin học 11

.DOC
20
2790
103

Mô tả:

A. ĐẶT VẤN ĐỀ 1/ Lí do chọn đề tài: Hiện nay, Tin học là bộ môn bắt buộc trong chương trình THPT, tuy là môn học bắt buộc nhưng không là một trong những môn thi tốt nghiệp trung học phổ thông quốc gia nên nhìn chung thái độ của học sinh (trừ học sinh các lớp chuyên Tin của các trường chuyên) đối với môn học này chưa thật sự tốt. Mặt khác, chương trình Tin học nói chung và chương trình Tin học 11 nói riêng tương đối khô khan và khó hiểu. Với Tin học lớp 11 học sinh bước đầu làm quen với việc lập trình sử dụng ngôn ngữ Pascal nên đại đa số các em đều cảm thấy rất khó hiểu, thấy trừu tượng. Nhiều học sinh tâm sự rằng, mặc dù mình rất chịu khó đọc sách nhưng vẫn không hiểu mấy và thực sự cũng không cảm thấy hứng thú học môn này. Các em tỏ ra rất lúng túng khi phải học nhiều kiểu dữ liệu và lúc lập trình phải suy nghĩ sử dụng kiểu nào cho hợp lí. Bản thân tôi là giáo viên giảng dạy bộ môn Tin học, tôi nhận thấy trong việc giảng dạy cho học sinh, ngoài việc giúp học sinh lĩnh hội những kiến thức cơ bản. Người giáo viên còn phải biết kích thích tính tích cực, sự sáng tạo say mê học hỏi của học sinh. Bởi vì, khi có sự đam mê, các em tự nhiên sẽ học tập một cách tự giác, tích cực, chủ động để đạt được mục tiêu đặt ra. Tạo đam mê học tập cho học sinh không phải là việc làm đơn giản, không chỉ đơn giản là việc giáo viên phải nêu rõ mục tiêu cho mỗi tiết học mà còn thể hiện trong cách giáo viên gợi động cơ cho các em và đặc biệt là phải đầu tư thiết kế bài giảng cho mỗi tiết học thật chi tiết, thật lôi cuốn. Các cách thiết kế bài giảng hiện nay nhằm mục đích áp dụng phương pháp hiện đại để bồi dưỡng cho học sinh năng lực ham muốn học hỏi, tư duy sáng tạo, năng lực tự giải quyết vấn đề, rèn luyện và phát triển năng lực tự học, sáng tạo, nghiên cứu, nghĩ và làm việc một cách tự chủ. Trong quá trình học lập trình, để lập trình cho một bài toán cụ thể, một trong những điều quan trọng nhất là học sinh phải xác định các biến sử dụng trong chương trình và kiểu dữ liệu tương ứng của các biến đó sao cho hợp lí và chính xác. Trong quá trình giảng GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng Trang: 1 Một số bài tập cơ bản về kiểu xâu - Tin học 11 dạy tôi nhận thấy các em học sinh tỏ ra khá lúng túng khi xác định kiểu dữ liệu, nhất là các kiểu dữ liệu như kiểu dữ liệu mảng một chiều, kiểu dữ liệu xâu… Giải quyết vấn đề này, với mỗi kiểu dữ liệu mới, giáo viên ngoài việc cung cấp cho các em các kiến thức cơ bản về lý thuyết của kiểu dữ liệu đó cần dành nhiều thời gian để phân tích các ví dụ, các bài tập cơ bản có trong sách giáo khoa. Ngoài ra, giáo viên nên chú ý chuẩn bị sẵn hệ thống các ví dụ, các bài tập cụ thể, cơ bản khác nhưng phù hợp với trình độ của học sinh lớp mình dạy. Để từ việc tìm hiểu về các ví dụ đó học sinh không những củng cố về lý thuyết mà còn hiểu sâu sắc hơn kiểu dữ liệu tương ứng. Xuất phát từ tinh thần đó cũng như từ thực tế trình độ của học sinh các lớp 11 trường THPT Phạm Văn Đồng mà tôi đang giảng dạy, tôi chọn đề tài: "Một số bài tập cơ bản về kiểu xâu tin học 11", với mong muốn từ việc tìm lời giải cho các bài tập này và thực hiện chúng trực tiếp trên máy tính các em học sinh sẽ cảm thấy thích thú và hiểu sâu kiến thức hơn. 2/ Thực trạng trước khi thực hiện sáng kiến: a) Thuận lợi:  Việc ứng dụng công nghệ thông tin vào tất cả các lĩnh vực được đề cao.  Môn Tin học là môn chính khóa trong trường phổ thông.  Các em học sinh thích được thực hành trên máy tính để nghiên cứu, tìm tòi. b) Khó khăn:  Trình độ học sinh không đồng đều và đa số không nắm vững kiến thức các môn tự nhiên.  Đa số học sinh không thích môn Tin học, mang tâm lí Tin học 11 là môn trừu tượng, khó hiểu. Giáo viên ít có sự đầu tư để cải tiến, nâng cao chất lượng dạy học GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng Trang: 2 Một số bài tập cơ bản về kiểu xâu - Tin học 11 c) Số liệu thống kê Qua các lớp tôi đang dạy, khi học đến chủ đề Kiểu xâu đa số các em học sinh còn lúng túng khi sử dụng đến kiểu dữ liệu mới, không hình dung được chương trình mà mình phải viết. Khảo sát thực tế lớp 11B2 (năm 2014-2015) có 37 học sinh khi đã dạy xong chủ đề "Kiểu xâu", tôi đã cho học sinh làm bài kiểm tra 15 phút về kiểu xâu như sau: Bài tập: Viết chương trình nhập vào một xâu kí tự (độ dài không quá 100) và một kí tự bất kỳ từ bàn phím. Thông báo xem kí tự đó có xuất hiện trong xâu vừa nhập hay không? Điểm 2 3 4 5 6 7 8 >=5 Số lượng 3 4 13 8 6 2 1 17 Tỷ lệ 8,1% 10,9% 35,1% 21,6% 16,2% 5,4% 2,7% 45,9% Với bài toán trên do học sinh chưa nắm vững kiến thức lập trình, đặc biệt còn lúng túng trong việc sử dụng kiểu dữ liệu nên còn gặp nhiều sai sót khi viết chương trình. GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng Trang: 3 Một số bài tập cơ bản về kiểu xâu - Tin học 11 B. NỘI DUNG I . Cơ sở lí luận. Khi tìm hiểu đến chủ đề Kiểu dữ liệu có cấu trúc học sinh phải dựa vào các kiểu dữ liệu chuẩn có sẵn để xây dựng nên các kiểu dữ liệu mới phục vụ cho các yêu cầu cao hơn. Giáo viên có thể gợi động cơ bằng cách hỏi: "Với yêu cầu viết chương trình nhập vào họ tên của hai bạn học sinh bất kỳ, in ra màn hình bạn có tên dài hơn", với những kiểu dữ liệu mà em đã học liệu có thực hiện được yêu cầu này không? Từ đó dẫn dắt vào kiểu dữ liệu mới: "Kiểu xâu". Sau khi cho học sinh tìm hiểu những kiến thức cơ bản về lý thuyết kiểu dữ liệu này. Giáo viên có thể xây dựng hệ thống các bài tập và dẫn dắt học sinh giải quyết các bài tập này. II. Chuẩn bị, nội dung và giải pháp thực hiện. 1/ Chuẩn bị a/ Về phương pháp: - Giáo viên chuẩn bị trước các bài tập cơ bản dạng kiểu xâu để phân tích, dẫn dắt cho học sinh làm. b/ Về phương tiện: - Giáo viên chuẩn bị máy tính “để bàn hoặc xách tay”, một máy chiếu, một màn chiếu, bảng phụ … - Học sinh cần có đầy đủ sách bút, vở ghi… 2/ Nội dung. Bài tập 1: Viết chương trình nhập vào một xâu kí tự (độ dài không quá 100) và một kí tự ch bất kỳ từ bàn phím. Đếm số lần xuất hiện của kí tự ch trong xâu kí tự vừa nhập. Ví dụ: Nhập vào xâu: 'HOC TOT TIN HOC', nhập kí tự: 'T' thì kết quả số lần xuất hiện của kí tự 'T' trong xâu 'HOC TOT TIN HOC' là 3 lần. GV hướng dẫn học sinh bằng cách đặt các câu hỏi cho học sinh trả lời: Nêu ý tưởng để giải bài toán? Làm thế nào để đếm được? GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng Trang: 4 Một số bài tập cơ bản về kiểu xâu - Tin học 11 HS: Kiểm tra kí tự vừa nhập với lần lượt từng kí tự trong xâu, nếu bằng nhau thì ta tăng số lần xuất hiện (biến đếm) lên 1. GV: Kiểm tra bằng cách nào? HS: Sử dụng vòng lặp với số lần biết trước (số lần lặp bằng độ dài của xâu). Với mỗi kí tự trong xâu lấy ra so sánh với kí tự ch. Câu lệnh: for i:= 1 to length(xau) do để duyệt lần lượt từng kí tự trong xâu. GV (giải thích thêm): Để lưu lại giá trị của số lần xuất hiện, ta sử dụng biến dem, ban đầu biến này được khởi tạo bằng 0, lấy lần lượt từng kí tự trong xâu ra so sánh với kí tự ch nếu chúng bằng nhau thì giá trị của biến đếm được tăng lên 1. Kết thúc vòng lặp, giá trị của biến dem chính là kết quả cần tìm. GV: cho học sinh suy nghĩ, viết bài trong 5 phút sau đó gọi một em bất kỳ lên trình bày: GV: yêu cầu các HS khác nhận xét và chữa bài cho hoàn chỉnh. GV có thể thực hiện chạy chương trình hoàn chỉnh lên máy chiếu cho HS quan sát, gọi trực tiếp vài em lên nhập dữ liệu và xem kết quả thực hiện trên màn hình. Program baitap1; Var s:string[100]; i, dem: byte; ch: char; Begin Writeln('nhap vao xau bat ki:'); Readln(s); Write('nhap mot ki tu bat ki:'); Readln(ch); dem:=0; For i:= 1 to length(s) do If s[i] = ch then dem:=dem+1; Write('so lan xuat hien cua ki tu ', ch,' trong xau vua nhap la: ',dem); Readln End. GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng Trang: 5 Một số bài tập cơ bản về kiểu xâu - Tin học 11 Tiếp theo, từ chương trình vừa viết, giáo viên yêu cầu học sinh chỉnh sửa để thực hiện bài tập tiếp theo: Bài tập 2: Viết chương trình nhập vào một xâu kí tự (độ dài không quá 100) và một kí tự bất kỳ từ bàn phím. Thông báo xem kí tự đó có xuất hiện trong xâu kí tự vừa nhập hay không? Ví dụ: Nhập vào xâu: 'HOC TOT TIN HOC' nhập kí tự: 'T' thì kết quả là kí tự có xuất hiện trong xâu vừa nhập. Với bài tập này, dù không khó nhưng học sinh lại lúng túng vì chương trình các em viết (sửa lại từ chương trình ở bài tập 1) đa số đều mắc chung một lỗi là trong xâu vừa nhập có bao nhiêu kí tự giống kí tự ch thì chương trình in ra bấy nhiêu dòng thông báo. GV: Giải thích cho HS hiểu, ở bài tập này gần giống như bài tập 1 nhưng chúng ta không đếm số lần nữa mà chỉ đưa ra thông báo là có xuất hiện hay không? Nếu kí tự đó xuất hiện nhiều lần ta cũng chỉ đưa ra một dòng thông báo có xuất hiện. Vậy làm sao khắc phục lỗi này? HS: Suy nghĩ để tìm ra câu trả lời. Để khắc phục lỗi này, giáo viên hướng dẫn học sinh kiểm tra giá trị của biến đếm trước khi in ra thông báo. Nếu biến đếm lớn hơn 0 thì có xuất hiện và ngược lại thì không xuất hiện. Sau đó yêu cầu HS tự chỉnh sửa bài tập 1 để có bài tập 2 hoàn chỉnh. Chương trình hoàn chỉnh có thể như sau: Program baitap2; Var s:string[100]; i, dem: byte; ch: char; Begin Writeln('nhap vao xau bat ki:'); Readln(s); Write('nhap mot ki tu bat ki:'); GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng Trang: 6 Một số bài tập cơ bản về kiểu xâu - Tin học 11 Readln(ch); dem:=0; For i:= 1 to length(s) do If s[i] = ch then dem:=dem+1; If dem>0 then Write('ky tu ', ch, ' co xuat hien trong xau ',s) Else Write('ki tu ', ch, ' khong xuat hien trong xau ',s) Readln End. Để củng cố lại lần nữa các bài tập đếm với những yêu cầu khác nhau, GV có thể yêu cầu học sinh tiếp tục chỉnh sửa chương trình để thực hiện bài tập sau: Bài tập 3: Viết chương trình đếm số kí tự là chữ số trong một xâu kí tự được nhập vào từ bàn phím. Ví dụ: Nhập vào xâu: 'HOC123' thì kết quả trả về là có 3 kí tự là chữ số. GV hỏi: Với bài tập này, điều kiện để biến dem tăng lên 1 là gì? HS trả lời: Kiểm tra từng kí tự trong xâu (s) vừa nhập nếu kí tự nào là chữ số thì biến dem được tăng lên 1. GV: Câu lệnh sau sẽ thực hiện việc kiểm tra yêu cầu đó: For i:= 1 to length(s) do If (s[i]>='0') and (s[i] <='9') then dem:=dem+1; HS tự chỉnh sửa để có bài tập 3, chương trình hoàn chỉnh như sau: Program baitap3; Var S: String; i,dem: Byte; Begin Write(‘Nhap xau S: ‘); Readln(S); dem:=0; GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng Trang: 7 Một số bài tập cơ bản về kiểu xâu - Tin học 11 For i:= 1 to length(s) do If (s[i]>='0') and (s[i] <='9') then dem:=dem+1; Write(‘So ki tu chu so trong xau la: ‘, dem); Readln End. Trong quá trình học các hàm và thủ tục thao tác trên kiểu dữ liệu xâu, học sinh thường nhầm lẫn chức năng của hàm upcase(ch). Để giúp học sinh hiểu kỹ hơn về hàm này, Giáo viên nên cho hs làm bài tập cơ bản sau đây: Bài tập 4: Viết chương trình nhập vào một xâu kí tự từ bàn phím. Đổi xâu kí tự đó sang chữ in hoa rồi in kết quả ra màn hình. Ví dụ: Nhập xâu 'Cham Hoc' sẽ cho ra xâu 'CHAM HOC'. GV nêu câu hỏi: Làm thế nào để khi ta nhập họ tên vào máy là chữ thường thì khi hiện lên trên màn hình là chữ in hoa? HS: Sử dụng hàm upcase(ch) GV: Nhưng hàm upcase(ch) chỉ đổi được 1 kí tự thành kí tự in hoa, ở đây chúng ta đổi cả 1 xâu kí tự? vậy chúng ta xử lý vấn đề này như thế nào? HS: đưa ra cách xử lý. GV: Chúng ta đã biết có thể coi xâu là mảng 1 chiều mà mỗi phần tử là một kí tự. Mỗi kí tự của xâu được đánh số thứ tự thường bắt đầu từ 1, số kí tự của xâu chính là độ dài của xâu. Vậy để có thể chuyển 1 xâu nhập từ bàn phím thành chữ in hoa thì ta sẽ chuyển từng kí tự trong xâu thành kí tự in hoa: duyệt lần lượt từng phần tử trong xâu và gán phần tử đó bằng giá trị mới upcase(ch); Câu lệnh for i:=1 to length(s) do S[i]:=upcase(S[i]); dùng để thực hiện yêu cầu đó. Giáo viên gọi học sinh lên bảng viết chương trình. HS viết chương trình, sau đó GV nhận xét, sửa chữa. Chạy chương trình để học sinh theo dõi kết quả thực hiện. Chương trình bài tập 4: GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng Trang: 8 Một số bài tập cơ bản về kiểu xâu - Tin học 11 Program baitap4; Var S: String; i:Byte; Begin Write(‘Nhap xau S: ‘); Readln(S); For i:=1 to length(S) do S[i]:=Upcase(S[i]); Write(‘Xau ket qua: ‘, S); Readln End. Bài tập 5: Viết chương trình nhập vào một xâu từ bàn phím, đưa ra màn hình xâu đảo ngược của xâu vừa nhập. Trước tiên cần giải thích cho HS xâu đảo ngược tức là xâu có được bằng cách đọc ngược các kí tự trong xâu vừa nhập (đọc ngược từ phải sang trái). Sau khi giải thích xong GV hỏi: Làm thế nào để đọc ngược xâu? HS: duyệt xâu theo thứ tự ngược, dòng vòng lặp for-do dạng lùi. GV: Với mỗi kí tự đọc ngược, ghép ký tự đó vào xâu mới, xâu này ban đầu được khởi tạo bằng rỗng. Yêu cầu học sinh suy nghĩ để viết chương trình. GV yêu cầu HS lên chạy chương trình trực tiếp trên máy chiếu và sau đó chỉnh sửa, chiếu chương trình hoàn chỉnh lên cho hoc sinh quan sát: Program baitap5; Var S, Ng: String; i: Byte; Begin Write(‘Nhap xau S: ‘); Readln(S); ng:=''; For i:= Length(S) downto 1 do ng:=ng+s[i]; write('xau dao nguoc la: ', ng); GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng Trang: 9 Một số bài tập cơ bản về kiểu xâu - Tin học 11 Readln End. Bài tập 6: Viết chương trình nhập vào từ bàn phím một xâu. Kiểm tra xâu đó có phải là xâu đối xứng hay không? (Tính chất của xâu đối xứng: đọc nó từ phải sang trái cũng thu được kết quả giống như đọc từ trái sang phải). Ở bài tập này, GV yêu cầu học sinh dựa vào tính chất của xâu đối xứng để nêu ý tưởng. HS dựa vào tính chất xâu đối xứng và dựa vào kiến thức trong bài tập 5 vừa làm có thể hình thành ngay ý tưởng giải bài tập trên. Với bài tập này, đa số các em đều làm theo cách tạo xâu đảo ngược từ xâu ban đầu vừa nhập, sau đó kiểm tra nếu xâu đảo ngược bằng xâu ban đầu thì kết luận xâu đối xứng. GV yêu cầu học sinh chỉnh sửa bài tập 5 để có bài tập 6: Program baitap6; Var S, Ng: String; i: byte; Begin Write(‘Nhap xau S: ‘); Readln(S); ng:=''; For i:= Length(S) downto 1 do ng:=ng+s[i]; if s=ng then write('xau doi xung') else write('xau khong doi xung'); Readln End. Ngoài cách kế thừa bài tập 5 ra, giáo viên có thể hướng dẫn để học sinh viết chương trình theo cách khác không dùng cách tạo xâu đảo ngược. Gợi ý cho học sinh khai thác khả năng tham chiếu đến từng kí tự trong xâu thông qua vị trí của kí tự này. Như vậy, không nhất thiết phải tạo một xâu mới để GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng Trang: 10 Một số bài tập cơ bản về kiểu xâu - Tin học 11 cuối cùng so sánh hai xâu, mà chỉ cần so sánh các cặp kí tự ở vị trí đối xứng nhau để kết luận xâu là là xâu đối xứng hay không, chỉ cần xuất hiện một cặp kí tự ở vị trí đối xứng mà không đối xứng thì xâu đó không đối xứng. Hướng dẫn học sinh tìm các vị trí đối xứng. GV: kí tự thứ nhất đối xứng với kí tự nào trong xâu? HS: kí tự ở vị trí 1 đối xứng với kí tự ở vị trí x (với x là độ dài xâu) GV: tương tự vị trí thứ 2 đối xứng với vị trí thứ x-1, thứ 3 với vị trí x-2, … Vậy vị trí thứ i sẽ đối xứng với vị trí nào? HS: vị trí thứ x-i+1 Như vậy vòng lặp chỉ cần chạy (x div 2) lần là được. Yêu cầu học sinh về nhà làm tiếp bài tập theo cách thứ 2 này. Để học HS có thể hiểu và thành thạo các thao tác xử lí xâu, GV tiếp tục đưa ra các bài tập sau: Bài tập 7: Viết chương trình nhập một xâu từ bàn phím, đưa ra màn hình xâu thu được từ nó sau khi loại bỏ các dấu cách có trong xâu. GV hướng dẫn học sinh có thể sử dụng các thao tác xử lí xâu để giải quyết bài tập này, cho học sinh thảo luận để tìm ra cách giải. GV gợi ý: Kết quả ta đưa ra là xâu sau khi loại bỏ những kí tự là dấu cách (học sinh có thể biểu diễn kí tự là dấu cách là dấu cách đặt trong cặp nháy đơn ' ' hoặc biểu diễn bằng mã của dấu cách là #32), xâu OUTPUT sẽ chứa tất cả các kí tự trong xâu INPUT trừ kí tự là dấu cách. Như vậy, dựa vào các kiến thức đã học ta có thể xử lý yêu cầu trên theo 2 cách: Cách 1: Sử dụng phép ghép xâu tạo xâu mới gồm tất cả các kí tự trong xâu INPUT mà khác kí tự là dấu cách. Cách 2: Sử dụng thủ tục delete(st,vt,n) để xóa tất cả các kí tự là dấu cách trong xâu INPUT. GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng Trang: 11 Một số bài tập cơ bản về kiểu xâu - Tin học 11 Hướng dẫn HS để viết chương trình theo 2 cách: Với Cách 1, hướng dẫn cách khởi tạo xâu rỗng, kiểm tra lần lượt từng kí tự trong xâu ban đầu nếu kí tự nào khác kí tự dấu cách (#32) thì được ghép vào xâu rỗng vừa khởi tạo. Cách thứ 2 cần hướng dẫn học sinh bằng cách đặt các câu hỏi dẫn dắt như: Làm sao để xác định được vị trí chứa kí tự là dấu cách trong xâu vừa nhập? Để xóa kí tự là dấu cách đó ta dùng thủ tục nào? Việc xóa các kí tự là dấu cách sẽ chấm dứt khi nào? Số lần lặp lại này là xác định hay không xác định? Chương trình theo 2 cách có thể như sau: Cách 1: Program baitap7_1; Var S, S1: String; i :Byte; Begin Write(‘Nhap xau S: ‘); Readln(S); S1:=''; {khoi tao xau rong} For i:=1 to length(s) do If s[i]<>#32 then s1:=s1+s[i]; Writeln('ket qua la: ', s1); Readln End. Cách 2: Program baitap7_2; Var S: String; i,vt :Byte; Begin Write(‘Nhap xau S: ‘); Readln(S); GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng Trang: 12 Một số bài tập cơ bản về kiểu xâu - Tin học 11 While (pos(#32,s)<>0) do Begin Vt:=pos(#32,s); Delete(s,vt,1) End; Writeln('ket qua la: ', s); Readln End. Bài tập 8: Viết chương trình nhập một xâu từ bàn phím. In ra xâu đó sau khi xóa hết các kí tự trắng thừa trong xâu. Đầu tiên Giáo viên phải giải thích: Kí tự trắng thừa là các kí tự trắng đầu xâu, cuối xâu và nếu ở giữa xâu có 2 kí tự trắng liên tiếp nhau thì có 1 kí tự trắng thừa. Program baitap8; Var S:String; Begin Write(‘Nhap xau S: ‘); Readln(S); While S[1]=#32 do {Xóa các kí tự trắng ở đầu xâu} Delete(S,1,1); While S[Length(S)]=#32 {Xóa các kí tự trắng ở cuối xâu} Delete(S,Length(S),1); While POS(#32#32,St)<>0 do {Xóa các kí tự trắng ở giữa xâu} Delete(S,POS(#32#32,S),1); Write(‘Xau sau khi xoa cac ki tu trang thua la: ', S); Readln End. Bài tập 9: Viết chương trình nhập một xâu từ bàn phím. Đếm số từ có trong xâu? (xét trường hợp xâu chỉ chứa các kí tự phân cách là dấu cách, không chứa các kí tự phân cách khác như dấu chấm, dấu phẩy,…) GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng Trang: 13 Một số bài tập cơ bản về kiểu xâu - Tin học 11 GV cần lưu ý cho HS: Từ trong xâu là một dãy các kí tự liên tiếp không chứa kí tự phân cách. Trong trường hợp bài tập này cần giới hạn cho HS kí tự phân cách ở đây chỉ xét dấu cách, không xét các kí tự phân cách khác (dấu chấm, dấu phẩy…). GV: Làm thế nào để đếm được số từ có trong xâu? HS: Dựa vào số dấu cách có trong xâu? GV: Trường hợp xâu chứa các kí tự dấu cách thừa (kí tự trắng thừa) thì làm thế nào? Lúc này, vì học sinh đã viết được bài tập 8 xóa các kí tự trắng thừa ở trên nên dễ dàng trả lời câu hỏi này: Đầu tiên, tiến hành chuẩn hóa xâu trước sau đó mới đếm số từ, số từ sẽ bằng số dấu cách cộng 1. Chương trình hoàn chỉnh có thể như sau: Program baitap9; Var S: String; i, dem: byte; Begin Write(‘Nhap xau S: ‘); Readln(S); {Chuan hoa xau} While S[1]=#32 do Delete(S,1,1); While S[Length(S)]=#32 do Delete(S,Length(S),1); While POS(#32#32,St)<>0 do Delete(S,POS(#32#32,S),1); {Dem so tu co trong xau} Dem:=0; For i:= 1 to length(s) do If s[i]=#32 then dem:=dem+1; Write(‘so tu trong xau la: ', dem+1); GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng Trang: 14 Một số bài tập cơ bản về kiểu xâu - Tin học 11 Readln End. Trên cơ sở chương trình của bài tập đã có và để học sinh hiểu hơn lý thuyết về các hàm xử lý xâu, GV có thể yêu cầu học sinh làm tiếp bài tập sau: Bài tập 10: Viết chương trình liệt kê các từ của một xâu ký tự được nhập vào từ bàn phím, mỗi từ phải được viết trên một dòng. GV: Trước tiên với xâu nhập bất kỳ để in chính xác các từ có trong xâu, đầu tiên ta phải thực hiện chuẩn hóa xâu. Vì để in các từ trong xâu phải dựa vào số dấu cách có trong xâu nên sau khi chuẩn hóa xong ta cộng vào xâu vừa chuẩn hóa một dấu cách ở cuối xâu (mục đích để in được từ cuối cùng). GV hỏi: Làm sao để lấy ra một từ bất kỳ trong một xâu? HS: Sử dụng hàm copy(s,vt,n) để copy từ trong xâu ra và in ra. GV: Làm sao để xác định được số kí tự trong từ (n)? HS: Nêu ý tưởng GV hướng dẫn: Số lượng ký tự của từ đầu tiên trong xâu sẽ bằng vị trí xuất hiện của dấu cách đầu tiên trừ đi 1, dùng hàm pos(s1,s2) để xác định vị trí xuất hiện của dấu cách. Sau khi in được từ nào ta tiến hành xóa từ đó ra khỏi xâu. Chương trình có thể như sau: Program baitap10; Var S: String; Vt:byte; Begin Write(‘Nhap xau S: ‘); Readln(S); {Chuan hoa xau} While S[1]=#32 do Delete(S,1,1); While S[Length(S)]=#32 do Delete(S,Length(S),1); GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng Trang: 15 Một số bài tập cơ bản về kiểu xâu - Tin học 11 While POS(#32#32,St)<>0 do Delete(S,POS(#32#32,S),1); {in so tu trong xau} s:=s+#32; writeln('cac tu co trong xau:'); while (pos(#32,s)<>0) do begin vt:= pos(#32,s); writeln(copy(s,1,vt-1)); delete(s,1,vt); end; Readln End. BÀI TẬP ĐỀ NGHỊ Bài tập 11: Viết chương trình nhập một xâu ký tự S từ bàn phím và một ký tự ch bất kỳ. In ra màn hình xâu S sau khi xóa hết các ký tự ch trong xâu đó. Gợi ý: While POS(ch,s)<>0 Do Delete(s,POS(ch,s),1); Bài tập 12: Viết chương trình nhập vào một xâu ký tự từ bàn phím. Tìm và in ra màn hình một từ có độ dài lớn nhất trong xâu. Gợi ý: Tách từng từ để so sánh (xem lại bài tập 10). III. Kết quả thu được. Trong quá trình trao đổi, thảo luận, trình bày học sinh được thể hiện khả năng vận dụng, hiểu biết của mình nên các em tỏ ra hăng hái trong việc giơ tay phát biểu tranh luận. Đồng thời, sau khi viết chương trình các em được quan sát và chạy thử kết quả của chương trình và chỉ vài thao tác chỉnh sửa bài tập cũ các em đã có bài tập mới theo yêu cầu mới nên các em rất thích thú, GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng Trang: 16 Một số bài tập cơ bản về kiểu xâu - Tin học 11 hăng hái nghiên cứu. Kỹ năng tư duy, sáng tạo, biết phân tích và giải quyết tình huống của các em học sinh ngày càng tốt hơn. Cụ thể với lớp 11B2 năm học 2015 - 2016 có 36 học sinh, sau khi thực hiện đề tài này thì kết quả khảo sát như sau: Điểm 3 4 5 6 7 8 9 10 >=5 Số lượng 2 4 8 3 12 1 4 2 30 Tỷ lệ 5,6% 11,1% 22,2% 8,3% 33,3% 2,8% 11,1% GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng 5,6 83,3% Trang: 17 Một số bài tập cơ bản về kiểu xâu - Tin học 11 C. KẾT LUẬN Với Tin học 11 học sinh bước đầu làm quen với lập trình thông qua ngôn ngữ lập trình Pascal, vì ban đầu học lập trình luôn gặp khó khăn và tình trạng khó hiểu là không thể tránh khỏi. Người giáo viên cần tạo động lực, tạo đam mê và kích thích học sinh tìm kiếm kiến thức. Trong tiết học nên sử dụng máy chiếu, khi viết xong chương trình nên thực hành chạy trên máy cho học sinh quan sát kết quả, gọi các em chỉnh sửa để có kết quả mới từ đó tạo không khí hăng say học tập từ đó các em học sinh đã chủ động để tìm tòi lại kiến thức đã học qua đó giải quyết được vấn đề do giáo viên đặt ra. Trong quá trình giải quyết vấn đề, giáo viên chỉ ra những sai lầm mà các em học sinh mắc phải do hiểu không rõ vấn đề giúp cho các em hiểu rõ hơn về câu lệnh. Cuối cùng một điểm cần đặc biệt lưu ý trong khi dạy lập trình, nếu các em trình bày ý tưởng của mình, có thể gặp vài sai sót nhưng giáo viên cần giải thích và chỉ rõ chỗ chưa đúng trong ý tưởng của các em, cần thiết cho các em chạy thử chương trình theo ý tưởng của mình để nhận ra điểm sai, tuyệt đối không nên áp đặt học sinh lập trình giải bài tập theo cách áp đặt của giáo viên. Khi xây dựng hệ thống bài tập nên đi từ bài cơ bản, đơn giản sau đó mới tăng dần mức độ phức tạp của bài tập lên. Với mỗi bài tập, có thể có nhiều cách giải khác nhau nên khuyến khích học sinh giải theo cách đơn giản và dễ hiểu nhất. Kết quả là, sau khi thực hiện đề tài học sinh đã tự tin hơn trong việc sử dụng các kiểu dữ liệu, đặc biệt là kiểu dữ liệu xâu. GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng Trang: 18 Một số bài tập cơ bản về kiểu xâu - Tin học 11 D. TÀI LIỆU THAM KHẢO 1. Sách giáo khoa tin học 11 Hồ Sĩ Đàm chủ biên 2. Sách bài tập tin học 11 Hồ Sĩ Đàm chủ biên 3. Sách giáo viên tin học 11 Hồ Sĩ Đàm chủ biên 5. Một số tài liệu tham khảo trên internet. 6. Một số sáng kiến kinh nghiệm và ý kiến của đồng nghiệp. Ia Sao, ngày 10 tháng 03 năm 2016 Người thực hiện GV: Nguyễn Thị Mỹ Phương GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng Trang: 19 Một số bài tập cơ bản về kiểu xâu - Tin học 11 MỤC LỤC Tên tiêu đề Trang A. ĐẶT VẤN ĐỀ 01 1. Lý do chọn đề tài 01 2. Thực trạng trước khi thực hiện sáng kiến 02 B. NỘI DUNG 04 1. Cơ sở lý luận 04 2. Chuẩn bị, nội dung và giải pháp thực hiện 04 3. Kết quả thu được 16 C. KẾT LUẬN 18 D. TÀI LIỆU THAM KHẢO 19 GV: Nguyễn Thị Mỹ Phương - Trường THPT Phạm Văn Đồng Trang: 20
- Xem thêm -

Tài liệu liên quan