Tải bản đầy đủ (.docx) (20 trang)

Tin 11 tuan 13 15 tiet 23 28

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (236.83 KB, 20 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

<i>Tuần: 13 - Tiết PPCT: 23</i> <i>Ngày dạy: </i>


<b>I. MỤC TIÊU: </b>
<i>1. Về kiến thức: </i>


Học sinh sau tiết học sẽ:


 Củng cố lại các kiến thức cơ bản về kiểu dữ liệu mảng.
<i>2. Về kỹ năng: </i>


 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:
 Khai báo kiểu dữ liệu mảng một chiều.


 Nhập, xuất dữ liệu mảng.


 Duyệt qua tất cả các phần tử của mảng.
<i>3. Về thái độ : </i>


 Rèn luyện cho học sinh thái độ tích cực, sáng tạo, chủ động trong việc tìm
kiếm kiến thức.


 Hứng thú trong việc viết chương trình giải toán .
<b>II. CHUẨN BỊ: </b>


<i>1. Giáo viên: </i>


 Sách giáo viên, máy vi tính đã cài đặt Turbo Pascal
<i>2. Học sinh: </i>


 Xem bài 11. Kiểu mảng



 Xem trước BÀI TẬP VÀ THỰC HÀNH 3
<b>III. PHƯƠNG PHÁP: </b>


 Phương pháp giảng dạy: nêu vấn đề và giải quyết vấn đề.
 Vấn đáp, gợi mở để học sinh tham gia tích cực vào bài học.
<b>IV. TIẾN TRÌNH DẠY HỌC:</b>


<i>1. Ổn định tổ chức: kiểm diện</i>
<i>2. Kiểm tra bài cũ:</i>


 GV đặt câu hỏi:


+ Trình bày thao tác nhập, xuất mảng 1 chiều
+ Trình bày thao tác nhập, xuất mảng 2 chiều


 GV nhận xét và cho điểm


</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

<i>3. Giảng bài mới:</i>


<b>Hoạt động của thầy, trò</b> <b>Nội dung</b>


GV: khai báo crt; có ý nghĩa gì?
Khai báo thư viện chương trình để
sử dụng được thủ tục clrscr;


GV: MyArray là tên biến hay tên
kiểu dữ liệu?


Tên kiểu dữ liệu.



GV:vai trị của nmax va n có gì
khác nhau?


<b>nmax là số phần tử tối đa của </b>
mảng, n là số phần tử thực tế của
mảng (n<=nmax).


GV khai báo randomize; có tác
dụng gì?


Khởi tạo cơ chế sinh số ngẫu
nhiên.


GV: lệnh gán
<b>A[i]:=random(300)-random(300); có tác dụng gì?</b>
Sinh ngẫu nhiên giá trị cho mảng
trong khoảng -299 đến 299.


GV: lệnh for...do cuối cùng thực
hiện nhiệm vụ gì?


Cộng các phần tử chia hết cho k.
GV: lệnh s:=s+A[i]; được thực hiện
bao nhiêu lần?


Số lần thực hiện bằng số phần tử
của mảng chia hết cho k.


Thực hiện chương trình với k,n
khác nhau để học sinh thấy được kết


quả.


Quan sát giáo viên thực hiện
chương trình .


Đặt câu hỏi giúp học sinh hiểu
được các câu lệnh cần thêm vào giúp
học sinh xác định vị trí cần thêm


<b>1. Bài 1: Tạo mảng A gồm n (n<=100) </b>
số nguyên, mỗi số có trị tuyệt đối khơng
vượt q 300. Tính tổng các phần tử của
mảng là bội số của một số nguyên dương
k cho trước.


<b>a. Tìm hiểu và chạy chương trình sau:</b>
<i><b>program Sum1;</b></i>


<i><b>uses crt;</b></i>


<i><b>const nmax=100;</b></i>


<i><b>type MyArray =array[1..nmax] of </b></i>
<i>integer;</i>


<i><b>var A: MyArray;</b></i>
<i> s,n,i,k: integer;</i>
<i><b>begin</b></i>


<i> clrscr;</i>


<i> randomize;</i>


<i> write('Nhap n= ');</i>
<i> readln(n);</i>


<i> { Tạo ngẫu nhiên mảng gồm n số </i>
nguyên }


<i><b> for i:=1 to n do</b></i>


<i> A[i]:=random(300)-random(300);</i>
<i> for i:=1 to n do</i>


<i> write(A[i]:5); {In ra mảng vừa tạo}</i>
<i> writeln;</i>


<i> write('Nhap k= ');</i>
<i> readln(k);</i>


<i> s:=0;</i>


<i> for i:=1 to n do</i>


<i> if A[i] mod k=0 then</i>
<i> s:=s+A[i];</i>


<i> writeln('Tong can tinh la: ',s);</i>
<i> readln;</i>


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

chính xác và dễ dàng hơn.



Quan sát, chú ý câu hỏi giáo viên
đặt ra, tìm câu trả lời, phát biểu ý
kiến.


GV: khai báo thêm 2 biến posi và
<b>neg có ý nghĩa gì?</b>


Suy nghĩ, tìm vị trí cần thêm vào
chương trình.


<b>posi lưu số số dương, neg lưu số số </b>
âm đếm được trong mảng.


<b>b. Thêm các lệnh mới vào những vị trí </b>
<b>cần thiết nhằm sửa đổi chương trình </b>
<b>trong câu a) để có được chương trình </b>
<b>đưa ra số các số dương và số các số âm</b>
<b>trong mảng.</b>


<i>posi, neg: integer;</i>
<i>posi:=0; neg:=0;</i>
<b>if A[i]>0 then</b>
<i> posi:=posi+1</i>
<b>else if A[i] <0 then</b>
<i> neg:=neg+1;</i>


<i>writeln(posi: 4, neg:4);</i>
<i>4.Củng cố và luyện tập:</i>



 Nhắc lại các kiến thức quan trọng cần nắm.


<b>- Sử dụng hàm random(n) để lấy giá trị ngẫu nhiên tử 0 đến n – 1, để có thể tạo</b>
ra giá trị âm thì dùng random(n) – random(n).


<i>5.Hướng dẫn học sinh chuẩn bị bài ở nhà:</i>


 Cho bài tập về nhà: Viết lại chương trình trên bằng cách nhập dữ liệu từ bàn
phím.


 Chuẩn bị tiếp bài thực hành 3.
<b>V. RÚT KINH NGHIỆM:</b>


+ 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: ...


<i>Tuần: 13 - Tiết PPCT: 24</i> <i>Ngày dạy: </i>


<b>I. MỤC TIÊU: </b>
<i>1. Về kiến thức: </i>


Học sinh sau tiết học sẽ:


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

<i>2. Về kỹ năng: </i>


 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.


 Giải được một số bài tốn cơ bản thường gặp.


 Tính tổng các phần tử thỏa mãn điều kiện.
 Đếm số các phần tử thỏa mãn điều kiện.
 Tìm phần tử lớn nhất, nhỏ nhất.


<i>3. Về thái độ : </i>


 Rèn luyện cho học sinh thái độ tích cực, sáng tạo, chủ động trong việc tìm
kiếm kiến thức.


 Hứng thú trong việc viết chương trình giải tốn .
<b>II. CHUẨN BỊ: </b>


<i>1. Giáo viên: </i>


 Sách giáo viên, máy vi tính đã cài đặt Turbo Pascal
<i>2. Học sinh: </i>


 Xem bài 11. Kiểu mảng


 Xem trước BÀI TẬP VÀ THỰC HÀNH 3 (tt)
<b>III. PHƯƠNG PHÁP: </b>


 Phương pháp giảng dạy: nêu vấn đề và giải quyết vấn đề.
 Vấn đáp, gợi mở để học sinh tham gia tích cực vào bài học.
<b>IV. TIẾN TRÌNH DẠY HỌC:</b>


<i>1. Ổn định tổ chức: kiểm diện</i>



<i>2. Kiểm tra bài cũ: trong quá trình giảng bài</i>
<i>3. Giảng bài mới:</i>


<b>Hoạt động của thầy,</b>


<b>trò</b> <b>Nội dung</b>


GV: câu lệnh if...else...if có
tác dụng gì?


Kiểm tra số dương, số âm
và đếm.


GV: nên chèn các câu lệnh
trên vào vị trí nào trong
chương trình ở câu a?




u cầu học sinh gõ lại
chương trình, thực hiện và


<b>2. Bài 2: Viết chương trình tìm phần tử có giá trị </b>
lớn nhất của mảng, đưa ra màn hình chỉ số và giá
trị của phần tử tìm được. Nếu có nhiều phần tử có
cùng giá trị lớn nhất thì đưa ra phần tử có chỉ số
nhỏ nhất.


<b>a. Hãy tìm hiểu chương trình sau đây:</b>
<b>program MaxElement;</b>



<b>const Nmax=100;</b>


</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

xem kết quả.


Chỉ ra vị trí cần chèn.


Thực hiện yêu cầu của giáo
viên và báo cáo kết quả.
Viết chương trình và chạy
thử.


Đặt câu hỏi tới đâu, giải
thích chương trình tới đó
giúp học sinh khắc sâu kiến
thức.


Quan sát, chú ý, suy nghĩ
và trả lời.


GV:Vai trò của biến i, j
trong chương trình?


<b>i:biến điều khiển.</b>


<b>j: lưu chỉ số của phần tử có </b>
giá trị lớn nhất.


GV: Muốn tìm phần tử nhỏ
nhất cần sửa chỗ nào?



Thay câu lệnh so sánh A[i]
<b>> A[j] </b><b> A[i]< A[j]</b>


GV:muốn tìm phần tử lớn
nhất với chỉ số lớn nhất thì
làm sao?


Thay câu lệnh for i:=1 to
<b>n do </b><b> for i:=n-1 to 1 do</b>
<b>Chú ý: Nếu có thời gian,</b>
thực hiện những thay đổi
trên và chạy chương trình
cho học sinh quan sát.


GV: cần giữ lại đoạn
chương trình trên không?
Cần.


GV: cần thêm những lệnh


<b>var A:MyArray;</b>
<i> n,i,j: integer;</i>
<b>begin</b>


<i> write('Nhap so luong phan tu cua day so,n= ');</i>
<i> readln(n);</i>


<i> for i:=1 to n do</i>
<i> begin</i>



<i> write('Phan tu thu ',i,' = ');</i>
<i> readln(A[i]);</i>


<b> end;</b>
<i> j:=1;</i>


<i> for i:=2 to n do</i>


<i> if A[i] > A[j] then</i>
<i> j:=i;</i>


<i> write('Chi so: ',j,' Gia tri: ',A[j]:4);</i>
<i> readln</i>


<i>end.</i>


<b>b. Chỉnh sửa chương trình trên để đưa ra</b>
<b>chỉ số của các phần tử có cùng giá trị lớn nhất.</b>
Program MaxElement;


