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

tiết 25 52 tin học 11 nguyễn thần phong thư viện giáo dục tỉnh quảng trị

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 (326.52 KB, 51 trang )

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

<i><b>Ngày soạn 12 tháng 11 năm 2008</b></i>
<b> BÀI TẬP VÀ THỰC HÀNH 3(t2)</b>


<b>A.MỤC ĐÍCH:</b>
<b>1.Kiến thức: </b>


- 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...
<b>2.Kỹ năng:</b>


- 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 tốn cơ bản:


+Tính tổng các phần tử thoả mãn điều kiện nào đó.


+ Bài tốn đếm thoả mãn một điều kiện cho trước.
<b>3.Thái độ:</b>


- Tiếp tục xây dựng lòng yêu thích giải tố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>B.PHƯƠNG PHÁP: </b>Thực hành + Vấn đáp tái hiện
<b>C.CHUẨN BỊ:</b>


1. <b>Giáo viên:</b> Giáo án, SGK, SBT, máy chiếu.
2. <b>Học sinh</b>: Chuẩn bị bài ở nhà.



<b>D. TIẾN TRÌNH LÊN LỚP:</b>

<i><b> I.ỔN ĐỊNH LỚP(1’): </b></i>



<b>Lớp</b> <b>11C</b> <b>11B1</b> <b>11B2</b> <b>11B3</b> <b>11B4</b>
<b>Vắng</b>


<b>II.KIỂM TRA BÀI CŨ(15’): Kiểm tra 15 phút (Gv đưa lên máy chiếu)</b>
<b>ĐỀ</b>


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?
<b>ĐÁP ÁN</b>


Câu1: *Khai gián trực tiếp Viết đúng 2,5đ


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]);


<b>III.BÀI MỚI:</b>


<b>a.Đặt vấn đề(1’): </b> Bài tập và Thực hành3(T2)
<b>b.Triển khai bài mới:</b>


<b>Tiết</b>



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

<b>HOẠT ĐỘNG CỦA THẦY VÀ TRÒ</b> <b>NỘI DUNG KIẾN THỨC</b>
<b>Hoạt động 1(13’)</b>


<b>(Tìm hiểu cách sử dụng lệnh và kiểu dữ liệu</b>
<b>mảng một chiều qua chương trình có sẳn)</b>
<b>Gv</b>:Đưa bài tố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);
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);
Readln;


End.


<b>Hs</b>:Thực hành gõ chương trình vào máy và cho
chạy chương trình bằng cách nhấn tổ hợp phím
Ctrl+F9.


<b>Gv</b>:Quan sat học sinh thực hành.


<i> Hàm chuẩn Random(n), Randomize làm chức</i>
<i>năng gì trong chương trình?</i>


<b>Hs</b>:



-Random(n):Cho giá trị là một số nguyên ngẫu
nhiêu từ 0 đến n-1.


-Radomize:Khởi tạo cơ chế sinh số ngẫu nhiên.
<b>Gv</b>:


<i>1.Đoạn chương trình nào tạo mảng có giá trị</i>
<i>tuyệt đối không vượt quá 300?</i>


<i> 2.Giải sử chương trình bỏ hàm chuẩn</i>
<i>Radomize có được hay khơng?Vì sao?</i>


<b>Hs</b>:Minh hoạ trên máy rồi giải thích
<b>Gv</b>:


Đư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 đề.


<b>Hoạt động 2(13’)</b>


<b>(Viết chương trình về bài tốn tạo mảng)</b>
<b>Gv</b>:Đưa bài tốn lên màn hình máy chiếu


<b>Bài tốn 1:</b>


Tạo mảng A gồm n (n 100) số nguyên, mỗi số
có trị tuyệt đó 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.



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);
Readln;


End.


<b>*Lưu ý:</b>


-Random(n):Cho giá trị là một số nguyên ngẫu
nhiêu từ 0 đến n-1.



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


<b>Bài toán 2</b>:(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:


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

<b>Hs</b>:Đọc đề bài toán 2


<b>Gv</b>:Yêu cầu Hs thực hiện một số việc như sau:


<i> Hãy cho biết cách tổ chức dữ liệu của bài</i>
<i>toán trên cần khai báo những biến nào?</i>


<b>Hs</b><i>:</i>Dựa vào Input và Output để trả lời khai báo
biến như sau:


Var


A,B:Array[1..20] Of Byte;
C: Array[1..40] Of Byte;
i,N,k:Byte;


<b>Gv</b>:


H<i>ãy nêu đoạn chương trình nhập mảng A,</i>
<i>B?</i>


<b>Hs:</b>



Vận dụng đoạn chương trình nhập giá trị cho
mảng một chiều để viết chương trình nhập
mảng A, B?


<b>Gv</b>: Quan sát và đưa ra đoạn chương trình
chính xác trên máy chiếu.


Viết đoạn chương trình tạo mảng C theo cơng
thứ như sau:


ak , Với i=2k -1, k=1,2,..,N


ci =


bk Với i=2k , k=1,2,..,N


<b>Hs</b>:Trả lời


For i:=1 To N Do c[2*i-1]:=a[i];
For i:=1 To N Do c[2*i]:=b[i];
<b>Gv</b>:


Hãy viết đoạn chương trình in mảng C?
<b>Hs</b>:Trả lời


For i:=1 to 2*N do
Writeln(‘c[‘,i,’[=’,c[i]);


ci =



bk Với i=2k , k=1,2,..,N


Hãy lập trình:


a.Nhập từ bàn phím số nguyên N (2<=N<=20),
dãy số nguyên A, B.


b.Tạo và đưa ra màn hình mảng C.


Var


A,B:Array[1..20] Of Byte;
C: Array[1..40] Of Byte;
i,N,k:Byte;


Begin


Write(‘Nhap N=’); Readln(N);
For i:=1 To N Do


Begin


Write(‘Nha gia tri a[‘,i,’]=’);
Readln(a[i]);


End;


For i:=1 To N Do
Begin



Write(‘Nha gia tri b[‘,i,’]=’);
Readln(b[i]);


End;


For i:=1 To N Do c[2*i-1]:=a[i];
For i:=1 To N Do c[2*i]:=b[i];
For i:=1 to 2*N do


Writeln(‘c[‘,i,’[=’,c[i]);
Readln;


End.


<b>IV.CỦNG CỐ(1’): </b> 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
<b>V.DẶN DỊ(1’): </b>Đư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)


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

<i><b>Ngày soạn 20 tháng 11 năm 2008</b></i>



<b> BÀI TẬP </b>



<b>A.MỤC ĐÍCH:</b>
<b>1.Kiến thức: </b>


- 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.
<b>2.Kỹ năng:</b>


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

-Rèn luyện kỷ năng sử dụng kiểu dữ liệu có cấu trúc, kỷ năng diễn đạt thuật tốn bằng
chương trình sử dụng kiểu dữ liệu mảng.


-Rèn luyện kỷ năng nhận xét, phân tích và đề xuất cách giải bài tốn sao cho chương trình
chạy nhanh hơn.


<b>3.Thái độ:</b>


- Tự giác, chủ động trong khi thực hành.


<b>B.PHƯƠNG PHÁP: </b>Thực hành + Vấn đáp tái hiện
<b>C.CHUẨN BỊ:</b>


3. <b>Giáo viên:</b> Giáo án, SGK, SBT, máy chiếu.
4. <b>Học sinh</b>: Chuẩn bị bài ở nhà.


<b>D. TIẾN TRÌNH LÊN LỚP:</b>

<i><b> I.ỔN ĐỊNH LỚP(1’): </b></i>



<b>Lớp</b> <b>11A1</b> <b>11B1</b> <b>11B2</b> <b>11B3</b> <b>11B4</b>
<b>Vắng</b>


<b>II.KIỂM TRA BÀI CŨ(5’): Gv đưa câu hỏi lên máy chiếu </b>
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?
<b>a.Đặt vấn đề(1’): </b> Bài tập và Thực hành 4(T1)


<b>b.Triển khai bài mới:</b>


<b>HOẠT ĐỘNG CỦA THẦY VÀ TRỊ</b> <b>NỘI DUNG KIẾN THỨC</b>


<b>Hoạt động 1(20’)</b>


<b>(Tìm hiểu cách sử dụng lệnh và kiểu dữ liệu</b>
<b>mảng một chiều qua chương trình có sẳn)</b>
<b>Gv</b>:


Đư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:


<b>Gv:</b>


<i> Hãy chạy chương trình với bộ dữ liệu như</i>
<i>sau:</i>


<i>N=8</i>


<i>a1=7</i> <i>a2=1</i> <i>a3=4</i> <i>a4=3</i>


<i>a5=8</i> <i>a6=9</i> <i>a7=10</i> <i>a8=2</i>
Cho nhận xét về kết quả của chương trình?
<b>Hs</b>:Nhấn tổ hợp phím Ctrl + F9 để chạy
chương trình và nhập giá trị vào cho các biến
=>Nhận xét chương trình.


<b>Gv:</b>



<i> Khai báo mảng A là khai báo gián tiếp hay</i>
<i>trực tiếp?</i>


<i> Đoạn chương trình nào cho phép hoán đổi</i>
<i>giá trị trong mảng?</i>


<b>Hs:</b>


- Mảng a được khai báo gián tiếp.
- Đoạn chương trình hốn đổi:
For j:=n downto 2 do


<b>Bài tốn 1: </b>


<b>a.</b>Hãy tìm hiểu và chạy thử chương trình thực
hiện thuật tốn sắp xếp dãy số nguyên bằng thuật
toán trá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;
A:dayso;


<b>BEGIN</b>


Write('Nhap vao so phan tu cua day so: ');
Readln(n);



For i:=1 to n do
Begin


Write('Nhap gia tri a[ ',i,']= ');
Readln(A[i]);


End;


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

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;


<b>Gv</b>:Yêu cầu Hs thực hành với bộ dữ liệu khác.
<b>Hs</b>: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.


<b>Hoạt động 2(15’)</b>
<b>(Bài toán về đếm)</b>


<b>Gv</b>: Đưa yêu cầu ở trên máy chiếu về bài toán
trên như sau:


<i> Khai báo thêm biến nguyên Dem và bổ sung</i>
<i>vào chương trình những câu lệnh cần thiết để</i>
<i>biến Dem tính số lần thực hiện tráo đổi trong</i>


<i>thuật toán. Đưa kết quả tìm được ra màn</i>
<i>hình.?</i>


<b> Hs:</b>Trả lời câu hỏi
Dem:=0;


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;
Dem:=Dem+1;
End;


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


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


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;


<b>END.</b>


<b>b.</b>Khai báo thêm biến nguyên <b>Dem</b> và bổ sung
vào chương trình những câu lệnh cần thiết để
biến <b>Dem</b> tính số lần thực hiện tráo đổi trong
thuật tốn. Đưa kết quả tìm được ra màn hình.?
Type dayso=array[1..250] of Integer;


Var


<b> Dem</b>, i, j, n, Tg:Integer;
A:dayso;


<b>BEGIN</b>


Write('Nhap vao so phan tu cua day so: ');
Readln(n);


For i:=1 to n do
Begin


Write('Nhap gia tri a[ ',i,']= ');
Readln(A[i]);


End;
<b>Dem:=0;</b>


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;
<b>Dem:=Dem+1</b>;
End;


Writeln('Day so duoc sap xep ');
For i:=1 to n do Write(A[i]:5);
<b>Writeln(‘So lan trao doi la’, Dem);</b>
Readln;


<i><b>END.</b></i>


<b>IV.CỦNG CỐ(2’): </b>


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


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

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


<i><b>Ngày soạn 27 tháng 11 năm 2008</b></i>



<b> KIỂU DỮ LIỆU XÂU</b>


<b> (tiết 1)</b>




<b>A.MỤC ĐÍCH:</b>
<b>1.Kiến thức: </b>


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


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

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


<b>2.Kỹ năng:</b>


Khai báo được biến xâu trong NNLT Pascal. Sử dụng biến xâu và các phép toán xâu để giải
quyết một bài toán đơn giản.


<b>3.Thái độ:</b>


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>B.PHƯƠNG PHÁP: </b> Nêu và giải quyết vấn đề + Thuyết trình
<b>C.CHUẨN BỊ:</b>


5. <b>Giáo viên:</b> Giáo án, SGK, SBT, máy chiếu.
6. <b>Học sinh</b>: Chuẩn bị bài ở nhà.


<b>D. TIẾN TRÌNH LÊN LỚP:</b>

<i><b> I.ỔN ĐỊNH LỚP(1’): </b></i>



<b>Lớp</b> <b>11A1</b> <b>11B1</b> <b>11B2</b> <b>11B3</b> <b>11B4</b>


<b>Vắng</b>


<b>II.KIỂM TRA BÀI CŨ(3’): Đưa bài toán lên máy chiếu như sau </b>


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.
<b>Y/c</b>:Hãy khai báo mảng ký tự ?


<b>a.Đặt vấn đề(1’): </b>Trong thực tế có những bài tố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>b.Triển khai bài mới:</b>


<b>HOẠT ĐỘNG CỦA THẦY VÀ TRỊ</b> <b>NỘI DUNG KIẾN THỨC</b>


<b>Hoạt động 1(20’)</b>


<b>(Tìm hiểu khai báo biến)</b>


<b>Gv</b>: Đưa bài tốn lên màn hình máy chiếu


<i>Viết chương trình nhập họ và tên của 30 học</i>
<i>sinh trong lớp?</i>


Y/c:


<i>Bài tốn đó ta sẽ chọn kiểu dữ liệu như thế</i>
<i>nào? Khai báo biến như thế nào?</i>



<b>Hs</b>:Khai báo kiểu mảng ký tự


<b>Gv</b>:Minh hoạ chương trình của bài tố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]);


<i>Chương trình trên khi chạy có gặp khó khăn</i>
<i>gì?</i>


<b>Hs</b>:Viết dài dịng, khi nhập phải thực hiện gõ
nhiều phím.


<b>Gv:Dẫn dắt</b> Cần có kiểu dữ liệu mới cho phép
nhập và xuất bằng một lệnh.


<b>Gv</b>:


<i>Em hiểu thế nào là xâu ký tự? Trong NNLT có</i>
<i>quy định như thế nào?</i>


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


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


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

<b>Hs</b>:Dựa vào SGK để trả lời câu hỏi.


<b>Gv</b>:Đưa khái niệm lên máy chiếu và tìm hiểu ví
dụ.



<b>Gv</b>:Kiểu dữ liệu xâu có khai báo như thế nào?
<b>Hs</b>:


<b> Var <Tên biến></b>:String[n];
<b>Gv</b>:


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


<b>Hs</b>:Ký tự tối đa là 255.


<b>Gv</b>: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?


<b>Hs</b>:Dựa vào SGK để trả lời câu hỏi.


<b>Gv</b>:Xâu rỗng được viết như thế nào? Độ dài của
xâu rỗng là bao nhiêu?


<b>Hs</b>:Dựa trên hiểu biết để trả lời
<b>Gv</b>: Đưa bài tập sau lên máy chiếu
<b> Var </b> st:string; c:char;


<b> Begin</b>


<b>C:=ST[1]; {1}</b>
<b> C:=st; {2}</b>
<b>End.</b>



Trong hai câu lệnh {1}, {2} câu lệnh nào đúng?
<b>Hs</b>:Dựa vào kiến thức đã học để trả lời câu hỏi.


<b>Hoạt động 2(16’)</b>


<b>(Tìm hiểu một số phép toán xử lý xâu)</b>
<b>Gv:</b>


Hãy nhắc lại các phép toán đã học trên kiểu dữ
liệu chuẩn?


<b>Hs</b>:


-Phép toán số học.
- Phép tốn so sánh.
- Phép tốn Logic.


<b>Gv</b>:Đưa ra ví dụ trên máy chiếu và chạy chương
trình để Hs quan sát


Var St:String;
Begin


St:=’HA’ +’NOI’;
Write(ST);


Readln;
End.


Hãy cho biết kết quả in ra trên màn hình? Cho



<b>A</b>

<b>T</b> <b>I</b> <b>N</b> <b>H</b> <b>O</b> <b>C</b>


1 2 3 4 5 6 7


Trong đó:
Tên xâu: A


Mỗi ký tự gọi là một phần tử của 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ết
A[i]


<b>b.Khai báo biến:</b>


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


<b>*Lưu ý:</b>


<b>-</b>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ủa xâu gầm định là 255 ký tự.


<b>Var Chuthich:String;</b>


-Xâu gồm có một kí tự trống được ký hiệu ‘<sub></sub>’,
có độ dài là 1.



-Xâu rỗng khong có ký tự nào được ký hiệu ‘’, có
độ dài là 0.


<b>2.Các thao tác xử lý xâu:</b>


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

biết chức năng của phép +?


<b>Hs</b>:Quan sát Gv minh hoạ đoạn chương trình rồi
trả lời câu hỏi.


<b>Gv</b>:Đưa ra ví dụ trên máy chiếu và chạy chương
trình để Hs quan sát


Var kq:Boolean;
Begin


Kq:=’AB’ <’AC’;
Writeln(kq);
Readln;


End.


<i>Hãy cho biết kết quả in ra màn hình ?Cách so</i>
<i>sánh hai xâu được thể hiện như thế nào?</i>


<b>Hs:</b>Quan sát chương trình rồi trả lời kết quả in
ra màn hình.


<b>Gv:</b>Chạy thử chương trình=> Kết luận ở trên
máy chiếu.



-Phép ghép xâu: Kí hiệu ‘+’, dùng để ghép nhiều
xâu thàh một xâu


Ví dụ:<b> ‘HA’ + ‘NOI’ </b>=> <b>‘HA NOI’</b>


-Phép toán so sánh: =,>, >=,<, <=, < >
+Nếu xâu A= B nếu chúng giống hệt nhau.
+Nếu A>B


*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 N<b>O</b>I’ > ‘HA N<b>A</b>M’
*Xâu B là đoạn đầu của xâu A
Ví dụ: ‘HA NOI’ > ‘HA’
<b>IV.CỦNG CỐ(3’): </b>


-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)



Else Writeln(Hoten2);
If Hoten1= Hoten2 Then


Begin


Writeln(Hoten1);
Writeln(Hoten2);
End;


Readln;
End.


<b>V.DẶN DÒ(1’): </b>Đư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?


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

<i><b>Ngày soạn 04 tháng 03 năm 2008</b></i>



<b> KIỂU DỮ LIỆU XÂU</b>


<b> (tiết 2)</b>



<b>A.MỤC ĐÍCH:</b>
<b>1.Kiến thức: </b>


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



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

- 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ác tham số của hàm và thủ tục.


<b>2.Kỹ năng:</b>


Nhận biết và bước đầu sử dụng được một số hàm và thủ tục để giải quyết một số bài tập
đơn giản liên quan.


<b>3.Thái độ:</b>


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 hàm và thủ
tục thích hợp, xây dựng thuật tốn...


<b>B.PHƯƠNG PHÁP: </b> Nêu và giải quyết vấn đề + Thuyết trình
<b>C.CHUẨN BỊ:</b>


7. <b>Giáo viên:</b> Giáo án, SGK, máy chiếu.
8. <b>Học sinh</b>: Chuẩn bị bài ở nhà.


<b>D. TIẾN TRÌNH LÊN LỚP:</b>

<i><b> I.ỔN ĐỊNH LỚP(1’): </b></i>



<b>Lớp</b> <b>11A1</b> <b>11B1</b> <b>11B2</b> <b>11B3</b> <b>11B4</b>
<b>Vắng</b>


<b>II.KIỂM TRA BÀI CŨ(3’): Đưa bài toán lên máy chiếu như sau </b>
-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ơn thì in ra màn hình?



<b>a.Đặt vấn đề(1’): </b>Ở 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>b.Triển khai bài mới:</b>


<b>HOẠT ĐỘNG CỦA THẦY VÀ TRỊ</b> <b>NỘI DUNG KIẾN THỨC</b>


<b>Hoạt động 1(20’)</b>


<b>(Tìm hiểu chức năng của một số hàm và</b>


<b>thủ tục)</b>



<b>Gv</b>:


Hãy cho biết ở trong Pascal có thủ tục nào
cho phép xoá một vài ký tự?


<b>Hs</b>:Thủ tục Delete


<b>Gv</b>:-Giới thiệu cấu trúc chung của thủ tục
Delete.


-Đưa ví dụ sau lên màn hình máy chiếu:
Var St:String;


Begin


St:=’HANOI’;
Delete(St,3,2);


Write(ST);
End.


Hãy cho biết kết quả in ra màn hình?
<b>Hs</b>: Dựa vào thủ tục xoá để trả lời câu hỏi
<b>Gv</b>:Hãy cho biết kết quả các thủ tục xoá các
thủ tục chuẩn sau:


Delete(‘ABCD’,1,5);


<b>2.Các thao tác xử lý xâu:</b>
a.Phép toán xâu:


b.Phép toán so sánh:


c.Một số hàm và thủ tục chuẩn:


+Thủ tục Delete(St, vt,n) thực hiện xoá n ký tự
của biến xâu st bắt đầu từ vị trí


Ví dụ:


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

Delete(‘ABCD’,5,2);
Delete(‘ABCD’,1,0);
<b>Hs</b>:Trả lời kết quả
<b>Gv</b>:


Hãy nêu chức năng của hàm Insert(s1,s2,vt)?
<b>Hs</b>:Dựa vào SGK để trả lời câu hỏi



<b>Gv</b>:


-Giới thiệu cấu trúc chung của thủ tục
Insert(s1,s2,vt)


- Đưa ví dụ sau lên máy chiếu:
Var s1,s2:String;
Begin


S2:=’HANOI’;
S1:=’ ‘;


Insert(s1,s2,3);
Write(S2);
End;


Hãy cho biết kết quả in ra màn hinh?
<b>Hs</b>: Trả lời ‘HA NOI’


<b>Gv</b>:Đưa câu hỏi sau lên máy chiếu
Insert(‘ABC’,’EF’,5)-> ?
Insert(‘ABC’,’EF’,0) ->?
<b>Hs</b>:Trả lời


Insert(‘ABC’,’EF’,5)-> ‘EFABC’
Insert(‘ABC’,’EF’,0) ->’ABCEF’


<b>Gv</b>:Hãy cho biết hàm sau cho kết quả gì ở
trên màn hình?



COPY(‘BAI THUC HANH’,5,9);
<b>Hs</b>:Trả lời ‘THUC HANH’


<b>Gv</b>:-Giới thiệu cấu trúc chung và chức năng
của hàm Copy.


-Đưa lên máy chiếu bài tập như sau:
Copy(‘abc’,1,5)->?


Copy(‘abc’,5,2)->?
Copy(‘abc’,1,0)->?
<b>Hs</b>: Copy(‘abc’,1,5)->’abc’
Copy(‘abc’,5,2)->xâu rỗng
Copy(‘abc’,1,0)->xâu rỗng


<b>Gv</b>:- 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:
Length(‘THUC HANH’)=?


Pos(‘cd’,’abcdef’)=?
Pos(‘k’,’abcdef’) =?
Upcase(d)=?


<b>Hs</b>:Dựa vào cú pháp của các hàm để trả lời
câu hỏi.


+Thủ tục Insert(s1,s2,vt) chèn xâu s1 vào xâu s2
bắt đầu ở vị trí vt



Ví dụ:


Insert(‘ABC’,’EF’,5)-> ‘EFABC’
Insert(‘ABC’,’EF’,0) ->’ABCEF’


+Hàm Copy(S,vt,N) tạo xâu gồm N ký tự liên
tiếp bắt đầu từ vị trí vt của xâu S.


Ví dụ: Copy(‘abc’,1,5)->’abc’
Copy(‘abc’,5,2)->xâu rỗng
Copy(‘abc’,1,0)->xâu rỗng


+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ủa xâu S1 trong xâu S2.


Ví dụ:


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

<b>Gv</b>:Minh hoạ trên máy chiếu để Hs thấy kết
quả của các hàm trên.


<b>Hạot động 2(17’)</b>
<b>(Giới thiệu một số ví dụ)</b>
<b>Gv:</b>


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


<b> </b>


<b>Ví dụ 1</b> : Nhập 1 xâu, viết ra màn hình xâu dài
hơn .


<b>Ví dụ 2</b> : 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 ?


<b>Ví dụ 3</b> : 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 .


+Hàm Upcase(ch) cho chữ cái in hoa ứng với chữ
cái trong ch.


Ví dụ: Upcase(‘d’)=’D’
<b>3.Một số ví dụ:</b>


<b>VD 1 : </b>


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 .
<b>VD 2 :</b>


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 .
<b>VD 3 : </b>


Var i,k : Byte ;
a : String ;
Begin


Write('Nhap xau : ') ;
Readln(a) ;


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

<b>Ví dụ 4</b> : 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 .


<b>Ví dụ 5</b> : 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 đó .


For i := k downto 1 do
Write(a[i]) ;


Readln ;
End .
<b>VD 4 :</b>


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 .
<b>VD 5 :</b>


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 .
<b>IV.CỦNG CỐ(2’): </b>


<b>-</b> 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.
<b>V.DẶN DỊ(1’): </b>Đư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)


<i><b>Ngày soạn 05 tháng 12 năm 2008</b></i>



<b> BÀI TẬP VÀ THỰC HÀNH 4</b>


<b> (Tiết 1)</b>



<b>A.MỤC ĐÍCH:</b>
<b>1.Kiến thức: </b>


- 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ự,...


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

<b>2.Kỹ năng:</b>


-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.
-Sử dụng được các hàm và thủ tục chuẩn.


<b>3.Thái độ:</b>


Tích cực vàc chủ động trong thực hành.
<b>B.PHƯƠNG PHÁP: </b> Thực hành + Vấn đáp tái hiện


<b>C.CHUẨN BỊ:</b>


9. <b>Giáo viên:</b> Giáo án, SGK, máy chiếu.
10. <b>Học sinh</b>: Chuẩn bị bài ở nhà.
<b>D. TIẾN TRÌNH LÊN LỚP:</b>


<i><b> I.ỔN ĐỊNH LỚP(1’): </b></i>



<b>Lớp</b> <b>11A1</b> <b>11B1</b> <b>11B2</b> <b>11B3</b> <b>11B4</b>
<b>Vắng</b>


<b>II.KIỂM TRA BÀI CŨ(3’): Đưa bài toán lên máy chiếu như sau </b>
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’
S1=’BAI TAP’);


Length(s)->?
Insert(S1,S,0)->?
COPY(S, 30,9)->?


<b>a.Đặt vấn đề(1’): </b>Hôm nay chúng ta học bài “bài tập và thực hành5(t1)” để kiểm tra một số
thuật toán, một số thủ tục và hàm xử lý xâu.


<b>b.Triển khai bài mới:</b>



<b>HOẠT ĐỘNG CỦA THẦY VÀ TRỊ</b> <b>NỘI DUNG KIẾN THỨC</b>


<b>Hoạt động 1(20’)</b>


<b>(Tìm hiểu cách khai báo biến, sử dụng</b>


<b>hàm và thủ tục trong chương trình)</b>


<b>Gv:</b>Đưa tuèng chương trình lên máy chiếu để
Hs quan sát và tìm hiểu.


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


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


<b>Ví dụ 1</b> : <i>Nhập 1 xâu, kiểm tra xem ký tự đầu tiên</i>
<i>của xâu S1 có trùng với ký tự cuối cùng của xâu</i>
<i>S2 hay không ?</i>


<b>I.Tìm hiểu khai báo biến, các hàm và thủ tục</b>
<b>thơng qua một số chương trình có sẳn:</b>


<b>VD 1 :</b>



Var s1,s2 : String ;
x : Byte ;


Begin


Write('Nhap xau thu 1 : ');
Readln(s1) ;


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

<b>Ví dụ 2</b> : <i>Nhập 1 xâu, viết ra màn hình xâu đó</i>
<i>theo thứ tự ngược lại của các ký tự trong xâu .</i>


<b>Ví dụ 3</b> : <i>Nhập 1 xâu, viết ra màn hình xâu đó</i>
<i>nhưng đã được bỏ tất cả các ký tự là dấu cách .</i>


<b>Ví dụ 4</b> : <i>Nhập 1 xâu, viết ra màn hình xâu gồm</i>
<i>các ký tự số của xâu đó</i> .


Readln(s2) ;
x := length(s2) ;
If s1[1] = s2[x] then
Write('Trung nha')
else


Write('Khac nhau');
Readln ;


End .
<b>VD 2 : </b>


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>VD 3 :</b>


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 .
<b>VD 4 :</b>


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] ;


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

<b>Gv:</b>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ụ.


<b>Hoạt động 2(17’)</b>


<b>(Rèn luyện kỷ năng lập trình)</b>
<b>Gv</b>:Đưa câu hỏi lên máy chiếu


<i>Hãy cho biết hàm đổi ký tự thường thành</i>
<i>chữ in hoa?</i>



<b>Hs</b>:Hàm Upcase(ch)
<b>Gv:</b>


<i>Hãy viết đoạn chương trình đổi chữ thường</i>
<i>thành chữ in hoa?</i>


<b>Hs</b>: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]);


<b>Gv</b>:Đưa câu hỏi bài 2 lên máy chiếu


<i>Hãy nêu ý tưởng thuật tốn đếm trong xâu S</i>
<i>có bao nhiêu ký tự là số?</i>


<b>Hs</b>: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;


<b>Gv</b>:Quan sát thực hành của hs và đưa ra câu
hỏi tiếp theo


<i>Ngồi cách viết thuật tốn như trê ta cịn có</i>
<i>cách viết nào khác nửa?</i>



<b>Hs</b>:


- Tách dãy từ xâu S thành một xâu con chỉ
có số (Ví dụ 4).


- Sử dụng hàm Length(S1)


<b>Gv</b>:Yêu cầu Hs thử sử dụng cách 2 để kiểm
chứng


<b>II.Vận dụng các câu lệnh, các hàm và thủ tục</b>
<b>để viết chương trình:</b>


<b>Bài1</b>:<i>Hãy viết chương trình nhập vào một xâu S</i>
<i>bất kỳ và đưa ra màn hình xâu in hoa.</i>


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>Bài2</b>:<i>Hãy viết chương trình nhập vào một xâu</i>


<i>bất kỳ (có cả ký tự và ký tự số) và đưa ra màn</i>
<i>hình có bao nhiêu ký tự là số?</i>


Ví dụ:


S=’08bC156546CD’ =>Dem=8
Var 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.


<b>IV.CỦNG CỐ(2’): </b>


<b>-</b> 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,...
<b>V.DẶN DỊ(1’): </b>Đưa lên màn hình máy chiếu như sau:



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

-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í 5 và lấy 7 ký tự?


<i><b>Ngày soạn 11 tháng 12 năm 2008</b></i>



<b> BÀI TẬP VÀ THỰC HÀNH 4</b>


<b> (Tiết 2)</b>



<b>A.MỤC ĐÍCH:</b>
<b>1.Kiến thức: </b>


- 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.
<b>2.Kỹ năng:</b>


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

-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.
- Sử dụng được các hàm và thủ tục chuẩn.
<b>3.Thái độ:</b>


Tích cực vàc chủ động trong thực hành.
<b>B.PHƯƠNG PHÁP: </b> Thực hành + Vấn đáp tái hiện



<b>C.CHUẨN BỊ:</b>


11. <b>Giáo viên:</b> Giáo án, SGK, máy chiếu.
12. <b>Học sinh</b>: Chuẩn bị bài ở nhà.


<b>D. TIẾN TRÌNH LÊN LỚP:</b>

<i><b> I.ỔN ĐỊNH LỚP(1’): </b></i>



<b>Lớp</b> <b>11A1</b> <b>11B1</b> <b>11B2</b> <b>11B3</b> <b>11B4</b>
<b>Vắng</b>


<b>II.KIỂM TRA BÀI CŨ(3’): Gọi một Hs lên bảng viết</b>


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ụ?


<b>a.Đặt vấn đề(1’): </b>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>b.Triển khai bài mới:</b>


<b>HOẠT ĐỘNG CỦA THẦY VÀ TRÒ</b> <b>NỘI DUNG KIẾN THỨC</b>


<b>Hoạt động 1(15’)</b>


<b>(Tìm hiểu cách khai báo biến, sử dụng</b>


<b>hàm và thủ tục trong chương trình)</b>


<b>Gv</b>:Đưa nội dung bài tập lên máy chiếu



Hãy gõ chương tình và chạy thử với các bộ
test như sau:


A=’abccba’
A=’fgđhfs’


<b>Hs</b>:Quan sát trên màn hình máy chiếu và SGK
để gõ chương trình vào NNLT Pascal.


<b>Gv:</b> 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?


<b>Hs:</b> Thực hành rồi trả lời kết qua.í


<b>Gv</b>: Hãy sửa lại chương trình trên mà khơng
sử dụng biến P?


<b>Hs</b>:Thảo luận theo nhóm (2Hs/máy)
-Dùng biến kt


-Soạn thảo chương trình


<b>I.Soạn thảo chương trình và tìm hiểu cách</b>
<b>khai báo biến và một số câu lệnh:</b>


<i>Nhập vào từ bàn phím một xâu. Kiểm tra xâu</i>
<i>đó có phải là xâu đối xứng hay khơng. Xâu đối</i>


<i>xứng có tính chất: đọc nó từ phải sang trái cũng</i>
<i>thu được kết quả giống như đọc từ trái sang phải</i>
<i>(Còn gọi xâu là palindrome). </i>


<b>a.Hãy chạy thử chương trình sau:</b>
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>b.Hãy viết lại chương trình trên, trong đó</b>
<b>khơng dùng biến xâu p?</b>


Var


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

-Chạy thử chương trnhf với bộ Test trên.


<b>Gv</b>:



-Quan sát rồi đưa chương trình hồn chỉnh lên
máy chiếu để Hs so sánh


-Ngồi ra cịn có cách thứ 2:


While i<=(x div2) And (a[i]=a[x-i+1] Do
i:=i+1


If i>(x div 2) Then Write(‘Xau là palindrome)
Else Write(‘Xau khong phai la palindrome);


<b>Hoạt động 2(22’)</b>


<b>(Rèn luyện kỷ năng lập trình)</b>
<b>Gv</b>:Đưa câu hỏi lên máy chiếu


S=’AbaCDacd’


<i><b> </b></i>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 hay chữ thường)?


<b>Hs</b>:Đếm rồi trả lời.


<b>Gv</b>: Hãy nêu Input và Output của bài toán?
<b>Hs</b>:


<b>Input</b>:Nhập xâu S


Output: Đếm số lần xuất hiền chữ cái


tiếng anh


<b>Gv</b>:


<i>Trong bảng chữ cái tiếng anh có bao nhiêu</i>
<i>chữ cái?</i>


