- Trong Pascal, để thực hiện ghép nhiều xâu thành một xâu sử dụng dấu + - GV: Kết quả của ví dụ trên là gì?. - Trong danh sách học sinh của lớp chúng ta, các tên được sắp xếp theo trật t[r]
Trang 1Ngày soạn 23 tháng 11 năm 2009
Tiết 27 - 28:
Bài 12: Kiểu xâu
I Mục tiêu
1 Kiến thức
- Biết xâu là một dãy kí tự
- Biết cách khai báo xâu, truy cập phần tử của xâu
- Nắm vững cú pháp và ý nghĩa của các thủ tục và hàm với xâu
2 Kỹ năng
- Cài đặt được một số chương trình đơn giản có sử dụng xâu
- Ứng dụng các thao tác, thủ tục và hàm vào các ví dụ đơn giản
3 Thái độ
- Nghiêm túc, chú ý nghe giảng
II Chuẩn bị
- SGK, Giáo án
III Tiến trình dạy học
1 Ổn định lớp
2 Kiểm tra bài cũ
3 Bài mới
- Kiểu dữ liệu chuẩn: Nguyên, thực, kí tự và logic
Tiết 27: Kiểu xâu (Tiết 1)
1 Khái niệm kiểu xâu trong NNLT Pascal
- Là dãy kí tự trong bảng mã ASCII, một kí tự
mỗi phần tử, được đặt trong hai dấu nháy đơn
VD: ‘Tin hoc’
‘Nguyen Van Ti’
- Độ dài xâu: Số lượng kí tự trong xâu đó
- Xâu rỗng: ‘’ (hai dấu nháy đơn liên tiếp)
2 Khai báo biến kiểu xâu trong Pascal:
Cp: Var <tên biến>:String[n];
Trong đó:
String: Tên chuẩn
n: Độ dài lớn nhất của xâu (<=255)
Vd:
Var hoten: string [7];
Với khai báo này:
- hoten là biến kiểu xâu
- Độ dài tối đa của xâu là 7
* Cách tham chiếu tới từng phần tử của xâu:
<tên biến xâu>[chỉ số]
- Những kiểu dữ liệu đã học là gì ?
Hoạt động 1: Tìm hiểu khái niệm xâu trong NNLT Pascal.
- Nêu khái niệm
- Hãy nêu ví dụ một vài xâu bất kỳ
- Yêu cầu học sinh xác định độ dài xâu trong ví
dụ trên
- Pascal cung cấp cho chúng ta các quy tắc, cách thức để xác định: Tên kiểu xâu, cách khai báo biến xâu, độ dài xâu, các phép toán thao tác với xâu và cách tham chiếu tới từng phần tử cuả xâu
Hoạt động 2: Giới thiệu cách khai báo biến xâu trong NNLT Pascal.
- Trong trường hợp không khai báo độ dài của xâu thì mặc định n = 255
- Hãy khai báo một biến kiểu xâu?
- Với khai báo này ta xác định được gì?
- Các kí tự trong xâu được đánh số thứ tự bắt đầu từ 1
Trang 2VD: ‘Le dung’ thì:
hoten[1]= ‘l’; hoten[2]= ‘e’; hoten[5]=?;
3 Thao tác với xâu trong Pascal:
a Nhập giá trị, viết ra giá trị biến kiểu xâu:
*Nhập giá trị cho xâu:
Read (<tên biến xâu>);
Readln (<tên biến xâu>);
*Viết ra giá trị của xâu:
Write (<tên biến xâu>);
Writeln (<tên biến xâu>);
VD: Viết chương trình nhập vào 2 xâu và in ra
màn hình giá trị 2 xâu đó
- Lên bảng viết chương trình
b Phép ghép xâu:
- Kí hiệu: Dấu cộng +
- Ghép nhiều xâu thành một xâu
Vd: ‘Tin’+ ‘hoc’ Kết quả: ‘Tinhoc’
c Phép so sánh xâu:
- Các phép so sánh: =,<>,<,>,<=,>=
- Quy tắc so sánh:
a=b nếu chúng hoàn toàn giống nhau
a < b nếu độ dài của b lớn hơn và a là đoạn
đầu của b
a > b nếu 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
Vd: ‘abcd’>’aBcd’
‘Tin hoc’ < ‘Tinhoc’
Bài tập: Viết CT nhập vào họ đệm và tên của học
sinh In ra màn hình họvà tên của học sinh đó
- H/S: Lên bảng làm
d Hàm LENGTH (s):
Trong đó: s: Kiểu xâu
- Cho giá trị nguyên là độ dài thực sự của xâu
vd: s:= ‘TIN HOC’
n:=Length (s) n=7
- Cần so sánh tên của các học sinh với nhau
e Hàm COPY (S, m, n):
Trong đó: S: Kiểu xâu
m, n: Kiểu nguyên
- Lấy xâu con trong xâu S bắt đầu từ vị trí m gồm
n ký tự liên tiếp
vd: S:= ‘MON TIN HOC’
Copy (S, 5, 7)= ‘TIN HỌC’
Copy (S, 15, 5) = ‘’
f Hàm POS (S1, S2):
- Cho giá trị nguyên là vị trí xuất hiện đầu tiên
của xâu S1 trong xâu S2
- Cách tham chiếu tới từng phần tử của xâu tương tự như với mảng một chiều Yêu cầu HS nhắc lại
- hoten[5] là bao nhiêu?
Hoạt động 3: Tìm hiểu các thao tác với xâu
- Đối với dữ liệu chuẩn, sử dụng thủ tục nào để nhập giá trị?
- Input, output của bài toán là gì?
- Gọi học sinh nhận xét bài của bạn
- Sửa lại bài của học sinh Nhận xét
- Trong Pascal, để thực hiện ghép nhiều xâu thành một xâu sử dụng dấu +
- GV: Kết quả của ví dụ trên là gì?
- Trong danh sách học sinh của lớp chúng ta, các tên được sắp xếp theo trật tự A, B, C, …Để sắp xếp thì phải có thao tác so sánh
- Có những phép so sánh nào?
- Hãy so sánh các xâu kí tự sau đây?
- Xác định input, output của bài toán?
- GV: Nhận xét
- Để biết được độ dài thực sự của xâu, Pascal sử dụng hàm Length
- Với ví dụ sau, hãy cho biết kết quả của hàm Length (s) là bao nhiêu?
- Với danh sách học sinh được sắp xếp theo thứ
tự Để thực hiện công việc này?
- Với ví dụ như trên, hãy cho biết giá trị của hàm bằng bao nhiêu?
Trang 3- Nếu xâu S1 không có trong xâu S2 thì cho kết
quả là 0
Vd:
S1:= ‘HOC’
S2:= ‘MON TIN HOC’
Pos (‘ ’, S2) = 4
Với S1:= ‘HOA’
thì Pos (S1, S2) = 0
g Hàm UPCASE (Ch):
- Cho chữ cái in hoa tương ứng với chữ cái Ch
Trong đó Ch: kiểu kí tự
Ch:= ‘a’
Upcase(Ch) = 'A'
h Thủ tục DELETE (S, m, n):
Trong đó: S: Kiểu xâu
m, n: Kiểu nguyên
- Xoá trong xâu S bắt đầu từ vị trí m, n ký tự liên
tiếp
vd: S:= ‘MON TIN HOC’
Delete (S, 4, 4)
Kết quả:
Giá trị của s là ‘MON HOC’
k Thủ tục INSERT (S1, S2, m):
Trong đó: S1, S2: Kiểu xâu
m: Kiểu nguyên
- Chèn xâu S1 vào xâu S2 bắt đầu từ vị trí m
vd: S1:= ‘TIN’
S2:= ‘MON HOC’
Insert (S1, S2, 4)
Kết quả: Giá trị của s2 là
‘MONTIN HOC’
Insert (S1, S2, 24)
Kết quả: Giá trị của s2 là
‘MONTIN HOC’
4 Một số ví dụ
Ví dụ 1:
Viết chương trình nhập từ bàn phím xâu kí tự S
In ra màn hình xâu đó sau khi được biến đổi
thành xâu in hoa
• Input: Xâu S
• Output: Xâu S đã được biến đổi thành xâu
in hoa
• Khai báo: S: Kiểu string;
i: Kiểu byte;
Ví dụ 2:
Viết chương trình nhập từ bàn phím xâu kí tự S
In ra màn hình xâu thu được từ nó bởi việc loại
bỏ các dấu cách nếu có
• Input: Xâu S
- Ví dụ sau khi dùng các hàm sau thì cho kết quả là gì?
- Upcase (S) với S là biến xâu là không hợp lệ
- Ví dụ với một xâu mà giữa 2 từ có nhiều dấu cách thì xấu vậy thì phải làm sao?
- Kết quả của thủ tục này là gì?
- Trong trường hợp viết tên thiếu thì phải làm gì?
* Chú ý: Với giá trị m lớn hơn độ dài xâu thì
thủ tục Insert luôn cho giá trị chính là xâu đó
- Kết quả là gì?
- Hãy xác định các giá trị của bài toán
- Trình chiếu chương trình trên Pascal
- Kiểm tra sự tồn tại của dấu cách trong xâu S,
sủ dụng hàm nào?
Pos (‘ ’, S)
a Trong khi Pos (‘ ’, S)<>0 thì xóa một kí tự
Trang 4• Output: Xõu S sau khi loại bỏ dấu cỏch
• Khai bỏo S: Kiểu string
ở vị trớ pos (‘ ’, S) Sử dụng thủ tục gỡ?
Delete (S, pos (‘ ’,S), 1)
- GV: Chiếu chương trỡnh
IV Đánh giá cuối bài
1.- Khai báo biến: VAR tên_biến: 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 đến từng kí tự trong xâu: tên_biến[chỉ số]
- Phép ghép xâu: Kí hiệu là: +, Được sử dụng để ghép nhiều xâu thành một xâu
- Các phép so sánh: =, <>, >, <, <=, >=: thực hiện việc so sánh hai xâu
2 Những hàm và thủ tục liên quan đến xâu
3 Câu hỏi và bài tập về nhà
- Giải bài tập số 10 trang 80
- Viết chương trình nhập một xâu In ra màn hình sỗ từ có trong xâu
- Xem phần nội dung của bài thực hành số 5, sách giáo khoa, trang 73
- Chuẩn bị một số bài tập để thực hành