Nguyễn Hoàng Anh – Khoa Tin học – Đại học Sư phạm Huế Giáo án thực tập số 3 Người soạn: Nguyễn Hoàng Anh Ngày soạn: 10/03/2010 Ngày giảng: 13/03/2010 Tổ bộ môn: Toán – Tin Lớp: 11B1 Phòng: 7 Giáo án: KIỂU XÂU (Tiết 2) I. MỤC ĐÍCH, YÊU CẦU 1. Về kiến thức Biết cách khai báo xâu, tham chiếu đến phần tử của xâu. Biết cách phân tích bài toán, tìm thủ tục hoặc hàm thích hợp để giải quyết các bài toán đã cho. 2. Về kỹ năng Sử dụng được một số thủ tục, hàm thông dụng về xâu để giải quyết một số bài toán đơn giản về xâu. Viết được một số chương trình đơn giản có sử dụng biến xâu. 3. Về thái độ Có thái độ ham học hỏi, có tính kỷ luật trong giờ học. Biết sử dụng máy tính hiệu quả trong học tập và đời sống hàng ngày. Biết giúp đỡ nhau trong học tập và cuộc sống. II. DỰ KIẾN PHƯƠNG PHÁP Thuyết trình, diễn giảng, vấn đáp gợi mở thông qua các hoạt động. Sử dụng phương tiện trực quan (máy tính, máy chiếu – nếu có điều kiện). III. TỔ CHỨC DẠY HỌC VÀ THIẾT BỊ DẠY HỌC 1. Chuẩn bị của giáo viên Giáo án lên lớp, sách giáo khoa, sách giáo viên. Nếu có điều kiện, chuẩn bị giáo án điện tử và máy chiếu hoặc cho học sinh học tại phòng máy. 2. Chuẩn bị của học sinh Học bài cũ trước lúc đến lớp. Chuẩn bị bài trước lúc đến lớp dựa vào sách giáo khoa. Chuẩn bị một số câu hỏi thảo luận. IV. CÁC BƯỚC LÊN LỚP 1. Ổn định tổ chức (2 phút) Sĩ số: Có mặt: Vắng mặt: Ổ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-8 phút) Câu hỏi: “Hãy viết chương trình nhập vào hai xâu họ và tên, sau đó in ra màn hình họ tên đầy đủ”. Trả lời: var ho, ten: string[7]; ht: string[40]; Kiểu xâu (tiết 2) Trang 1 Nguyễn Hoàng Anh – Khoa Tin học – Đại học Sư phạm Huế Giáo án thực tập số 3 Begin; write(‘Nhap ho: ‘); readln(ho); write(‘Nhap ten: ‘); readln(ten); ht:=ho+’ ‘+ten; write(‘Ho ten day du: ‘,ht); readln End. 3. Nội dung bài mới Hoạt động 1: Ví dụ 1. (8 phút) Thời gian Hoạt động của Giáo viên Hoạt động của Học sinh 8 phút Ví dụ 1 Chương trình sau nhập họ tên hai người vào hai biến xâu 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. var a, b: string; Begin write(‘Nhap ho ten nguoi thu nhat: ‘); readln(a); write(‘Nhap ho ten nguoi thu hai: ‘); readln(b); if length(a)>length(b) then write(a) else write(b); readln End. Giáo viên đưa ra gợi ý về hàm hoặc thủ tục sẽ sử dụng để thực hiện so sánh hai xâu. Nâng cao: so sánh hai xâu. Lời giải gợi ý: var a, b: string; i, k: byte; Begin write('Nhap xau thu nhat: ');readln(a); write('Nhap xau thu hai: '); readln(b); if a=b then write('Hai xau bang nhau.') else begin if length(a) < length(b) then k:=length(a) else k:=length(b); i:=1; while (i<=k) and (a[i]=b[i]) do i:=i+1; if a[i] < b[i] then write('Xau thu nhat be hon.') else write('Xau thu hai be hon.'); end; readln End. Trả lời về hàm sẽ sử dụng để giải bài toán. Viết chương trình. Góp ý để hoàn thiện chương trình. Tìm kiếm lời giải cho bài toán tìm xâu bé hơn. Hoạt động 2: Ví dụ 2. (5 phút) Thời Hoạt động của Giáo viên Hoạt động của Kiểu xâu (tiết 2) Trang 2 Nguyễn Hoàng Anh – Khoa Tin học – Đại học Sư phạm Huế Giáo án thực tập số 3 gian Học sinh 5 phút Ví dụ 2 Chương trình sau nhập hai xâu từ bàn phím và kiểm tra kí tự đầu tiên của xâu thứ nhất có trùng với kí tự cuối cùng của xâu thứ hai không. var a, b: string; x: byte; Begin write(‘Nhap xau thu nhat: ‘); readln(a); write(‘Nhap xau thu hai: ‘); readln(b); x:=length(b); if a[1]=b[x] then write(‘Trung nhau’) else write(‘Khac nhau’); readln End. Giáo viên đưa ra gợi ý về hàm hoặc thủ tục sẽ sử dụng để thực hiện so sánh. Hỏi: Có cần sử dụng biến x để lấy độ dài của xâu b không? Nếu không thì cần chỉnh sửa lại chương trình ở những điểm nào? Trả lời về hàm sẽ sử dụng để giải bài toán. Viết chương trình. Góp ý để hoàn thiện chương trình. Hoạt động 3: Ví dụ 3. (6 phút) Thời gian Hoạt động của Giáo viên Hoạt động của Học sinh 6 phút Ví dụ 3 Chương trình sau nhập một xâu vào từ bàn phím và đưa ra màn hình xâu đó nhưng theo thứ tự ngược lại. var a: string; i, k: byte; Begin write(‘Nhap xau: ‘); readln(a); k:=length(a); for i:=k downto 1 do write(a[i]); readln End. Giáo viên đưa ra gợi ý về hàm hoặc thủ tục sẽ sử dụng để thực hiện. Hỏi: Tương tự ví dụ 2, có cần sử dụng biến k không? Nâng cao: xác định xem xâu có phải là xâu Palindrome (xâu đối xứng – xâu viết xuôi bằng xâu viết ngược) hay không. Trả lời về hàm sẽ sử dụng để giải bài toán. Viết chương trình. Góp ý để hoàn thiện chương trình. Hoạt động 4: Ví dụ 4. (13 phút) Thời gian Hoạt động của Giáo viên Hoạt động của Học sinh Kiểu xâu (tiết 2) Trang 3 Nguyễn Hoàng Anh – Khoa Tin học – Đại học Sư phạm Huế Giáo án thực tập số 3 6 phút 8 phút Ví dụ 4 Chương trình sau nhập một xâu vào từ bàn phím và đưa 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ó. var a, b: string; i, k: byte; Begin write(‘Nhap xau: ‘); readln(a); k:=length(a); b:=’’; for i:=1 to k do if a[i]<>’ ’ then b:=b+a[i]; write (‘Ket qua: ‘,b); readln End. Giáo viên đưa ra gợi ý về hàm sẽ sử dụng để thực hiện so sánh hai xâu. Hỏi: Tương tự ví dụ 2 và ví dụ 3, có cần sử dụng biến k không? Có thể không sử dụng biến b được không? Nếu có, hãy sửa lại chương trình ở những điểm thích hợp. Lời giải gợi ý: var a: string; i: byte; Begin write('Nhap xau: '); readln(a); i:=1; { repeat if a[i]=' ' then delete(a,i,1) else i:=i+1; until i>length(a); } while i<=length(a) do if a[i]=' ' then delete(a,i,1) else i:=i+1; write('Ket qua: ',a); readln End. Trả lời về hàm sẽ sử dụng để giải bài toán. Viết chương trình. Góp ý để hoàn thiện chương trình. Hoạt động 5: Ví dụ 5 (Xem như bài tập). Thời gian Hoạt động của Giáo viên Hoạt động của Học sinh Ví dụ 5 Chương trình sau nhập vào từ bàn phím một xâu s1, tạo xâu s2 gồm tất cả các chữ số có trong s1 (giữ nguyên thứ tự xuất hiện của chúng) và đưa kết quả ra màn hình. Program XuLiXau; var s1, s2: string; i: byte; Begin Trả lời về hàm sẽ sử dụng để giải bài toán. Viết chương Kiểu xâu (tiết 2) Trang 4 Nguyễn Hoàng Anh – Khoa Tin học – Đại học Sư phạm Huế Giáo án thực tập số 3 write(‘Nhap vao xau s1: ‘); readln(s1); s2:=’’; for i:=1 to length(s1) do if (‘0’<s1[i]) and (s1[i]<’9’) then s2:=s2+s1[i]; write (‘Ket qua: ‘,s2); readln End. Giáo viên đưa ra gợi ý về hàm sẽ sử dụng để thực hiện so sánh hai xâu. Thêm: Đưa ra cả xâu đã loại bỏ kí tự là chữ số. trình. Góp ý để hoàn thiện chương trình. V. CỦNG CỐ 1. Một số câu hỏi củng cố (3 phút) Trong các khai báo sau đây, khai báo nào là hợp lí nhất? Vì sao? a. var hoten: string[20]; b. var hoten: string[40]; c. var hoten: string; 2. Dặn dò (1 phút) Nhớ học bài cũ, đặc biệt là các hàm xử lí xâu. Viết các chương trình đã làm trên Pascal. Đọc trước các bài tập trong Sách giáo khoa để chuẩn bị cho tiết thực hành sau. VI. RÚT KINH NGHIỆM Phú Vang, ngày 10/03/2010 Giáo viên hướng dẫn Sinh viên thực tập Nguyễn Thị Thanh Tâm Nguyễn Hoàng Anh Kiểu xâu (tiết 2) Trang 5 . string; i, k: byte; Begin write('Nhap xau thu nhat: ');readln(a); write('Nhap xau thu hai: '); readln(b); if a=b then write('Hai xau bang nhau.') else begin if. (i<=k) and (a[i]=b[i]) do i:=i+1; if a[i] < b[i] then write(&apos ;Xau thu nhat be hon.') else write(&apos ;Xau thu hai be hon.'); end; readln End. Trả lời về hàm sẽ sử dụng. cuối cùng của xâu thứ hai không. var a, b: string; x: byte; Begin write(‘Nhap xau thu nhat: ‘); readln(a); write(‘Nhap xau thu hai: ‘); readln(b); x:=length(b); if a[1]=b[x] then write(‘Trung nhau’)