Bước tới nội dung

Học Pascal/Kiểu dữ liệu

Tủ sách mở Wikibooks


Kiểu xâu

[sửa]

Khái niệm

[sửa]
  • Xâu là một dãy các kí tự trong bảng mã ASCII. Mỗi kí tự được gọi là một phần tử của xâu.
  • Số lượng kí tự trong xâu được gọ là độ dài xâu (length).
  • Xâu có độ dài bằng không gọi là xâu rỗng, được biểu diễn bằng hai dấu nháy đơn (''). Lưu ý: Khoảng trắng (space) cũng được xem là một ký tự.
  • Tham chiếu đến một phần tử của xâu: <Tên biến xâu>[chỉ số].
Lưu ý: Có thể xem xâu như mảng một chiều với mỗi phần tử là 1 kí tự (char).
Kiểu dữ liệu Độ dài tối đa 1 xâu
Char 1
WideChar ?
String 255 (Turbo)
ShortString 255
AnsiString Tuỳ

Khai báo

[sửa]

Cú pháp:

VAR <tên biến>:string[<độ dài ti đa cho xâu>];
VAR <tên biến>:<kiu d liu xâu>;

VD:

VAR ten:string[40];
    s:string;
    st:ansistring;
  • Lưu ý: Ta có thể bỏ qua độ dài của xâu khi khai báo. Lúc này độ dài của xâu sẽ được mặc định là giá trị lớn nhất: 255.

Các thao tác xử lý xâu

[sửa]

So sánh

[sửa]
  • Xâu A = B nếu chúng giống nhau hoàn toàn.
VD: A:='PASCAL' và B:='PASCAL'
  • Xâu A > B nếu kí tự khác nhau đầu tiên từ trái sang trong xâu A có mã ASCII lớn hơn kí tự trong xâu B.
VD: A:='Wikiquote'và B:='Wikibooks'

Ta thấy từ trái sang, 4 kí tự đầu trong xâu A hoàn toàn giống 4 kí tự đầu trong xâu B. Kí tự thứ 5 trong xâu A là 'q' có mã ASCII là 113, lớn hơn kí tự 'b' trong xâu B vì chỉ có mã ASCII là 98. Vậy xâu A>B.

  • Xâu B > A nếu xâu A là đoạn đầu của B.
VD: B:='Wikibooks'và A:='Wiki'

Ghép xâu

[sửa]
A B A+B B+A
'Pascal ' 'cơ bản' 'Pascalcơ bản' 'cơ bảnPascal '
'Việt' ' Nam ' 'ViệtNam ' ' NamViệt'
'Wikibooks' ' Tủ sách mở cho một thế giới mở' 'Wikibooks Tủ sách mở cho một thế giới mở' ' Tủ sách mở cho một thế giới mởWikibooks'

Các hàm và thủ tục xử lý xâu

[sửa]
Thao tác Ý nghĩa s:= 'Wikibooks Tủ sách mở cho một thế giới mở'
Delete(s,vt,n) Xoá đi n kí tự của xâu s kể từ kí tự thứ vt delete(s,20,20) s='Wikibooks Tủ sách mở'
Insert(r,s,vt) Chèn xâu r vào xâu s bắt đầu từ vị trí vt insert('Việt Nam ',s,10) s='Wikibooks Việt Nam Tủ sách mở cho một thế giới mở'
Length(s) Cho độ dài xâu (số kí tự của xâu) n:=length(s); n=40
Copy(s,vt,n) Copy n kí tự của xâu s từ vị trí vt st:=Copy(s,1,9); st='Wikibooks'
Pos(r,s) Vị trí xuất hiện đầu tiên của r trong s, nếu không xuất hiện thì trả về 0 vt:=pos('mở',s); vt=19
Upcase(s) In hoa cả xâu t:=upcase(s); t='WIKIBOOKS TỦ SÁCH MỞ CHO MỘT THẾ GIỚI MỞ'
Upcase(s[i]) In hoa một kí tự của xâu t:=upcase(s[length(s)−1]); t='M'
Lowercase(s) Chuyển in hoa thành in thường st:=lowercase(s); st='wikibooks tủ sách mở cho một thế giới mở'
Lowercase(s[i]) In thường 1 kí tự st:=lowercase(s[1]); st='w'
Concat(S1,..,Sn) Ghép các xâu từ S1 đến Sn concat('Wikibooks', ' Tủ sách mở') 'Wikibooks Tủ sách mở'
Hàm đặc biệt (st:= '1234'; m = 909)
Str(m,s) Đổi giá trị kiểu số m sang dạng xâu s str(m,s); s='909'
Val(st,n,code) Đổi xâu st thành số gán cho biến n. Nếu thành công code sẽ nhận giá trị 0, ngược lại cho giá trị khác 0 val(st,n,code); Trường hợp thành công

n=1234

code = 0

ORD(s) Lấy mã ASCII của một kí tự ord('T') 84
CHR(n) Trả về kí tự tương ứng với mã ASCII n chr(84) T
Lưu ý : lowercase có thể không hoạt động ở một số Compiler

Kiểu Logic

[sửa]
Kiểu dữ liệu Giá trị Số Byte được dùng
Boolean True/False 1

Học Pascal/Vòng lặp-->