Hs:Gồm có 26 chữ cái
<b>Gv:Hướng dẫn </b>
<b> </b>Dem[A]:=0;
Dem[B:=0;
.


.
.


Dem[Z=0;


<i>Hãy viết câu lệnh khởi tạo các biến trên như</i>
<i>thế nào?</i>


<b>Hs</b>:Sử dụng câu lệnh For


<b>Gv</b>: 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?


<b>Hs</b>: Suy nghĩ trả lời
If S[i] in ['A'..'Z'] Then
Begin



S[i]:=upcase(S[i]);
Dem[S[i]]:=Dem[s[i]]+1;


Begin


Write(‘Nhap xau a=’); Readln(a);
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.


<b>II.Vận dụng kiểu dữ liệu xâu để lập trình: </b>
<b>Bài 2</b>: <i>Viết chương trình nhập từ bàn phím một </i>
<i>xâu S và thơng báo số lần xuất hiện của mỗi chữ </i>
<i>cái tiếng Anh trong S ( không phân biệt chữ hoa </i>
<i>hay chữ thường).</i>


<b>Input</b>:Nhập xâu S


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

End;


<b>Gv</b>:Yêu cầu hoạt động theo nhóm (2Hs/1máy
tính) theo mẫu sau:



<b>Var</b>


Dem:array['A'..'Z'] Of Byte;
S:...;


i:...;
ch:...;
<b>Begin</b>


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
Begin


...
End;


For ch:='A' to 'Z' Do
If Dem[S[i]]<> 0 Then
Writeln(...);
Readln;


<b> End</b>.


Hãy viết chương trình đầy đủ và chạy thử
chương trình để để tra xem kết quả đúng?
<b>Hs</b>: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ả.


<b>Gv</b>:Quan sát và đưa tồn bộ chương trình lên
máy chiếu và chạy thử để Hs quan sát.


<b>Var</b>


Dem:array['A'..'Z'] Of Byte;
S:string;


i:Byte;
ch:char;
<b>Begin</b>


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


S[i]:=upcase(S[i]);
Dem[S[i]]:=Dem[s[i]]+1;
End;


For ch:='A' to 'Z' Do
If Dem[S[i]]<> 0 Then


Writeln('so lan xuat hien ',ch,' la',Dem[ch]);
Readln;



<b> End</b>.


<b>IV.CỦNG CỐ(2’): </b>


<b>-</b> 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.
<b>V.DẶN DỊ(1’): </b>Đư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'.


<i><b>Ngày soạn 18 tháng 12 năm 2008</b></i>


<b>KIỂU BẢN GHI</b>



<b>A.MỤC ĐÍCH:</b>
<b>1.Kiến thức: </b>


- 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.
<b>2.Kỹ năng:</b>


- Khai báo được kiểu bản ghi, khai báo được biến kiểu bản ghi trong NNLT Pascal.



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

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


<b>3.Thái độ:</b>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>B.PHƯƠNG PHÁP: </b> Nêu và giải quyết vấn đề + Thuyết trình
<b>C.CHUẨN BỊ:</b>


13. <b>Giáo viên:</b> Giáo án, SGK, máy chiếu.
14. <b>Học sinh</b>: Chuẩn bị bài ở nhà.


<b>D. TIẾN TRÌNH LÊN LỚP:</b>

<i><b> I.ỔN ĐỊNH LỚP(1’): </b></i>



<b>Lớp</b> <b>11A1</b> <b>11B1</b> <b>11B2</b> <b>11B3</b> <b>11B4</b>
<b>Vắng</b>


<b>II.KIỂM TRA BÀI CŨ: Không</b>


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


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 …


<b>GV</b> : Đư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ì ?


<b>HS</b> : 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>b.Triển khai bài mới:</b>


<b>HOẠT ĐỘNG CỦA THẦY VÀ TRÒ</b> <b>NỘI DUNG KIẾN THỨC</b>


<b>Hoạt động 1(10’)</b>


<b>(Giới thiệu một số khái niệm)</b>



<b>Gv:</b>Đưa một bảng điểm trong SGK lên máy
chiếu, rồi chỉ rõ :


-Mỗi hàng được gọi là một bảng ghi
-Mỗi cột là một trường


<b>Hs</b>:Lắng nghe và quan sát bảng trên máy chiếu
để Hs biết rõ hơn.



<b>Gv:</b>


<b> </b><i>Bảng dữ liệu thường được xác định những </i>
<i>giá trị nào?</i>


<b>Hs</b>:Dựa vào bảng và SGK để trả lời câu hỏi.
<b>Gv</b>:


Đưa lên máy chiếu các thuộc tính về bảng ghi.


<b>Hoạt động 2(15’)</b>
<b>(Khai báo biến bảng ghi)</b>


<b>Gv</b>: -Mỗi NN có một cách khai báo bảng ghi


<b>I.Một số khái niệm:</b>


- Kiểu bản ghi được dùng để mơ tả cho 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 .


- 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ột trườ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>


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

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 .


<b>GV</b> : 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 ?


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



<b>Gv</b>: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)?


<b>Hs</b>:Vận dụng để viết cách khai báo


<b>GV</b> : 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 ?


<b>Hs</b>: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>


<b>GV</b>: Đưa ra một số ví dụ .


<b>Hoạt động 2(8’)</b>
<b>(Giới thiệu cách gán giá trị)</b>



<b>Gv</b>: <i>Dựa vào cách khai báo biến bản ghi ở trên</i>
<i>hãy cho biết cách gán A:=B hoặc B:=A đúng</i>
<i>hay sai?</i>


<b>Hs</b>:A, B cùng kiểu nên gán cho nhau đúng
<b>Gv</b>:Giới thiệu và đưa lên máy chiếu về nội
dung gán.


<i>Type </i><b><Tên kiểu bản ghi>=Record</b>
<b> <Tên trường 1> : <Kiểu trường 1>;</b>
<b> ……… ………</b>
<b> <Tên trường n> : <Kiểu trường n>;</b>


<i>End ;</i>


<i>Var<b> <Tên biến> : <Tên kiểu bản ghi>;</b></i>


<i>Var</i>


<i><b><Tên mảng> : Array[1..n] Of <Tên kiểu bản </b></i>
<i><b>ghi> ;</b></i>


<b>2.Ví dụ:</b>


Type Hocsinh = Record
Hoten : String[30] ;
Ngaysinh : String[10] ;
NamNu :Boolean ;


Toan,Ly, Hoa, Van, Su, Dia : Real ;


End ;


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>


<b>III.Gián giá trị:</b>


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 ghi
cùng kiểu ta có thể gán giá trị của A cho B bằng
câu lệnh gán:


Vd : B := A ; hoặc A := B ;


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

Readln(a.Ngaysinh);


Chương trình xử lý bảng kết quả thi.



<b>IV.CỦNG CỐ(8'): </b> Đư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 bao
gồm 2 mơn Tố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


Ten : String[30] ;
Ngaysinh : String[10] ;
Diachi : String[50] ;
toan, van : real ;
Xeploai : Char ;
End ;


Var


Lop : array[1..100] of Hocsinh ;
i, n : Byte ;


Tg : Real ;
Begin


Write(' Cho biet so hoc sinh : ') ;
Readln(n) ;


For i := 1 to n do
Begin



Writeln(' Vao thong tin cho hoc sinh thu ',i,' : ') ;
Write (' Ho ten : ') ;


readln(Lop[i].ten) ;
Write(' Ngay sinh : ') ;
readln(Lop[i].Ngaysinh) ;
Write(' Dia chi : ') ;
readln(Lop[i].Diachi) ;
Write(' Diem Toan : ') ;
readln(Lop[i].toan) ;
Write(' Diem Van ') ;
readln(Lop[i].van) ;


Tg := Lop[i].toan + Lop[i].van ;
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'
Else Lop[i].Xeploai := 'D'


End ;
Readln ;


For i := 1 to n do


Writeln(i : 4, Lop[i].ten : 30 , ' --- Loai : ', Lop[i].Xeploai);
Readln ;


End.



<b>V.DẶN DÒ(1’): </b>Đư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


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

-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?



<i><b>Ngày soạn 19 tháng 12 năm 2008</b></i>


<b> BÀI TẬP VÀ THỰC HÀNH 5( T1)</b>


<b>A.MỤC ĐÍCH:</b>


<b>1.Kiến thức: </b>


- Ôn lại các kiến thức về bản ghi: cú pháp khai biến, cách tham chiếu, một số câu lệnh liên quan
đến thao tác xử lý bản ghi.


- Nắm được một số thuật toán: Nhập và thông báo kết quả các trường, sắp xếp dữ liệu.
<b>2.Kỹ năng:</b>


- Khai báo được kiểu bản ghi trong NNLT Pascal.



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

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


<b>3.Thái độ:</b>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>B.PHƯƠNG PHÁP: </b> Vấn đáp tái hiện + Thảo luận nhóm
<b>C.CHUẨN BỊ:</b>


15. <b>Giáo viên:</b> Giáo án, SGK, máy chiếu, giấy A0 và bút.


16. <b>Học sinh</b>: Chuẩn bị bài ở nhà.
<b>D. TIẾN TRÌNH LÊN LỚP:</b>


<i><b> I.ỔN ĐỊNH LỚP(1’): </b></i>



<b>Lớp</b> <b>11A1</b> <b>11B1</b> <b>11B2</b> <b>11B3</b> <b>11B4</b>
<b>Vắng</b>


<b>II.KIỂM TRA BÀI CŨ(5'): </b>


1.Hãy nêu cú pháp về khai báo biến bản ghi?
2.Hãy khai báo biến bản ghi của ví dụ sau:


<b>BẢNG ĐIỂM TRUNG BÌNH NĂM HOC 2007-2008</b>


<b>TT</b> <b>Họ tên</b> <b>năm sinh</b> <b>Toán</b> <b>Lý</b> <b>Hoá</b> <b>Văn</b> <b>TB</b> <b>Xếp loại</b>
1



...
n


<b>III.BÀI MỚI:</b>
<b>a.Đặt vấn đề(1’): </b>


Kiểu dữ liệu bản ghi được 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, chúng ta đã nghiên cứu lý thuyết về kiểu bản ghi ở
tiết trước. Hôm nay chúng ta vận dụng kiểu bản ghi để làm một số bài tập.


<b>b.Triển khai bài mới:</b>


<b>HOẠT ĐỘNG CỦA THẦY VÀ TRÒ</b> <b>NỘI DUNG KIẾN THỨC</b>


<b>Hoạt động 1(10’)</b>


<b>(Giới thiệu cách truy xuất đến trường</b>

<b>)</b>


<b>Gv</b>:


-Yêu cầu Hs đọc câu hỏi bài tập 11/80


-Yêu cầu Hs xem lại ví dụ và trả lời câu hỏi
sau:


Hãy xem ví dụ 3 trong SGK bổ sung thêm
đoạn chương trình và đưa ra màn danh sách
những học sinh chỉ có xếp loại A?


<b>Hs</b>:Đọc đề bài kết hợp với ví dụ trong SGK để


sửa lại chương trình


<b>Gv</b>:


-Phân tích từng câu lệnh của Hs đưa ra=>Kết
luận chương trình cụ thể


-Đưa tồn bộ chương trình lên máy chiếu và
chạy một vài bộ test để kiểm chứng thuật toán.


<b>Bài tập 11/80(SGK): </b>


<b>Lưu ý vận dụng bài tập tiết 34</b>


Hãy bổ sung thêm vào chương trình Xeploai (ở
bài 13) những lệnh cần thiết để chương trình
đưa ra danh sách học sinh xếp loại A.


Writeln(' TT ',' Ho va Ten ', ' Xloai ');
For i:=1 to n do


If lop[i].xeploai='A' Then
Begin


Write(i:4);


Write(Lop[i].ten:30);
Write(Lop[i].Xeploai);
Writeln;



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

<b>Hoạt động 2(24’)</b>
<b>(Rèn luyện tư duy lập trình)</b>


<b>Gv</b>:Đưa câu hỏi bài tập 2 lên máy chiếu và Y/c
học sinh đọc<b>.</b>


<i>Hãy nêu cách tổ chức dữ liệu cho bài tập 2?</i>
<b>Hs</b>:Lên bảng viết cách khai báo biến bản ghi
<b>Gv</b>:Tổ chức hoạt động nhóm như sau:


+Nhóm 1: Viết đoạn chương trình nhập Họ và
tên, DTBHK1 và DTBHK2 của từng học sinh.
+Nhóm 2:Viết đoạn chương trình tính TBCN
và xếp loại


+Nhóm3:Viết đoạn chương trình sắp xếp theo
thứ tự tăng dần của cột điểm TBCN


<i><b>+Nhóm 4:Xuất kết quả theo</b></i>


<i><b>bảng như sau:</b></i>



<b>TT Họ tên DHK1 DHK2 DCN XL</b>
1


2
...
n


<b>Hs:</b> Thảo luận theo nhóm đã phân cơng
<b>Gv</b>:



-Y/c các nhóm trình bày trên giấy A0


-Sau khi thảo luận nhóm xong thì từng nhóm
lên bảng trình bày, các nhóm khác bổ sung.
-Sau các nhóm bổ sung thi Gv nhận xét và phân
tích từng đoạn chương trình=>Đưa chương tình
cụ thể sau lên máy chiếu và chạy thử một vài bộ
Test để kiểm chứng thuật toán.


<b>Bài tập 2/145</b>(SBT Pascal5.5):


Viết chương trình nhập họ tên, điểm DHK1 và
DHK2 của từng Hs trong lớp.


a.Tính TBCN và xếp loại.


b. Xếp hạng theo thứ tự tăng dần của cột điểm
TBCN của từng học sinh.


<i><b>c.Thông báo theo bảng sau</b></i>


<i><b>theo thứ tự sắp xếp cột điểm</b></i>


<i><b>TBCN</b></i>



<b>TT Họ tên DHK1 DHK2 DCN XL</b>
1


2
...
n



<b>*Chương trình:</b>
Type Bdiem=Record
Hoten:String;


DHK1,DHK2,TBCN:Real;
Xeploai:String[5];


End;


Var Hs:Array[1..60] Of Bdiem;
I,j,n:Byte;


Tg:Bdiem;
Begin


Write('Nhap so luong Hs n='); Readln(n);
For i:=1 To n Do


With Hs[i] Do
Begin


Write('Nhap Ho ten',i); Readln(Hoten);
Write('NhapTBHK1',i); readln(DHK1);
Write('NhapTBKT2',i); Readln(DHK2);
End;


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

For i:=1 To n Do


Hs[i].TBCN:=(Hs[i].DHK1+Hs[i].DHK2*2)/3;


For i:=1 To n Do


With Hs[i] Do
Begin


If TBCN>=8.0 Then Xeploai:='Gioi';


if (TBCN>=6.5)and(TBCN<8.0) Then Xeploai:='Kha';
If (TBCN>=5) and (TBCN<6.5) Then Xeploai:='TB';
If (TBCN>=3.5) and (TBCN<5) Then Xeploai:='Yeu';
If TBCn<3.5 Then Xeploai:='kem';


End;


For i:=1 to n-1 Do
For j:=i+1 to n Do


If Hs[i].TBCN> Hs[j].TBCN Then
Begin


tg:=Hs[i];
Hs[i]:=Hs[j];
Hs[j]:=tg;
End;


<b>{Thong bao ket qua nhu sau}</b>


Writeln('...');


Writeln('| TT |','| Ho ten |','| TBCN |','| xeploai |');


Writeln('...');


For i:=1 to n do
With Hs[i] Do


Writeln(i:5,hoten:20,TBCN:10:2,Xeploai:10);
Readln;


End.


<b>IV.CỦNG CỐ(3'): </b> Đưa lên máy chiếu ví dụ như sau:
-Cần nắm:


+Cách khai báo biến bản ghi


+Cách truy xuất vào giá trị của trường


+Cách nhập và xuất các trường trong bản ghi.
+Một số câu lệnh cơ bản


-Hai thuật tốn: Sắp xếp, tính tốn


<b>V.DẶN DỊ(1’): </b>Đưa lên màn hình máy chiếu như sau:
-Tiết sau học tiết: Tiết 36: Kiểm tra 1 tiết


<i><b> </b></i>

- Câu hỏi ôn tập:



1. Câu lệnh rẽ nhánh và lặp?



2.Khai báo kiểu mảng một chiều, hai chiều, kiểu xâu? Các đoạn chương trình



nhập và xuất



3.Khai báo kiểu bản ghi? Các đoạn chương trình nhập và xuất bản ghi?


4.Xem lại các bài tập từ 1->11/80(SGK)



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

<b>Tiết: 33</b> <b>Ngày soạn: 05/01/2009</b>


<b>Bài tập và thực hành 5(T2)</b>


<b>I.Mục tiêu bài học</b>


1. Kiến thức


- Củng cố lại học sinh những kiến thức cơ bản của dữ liệu kiểu bản ghi.
- Khái niệm kiểu bản ghi, cách khai báo kiểu bản ghi.


- Áp dụng dữ liệu kiểu bản ghi để làm bài tập


2. Kĩ năng: rèn luyện kĩ năng làm bài tập, tư duy thuật toán, ứng dụng kiểu dữ liệu bản ghi vào
viết chương trình


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

<b>II. Phương pháp, phương tiện dạy học</b>


 Phương pháp: thuyết trình, câu hỏi gợi mở, hướng dẫn làm bài tập
 Phương tiện dạy học: bảng đen.


<b>III. Chuẩn bị của giáo viên và học sinh</b>


 Giáo viên: giáo án, sổ điểm, phấn.
 Học sinh: sgk, vở.



<b>IV. Nội Dung bài học</b>
1. Ổn định lớp học


Lớp 11B5 11B6 11B7 11B8


Vắng
Phép


2. Nội dung bài học
a) Nội dụng kiến thức


 Khái niệm kiểu dữ liệu bản ghi


Trình bày khái niệm kiểu bản ghi? Các trường trong dữ liệu kiểu bản ghi là gì?


 Cách xác định kiểu dữ liệu kiểu bản ghi


Trình bày 5 quy tắc để xác định kiểu dữ liệu kiểu bản ghi?


 Khai báo biến kiểu dữ liệu kiểu bản ghi


Khi khai báo kiểu dữ liệu kiểu bản ghi cần định nghĩa cái gì trước ? rồi sau đó khai báo
biến kiểu bản ghi?


Khi khai báo biến có nhiều bản ghi thì chúng ta sử dụng cách khai báo như thế nào?


 Tham chiếu đến các trường của kiểu dữ liệu bản ghi


Cách tham chiếu đến các trường kiểu bản ghi như thế nào?



 Gán giá trị cho biến kiểu bản ghi


Có mấy cách để gán giá trị cho biến có kiểu dữ liệu là kiểu bản ghi?
b) Bài tập


Bài tập 1: Để quản lí việc thi tuyển đầu vào lớp 10 của một trường trung học phổ thông.
Danh sách n học sinh gồm các thông tin sau : họ tên, địa chỉ, ngày sinh, điểm môn1, điểm
môn2, điểm môn 3. Hãy sử dụng kiểu dữ liệu kiểu bản ghi để khai báo danh sách học sinh
trên.


Giáo viên hướng dẫn: xác định các thuộc tính để khai báo các trường?
Kiểu dữ liệu của các trường?


Biến kiểu bản ghi gồm nhiều học sinh thì khai báo kiểu dữ liệu gì?
Khai báo kiểu bản ghi như sau:


Type danhsach=record


Hoten, nsinh, diachi, ketqua:string;
Diem1, diem2, diem3:real;


End;


Var n,i: word;


Hocsinh: array [1..500] of danhsach;


Bài tập 2: với cách khai báo như bài tập 1 các em hãy nhập vào các thông tin cho từng học
sinh như sau: họ tên , ngày sinh, địa chỉ, điểm môn1, điểm môn 2 và điểm mơn 3. Sau đó
đưa ra danh sách học sinh đậu biết rằng nếu tổng điểm 3 môn lớn hơn hoặc bằng 10 thì đậu.


Hướng dẫn: sử dụng vòng for để duyệt từ học sinh đầu tiên đến học sinh cuối cùng gọi đến
thủ tục readln(hocsinh[1].tên trường) để nhập dữ liệu cho từng học sinh.


Đoạn chương trình:


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

For i:=1 to n do
Begin


Write(‘nhap thong tin hoc sinh thu ’,i);
Readln(hocsinh[i].hoten);


Readln(hocsinh[i].nsinh);
Readln(hocsinh[i].diachi);
Readln(hocsinh[i].diem1);
Readln(hocsinh[i].diem2);
Readln(hocsinh[i].diem3);
End;


Duyệt học sinh đầu tiên cho đến học sinh cuối cùng. Dùng if – then để kiểm tra nếu tổng 3
mơn >= 10 thì in ra danh sách học sinh đậu.


V. Củng cố và dặn dò


Củng cố: cách khai báo kiểu dữ liệu bản ghi?


Truy xuất đến các trường của kiểu dữ liệu kiểu bản ghi?
Xác định kiểu dữ liệu kiểu bản ghi như thế nào?


Dặn dò: các em về nhà làm bài tập trong sách bài tập và ôn các kiểu dữ liệu có cấu trúc đã
học để tiết sau chúng ta ôn tập



<b>Tiết 34</b> <b> Ngày soạn 10/01/2009</b>

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



<b>I. Mục tiêu bài học</b>
1. Kiến thức


- Ôn lại những kiến thức cơ bản của chương IV.


- Kiểu mảng: khai báo, truy xuất đến các phần tử của biến mảng.


- Kiểu xâu: khai báo, các thao tác xử lý trên xâu. Hàm và thủ tục sử dụng trên xâu.
- Kiểu bản ghi: khai báo, truy xuất đến các trường của kiểu bản ghi.


2. kĩ năng: vận dụng các kiểu dữ liệu có cấu trúc vào làm bài tập. Rèn luyện kĩ năng tư duy thuật
tốn trong lập trình.


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

 Phương pháp: thuyết trình, câu hỏi gợi mở, hướng dẫn làm bài tập.
 Phượng tiện dạy học: bảng đen.


<b>III. Chuẩn bị của giáo viên và học sinh</b>


 Giáo viên: giáo án, phấn, sổ điểm.
 Học sinh: sgk, bút vở.


<b>IV. Tiến trình lên lớp</b>
1. Ổn định lớp học


Lớp 11B5 11B6 11B7 11B8



Vắng
2. Kiểm tra bài cũ


Câu hỏi: em hãy nêu các kiểu dữ liệu có cấu trúc đã học trong Pascal?
Trả lời: Kiểu mảng, kiểu xâu, kiểu bản ghi.


3. Nội dung bài học
a) Ma trận kiến thức


Đề mục Biết Hiểu Áp dụng


Kiểu


mảng 1.Mảng một chiều- khái niệm: dãy hữu
hạn các phần tử cùng
kiểu.


- Các quy tắc xác định
kiểu mảng 1 chiều
- Khai báo mảng 1
chiều


- tham chiếu đến phần
tử thứ i của mảng 1
chiều.


2. Mảng 2 chiều
- khái niệm


- cách xác định kiểu


dữ liệu là kiểu mảng 2
chiều


- cách khai báo


- Truy xuất đến phần
tử i,j của mảng 2
chiều.


Nắm được kiểu dữ liệu
mảng một chiều.


biết cách khai báo kiểu dữ
liệu mảng một chiều.
Nhập, in và truy xuất các
phần tử mảng 1 chiều


Khái niệm mảng 2 chiều,
cách khai báo mảng 2
chiều.


sử dụng kiểu mảng 2
chiều khi nào.


Khai báo kiểu
mảng 1 chiều và
mảng 2 chiều để
giải quyết một số
bài tập.



Cài đặt được một
số thuật toán liên
quan đến kiểu dữ
liệu là kiểu mảng.


Kiểu


Xâu Khái niệm xâu là dãykí tự trong bảng mã
ASCII. Mỗi kí tự là
một phần tử của xâu.
- Cách xác định kiểu
dữ liệu là kiểu xâu
- Khai báo biến kiểu
xâu


- Các thao tác xử lý
trên xâu


- Các hàm và thủ tục
trên xâu


Nắm được kiểu dữ liệu là
kiểu xâu.


Cách khai báo biến kiểu
xâu.


Phép gán xâu và so sánh
xâu.



Hiểu được ý nghĩa của
các hàm được sử dụng
trên kiểu xâu.


Áp dung kiểu dữ
liệu là kiểu xâu
để giải các bài
toán cụ thể về
kiểu xâu.


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

Kiểu


bản ghi Khái niệm bản ghidùng để mô tả các đối
tượng có nhiều thuộc
tính. Nhưng các thuộc
tính có thể có kiểu dữ
liệu khác nhau.


- mỗi thuộc tính gọi là
1 trường


- Cách xác định kiểu
dữ liệu bản ghi.


- Tham chiếu đến các
trường của bản ghi.
- Khai báo biến kiểu
bản ghi.


- Phép gán giá trị của


kiểu bản ghi.


Khái niệm kiểu bản ghi.
Khai báo được kiểu dữ
liệu là kiểu bản ghi.


Cách truy xuất đến các
trường của biến kiểu bản
ghi.


Phân biệt được hai cách
gán giá trị của kiểu dữ
liệu là kiểu bản ghi.


Khai báo kiểu dữ
liệu kiểu bản ghi
cho từng bài toán
cụ thể.


Sử dụng kiểu dữ
liệu kiểu bản ghi
để giải quyết bài
tập liên quan đến
nó.


b) Bài tập


