Khi nhập dữ liệu phải gõ nhiều => Nhận xét và kết luận: Chúng ta có thể dùng mảng một chiều với kiểu phần tử là kiểu char để lưu họ tên của học sinh, tuy nhiên sẽ gặp rất nhiều khó khăn [r]
Trang 1GIÁO ÁN GIẢNG DẠY
I MỤC TIÊU BÀI HỌC:
1 Kiến thức:
Biết được nguyên nhân tại sao sinh ra kiểu sữ liệu xâu
Phân biệt được sự giống và khác giữa kiểu mảng các ký tự với xâu
Biết được cách khai báo biến, nhập xuất dữ liệu, tham chiếu đến từng ký tự của xâu
Biết các phép toán, thủ tục và hàm thông dụng liên quan đến xâu
2 Kĩ năng:
Nhận biết được trường hợp nào cần sử dụng kiểu xâu
Khai báo được biến kiểu xâu trong ngôn ngữ lập trình Pascal
Nhận biết được biến xâu và các phép toán xử lí trên xâu
3 Thái đo
Nhận biết va bước đầu sử dụng được một số hàm và thủ tục để giải một số bài toán liên quan đến
xâu
II PHƯƠNG PHÁP, PHƯƠNG TIỆN DẠY HỌC:
Phương pháp: Giải quyết vấn đề, thuyết trình, diễn giảng, vấn đáp
Phương tiện: Bảng
Chuẩn bị
Giáo viên : Giáo án, sách giáo viên, tài liệu tham khảo
Học sinh: Vở ghi chép, sách giáo khoa.
III TIẾN TRÌNH LÊN LỚP
1 Ổn định tổ chức lớp (1’)
Ổn định trật tự, tạo tâm lý tốt để bắt đầu tiết học
2 Kiểm tra bài cũ (5’)
1 Hãy cho biết mảng một chiều là gì?
2 Em hãy khai báo biến mảng 1 chiều có tên Hoten gồm 30 kí tự?
- Trả lời: 1 Nêu định nghĩa mảng một chiều
2 - Var Hoten : array[1 30] of char;
- Type Mang_ht =array[1 30] of char;
Var Hoten: Mang_ht;
- Nhận xét và cho điểm.( Có thể mời học sinh khác nhận xét)
Trang 2TG HOẠT ĐỘNG CỦA GV HOẠT ĐỘNG CỦA
HS
NỘI DUNG
Hoạt động 1: Nguyên nhân sinh ra kiểu dữ liệu xâu (3’) - Dữ liệu trong các bài toán không
chỉ thuộc kiểu số mà cả kiểu phi
số - dạng kí tự
Cho ví dụ : Viết chương trình
nhập họ tên của 30 học sinh trong
lớp, cho biết tên bạn nào dài nhất
Với các kiểu dữ liệu em đã học,
làm thế nào để lưu trữ họ tên của
học sinh?
Var Hoten: array[1 30] of char;
Hoten
1 2 … 30
Vấn đề đặt ra là khi số lượng phần
tử của mảng bằng 30 kí tự, mà mỗi
lần nhập chỉ được 1 kí tự, thì số
lần nhập là bao nhiêu?
- Có những khó khăn nào gặp
phải?
=> Nhận xét và kết luận: Chúng
ta có thể dùng mảng một chiều với
kiểu phần tử là kiểu char để lưu họ
tên của học sinh, tuy nhiên sẽ gặp
rất nhiều khó khăn khi thao tác
trên mảng đó như: nhập, xuất…
(phải dùng vòng lặp for và phải
Enter nhiều lần khi nhập từ bàn
phím)
- Do vậy, để giải quyết khó khăn
đó, ngôn ngữ lập trình có một kiểu
dữ liệu mới cho phép ta nhập/xuất
dữ liệu cho một dãy kí tự bằng một
lệnh đó là kiểu xâu
Chú ý theo dõi
- Dùng mảng một chiều với kiểu phần
tử là kiểu char
- 30
- Chương trình viết
dài dòng Khi nhập
dữ liệu phải gõ nhiều phím
- Học sinh chú ý
lắng nghe
Trang 3- Vậy xâu là gì? Khai báo ra sao?
Chúng ta sẽ tìm hiểu bài 12 kiểu
Hoạt động 2: Tìm hiểu về kiểu xâu.
5’
3’
Cho một số dãy kí tự ví dụ như:
‘Le Van Anh’; ‘12345’=> khái
niệm
+> Đưa và giải thích về khái niệm
+>Nhắc lại:
Kí tự bao gồm các chữ cái thường
và hoa như a, b, c, , z, A, B, C, ,
Z, các chữ số thập phân 0, 1, 2, , 9
và một số kí tự khác như các phép
toán…
+> Dựa vào khái niệm và các ví
dụ trên, em nào hãy cho cô 1 ví
dụ khác?
- Hỏi: Xâu có bao nhiêu kí tự?
- Hỏi: Xâu chỉ gồm một kí tự trắng
được viết như thế nào? Độ dài xâu
bằng bao nhiêu?
- Hỏi: Xâu rỗng được viết như thế
nào? Độ dài xâu bằng bao nhiêu ?
- Để khai báo biến có kiểu dữ liệu
xâu ta sử dụng tên dành riêng
STRING, tiếp theo là độ dài lớn
nhất của xâu(<=255), được ghi
trong cặp dấu [] Theo cú pháp như
sau:
- Nêu và giải thích về cách khai
báo biến kiểu xâu
* Cho ví dụ:
- Yêu cầu học sinh cho ví dụ?
Hỏi: Khi khai báo không có[n] thì
số lượng kí tự tối đa là bao nhiêu?
- Chú ý theo dõi
- Lấy ví dụ
- Trả lời.
- Kí hiệu của xâu gồm một kí tự trắng
là ‘ ’ Xâu này có độ dài là 1
- Kí hiệu của xâu rỗng là ‘’ Xâu này
có độ dài là 0
- Số kí tự tối đa là 255
1 Khái niệm
- Xâu là một dãy kí tự trong bảng
mã ASCII
Ví dụ: ‘LỚP 11B6’
- Mỗi kí tự được gọi là một phần tử của xâu
- Số lượng kí tự trong xâu được gọi
là độ dài xâu
Ví dụ: Xâu trên có 8 kí tự => Độ dài của xâu trên là 8
Chú ý:
- Xâu kí tự được đặt trong cặp nháy
đơn (‘’)
- Xâu có tối đa 255 kí tự
- Xâu không có kí tự nào được gọi
là xâu rỗng
2 Khai báo Cú pháp:
Var <Tên_biến>: String[độ dài lớn nhất];
Trong đó:
- String: Từ khóa khai báo kiểu xâu.
* Ví dụ:
Var Hoten: String [50];
Var Que_quan: String[60]
Chú ý:
- Trong mô tả xâu có thể bỏ qua
phần khai báo độ dài
Ví dụ:
Que_quan: String;
- Nếu không khai báo độ dài tối đa cho xâu kí tự thì độ dài ngầm định cho xâu là 255
Tham chiếu đến phần tử của xâu:
Có thể xem xâu là mảng 1 chiều
Trang 4- Giới thiệu cấu trúc chung
- Yêu cầu học sinh tìm một ví dụ
- Hỏi: Có gì giống và khác nhau so
với cách tham chiếu đến từng
phần tử của mảng
Hoten[2]=?
Hoten[3]=?
- Giống cấu trúc chung khi tham chiếu tên biến[chỉ số]
‘e’
‘ ’
- Cách tham chiếu tới phần tử của xâu giống kiểu mảng
Tên biến[chỉ số]
Ví dụ:
Hoten:= ‘Le Anh’
Ví dụ: Hoten[5]= ‘n’;
Hoạt động 3: Tìm hiểu các thao tác xử lí xâu.
2’
5’
+>Tìm hiểu chức năng của một số phép
toán trong kiểu xâu qua một số ví dụ
- Phép ghép xâu: Kí hiệu phép cộng
- Sử dụng để ghép nhiều xâu thành một
xâu
- Thực chất phép ghép xâu là viết tiếp
xâu sau dấu cộng vào cuối xâu trước
dấu cộng
- Nếu xâu sau khi ghép có nhiều hơn
255 kí tự => báo lỗi
+> Lấy ví dụ
- So sánh xâu:
- Thực hiện so sánh các cặp kí tự từ trái
sang phải theo quy tắc sau:
- Nêu các qui tắc so sánh
- Nhắc lại các mã thập phân của các kí
tự trong bảng mã ASCII
- A(65) Z(90)
- a(97) z(122)
- ‘0’ (48) ‘9’(57)
- Cho các ví dụ cụ thể và hỏi HS trả lời
Ví dụ:
Chú ý theo dõi 3 Các thao tác xử lí xâu
a Phép ghép xâu:
- Kí hiệu là dấu ( +)
- Ghép nhiều xâu thành một xâu
Ví dụ: ‘Le Van’ + ‘ An’ kết quả:
‘Le Van An’
b Các phép so sánh xâu:
+> Gồm các toán tử: =, <>, <, >,
<=, >=
Qui tắc:
- A> B <=> Kí tự khác nhau đầu tiên của xâu A có mã ASCII lớn hơn
Ví dụ: AC> AB;
- A< B <=> Nếu xâu A là đoạn đầu của xâu B
‘An’< ‘Anh’
- A=B <=> Hai xâu A và B giống nhau hoàn toàn
Ví dụ: ‘Tin hoc’= ‘Tin hoc’;
Trang 510’
‘Lop 11B6’ ? ‘Lop 11B5’
Lan ? Lam
Lưu ý : Một xâu có độ dài nhỏ hơn có
thể lớn hơn (>) xâu có độ dài lớn.
Ví dụ: ‘AC’ < ‘ABC’
Giới thiệu cấu trúc chung của các thủ
tục và lấy ví dụ minh họa.
- Với ví dụ trên sẽ cho ta kết quả như thế
nào?
- Bạn nào cho cô biết, với ví dụ trên sau
khi thực hiện lệnh Insert thì giá trị của
xâu s2 thu được là gì?
Giới thiệu cấu trúc chung của các hàm
và lấy ví dụ minh họa
- Với ví dụ trên sẽ cho ta kết quả như thế
nào?
- Lấy thêm ví dụ cho học sinh thực hiện
So sánh
Chú ý theo dõi, chép bài
‘abef’
‘Truong THPT Phong Dien’
- Chú ý theo dõi và trả lời câu hỏi
c) Các thủ tục:
* Delete(s, vt, n): Xóa n kí tự bắt
đầu từ vị trí vt trong xâu s.
Ví dụ: s:= ‘abcdef’;
Delete(s, 3, 2);
Kết quả: s = ‘abef’
* Insert(s1, s2, vt):
Để chèn xâu s1 vào xâu s2, bắt đầu ở vị trí vt
Ví dụ: s1 := ‘THPT ’ s2 := ‘Truong Phong Dien
Insert(s1, s2, 8);
Kết quả : s2 = ‘Truong THPT Phong Dien
d) Các hàm:
* Copy(S, vt, n):
Để tạo xâu mới gồm n kí tự liên tiếp bắt đầu từ vị trí vt của xâu S
Ví dụ: S := ‘Mon Tin Hoc’
S1 := Copy(S, 5, 3);
Kết quả : S1=‘Tin’
* length(S):
Cho giá trị là độ dài xâu S
Ví dụ : S := ‘Thua Thien Hue’;
N := length(S);
Kết quả : N = 14.
* Pos(s1, s2):
Cho vị trí xuất hiện đầu tiên của xâu s1 trong xâu s2
Ví dụ: s1 := ‘bc’
s2 := ‘abcdef’
Vt := Pos(s1, s2);
Kết quả : Vt = 2.
* upcase(ch):
Cho kí tự in hoa của kí tự thường ch
Ví dụ: ch := ‘a’;
upcase(ch);
Kết quả : ‘A’