Const Nmax = 100;


Type MyArray = array[1..Nmax]
of integer;


Var A: MyArray;


n, i, j: integer;
Begin



Write(‘Nhap so luong phan tu cua
day so, N= ‘);


Readln(N);


For i:=1 to N do
Begin


write(‘Phan tu thu ‘, i,
‘=’);


readln(A[i]);
End;


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

nào? Vị trí cần thêm?




u cầu học sinh hồn thiện
chương trình, chạy thử và
báo cáo kết quả.


Thêm lệnh in ra các chỉ số
của các phần tử có giá trị
bằng giá trị lớn nhất. Thêm
vào sau khi tìm được giá trị
lớn nhất.


for i:=2 to N do if A[i] > A[j]


then j:=I;


write(‘Phan tu lon nhat la ‘,
A[j]);


write(‘Cac chi so la’);
for i:=1 to N do


if A[i] = A[j] then
writeln(i);


Readln
End.
<i>Củng cố và luyện tập:</i>


<b>- Cấu trúc chương trình:</b>
<b>{Khai báo biến}</b>


<b>Phần thân:</b>


Nhập giá trị N cho biết số lượng phần tử của mảng.


Khởi tạo giá trị cho tất cả các phần tử của mảng (sử dụng vòng lặp for-do
và lệnh readln hoặc hàm random).


Các câu lệnh xử lý các phần tử của mảng.
Xuất ra dữ liệu theo đề bài yêu cầu.


<i>4.</i> <i>Hướng dẫn học sinh chuẩn bị bài ở nhà:</i>



 Cho bài tập về nhà: Viết lại chương trình trên bằng cách nhập dữ liệu từ bàn
phím.


 Chuẩn bị bài mới.


<b>V. RÚT KINH NGHIỆM:</b>


</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

<i>Tuần: 14 - Tiết PPCT: 25</i> <i>Ngày dạy: </i>


<b>I. MỤC TIÊU:</b>


<i>1.Về kiến thức: Học sinh sau tiết học sẽ:</i>


<b>-</b>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.
<b>-</b>Các phép so sánh trên xâu. Sử dụng được một số thủ tục, hàm thông dụng về
xâu.


<i><b>-</b></i>Cài đặt một số chương trình đơn giản có sử dụng xâu. Phân biệt được sự giống
và khác nhau giữa kiểu mảng với xâu.


<i>2.Về kỹ năng: </i>


- Khai báo được biến kiểu xâu trong ngơn ngữ lập trình Pascal.
- Có thể nhập hay xuất giá trị của một biến kiểu xâu.


- So sánh hai xâu. Sử dụng biến xâu, các phép toán và các hàm, thủ tục chuẩn
trên xâu để giải quyết một bài toán đơn giản.


<i>3.Về thái độ:</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.


<b>II. CHUẨN BỊ:</b>
<i>1.Giáo viên:</i>


- Sách giáo viên


- Dặn dò học sinh xem trước bài ở nhà.
<i>2.Học sinh:</i>


- Xem trước bài 12: “ Kiểu xâu”.
<b>III. PHƯƠNG PHÁP:</b>


Diễn giảng, nêu vấn đề
<b>IV. TIẾN TRÌNH DẠY HỌC:</b>


<i>1. Ổn định tổ chức : Kiểm diện</i>
<i>2. Kiểm tra bài cũ:</i>


<i><b>Câu hỏi: Viết chương trình cho phép nhập và in ra màn hình họ tên của một </b></i>
hs trong lớp. Với yêu cầu trên ta sẽ sử dụng kiểu dữ kiệu đã học nào? Và khai
báo ra sao?


- Kiểu dữ liệu mảng một chiều và kiểu các phần tử là kiểu kí tự.
- Var hoten : array [1..50] of char


</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

<i>3. Giảng bài mới:</i>


<b>Hoạt động của thầy trò</b> <b>Nội dung</b>



<i><b>Hoạt động 1: Giới thiệu mục đích </b></i>
<i><b>bài dạy và một số khái nệm về kiểu </b></i>
<i><b>xâu.</b></i>


<b>GV bài toán đặt vấn đề: Viết chương </b>
<i>trình nhập và in ra màn hình họ tên </i>
<i>của một học sinh trong lớp.</i>


<b>GV: Ta sẽ sử dụng kiểu dữ liệu đã </b>
học nào? Khai báo ra sao?


<b>HS: Kiểu mảng 1 chiều. Khai báo:</b>
Var A:array[1..50] of char;


<b>GV: Khai báo cho phép nhập vào họ </b>
<i>tên của 50 học sinh? Giải quyết bài </i>
toán trên gặp phải khó khăn gì?
<b>HS: Chương trình giải quyết dài </b>
dịng. Khó khăn khi nhập dữ liệu.
==> Để giải quyết vấn đề này, chúng
ta tìm hiểu một kiểu dữ liệu mới –
<b>kiểu xâu.</b>


<b>GV: Vậy xâu là gì? Yêu cầu HS cho </b>
một số vd về xâu. Độ dài của xâu là
bao nhiêu? Có thể xem xâu là mảng
một chiều được khơng? Tham chiếu
như thế nào?



<b>GV trình bày khái niệm, ví dụ và giới</b>
thiệu các thành phần của xâu, cách
tham chiếu đến các kí tự.


<i><b>Hoạt động 2: Khai báo biến kiểu </b></i>
<i><b>xâu</b></i>


