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. Show Gợi ý làm bài: Đoạn chương trình cài đặt: 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ụ 2Chươ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. Gợi ý làm bài: Đoạn chương trình cài đặt: 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ụ 3Chươ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. Gợi ý làm bài: Đoạn chương trình cài đặt: 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ụ 4Chươ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ó bởi việc loại bỏ các dấu cách. Gợi ý làm bài: Đoạn chương trình cài đặt: 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ụ 5Chươ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. - Một xâu là một dãy các kí tự (trong bảng mã ASCII), có thể coi xâu như một mảng một chiều mà mỗi phần tử là một kí tự. 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 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:
- Biểu thức gồm các toán hạng là biến xâu, biến kí tự hoặc hằng xâu được gọi là biểu thức xâu 1. Khai báo 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] Lưu ý: Độ dài lớn nhất của xâu < 255. Ví dụ var Hoten: string[26];
Khi đó, độ dài lớn nhất của xâu sẽ nhận giá trị mặc định là 255. 2. Các thao tác xử lí xâu
Ví dụ: 'Nghe' + 'An' . Kết quả: Nghe An
Ví dụ: 'Que huong' < 'Que huong toi'.
Ví dụ: 'Ha noi' = 'Ha noi'
Ví dụ: st='abcdef’; thao tác delete (st, 4, 2 ) , cho kết quả 'abcd'
Ví dụ: 1l='PC'; s2= ' IBM486 thao tác insert (s1, s2, 4);chokếtquả 'IBMPC486'
Vi dụ: S='Bai hoc thu 9'; biểu thức copy ( s, 9, 5); cho kết quả 'thu 9'
Vi dụ: s= 'Tin hoc' thì biểu thức length (S) có độ dài là 7.
Ví dụ: s2='abcdef' thì biểu thức pos ('cd', s2) cho kết quả 3.
Ví dụ: 'd' thì biểu thức upcase (ch) cho kết quả ' D'. Lưu ý: - Xâu được tạo thành bởi các kí tự, trong đó có thể có dấu cách. Dấu cách thể hiện trong các văn bản là phần trống ngăn cách giữa hai từ viết liên tiếp. Kí tự này được gõ bằng phím dài nhất trên bàn phím (Space Bar); - Trong chương trình, khi viết một xâu kí tự, ta phải viết xâu đó giữa hai dấu nháy đơn. Nhưng khi nhập từ bàn phím giá trị một xâu, ta chỉ gõ các kí tự thuộc xâu đó (rồi nhấn phím Enter). - Xâu chỉ gồm một dấu cách được viết là ' '. Để viết xâu rỗng ta viết hai dấu nháy đơn liền nhau. - Khi so sánh hai xâu, xâu có độ dài nhỏ hơn có thể là xâu lớn hơn (>), ví dụ: 'Anh'<'Ba' - Khi sử dụng lệnh gán, ta có thể gán trị là một kí tự cho một biến xâu kí tự nhưng việc gán trị là một xâu kí tự cho một biến kiểu kí tự là không hợp lệ dù xâu đó có độ dài bằng i. 3. Một số ví dụ Ví dụ 1: Bài toán so sánh hai xâu: nhập vào 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. Chương trình: Progam vidu1; 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. - Tham số của các hàm và thủ tục chuẩn phải hợp lí, chẳng hạn không thể dùng Insert(sl,s2,I0) khi length(s2)<10. Khi chạy chương trình, nhập họ tên của hai người: Tran Doan Minh và Tran Doan Hien, thì kết quả của chương trình cho như hình 47 dưới đây: Ví dụ 2: Bài toán kiểm tra hai xâu kí tự "Nhập hai xâu kí tự 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ự của xâu thứ hai hay không?” Chương trình. program vidu2 ; var byte; C, 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('Khác nhau'); readln end. Khi chạy chương trình, nhập các xâu vào: nếu kí tự đầu tiên của xâu thứ nhất ' thu do' không trùng với kí tự cuối cùng của xâu thứ hai ' ha noi ' thì chương trình đưa ra thông báo: “Khac nhau”, ngược lại chương trình đưa ra thông báo: “Trung nhau" kquả của chương trình cho như hình 48 dưới đây: Ví dụ 3: Giải toán viết theo thứ tự ngược lại của xâu được nhập vào từ bàn phím. Chương trình procgram vidu3 , 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. Khi chạy chương trình, nhập vào xâu vừa kí tự vừa chữ số, chẳng hạn xâu: 'chào mùa hè 2007" thì kết quả của chương trình là 2007, còn khi nhập vào xâu 'ngay 25 thang 5 nam 2007 ' , kết quả của chương trình là 2552007. |