Bài tập 1: Cho dãy A gồm có n phần tử. Hãy tính tổng các phần tử chia hết cho 3 có trong
dãy A



Hướng dẫn: Khai báo biến A kiểu mảng gồm có n phần tử.
Sử dụng biến tg:=0; sau đó dùng câu lệnh sau


For i:=1 to n do
If a[i] mod 3=0 then
Tg:=tg + a[i];


Bài tập 2: nhập xâu st từ bàn phím. Hãy thực hiện các cơng việc sau:
- Xố hết các kí tự trắng trong xâu


- Kiểm tra xem xâu đó có phải là xâu đối xứng hay không.


Hướng dẫn: sử dụng hàm length(st) và thủ tục delete(st, n, m) để làm câu a.


Tạo 1 xâu mới bằng cách đảo ngược xâu cũ. Sau đó kiểm tra nếu xâu mới bằng xâu cũ thì
xâu đó là xâu đối xứng khơng thì ngược lại


V. Củng cố và dặn dò


- Các em về nhà xem lại những kiến thức đã học ở chương vừa qua và làm hết các bài tập có
trong sách giáo khoa và sách bài tập để tiết sau kiểm tra 1 tiết.


<b>Tiết 35</b>

<b> Ngày soạn: 15/03/2009</b>



<b> Kiểm tra 1 tiết</b>



<b>I.Mục tiêu bài học</b>
1. Kiến thức


- Kiểm tra lại những kiến thức cơ bản đã học của chương III.


2. Kĩ năng: rèn luyện kĩ năng làm bài kiểm tra


3. Thái độ: nghiêm túc, tuân thủ quy chế kiểm tra.
<b>II. Chuẩn bị của giáo viên và học sinh</b>


 Giáo viên: đề kiểm tra
 Học sinh: bút, sgk, vở ghi.


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

2. Đề kiểm tra
Phần 1: trắc nghiệm


Câu 1: Chỉ số của mảng có thể là kiểu gì ?


a)Kiểu số thực, kiểu logic . b) Kiểu miền con, kiểu kí tự


c) Kiểu miền con, kiểu kí tự d) Kiểu số nguyên, ki ểu số thực e) a và c.
Câu 2: S1= ‘chao bạn’; S2 = ‘Xin ’. Kết quả của thủ tục Insert (S2,S1,1) là:


a. ‘hao ban’ b. ‘ Xin chao ban’ c. ‘ chao ban xin’ d. kết quả khác
Câu 3: Giới hạn số chiều của mảng là bao nhiêu ?


a. 255 chiều b. 256 chiều c. Vô hạn d. 2 chiều
Câu 4 : Chức năng của thủ tục Delete(st,vt,n) ?


a.Xoá xâu b. Xoá n phần tử trong xâu c. Chèn xâu d. Tạo xâu mới
Câu 5: Chương trình sau cho kết quả là gì ?


Var a, b : String;
Begin



Write(‘nhap xau ho ten thu nhat: ’); readln(a);
Write(‘nhap xau ho ten thu hai : ’); readln(b);
If length(a)> length(b) then write(a)


Else write(b);
Readln


End.


a)Xâu có độ dài lớn nhất b) Độ dài lớn nhất của hai xâu
c)Kí tự cuối cùng của xâu dài hơn d) Kết quả khác


Câu 6: Trong ngôn ngữ lập trình Pascal, để tìm vi trí xuất hiện đầu tiên của xâu ‘hoa’ trong xâu S ta
có thể viết bằng cách nào trong các cách sau đây?


A. S1:=’hoa’; i:=Pos(S1,’hoa’); B. i:=Pos(‘hoa’,S);
C. i:=Pos(S,’hoa’); D. i:=Pos(‘hoa’,’hoa’);


Câu 7: Trong ngôn ngữ lập trình Pascal, với xâu kí tự có các phép tốn là?
A. Phép cơng, trừ, nhân, chia B. Chỉ có phép cộng


C.Phép cộng và phép trừ D. Phép ghép xâu và phép so sánh
Câu 8: Trong ngơn ngữ lập trình Pascal, xâu kí tự là gì?


A. Mảng các kí tự; B. Dãy các kí tự trong bảng mã ASCII;
C. Tập hợp các chữ cái trong bảng chữ cái tiếng Anh;


D. Tập hợp các chữ cái và các chữ số trong bảng chữ cái tiếng Anh.


Câu 9: Trong ngôn ngữ lập trình Pascal, với khai báo mảng A: Array[1..100, 1..100]of integer; thì


việc truy xuất đến các phần tử như sau:


A. A[i],[j] B. A[i][j] C.A[i;j] D. A[i,j]


Câu 10: Trong ngôn ngữ lập trình Pasca,l đoạn chương trình sau đưa ra màn hình kết quả gì?
For i:=10 to 1 do Write(i,’ ‘);


A. 1 2 3 4 5 6 7 8 9 10 B. Đưa ra 10 dấu cách


C. 10 9 8 7 6 5 4 3 2 1 D. Khơng đưa ra kết quả gì


Phần 2: Tự luận


Để quản lý việc bán hàng trong một cửa hàng với các thông tin về các mặt hàng: tên mặt hàng, giá
trị mặt hàng, ngày sản xuất, ngày hết hạn sử dụng. Hãy viết chương trình quản lý việc bán hàng với
các thông tin của n mặt hàng có trong cửa hàng trên với các yêu cầu sau:


- Hãy khai báo kiểu dữ liệu để quản lý n mặt hàng trên


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

<b>Tiết: 36</b> <b> Ngày soạn: 19/02/2009</b>

<b>Bài 14: Kiểu dữ liệu tệp</b>



<b> Bài 15: Thao tác với tệp</b>


A. MỤC TIÊU


1. Kiến thức:


 Biết được đặc điểm của kiểu dữ liệu tệp.


 Biết khái niệm về tệp có cấu trúc và tệp văn bản.