<b>GV trình bày cách khai báo xâu. Yêu </b>
cầu học sinh giải thích ý nghĩa của
<i><b>string .</b></i>


<b>HS: nghiêm túc lắng nghe, trả lời và </b>
ghi chép.


<b>Lưu ý: có thể bỏ qua phần khai báo</b>


<b>I. Khái niệm:</b>


- Xâu là dãy các kí tự trong bộ mã
ASCII.


- 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 của xâu.


- Xâu có độ dài bằng 0 gọi là xâu
rỗng.



vd: ‘Lop11A5’, độ dài là 8
‘Pascal’, độ dài là 6
<b>Chú ý : </b>


+ Có thể xem xâu là mảng một chiều
mà mỗi phần tử là một kí tự. Các kí tự
của xâu được đánh số thứ tự, thường bắt
đầu từ 1.


+ Tham chiếu tới phần tử của xâu:
<Tên biến xâu>[chỉ số]


<b>vd: Biến Lop lưu trữ giá trị hằng xâu </b>
‘Lop11<i><b>A</b><b>5’ thì Lop[6] cho ta kí tự thứ 6 </b></i>
là ‘A’.


<b>II. Khai báo biến xâu:</b>
1. Khai báo:


<b>Var <tên biến>: string[độ dài lớn nhất </b>
của xâu];


<b>vd: var Hoten : string [30];</b>
Var Lop: string [5];
var Mahs : string;
<b>Lưu ý: </b>


+ Giá trị hằng xâu được đặt trong dấu
nháy đơn ‘’.



</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

độ dài của xâu. Xâu được tạo thành
bởi các kí tự, trong đó có thể có dấu
cách. Dấu cách thể hiện trong văn
bản là phần trống ngăn cách giữa hai
từ viết liên tiếp.


<b>GV yêu cầu HS khai báo biến Hoten </b>
và biến Lop thuộc kiểu xâu.


<b>GV: Xâu chỉ gồm một dấu cách</b>
được viết như thế nào? Số lượng kí
tự là bao nhiêu? Xâu rỗng được viết
như thế nào? Số lượng kí tự là bao
nhiêu?


<b>HS: Nghiên cứu SGK, trả lời và ghi</b>
chép.


<b>GV trình bày ngồi cách nhập giá trị </b>
xâu mà ta đã học, có thể sử dụng
lệnh gán để nhập giá trị cho biến
xâu.


<b>GV yêu cầu HS cho vd về lệnh gán </b>
giá trị cho xâu.


<b>GV trình bày một vd cho HS nhận xét</b>
lệnh nào đúng?giải thích.


<b>HS: Quan sát chương trình, suy nghĩ</b>


và trả lời. Chú ý quan sát và ghi chép
<i><b>Hoạt động 3: Các thao tác xử lý </b></i>
<i><b>xâu:</b></i>


<b>GV trình bày các thao tác xử lý xâu. </b>
Em hiểu thế nào về ghép xâu?


<b>HS: Trả lời và ghi chép</b>
<b>GV lắng nghe và nhận xét. </b>


<b>GV: Gọi HS cho vd về ghép xâu.</b>
<b>GV: Gọi HS nêu các phép so sánh đã</b>
biết.


Mức độ ưu tiên của nó và phép ghép
xâu, cái nào hơn?


<b>GV: Trình bày các quy tắc so sánh.</b>
<b>HS: Chú ý quan sát, nghe giảng và </b>


+ Xâu rỗng, có độ dài là 0. Kí hiệu là
<b>‘’.</b>


<i><b>2. Gán giá trị cho biến xâu:</b></i>


<b>Tên_biến_xâu:= hằng xâu;</b>
Vd: st:= ‘Nguyen Trai’;


Hoten:= ‘Nguyen Van Cuong’;



<b>Chú ý: “Khi sử dụng lệnh gán, ta có thể</b>
gán trị là một kí tự cho một biến xâu kí
tự nhưng việc gán trị là một xâu kí tự
cho một biến kiểu kí tự là khơng hợp lệ
dù xâu đó có độ dài bằng 1.”


<b>Vd</b>


<b> : Var st: string[1]; c : char;</b>
Begin


c := st[1]; {1} <sub></sub> đúng


c := st; {2} <sub></sub> Sai


End.


<b>III. Các thao tác xử lý xâu:</b>
<i><b>1. Phép ghép xâu:</b></i>


+ Kí hiệu: (+), sử dụng để ghép nhiều
xâu thành một.


<b>Vd: ‘Ha’ + ‘Noi’ + ‘ - ’+ ‘Viet Nam’ </b>
 ‘Ha Noi - Viet Nam’.


<i><b>2. Phép so sánh:</b></i>


Các phép so sánh: bằng (=), khác (<>),
nhỏ hơn (<), lớn hơn (>), nhỏ hơn hoặc


bằng (<=), lớn hơn hoặc bằng (>=)


Có thứ tự ưu tiên thấp hơn phép
ghép xâu.


 Theo quy tắc:


+ A> B nếu kí tự đầu tiên khác nhau
giữa chúng từ trái sang trong xâu A có
mã ASCII lớn hơn.


+ A và B có độ dài khác nhau và A là
đoạn đầu của B thì A < B.


+ A = B nếu A và B giống nhau hoàn
toàn.


</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

ghi chép.


<b>GV: Hai xâu như thế nào được gọi </b>
là bằng nhau?


<b>GV: Đưa ra vd để HS so sánh.</b>


<b>GV: Giới thiệu một số thủ tục xử lý </b>
xâu.


<b>GV: Trình bày thủ tục Delete.Gọi </b>
HS giải thích ý nghĩa thủ tục và các
tham số của thủ tục



<b>HS: Nghiên cứu SGK và trả lời.</b>
<b>GV: Đưa ra vd và gọi HS trả lời kết </b>
quả


<b>GV: Em hiểu thế nào về thủ tục </b>
<i><b>insert?</b></i>


<b>HS: Nghiên cứu SGK và trả lời</b>


<b>GV: Trình bày thủ tục Insert.Đưa ra </b>
vd và gọi HS cho kết quả của thủ tục.
<b>HS: Trả lời và ghi chép.</b>


thể lớn hơn (>) xâu có độ dài lớn hơn
<b>Vd: ‘AC’ > ’ABC’</b>


<i><b>3. Một số hàm và thủ tục xử lý xâu:</b></i>
a) Thủ tục:


 Delete(st,vt,n) : thực hiện xóa n kí
tự của biến xâu st bắt đầu từ vị trí vt.
<b>Vd: st1:= ‘Tay Ninh’</b>


Delete(st1,4,5) <sub></sub> ‘Tay’
St2:= ‘Nam Bo’


Delete(st2,4,3) <sub></sub> ‘Nam’


 Insert(s1,s2,vt): chèn xâu s1 vào


xâu s2, bắt đầu ở vị trí vt.


<b>Vd: s1:= ‘.’</b>


S2:= ‘TPHCM’


Insert(s1,s2,3) <sub></sub> ‘TP.HCM’


<i>4. Củng cố và luyện tập:</i>


Cách khai báo biến kiểu xâu : Var <tên biến>: string[n]; n độ dài lớn nhất
của xâu (có thể khơng khai báo khi đó giá trị ngầm định là 255)


Các thao tác trên xâu: ghép xâu, so sánh xâu theo thứ tự từ điển.
Những hàm và thủ tục liên quan đến xâu :


+ Thủ tục Delete(st, vt,n); + Thủ tục Insert(st1,st2,vt);
<i><b> 5. Hướng dẫn học sinh chuẩn bị bài ở nhà:</b></i>


Học bài và làm lại các ví dụ trong sách giáo khoa trên máy.
Xem và chuẩn bị tiếp bài 12 KIỂU XÂU.


<b>V- RÚT KINH NGHIỆM:</b>


</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>

<i>Tuần: 14 - Tiết PPCT: 26</i> <i>Ngày dạy: </i>


<b>I. MỤC TIÊU:</b>


<i>1.Về kiến thức: Học sinh sau tiết học sẽ:</i>



<b>-</b>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.
<b>-</b>Các phép so sánh trên xâu. Sử dụng được một số thủ tục, hàm thông dụng về
xâu.


<i><b>-</b></i>Cài đặt một số chương trình đơn giản có sử dụng xâu. Phân biệt được sự giống
và khác nhau giữa kiểu mảng với xâu.


<i>2.Về kỹ năng: </i>


- Khai báo được biến kiểu xâu trong ngơn ngữ lập trình Pascal.
- Có thể nhập hay xuất giá trị của một biến kiểu xâu.


- So sánh hai xâu. Sử dụng biến xâu, các phép toán và các hàm, thủ tục chuẩn
trên xâu để giải quyết một bài toán đơn giản.


<i>3.Về thái độ:</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.


<b>II. CHUẨN BỊ:</b>
<i>1.Giáo viên:</i>


- Sách giáo viên


- Dặn dò học sinh xem trước bài ở nhà.
<i>2.Học sinh:</i>


- Xem tiếp bài 12: “ Kiểu xâu”.
<b>III. PHƯƠNG PHÁP:</b>



Diễn giảng, nêu vấn đề
<b>IV. TIẾN TRÌNH DẠY HỌC:</b>


<i>1. Ổn định tổ chức : Kiểm diện</i>


<i>2. Kiểm tra bài cũ: trong quá trình giảng bài</i>
<i>3. Giảng bài mới:</i>


<b>Hoạt động của thầy trò</b> <b>Nội dung</b>


<i><b>Hoạt động 1: Các hàm xử lý </b></i>
<i><b>xâu (tiếp theo)</b></i>


<b>GV: Trình bày các hàm xử lý </b>


<i><b>3. Một số hàm và thủ tục xử lý xâu </b><b> (tt)</b><b> : </b></i>
b) Hàm xử lý xâu:


</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>

xâu.


<b>GV: Trình bày hàm copy.</b>
<b>HS: chú ý nghe giảng và ghi </b>
chép.


<b>GV: Gọi HS giải thích ý nghĩa </b>
các tham số trong hàm.


<b>GV: Đưa ra xâu và hàm copy yêu</b>
cầu HS đưa ra kết quả.



<b>GV: Em hiểu thế nào về hàm </b>
<i><b>length?Gọi HS cho vd hàm </b></i>
<i><b>length.</b></i>


<b>HS: nghiên cứu SGK và nghiêm </b>
túc trả lời.


<b>GV: Em hiểu thế nào là hàm pos?</b>
Gọi HS cho vd


<b>GV: Em hiểu thế nào về hàm </b>
<i><b>upcase?Cho vd?</b></i>


<b>HS: Nghiên cứu SGK và trà lời.</b>
<b>GV: Giới thiệu một số thủ tục xử </b>
lý xâu.


<i><b>Hoạt động 2: Một số ví dụ</b></i>


<i><b>GV: Viết chương trình cho nhập </b></i>
họ tên của hai người vào hai biến
xâu và đưa ra xâu dài hơn, nếu
bằng nhau thì đưa ra xâu nhập
sau.


