Kiểu xâu trong Pascal

24 1.1K 0
Kiểu xâu trong Pascal

Đ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

Kiểu dữ liệu xâu trong Pascal với việc sử dụng kiểu ansistring trong trình biên dịch Free Pascal giúp giải quyết một vài bài toán trong các kì thi học sinh giỏi tỉnh Vĩnh Phúc liên quan đến kiểu xâu. Kết hợp các bài toán liên quan đến kiểu tập hợp và kiểu đồ thị (cây nhị phân đơn giản).

MỤC LỤC DANH MỤC CÁC TỪ VIẾT TẮT .2 PHẦN I MỞ ĐẦU 1.1 Lý chọn đề tài 1.1.1 Cơ sở lí luận 1.1.2 Cơ sở thực tiễn 1.2 Định hướng nghiên cứu 1.2.1 Mục đích nghiên cứu 1.2.2 Đối tượng nghiên cứu .4 1.2.3 Phạm vi nghiên cứu 1.2.4 Phạm vi ứng dụng .4 1.2.5 Phương pháp nghiên cứu PHẦN II NỘI DUNG 2.1 Cơ sở lý thuyết 2.1.1 Kiểu liệu xâu .5 2.1.2 Kiểu liệu xâu TP FP 2.1.2.1 Kiểu liệu xâu TP 2.1.2.2 Kiểu liệu xâu FP 2.2 Một số câu hỏi chọn lọc liên quan đến kiểu liệu xâu đề thi HS giỏi tỉnh Vĩnh Phúc năm gần 2.3 Một số lưu ý 20 PHẦN III KẾT LUẬN VÀ KIẾN NGHỊ 21 3.1 Kết luận 21 3.2 Kiến nghị .21 NHẬN XÉT CỦA TỔ CHUYÊN MÔN VÀ HỘI ĐỒNG CHẤM 22 PHỤ LỤC CÂU HỎI 23 DANH MỤC TÀI LIỆU THAM KHẢO 24 Sáng kiến kinh nghiệm tin học DANH MỤC CÁC TỪ VIẾT TẮT Từ viết tắt Ý nghĩa TP Turbo Pascal FP Free Pascal HS Học sinh GV Giáo viên THPT Trung học phổ thông SKKN Sáng kiến kinh nghiệm Trang Sáng kiến kinh nghiệm tin học PHẦN I MỞ ĐẦU Lý chọn đề tài 1.1.1 Cơ sở lí luận Trong thời đại thơng tin bùng nổ ngày nay, việc lập chương trình tự hoạt động cho máy tính, máy gia dụng cần thiết Và để làm việc cần có q trình nghiên cứu, học tập ngơn ngữ lập trình lâu dài, qua nhà lập trình chọn ngơn ngữ lập trình thích hợp Tuy nhiên thứ điều có điểm khởi đầu nó, với HS việc học Pascal khởi đầu cho việc tiếp cận ngơn ngữ lập trình bậc cao, qua giúp em hình dung đời, cấu tạo, hoạt động ích lợi chương trình hoạt động máy tính, máy tự động…Từ giúp em có thêm định hướng, niềm đam mê tin học, nghề nghiệp mà em chọn sau Đồng thời Pascal ngơn ngữ có cấu trúc thể yếu tố: Cấu trúc mặt liệu, cấu trúc mặt lệnh, cấu trúc mặt chương trình Mỗi ngôn ngữ cung cấp cho nhiều kiểu liệu khác như: kiểu số nguyên, kiểu số thực, kiểu kí tự, kiểu logic, kiểu mảng, kiểu ghi, kiểu xâu, kiểu tệp,…để giải nhiều dạng tốn khác Trong đó, kiểu xâu kiểu liệu đặc biệt biến đổi qua lại cách linh hoạt cách sử dụng hàm, phép toán xâu kí tự, đơi kiểu liệu khác biến đổi thành kiểu xâu để xử lý cách dễ dạng (cộng, nhân, chia, chia lấy nguyên, chia lấy dư,… số lớn,…) 1.1.2 Cơ sở thực tiễn Qua ba năm dạy đội tuyển HS giỏi tin học, hai năm dạy chương trình khóa tin học lớp 11 Tơi nhận thấy kiểu liệu xâu phần hay dễ Từ kinh nghiệm mà tơi có được, q trình tìm hiểu xâu Pascal tơi nhận thấy kiến thức xâu rộng Mặc dù kiến thức xâu thân tơi nhiều hạn chế sau thời gian tìm hiểu kiểu liệu xâu kí tự tơi muốn viết kiến thức mà lĩnh hội được, muốn đưa chương trình xâu mà tơi cảm thấy tâm đắc giúp cho em HS, đặc biệt HS đội tuyển HS giỏi GV trường bồi dưỡng đội tuyển có kiến thức bổ trợ cho trình giảng dạy học tập Từ lý viết đề tài: “Kiểu liệu xâu thuật toán số tập xâu kì thi chọn HS giỏi tin học THPT năm gần đây” Định hướng nghiên cứu 1.1.3 Mục đích nghiên cứu - Cải thiện kiến thức thân kiểu liệu xâu ngôn ngữ lập trình Pascal Trang Sáng kiến kinh nghiệm tin học - Giúp GV tham gia bồi dưỡng HS giỏi tin học, HS tham gia vào đội tuyển tin học trường HS có niềm đam mê với mơn lập trình Pascal có tài liệu để tham khảo trình giảng dạy học tập 1.1.4 Đối tượng nghiên cứu Xâu liệu ngơn ngữ lập trình Pascal dựa số tập liên quan đến kiểu xâu đề thi HS giỏi tin học THPT tỉnh Vĩnh Phúc năm gần 1.1.5 Phạm vi nghiên cứu - Kiến thức: Kiểu liệu xâu ngôn ngữ lập trình Pascal - Thời gian: từ 02/01/2012 – đến 1.1.6 Phạm vi ứng dụng Tài liệu sử dụng để GV HS đọc tham khảo - Đối với HS: Giúp HS hiểu tham khảo hướng giải vài dạng tập kiểu liệu xâu đề thi HS giỏi gần - Đối với GV: Đây tài liệu tham khảo cho GV THPT dạy HS giỏi GV dạy lớp 1.1.7 Phương pháp nghiên cứu - Nghiên cứu lí luận dạy học, trình dạy học - Nghiên cứu chương trình, thuật tốn - Tổng kết kinh nghiệm Trang Sáng kiến kinh nghiệm tin học PHẦN II NỘI DUNG Cơ sở lý thuyết 2.1.1 Kiểu liệu xâu a) Khái niệm xâu - Xâu dãy kí tự mã ASCII, kí tự gọi phần tử xâu Số lượng kí tự xâu gọi độ dài xâu Xâu có độ dài gọi xâu rỗng - Các ngơn ngữ lập trình có quy tắc, cách thức cho phép xác định: o Tên kiểu xâu o Cách khai báo biến kiểu xâu o Số lượng kí tự xâu o Các phép tốn thao tác với xâu o Cách tham chiếu tới phần tử xâu - Tham chiếu tới phần tử xâu xác định thông qua số phần tử xâu - Chỉ số phần tử xâu thường đánh số - Trong ngôn ngữ Pacal, tham chiếu tới phần tử thường viết: [chỉ số] Ví dụ: s= ‘abcde’  s[2]= ‘b’ b) Khai báo xâu Var :; Trong đó: - Tên biến xâu biến xâu đặt tên theo quy tắc đặt tên - Kiểu liệu xâu tùy thuộc vào sử dụng ngơn ngữ lập trình TP FP: o Trong TP: String; o Trong FP: asistring, shortstring, string… c) Các thao tác xử lý xâu - Phép ghép xâu: sử dụng dấu cộng (+) để ghép nhiều xâu thành xâu Có thể thực phép ghép xâu với biến xâu Ví dụ: ‘Lap Thach’ + ‘ ‘ + ‘Vinh Phuc’= ‘Lap Thach Vinh Phuc’ - Phép so sánh xâu: (=), khác (), nhỏ (), nhỏ (=) có thứ tự ưu tiên thực thấp phép ghép xâu thực việc so sánh hai xâu theo quy tắc sau: o Xâu A lớn xâu B kí tự khác chúng kể từ trái sang xâu A có mã ASCII lớn Ví dụ: ‘May tinh cua toi’ < ‘may tinh cua toi’ Trang Sáng kiến kinh nghiệm tin học o Nếu A B xâu có độ dài khác A đoạn đầu B A nhỏ B Ví dụ: ‘May tinh’ < ‘May tinh cua toi’ o Hai xâu coi chúng giống hồn tồn: Ví dụ: ‘TIN HOC’ = ‘TIN HOC’ d) Các hàm thủ tục xử lý xâu, kí tự (Đây lý khơng xử dụng mảng kí tự để khai báo cho xâu cách thức truy cập tới phần tử xâu mảng tương tự – Nếu sử dụng mảng ta khơng áp dụng hàm thủ tục tiện lợi này) Một số thủ tục chuẩn: Delete(St, vt, n): xóa n kí tự xâu St vị trí vt Insert(S1, S2, vt): chèn sâu S1 vào S2 vị trí vt S2 Val(St, x, m): Đổi giá trị xâu St thành số ghi giá trị vào biến X, khơng đổi vị trí gây lỗi ghi m, đổi thành cơng m = Str(X, St): chuyển số X thành xâu kí tự lưu St Một số hàm chuẩn: Copy(St, vt, n): chép từ xâu St, n kí tự vị trí vt Pos(S1, S2): tìm vị trí xuất S1 S2 Length(St): cho độ dài xâu St Upcase(ch): cho chữ viết hoa tương ứng với chữ ch Chr(X): cho kí tự có mã X bảng mã ASCII Ord(ch): cho mã kí tự ch bảng mã Concat(St1,St2, StN): Hàm ghép nối xâu St1,St2, StN thành xâu ký tự theo thứ tự viết Các viết tương tự như: ST := St1 + St2 + + StN 2.1.2 Kiểu liệu xâu TP FP 2.1.2.1 Kiểu liệu xâu TP Trong TP xâu có độ dài khơng q 255 kí tự nên với tốn có độ dài lớn việc sử dụng kiểu xâu TP gặp khó khăn nhiều lựa chọn tốt bạn muốn lập trình ngơn ngữ Pascal sử dụng trình biên dịch FP Đối với TP kiểu liệu xâu thường dùng String có độ dài tối đa 255 kí tự Nhưng hầu hết toán đề thi học sinh giỏi có độ dài xâu lớn nhiều nên việc xử lý gặp nhiều khó khăn Do vậy, ta phải dùng tới trình biên dịch FP 2.1.2.2 Kiểu liệu xâu FP Khi lập trình, nhiều lần gặp vấn đề với xâu tối đa 255 kí tự TP (chẳng hạn toán xâu đối xứng, toán đếm từ…) Ta giải Trang Sáng kiến kinh nghiệm tin học vấn đề mảng kí tự (array of char) ta lại khơng thể dùng phép tốn xâu mạnh Pascal Khơng có cải tiến kiểu nguyên, kiểu string FP cải tiến tốt Kiểu xâu kí tự FP khơng hạn chế 255 kí tự TP mà có kích thước tối đa khoảng tỉ kí tự Hơn FP hỗ trợ kiểu xâu Unicode (WideString) Nếu bạn muốn sử dụng kiểu String cũ TP, bạn dùng kiểu ShortString String Trong mơi trường Windows, trình biên dịch FP có nhiều ưu tính tương thích hỗ trợ nhớ lớn Các kiểu liệu xâu kí tự thường sử dụng FP: String, ShortString, AnsiString, WideString Một số câu hỏi chọn lọc liên quan đến kiểu liệu xâu đề thi HS giỏi tỉnh Vĩnh Phúc năm gần Câu (Bài – Kì thi chọn HSG lớp 12 THPT – Năm học: 2014 – 2015) Keyboard: Harry – người bạn gõ đoạn văn bàn phím đặc biệt với ký tự xếp theo cách sau: qwertyuiop asdfghjkl; zxcvbnm,./ Thật không may, Harry bị khiếm thị, đơi vấn đề cho lần muốn đặt tay lên bàn phím cách xác Harry vơ tình di chuyển hai bàn tay vị trí sang trái sang phải Điều có nghĩa Harry bấm phải phím mà Harry khơng muốn Chúng ta có dãy ký tự mà Harry gõ vào, cần tìm lại chuỗi nguyên ban đầu Dữ liệu: Dòng đầu ghi ký tự “R” – chuyển qua phải “L” chuyển qua trái Dòng ghi dãy khơng q 1000 ký tự - chuỗi đánh máy Harry Dãy chứa ký tự có bàn phím Harry, chuỗi cho khơng có dấu cách, bàn phím Harry khơng có khơng gian trống, điều đảm bảo tay có di chuyển Harry bấm vào phím bàn phím mà khơng phải bấm ngồi bàn phím Kết quả: in dòng chứa chuỗi kí tự ngun Ví dụ: Input Output R s;;upimrrfod;pbr allyouneedislove Trang Sáng kiến kinh nghiệm tin học Thuật toán: Bước Đọc ch1 tương ứng kiểu kí tự lưu kí tự “L” “R” Bước Trong chưa kết thúc tệp ta tiếp tục thực B2.1 Đọc ch tương ứng với kí tự; B2.2 Gán k1:=pos(ch,s1); k2:=pos(ch,s2); k3:=pos(ch,s3) với s1, s2, s3 số ứng với xâu dòng kí tự đề B2.3 Nếu ch1=’R’ ta kiểm tra B2.3.1 Nếu k1>0 s:=s+s1[k1-1]; B2.3.2 Nếu k2>0 s:=s+s2[k2-1] B2.3.3 Nếu k3>0 s:=s+s3[k3-1] B2.4 Nếu ch1=’L’ ta thực hiện: B2.4.1 Nếu k1>0 s:=s+s1[k1+1]; B2.4.2 Nếu k2>0 s:=s+s2[k2+1] B2.4.3 Nếu k3>0 s:=s+s3[k3+1] Bước Đưa xâu cần tìm: s Code: const s1='qwertyuiop'; s2='asdfghjkl;'; s3='zxcvbnm,./'; var f,g:text; ch,ch1:char; k1,k2,k3:byte; s:ansistring; BEGIN assign(f,'keyboard.inp'); reset(f); assign(g,'keyboard.out'); rewrite(g); readln(f,ch1); s:=''; while not eof(f) begin read(f,ch); k1:=pos(ch,s1);k2:=pos(ch,s2); k3:=pos(ch,s3); if ch1='R' then begin if k1>0 then s:=s+s1[k1-1]; if k2>0 then s:=s+s2[k2-1]; if k3>0 then s:=s+s3[k3-1]; end else Trang Sáng kiến kinh nghiệm tin học begin if k1>0 then s:=s+s1[k1+1]; if k2>0 then s:=s+s2[k2+1]; if k3>0 then s:=s+s3[k3+1]; end; end; writeln(g,s); close(f); close(g); END Câu (Bài – Kì thi chọn HSG lớp 10 THPT – Năm học: 2013 – 2014) Cho bảng kích thước chia thành lưới vng đơn vị Các hàng đánh số từ theo chiều từ xuống Các cột đánh số từ theo chiều từ trái qua phải Ô nằm giao hàng cột gọi ô ghi ký tự , kí tự chữ latin in hoa dấu # Mỗi từ bảng dãy liên tiếp chữ hàng (tính từ trái qua phải) dãy liên tiếp kí tự cột (tính từ xuống dưới) cho hai từ liên tiếp hàng cột cách dấu # Yêu cầu: Tìm từ lớn theo thứ tự từ điển Dữ liệu:  Dòng Hai số ngun dương cách dấu cách  Dòng : Dòng thứ ghi ký tự liền nhau, kí tự thứ Kết quả: Ghi từ lớn theo thứ tự từ điển Ràng buộc: Ví dụ: crosswrd.inp crosswrd.out 45 #DACA DA##B ABB#B ABBAC DACA Thuật tốn: Với test có m, n nhỏ ta sử dụng mảng chiều để thực toán dễ dàng với test lớn, chẳng hạn với m, n mang giá trị tối đa theo yêu cầu đề sử dụng mảng chiều tốn nhớ với máy tính thơng thường khơng thể chạy được, ta sử dụng kiểu xâu lớn ansistring, không sử dụng mảng chiều việc đọc xử lý liệu nhiều thời gian ta phải đọc kí tự Các bước xây dựng thuật tốn: Trang Sáng kiến kinh nghiệm tin học Lưu ý việc sử dụng biến s, max kiểu ansistring; ch kiểu char để đọc kí tự xâu Sử dụng thêm mảng xâu a kiểu ansistring có tối đa 1000 kí tự Bước Đọc n, m {m tương ứng số cột, n tương ứng số hàng) Bước {Ta đọc liệu xử lý liệu theo hàng ngang trước Sau kết thúc trình xử lý ta thu xâu lớn theo hàng ngang mảng kí tự} - B2.1 i:=1 ,gán s:=’’; max:=s - B2.2 Trong i

Ngày đăng: 05/10/2018, 15:29

Từ khóa liên quan

Mục lục

  • DANH MỤC CÁC TỪ VIẾT TẮT

  • PHẦN I. MỞ ĐẦU

    • 1. Lý do chọn đề tài

      • 1.1.1. Cơ sở lí luận

      • 1.1.2. Cơ sở thực tiễn

      • 2. Định hướng nghiên cứu

        • 1.1.3. Mục đích nghiên cứu

        • 1.1.4. Đối tượng nghiên cứu

        • 1.1.5. Phạm vi nghiên cứu

        • 1.1.6. Phạm vi ứng dụng

        • 1.1.7. Phương pháp nghiên cứu

        • PHẦN II. NỘI DUNG

          • 3. Cơ sở lý thuyết

            • 2.1.1. Kiểu dữ liệu xâu

            • 2.1.2. Kiểu dữ liệu xâu trong TP và FP

              • 2.1.2.1. Kiểu dữ liệu xâu trong TP

              • 2.1.2.2. Kiểu dữ liệu xâu trong FP

              • 4. Một số câu hỏi chọn lọc liên quan đến kiểu dữ liệu xâu trong các đề thi HS giỏi tỉnh Vĩnh Phúc những năm gần đây

              • 5. Một số lưu ý

              • PHẦN III. KẾT LUẬN VÀ KIẾN NGHỊ

                • 6. Kết luận

                • 7. Kiến nghị

                • NHẬN XÉT CỦA TỔ CHUYÊN MÔN VÀ HỘI ĐỒNG CHẤM

                • PHỤ LỤC CÂU HỎI

                • DANH MỤC TÀI LIỆU THAM KHẢO

Tài liệu cùng người dùng

Tài liệu liên quan