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
Ngà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 Hoạt động của học sinh Hoạt động của giáo viên - 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 :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: [chỉ số] VD: ‘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 (); Readln (); *Viết ra giá trị của xâu: Write (); Writeln (); 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. - 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 Output: Xâu S sau khi loại bỏ dấu cách Khai báo S: Kiểu string - 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. - 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? - 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) Trong khi Pos (‘ ’, S)0 thì xóa một kí tự ở 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.
Tài liệu đính kèm: