HOẠT ĐỘNG CỦA THẦY VÀ TRÒ NỘI DUNG KIẾN THỨCHoạt động 113’ Tìm hiểu cách sử dụng lệnh và kiểu dữ liệu mảng một chiều qua chương trình có sẳn Gv:Đưa bài toán lên máy chiếu, yêu cầu Hs thự
Trang 1Ngày soạn 12 tháng 11 năm 2008
BÀI TẬP VÀ THỰC HÀNH 3(t2)
A.MỤC ĐÍCH:
1.Kiến thức:
- Củng cố lại một số kiến thức cơ bản về kiểu dữ liệu mảng một chiều
- Củng cố lại một số câu lệnh như: Nhập và xuất, rẽ nhánh và lặp
2.Kỹ năng:
- Nâng cao kỷ năng sử dụng một số lệnh kiểu dữ liệu mảng một chiều trong lập trình, cụ thể:
+Khai báo mảng một chiều
+Nhập/ xuất dữ liệu cho mảng
+Duyệt qua tất cả các phần tử của mảng để xử lý từng phần tử
-Biết giải một số bài toán cơ bản:
+Tính tổng các phần tử thoả mãn điều kiện nào đó
+ Bài toán đếm thoả mãn một điều kiện cho trước
3.Thái độ:
- Tiếp tục xây dựng lòng yêu thích giải toán bằng lập trình trên máy vi tính
- Nghiêm túc trong thực hành, giữ gìn máy tính
B.PHƯƠNG PHÁP: Thực hành + Vấn đáp tái hiện
C.CHUẨN BỊ:
1.Giáo viên: Giáo án, SGK, SBT, máy chiếu.
2.Học sinh: Chuẩn bị bài ở nhà.
D TIẾN TRÌNH LÊN LỚP:
I.ỔN ĐỊNH LỚP(1’):
Vắng II.KIỂM TRA BÀI CŨ(15’): Kiểm tra 15 phút (Gv đưa lên máy chiếu)
ĐỀ
Câu 1(5đ).Hãy viết cú pháp khai báo mảng một chiều?
Câu 2(5đ).Viết đoạn chương trình nhập và in mảng một chiều vừa nhập?
ĐÁP ÁN
Var <Ds biến mảng>:array[n1 n2] of <Kiểu phần tử> ; *Khai báo gián tiếp: Viết đúng 2,5đ
Type <Tên kiểu mảng>=array[n1 n2] Of <Kiểu phần tử>;
Var <Ds biến mảng> : <tên kiểu mảng>;
Câu2:*Đoạn chương trình nhập mảng một chiều Viết đúng 2,5đ
Write(‘Nhap so phan tu N=’); Readln(N);
For i=1 To N Do
Begin
Write(‘Nhap a[‘,i,’]=’); Readln(a[i]);
End;
*Đoạn chương trình in mảng một chiều vừa nhập: Viết đúng 2,5đ
For i:=1 To N do Write(‘Gia tri a[‘,i,’]=’, a[i]);
Trang 2HOẠT ĐỘNG CỦA THẦY VÀ TRÒ NỘI DUNG KIẾN THỨC
Hoạt động 1(13’) (Tìm hiểu cách sử dụng lệnh và kiểu dữ liệu
mảng một chiều qua chương trình có sẳn)
Gv:Đưa bài toán lên máy chiếu, yêu cầu Hs
thực hiện theo các câu hỏi sau:
Hãy tìm hiểu, gõ chương trình vào máy và
chạy chương trình dưới đây:
Var A:array[1 100] of Integer;
S,N,i,K:Byte;
Begin
Randomize;
Write('Nhap gia tri N='); Readln(N);
Write('Nhap so nguyen K='); Readln(K);
If a[i] mod k =0 then S:=S+a[i];
Writeln('Tong can tinh la S=',S);
Gv:Quan sat học sinh thực hành.
Hàm chuẩn Random(n), Randomize làm chức
năng gì trong chương trình?
1.Đoạn chương trình nào tạo mảng có giá trị
tuyệt đối không vượt quá 300?
2.Giải sử chương trình bỏ hàm chuẩn
Radomize có được hay không?Vì sao?
Hs:Minh hoạ trên máy rồi giải thích
Gv:
Đưa chương trình trên máy chiếu và giải thích
từng đoạn chương trình để Hs hiểu vấn đề
Hoạt động 2(13’) (Viết chương trình về bài toán tạo mảng)
Gv:Đưa bài toán lên màn hình máy chiếu
Hs:Đọc đề bài toán 2
Gv:Yêu cầu Hs thực hiện một số việc như sau:
Hãy cho biết cách tổ chức dữ liệu của bài
Bài toán 1:
Tạo mảng A gồm n (n≤100) số nguyên, mỗi số
có trị tuyệt đó không vượt quá 300 Tính tổng cácphần tử của mảng là bội số của một số nguyêndương K cho trước
Var A:array[1 100] of Integer;
S,N,i,K:Byte;
Begin Randomize;
Write('Nhap gia tri N='); Readln(N);
Write('Nhap so nguyen K='); Readln(K);
For i:=1 to n do A[i]:=random(300)-random(300);
For i:=1 to N do Write(A[i]:5);
Writeln;
S:=0;
For i:=1 To N do
If a[i] mod k =0 then S:=S+a[i];
Writeln('Tong can tinh la S=',S);
-Radomize:Khởi tạo cơ chế sinh số ngẫu nhiên
Bài toán 2:(SBT.4.10/33): Cho hai dãy số nguyên
A={a1, a2, , aN} và B={b1, b2, ,bN} Dãy C={c1, c2, , c2n} được xác định như sau:
b.Tạo và đưa ra màn hình mảng C
Trang 3IV.CỦNG CỐ(1’): Nhận xét buổi thực hành=> Đưa ra một số lổi thường gặp trong thực hành V.DẶN DÒ(1’): Đưa lên màn hình máy chiếu như sau:
-Tiết sau học tiết: Bài tập và thực hành 4(T2) -Bài tập về nhà: 1 Làm một số bài tập sau: 4.7,4.8,4.9,4.10 /trang 32,33 (SBT)
Ngày soạn 20 tháng 11 năm 2008
BÀI TẬP
A.MỤC ĐÍCH:
Tiết
26
Trang 41.Kiến thức:
- Củng cố các kiến thức cơ bản khi lập trình với kiểu dữ liệu mảng
- Làm quen với thuật toán sắp xếp nổi bọt
- Hs nắm được một số tổ hợp phím khi chạy chương trình Pascal
- Tự giác, chủ động trong khi thực hành
B.PHƯƠNG PHÁP: Thực hành + Vấn đáp tái hiện
C.CHUẨN BỊ:
3.Giáo viên: Giáo án, SGK, SBT, máy chiếu.
4.Học sinh: Chuẩn bị bài ở nhà.
D TIẾN TRÌNH LÊN LỚP:
I.ỔN ĐỊNH LỚP(1’):
Lớp 11A 1 11B 1 11B 2 11B 3 11B 4 Vắng
II.KIỂM TRA BÀI CŨ(5’): Gv đưa câu hỏi lên máy chiếu
1 Hãy nêu cách khai báo mảng hai chiều?
2.Hãy viết đoạn chương trình nhập và in mảng hai chiều?
a.Đặt vấn đề(1’): Bài tập và Thực hành 4(T1)
b.Triển khai bài mới:
Hoạt động 1(20’) (Tìm hiểu cách sử dụng lệnh và kiểu dữ liệu
mảng một chiều qua chương trình có sẳn)
Gv:
Đưa bài toán lên máy chiếu, yêu cầu Hs
thực hiện theo các câu hỏi sau:
a.Hãy tìm hiểu và chạy thử chương trình thực hiện
thuật toán sắp xếp dãy số nguyên bằng thuật toántráo đổi với các giá trị khác nhau của n dưới đây
Type dayso=array[1 250] of Integer;
Var i,j,n,Tg:Integer;
Readln(A[i]);
End;
Trang 5- Mảng a được khai báo gián tiếp
- Đoạn chương trình hoán đổi:
Gv:Yêu cầu Hs thực hành với bộ dữ liệu khác.
Hs:Thực hành với bộ dữ liệu bất kỳ để kiểm tra
tính đúng đắn của thuật toán
Hoạt động 2(15’) (Bài toán về đếm) Gv: Đưa yêu cầu ở trên máy chiếu về bài toán
trên như sau:
Khai báo thêm biến nguyên Dem và bổ sung
vào chương trình những câu lệnh cần thiết để
biến Dem tính số lần thực hiện tráo đổi trong
thuật toán Đưa kết quả tìm được ra màn
Gv:Quan sát Hs thực hành trên máy về cách
sửa chương trình đếm số lần tráo đổi
Hs:Thực hành trên máy tính với một dữ liệu bất
kỳ và quan sát kết của bài toán
For j:=n downto 2 do For i:=1 to j -1 do
If A[i]>A[i+1] then Begin
Tg:=A[i];
A[i]:=A[i+1];
A[i+1]:=Tg;
End;
Writeln('Day so duoc sap xep ');
For i:=1 to n do Write(A[i]:5);
Readln;
END.
b.Khai báo thêm biến nguyên Dem và bổ sung
vào chương trình những câu lệnh cần thiết để biến
Dem tính số lần thực hiện tráo đổi trong thuật
toán Đưa kết quả tìm được ra màn hình.?
Type dayso=array[1 250] of Integer;
Readln(A[i]);
End;
Dem:=0;
For j:=n downto 2 do For i:=1 to j -1 do
If A[i]>A[i+1] then Begin
Writeln('Day so duoc sap xep ');
For i:=1 to n do Write(A[i]:5);
Writeln(‘So lan trao doi la’, Dem);
Readln;
END.
Trang 6IV.CỦNG CỐ(2’):
-Nhận xét buổi thực hành=> Đưa ra một số lổi thường gặp trong thực hành
- Cần nắm thuật toán sắp xếp nổi bọt
V.DẶN DÒ(1’): Đưa lên màn hình máy chiếu như sau:
-Tiết sau học tiết: Bài tập và thực hành 4(T2) -Bài tập về nhà: 1 Làm một số bài tập sau: Bài 1->9/79(SGK)
2.Viết chương trình tính bảng cửu chương
Ngày soạn 27 tháng 11 năm 2008
KIỂU DỮ LIỆU XÂU
(tiết 1)
Tiết
27
Trang 7A.MỤC ĐÍCH:
1.Kiến thức:
- Biết được một kiểu dữ liệu mới(Kiểu dữ liệu xâu) như: khai báo biến kiểu xâu, tham chiếu đến biến xâu,
- Phân biệt sự giống nhau va khác nhau giữa kiểu mảng kí tự với xâu ký tự
- Biết được các phép toán liên quan đến xâu
5.Giáo viên: Giáo án, SGK, SBT, máy chiếu.
6.Học sinh: Chuẩn bị bài ở nhà.
D TIẾN TRÌNH LÊN LỚP:
I.ỔN ĐỊNH LỚP(1’):
Lớp 11A 1 11B 1 11B 2 11B 3 11B 4 Vắng
II.KIỂM TRA BÀI CŨ(3’): Đưa bài toán lên máy chiếu như sau
Hãy viết chương trình nhập vào N số nguyên dương, dãy ký tự A={a1,a2, ,aN } được nhập vào
từ bàn phím và thông báo dãy vừa nhập ra màn hình
Y/c:Hãy khai báo mảng ký tự ?
a.Đặt vấn đề(1’): Trong thực tế có những bài toán không chỉ thuộc kiểu dữ liệu số mà còn cả
dạng phi số đó là kiểu dữ liệu xâu Bài học hôm nay chúng ta tìm hiểu xem kiểu dữ liệu xâu cókhai báo biến như thế nào, cách truy xuất, có giống với kiểu dữ liệu mảng hay không?
b.Triển khai bài mới:
Hoạt động 1(20’) (Tìm hiểu khai báo biến) Gv: Đưa bài toán lên màn hình máy chiếu
Viết chương trình nhập họ và tên của 30 học
sinh trong lớp?
Y/c:
Bài toán đó ta sẽ chọn kiểu dữ liệu như thế
nào? Khai báo biến như thế nào?
Hs:Khai báo kiểu mảng ký tự
Gv:Minh hoạ chương trình của bài toán trên ở
trên máy chiếu để hs quan sát những khó khăn
For i:=1 to n do Read(a[i]);
Chương trình trên khi chạy có gặp khó khăn
Trang 8Em hiểu thế nào là xâu ký tự? Trong NNLT có
quy định như thế nào?
Hs:Dựa vào SGK để trả lời câu hỏi.
Gv:Đưa khái niệm lên máy chiếu và tìm hiểu ví
Khi khai báo không có [độ dài lớn nhất của xâu]
thì số lượng ký tự tối đa là bao nhiêu?
Hs:Ký tự tối đa là 255.
Gv:Xâu chỉ gồm một ký tự trống được viết như
thế nào? Số lượng ký tự bao nhiêu?
Hs:Dựa vào SGK để trả lời câu hỏi.
Gv:Xâu rỗng được viết như thế nào? Độ dài của
xâu rỗng là bao nhiêu?
Hs:Dựa trên hiểu biết để trả lời
Gv: Đưa bài tập sau lên máy chiếu
Var st:string; c:char;
Begin
C:=ST[1]; {1}
C:=st; {2}
End.
Trong hai câu lệnh {1}, {2} câu lệnh nào đúng?
Hs:Dựa vào kiến thức đã học để trả lời câu hỏi.
Hoạt động 2(16’) (Tìm hiểu một số phép toán xử lý xâu)
Độ dài của xâu (số ký tụ trong xâu): 7 Khi tham chiếu đến ký tự thứ I của xâu, ta viếtA[i]
b.Khai báo biến:
Var <Tên biến>:String[độ dài lớn nhất của xâu]; Var Hten:String[30];
*Lưu ý:
-Khi khai báo xâu có thể bỏ qua phần khai báo [độ
dài lớn nhất của xâu], khi đó độ dài lớn nhất củaxâu gầm định là 255 ký tự
a.Phép toán xâu:Là biểu thức trong đó các toán
hạng là các biến xâu, biến ký tự
Trang 9Write(ST);
Readln;
End
Hãy cho biết kết quả in ra trên màn hình? Cho
biết chức năng của phép +?
Hs:Quan sát Gv minh hoạ đoạn chương trình rồi
trả lời câu hỏi
Gv:Đưa ra ví dụ trên máy chiếu và chạy chương
Hãy cho biết kết quả in ra màn hình ?Cách so
sánh hai xâu được thể hiện như thế nào?
Hs:Quan sát chương trình rồi trả lời kết quả in ra
*Ký tự đầu tiên khác nhau giữa chúng ở xâu
A có mã ASCII lớn hơn ở xâu B
Ví dụ: ‘HA NOI’ > ‘HA NAM’
*Xâu B là đoạn đầu của xâu A
Ví dụ: ‘HA NOI’ > ‘HA’
IV.CỦNG CỐ(3’):
-Nắm cú pháp khai báo biến kiểu xâu, cách truy xuất từng phần tử của xâu
- Hãy viết chương trình nhập họ tên của hai học sinh và so sánh xâu nào lớn hơn thì đư ra màn hình còn bằng nhau thì đưa ra cả hai xâu?
Var Hoten1, Hoten2:String[25];
Begin
Write(‘Nhap Ho va Ten 1=’); Readln(Hoten1);
Write(‘Nhap Ho va Ten 2=’); Readln(Hoten2);
If Hoten 1> Hoten2 Then Writeln(Hoten1)
V.DẶN DÒ(1’): Đưa lên màn hình máy chiếu như sau:
-Tiết sau học tiết: Kiểu xâu(T2) -Bài tập về nhà: 1 Làm một số bài tập sau: Bài 10/80(SGK)
- Xem và đọc trả lời các câu hỏi sau:
1.Xử lý xâu gồm có những thủ tục nào?
2.Viết chương trình nhập họ và tên và đếïm xem có bao nhiêu chữ N xuất hiện trong xâu ho tên?
Trang 10Ngày soạn 04 tháng 03 năm 2008
KIỂU DỮ LIỆU XÂU
(tiết 2)
A.MỤC ĐÍCH:
Tiết
28
Trang 111.Kiến thức:
- Biết được lợi ích của các hàm và thủ tục liên quan đến xâu trong ngôn ngữ lập trình Pascal
- Biết được chức năng của các hàm và thủ tục chuẩn, nắm được cấu trúc chung, hiểu được cáctham số của hàm và thủ tục
7.Giáo viên: Giáo án, SGK, máy chiếu.
8.Học sinh: Chuẩn bị bài ở nhà.
D TIẾN TRÌNH LÊN LỚP:
I.ỔN ĐỊNH LỚP(1’):
Lớp 11A 1 11B 1 11B 2 11B 3 11B 4 Vắng
II.KIỂM TRA BÀI CŨ(3’): Đưa bài toán lên máy chiếu như sau
-Hãy nêu các khai báo kiểu dữ liệu xâu? Lấy ví dụ minh hoạ?
-Hãy viết đoạn chương trình nhập vào từ bàn phím hai chuổi bất kỳ và so sánh chuổi nào lớn hơnthì in ra màn hình?
a.Đặt vấn đề(1’): Ở tiết trước chúng ta học bài kiểu dữ liệu xâu, ngày hôm nay chúng ta tìm hiểu
xem kiểu dữ liệu xâu có những hàm và thủ tục nào liên quan đến xâu
b.Triển khai bài mới:
Hãy cho biết kết quả in ra màn hình?
Hs: Dựa vào thủ tục xoá để trả lời câu hỏi
Gv:Hãy cho biết kết quả các thủ tục xoá các
Delete(‘ABCD’,1,0)->’ABCD’
Trang 12Hãy nêu chức năng của hàm Insert(s1,s2,vt)?
Hs:Dựa vào SGK để trả lời câu hỏi
Hãy cho biết kết quả in ra màn hinh?
Hs: Trả lời ‘HA NOI’
Gv:Đưa câu hỏi sau lên máy chiếu
COPY(‘BAI THUC HANH’,5,9);
Hs:Trả lời ‘THUC HANH’
Gv:-Giới thiệu cấu trúc chung và chức năng
Gv:- Giới thiệu cấu trúc và chức năng của hàm
Length(s), Pos(s1,s2), Upcase(ch)
-Hãy cho biết kết quả in ra màn hình:
+Hàm Length(S) cho giá trị là độ dài của xâu
Ví dụ: Length(‘THUC HANH’)=9
+Hàm Pos(S1,S2) cho vị trí xuất hiện đầu tiên củaxâu S1 trong xâu S2
Ví dụ:
Trang 13Hs:Dựa vào cú pháp của các hàm để trả lời
câu hỏi
Gv:Minh hoạ trên máy chiếu để Hs thấy kết
quả của các hàm trên
Hạot động 2(17’) (Giới thiệu một số ví dụ)
Gv:
-Giáo viên soạn sẳn các ví dụ để tiện cho
Hs theo dõi trên màn hình cũng như việc chạy
thử chương trình và không làm mất thời gian
ngồi viết chương trình
-Với mỗi ví dụ, Gv đi sâu vào câu lệnh
trực tiếp đáp ứng yêu cầu của ví dụ, như vậy
các em tiếp thu nhanh hơn
Ví dụ 1 : Nhập 1 xâu, viết ra màn hình xâu dài
hơn
Ví dụ 2 : Nhập 1 xâu, kiểm tra xem ký tự đầu tiên
của xâu S1 có trùng với ký tự cuối cùng của xâu
S2 hay không ?
Ví dụ 3 : Nhập 1 xâu, viết ra màn hình xâu đó theo
thứ tự ngược lại của các ký tự trong xâu
Pos(‘cd’,’abcdef’)=3 Pos(‘k’,’abcdef’) =0 +Hàm Upcase(ch) cho chữ cái in hoa ứng với chữcái trong ch
Ví dụ: Upcase(‘d’)=’D’
3.Một số ví dụ:
VD 1 :
Var s1,s2 : String ;Begin
Write('Nhap xau thu 1 : ') ; Readln(s1) ;
Write('Nhap xau thu 2 : ') ; Readln(s2) ;
If length(s1) > Length(s2) then Write(s1)
else Write(s2);
Readln ;End
VD 2 :
Var s1,s2 : String ;
x : Byte ;Begin Write('Nhap xau thu 1 : ');
Readln(s1) ; Write('Nhap xau thu 2 : ');
Readln(s2) ;
x := length(s2) ;
If s1[1] = s2[x] then Write('Trung nha') else
Write('Khac nhau');
Readln ;End
VD 3 :
Var i,k : Byte ;
a : String ;Begin
Write('Nhap xau : ') ;
Trang 14Ví dụ 4 : Nhập 1 xâu, viết ra màn hình xâu đó
nhưng đã được bỏ tất cả các ký tự là dấu cách
Ví dụ 5 : Nhập 1 xâu, viết ra màn hình xâu gồm
các ký tự số của xâu đó
Readln(a) ;
k := length(a) ; For i := k downto 1 do Write(a[i]) ;
Readln ;End
VD 4 :
Var i,k : Byte ; a,b : String ;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(b) ; Readln ;End
VD 5 :
Var s1,s2 : String ;
i : Byte ;Begin Write('Nhap 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(s2);
Readln ;End
IV.CỦNG CỐ(2’):
- Cần nắm cấu trúc chung của một số hàm và thủ tục xử lý xâu.
-Thông qua các bài tập cơ bản để nắm cách khai báo biên và một số câu lệnh cơ bản
V.DẶN DÒ(1’): Đưa lên màn hình máy chiếu như sau:
-Tiết sau học tiết: Tiết 31: Bài tập và Thực hành 4(t1)
Ngày soạn 05 tháng 12 năm 2008
Trang 15- Khắc sâu thêm phần kiến thức về lý thuyết kiểu xâu kí tự, đặc biệt các hàm và thủ tục liên quan -Nắm được một số thuật toán cơ bản: tạo xâu mới, đếm số lần xuất hiện một ký tự,
2.Kỹ năng:
-Khai báo biến kiểu xâu
-Nập, xuất giá trị cho biến xâu
-Duyệt qua tất cả các ký tự của xâu
9.Giáo viên: Giáo án, SGK, máy chiếu.
10. Học sinh: Chuẩn bị bài ở nhà.
D TIẾN TRÌNH LÊN LỚP:
I.ỔN ĐỊNH LỚP(1’):
Lớp 11A 1 11B 1 11B 2 11B 3 11B 4 Vắng
II.KIỂM TRA BÀI CŨ(3’): Đưa bài toán lên máy chiếu như sau
Hãy cho biết quả của một số hàm và thủ tục chuẩn sau đây:
S=’THUC HANH TIN HOC’
b.Triển khai bài mới:
-Giáo viên yêu cầu Hs gõ một số chương
trình sau vào NNLT Pascal, rồi chạy chương
trình để kiểm tra tính đúng đắn của thuật toán
-Với mỗi ví dụ, Gv đi sâu vào giải thích
từng câu lệnh trực tiếp đáp ứng yêu cầu của ví
dụ, như vậy các em tiếp thu nhanh hơn
Hs : Soạn thảo từng ví dụ vào máy và tìm hiểu
cách sử dụng biến, hàm và thủ tục
Ví dụ 1 : Nhập 1 xâu, kiểm tra xem ký tự đầu tiên
của xâu S1 có trùng với ký tự cuối cùng của xâu
Trang 16Ví dụ 2 : Nhập 1 xâu, viết ra màn hình xâu đó
theo thứ tự ngược lại của các ký tự trong xâu
Ví dụ 3 : Nhập 1 xâu, viết ra màn hình xâu đó
nhưng đã được bỏ tất cả các ký tự là dấu cách
Ví dụ 4 : Nhập 1 xâu, viết ra màn hình xâu gồm
các ký tự số của xâu đó
Readln(s1) ; Write('Nhap xau thu 2 : ');
Readln(s2) ;
x := length(s2) ;
If s1[1] = s2[x] then Write('Trung nha') else
Write('Khac nhau');
Readln ;End
VD 2 :
Var i,k : Byte ;
a : String ;Begin
Write('Nhap xau : ') ; Readln(a) ;
k := length(a) ; For i := k downto 1 do Write(a[i]) ;
Readln ;End
VD 3 :
Var i,k : Byte ; a,b : String ;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(b) ; Readln ;End
VD 4 :
Var s1,s2 : String ;
i : Byte ;Begin Write('Nhap 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(s2);
Readln ;
Trang 17Gv:Yêu cầu hs kiểm tra với một số bộ dữ liệu
được nhập vào từ bàn phím và giải thích từng
câu lệnh ở trong 4 ví dụ
Hoạt động 2(17’) (Rèn luyện kỷ năng lập trình)
Gv:Đưa câu hỏi lên máy chiếu
Hãy cho biết hàm đổi ký tự thường thành chữ
Hs:Thực hành trên máy rồi trả lời câu hỏi
For i:=1 To Length(S) Do
Write(Upcase(S[i]);
Gv:Đưa câu hỏi bài 2 lên máy chiếu
Hãy nêu ý tưởng thuật toán đếm trong xâu S
có bao nhiêu ký tự là số?
Hs:Thực hành trên máy->Trả lời câu hỏi
Dem:=0;
For i:=1 To length(S) Do
If (S[i]>=’0’) and (S[i] <=’9’) Then
Dem:=Dem+1;
Gv:Quan sát thực hành của hs và đưa ra câu
hỏi tiếp theo
Ngoài cách viết thuật toán như trê ta còn có
cách viết nào khác nửa?
Bài1:Hãy viết chương trình nhập vào một xâu S
bất kỳ và đưa ra màn hình xâu in hoa.
Var S : String ;
i : Byte ;Begin Write('Nhap xau S : ') ; Readln(S) ;
For i:=1 To Length(S) Do Write(Upcase(S[i]);
Readln;
End
Bài2:Hãy viết chương trình nhập vào một xâu bất
kỳ (có cả ký tự và ký tự số) và đưa ra màn hình có bao nhiêu ký tự là số?
Ví dụ:
S=’08bC156546CD’ =>Dem=8Var S:String;
i, Dem:Byte;
Begin Write(‘Nhap xau S=’);Readln(S);
Dem:=0;
For i:=1 To length(S) Do
If (S[i]>=’0’) and (S[i] <=’9’) Then Dem:=Dem+1;
Write(‘Tong so ky tu la so’,Dem);
Readln;
End
IV.CỦNG CỐ(2’):
- Nhận xét buổi thực hành=>đưa ra một số lổi thường gặp khi thực hành.
- Cần nắm cách khai báo biến xâu, các hàm và thủ tục xử lý xâu,
V.DẶN DÒ(1’): Đưa lên màn hình máy chiếu như sau:
Trang 18-Tiết sau học tiết: Tiết 32: Bài tập và Thực hành 5(t2) -Bài tập về nhà: 10,11/79(SGK)
- Xem và đọc trả lời các câu hỏi sau:
1.Hãy viết chương trình nhập vào từ bàn phím xâu S và đếm xâu S có bao nhiêu dấu cách?2.Hãy viết chương trình nhập từ bàn phím xâu S và tách một xâu con từ xâu S bắt đầu từ vị trí
- Hs tự xây dựng một số thật toán về xâu và soạn thảo trong NNLT Pascal
- Khắc sâu thêm phần kiến thức về lý thuyết kiểu xâu kí tự, đặc biệt các hàm và thủ tục liên quan
Tiết
30
Trang 192.Kỹ năng:
-Khai báo biến kiểu xâu
- Nhập, xuất giá trị cho biến xâu
- Duyệt qua tất cả các ký tự của xâu
11. Giáo viên: Giáo án, SGK, máy chiếu.
12. Học sinh: Chuẩn bị bài ở nhà.
D TIẾN TRÌNH LÊN LỚP:
I.ỔN ĐỊNH LỚP(1’):
Lớp 11A 1 11B 1 11B 2 11B 3 11B 4 Vắng
II.KIỂM TRA BÀI CŨ(3’): Gọi một Hs lên bảng viết
Hãy nêu cú pháp và ý nghĩa các hàm và thủ tục cơ bản xử lý xâu? Mỗi thủ tục hoặc hàm lấy một
ví dụ?
a.Đặt vấn đề(1’): Hôm nay chúng ta học bài “Bài tập và Thực hành5(t2)” để kiểm tra một số
thuật toán, một số thủ tục và hàm xử lý xâu
b.Triển khai bài mới:
Hãy gõ chương tình và chạy thử với các bộ
test như sau:
A=’abccba’
A=’fgđhfs’
Hs:Quan sát trên màn hình máy chiếu và SGK
để gõ chương trình vào NNLT Pascal
Gv: Quan sát Hs gõ chương trình và đưa ra
câu hỏi thảo luận như sau:
Với hai bộ test trên thì kết quả xuất ra màn
hình như thế nào?
Hs: Thực hành rồi trả lời kết qua.í
Gv: Hãy sửa lại chương trình trên mà không
Nhập vào từ bàn phím một xâu Kiểm tra xâu
đó có phải là xâu đối xứng hay không Xâu đối xứng có tính chất: đọc nó từ phải sang trái cũng thu được kết quả giống như đọc từ trái sang phải (Còn gọi xâu là palindrome)
a.Hãy chạy thử chương trình sau:
Var i,x:Byte;
a,p:String;
Begin Write(‘Nhap xau a=’); Readln(a);
P:=’’;
For i:=length(a) Downto 1 Do p:=p+a[i];
If a=p Then Write(‘Xau là palindrome) Else Write(‘Xau khong phai la palindrome); Readln;
End
b.Hãy viết lại chương trình trên, trong đó không dùng biến xâu p?
Var i,x:Byte;
a,p:String;
Trang 20-Soạn thảo chương trình
-Chạy thử chương trnhf với bộ Test trên
If i>(x div 2) Then Write(‘Xau là palindrome)
Else Write(‘Xau khong phai la palindrome);
Hoạt động 2(22’) (Rèn luyện kỷ năng lập trình)
Gv:Đưa câu hỏi lên máy chiếu
S=’AbaCDacd’
Hãy cho biết số lần xuất hiện của mỗi chữ cái
tiếng Anh trong S ( không phân biệt chữ hoa
Gv: Hãy viết đoạn chương trình đếm số lần
xuất hiện chữ cái trong tiếng Anh?
Kt:=True;
X:=length(a);
For i:=1 To x div 2 Do
If a[i]<> a[x-i+1] Then kt:=False;
If Kt Then Write(‘Xau là palindrome) Else Write(‘Xau khong phai la palindrome);Readln;
End
II.Vận dụng kiểu dữ liệu xâu để lập trình:
Bài 2: Viết chương trình nhập từ bàn phím một
xâu S và thông báo số lần xuất hiện của mỗi chữ cái tiếng Anh trong S ( không phân biệt chữ hoa hay chữ thường).
Input:Nhập xâu S Output: Đếm số lần xuất hiền chữ cái tiếng
anh
Trang 21Dem[S[i]]:=Dem[s[i]]+1;
End;
Gv:Yêu cầu hoạt động theo nhóm (2Hs/1máy
tính) theo mẫu sau:
Write('Nhap xau S='); Readln(S);
For ch:='A' To 'Z' Do Dem[ch]:= ;
For i:=1 to Length(S) Do
If S[i] in ['A' 'Z'] Then
Hãy viết chương trình đầy đủ và chạy thử
chương trình để để tra xem kết quả đúng?
Hs:Thảo luận theo nhóm để điền và chạy
chương trình rồi báo cáo kết quả
Gv:Quan sát và đưa toàn bộ chương trình lên
máy chiếu và chạy thử để Hs quan sát
Write('Nhap xau S='); Readln(S);
For ch:='A' To 'Z' Do Dem[ch]:=0;
For i:=1 to Length(S) Do
If S[i] in ['A' 'Z'] Then Begin
End.
IV.CỦNG CỐ(2’):
- Nhận xét buổi thực hành=>đưa ra một số lổi thường gặp khi thực hành.
- Cần nắm cách khai báo biến xâu, các hàm và thủ tục xử lý xâu,
- Cần nắm thuật toán đếm số lần xuất hiện chữ cái tiếng anh, kểu tra xâu đối xứng
V.DẶN DÒ(1’): Đưa lên màn hình máy chiếu như sau:
-Tiết sau học tiết: Tiết 33: Bài tập
-Bài tập về nhà:
1.Nhập từ bàn phím một xâu Thay thế tất cả các cụm kí tự 'anh' bằng cụm kí tự 'em'
Ngày soạn 18 tháng 12 năm 2008
KIỂU BẢN GHI
A.MỤC ĐÍCH:
1.Kiến thức:
- Biết được khái niệm về kiểu bảng ghi
- Biết cách khai báo bản ghi, truy xuất trường của bản ghi
- Phân biệt sự giống nhau và khác nhau giữa kiểu bản ghi với mảng một chiều
2.Kỹ năng:
Tiết
31
Trang 22- Khai báo được kiểu bản ghi, khai báo được biến kiểu bản ghi trong NNLT Pascal.
- Nhập xuất dữ liệu cho biến bản ghi
- Tham chiếu đến từng trường của kiểu bản ghi
- Sử dụng kiểu bản ghi để giải quyết một số bài toán
3.Thái độ:Tiếp tục rèn luyện các phẩm chất cần thiết của nguời lập trình như: ý thức chọn và xây
dựng kiểu dữ liệu, ý thức rèn luyện kỹ năng,
B.PHƯƠNG PHÁP: Nêu và giải quyết vấn đề + Thuyết trình
C.CHUẨN BỊ:
13. Giáo viên: Giáo án, SGK, máy chiếu.
14. Học sinh: Chuẩn bị bài ở nhà.
D TIẾN TRÌNH LÊN LỚP:
I.ỔN ĐỊNH LỚP(1’):
Lớp 11A 1 11B 1 11B 2 11B 3 11B 4 Vắng
II.KIỂM TRA BÀI CŨ: Không
a.Đặt vấn đề(2’): Đưa lên máy chiếu về bài toán cần giải quyết như sau:
Viết chương trình dùng để quản lí các thí sinh của một kỳ thi tuyển sinh
Chương trình của chúng ta cần quản lí được :
+ SBD của thí sinh,
+ Họ tên thí sinh,
+ Giới tính,
+ Điểm của các môn …
GV : Đưa ra một số câu hỏi sau :
- Làm thế nào để quản lý toàn bộ thông tin trên của học sinh ?
- Mỗi thông tin trên có kiểu dữ liệu là gì ?
HS : Có thể quản lý mỗi dữ kiện trên là một mảng một chiều
=>Ngôn ngữ lập trình bậc cao có cách tốt hơn để quản lý dữ liệu trên -> Bản ghi
b.Triển khai bài mới:
Hoạt động 1(10’)
(Giới thiệu một số khái niệm)
Gv:Đưa một bảng điểm trong SGK lên máy
I.Một số khái niệm:
- Kiểu bản ghi được dùng để mô tả cho các đốitượng có cùng một số thuộc tính mà các thuộctính có thể có các kiểu dữ liệu khác nhau
- Bản ghi thường được gọi là Record, mỗi Record
sẽ lưu trữ dữ liệu về một đối tượng cần quản lí
- Mỗi thuộc tính của đối tượng tương ứng với mộttrường của bản ghi Các trường khác nhau cóthể có dữ liệu khác nhau
- Các ngôn ngữ lập trình thường cho cách để xácđịnh :
+ Tên kiểu bản ghi + Tên các trường + Kiểu dữ liệu của trường + Cách khai báo biến +Cách tham chiếu đến trường
<Tên biến bản ghi> <Tên trường>
II.Khai báo biến bảng ghi:
Trang 23Gv: -Mỗi NN có một cách khai báo bảng ghi
khác nhau
-Ngôn ngữ Pascal không cho bạn khai báo biến
bản ghi trực tiếp mà phải khai báo biến bản ghi
thông qua khai báo kiểu bản ghi
-Trước hết phải khai báo kiểu bản ghi sau đó
biến bản ghi được khai báo thông qua kiểu bản ghi
này
GV : Làm thế nào để có thể khai báo được nhiều
biến bản ghi có cùng một kiểu ?
HS : GV sẽ gợi ý để học sinh đưa ra đó là sử dụng
kiểu mảng trong đó phần tử mảng sẽ có kiểu bản
ghi
Gv:Ví dụ về khai báo bản ghi
+Khai báo một kiểu bản ghi để xử lý bảng kết
quả thi của các học sinh
Mỗi bản ghi sẽ bao gồm : Họ và tên của học sinh
(Hoten), ngày tháng năm sinh(Ngaysinh), Giới tính
(NamNu), và điểm thi các môn của mỗi học sinh
(Toan, Ly, Hoa, Van, Su, Dia,Tin)
Hãy xác định kiểu dữ liệu cho các trường trên (Mỗi
nội dung trên là một trường của bản ghi)?
Hs:Vận dụng để viết cách khai báo
GV : Khi có nhu cầu thay đổi thông tin trong từng
trường, làm thế nào để truy cập thông tin vào từng
trường của bản ghi ?
Hs:Mỗi ngôn ngữ có một cách truy cập khác nhau
nhưng thường được viết là :
<Tên biến bản ghi>.<tên trường>
GV: Đưa ra một số ví dụ
Hoạt động 2(8’) (Giới thiệu cách gán giá trị)
Gv: Dựa vào cách khai báo biến bản ghi ở trên
hãy cho biết cách gán A:=B hoặc B:=A đúng
hay sai?
Hs:A, B cùng kiểu nên gán cho nhau đúng
Gv:Giới thiệu và đưa lên máy chiếu về nội dung
gán
1.Cách khai báo kiểu :
Type <Tên kiểu bản ghi>=Record
<Tên trường 1> : <Kiểu trường 1>;
Var A, B : Hocsinh ; Lop : Array[1 100] Of Hocsinh ;
Ví dụ : A.Hoten B.Ngaysinh Lop[i].Toan Lop[i].Ly
……… với i là chỉ số nào đó của mảng Lop
Để truy cập vào từng trường của bản ghi, ta viết:
<Tên biến bản ghi> <Tên trường>
III.Gián giá trị:
Có 2 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 bản ghicùng kiểu ta có thể gán giá trị của A cho B bằng câulệnh gán:
Vd : B := A ; hoặc A := B ;
- Gán giá trị cho từng trường Dùng câu lệnh gángán giá trị cho các trường hoặc nhập từ bàn phím
Trang 24A.Hoten := ‘Nguyen Van Tuan’ ;Readln(a.Ngaysinh);
Chương trình xử lý bảng kết quả thi
IV.CỦNG CỐ(8'): Đưa lên máy chiếu ví dụ như sau:
Ví dụ : Chương trình sau được viết trong ngôn ngữ Pascal dùng kiểu bản ghi để xử lý bảng kết quả thi baogồm 2 môn Toán, Văn của học sinh , Sau khi nhập xong danh sách sẽ đưa ra bảng kết quả học tập và xếp loại(xem kỹ đầu bài trong SGK)
(* Kieu ban ghi xu ly bang ket qua thi 2 mon : Toan, Van *)Type Hocsinh = Record
if Tg >= 18 then Lop[i].Xeploai := 'A'
Else if Tg >= 14 then Lop[i].Xeploai := 'B'
Else if Tg >= 10 then Lop[i].Xeploai := 'C'
V.DẶN DÒ(1’): Đưa lên màn hình máy chiếu như sau:
-Tiết sau học tiết: Tiết 35:Bài tập
- Về nhà đọc bài: Kiểu bản ghi
+Cách khai báo +Truy xuất dữ liệu+Nhập và in
Trang 25-Bài tập về nhà: bài11/80(SGK)
Thông tin về Hs gồm các trường:
+Họ Đệm:mỗi xâu 25 ký tự +Tên:mỗi xâu 10 ký tự +Tuổi:gồm một số nguyên hai chữ số +Lớp:Một xâu hai chữ số và một chữ cái viết hoa Hãy lập chương trình nhập từ bàn phím danh sách một lớp 15 học sinh vào một mảng bảng ghi Sau đó hiển thị danh sách lên màn hình, mỗi người một dòng?
Ngày soạn 19 tháng 12 năm 2008