I. MỤC TIÊU:
1. Về kiến thức:
Học sinh sau tiết học sẽ:
- Củng cố cho học sinh những hiểu biết về xâu.
- Cung cấp một vài thuật toán cơ bản và đơn giản thường gặp khi xử lí xâu
2. Về kỹ năng:
- Giúp học sinh có được các kỹ năng cơ bản làm việc với xâu trong lập trình : Khai báo kiểu xâu, nhập dữ liệu cho xâu, đưa ra màn hình giá trị của xâu.
- Sử dụng các hàm và thủ tục chuẩn đã trình bày ở SGK.
3. Về thái độ:
Có tư duy đúng đắn trong việc áp dụng kiểu xâu để giải các bài toán đơn giản
Tuần:16 - Tiết PPCT:29 Ngày dạy: BÀI TẬP I. MỤC TIÊU: 1. Về kiến thức: Học sinh sau tiết học sẽ: Củng cố cho học sinh những hiểu biết về xâu. Cung cấp một vài thuật toán cơ bản và đơn giản thường gặp khi xử lí xâu 2. Về kỹ năng: Giúp học sinh có được các kỹ năng cơ bản làm việc với xâu trong lập trình : Khai báo kiểu xâu, nhập dữ liệu cho xâu, đưa ra màn hình giá trị của xâu. Sử dụng các hàm và thủ tục chuẩn đã trình bày ở SGK. 3. Về thái độ: Có tư duy đúng đắn trong việc áp dụng kiểu xâu để giải các bài toán đơn giản II. CHUẨN BỊ: 1. Giáo viên: Sách giáo viên, bài tập 2. Học sinh: Xem lại bài KIỂU XÂU. III. PHƯƠNG PHÁP: Nêu và giải quyết vấn đề IV. TIẾN TRÌNH DẠY HỌC: 1. Ổn định tổ chức: kiểm diện 2. Kiểm tra bài cũ: Câu 1. Khái niệm xâu? Cho ví dụ (2đ) Câu 2: Hàm Copy (st,vt,n) và Pos (s1,s2) thực hiện công việc gì? Cho ví dụ minh hoạ.(6đ) 3. Giảng bài mới: Hoạt động của thầy, trò Nội dung Bài 2. Nhập một xâu từ bàn phím. a. Đếm và in ra màn hình các kí tự là chữ số trong xâu. Công việc phải làm là: - Nhập xâu - Khởi tạo biến đếm kí tự số và xâu rỗng để lưu các kí tự số. - Duyệt qua từng kí tự trong xâu. Kiểm tra nếu là kí tự số thì đếm và cộng vào xâu rỗng. - Xuất kết quả. b. Đếm và in ra màn hình các kí tự là chữ cái trong xâu. Công việc phải làm là: - Nhập xâu - Khởi tạo biến đếm kí tự chữ cái và xâu rỗng để lưu các kí tự chữ. - Duyệt qua từng kí tự trong xâu. Kiểm tra nếu là kí tự chữ cái thì đếm và cộng vào xâu rỗng. Lưu yù: không phân biệt chữ hoa, chữ thường. - Xuất kết quả. c. Chuẩn hóa xâu. (Xóa các kí tự trắng thừa trong xâu và in hoa chữ cái đầu xâu) Công việc cần phải làm là: - Xóa các kí tự cách thừa ở đầu và cuối xâu. - Xóa các kí tự cách thừa ở giữa các từ: nếu s[i-1] là cách thì s[i] là dấu cách thừa. Phải dùng vòng lặp for – downto vì nếu trong quá trình xóa ta làm giảm chiều dài của xâu, nếu dùng for – to sẽ không dừng được. - Chuyển kí tự ở đầu xâu thành chữ hoa. Bài 1: Var St : string; i, L : integer; Begin St :='Hoc thay khong tay hoc ban’; L:=Length(St); For i := 1 to L do If (St[i] >= 'a') and (St[i] <= 'z') then St[i]:= Upcase (St[i]); Write (St); End. Kết quả của đoạn chương trình trên là gì? Bài 2: program xau; uses crt; var s,s1,s2:string[100]; demso,demchu,i:byte; begin clrscr; writeln('moi ban nhap vao mot xau:'); readln(s); {cau a: Dem va in cac chu so trong xau} demso:=0; s1:=''; for i:=1 to length(s) do if ('0'<=s[i]) and (s[i] <= '9') then begin demso:=demso+1; s1:=s1+s[i]; end; writeln('xau s co ',demso ,' chu so'); write(s1); {cau b: Dem va in cac chu cai trong xau} demchu:=0; S2:=''; for i:=1 to length(s) do if ('A'<=s[i]) and (s[i] <= 'Z') or ('a'<=s[i]) and (s[i]<='z') then begin demchu:=demchu+1; S2:=s2+s[i]; end; writeln('xau s co ',demchu ,' chu cai'); write(s2); readln end. {cau c: chuan hoa xau} program xoadaucach; uses crt; var s:string; i:byte; begin clrscr; writeln('nhap xau s='); readln(s); while s[1]=' ' do delete(s,1,1); while s[length(s)]=' ' do delete(s,length(s),1); for i:=2 to length(s) do if (s[i-1]=' ') and (s[i]=' ') then delete(s,i,1); s[1]:=upcase(s[1]); write(s); readln end. 4. Củng cố và luyện tập : - Nhắc lại những kiến thức cần lưu ý trong bài tập. 5. Hướng dẫn học sinh chuẩn bị bài ở nhà: Ôn lại các nội dung đã học : Kiểu mảng 1 chiều, 2 chiều, kiểu xâu. V. RÚT KINH NGHIỆM: + Chương trình SGK: + Học sinh: + Giáo viên: 1. Nội dung: 2. Phương pháp: 3. Tổ chức: Tuần: 16 - Tiết PPCT: 30 Ngày dạy: Bài. ÔN TẬP I. MỤC TIÊU: 1. Về kiến thức: Học sinh sau tiết học sẽ: Củng cố lại các kiến thức đã học về kiểu dữ liệu có cấu trúc 2. Về kỹ năng: Có thể viết được 1 chương trình hoàn chỉnh. 3. Về thái độ: Tiếp tục xây dựng lòng ham thích lập trình, nhằm giải quyết các bài tóan bằng máy tính. Tiếp tục hình thành và xây dựng những phẩm chất cần thiết của người lập trình. II. CHUẨN BỊ: 1. Giáo viên: Sách giáo viên, bài tập. 2. Học sinh: Ôn lại các nội dung: vòng lặp (for..do, While..do), kiểu dữ liệu có cấu trúc (mảng 1 chiều, mảng 2 chiều, kiểu xâu) III. PHƯƠNG PHÁP: Sử dụng phương pháp nêu và giải quyết vấn đề, vấn đáp. IV. TIẾN TRÌNH DẠY HỌC: 1. Ổn định tổ chức: kiểm diện 2. Kiểm tra bài cũ: Câu hỏi: Cú pháp khai báo biến mảng 1 chiều? cho VD Câu hỏi: Cú pháp khai báo biến mảng 2 chiều? cho VD? 3. Giảng bài mới: Hoạt động của thầy, trò Nội dung Bài 1. viết CT nhập vào một mảng một chiều có n phần tử nguyên (n10): a. Đếm và tính tổng các phần tử chẵn. b. Đếm và tính tổng các phần tử dương c. In ra màn hình số dương đầu tiên và chỉ số của nó. Công việc phải làm là: - Nhập mảng - Duyệt qua tuần tự các phần tử trong mảng. Nếu là số dương thì dừng và in ra màn hình. HS :Nhắc lại các dạng dữ liệu mảng. GV: Nêu bài tập và yêu cầu của bài toán. HS: Đưa ra giải thuật để giải bài toán. GV: Gọi học sinh lên bảng làm bài => nhận xét và sửa chữa sai sót bài làm của học sinh. Nêu những điểm cần chú ý khi làm bài. d. Thêm một phần tử vào mảng. Công việc phải làm là: Nhập mảng Nhập vị trí k và giá trị x cần thêm. Các phần tử từ thứ 1 đến thứ k-1 là không đổi. Dùng lệnh for gán giá trị từ a[n+1] đến a[k+1]: a[i]:=a[i-1]; Gán a[k]:=x; Thông báo kết quả. Bài 1: program vd; uses crt; var a:array[1..10] of integer; i,n,duong,csduong:integer; begin clrscr; write('n='); readln(n); for i:=1 to n do begin write('a[',i,']='); readln(a[i]); end; i:=1; while a[i]<=0 do i:=i+1; begin duong:=a[i]; csduong:=i; end; writeln('so duong dau tien trong mang la ',duong,' co chi so la ',csduong); readln end. {cau d: Them phan tu mang} program chen_so_vao_mang; uses crt; var a:array[1..100] of integer; i,n,k,x:integer; begin clrscr; write('n=');readln(n); for i:=1 to n do begin write('a[',i,']='); readln(a[i]); end; write('nhap vi tri can chen '); readln(k); write('nhap gia tri can chen '); readln(x); for i:=n+1 downto k+1 do a[i]:=a[i-1]; a[k]:=x; for i:=1 to n+1 do write(a[i]); readln end. 4. Củng cố và luyện tập : Nhắc lại các kiến thức quan trọng cần nắm. 5. Hướng dẫn học sinh chuẩn bị bài ở nhà: BTVN : tự làm lại bài và thực hành trên máy. Học bài, chuẩn bị thi HKI V. RÚT KINH NGHIỆM: + Chương trình SGK: + Học sinh: + Giáo viên: 1. Nội dung: 2. Phương pháp: 3. Tổ chức: Tuần:17 - Tiết PPCT:31, 32 Ngày dạy: THI HKI Tuần:19 - Tiết PPCT:33 Ngày dạy: BÀI TẬP (tt) I. MỤC TIÊU: 1. Về kiến thức: Học sinh sau tiết học sẽ: Củng cố cho học sinh những hiểu biết về xâu. Cung cấp một vài thuật toán cơ bản và đơn giản thường gặp khi xử lí xâu 2. Về kỹ năng: Giúp học sinh có được các kỹ năng cơ bản làm việc với xâu trong lập trình : Khai báo kiểu xâu, nhập dữ liệu cho xâu, đưa ra màn hình giá trị của xâu. Sử dụng các hàm và thủ tục chuẩn đã trình bày ở SGK. 3. Về thái độ: Có tư duy đúng đắn trong việc áp dụng kiểu xâu để giải các bài toán đơn giản II. CHUẨN BỊ: 1. Giáo viên: Sách giáo viên, bài tập 2. Học sinh: Xem lại bài KIỂU XÂU. III. PHƯƠNG PHÁP: Nêu và giải quyết vấn đề IV. TIẾN TRÌNH DẠY HỌC: 1. Ổn định tổ chức: kiểm diện 2. Kiểm tra bài cũ: Câu 1. Khái niệm xâu? Cho ví dụ (2đ) Câu 2: Hàm Copy (st,vt,n) và Pos (s1,s2) thực hiện công việc gì? Cho ví dụ minh hoạ.(6đ) 3. Giảng bài mới: Hoạt động của thầy, trò Nội dung GV: Nêu bài tập và yêu cầu của bài toán. HS: Đưa ra giải thuật để giải bài toán. GV hướng dẫn các bước làm: - Nhập mảng 1 chiều: nhập số phần tử của mảng, nhập giá trị các phần tử của mảng. - Khởi tạo giá trị ban đầu cho biến đếm, và tổng S - Duyệt qua từng phần tử của mảng: + Nếu nó dương thì đếm tăng và đưa phần tử đó ra màn hình GV: Nêu bài tập và yêu cầu của bài toán. HS: Đưa ra giải thuật để giải bài toán. Cách làm: - Nhập vào xâu st - Nhập ký tự bất kỳ x; - Khởi tạo giá trị ban đầu cho biến đếm - Duyệt qua từng ký tự trong xâu st: + Kiểm tra xem kí tự nào trùng với ký tự x thì tăng biến đếm - Đưa giá trị biến đếm ra màn hình. Bài 1 Viết CT nhập vào một mảng 1 chiều gồm n số nguyên (n50). Cho biết mảng có bao nhiêu số dương và Tính trung bình cộng các số dương của mảng Program BT_Mang; Uses CRT; Var A : array[1..50] of integer; S, dem, i, n:integer; Begin Clrscr; Write(‘nhap so phan tu cua mang: ‘); readln(n); For i:=1 to n do Begin Write(‘A[‘, i, ‘]=’); Readln(A[i]); End; Dem:=0; S:=0; For i:=1 to n do If A[i]> 0 then Begin Dem:=dem+1; S:=S+A[i]; End; Writeln(‘TBC cac so duong la: ‘, S/dem); Readln End. Bài 3: Viết chương trình nhập vào một chuỗi kí tự, sau đó nhập vào một kí tự bất kỳ và đếm số lần xuất hiện của nó trong xâu đã nhập Program DEMSOKYTU; Uses Crt; Var st:string[30]; x:char;i,dem:integer; Begin Clrscr; Writeln('DEM SO LAN XUAT HIEN CUA 1 KY TU'); Writeln('--------------------'); Write('Nhap chuoi ky tu la:'); readln(st); Write('Nhap ky tu =');readln(x); dem:=0; For i:=1 to length(st) do If x= st[i] then dem:=dem+1; Writeln('so lan xuat hien cua ',x,' trong chuoi ‘, st,' la: ',dem); Readln; End. 4. Củng cố và luyện tập : - Nhắc lại những kiến thức trọng tâm cần nắm 5. Hướng dẫn học sinh chuẩn bị bài ở nhà: Chuẩn bị bài 13 : KIỂU BẢN GHI V. RÚT KINH NGHIỆM: + Chương trình SGK: + Học sinh: + Giáo viên: 1. Nội dung: 2. Phương pháp: 3. Tổ chức: Tuần:19 - Tiết PPCT:34 Ngày dạy: Bài 13. KIỂU BẢN GHI I. MỤC TIÊU: 1. Về kiến thức: Học sinh sau tiết học sẽ: Giúp học sinh biết thế nào là dữ liệu kiểu bản ghi. Hiểu và biết cách khai báo bản ghi, biết cách thao tác với bản ghi. 2. Về kỹ năng: Bước đầu biết mô tả một đối tượng bằng một số thuộc tính cần quản lí. Khai báo kiểu bản ghi. Nhận biết được thành phần của một biến bản ghi và bước đầu viết được một vài thao tác xử lí trên từng thành phần của bản ghi. 3. Về thái độ: Học sinh phải có thái độ nghiêm túc học tập, hiểu đúng, đủ các nội dung của bài. Rèn luyện cho học sinh phong cách suy nghĩ, lập trình hợp lí, rõ ràng, mạch lạc. II. CHUẨN BỊ: 1. Giáo viên: Sách giáo viên. 2. Học sinh: Xem trước KIỂU BẢN GHI III. PHƯƠNG PHÁP: Phương pháp vấn đáp, kết hợp tạo tình huống có vấn đề IV. TIẾN TRÌNH DẠY HỌC: 1. Ổn định tổ chức: kiểm diện 2. Kiểm tra bài cũ: 3. Giảng bài mới: Hoạt động của thầy, trò Nội dung Hoạt động 1: GV: Em nào có thể cho cô biết nội dung của một bảng kết quả thi học kì gồm những gì? HS: Lắng nghe câu hỏi và trả lời GV: Nêu kiểu dữ liệu của từng dữ kiện? HS: Suy nghĩ, trả lời câu hỏi. GV: Có kiểu dữ liệu nào dùng để mô tả toàn bộ thông tin kết quả điểm của học sinh này không? GV: Để có thể mô chúng ta sẽ dùng một kiểu dữ liệu mới. Đó chính là kiểu bản ghi HS: Ghi nhận phần khái niệm vào vở GV: Vậy cách khai báo kiểu bản ghi như thế nào? Có gì khác so với kiểu dữ liệu mà em đã học? Chúng ta hãy cùng tìm hiểu cách khai báo kiểu bản ghi HS: Lắng nghe, ghi nhận. GV: Giải thích về khái niệm trường cho học sinh hiểu rõ thông qua bảng kết quả trong sách giáo khoa.Mỗi cột là một trường (thuộc tính) của đối tượng HocSinh GV: Với các dữ kiện đã cho như trên, em nào có thể giúp cô khai báo kiểu bản ghi kết quả thi học kì không? HS: Quan sát, trả lời. GV: Vậy còn khai báo biến bản ghi thì sao? Khai báo hai biến A, B như sau. HS:Nếu cô muốn khai báo một biến mảng kiểu bản ghi có tối đa 45 phần tử?cô phải khai báo như thế nào? HS: Suy nghĩ, trả lời câu hỏi GV: Khi có nhu cầu về thông tin trong từng trường, làm thế nào để truy cập vào từng trường của bản ghi? Muốn biết điểm toán của phần tử thứ 3 trong mảng LOP ta phải thự hiện lệnh như thế nào? HS: Lắng nghe câu hỏi, trả lời. GV: Vì bản ghi có nhiều trường nên việc gán giá trị cho bản ghi phức tạp hơn các biến khác. Chúng ta cùng tìm hiểu cách gán giá trị trong bản ghi. GV: Giải thích đề bài ví dụ, không viết hết chương trình ra chỉ chú trọng phần nhập, xử lí dữ liệu. và phần xuất.(với mỗi phần chỉ viết vài dòng để học sinh nắm rõ) 1.Khái niệm: Dữ liệu kiểu bản ghi ( record ) dùng để mô tả các đối tượng có cùng một số thuộc tính mà các thuộc tính có thể có các kiểu dữ liệu khác nhau . Ví dụ: Thông tin kết quả điểm của một học sinh HoTen: String;;;;;; NgaySinh: String DToan: Real DLi: Real DHoa: Real 2. Khai báo: Để khai báo biến bản ghi , thường khai báo một kiểu bản ghi sau đó khai báo biến bản ghi . Khai báo kiểu bản ghi: Type = record : ; .. : ; End; Ví dụ: Type HocSinh = record HoTen: String[30];;;;;;;; NgaySinh: String[15]; DToan: Real; DLi: Real; DHoa: Real; end; Khai báo biến bản ghi: Var : ; Ví dụ: Var A,B: HocSinh; Var LOP: Array[1..45] of HocSinh Tham chiếu đến trường của bản ghi: . Ví dụ: HSA.HoTen LOP[3].DToan 3.Gán gia trị: Có hai cách để gán giá trị cho bản ghi: Dùng lệnh gán trực tiếp: Nếu A, B là hai biến bản ghi cùng kiểu ta có thể gán giá trị của B cho A bằng câu lệnh gán: Ví dụ: A:=B; Gán giá trị cho từng trường:Có thể thực hiện bằng lệnh gán hoặc nhập vào từ bàn phím: A.HoTen:=’Nguyen Van Tuan’; (gán giá trị Nguyen Van Tuan cho trường HoTen của biến bản ghi A) Readln(HSA.HoTen); (Nhập từ bàn phím giá trị HoTen cho biến A) 4.Ví dụ: Lớp 11A5 có tối đa 45 học sinh. Cần quản lí học sinh với các thuộc tính như: HoTen, DToan, DLi, DTB.Trong đó DTB là tổng điểm bình quân cả hai môn Toán, Lí mà học sinh đạt được. Chương trình mẫu: Type HocSinh = record HoTen: String[30];;;;;;; DToan: Real; {Khai báo} DLi: Real; end; Var LOP:Array[1..45] of HocSinh; n,i: Byte; begin write (‘So luong hoc sinh n= ’); readln(n); for i:= 1 to n do begin writeln(‘Nhap so lieu ve hoc sinh thu ’,i,’:’); write(‘Ho va ten: ’); readln(LOP[i].HoTen); write(‘Diem toan: ’); readln(LOP[i].DToan); write(‘Diem li: ’); readln(LOP[i].DLi); LOP[i].DTB:=(LOP[i].DToan + LOP[i].Dli )/2; end; for i:=1 to n do writeln(LOP[i].HoTen, ‘- Diem TB: ’, LOP[i].DTB); {Xuất} readln; end. 4. Củng cố và luyện tập : Cách khai báo kiểu bản ghi: Type = record : ; .. : ; end; Khai báo biến bản ghi: Var : ; Tham chiếu đến trường của bản ghi: . vd: A.X 5. Hướng dẫn học sinh chuẩn bị bài ở nhà: BTVN : 11/ 80 SGK Học bài, chuẩn bị cho tiết bài tập và thực hành 5. V. RÚT KINH NGHIỆM: + Chương trình SGK: + Học sinh: + Giáo viên: 1. Nội dung: 2. Phương pháp: 3. Tổ chức:
Tài liệu đính kèm: