Kiểu Dữ Liệu Xâu Kí Tự Trong Pascal - Sách Giải

sach-giai-logo
  • Môn học
    • Toán học
    • Văn học
    • Vật lý
    • Hoá học
    • Lịch sử
    • Địa lý
    • Anh văn
    • Công nghệ
    • Sinh học
    • Tin học
    • Âm nhạc
    • Mĩ thuật
    • Thể dục
    • Công dân
    • Khoa học
    • Y khoa
    • Ngoại khoá
    • Gương sáng
    • Đề thi, đáp án
    • Thơ văn
    • Đề tài
    • Dạy và học
  • Sách
  • Hỏi đáp
  • Văn bản
  • Tìm kiếm
  • vnedu tra cứu điểm
  • Trang nhất
  • Tin học
Kiểu dữ liệu xâu kí tự (string) trong Pascal 2020-07-30T21:38:23+07:00 https://sachgiai.com/Tin-hoc/kieu-du-lieu-xau-ki-tu-string-trong-pascal-13443.html https://sachgiai.com/uploads/news/2020_07/lap-trinh-pascal.jpg Sách Giải Thứ năm - 30/07/2020 21:36 Một xâu kí tự được định nghĩa bằng từ khóa STRING, theo sau là các số kí tự cực đại có thể có của xâu kí tự, được đặt trong ngoặc vuông. 1. ĐỊNH NGHĨA XÂU KÍ TỰ (STRING) Khi Niklaus Wirth thiết kế Pascal, tác giả đã sử dụng máy tính lớn với các thiết bị nhớ và ngoại vi như bìa đục lỗ, băng từ trong đó các dữ liệu có độ dài cố định được sử dụng. Với sự phát triển của kĩ thuật, các phương trình dịch Pascal hiện nay đã có một kiểu dữ liệu mới là xâu kí tự để xử lí các chuỗi, các dãy kí tự có độ dài thay đổi... nhằm đáp ứng nhu cầu xử lí văn bản, xử lí từ (ngữ). Một xâu kí tự được định nghĩa bằng từ khóa STRING, theo sau là các số kí tự cực đại có thể có của xâu kí tự, được đặt trong ngoặc vuông. STRING[DO_DAI_CUC_DAI] ; + Ví dụ: VAR Filename: String[20] ; Line: String[80] ; {Dòng 80 kí tự là nhiều nhất} Cấu trúc của xâu kí tự như sau: Trong bộ nhớ nó chiếm số byte bằng số kí tự cực đại để chứa các kí tự, cộng với 1 byte đầu tiên chứa số kí tự hiện có của xâu kí tự. ■ Ví dụ: biến Filename khai báo ở trên được gán giá trị: Filename:= 'VIDU.PAS' ; Khi này độ dài xâu kí tự Filename chi là 8 kí tự, mặc dù độ cực đại cho phép của Filename là 20. Như đã trình bày ở trên, byte đầu tiên chứa 1 kí tự để biểu diễn độ đài xâu kí tự (số thứ tự trong bảng mã ASCII của kí tự là độ dài xâu). Vì độ dài xâu kí tự được biểu diễn bằng 1 byte nên ta thấy ngay rằng độ dài xâu kí tự chỉ nằm trong khoảng từ 1 đến 255. Byte đầu tiên có thể truy nhập vào qua chỉ số 0. Vì vậy độ dài thực của xâu kí tự có thể tìm ra như sau: Dodai = Ord(Filenamer[0]) ; hoặc nếu biết độ dài xâu kí tự. ta có thể tìm ra kí tự biểu diễn độ dài: Filename[0]:= Char[Dodai] ; • Khi độ dài cực đại của chuỗi là 255 ta có thế khai báo đơn giản STRING thay vì STRING[255]. • Hàm chuẩn Length[St] cho ta độ dài của xâu kí tự St. Một xâu chữ có thế là rỗng (không chứa kí tự nào) và khi đó Lenght(St) = 0. Xâu kí tự rỗng được kí hiệu ‘’. Chúng ta có thể hiểu String như là một mảng kí tự có chỉ số chạy từ 0 đến độ dài cực đại, phần tử thứ 0 chứa độ dài thực của xâu. Song mảng kí tự có độ dài luôn luôn không đổi. Vì vậy khi ta đọc cả mảng hay viết ra cả mảng kí tự sẽ có những cái bất tiện do độ dài xâu kí tự không thay đổi được. Chúng ta sẽ thấy vai trò ứng dụng to lớn của String trong suốt quá trình lập trình. Còn mảng kí tự ít được dùng hơn String. • Truy nhập vào phần tử của xâu kí tự. Ta có thể truy nhập vào từng kí tự một của xâu kí tự với tên biến và chữ số đặt trong ngoặc vuông như khi truy nhập vào phần tử của mảng. Chỉ số này có thể chạy từ 1 tới độ dài cực đại của xâu kí tự. Nếu vị trí kí tự đó nằm ngoài độ dài thực của xâu kí tự thì phần từ đó của xâu không có giá trị xác định. Vì vậy khi truy nhập vào từng phần tử của xâu chữ ta còn cần phải kiểm tra xem vị trí đó có nằm trong khoảng độ dài thực của xâu hay không. 2. CÁC THAO TÁC TRÊN XÂU KÍ TỰ a) Phép cộng xâu: Xâu kí tự có thể được sử dụng như là các toán hạng trong các biểu thức để ghép xâu kí tự qua toán tử +. ■ Ví dụ: Filename:= 'A\' + Filename ; Cho kết quả Filename = 'A\VIDU.PAS' Hoặc Filename:= 'Ten' + ‘File' + ‘Pas’ ; Cho kết quả Filename = 'TenFile.Pas' Rõ ràng là với kiểu mảng kí tự, chúng ta không thể thực hiện được phép cộng để ghép hai mảng lại với nhau vì độ dài của chúng đã cố định. Không có tính trừ, nhân, chia... cho xâu kí tự. b) So sánh xâu kí tự: Xâu kí tự có thể được dùng trong các biểu thức quan hệ để so sánh: - Khi so sánh hai xâu kí tự, các kí tự của hai xâu được so sánh từng cặp một từ trái qua phải theo giá trị của bảng mã ASCII. - Nếu hai xâu có độ dài khác nhau song số kí tự giống nhau đến độ dài xâu ngắn nhất thì xâu có độ dài ngắn hơn được coi là bé hơn. 'FILENAME' < 'FILENAME A': cho giá trị TRUE. 'FILENAME' < 'FILENAME': cho giá trị FALSE. - Hai xâu kí tự bằng nhau nếu như cả hai về nội dung lẫn độ dài của chúng là giống nhau. 'FILENAME' = FILENAME' là biểu thức có giá trị TRUE. c) Khai báo STRING làm tham số CTC: Tương tự như ARRAY, STRING có thể dùng làm tham số cho chương trình con. Ta phải khai báo kiểu dữ liệu trước khi sử dụng nó. ■ Ví dụ: FUNCTION VIDUSAI: STRING[30] PROCEDURE VIDUSAI (ST: STRING[50]) ; Ta cần phải viết như sau: TYPE ST30 = STRING[30] ; ST50 = STRING[50] ; VAR CHUOI: ST30 CHUOI: ST50 ; FUNCTION VIDU1: ST30 ; … PROCEDURE VIDU2: (ST: ST50) ; … Khi dùng String làm tham số cho CTC, về nguyên tắc độ dài của tham số thực phải bàng độ dài của tham số hình thức, nghĩa là Turbo Pascal kiểm tra độ dài xâu giữa các tham số (Range Checking). Vì vậy lời gọi thủ tục sau là đúng hoàn toàn: VI DU2 (CHUOI50) ; Đó là vì CHUOI50 (tham số thực sự) có kiểu là ST50 trùng với tham số hình thức ST: ST50. Lời gọi thủ tục VIDU2 (CHUOI30) ; sẽ bị coi là không hợp lệ vì chuỗi CHUOI30 có kiểu là ST30. Tuy vậy bạn có thể hoàn toàn chuyển tham số STRING có độ dài khác và CTC bằng cách hướng dẫn chương trình dịch Turbo Pascal không kiểm tra tính tương thích về độ dài. Cách làm: định hướng |$V-| sẽ bỏ việc kiểm tra tính tương thích về độ dài của tham số xâu kí tự và {$V+} sẽ làm hoạt động việc kiểm tra trở lại. d) Viết ra màn hình: Có thể dùng Write(St) và Writeln(St) cho 1 xâu kí tự St. e) Đọc: Readln (St) sẽ đọc các kí tự cho xâu St với độ dài thực là số kí tự gõ vào từ bàn phím. Nếu ta gõ Return luôn, không cho kí tự nào thì St rỗng (St = ' '), nếu ta gõ vào nhiều hơn số kí tự tối đa của St thì các kí tự cuôi dư ra sẽ bị bỏ qua. f) Các thủ tục và hàm chuẩn xử lí xâu kí tự: Do xâu kí tự được dùng rất phổ biến nên Turbo Pascal đã đưa vào một số thủ tục và hàm để xử lí xâu kí tự. Độ dài xâu là 255 được sử dụng để minh họa. • Hàm Lenght (St) cho ta độ dài thực sự của xâu kí tự St. Ta có thể tự viết lại hàm Lenght (St) như sau: FUNCTION LENGHT (St: STRING): BYTE ; Begin Lenght:= Ord(St[0]) ; End ; ■ Ví dụ: Với St:= 'FILENAME' thì Lenght(St) có giá trị bằng 8. • Thủ tục xóa Delete( St, Vi_tri, S1) sẽ xóa bỏ trong xâu St một số kí tự S1 kể từ vị trí Vi_tri. ■ Ví dụ: Với St:= 'FILENAME' thì sau khi gọi Delete(St, 2, 3) St sẽ có giá trị bằng 'FNAME' vì xóa đi 3 kí tự 'ILE'. Nếu Vi_tri + SI > Lenght(St) thì chỉ xóa những kí tự cuối của nó tính từ Vi_tri. ■ Ví dụ: Với St:= 'FILENAME' thì sau khi gọi Insert ('TEST', St, 5) St sẽ có giá trị bằng 'FILETESTNAME'. Nếu Lenght (S1) + Lenght (St) vượt quá độ đài cực đại của St thì các kí tự nằm trong độ dài cực đại mới được giữ lại. Nếu Vi_tri > Lenght (St) thì SI sẽ được nối vào đuôi của St. • Thủ tục St (GiaTri, St) sẽ biến đổi giá trị bằng sô nguyên hoặc thực hành một chuỗi kí tự biểu diễn số đó. ■ Ví dụ: với I = 234, Str (I: 5, St) sẽ cho St = 234(*5 kí tự*). • Thủ tục Val(St, GiaTri, Maloi) sẽ biến đổi một xâu kí tự St thành một số nguyên hoặc thực chứa kết quả trong Giatri. Maloi dùng để phát hiện lỗi: nếu St chứa chuỗi kí tự tương ứng với một số thì Maloi có giá trị 0. Ngược lại, Maloi sẽ mang giá trị là vị tri của kí tự đầu tiên sai trong St. ■ Ví dụ: St = '123.456', X là biến thực, Er là biến nguyên. Val(St, X, Er) cho ta X = 123.456 và Er = 0. Nếu I là biến nguyên Val(St, X, Er) cho ta I = 0 và Er = 4. Nếu St = '23.456’ Val(St, X, Er) cho ta X = 0 và Er = 3.  • Hàm Copy(St, Vi_tri, Kt) sẽ nhập kí tự trong St bắt đầu từ vị trí Vi_tri. ■ Ví dụ: St =:='123456789'; St1:= Copy(St, 4, 3) ; sẽ cho St1= '456'. • Hàm ghép Concat(St1, St2,…, Stn) sẽ ghép nối tất cả các chuỗi St1, St2, Stn thành một xâu kí tự tương tự ghép +.

