Độ dài của một xâu kí tự được tính như thế nào

Var ten_xau: STRING[độ dài của xâu];

hoặc Var ten_xau:string;

Xâu ký tự trong bộ nhớ nó chiếm số byte bằng số ký tự cực đại được khai báo cộng với byte đầu tiên chứa số ký tự hiện có của xâu. Độ dài tối đa của xâu ký tự là 255.

- Cách nhập/xuất: Cách đọc hay viết kiểu STRING cũng tương tự như các kiểu dữ liệu khác, ta sử dụng các thủ tục READ, hoặc WRITE.


Ví dụ: 
Readln(st);
Writeln(st);

- Truy cập từng phần tử của xâu ký tự: tương tự mảng 1 chiều: thông qua tên biến kiểu STRING và chỉ số của nó


Ví dụ: 
St := 'Le Thanh Lam';
write(st[4]);
-> Kết quả: cho ra chữ T.

Các thao tác trên xâu ký tự:



1/ Phép cộng xâu:

Ví dụ:

st1:=’Le’; st2:=’Thanh’; St=st1 + st2; 

-> KQ: ‘Le Thanh’

2/ Phép so sánh: 


Hai xâu ký tự có thể so sánh với nhau bằng các phép so sánh =, >, <…
Nguyên tắc so sánh thực hiện như sau, chúng sẽ đem từng ký tự tương ứng với nhau để so sánh, xâu nào có ký tự có số thứ tự trong bảng mã ASCII lớn hơn thì xâu đó lớn hơn.
Hai xâu ký tự được gọi là bằng nhau khi chúng hoàn toàn giống nhau (có độ dài như nhau).
Ví dụ: ‘FILENAME’ = ’FILENAME ‘

3/ Các thủ tục và hàm chuẩn xử lý xâu ký tự


a. Hàm length(st): cho độ dài thực của xâu ký tự
ví dụ: st:=’le thanh’ thì LENGTH(st) cho bằng 8.

b/ Thủ tục DELETE(st, pos, num): xóa num ký tự trong xâu st kể từ vị trí pos


Ví dụ: st= ‘FILENAME’
Delete(st,5,4) lúc đó st cho ra là ‘FILE’

c/ Thủ tục INSERT(obj, st, pos): Thủ tục cho kết quả bằng cách chèn xâu ký tự có tên là Obj vào xâu st tại vị trí pos, những ký tự đứng sau pos sẽ được dời vềphía sau của xâu ký tự obj.


Ví dụ: obj:= ‘Thanh ‘
st:=’Le Lam’;
INSERT(obj,st,4) lúc đó st=’Le Thanh Lam’;

d/ Thủ tục STR(value, st): Thủ tục này thực hiện việc chuyển đối giá trị kiểu số(value) sang dạng xâu ký tự và gán cho biến st.


Ví dụ: n là một só nguyên có giá trị: n:=150;
STR(n:5,st) sẽ cho kết quả xâu st là: st=’ 150’;

e/ Thủ tục VAL(st, value,code) đối một xâu ký tự st sang dạng số và gán cho biến value, nếu biến đối thành công thì code sẽ nhận giá trị bằng 0. ngược lại thì cho giá trị khác không


Ví dụ: VAL(‘123’,value,code) lúc này code sẽ nhận giá trị bằng 0 và value=123

f/ Hàm COPY(st, pos, num): sao chép trong xâu st, num ký tự tại vị trí pos,


Ví dụ: st=’Le Thanh Lam’
COPY(st,4,5) = ‘Thanh’;

g/ Hàm CONCAT(s1,s2,…,sn): hàm cho ra 1 xâu mới bằng cách nối đuôi các xâu s1,s2,…,sn lại với nhau.


Ví dụ: CONCAT(‘Le ’,’Thanh ‘, ‘Lam’) = ‘Le Thanh Lam’;

h/ Hàm POS(st1,st2): hàm cho tavị trí tìm thấy đầu tiên của xâu s1 trong xâu s2.


Ví dụ: POS(‘Lam’,‘Le Thanh Lam’) = 10;

i/ Hàm Length(st): cho kết quả là một số nguyên chỉ chiều dài của chuỗi st.

ví dụ: lenght('PASCAL') --> 6

j/ Hàm UPCASE(Ký_tự)--> Đổi Ký_tự thành "KÝ_TỰ" in hoa

4. Truy xuất từng ký tự trong chuỗi

Có thể kết hợp dùng vòng lặp truy xuất các ký tự trong chuỗi.