<i><b>GV: Hỏi học sinh: làm thế nào để</b></i>
xác định độ dài của chuỗi?


<i><b>HS: Nêu lên cách giải quyết vấn </b></i>


đề.


<i><b>GV: Nhận xét câu trả lời của HS.</b></i>
<i><b>GV: Sau khi đã xác định được độ</b></i>
dài của hai chuỗi ta dùng phép so
sánh trong câu lệnh If để xuất
chuỗi ra màn hình theo yêu cầu


tự liên tiếp bắt đầu từ vị trí vt của xâu S.
<b>Copy (S, vt, N)</b>


<b>vd: s:= ‘Bai Kieu Xau’</b>


copy (s, 5,8) <sub></sub> ‘Kieu Xau’


 Hàm length(s) : cho giá trị là độ dài
xâu.


<b>Vd: s:= ‘Lap trinh Pascal’ </b><sub></sub> length(s) =16
 Hàm pos(s1,s2) : cho vị trí xuất hiện


đầu tiên của xâu s1 trong xâu s2.
<b>Vd: S2:= ‘Lop 11A5 co 45 HS’</b>


Pos(’45 HS’, S2) <sub></sub> 13.
Pos (‘b’, S2) <sub></sub> 0.


 Hàm upcase(ch): cho chữ cái in hoa
ứng với chữ cái trong ch



<b>Vd: ch:= ‘h’ </b><sub></sub> ‘H’
<b>IV. Một số ví dụ : </b>


<b>Ví dụ 1: Viết chương trình cho nhập họ </b>
<i>tên của hai người vào hai biến xâu và đưa </i>
<i>ra xâu dài hơn, nếu bằng nhau thì đưa ra </i>
<i>xâu nhập sau.</i>


Program Vi_du_1;
Uses Crt;


Var a,b : string;
Begin


write(‘Ho ten thu nhat:
’); readln(a);


write(‘Ho ten thu hai:
’); readln(b);


if length(a) > length(b)
Then


write(a);
else


write(b);
readln


End.



</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>

của bài tốn.


<i><b>GV: Viết chương trình nhập hai </b></i>
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.


<i><b>GV: Xác định độ dài của xâu b </b></i>
để biết được vị trí cuối cùng của
xâu b. Sau đó so sánh ký tự đầu
tiên của xâu thứ nhất (a[1]) với
ký tự cuối cùng của xâu thứ hai
(b[x]) để tìm ra kết quả.


<i><b>GV: Viết chương trình nhập vào </b></i>
một xâu từ bàn phím và đưa ra
màn hình xâu đó nhưng được viết
theo thứ tự ngược lại.


<i><b>GV: Dùng biến k để xác định </b></i>
chiều dài của xâu a. Dùng vòng
lặp for chạy từ vị trí cuối cùng
đến vị trí đầu tiên của xâu a rồi
xuất ra kết quả cần tìm.


<i><b>GV: Viết chương trình nhập vào </b></i>
một xâu từ bàn phím và đưa ra



<i>xâu thứ nhất có trùng với ký tự cuối cùng </i>
<i>của xâu thứ hai không.</i>


Program Vi_du_2;
Uses Crt;


Var x: byte;


a,b : string;
Begin


write(‘Nhap xau mot: ’);
readln(a);


write(‘Nhap xau hai: ’);
readln(b);


x:=length(b);


if a[1]=b[x] then


write(‘Trung nhau’);
else


write(‘Khac nhau’);
readln


End.


Ví dụ 3: Viết chương trình nhập vào một


<i>xâu từ bàn phím và đưa ra màn hình xâu </i>
<i>đó nhưng được viết theo thứ tự ngược lại.</i>
Program Vi_du_3;


Uses Crt;


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.


<b>Ví dụ 4: Viết chương trình nhập vào một </b>
<i>xâu từ bàn phím và đưa ra màn hình xâu </i>
<i>thu được sau khi loại bỏ các dấu cách nếu </i>
<i>có.</i>


</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14>

màn hình xâu thu được sau khi
loại bỏ các dấu cách nếu có.


<i><b>GV: Gán biến k để chứa độ dài </b></i>


của xâu a, khởi tạo b với giá trị
rỗng (xâu dùng để chứa xâu kết
quả xuất ra màn hình).


<i><b>GV: Dùng vịng lặp for quét toàn </b></i>
bộ xâu a và loại bỏ các dấu cách,
sau đó gán lấn lượt kết quả vào
cho xâu b.


<i><b>GV: Xâu b là kết quả xuất ra màn</b></i>
hình.


<i><b>GV: Viết chương trình nhập vào </b></i>
xâu ký tự s1 từ bàn phím, 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.


<i><b>GV: Sau khi nhập vào xâu s1, ta</b></i>
khởi tạo cho xâu s2 bằng rỗng
nhằm gán các số tìm được trong
xâu s1 vào xâu s2.


<i><b>GV: Cho vòng lặp for chạy từ vị</b></i>


Uses Crt;


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(‘Ket qua:
’,b);


readln
End.


<b>Ví dụ 5: Viết chương trình nhập vào xâu</b>
<i>ký tự s1 từ bàn phím, tạo xâu s2 gồm tất cả</i>
<i>các chữ số có trong s1 (giữ nguyên thứ tự</i>
<i>xuất hiện của chúng) và đưa kết quả ra</i>
<i>màn hình.</i>


Program Vi_du_5;
Uses Crt;


