Bài 12. Kiểu xâu

Chia sẻ bởi Nguyễn Như Ý | Ngày 10/05/2019 | 49

Chia sẻ tài liệu: Bài 12. Kiểu xâu thuộc Tin học 11

Nội dung tài liệu:

Kiểm tra bài cũ
Câu 1: Viết khai báo trực tiếp biến mảng 2 chiều.
Câu 2: Cho mảng số nguyên C, gồm 8 dòng và 9 cột. Viết khai báo cho biến mảng 2 chiều C.

Ví dụ 1:
Dữ liệu các phần tử trong vd 1 là dữ liệu dạng gì?
Dữ liệu của các phần tử trong vd1 là dữ liệu dạng kiểu số
Các phần tử trong vd2 có phải là dữ liệu không?
Ví dụ 2:
Bài 12: KiỂU XÂU
Xâu là dãy các kí tự trong bộ mã ASCII.
Xâu được tạo thành bởi các kí tự, trong đó có thể có kí tự trống (dấu cách).
Mỗi kí tự được gọi là 1 phần tử của xâu.
Số lượng kí tự trong một 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.
1. Khái niệm

Trong chương trình khi viết 1 xâu kí tự ta phải viết xâu kí tự đó giữa 2 dấu nháy đơn.
Ví dụ: `Tin hoc`
Khi nhập từ bàn phím 1 xâu, ta gõ các kí tự thuộc xâu đó (rồi nhấn phím Enter).
A
Tên xâu: A
Độ dài của xâu: 7
1 2 3 4 5 6 7
Tham chiếu tới phần tử thứ i của xâu ta viết A[i].
Ví dụ
Tham chiếu đến phần tử của xâu
Tên biến xâu [chỉ số]
Ví dụ: A[5]: = ‘H’

Xâu có 1 kí tự trống được viết như thế nào? Độ dài bao nhiêu?
Xâu chỉ gồm 1 kí tự trống viết là: ‘ ’
Có độ dài là 1.
Xâu rỗng được viết như thế nào? Độ dài bao nhiêu?
Để viết xâu rỗng ta viết 2 dâu nháy đơn liền nhau ‘’.
Có độ dài là 0.
* Các ngôn ngữ lập trình đều có quy tắc, cách thức cho phép xác định:
Tên kiểu xâu.
Cách khai báo biến kiểu xâu.
Số lượng kí tự của xâu.
Các phép toán thao tác với xâu.
Cách tham chiếu tới phần tử của xâu.


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

Ví dụ:
var Hoten: string [26] ;

Trong khai báo xâu có thể bỏ qua phần khai báo [độ độ dài lớn nhất của xâu]. Khi đó nó nhận giá trị ngầm định là 255;

Ví dụ:
var Chugiai: string;
2. Khai báo


Ngoài ra ta có thể sử dụng lệnh gán để nhập giá trị cho biến xâu.

Tên_biến_xâu:=‘hằng_xâu’;
S := ‘Ha noi’

Writeln(biến xâu);

Vd: Writeln(st);
Nhập 1 xâu từ bàn phím
Viết 1 xâu ra màn hình

Readln(biến xâu);

Vd: Readln(st);

Phép ghép xâu:
Kí hiệu là dấu cộng (+) được sử dụng để ghép nhiều xâu thành 1.
S = S1 + S2 + … + Sn
Có thể thực hiện phép ghép xâu đối với các hằng và biến xâu.
Ví dụ:
‘Ha’ + ‘ Noi’ + ‘ - ’ + ‘Viet Nam’
Xâu kết quả: ‘Ha Noi - Viet Nam’
3. Các thao tác xử lý xâu
Ví dụ: Ghép các xâu sau
`Ca` + `Mau` =
` CaMau`
`Tran Van` + `Thoi` =
`Tran VanThoi`
b. Các phép so sánh

Các phép so sánh : =, <>, <, >, ≤, ≥ trên xâu được thực hiện theo thứ tự trong bảng mã ASCII.
So sánh 2 xâu theo quy tắc sau:
* Xâu A = B, nếu chúng giống hệt nhau
‘tin hoc’ = ‘tin hoc’
‘tin hoc ’
* Xâu A <> xâu B
‘tin hoc’
<>
* Xâu A > B nếu:
+ Kí tự đầu tiên khác nhau kể từ trái sang trong xâu A có mã ASCII lớn hơn xâu B
+ Xâu B là đoạn đầu của xâu A
‘Anh’
B:=‘may tinh’ < A:=‘may tinh moi’
‘Ba’
<
Xâu có độ dài lớn hơn có thể là xâu nhỏ hơn.
A:=‘Ha Noi’ > B:=‘Ha Nam’
Ví dụ: So sánh các xâu sau
1. `AB`
`ABC`
2.`AC`
`ABC`
3. `AB`
`AC`
4. `ABB`
`ABC`
<
<
<
>
Ví dụ:
B1:=‘May Vi Tinh’
C1:=‘Day tot - Hoc’
B2 :=‘May Tinh’
C2:=‘Day tot - Hoc tot’
A1:=‘nguyen van a’
A2:= ‘Nguyen Van A’
c. Các thủ tục và hàm chuẩn xử lý xâu
Delete (S, vt, n)
Xóa n kí tự của biến xâu S bắt đầu từ vị trí vt.
S:=‘Song Hong’.
Delete(S, 1, 5)
‘Hong’
Insert (S1, S2, vt)
Chèn xâu S1 vào xâu S2 bắt đầu ở vị trí vt.
S1:=‘Tin ’, S2:=‘Hoc’
Insert(S1, S2 ,1)
‘Tin Hoc’
Delete(S, 6, 4)
Insert(S2, S1 ,1)
‘Song ’
‘HocTin ’
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
S:= ‘Tin Hoc’
Copy(S, 5, 3)
‘Học’
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.
S1:=‘cd’
S2:=‘abcdef’
Pos(S1, S2) ->3
Upcase (ch)
Cho chữ cái in hoa ứng với chữ cái trong ch.
Ch:=‘d’
Upcase(ch)
‘D’
S:=‘Tin Hoc ’
Length(S) -> 8
Ví dụ:
1. Cho S = ‘Mon tin hoc’
Delete(S,4, 4);

2. Cho S = ‘Em yeu truong em’. Hãy viết thao tác để thêm tên trường em đang học vào sau chữ truong trong xâu S?

3. Cho S = ‘cai xac xinh xinh’. Cho biết giá trị của thao tác pos(‘xinh’, S)?
X =
Pos(‘xinh’,S) = 9
Insert(‘Tran Van Thoi ’, X, 15);
‘Mon hoc’
?
Hết
Bài 12: kiểu xâu(tiếp theo)
4. Một số ví dụ:
1. Nhập họ tên của 2 người vào 2 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 sau.
Xác định input và output của bài toán.
Input: Nhập vào 2 biến xâu.
Output: Đưa ra xâu dài hơn hoặc xâu nhập sau.
Thể hiện bằng pascal
1. Khai báo xâu
2. Nhập xâu
3. Xử lý xâu
Var a,b : String ;
Begin
Clrscr ;
Write(`Nhap ho ten thu 1 : `); Readln(a);
Write(`Nhap ho ten thu 2 : `); Readln(b);
If length(a) > Length(b) then
Write(a)
else
Write(b);
Readln ;
End .
2. Nhập 2 xâu, kiểm tra xem 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ứ 2 hay không.
Xác định input và output của bài toán.
- Input: Nhập vào 2 xâu a và b.
- Output: kết luận A[1]= B[length(B)] hay không.
Các bước
2. Nhập vào 2 xâu a, b.
1. Khai báo biến
3. Xử lý xâu
Xác định x: = length(b);
Kí tự đầu tiên của xâu a: a[1]
Kí tự cuối cùng của xâu b: b[x]
Nếu a[1]=b[x] thì trung nhau.
Ngược lại thì không trùng
Var a,b : String ;
x: byte;
Begin
Write(`Nhap xau thu 1 : `); Readln(a);
Write(`Nhap xau thu 2 : `); Readln(b);
x:= length(b);
If a[1] = b[x]then
Write(‘trung nhau’)
else
Write(‘khong trung’);
Readln ;
End .
Thể hiện bằng pascal
3. Nhập 1 xâu, viết ra màn hình xâu đó nhưng theo thứ tự ngược lại.

Ví dụ:
Xâu ban đầu: ‘ca mau’
Xâu kq: ‘uam ac’
Xác định input và output của bài toán.
- Input: Nhập vào 1 xâu.
- Output: Đưa ra xâu vừa nhập theo thứ tự ngược lại.
Thứ tự ngược lại là phần tử nào được đưa ra đầu tiên?
Program vd3 ;
Uses crt ;
Var i,k : Byte ;
a : String ;
Begin
Clrscr ;
Write(`Nhap xau : `) ;
Readln(a) ;
k := length(a) ;
For i := k downto 1 do
Write(a[i]) ;
Readln ;
End .
4 . Nhập 1 xâu, viết ra màn hình xâu đó nhưng đã được bỏ các dấu cách.
Xác định input và output của bài toán.
Ví dụ:
Xâu ban đầu: ‘Mon tin hoc’
Xâu kq: ‘Montinhoc’
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...

Người chia sẻ: Nguyễn Như Ý
Dung lượng: | Lượt tài: 1
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)