Bài 12. Kiểu xâu
Chia sẻ bởi Ngô Ngọc Thủy |
Ngày 10/05/2019 |
53
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:
Xét bài toán
“Viết chương trình nhập và in ra màn hình họ tên của một học sinh trong lớp.”
Với yêu cầu của bài toán như trên Ta sẽ chọn kiểu dữ liệu như thế nào?
Khai báo biến ra sao?
Khai báo một biến mảng A để lưu họ tên
Kiểu mảng chứa các kí tự ghép lại
?
Giải quyết bài toán trên ta gặp phải khó khăn gì?
Khó khăn khi nhập dữ liệu
Kiểu dữ liệu xâu
Chương trình được viết dài dòng.
“Viết chương trình nhập và in ra màn hình họ tên của 50 học sinh trong lớp.”
KIỂU XÂU
Chương IV - Bài 12
‘Ha Noi’
‘Binh Thuan’
‘Lop 11A4’
‘Tp Ho Chi Minh’
Các xâu kí tự
Khái niệm
Xâu là một 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 là xâu rỗng
Có thể xem xâu là mảng một chiều mà mỗi phần tử là một kí tự.
Ví dụ
1 2 3 4 5 6 7
Trong đó:
? Tên xâu: A;
? Mỗi kí tự gọi là một phần tử của xâu;
? Độ dài của xâu (số kí tự trong xâu): 7;
A
Khai báo một biến xâu như thế nào?
Ví dụ
Var
Ten : string[10] ;
Ho_dem : string[20];
Que : string;
Tên biến xâu
Khai báo biến xâu
var: string[Độ dài lớn nhất của xâu];
(không vượt quá 255)
Chú ý
Khi 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 đó độ dài lớn nhất của xâu sẽ nhận giá trị ngầm định là 255.
Ví dụ
Tensach : string;
Ten_tacgia : string[50];
Nhaxuatban : string[30];
Var
Hằng xâu kí tự được đặt trong cặp nháy đơn ‘’
‘BinhThuan’
‘Ha Noi’
Dấu cách
‘ ’
‘’
Xâu rỗng (Độ dài bằng 0)
Xâu gồm một dấu cách
Xâu có 9 kí tự
Xâu có 6 kí tự
Nhập/xuất dữ liệu cho biến xâu
Read(tên_biến_xâu);
Read(ten);
Write(tên_biến_xâu);
Write(‘Ten’, ten);
Khi viết lệnh nhập/xuất cho biến xâu, có gì khác so với biến mảng các kí tự ?
Viết một lệnh nhập nguyên cho cả xâu.
Câu lệnh và chương trình được viết gọn hơn.
Lệnh gán
Tên_Biến_Xâu := Hằng_Xâu;
Ví dụ
st := ‘H’;
ten :=‘Bao Duy’;
Gán trị là một kí tự cho một biến xâu kí tự.
Chú ý
a := st;
Kiểu char
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 1).
Tham chiếu tới phần tử của xâu
[chỉ số]
Ví dụ
ten := ‘Bao Duy’;
ten[5] là kí tự ‘D’
Chỉ số phần tử trong xâu thường bắt đầu từ 1
Giống
mảng
St : = ‘abcdefgh’;
St[3] là kí tự ‘c’
ten
1 2 3 4 5 6 7
D
Củng cố
Var st: string[1];
c : char;
Begin
c := st[1]; {1}
c := st; {2}
End.
Trong hai câu lệnh trên, câu lệnh nào đúng?
Không thể gán một xâu cho một biến kiểu kí tự.
Các phép toán trên kiểu dữ liệu chuẩn
Phép toán số học
Phép toán quan hệ
Phép toán logic
Xâu kí tự có những phép toán nào???
Các phép toán xử lí xâu
Ví dụ
Var st : string;
Begin
st := ‘Ha’ + ‘Noi’;
write(st);
Readln
End.
HaNoi
Phép ghép xâu
Phép ghép xâu
Kí hiệu là
dấu cộng
( + )
Sử dụng
để ghép
nhiều xâu
thành một
xâu
St := ‘TP ’ + ‘Ho Chi Minh’;
‘TP Ho Chi Minh’
Ten := ‘Diem’ + ‘ Hương’;
‘Diem Huong’
Theo bạn xâu ‘Ha Tay’ và ‘Ha Tinh’ xâu nào lớn hơn?
Các phép so sánh
Có thứ tự ưu tiên thực hiện thấp hơn phép ghép xâu.
Thực hiện việc so sánh hai xâu.
Quy tắc so sánh hai xâu
So sánh
theo
thứ tự
từ điển
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 như chúng giống nhau hoàn toàn.
‘AC’ > ‘ABC’
‘AB’ < ‘ABC’
‘AB’ = ‘AB’
Ví dụ
Var flag : boolean;
Begin
Flag := ‘AB’ < ‘AC’;
Write(flag);
Readln
End.
TRUE
‘AB’ < ‘ABC’
‘AC’ < ‘ABC’
‘AD’ > ‘ADEGF’
TRUE
FALSE
FALSE
Một xâu có độ dài nhỏ hơn có thể lớn hơn ( > ) xâu có độ dài lớn hơn.
<
‘Ha Tay’
‘Ha Tinh’
Xét ví dụ sau:
Có xâu kí tự: ‘NguyEn vaN A ’
Để đưa xâu về dạng ‘Nguyen Van A’ cần thực hiện những thao tác gì?
Xóa bớt một số dấu cách
Chuyển chữ hoa thành chữ thường và ngược lại.
Một số hàm và thủ tục chuẩn
length(st)
Cho giá trị là số lượng kí tự của xâu st
st : = ‘May Vi Tinh’;
length(st) = 11
st := ‘10 ki tu’;
length(st) = 8
Hàm
Delete(st, vt, n)
Xóa n kí tự của xâu st bắt đầu từ vị trí vt
X : = ‘Mon tin hoc’;
Delete(X, 4, 4);
Giá trị của X
Mon hoc
St : = ‘Tp Ho Chi Minh’;
Delete(St, 1, 3);
Giá trị của St
‘Ho Chi Minh’
Thủ tục
Ví dụ
“Viết chương trình nhập vào hai xâu kí tự 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.”
Hai xâu kí tự bất kì
Một xâu kí tự có độ dài lớn hơn hoặc một xâu kí tự nhập sau(nếu hai xâu kí tự có độ dài bằng nhau)
Các nhiệm vụ chính khi giải quyết bài toán này ?
Kiểm tra độ dài của hai xâu kí tự
Trong bài toán này, ta cần sử dụng hàm, thủ tục nào
Hàm length()
If length(s1) > length(s2) then
Write(s1)
else
Write(s2);
Readln
End.
Độ dài tối đa được phép của xâu s1 và s2 là bao nhiêu? Độ dài thực sự của xâu s1, s2?
Các bước
Thể hiện bằng Pascal
Khai báo biến xâu
Nhập xâu
Xử lí xâu
Var s1, s2 : string;
Begin
Write(‘Nhap xau ki tu thu nhat: ’);
Readln(s1);
Write(‘Nhap xau ki tu thu hai: ’);
Readln(s2);
Củng cố
var: string[Độ dài lớn nhất của xâu];
Nhập/ xuất giá trị cho biến xâu
read/ readln();
write/ writeln();
Tham chiếu tới phần tử của xâu:
[chỉ số]
Khai báo biến xâu
“Viết chương trình nhập và in ra màn hình họ tên của một học sinh trong lớp.”
Với yêu cầu của bài toán như trên Ta sẽ chọn kiểu dữ liệu như thế nào?
Khai báo biến ra sao?
Khai báo một biến mảng A để lưu họ tên
Kiểu mảng chứa các kí tự ghép lại
?
Giải quyết bài toán trên ta gặp phải khó khăn gì?
Khó khăn khi nhập dữ liệu
Kiểu dữ liệu xâu
Chương trình được viết dài dòng.
“Viết chương trình nhập và in ra màn hình họ tên của 50 học sinh trong lớp.”
KIỂU XÂU
Chương IV - Bài 12
‘Ha Noi’
‘Binh Thuan’
‘Lop 11A4’
‘Tp Ho Chi Minh’
Các xâu kí tự
Khái niệm
Xâu là một 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 là xâu rỗng
Có thể xem xâu là mảng một chiều mà mỗi phần tử là một kí tự.
Ví dụ
1 2 3 4 5 6 7
Trong đó:
? Tên xâu: A;
? Mỗi kí tự gọi là một phần tử của xâu;
? Độ dài của xâu (số kí tự trong xâu): 7;
A
Khai báo một biến xâu như thế nào?
Ví dụ
Var
Ten : string[10] ;
Ho_dem : string[20];
Que : string;
Tên biến xâu
Khai báo biến xâu
var
(không vượt quá 255)
Chú ý
Khi 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 đó độ dài lớn nhất của xâu sẽ nhận giá trị ngầm định là 255.
Ví dụ
Tensach : string;
Ten_tacgia : string[50];
Nhaxuatban : string[30];
Var
Hằng xâu kí tự được đặt trong cặp nháy đơn ‘’
‘BinhThuan’
‘Ha Noi’
Dấu cách
‘ ’
‘’
Xâu rỗng (Độ dài bằng 0)
Xâu gồm một dấu cách
Xâu có 9 kí tự
Xâu có 6 kí tự
Nhập/xuất dữ liệu cho biến xâu
Read(tên_biến_xâu);
Read(ten);
Write(tên_biến_xâu);
Write(‘Ten’, ten);
Khi viết lệnh nhập/xuất cho biến xâu, có gì khác so với biến mảng các kí tự ?
Viết một lệnh nhập nguyên cho cả xâu.
Câu lệnh và chương trình được viết gọn hơn.
Lệnh gán
Tên_Biến_Xâu := Hằng_Xâu;
Ví dụ
st := ‘H’;
ten :=‘Bao Duy’;
Gán trị là một kí tự cho một biến xâu kí tự.
Chú ý
a := st;
Kiểu char
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 1).
Tham chiếu tới phần tử của xâu
Ví dụ
ten := ‘Bao Duy’;
ten[5] là kí tự ‘D’
Chỉ số phần tử trong xâu thường bắt đầu từ 1
Giống
mảng
St : = ‘abcdefgh’;
St[3] là kí tự ‘c’
ten
1 2 3 4 5 6 7
D
Củng cố
Var st: string[1];
c : char;
Begin
c := st[1]; {1}
c := st; {2}
End.
Trong hai câu lệnh trên, câu lệnh nào đúng?
Không thể gán một xâu cho một biến kiểu kí tự.
Các phép toán trên kiểu dữ liệu chuẩn
Phép toán số học
Phép toán quan hệ
Phép toán logic
Xâu kí tự có những phép toán nào???
Các phép toán xử lí xâu
Ví dụ
Var st : string;
Begin
st := ‘Ha’ + ‘Noi’;
write(st);
Readln
End.
HaNoi
Phép ghép xâu
Phép ghép xâu
Kí hiệu là
dấu cộng
( + )
Sử dụng
để ghép
nhiều xâu
thành một
xâu
St := ‘TP ’ + ‘Ho Chi Minh’;
‘TP Ho Chi Minh’
Ten := ‘Diem’ + ‘ Hương’;
‘Diem Huong’
Theo bạn xâu ‘Ha Tay’ và ‘Ha Tinh’ xâu nào lớn hơn?
Các phép so sánh
Có thứ tự ưu tiên thực hiện thấp hơn phép ghép xâu.
Thực hiện việc so sánh hai xâu.
Quy tắc so sánh hai xâu
So sánh
theo
thứ tự
từ điển
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 như chúng giống nhau hoàn toàn.
‘AC’ > ‘ABC’
‘AB’ < ‘ABC’
‘AB’ = ‘AB’
Ví dụ
Var flag : boolean;
Begin
Flag := ‘AB’ < ‘AC’;
Write(flag);
Readln
End.
TRUE
‘AB’ < ‘ABC’
‘AC’ < ‘ABC’
‘AD’ > ‘ADEGF’
TRUE
FALSE
FALSE
Một xâu có độ dài nhỏ hơn có thể lớn hơn ( > ) xâu có độ dài lớn hơn.
<
‘Ha Tay’
‘Ha Tinh’
Xét ví dụ sau:
Có xâu kí tự: ‘NguyEn vaN A ’
Để đưa xâu về dạng ‘Nguyen Van A’ cần thực hiện những thao tác gì?
Xóa bớt một số dấu cách
Chuyển chữ hoa thành chữ thường và ngược lại.
Một số hàm và thủ tục chuẩn
length(st)
Cho giá trị là số lượng kí tự của xâu st
st : = ‘May Vi Tinh’;
length(st) = 11
st := ‘10 ki tu’;
length(st) = 8
Hàm
Delete(st, vt, n)
Xóa n kí tự của xâu st bắt đầu từ vị trí vt
X : = ‘Mon tin hoc’;
Delete(X, 4, 4);
Giá trị của X
Mon hoc
St : = ‘Tp Ho Chi Minh’;
Delete(St, 1, 3);
Giá trị của St
‘Ho Chi Minh’
Thủ tục
Ví dụ
“Viết chương trình nhập vào hai xâu kí tự 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.”
Hai xâu kí tự bất kì
Một xâu kí tự có độ dài lớn hơn hoặc một xâu kí tự nhập sau(nếu hai xâu kí tự có độ dài bằng nhau)
Các nhiệm vụ chính khi giải quyết bài toán này ?
Kiểm tra độ dài của hai xâu kí tự
Trong bài toán này, ta cần sử dụng hàm, thủ tục nào
Hàm length()
If length(s1) > length(s2) then
Write(s1)
else
Write(s2);
Readln
End.
Độ dài tối đa được phép của xâu s1 và s2 là bao nhiêu? Độ dài thực sự của xâu s1, s2?
Các bước
Thể hiện bằng Pascal
Khai báo biến xâu
Nhập xâu
Xử lí xâu
Var s1, s2 : string;
Begin
Write(‘Nhap xau ki tu thu nhat: ’);
Readln(s1);
Write(‘Nhap xau ki tu thu hai: ’);
Readln(s2);
Củng cố
var
Nhập/ xuất giá trị cho biến xâu
read/ readln();
write/ writeln();
Tham chiếu tới phần tử của xâu:
Khai báo biến xâu
* 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ẻ: Ngô Ngọc Thủy
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)