2. Kỹ năng: Khai báo đúng biến kiểu tệp.


 Thực hiện được thao tác xử lí tệp: gán tên tệp, mở/đóng tệp, đọc/ghi tệp.
 Sử dụng được các thủ tục lien quan để đọc/ghi dữ liệu của tệp.


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

- Có ý thức lưu trữ dữ liệu một cách khoa học.
B. PHƯƠNG PHÁP


 Thuyết trình và giảng giải, kết hợp các hình ảnh trực quan.
 Sử dụng các câu hỏi gợi mở, nêu vấn đề cho học sinh trả lời


C. CHUẨN BỊ CỦA GIÁO VIÊN VÀ HỌC SINH
1. Giáo viên: Giáo án, máy chiếu Projector để hướng dẫn
2. Học sinh: SGK, vở.


D. TIẾN TRÌNH LÊN LỚP
I. Ổn định tổ chức (1p)


Lớp 11B5 11B6 11B7 11B8


Vắng
II. Kiểm tra bài cũ
III. Bài mới


1. Đặt vấn đề (1p)


- Các em đã được học các kiểu dữ liệu có cấu trúc như kiểu mảng, kiểu xâu và kiểu bản ghi. Hôm
nay thầy giới thiệu các em một kiểu dữ liệu có cấu trúc mới. Đó là kiểu tệp.



2. Triển khai bài


Hoạt động của giáo viên và học sinh Nội dung kiến thức


Hoạt động 1: (chung cả lớp) (10p)


GV: Em hãy cho biết dữ liệu trong các kiểu dữ liệu từ
trước đến nay ta sử dụng được lưu trữ ở loại bộ nhớ
nào khi thực hiện chương trình?


HS: Bộ nhớ RAM


GV: Vì sao em biết điều đó?
HS: Mất dữ liệu ki mất điện.


GV: Diễn giải: Để lưu giữ được dữ liệu, ta phải lưu
nó ở bộ nhớ ngồi thong qua kiểu dữ liệu tệp. Mọi
ngơn ngữ lập trình đều có các thao tác:khai báo biến
tệp, mở tệp, đọc/ghi dữ liệu, đóng tệp.


- Yêu cầu học sinh nghiên cứu SGK và cho biết đặc
điểm của kiểu tệp? Có mấy loại tệp?


HS; Nghiên cứu và trả lời.


GV: Yêu cầu học sinh trình bày khái niệm tệp có cấu
trúc và tệp văn bản.


HS: Nghiên cứu SGK và trả lời.



§14 Kiểu dữ liệu tệp


1. Vai tró của kiểu dữ liệu tệp


- Dữ liệu được lưu trữ ở bộ nhớ ngồi và
khơng bị mất khi tắt nguồn điện.


- Lượng dữ liệu lưu trữ trên tệp lớn.
2. Phân loại tệp và thao tác với tệp
a. Phân loại tệp


* Theo cách tổ chức dữ liệu:


- Có hai loại kiểu tệp: tệp có cấu trúc và tệp
văn bản.


+ Tệp có cấu trúc: là loại tệp mà các thành
phần của nó được tổ chức theo một cấu trúc
nhất định.


+ Tệp văn bản: là tệp mà dữ liệu được ghi
dưới dạng các kí tự theo mã ASCII.


* Theo cách thức truy cập:


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

GV: Đối với kiểu dữ liệu tệp có những thao tác cơ
bản nào?


HS: Trả lời.



và tệp truy cập trực tiếp.


+ Tệp truy cập tuần tự: cho phép truy cập
một dữ liệu nào đó trong tệp chỉ bằng cách
bắt đầu từ đầu tệp và đi qua lần lượt tất cả
các dữ liệu trước nó.


+ tệp truy cập trực tiếp: cho phép tham
chiếu đến dữ liệu cần truy cập bằng cách
xác định trực tiếp vị trí dữ liệu của nó.
b. Thao tác với tệp


- Ghi dữ liệu vào tệp và đọc dữ liệu từ tệp<sub></sub>
được thực hiện với từng phần tử của tệp.
Hoạt động 2: (theo từng nhóm) (7p)


GV: Yêu cầu học sinh nghiên cứu SGK cho biết cú
pháp khai báo kiểu tệp. Nêu ví dụ cụ thể.


HS: Nghiên cứu và trả lời


§15 Thao tác với tệp
1. Khai báo


a. Cú pháp


Var <tên biến tệp>:text;
b. Ví dụ


Var tep1, tep2: text;


Hoạt động 3: (theo từng nhóm) (20p)


GV: Giới thiệu các thao tác gắn tên tệp, mở tệp,
đọc/ghi tệp văn bản, đóng tệp. Đối với mỗi thao tác
yêu cầu học sinh lấy ví dụ cụ thể.


HS: Assign(tep2, ‘C:\INP.DAT’);


HS: Assign(tep3,’C:\KQ.DAT’);
Rewrite(tep3);


HS: Assign(tep1, ‘KQ.DAT’);
Reset(tep1);


HS: Readln(<biến tệp>, <danh sách biến>);


HS: Writeln(<biến tệp>,<danh sách kết quả>);


2. Thao tác với tệp
a. Gắn tên tệp


* Cú pháp: Assign(<biến tệp>, <tên tệp>);
Trong đó tên tệp là biến xâu hoặc hằng xâu.
* Ví dụ:


Assign(tep1, ‘DULIEU.DAT’);
Assign(tep2, ‘C:\INP.DAT’);
b. Mở tệp


* Mở tệp để ghi: Rewrite(<biến tệp>);


* Ví dụ: Assign(tep3,’C:\KQ.DAT’);


Rewrite(tep3);


- Chú ý: Nếu trên thư mục gốc của ổ đĩa C
đã có tệp KQ.DAT thì nội dung cũ sẻ bị
xóa, nếu khơng thì tệp sẽ được tạo mới với
nội dung rỗng.


* Mở tệp để đọc: Reset(<biến tệp>);
* Ví dụ: tentep:= ‘KQ.DAT’;


Assign(tep1, tentep);
Reset(tep1);


Hoặc: Assign(tep1, ‘KQ.DAT’);
Reset(tep1);


c. Đọc/ghi tệp văn bản
* Đọc:


Read(<biến tệp>, <danh sách biến>);
Hoặc:


Readln(<biến tệp>, <danh sách biến>);
* Ghi:


Write(<biến tệp>,<danh sách kết quả>);
Hoặc:



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

HS: Close(tep3);


GV: Sử dụng máy chiếu chiếu chương trình ví dụ
tổng hợp lên bảng để học sinh quan sát. Yêu cầu học
sinh đọc hiểu chương trình.


* Một số hàm chuẩn thường dùng trong khi
đọc/ghi tệp văn bản:


- eof: trả về giá trị true nếu con trỏ tệp đang
chỉ tới cuối tệp.


- eoln: trả về giá trị true nếu con trỏ tệp
đang chỉ tới cuối dịng.


d. Đóng tệp


* Cú pháp: Close(<biến tệp>);
* Ví dụ: Close(tep1);


IV. Củng cố (5p)


- Nêu vai trị và phân loại tệp?


- Đọc hiểu và phân biệt được các hàm, thủ tục, ý nghĩa của chương trình mẫu GV đưa ra.
V. Dặn dị (1p)


- Các em về nhà ơn lại nội dung của bài. Xem trước nội dung bài 16.


<b>Tiết: 37</b> <b> Ngày soạn: 12/02/2008</b>



<b>Bài 16: Ví dụ làm việc với tệp</b>


A. MỤC TIÊU


1. Kiến thức: Củng cố lại kiến thức đã học về tệp trong chương 5 thông qua ví dụ.
2. Kỹ năng: Sử dụng được các hàm và thủ tục liên quan để giải quyết các bài tập.
3. Thái độ: - Thấy được sự cần thiết và tiện lợi của kiểu dữ liệu tệp.


- Có ý thức lưu trữ dữ liệu một cách khoa học.
B. PHƯƠNG PHÁP


- Thuyết trình và giảng giải, kết hợp các hình ảnh trực quan.
- Sử dụng các câu hỏi gợi mở, nêu vấn đề cho học sinh trả lời
C. CHUẨN BỊ CỦA GIÁO VIÊN VÀ HỌC SINH


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

D. TIẾN TRÌNH LÊN LỚP
I. Ổn định tổ chức (1p)


II. Kiểm tra bài cũ (5p)


* Câu hỏi: Sắp xếp các bảng dưới đây theo thứ tự các bước mở tệp để ghi và để đọc?


Assign(<biến tệp>, <tên tệp>); Rewrite(<biến tệp>); Reset(<biến tệp>); + Read(<biến tệp>,
<danh sách biến>); Write(<biến tệp>, <danh sách kết quả>); Close(<biến tệp>);


* Đáp án:


- Mở để ghi: + Assign(<biến tệp>, <tên tệp>); Rewrite(<biến tệp>); Write(<biến tệp>, <danh sách
kết quả>); Close(<biến tệp>);



- Mở để đọc: + Assign(<biến tệp>, <tên tệp>); Reset(<biến tệp>); Read(<biến tệp>, <danh sách
biến>); Close(<biến tệp>);


III. Bài mới
1. Đặt vấn đề (1p)


- Bài học trước các em đã được làm quen với một kiểu dữ liệu mới đó là kiểu dữ liệu tệp, để các
em nắm chắc hơn phần kiến thức lí thuyết đã học, bài học hơm nay chúng ta sẽ đi vào tìm hiểu
một số ví dụ cụ thể.


2. Triển khai bài


Hoạt động của giáo viên và học sinh Nội dung kiến thức


Hoạt động 1: (chung cả lớp) (10p)
GV: Giới thiệu nội dung đề bài.


- Chiếu chương trình ví dụ lên bảng gợi ý
học sinh tìm hiểu chương trình.


- Hàm eof(f) có chức năng gì?


HS: Trả về giá trị true nếu con trỏ tệp
định vị ở vị trí kết thúc tệp.


GV: Có thể sử dụng cấu trúc FOR thay
cho WHILE được không?


HS: Khơng, vì khơng biết số lượng phần
tử của tệp.



GV: Chương trình này thực hiện cơng
việc gì? Vì sao?


HS: Tính và đưa ra màn hình khoảng cách
từ trại của thầy hiệu trưởng đến trại của
mỗi giáo viên.


GV: Giới thiệu cho HS cách tạo file
TRAI.TXT. Thực hiện chương trình để
học sinh thấy kết quả.


§16 Ví dụ làm việc với tệp
1. Ví dụ 1 (SGK, trang 87)


Progam Khoang_cach;


Var d: real; f :text; x, y: integer;
Begin


Assign(f, ‘TRAI.TXT’);
Reset(f);


While not eof(f) do
Begin


Read(f,x,y);


D:= sqrt(x*x+y*y);



Write(‘Khoang cach: ‘,d:10:2);
End;


Close(f);
End.


Hoạt động 2: (theo từng nhóm) (7p)


GV: Chiếu tranh mơ phỏng kết nối các
điện trở, hình 17, trang 88 SGK. Hãy cho
biết cơng thức tính điện trở của sơ đồ II,
III, IV?


HS: Nghiên cứu và trả lời


GV: Chiếu chương trình ví dụ lên bảng.
Hỏi mảng A dùng để lưu trữ giá trị nào?
HS: Lưu trữ giá trị điện trỡ tương đương


2. Ví dụ 2 (SGK, trang 87)
Program Dien_tro;


Var a: array[1..5] of real;


R1, R2, R3: real; f1,f2 :text; i: integer;
Begin


Assign(f1, ‘RESIST.DAT’);
Reset(f1);



Assign(f2, ‘RESIST.EQU’);
Rewrite(f2);


Lớp 11B5 11B6 11B7 11B8


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

theo 5 cách ghép nối như trong sơ đồ.
GV: Cho một file dữ liệu vào gồm 2 hàng.
Yêu cầu học sinh tính kết quả.


HS: Tính kết quả của 5 điện trở tương
đương.


GV: Thực hiện chương trình đọc file dữ
liệu vào trên để học sinh đối chiếu kết
quả.


HS: Quan sát kết quả của chương trình và
so sánh với kết quả tính được. Nhận xét
về tính chính xác và thời gian thực hiện
của chương trình.


While not eof(f1) do
Begin


Readln(f1,R1,R2,R3);
a[1]:=R1*R2*R3/


(R1*R2+R1*R3+R2*R3);
a[2]:=R1*R2/(R1+R2)+R3;
a[3]:=R1*R3/(R1+R3)+R2;


a[4]:=R2*R3/(R2+R3)+R1;
a[5]:=R1+R2+R3;


For i:=1 to 5 do write(f2, a[i]:9:3,’ ‘);
Writeln(f2);


End;


Close(f1); Close(f2);
End.


Hoạt động 3: (Chung cả lớp) (p)


GV: Cung cấp cho HS một số kiến thức
mở rộng.


- Giới thiệu cho HS một thủ tục mở file để
ghi thêm dữ liệu vào file?


HS: Quan sát và ghi bài.


GV: Giới thiệu hàm kiểm tra sự tồn tại
của một file.


- Ý nghĩa: hàm trả về giá trị TRUE nếu
tập tin cần mở có trên đĩa, ngược lại cho
giá trị False.


- Lồng hàm trên vào ví dụ 2 cho HS kiểm
chứng.