Ví dụ: In ra các ký tự của chuỗi st[i] ra màn hình theo từng dòng

for i:=1 to 6 do writeln(st[i]);

khái niệm kiểu xâu và cách khai báo.

· Một số khái niệm:

- Xâu là một dãy 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ọi là độ dài của xâu .

- Xâu có độ dài bằng 0 gọi là xâu rỗng.

- Tham chiếu tới phần tử trong xâu được xác định thông qua chỉ số của phần tử trong xâu.

        <Tên biến xâu>[chỉ số]

· Cách khai báo biến xâu:

var <tên biến xâu> : string [độ dài lớn       nhất của xâu] ;

VD:  Ten : String[10] ;

       Ho_dem : String[50] ;

       Que : String ;

Chú ý :

- Nếu không khai báo độ dài tối đa cho biến xâu kí tự thì độ dài ngầm định của xâu là 255 .

- Hằng xâu kí tự được đặt trong cặp nháy đơn ‘ ’.

các thao tác xử lí xâu.

· Phép ghép xâu: Kí hiệu là dấu cộng (+)

VD:

‘Ha’  + ‘ Noi’ + ‘ – ’ + ‘Viet Nam’

cho kết quả là ‘Ha Noi – Viet Nam’

· Phép so sánh: <, <=, >, >=, = , <>.

- Xâu A là lớn hơn xâu B nếu như kí tự đầu tiên khác nhau giữa chúng kể từ trái sang trong xâu A có mã ASCII lớn hơn

- Nếu A và B là các xâu có độ dài khác nhau và A là đoạn đầu của B thì A là nhỏ hơn B.

- Hai xâu được coi là bằng nhau nếu chúng hoàn toàn giống nhau.

· Một số thủ tục và hàm chuẩn dùng để xử lí xâu:

- Thủ tục delete (S,vt,n) xóa n kí tự của xâu S bắt đầu từ vị trí vt.

- Thủ tục insert (S1,S2,vt) chèn sâu S1 vào xâu S2 bắt đầu từ vị trí vt của S2.

- Hàm copy (S,vt,n) tạo xâu gồm n kí tự liên tiếp bắt đầu từ vị trí vt của xâu S.

- Hàm pos (S1,S2) cho vị trí xuất hiện đầu tiên của S1 trong S2 .

- Hàm length (S) cho độ dài xâu S.

- Hàm upcase (ch) cho chữ cái viết hoa tương ứng với chữ thường trong ch.

- Hàm chr (X) cho kí tự có mã X trong bảng mã ASCII.

- Hàm ord (ch) cho mã của kí tự ch trong bảng mã ASCII.

Một số bài toán ví dụ về kiểu xâu.

VD1: Nhập 2 xâu, viết ra màn hình xâu dài hơn.

VD2: Nhập 2 xâu, kiểm tra xem ký tự đầu tiên của xâu S1 có trùng với ký tự cuối cùng của xâu S2 hay không?

VD3: Nhập 1 xâu, viết ra màn hình xâu đó theo thứ tự ngược lại.

Củng cố kiến thức .

· GV nhắc lại: cách khai báo biến, nhập xuất dữ liệu, tham chiếu đến từng ký tự của xâu, các phép toán liên quan đến xâu, một số hàm và thủ tục xử lí xâu.

· HS về nhà làm bài tập 10 trang 80 sgk, chuẩn bị cho tiết bài tập.

Độ dài của một xâu kí tự được tính như thế nào

Giải Bài Tập Tin Học 11 – Bài 12: Kiểu xâu giúp HS giải bài tập, giúp cho các em hình thành và phát triển năng lực sử dụng công nghệ thông tin và truyền thông:

  • Sách Giáo Viên Tin Học Lớp 11

Xâu: Là một dãy 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ọi là độ dài của xâu .

   – Xâu có độ dài bằng 0 gọi là xâu rỗng.

   – Tham chiếu tới phần tử trong xâu được xác định thông qua chỉ số của phần tử trong xâu.

1. Khai báo

Để khai báo dữ liệu kiểu xâu ta sử dụng tên dành riêng string, tiếp theo là dộ dài lớn nhất của xâu(không vượt quá 255 kí tự đặt trong dấu ngoặc [ và ] )

Cú pháp:

Var<tên biến>:string[độ dài lớn nhất của xâu]; Hoặc Var <tên biến>:string;

Ví dụ:

Var ten:string[26]; Var chuthich:string;

2. Các thao tác xử lí xâu:

a) Phép ghép xâu, kí hiệu là dấu (+), được sử dụng để ghép nhiều xâu thành một. Có thể thực hiện ghép xâu đối với hằng và biến xâu.

