Chương 6: Xử lý chuỗi
Chia sẻ bởi Trần Thị Thu Nga |
Ngày 19/03/2024 |
6
Chia sẻ tài liệu: chương 6: Xử lý chuỗi thuộc Công nghệ thông tin
Nội dung tài liệu:
Chương 6: Xử Lý Chuỗi
Nhóm 12:
Thị Đông Hoan Huyền Mai Quý
Thu Nga Thị Thêm
Lớp: Sư Phạm Tin 1
Tóm Tắt:
Học cách đọc báo cáo Read và Readln với các số giá trị. và ký tự
Học cách sử dụng chức năng kết thúc của dòng EOLN để đọc một dòng văn bản từ bàn phím, và chức năng kết thúc tập tin của EOF để đọc một tập tin văn bản.
Học được một số chức năng quan trọng xử lý chuỗi và thủ tục mà có sẵn trong các triển khai hiện đại của Pascal:
CONCAT
COPY
POS
INSERT
DELETE
4. Đọc một dòng văn bản: EOLN
5. Đọc một tập tin của văn bản: EOF
6. Thao tác chuỗi
7. String Chức năng và Thủ tục
1. Thao tác với dữ liệu văn bản:
2.Lời khuyên về báo cáo OUTPUT
3.Lời khuyên về báo cáo INPUT
8.Bài tập
1. Thao tác với dữ liệu văn bản:
Các file INPUT tiêu chuẩn (bàn phím)
Các file OUTPUT tiêu chuẩn (màn hình)
Sử dụng lệnh READ, READLN: cần phải hiểu về báo cáo đầu vào và cách làm việc với các loại dữ liệu khác nhau.
Dữ liệu kiểu số: Readln(biến 1, biến 2,…,biến k);
Dữ liệu kiểu kí tự hay chuỗi: Readln(biến);
Lưu ý: Lệnh READLN cần phải dùng để kiểm tra kết quả của chương trình(Nếu không thì khi chạy chương trình sẽ trở về màn hình soạn thảo văn bản mà không hiển thị KQ).
2.Các loại đầu vào của hỗn hợp: nên sử dụng từng lệnh READLN riêng biệt cho từng loại kiểu dữ liệu khác nhau, làm hạn chế lỗi trong chương trình
3. Dữ liêu nhập phải phù hợp với kiểu dữ liệu của biến
Biến kiểu Logic không nhập đươc từ bàn phím.
2.Lời khuyên về báo cáo INPUT
ví dụ 2.1
PROGRAM cthonhop;
Const
LF = CHR (10);
CR = CHR (13);
VAR
A, B: CHAR;
X, Y: INTEGER;
BEGIN
WRITE (`Enter hai nhân vật:`);
READLN (A, B);
WRITE (`Nhập hai số nguyên:`);
READLN (X, Y);
WRITELN (`đầu vào của bạn đã được giao cho các biến như sau:`, CR,
LF,
`A =`, A, CR, LF,
`B =`, B, CR, LF,
`X =`, X, CR, LF,
`Y =`, Y)
END.
Ví dụ 2:
PROGRAM ReadLnNumbers (INPUT, OUTPUT);
Const
CR = CHR (13);
LF = CHR (10);
VAR
A, C, D, E: INTEGER;
B: REAL;
BEGIN
WRITE (`Nhập A, B, C:`);
{Nếu bạn nhập nhiều hơn ba giá trị, chỉ là người đầu tiên ba sẽ được đọc}
READLN (A, B, C);
{Trả một READLN tiếp theo sẽ bắt đầu đọc các giá trị sau khi Line End-Of-
đánh dấu, bỏ qua bất kỳ thức ăn thừa từ đọc trước}
WRITE (`Nhập D, E:`);
READLN (D, E);
WRITELN (`A =`, A, `, B =`, B: 00:02, `, C =`, C, CR, LF,
`D =`, D `, E =`, E)
END.
3.Lời khuyên về báo cáo OUTPUT
Muốn hiển thị nhiều dòng văn bản hoặc hiển thị kết quả số trên riêng biệt, có thể sử dụng nhiều WRITELN báo cáo là số lượng các dòng cần thiết hoặc là sử dụng mã ASCII 13 và 10.
In tất cả các kết quả sử dụng một WRITE hoặc WRITELN.
Ví dụ 3:
PROGRAM Display1(INPUT,OUTPUT);
CONST
LF = CHR(10);
CR = CHR(13);
VAR
X, Y, Z :INTEGER;
BEGIN
WRITE(‘Nhập ba số nguyên: `);
READLN(X, Y, Z);
WRITELN(‘X=‘,X,CR,LF, `Y=`, Y, CR, LF, `Z=`, Z)
END.
CR(carriage return):phím xuống dòng
LF( line feed): tín hiệu xuống dòng, thể hiện kết quả trên các dòng riêng biệt.
CR + LF cho tác dụng như là ENTER
4. Đọc một dòng văn bản: EOLN
Là một chức năng Boolean dùng để chỉ vị trí cuối dòng trong read của file INPUT.
Chức năng là cho giá trị FALSE cho đến khi cuối cùng của dòng nhãn hiệu phát hiện, sau đó nó sẽ trở thành TRUE.
Nếu đang ở giá trị False có thể sử dụng vòng lặp WHILE NOT EOLN DO(đưa con trỏ về cuối dòng) để trở về giá trị True.
5. Đọc một tập tin của văn bản: EOF
Là một chức năng Boolean, kết thúc tập tin, được sử dụng để phát hiện cuối cùng của tập tin đánh dấu. Khi con trỏ ở phần cuối của tập tin thì giá trị trả về là true, ngược lại là False.
Khi sử dụng bàn phím cho đầu vào phần cuối tập tin sẽ hoàn thành nếu bạn nhấnCtrl + Z (ASCII 26)Chức năng này rất hữu ích để đọc một vài dòng văn bản (một tập tin).
6. Thao tác chuỗi
Ví dụ6:
PROGRAM string1;
Const
LF = CHR (10);
VAR
Tên: STRING [30];
I: INTEGER;
BEGIN
WRITE (`Hãy nhập tên bạn :`);
READLN (Tên);
FOR I: = 1 TO LENGTH (Tên) DO
WRITE (Tên [I], LF);
READLN;
END.
Các thao tác trên chuỗi:
Phép cộng chuỗi
Phép so sánh chuỗi
Vd: ‘tin’ + ‘học’ = ‘tinhọc’
‘thanh’ > ‘thao’ vì ‘n’ > ‘o’
‘thanh’> ‘than’
có thể xây dựng một mảng của kiểu STRING để lưu trữ các mục liên quan như tên hay địa chỉ
có thể sắp xếp tên theo thứ tự bằng cách sử dụng cùng một thuật toán mà bạn đã sử dụng trước để sắp xếp các con số.
7. String Chức năng và Thủ tục
7. String Chức năng và Thủ tục
a/Các hàm:
LENGTH(st): cho biết độ dài của chuỗi kí tự
Ví dụ:
với St:=‘ngochan’ thì Length(St) có giá trị là 7.
ST:=‘’ thì length có giá trị là 0.
POS(S, st): cho ta vị trí đầu tiên của xâu S gặp trong xâu St.
Ví dụ:
Với St:=‘1234545’;S:=’45’ thì
Pos (S,st)cho giá trị bằng 4
Pos(4S,st) cho giá trị bằng 0 vì không tìm thấy
COPY( st, k ,m): coppy m kí tự của chuỗi st từ vị trí k.
Ví dụ:
St:=‘123456789’;St1 là một xâu kí tự khác.
St1:=copy(St,3,2) sẽ cho St1:=’34’
CONCAT( st1, st2…..stn): là hàm ghép nối các xâu kí tự st1,st2,…,stn thành 1 xâu kí tự như xâu đã viết, có thể dùng phép ‘+’ để ghép nối xâu kí tự.
b. Các thủ tục:
DELETE( St,k,m): là thủ tục xóa đi m kí tự từ vị trí k trong xâu St.
Ví dụ:
St:=‘ngochan’;
Sau khi goi delete(St,1,4) thì St;=‘han’
Chú ý:
P+N> length(st) thì St chỉ xóa những kí tự nằm trong length(st)
INSERT(S,St,k): chèn xâu kí tự S vào xâu St từ vị trí k.
St:=‘ngochan’
Insert(12,St,4);
St1:=‘ngoc12han’
Chú ý:
k> length(st) thì S được nối vào cuối của st
STR(x, st):biến đổi giá trị số nguyên (thực)thành một dãy kí tự biểu diễn số và gán cho chuỗi St.
Ví dụ;
Str( 4752, st’) thì St:= ‘4752’;
x=34.95
Str(x:7:3,st) thì St:=‘ 34.950’
Val(St,x,code) là hàm chuyển xây kí tự St sang x giá trị số, code là số ngyên phát hiện lỗi
Ví dụ:
St:=‘123.56’
Val(St,x,k) thì cho x=123.56, code=0
Nếu St:=‘123A’(ko biểu diễn đúng kiểu số thực do có A)
Val (St,x,code) cho x không xác định và code=4
Chú ý: các thủ tục và hàm không được sử dụng đối với file dạng texteek,filePos,fileSize
1. Viết chương trình Pascal để đọc một dòng văn bản từ bàn phím và thay đổi tất cả ký tự chữ thường thành chữ hoa.
Bài tập:
2. Một trong những ứng dụng thú vị của xử lý văn bản được mã hóa và giải mã, một chương trình đơn giản để mã hóa một chuỗi là viết nó về phía sau. Viết chương trình đọc dòng văn bản từ bàn phím và hiển thị nó về phía sau.
3. Viết một chương trình để đọc một dòng văn bản hoặc một tập tin văn bản chuyển từ chữ hoa thành chữ thường và ngược lại.
4.Viết chương trình để mã hóa một chuỗi văn bản mà mỗi kí tự được thay thế bằng kí tự kế tiếp nó. Ngoài ra viết chương trình giải mã chuyển đổi thành các văn bản ban đầu trước khi mã hóa
1.Program BT_1;
Var Ch:string[30]; I:integer; T: boolean;
Begin
Write(‘nhap mot chuoi ki tu:’); Readln(Ch);
For I:=1 to length(Ch) do
Begin
T:=(ORD(Ch[I])>96) AND(ORD(Ch[I])<123);
If T then Ch [I]:=CHR(ORD(Ch[I])-32);
Write(Ch[I]);
End;
Readln;
End.
2. Program bt_2;
Var Ch:string; I:integer;
Begin
Write(‘moi ban nhap mot chuoi va nhan enter:’);
Readln(Ch);
Writeln(‘chuoi duoc dao nguoc la:’);
For I:= length(Ch) down to 1 do
Writeln(Ch[I]);
Readln;
End.
3. Program bt_3;
Var Ch: string[30];I: integer; T,H: boolean;
Begin
Write(‘nhap mot chuoi ki tu:’);
Readln(Ch);
For I:=1 to length(Ch) do
Begin
T:=(ORD(Ch[I])>96) AND(ORD(Ch[I])<132);
H:=(ORD(Ch[I])>65) AND((ORD(Ch[I])<90);
If T then Ch[I]:=CHR(ORD(Ch[I])-32) else if H then Ch[I]:=CHR(ORD(Ch[I])+32);
Write(Ch[I]);
End;
Readln;
End.
4. Program bt_4;
Var Ch: string; I:integer;
Begin
Writeln(‘moi ban nhap va nhan enter:’); Readln(Ch);
For I:=1 to length (Ch) do
Begin
Ch[I]:=SUCC(Ch[I]);
Write(Ch[I]); Readln(Ch[I]);
END;
For I:=1 to length(Ch[I]) do
Begin Ch[I];= PRED(Ch[I]);
Writeln(‘chuoi giai ma la:’ Ch[I]);
End;
Readln;
End.
the end.
thanks for listening
Nhóm 12:
Thị Đông Hoan Huyền Mai Quý
Thu Nga Thị Thêm
Lớp: Sư Phạm Tin 1
Tóm Tắt:
Học cách đọc báo cáo Read và Readln với các số giá trị. và ký tự
Học cách sử dụng chức năng kết thúc của dòng EOLN để đọc một dòng văn bản từ bàn phím, và chức năng kết thúc tập tin của EOF để đọc một tập tin văn bản.
Học được một số chức năng quan trọng xử lý chuỗi và thủ tục mà có sẵn trong các triển khai hiện đại của Pascal:
CONCAT
COPY
POS
INSERT
DELETE
4. Đọc một dòng văn bản: EOLN
5. Đọc một tập tin của văn bản: EOF
6. Thao tác chuỗi
7. String Chức năng và Thủ tục
1. Thao tác với dữ liệu văn bản:
2.Lời khuyên về báo cáo OUTPUT
3.Lời khuyên về báo cáo INPUT
8.Bài tập
1. Thao tác với dữ liệu văn bản:
Các file INPUT tiêu chuẩn (bàn phím)
Các file OUTPUT tiêu chuẩn (màn hình)
Sử dụng lệnh READ, READLN: cần phải hiểu về báo cáo đầu vào và cách làm việc với các loại dữ liệu khác nhau.
Dữ liệu kiểu số: Readln(biến 1, biến 2,…,biến k);
Dữ liệu kiểu kí tự hay chuỗi: Readln(biến);
Lưu ý: Lệnh READLN cần phải dùng để kiểm tra kết quả của chương trình(Nếu không thì khi chạy chương trình sẽ trở về màn hình soạn thảo văn bản mà không hiển thị KQ).
2.Các loại đầu vào của hỗn hợp: nên sử dụng từng lệnh READLN riêng biệt cho từng loại kiểu dữ liệu khác nhau, làm hạn chế lỗi trong chương trình
3. Dữ liêu nhập phải phù hợp với kiểu dữ liệu của biến
Biến kiểu Logic không nhập đươc từ bàn phím.
2.Lời khuyên về báo cáo INPUT
ví dụ 2.1
PROGRAM cthonhop;
Const
LF = CHR (10);
CR = CHR (13);
VAR
A, B: CHAR;
X, Y: INTEGER;
BEGIN
WRITE (`Enter hai nhân vật:`);
READLN (A, B);
WRITE (`Nhập hai số nguyên:`);
READLN (X, Y);
WRITELN (`đầu vào của bạn đã được giao cho các biến như sau:`, CR,
LF,
`A =`, A, CR, LF,
`B =`, B, CR, LF,
`X =`, X, CR, LF,
`Y =`, Y)
END.
Ví dụ 2:
PROGRAM ReadLnNumbers (INPUT, OUTPUT);
Const
CR = CHR (13);
LF = CHR (10);
VAR
A, C, D, E: INTEGER;
B: REAL;
BEGIN
WRITE (`Nhập A, B, C:`);
{Nếu bạn nhập nhiều hơn ba giá trị, chỉ là người đầu tiên ba sẽ được đọc}
READLN (A, B, C);
{Trả một READLN tiếp theo sẽ bắt đầu đọc các giá trị sau khi Line End-Of-
đánh dấu, bỏ qua bất kỳ thức ăn thừa từ đọc trước}
WRITE (`Nhập D, E:`);
READLN (D, E);
WRITELN (`A =`, A, `, B =`, B: 00:02, `, C =`, C, CR, LF,
`D =`, D `, E =`, E)
END.
3.Lời khuyên về báo cáo OUTPUT
Muốn hiển thị nhiều dòng văn bản hoặc hiển thị kết quả số trên riêng biệt, có thể sử dụng nhiều WRITELN báo cáo là số lượng các dòng cần thiết hoặc là sử dụng mã ASCII 13 và 10.
In tất cả các kết quả sử dụng một WRITE hoặc WRITELN.
Ví dụ 3:
PROGRAM Display1(INPUT,OUTPUT);
CONST
LF = CHR(10);
CR = CHR(13);
VAR
X, Y, Z :INTEGER;
BEGIN
WRITE(‘Nhập ba số nguyên: `);
READLN(X, Y, Z);
WRITELN(‘X=‘,X,CR,LF, `Y=`, Y, CR, LF, `Z=`, Z)
END.
CR(carriage return):phím xuống dòng
LF( line feed): tín hiệu xuống dòng, thể hiện kết quả trên các dòng riêng biệt.
CR + LF cho tác dụng như là ENTER
4. Đọc một dòng văn bản: EOLN
Là một chức năng Boolean dùng để chỉ vị trí cuối dòng trong read của file INPUT.
Chức năng là cho giá trị FALSE cho đến khi cuối cùng của dòng nhãn hiệu phát hiện, sau đó nó sẽ trở thành TRUE.
Nếu đang ở giá trị False có thể sử dụng vòng lặp WHILE NOT EOLN DO(đưa con trỏ về cuối dòng) để trở về giá trị True.
5. Đọc một tập tin của văn bản: EOF
Là một chức năng Boolean, kết thúc tập tin, được sử dụng để phát hiện cuối cùng của tập tin đánh dấu. Khi con trỏ ở phần cuối của tập tin thì giá trị trả về là true, ngược lại là False.
Khi sử dụng bàn phím cho đầu vào phần cuối tập tin sẽ hoàn thành nếu bạn nhấnCtrl + Z (ASCII 26)Chức năng này rất hữu ích để đọc một vài dòng văn bản (một tập tin).
6. Thao tác chuỗi
Ví dụ6:
PROGRAM string1;
Const
LF = CHR (10);
VAR
Tên: STRING [30];
I: INTEGER;
BEGIN
WRITE (`Hãy nhập tên bạn :`);
READLN (Tên);
FOR I: = 1 TO LENGTH (Tên) DO
WRITE (Tên [I], LF);
READLN;
END.
Các thao tác trên chuỗi:
Phép cộng chuỗi
Phép so sánh chuỗi
Vd: ‘tin’ + ‘học’ = ‘tinhọc’
‘thanh’ > ‘thao’ vì ‘n’ > ‘o’
‘thanh’> ‘than’
có thể xây dựng một mảng của kiểu STRING để lưu trữ các mục liên quan như tên hay địa chỉ
có thể sắp xếp tên theo thứ tự bằng cách sử dụng cùng một thuật toán mà bạn đã sử dụng trước để sắp xếp các con số.
7. String Chức năng và Thủ tục
7. String Chức năng và Thủ tục
a/Các hàm:
LENGTH(st): cho biết độ dài của chuỗi kí tự
Ví dụ:
với St:=‘ngochan’ thì Length(St) có giá trị là 7.
ST:=‘’ thì length có giá trị là 0.
POS(S, st): cho ta vị trí đầu tiên của xâu S gặp trong xâu St.
Ví dụ:
Với St:=‘1234545’;S:=’45’ thì
Pos (S,st)cho giá trị bằng 4
Pos(4S,st) cho giá trị bằng 0 vì không tìm thấy
COPY( st, k ,m): coppy m kí tự của chuỗi st từ vị trí k.
Ví dụ:
St:=‘123456789’;St1 là một xâu kí tự khác.
St1:=copy(St,3,2) sẽ cho St1:=’34’
CONCAT( st1, st2…..stn): là hàm ghép nối các xâu kí tự st1,st2,…,stn thành 1 xâu kí tự như xâu đã viết, có thể dùng phép ‘+’ để ghép nối xâu kí tự.
b. Các thủ tục:
DELETE( St,k,m): là thủ tục xóa đi m kí tự từ vị trí k trong xâu St.
Ví dụ:
St:=‘ngochan’;
Sau khi goi delete(St,1,4) thì St;=‘han’
Chú ý:
P+N> length(st) thì St chỉ xóa những kí tự nằm trong length(st)
INSERT(S,St,k): chèn xâu kí tự S vào xâu St từ vị trí k.
St:=‘ngochan’
Insert(12,St,4);
St1:=‘ngoc12han’
Chú ý:
k> length(st) thì S được nối vào cuối của st
STR(x, st):biến đổi giá trị số nguyên (thực)thành một dãy kí tự biểu diễn số và gán cho chuỗi St.
Ví dụ;
Str( 4752, st’) thì St:= ‘4752’;
x=34.95
Str(x:7:3,st) thì St:=‘ 34.950’
Val(St,x,code) là hàm chuyển xây kí tự St sang x giá trị số, code là số ngyên phát hiện lỗi
Ví dụ:
St:=‘123.56’
Val(St,x,k) thì cho x=123.56, code=0
Nếu St:=‘123A’(ko biểu diễn đúng kiểu số thực do có A)
Val (St,x,code) cho x không xác định và code=4
Chú ý: các thủ tục và hàm không được sử dụng đối với file dạng texteek,filePos,fileSize
1. Viết chương trình Pascal để đọc một dòng văn bản từ bàn phím và thay đổi tất cả ký tự chữ thường thành chữ hoa.
Bài tập:
2. Một trong những ứng dụng thú vị của xử lý văn bản được mã hóa và giải mã, một chương trình đơn giản để mã hóa một chuỗi là viết nó về phía sau. Viết chương trình đọc dòng văn bản từ bàn phím và hiển thị nó về phía sau.
3. Viết một chương trình để đọc một dòng văn bản hoặc một tập tin văn bản chuyển từ chữ hoa thành chữ thường và ngược lại.
4.Viết chương trình để mã hóa một chuỗi văn bản mà mỗi kí tự được thay thế bằng kí tự kế tiếp nó. Ngoài ra viết chương trình giải mã chuyển đổi thành các văn bản ban đầu trước khi mã hóa
1.Program BT_1;
Var Ch:string[30]; I:integer; T: boolean;
Begin
Write(‘nhap mot chuoi ki tu:’); Readln(Ch);
For I:=1 to length(Ch) do
Begin
T:=(ORD(Ch[I])>96) AND(ORD(Ch[I])<123);
If T then Ch [I]:=CHR(ORD(Ch[I])-32);
Write(Ch[I]);
End;
Readln;
End.
2. Program bt_2;
Var Ch:string; I:integer;
Begin
Write(‘moi ban nhap mot chuoi va nhan enter:’);
Readln(Ch);
Writeln(‘chuoi duoc dao nguoc la:’);
For I:= length(Ch) down to 1 do
Writeln(Ch[I]);
Readln;
End.
3. Program bt_3;
Var Ch: string[30];I: integer; T,H: boolean;
Begin
Write(‘nhap mot chuoi ki tu:’);
Readln(Ch);
For I:=1 to length(Ch) do
Begin
T:=(ORD(Ch[I])>96) AND(ORD(Ch[I])<132);
H:=(ORD(Ch[I])>65) AND((ORD(Ch[I])<90);
If T then Ch[I]:=CHR(ORD(Ch[I])-32) else if H then Ch[I]:=CHR(ORD(Ch[I])+32);
Write(Ch[I]);
End;
Readln;
End.
4. Program bt_4;
Var Ch: string; I:integer;
Begin
Writeln(‘moi ban nhap va nhan enter:’); Readln(Ch);
For I:=1 to length (Ch) do
Begin
Ch[I]:=SUCC(Ch[I]);
Write(Ch[I]); Readln(Ch[I]);
END;
For I:=1 to length(Ch[I]) do
Begin Ch[I];= PRED(Ch[I]);
Writeln(‘chuoi giai ma la:’ Ch[I]);
End;
Readln;
End.
the end.
thanks for listening
* 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ẻ: Trần Thị Thu Nga
Dung lượng: |
Lượt tài: 0
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)