* Thủ tục: APPEND(biến tệp);


* Ý nghĩa: Thủ tục này dùng để mở tập tin có tên đã
được gán cho biến tệp bởi thủ tục Assign trước đó.
Khi tệp được mở thì cửa sổ tệp định vị ở vị trí kết thúc
tệp. Từ đó có thể tuần tự ghi thêm dữ liệu vào cuối
tệp.


FUNCTION FileExists (tên_file: String):Boolean;
Var F: FILE;


Begin
{$I-}


Assign (f, tên_file); Reset (f); Close (f);
{$I+}


FileExists:= (IOResult=0);
End;


IV. Củng cố (5p)


- Nêu các thao tác với tệp văn bản?
V. Dặn dị (1p)


- Bài tập:


1. Viết chương trình đọc và hiển thị ra màn hình nội dung một tập tin dạng văn bản, với tên tập tin
được nhập từ bàn phím (có kiểm tra sự tồn tại của tập tin).



<b>Tiết 38</b> <b> Ngày soạn: 20/02/2009</b>


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


<b>A. MỤC TIÊU</b>


1. Kiến thức: Củng cố lại cho học sinh các kiến thức cơ bản của chương
2. Kỹ năng:


 Nâng cao kĩ năng sử dụng một số lệnh kiểu dữ liệu tệp.
 + Gắn tên tệp; + Mở tệp; + Đóng tệp;


 Biết giải một số bài tốn cụ thể thường gặp.


3. Thái độ: Góp phần rèn luyện tác phong, tư duy lập trình: Tự giác, tích cực, chủ động và sáng
tạo trong tìm kiếm kiến thức.


<b>B. PHƯƠNG PHÁP</b>


 Thuyết trình và giảng giải, kết hợp với hình ảnh trực quan.
 Sử dụng các câu hỏi gợi mở, nêu vấn đề cho học sinh trả lời


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

1. Giáo viên: Giáo án, một số bài tập và đáp án.


2. Học sinh: SGK, sách bài tập và bài tập đã làm ở nhà.
<b>D. TIẾN TRÌNH LÊN LỚP</b>


I. Ổn định tổ chức (1p)



Lớp 11B5 11B6 11B7 11B8


Vắng


II. Kiểm tra bài cũ
III. Bài mới.
1. Đặt vấn đề


2. Triển khai bài mới


Hoạt động của giáo viên và học sinh Nội dung kiến thức


Hoạt động 1: Làm bài tập 1 (Bài tập về nhà)
Viết chương trình đọc và hiển thị ra màn hình
nội dung một tập tin dạng văn bản, với tên tập
tin được nhập từ bàn phím (có kiểm tra sự tồn
tại của tập tin).


GV: Gọi học sinh lên bảng viết chương trình
(Khơng cần kiểm tra sự tồn tại của tập tin).
GV: Có thể đưa ra một số câu hỏi gợi ý sau:
- Biến tên tập tin có kiểu gì?


- Trước khi gắn tên tệp cho biến tệp ta cần
phải làm gì?


- Để đọc được dữ liệu từ tệp ta cần dùng câu
lệnh nào để mở tệp?


- Để đọc hết dữ liệu trong tệp ta làm thế nào?


- Khi nào thì xuất dữ liệu ra màn hình?


HS: Nghiên cứu, vận dụng kiến thức đã học để
trả lời.


GV: Yêu cầu học sinh viết chương trình hồn
thiện.


HS: Viết chương trình.


GV: Đánh giá, hồn thiện và cho điểm.


Program Doc_tep;


Var tep: string; ch: char; f: text;
Begin


Write('Nhap ten File can doc: '); readln(tep);
Assign(f,tep); reset(f);


While not eof(f) do
begin


read(f,ch); write(ch);
end;


close(f);
readln;


End.



Hoạt động 2: Giáo viên hướng dẫn cho học
sinh cách lồng hàm kiểm tra sự tồn tại của tập
tin vào trong chương trình và hồn thiện nội
dung bài tập 1


Program Doc_tep;


Var tep: string; ch: char; f: text;


FUNCTION FileExists(FileTest: string):
Boolean;


Var f: File;
Begin


{$I-}


Assign(f,FileTest); reset(f); Close(f);
{$I+}


FileExists := (IOResult=0);
end;


Begin


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

begin


Assign(f,tep); reset(f);
While not eof(f) do



begin


read(f,ch);
write(ch);


end;
close(f);
end


else writeln('File ',tep,' khong ton tai tren dia');
readln;


End.
Hoạt động 3: Kiểm tra 15’


Viết chương trình đọc một tập tin dạng văn
bản đã có trên đĩa. Hiển thị ra màn hình nội
dung của tập tin dưới dạng in hoa, (tên tập tin
được nhập từ bàn phím).


Var tep: string; ch: char; f: text;
Begin


Write('Nhap ten File can doc: '); readln(tep);
Assign(f,tep); reset(f);


While not eof(f) do
begin



read(f,ch); write(upcase(ch));
end;


close(f);
readln;


End.
IV. Củng cố


V. Dặn dò (1p)


- Nghiên cứu trước nội dung bài 17: ‘Chương trình con và phân loại’.
VI. Rút kinh nghiệm:


<b>Tiết: 39, 40</b> <b>Ngày soạn: 25/02/2009</b>


<b>Bài 16: CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI</b>
<b>A. MỤC TIÊU</b>


1. Kiến thức:


 Biết được khái niệm chương trình con.


 Biết được ý nghĩa của chương trình con, sự cần thiết phải viết một chương trình thành các


chương trình con.


 Biết được cấu trúc của chương trình con.


 Phân biệt được hai loại chương trình con là hàm và thủ tục.



2. Kỹ năng:


Nhận biết được các thành phần trong đầu của thủ tục.


Nhận biết được hai loại tham số hình thức trong đầu của hai thủ tục.


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

Cách viết lời gọi chương trình con trong thân chương trình chính.
3. Thái độ:


 Tiếp tục rèn luyện các phẩm chất của người lập trình như tinh thần hợp tác, sẵn sàng làm


việc theo nhóm, tuân thủ theo u cầu vì một việc chung.


 Có ý thức lưu trữ dữ liệu một cách khoa học.


<b>B. PHƯƠNG PHÁP</b>


 Thuyết trình và giảng giải, kết hợp các hình ảnh trực quan.


 Sử dụng các câu hỏi gợi mở, nêu vấn đề cho học sinh trả lời, tổ chức hoạt động theo


nhóm


<b>C. CHUẨN BỊ CỦA GIÁO VIÊN VÀ HỌC SINH</b>
1. Giáo viên: Giáo án, máy chiếu Projector để hướng dẫn
2. Học sinh: SGK, vở.


<b>D. TIẾN TRÌNH LÊN LỚP</b>
I. Ổn định tổ chức (1p)



Lớp 11B5 11B6 11B7 11B8


Vắng
II. Kiểm tra bài cũ
III. Bài mới


1. Đặt vấn đề (1p)


- Khi viết các chương trình giải quyết các bài tốn phức tạp, chương trình thường rất dài, người
đọc rất khó nhận biết được chương trình thực hiện cơng việc gì. Vấn đề đặt ra là phải cấu trúc
chương trình như thế nào để dể đọc, dể hiểu. Mặt khác, việc giải quyết các bài tốn lớn thường địi
hỏi phân thành các bài tốn con. Vì vậy khi lập trình cần phải chia chương trình thành các chương
trình con.


2. Triển khai bài


Hoạt động của giáo viên và học sinh Nội dung kiến thức


<b>Hoạt động 1: Tiết 39( Hoạt động nhóm)</b>
GV: Yêu cầu học sinh xác định ý tưởng
giải bài tốn tính tổng luỹ thừa: TLT = an


+ bm<sub> + c</sub>p<sub> + d</sub>q<sub>, đã được giao nhiệm vụ về</sub>


nhà.


HS: Lần lượt tính tổng luỹ thừa cho từng
biến a, b, c, d sau đó tính tổng.



GV: Chiếu chương trình lên bảng, gọi học
sinh nhận xét về tính ngắn gọn, rõ ràng,
tính dễ đọc, dễ hiểu của chương trình.
HS: Chương trình dài, phải viết lại nhiều
lần đoạn chương trình thực hiện một cơng
việc tương tự nhau.


GV: Chiếu đoạn chương trình có sử dụng
hàm trong việc giải bài tốn và yêu cầu
học sinh so sánh với chương trình ban
đầu.


HS: Quan sát và nhận xét.


GV: Vậy khi nào nên viết chương trình
con?


HS: Đối với các bài toán lớn, cần nhiều


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

người cùng viết. Chương trình dài, cần
chia làm nhiều đoạn. Có nhiều đoạn lệnh
lặp lại, chỉ nên viết một chương trình con.
GV: Vậy chương trình con là gì?


HS: Nghiên cứu SGK và trả lời.


GV: Chia lớp thành ba nhóm. Phát bìa
cho mỗi nhóm. u cầu HS điền các lợi
ích của việc sử dụng chương trình con.
HS: Nghiên cứu SGK, thảo luận nhóm để


điền phiếu học tập.


GV: Thu phiếu học tập và dán kết quả lên
bảng. Cho HS so sánh với kết quả của
giáo viên.


a. Khái niệm


- Chương trình con là một dãy lệnh mơ tả một số thao
tác nhất định và có thể được thực hiện (được gọi) từ
nhiều vị trí trong chương trình.


b. Lợi ích của việc sử dụng chương trình con


- Tránh được việc phải viết lặp đi lặp lại cùng một dãy
lệnh;


- Hỗ trợ việc thực hiện các chương trình lớn;
- Phục vụ cho q trình trừu tượng hố;
- Mở rộng khả năng ngơn ngữ;


- Thuận tiện cho phát triển, nâng cấp chương trình;
<b>Hoạt động 2: Tiết 40</b>( hoạt động nhóm)


GV: Có mấy loại chương trình con? Gọi
tên của chúng?


HS: Hai loại: hàm và thủ tục


GV: Các em đã từng làm quen với hàm và


thủ tục chưa? Lấy một số ví dụ về hàm và
thủ tục đã được học.


HS: Rồi. Hàm và thủ tục chuẩn, ví dụ hàm
Length(st); Copy(st, vt,n); Thủ tục
delete(st, vt, n);


GV: Ý nghĩa của hàm và thủ tục.
HS: Nghiên cứu SGK và trả lời.


GV: Yêu cầu học sinh nhắc lại cấu trúc
của chương trình chính.


HS: [<Phần khai báo>]
<Phần thân>


GV: Giới thiệu cấu trúc chương trình con.
Yêu cầu học sinh so sánh hai cấu trúc và
giải thích ý nghĩa của từng phần.


GV: Để sử dụng hàm và thủ tục chuẩn em
thường viết ở đâu và viết như thế nào?
HS: Trong chương trình chính. Viết thủ
tục kèm theo các tham số và kết thúc là
dấu chấm phẩy. Viết hàm trong lệnh nào
đó hoặc trong thủ tục. Hàm không được
viết như lệnh.


2. Phân loại và cấu trúc của chương trình con
a. Phân loại (2 loại)



* Hàm (function): thực hiện một số thao tác nào đó và
trả về một giá trị kiểu đơn giản thông qua tên hàm.
* Thủ tục (Procedure): thực hiện các thao tác nhất
định nhưng không trả về giá trị qua tên của nó.


b. Cấu trúc
* Cấu trúc chung


<Phần đầu>
[<Phần khai báo>]


<Phần thân>


* Tham số hình thức: là các biến được khai báo cho dữ
liệu vào/ra của chương trình con


* Biến cục bộ: được khai báo để dùng riêng trong
chương trình con.


* Biến tồn cục: là biến của chương trình chính.
c. Thực hiện chương trình con


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

GV: Diễn giảng.
IV. Củng cố (5p)


Câu 1: Giả sử có hai biến xâu x và y (y đã có giá trị) câu lệnh nào sau đây là không hợp lệ?
A. x:=Copy(y,5,3); C. x:=Delete(y,5,3);


B. x:=y; D. Delete



Câu 2: Nói về cấu trúc của một chương trình con, khẳng định nào sau đây là khơng đúng?
A. Phần đầu và phần thân nhất thiết phải có, phần khai báo có thể có hoặc khơng.
B. Phần khai báo có thể có hoặc khơng có tuỳ thuộc vào từng chương trình cụ thể.
C. Phần đầu có thể có hoặc khơng cũng được.


D. Phần đầu nhất thiết phải có để khai báo tên chương trình con.
V. Dặn dị (1p)


Đọc trước nội dung bài: Ví dụ về cách viết và sử dụng chương trình con, SGK trang 96.


<b>Tiết: 41</b> <b>Ngày soạn: 28/02/2009</b>


<b>Bài 18: VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON (T1)</b>
<b>A. MỤC TIÊU</b>


1. Kiến thức: - Giúp học sinh nắm được:


- Cấu trúc chung của thủ tục trong chương trình.
- Phân biệt được tham số và tham trị.


- Các khái niệm về biến toàn cục và biến cục bộ.


2. Kỹ năng: - Nhận biết được các thành phần trong đầu của thủ tục.
- Nhận biết được hai loại tham số hình thức trong đầu của hai thủ tục.


- Biết cách khai báo hai loại chương trình con cùng với tham số hình thức của chúng.
- Cách viết lời gọi chương trình con trong thân chương trình chính.


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