Var s1, s2 :string;
i: byte;



Begin


Clrscr;


write (‘Nhap vao xâu s1:
’);


readln(s1);
s2:= ‘’;


for i:= 1 to length(s1)
do


If(‘0’<= s1[i]) and
(s1[i]<=‘9’) then


s2:=s2 + s1[i];
writeln(‘Ket qua: ’,s2);
readln;


</div>
<span class='text_page_counter'>(15)</span><div class='page_container' data-page=15>

trí đầu tiên đến vị trí cuối cùng
của xâu s1, nếu tìm thấy số nào
trong xâu s1 nằm trong khoảng từ
0 đến 9 thì đưa vào xâu s2.


<i><b>GV: Xuất xâu s2 ra màn hình</b></i>
<i>4. Củng cố và luyện tập:</i>


Những hàm liên quan đến xâu :



+ Hàm Copy(st, vt, n); + Hàm Length(st);
+ Hàm Pos(st1, st2); + Hàm UpCase(ch);
<i> 5. Hướng dẫn học sinh chuẩn bị bài ở nhà:</i>


Học bài và làm lại các ví dụ trong sách giáo khoa trên máy.
Xem và chuẩn bị Bài BÀI TẬP VÀ THỰC HÀNH SỐ 4.
Chuẩn bị một số bài tập để thực hành.


<b>V- RÚT KINH NGHIỆM:</b>


+ 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: ...


<i>Tuần:15 - Tiết PPCT: 27</i> <i>Ngày dạy: </i>


<b>I. MỤC TIÊU: </b>
<i>1. Về kiến thức: </i>


Học sinh sau tiết học sẽ:


<b>-</b> Củng cố cho học sinh những hiểu biết về sâu.


<b>-</b> 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í
văn bản



<i>2. Về kỹ năng: </i>


<b>-</b> 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.


<b>-</b> Khai báo kiểu xâu.


</div>
<span class='text_page_counter'>(16)</span><div class='page_container' data-page=16>

<b>-</b> Nhập dữ liệu cho xâu, đưa ra màn hình giá trị của xâu.
<b>-</b> Sử dụng các hàm và thủ tục chuẩn đã trình bày ở SGK.
<i>3. Về thái độ : </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


 Tạo lòng ham muốn giải được một số bài tập tính tốn đơn giản bằng


ngơn ngữ Pascal
<b>II. CHUẨN BỊ: </b>


<i>1. Giáo viên: </i>


 Sách giáo viên, máy vi tính đã cài đặt Turbo Pascal
<i>2. Học sinh: </i>


 Sách giáo khoa, tập vở. Xem lại bài KIỂU XÂU.
 Xem trước BÀI TẬP VÀ THỰC HÀNH 4


<b>III. PHƯƠNG PHÁP: </b>



Phương pháp vấn đáp, kết hợp tạo tình huống có vấn đề
<b>IV. TIẾN TRÌNH DẠY HỌC:</b>


<i>1. Ổn định tổ chức: kiểm diện</i>
<i>2. Kiểm tra bài cũ:</i>


<b>Câu 1. Var</b>


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ì? (2đ)


<b>Câu 2. Thủ tục Delete(st,vt,n)và Insert(s1,s2,vt) thực hiện cơng việc gì? Cho </b>
ví dụ minh hoạ.(6đ)



<i>3. Giảng bài mới:</i>


<b>Hoạt động của</b>


</div>
<span class='text_page_counter'>(17)</span><div class='page_container' data-page=17>

<b>Bài tập 1</b>


Giáo viên : Cho 2 ví dụ
về hai xâu khác nhau để
cho học sinh hiểu thế nào
là xâu palindrome?


Học sinh: Xem chương
trình bài1 và giải thích
các lệnh


Giáo viên đặt câu hỏi:
a. Nhận xét về các cặp kí
tự ở vị trí đối xứng nhau
trong một xâu


palindrome ?


b. Kí tự ở vị trí i đối
xứng với kí tự ở vị trí
nào?


c. Phải so sánh bao


nhiêu cặp kí tự trong xâu
để biết được xâu đó có là


palindrome hay khơng?
<b>Giải thích</b>


a. Kí tự đầu xâu đối xứng
với kí tự cuối xâu, kí tự
thứ 2 trong xâu đối xứng
với kí tự đứng ngay trước
kí tự cuối xâu


b. Giả sử chiều dài của
xâu là x thì kí tự ở vị trí
thứ I đối xứng với kí tử ở
vị trí thứ


x-i+1


c. Phải so sánh x/2 cặp kí
tự trong xâu để biết được


1. Định nghĩa xâu palindrome:
* Ý tưởng:


<b>- Nhập vào xâu a.</b>


<b>- Tạo xâu p mới từ xâu a có thứ tự ngược lại.</b>
<b>- So sánh xâu p với xâu a:</b>


+ Nếu xâu p = xâu a thì thơng báo xâu a là xâu
palindrome.



+ Ngược lại thông báo không là xâu
palindrome.


<b>* Chương trình bài tập 1.a (SGK/ 73)</b>
<b>* Chương trình 1.b</b>


* Ý tưởng 1. b:


<b>- Trong xâu palindrome:</b>


<b>+ s[i] = s[length(s) – i + 1];</b>


<b>+ Dùng vòng lặp để thực hiện các phép so sánh</b>
từng cặp kí tự trên.


<b>+ Nếu một cặp kí tự ở vị trí đối xứng nhau</b>
nhưng khác nhau thì kết luận xâu đó khơng là
palindrome.