Ví dụ:

‘Tin hoc’+ ’11’ sẽ cho xâu có kết quả là ‘Tin hoc 11’.

b) Các phép so sánh như bằng (=), khác (<>), nhỏ hơn (<), … có độ ưu tiên thực hiện thấp hơn ghép xâu.Việc so sánh 2 xâu sẽ thực hiện theo nguyên tắc sau.

Xâu A lớn hơn xâu B nếu như kí tự đầu tiên khác nhau giữa chúng kể từ trái sang trong xâu A có mã ASCII lớn hơn. Nếu độ dài hai xâu khác nhau thì coi như thêm các kí tự đặc biệt (nhỏ hơn tất cả các kí tự trong bảng ASCII).

Độ dài của một xâu kí tự được tính như thế nào

Ví dụ:

‘Ab’ sẽ nhỏ hơn ‘a’. Vì A có mã ASCII là 65 nhỏ hơn a là 97.

‘a’ sẽ nhỏ hơn ‘aB’ . Khi 2 xâu độ dài không bằng nhau ta thêm kí tự đặc biệt nhỏ hơn mọi kí tự trong bảng ASCII (dĩ nhiên sẽ nhỏ hơn B ).

c) Các thủ tục khác.

   + delete(st, vt, n) xóa n kí tự của xâu st từ vị trí vt.

   +insert(st, s2, vt) chèn xâu s1 vào s2 bắt đầu ở vị trí vt.

   +copy(S, vt, N); Tạo xâu gồm N kí tự liên tiếp bắt đầu từ vị trí vt của xâu S.

   +length(s) cho giá trị là độ dài xâu s.

   +pos(s1, s2) cho vị trí xuất hiện đầu tiên của xâu s1 trong xâu s2.

   +upcase(ch) cho chữ cái in hoa ứng với chữ cái trong ch.

3. Một số ví dụ

Ví dụ 1

Chương trình dưới đây nhập họ tên của hai người vào hai biến xâu và đưa ra màn hình xâu dài hơn nếu bằng nhau thì đưa ra xâu nhập vào sau.

program vd1; uses crt; var a,b:string; begin clrscr; write('nhap ho ten thu nhat:'); readln(a); write('nhap ho ten thu hai :'); readln(b); if length(a)>length(b) then write(a) else write(b); readkey; end.

Kết quả:

Độ dài của một xâu kí tự được tính như thế nào

Ví dụ 2: Viết chương trình nhập hai xâu từ bàn phím và kiểm tra kí tự đầu tiên của xâu thứ nhất có trùng

Với kí tự cuối cùng của xâu thứ hai không.

program vd2; uses crt; var a,b:string; begin clrscr; write('nhap xau thu nhat:'); readln(a); write('nhap xau thu hai :'); readln(b); if a[1]=b[length(b)] then writeln('Trung nhau') else writeln('Khac nhau'); readkey; end.

Kết quả:

Độ dài của một xâu kí tự được tính như thế nào

Ví dụ 3:

Viết chương trình nhập xâu từ bàn phím rồi in nó theo thứ tự ngược lại.

program vd2; uses crt; var a:string; i:integer; begin clrscr; write('nhap xau:'); readln(a); write('xau dao nguoc la:'); for i:=length(a) downto 1 do write(a[i]); readkey; end.

Độ dài của một xâu kí tự được tính như thế nào

Ví dụ 4:

Viết chương trình nhập vào từ bàn phím và đưa ra màn hình xâu thu được từ nó sau khi loại bỏ hết các dấu cách.

program vd2; uses crt; var a,b:string; i:integer; begin clrscr; write('nhap xau:'); readln(a); b:=''; for i:=1 to length(a) do if a[i]<>' ' then b:=b+a[i]; write('xau sau khi bo dau cach la',b); readkey; end.

Kết quả:

Độ dài của một xâu kí tự được tính như thế nào

Ví dụ 5:

Viết chương trình nhập vào từ bàn phím xâu kí tự s1, tạo xâu s2 gồm tất cả các chữ số có trong xâu s1 (giữ nguyên thứ tự xuất hiện của chúng ) và đưa kết quả ra màn hình.

program vd2; uses crt; var a,b:string; i:integer; begin clrscr; write('nhap xau:'); readln(a); b:=''; for i:=1 to length(a) do if ('0'<=a[i]) and ('9'>=a[i]) then b:=b+a[i]; write(b); readkey; end.

Độ dài của một xâu kí tự được tính như thế nào