3. Thái độ: - Tiếp tục rèn luyện các phẩm chất của người lập trình như tinh thần hợp tác, sẵn sàng


làm việc theo nhóm, tuân thủ theo u cầu vì một việc chung.


- Có ý thức lưu trữ dữ liệu một cách khoa học.
<b>B. PHƯƠNG PHÁP</b>


- Thuyết trình và giảng giải, kết hợp các hình ảnh trực quan.


- Sử dụng các câu hỏi gợi mở, nêu vấn đề cho học sinh trả lời, tổ chức hoạt động theo nhóm
C. CHUẨN BỊ CỦA GIÁO VIÊN VÀ HỌC SINH


1. Giáo viên: Giáo án, máy chiếu Projector để hướng dẫn
2. Học sinh: SGK, vở.


<b>D. TIẾN TRÌNH LÊN LỚP</b>
I. Ổn định tổ chức (1p)


Lớp 11B5 11B6 11B7 11B8


Vắng
II. Kiểm tra bài cũ (5p)


Câu hỏi: Hãy nêu khái niệm, phân loại và chức năng của từng loại chương trình con.


Đáp án: - Chương trình con là một dãy lệnh mơ tả một số thao tác nhất định và có thể được thực
hiện (được gọi) từ nhiều vị trí trong chương trình.


* Hàm (function): thực hiện một số thao tác nào đó và trả về một giá trị kiểu đơn giản thông qua
tên hàm.


* Thủ tục (Procedure): thực hiện các thao tác nhất định nhưng không trả về giá trị qua tên của nó.


III. Bài mới


1. Đặt vấn đề (1p)


- Bài học trước các em đã được tìm hiểu về chương trình con, cấu trúc và phân loại. Vậy chương
trình con được viết như thế nào, sử dụng chúng ra sao, có gì giống và khác với chương trình chính
khơng? Bài học hơm nay chúng ta sẽ tìm hiểu nội dung này.


2. Triển khai bài


Hoạt động của giáo viên và học sinh Nội dung kiến thức
Hoạt động 1: (theo từng nhóm) (12p)


GV: Giới thiệu bài toán ví dụ mở đầu.
Giới thệu cho học sinh cấu trúc thủ tục, vị
trí khai báo của thủ tục, lời gọi thủ tục.
HS: Quan sát, theo dõi ví dụ.


GV: Vị trí của thủ tục nằm ở phần nào
trong chương trình chính?


HS: Ở phần khai báo, sau phần khai báo
biến.


GV: Cấu trúc của thủ tục gồm có mấy
phần?


HS: Ba phần: tên, khai báo, phần than.
GV: Phân biệt sự giống và khác nhau giữa
chương trình chính và chương trình con.


HS: Giống: cấu trúc chung.


Khác: trong phần tên, từ khoá đặt tên
Prcedure có các tham số.


GV: Yêu cầu học sinh xác định cấu trúc
chung của thủ tục.


- Lời gọi thủ tục ta viết ở phần nào trong


§18 Ví dụ về cách viết và sử dụng chương trình con
1. Cách viết và sử dụng thủ tục


a. Cấu trúc của thủ tục


Procedure <tên thủ tục>[<danh sách các tham số>];
[<Phần khai báo>]


Begin


[<Dãy các lệnh>]
End;


* Trong đó:


- Phần đầu gồm tên dành riêng và tên thủ tục, danh
sách tham số (có thể có hoặc không);


- Phần khai báo: dùng để xác định các hằng, kiểu, biến
và cũng có thể xác định các chương trình con khác


được sử dụng trong thủ tục.


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

chương trình?


HS: Trong phần thân của chương trình.
Hoạt động 2: (Theo từng nhóm) (10p)
GV: Chiếu ví dụ 2, u cầu học sinh nhận
xét về thủ tục ve_HCN của ví dụ này với
ví dụ trước.


* Tổ chức hoạt động nhóm;
- Phân nhóm từ 4-6 em


- Cơng việc: Xác định bản chất của thủ
tục ve_HCN;


- Câu hỏi: câu lệnh nào thực hiện vẽ cạnh
trên, hai cạnh bên và câu lệnh nào thực
hiện vẽ cạnh dưới.


- Kết thúc hoạt động: thu kết quả của các
nhóm, u cầu các nhóm trình bày kết quả
của nhóm.


- Cho các nhóm nhận xét kết quả bài làm
của nhau.


- GV: nhận xét kết quả và đưa ra kết luận
(có thể cho điểm các nhóm nếu bài làm
tốt)



GV: Trong chương trình chính ta vẽ tất cả
bao nhiêu thủ tục.


GV: Giới thiệu và tham số giá trị bvà
tham số biến.


b. Ví dụ về thủ tục
* Ví dụ 1;


Program VD_thutuc2;
Uses crt;


Var a, b, i: integer;


Procedure Ve_HCN(chdai, chrong: integer);
Var i,j: integer;


Begin


{Ve canh tren cua hinh chu nhat}
For i:=1 to chdai do write(‘*’);
Writeln;


For j:=1 to chrong-2 do write(‘ ’);
Begin


Write(‘*’);


For i:=1 to chdai-2 do write(‘ ’);


Writeln(‘*’);


End;


For i:=1 to chdai do write(‘*’);
Writeln;


End;


BEGIN {Bat dau chuong trinh chinh}
Clrscr;


Ve_HCN(25,10);
Writeln; Writeln;
Ve_HCN(5,10);
Readln;


Clrscr;
a:=4; b:=2;
For i:=1 to 4 do


Begin


Ve_HCN(a,b);
Readln; clrscr;
a:=a*2; b:=b*2;
end;


Readln;
END.



* Tham số giá trị: có hai chức năng
- Đưa dữ liệu vào cho chương trình con;
- Đưa dữ liệu chương trình con tìm được ra.


* Tham số biến: trong lệnh gọi thủ tục, các tham số
hình thức được thay bằng các tham số thực sự tương
ứng là tên các biến chứa dữ liệu ra được gọi là các
tham số biến.


Hoạt động 3: (Chung cả lớp) (10p)


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

thủ tục trên thực hiện công việc gì;


HS: Hốn đổi giá trị hai biến dữ liệu vào
cho nhau.


GV: Chạy chương trình và thực hiện đổi
phần khai báo thành: Procedure Hoan_doi
(x: integer; var y: integer);


để HS quan sát và nhận xét sự khác nhau
giữa tham biến và tham trị.


Var a, b: integer;


Procedure Hoan_doi (var x, y: integer);
Var TG: integer;


Begin



TG:=x; x:=y; y:=TG;
End;


BEGIN
Clrscr;


A:= 5; b:=10;
Writeln(a:6, b:6);
Hoan_doi(a,b);
Writeln(a:6,b:6);
END.


IV. Củng cố (5p)


- Khi nào thì cần khai báo tham số trong phần khai báo của chương trình con theo kiểu tham biến,
khi nào thì theo kiểu tham trị.


- Phân biệt sự giống và khác nhau giữa tham biến và tham trị.
V. Dặn dò (1p)


- Xem tiếp nội dung còn lại của bài.


- Viết thủ tục tìm và thơng báo ra màn số lớn nhất giữa ba số a, b, c.


<b>Tiết: 42</b> <b>Ngày soạn: 28/02/2009</b>


<b>Bài 18: VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON (T2)</b>
<b>A. MỤC TIÊU</b>



1. Kiến thức: - Giúp học sinh nắm được:


- Cấu trúc chung của thủ tục trong chương trình.
- Phân biệt được tham số và tham trị.


- Các khái niệm về biến toàn cục và biến cục bộ.


2. Kỹ năng: - Nhận biết được các thành phần trong đầu của thủ tục.
- Nhận biết được hai loại tham số hình thức trong đầu của hai thủ tục.


- Biết cách khai báo hai loại chương trình con cùng với tham số hình thức của chúng.
- Cách viết lời gọi chương trình con trong thân chương trình chính.


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

- Phân biệt và sử dụng đúng biến toàn cục và biến cục bộ.


3. Thái độ: - Tiếp tục rèn luyện các phẩm chất của người lập trình như tinh thần hợp tác, sẵn sàng
làm việc theo nhóm, tn thủ theo u cầu vì một việc chung.


- Có ý thức lưu trữ dữ liệu một cách khoa học.
<b>B. PHƯƠNG PHÁP</b>


- Thuyết trình và giảng giải, kết hợp các hình ảnh trực quan.


- Sử dụng các câu hỏi gợi mở, nêu vấn đề cho học sinh trả lời, tổ chức hoạt động theo nhóm
<b>C. CHUẨN BỊ CỦA GIÁO VIÊN VÀ HỌC SINH</b>


1. Giáo viên: Giáo án, máy chiếu Projector để hướng dẫn
2. Học sinh: SGK, vở.


<b>D. TIẾN TRÌNH LÊN LỚP</b>


I. Ổn định tổ chức (1p)


Lớp 11B5 11B6 11B7 11B8


Tiết
II. Kiểm tra bài cũ
III. Bài mới


1. Đặt vấn đề (1p)


- Bài học trước các em đã được tìm hiểu về chương trình con, cấu trúc và phân loại. Vậy chương
trình con được viết như thế nào, sử dụng chúng ra sao, có gì giống và khác với chương trình chính
khơng? Bài học hơm nay chúng ta sẽ tìm hiểu nội dung này.


2. Triển khai bài


Hoạt động của giáo viên và học sinh Nội dung kiến thức


Hoạt động 1: (theo từng nhóm) (12p)
GV: Cho biết tên và cách sử dụng một số
hàm đã học?


HS: Hàm abs(), sqrt(),..


- Viết tên hàm cần gọi và các tham số.
- Lời gọi hàm được viết trong các biểu
thức như một toán hạng, thậm chí là tham
số của một hàm khác.


GV: Chuẩn xác.



- Điểm khác biệt giữa thủ tục và hàm là
gì?


HS: Trong than hàm cần có lệnh gán giá
trị cho tên hàm.


GV: hãy so sánh sự giống và khác nhau
giữa hàm và thủ tục?


HS: giống: có cấu trúc tương tự, có các
tham số,..


- Khác: Tên hàm phải quy định kiểu dữ
liệu; Trong than hàm phải có lệnh:
tên_hàm:= biểu_thức; Bắt đầu của hàm là
từ khố Function.


§18 Ví dụ về cách viết và sử dụng chương trình con
1. Cách viết và sử dụng hàm


a. Cấu trúc của thủ tục


Function <tên thủ tục>[<danh sách các tham số>]:
<kiểu dữ liệu>;


[<Phần khai báo>]
Begin


[<Dãy các lệnh>]



<tên hàm>:= <biểu thức>;
End;


Hoạt động 2: (Theo từng nhóm) (15p)
GV: Chiếu ví dụ rút gọn phân số.


- Trong chương trình có sử dụng bao


b. Ví dụ về hàm
* Ví dụ 1;


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

nhiêu hàm.
HS: một hàm.


GV: hàm UCLN(x,y) dùng để làm gì?
- Lời gọi hàm nằm ở đâu? Có gì khác với
thủ tục trong lời gọi hàm?


HS: Lệnh a:=UCLN(tuso, mauso) ;


- Lời gọi hàm phải được đặt trong một
lệnh hoặc trong một lời gọi chương trình
con khác.


GV: Có những biến nào được sử dụng
trong chương trình? Các biến đó được
khai báo ở chổ nào trong chương trình
chính?



HS: tuso, mauso, a : khai báo trong
chương trình chính.


- sodu: được khai báo trong chương trình
con.


GV: Yêu cầu học sinh phân biệt sự giống
và khác nhau của biến toàn cục và biến
cục bộ.


GV: chạy chương trình để học sinh kiểm
nghiệm và tự rút ra kết luận.


Uses crt;


Var a, tuso, mauso: integer;


Function UCLN(x,y: integer):integer;
Var sodu: integer;


Begin


While y<>0 do
Begin


Sodu:= x mod y;
X:= y;


Y:= sodu;
End;



UCLN:=x;
End;


BEGIN {Bat dau chuong trinh chinh}
Clrscr;


Write(‘Nhap tu so va mau so: ‘); readln(tuso,mauso);
A:=UCLN(tuso, mauso);


If a>1 then
Begin


Tuso:= tuso div a;
Mauso:= mauso div a;
end;


Writeln(tuso:5, ‘/’ ,mauso:5);
Readln;


END.
Hoạt động 3: (Chung cả lớp) (10p)


GV: Chiếu ví dụ Minbaso lên bảng minh
hoạ cho học sinh cách gọi hàm. HS: Chú
ý quan sát và theo dõi.


* Ví dụ 2:


Program Minbaso;


Uses crt;


Var a, b, c: real;


Function Min(a,b: real):real;
Begin


If a<b then min:=a
Else min:=b;


End;


BEGIN {Bat dau chuong trinh chinh}
Clrscr;


Write(‘Nhap vao ba so: ‘); readln(a,b,c);


Writeln(‘So nho nhat trong ba so la: ‘,min(a,b,c);
Readln


END.
IV. Củng cố (5p)


- Phân biệt sự giống và khác nhau giữa hàm và thủ tục


- Phân biệt sự giống và khác nhau giữa biến toàn cục và biến cục bộ
V. Dặn dò (1p)


</div>

<!--links-->

×