<b>+ Dùng biến lôgic để ghi nhận sự phát hiện</b>
này.


Var i, x: byte;
a: string;


palin: boolean;
Begin


Write (‘ Nhap vao xau: ‘);
Readln ( a );



x: = length ( a ) ; // xác định
độ dài xâu


palin:= true; // khởi tạo palin,
tạm coi xâu a là palindrome


For i:= 1 to x div 2 do // so
sánh cặp kí tự đối xứng


</div>
<span class='text_page_counter'>(18)</span><div class='page_container' data-page=18>

xâu đó có là palindrome
hay khơng


Học sinh: Viết chương
trình câu 1b.


If palin then writeln (‘
Xau la palindrome’)


Else Writeln ( ‘ Xau
khong la xau palindrome’)


readln;
End.


4. Củng cố và luyện tập<i> : </i>


<b>- Nhắc lại kỹ thuật đặt cờ hiệu trong lập trình.</b>
5. Hướng dẫn học sinh chuẩn bị bài ở nhà:



 Xem tiếp bài BÀI TẬP VÀ THỰC HÀNH 4.
<b>V. RÚT KINH NGHIỆM:</b>


+ 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: ...


<i>Tuần:15 - Tiết PPCT: 28</i> <i>Ngày dạy: </i>


<b>I. MỤC TIÊU: </b>
<i>1. Về kiến thức: </i>


– Củng cố những kiến thức đã có khi lập trình với kiểu dữ liệu xâu.


– Biết một vài thuật toán cơ bản và đơn giản thường gặp khi xử lí văn bản.
<i>2. Về kỹ năng: </i>


<b>–</b> Biết khai báo xâu, nhập dữ liệu cho xâu, đưa ra màn hình giá trị của xâu.
<b>–</b> Biết duyệt qua tất cả các kí tự của xâu để thực hiện xử lí tương ứng với


từng kí tự đó.


<b>–</b> Sử dụng được các hàm và thủ tục chuẩn đã trình bày ở sách giáo khoa.
<b>–</b> Biết tạo xâu mới từ một xâu ban đầu.


</div>
<span class='text_page_counter'>(19)</span><div class='page_container' data-page=19>

<b>–</b> Tìm kiếm và thay thế sự xuất hiện một từ bằng một từ khác trong tồn bơ
văn bản.



<i>3. Về thái độ : </i>


<b>–</b> Có ý thức viết chương trình với khối lượng tính tốn ít nhất có thể được.
<b>–</b> Tích cực học tập, hình thành và rèn luyện tư duy lập trình, tác phong của


người lập trình.
<b>II. CHUẨN BỊ: </b>


<i>1. Giáo viên: </i>


 Sách giáo viên, máy vi tính đã cài đặt Turbo Pascal
<i>2. Học sinh: </i>


 Xem tiếp BÀI TẬP VÀ THỰC HÀNH 4
<b>III. PHƯƠNG PHÁP: </b>


Phương pháp vấn đáp, kết hợp tạo tình huống có vấn đề
<b>IV. TIẾN TRÌNH DẠY HỌC:</b>


<i>1. Ổn định tổ chức: kiểm diện</i>
<i>2. Kiểm tra bài cũ:</i>


Viết chương trình cho phép nhập và in ra màn hình họ tên, lớp, trường của
một học sinh. (10đ)


<i>3. Giảng bài mới:</i>


<b>Hoạt động của thầy,</b>



<b>trò</b> <b>Nội dung</b>


<b>Bài tập 2</b>


Giáo viên : Hướng dẫn cho học
sinh phần khai báo mảng đếm
Học sinh: Về nhà hồn thiện
chương trình


<b>Bài tập 3</b>


Giáo viên: Gợi ý bài 3
{ Phần khai báo}


begin


{ Nhập xâu S }


{ Chừng nào tìm thấy xâu con “


<b>* Chương trình bài 2</b>
{ Phần khai báo}
Begin


{ Nhập xâu S }
N: = Length (s);


{ Khởi trị cho mảng đếm}
For i:= 1 to N do



{ Nếu s[i] là chữ cái thì đếm tăng cho s[i] }
For c: = ‘ A ‘ to ‘ Z ’ do


{ thông báo số lần xuất hiện của c}
End.


</div>
<span class='text_page_counter'>(20)</span><div class='page_container' data-page=20>

anh” trong xâu S còn làm 3 việc
sau:


_ Tìm vị trí bắt đầu của xâu “
anh “


_ Xóa xâu “anh” vừa tìm thấy
_ Chèn xâu “ em “ vào xâu S tại
vị trí trước đây xuất hiện xâu “
anh”


{ In kết quả xâu S }
End.


Học sinh: Về nhà hồn thiện
chương trình


Var vt: byte;
st: string;
Begin


Write (‘ Nhap vao mot xau: ‘ );
Readln (st);



While pos (‘anh’, st ) <>0 do
Begin


Vt: = pos ( ‘ anh ‘, st );
Detele ( st, vt, 3);


Insert (‘ em ‘, st, vt)
End;


Write ( st );
Readln;


End.
4. Củng cố và luyện tập<i> : </i>


<b>- Nhắc lại các thao tác để tìm và thay thế sự xuất hiện một từ bằng một từ khác</b>
trong toàn bộ văn bản.


5. Hướng dẫn học sinh chuẩn bị bài ở nhà:


 Xem trước bài 13. KIỂU BẢN GHI.
<b>V. RÚT KINH NGHIỆM:</b>


</div>

<!--links-->

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×