Bài 12: Kiểu xâu | Tin học | Chương 4: Kiểu dữ liệu có cấu trúc - Lớp 11 - Giáo Dục Việt Nam


Dữ liệu trong các bài toán không chỉ thuộc kiểu số mà cả kiểu phi số - dạng kí tự. Dữ liệu kiểu xâu là dãy các kí tự.

Ví dụ. Các xâu kí tự đơn giản:
'Bach khoa'
'KI SU'
'2007 la nam Dinh Hoi

Xâu là dãy các kí tự trong bộ 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 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.

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.

Có thể xem xâu là mảng một chiều mà mỗi phần tử là một kí tự. Các kí tự của xâu được đánh số thứ tự, thường bắt đầu từ 1.

Tương tự mảng, tham chiếu tới phần tử của xâu được xác định bởi tên biến xâu và chỉ số đặt trong cặp ngoặc [ và ].

Ví dụ, giả sử có biến Hoten lưu trữ giá trị hằng xâu 'Nguyen Le Huyen thì Hoten[6] cho ta kí tự 'n' là kí tự thứ sáu của biến xấu Hoten.

Dưới đây trình bày cách khai báo dữ liệu kiểu xâu, các thao tác xử lí xâu và một số ví dụ sử dụng kiểu xâu trong Pascal.

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ài lớn nhất của xâu (không vượt quá 255) được ghi trong cặp ngoặc [ và ].

Biến kiểu xâu có thể khai báo như sau:

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

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

Trong mô tả xấu có thể bỏ qua phần khai báo độ dài, chẳng hạn:
var Chugiai: string;

Khi đó độ dài lớn nhất của xâu sẽ nhận giá trị ngầm định là 255.

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

a) 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 một. 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ụ

Phép ghép xâu:
'Ha'' Noi' +
-
' + 'Viet Nam'
cho xâu kết quả là 'Ha Noi - Viet Nam.

b) Các phép so sánh bằng (=), khác (<>), nhỏ hơn (<), lớn hơn (>), nhỏ hơn hoặc bằng (<=), lớn hơn hoặc bằng (>=) có thứ tự ưu tiên thực hiện thấp hơn phép ghép xâu và thực hiện việc so sánh hai xấu theo các quy tắc sau:

  • 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.

Ví dụ
'May tinh' < 'May tinh cua toi'
* Hai xâu được coi là bằng nhau nếu như chúng giống nhau hoàn toàn. Ví dụ
'TIN HOC TIN HOC'
Để xử lí các xấu, có thể sử dụng các thủ tục và hàm chuẩn dưới đây:

c) Thủ tục delete(st, ví, n) thực hiện việc xoá n kí tự của biến xấu sự bắt đầu từ vị trí vt.
Ví dụ
hinh-anh-bai-12-kieu-xau-4711-0


d) Thủ tục insert(s1, s2, vt) chèn xâu s1 vào xâu s2, bắt đầu ở vị trí vt.
Ví dụ
hinh-anh-bai-12-kieu-xau-4711-1
e) 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 5.
Ví dụ
hinh-anh-bai-12-kieu-xau-4711-2

f) Hàm length(s) cho giá trị là độ dài xâu s.
Ví dụ
hinh-anh-bai-12-kieu-xau-4711-3
g) Hàm pos(s1, s2) cho vị trí xuất hiện đầu tiên của xâu sĩ trong xâu s2.
Ví dụ
hinh-anh-bai-12-kieu-xau-4711-4
h) Hàm upcase(ch) cho chữ cái in hoa ứng với chữ cái trong ch.
Ví dụ
hinh-anh-bai-12-kieu-xau-4711-5


3. Một số ví dụ

Ví dụ l
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 sau .

var
  a, b: string;
begin
  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); 
  readln;
end.

Ví dụ 2
Chương trình dưới đây 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.

var
  x: byte;
  a, b: string;
begin
  write('Nhap xau thu nhat: ');
  readln(a);
  write('Nhap xau thu hai: ');
  readln(b);
  x := length(b); 
  {xac dinh do dai xau b de biet vi tri cua ki tu cuoi cung}
  if a[1] = b[x] then 
    write('Trung nhau')
  else 
    write('Khac nhau');
  readln;
end.

Ví dụ 3
Chương trình sau nhập một xâu vào từ bàn phím và đưa ra màn hình xấu đó nhưng được viết theo thứ tự ngược lại.

var
  i, k: byte;
  a: string;
begin
  write('Nhap xau:');
  readln(a);
  k := length(a); {xac dinh do dai xau} 
  for i := k downto 1 do 
    write(a[i]); 
  readln;
end.

Ví dụ 4
Chương trình sau nhập một xâu 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ỏ các dấu cách nếu có.

var
  i, k: byte;
  a, b: string;
begin
  write('Nhap xau:');
  readln(a);
  k := length(a);
  b := ''; (* Khoi tao xau rong *) 
  for i := 1 to k do
    if a[i] <> ' ' then 
      b := b + a[i]; 
  writeln('Ket qua: ', b); 
  readln;
end.

Ví dụ 5
Chương trình sau 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 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 XuLiXau;
var
  s1, s2: string;
  i: byte;
begin
  write('Nhap vao xau s1: ');
  readln(s1);
  s2 := ''; {Khoi tao xau s2 rong}
  for i := 1 to length(s1) do
    if ('0' <= s1[i]) and (s1[i] <= '9') then 
      s2 := s2 + s1[i];
  writeln('Ket qua: ', s2);
  readln;
end.

Bài tập và thực hành 5

1. Mục đích, yêu cầu

Làm quen với việc tìm kiếm, thay thế và biến đổi xấu .

2. Nội dung

Bài 1. Nhập vào từ bàn phím một xâu. Kiểm tra xâu đó có phải là xâu đối xứng hay không. Xâu đối xứng có tính chất: đọc nó từ phải sang trái cũng thu được kết quả giống như đọc từ trái sang phải (còn được gọi là xâu palindrome).

a) Hãy chạy thử chương trình sau:

var
  i, x: byte;
  a, p: string;
begin
  write('Nhap vao xau: '); 
  readln(a);

  x := length(a); {xac dinh do dai cua xau}
  p := ''; {khoi tao xau rong}

  {tao xau dao nguoc}
  for i := x downto 1 do
    p := p + a[i];

  if a = p then
    write('Xau la palindrome')
  else
    write('Xau khong la palindrome');

  readln;
end.

b) Hãy viết lại chương trình trên, trong đó không dùng biến xấu p.

Bài 2. Viết chương trình nhập từ bàn phím một xâu kí tự S và thông báo ra màn hình số lần xuất hiện của mỗi chữ cái tiếng Anh trong S (không phân biệt chữ hoa hay chữ thường).

Bài 3. Nhập vào từ bàn phím một xâu. Thay thế tất cả các cụm kí tự 'anh' bằng cụm kí tự 'em'.

Tin tức mới


Đánh giá

Bài 12: Kiểu xâu | Tin học | Chương 4: Kiểu dữ liệu có cấu trúc - Lớp 11 - Giáo Dục Việt Nam

Tổng số sao của bài viết là: 5 trong 1 đánh giá
Xếp hạng: 5 / 5 sao

Bình Luận

Để Lại Bình Luận Của Bạn

Tin tức mới

Bộ Sách Lớp 11

Giáo Dục Việt Nam

Bộ Sách Giáo Khoa của Nhà Xuất Bản Giáo Dục Việt Nam

Tài liệu học tập

Đây là tài liệu tham khảo hỗ trợ trong quá trình học tập

Global Success & Bộ Giáo Dục - Đào Tạo

Bộ sách Global Success & Bộ Giáo Dục - Đào Tạo là sự kết hợp giữa ngôn ngữ Tiếng Anh theo lối giảng dạy truyền thống và cập nhật những phương thức quốc tế

Kết Nối Tri Thức Với Cuộc Sống

Sách giáo khoa của nhà xuất bản Kết Nối Tri Thức Với Cuộc Sống

Sách Giáo Dục Việt Nam

Lớp 1

Sách giáo khoa dành cho lớp 1

Lớp 6

Sách giáo khoa dành cho lớp 6

Lớp 5

Sách giáo khoa dành cho lớp 5

Lớp 4

Sách giáo khoa dành cho lớp 4

Lớp 2

Sách giáo khoa dành cho lớp 2

Lớp 3

Sách giáo khoa dành cho lớp 3

Lớp 7

Sách giáo khoa dành cho lớp 7

Lớp 8

Sách giáo khoa dành cho lớp 8

Lớp 9

Sách giáo khoa dành cho lớp 9

Lớp 10

Sách giáo khoa dành cho lớp 10

Lớp 11

Sách giáo khoa dành cho lớp 11

Lớp 12

Sách giáo khoa dành cho lớp 12

Liên Kết Chia Sẻ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.