Ý kiến bạn đọc

Sắp xếp theo bình luận mới Sắp xếp theo bình luận cũ Sắp xếp theo số lượt thích

Theo dòng sự kiện

    /assets/news/2020_07/lap-trinh-pascal.jpg Lập trình trò chơi đổi màu bi trong Pascal

    /assets/news/2020_07/lap-trinh-pascal.jpg Lập trình trò chơi tính điểm quân đôminô trong Pascal

Xem tiếp...

Những tin mới hơn

    /assets/news/2020_07/lap-trinh-pascal.jpg Kiểu dữ liệu tập hợp (set) trong Pascal

    /assets/news/2020_07/lap-trinh-pascal.jpg Kiểu bản ghi (record) trong Pascal

Những tin cũ hơn

    /assets/news/2020_07/lap-trinh-pascal.jpg Kiểu dữ liệu mảng (array) trong Pascal

    /assets/news/2020_07/lap-trinh-pascal.jpg Biến toàn cục và biến địa phương - khái niệm tam tác dụng trong Pascal

Lớp 1

Lớp 2

Lớp 3

Lớp 4

Lớp 5

Lớp 6

Lớp 7

Lớp 8

Lớp 9

Lớp 10

Lớp 11

Lớp 12

THÀNH VIÊN

Hãy đăng nhập thành viên để trải nghiệm đầy đủ các tiện ích trên site Nhập mã do ứng dụng xác thực cung cấp Thử cách khác Nhập một trong các mã dự phòng bạn đã nhận được. Thử cách khác Đăng nhập Đăng ký

MÔN HỌC

Lớp 1 Lớp 2 Lớp 3 Lớp 4 Lớp 5
Lớp 6 Lớp 7 Lớp 8 Lớp 9
Lớp 10 Lớp 11 Lớp 12
Trung cấp Cao đẳng Đại học

SÁCH HỌC

Lớp 1 Lớp 2 Lớp 3 Lớp 4 Lớp 5
Lớp 6 Lớp 7 Lớp 8 Lớp 9
Lớp 10 Lớp 11 Lớp 12
Tuyển sinh Thơ Truyện Tử vi
Kênh Bóng đá trực tiếp hôm nay miễn phí ⇔ j888Kênh 90Phut TV full HD ⇔ Gemwiniwinhttps://789bet.kitchen/truc tiep bong da xoilac tv mien philink trực tiếp bóng đá xôi lạc tv hôm nay ⇔ link xem truc tiep bong da xoilac tv ⇔ jun88https://104.248.99.177/link trực tiếp bóng đá xoilactv tốc độ cao ⇔ xem bóng đá cà khịa tv trực tuyến hôm nay123Bhttps://nhatvip.rocksshbetABC8https://ww88.supply/W88sin88.runTDTC789BETBJ8833winVIPwinBJ88https://789betcom0.com/https://hi88.baby/https://j88cem.com/iwiniwinlink 188betiwiniwinbet88iwinFB88Hb88BJ88NEW 88NEW8833WINhi88shbetkuwinGo8823winBJ88Kuwinhi8877win tosafehttps://okvipno1.com/8K BETGo88https://j88info.com/69VN33winjun888 เครดิตฟร79kinghttps://789bethv.com/https://88clb.promo/https://meijia789.com/BK833WINhttps://f8bet0.tv/https://choangclub.barhttps://vinbet.funhttps://uk88.rocksHay88https://33win.boutique/vfavfav789clubBJ88ABC8 © 2023 Sách Giải. All Right Reserved. Đối tác:x8bet com Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây

Giới thiệu bài viết cho bạn bè

Từ khóa » Cách Cộng Xâu Ký Tự Trong Pascal