Tải bản đầy đủ (.doc) (115 trang)

Tin hoc 11

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 (612.97 KB, 115 trang )

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

<i>TRƯỜNG THPT QUANG OAI</i>


<i>Giáo án Tin học 11 – năm học 2010 – 2011 </i>
<b>Ngày soạn : 16/8/2009</b> <b>Tiết PPCT:1</b>


<b>Chương I: MỘT SỐ KHÁI NIỆM VỀ LẬP TRÌNH VÀ NGƠN NGỮ LẬP TRÌNH</b>
<b> Bài 1: KHÁI NIỆM LẬP TRÌNH VÀ NGƠN NGỮ LẬP TRÌNH </b>


<b>I. MỤC TIÊU:</b>
<i><b>Kiến thức: </b></i>


- Học sinh nhận biết được có ba lớp ngơn ngữ lập trình và các mức của ngơn ngữ lập
trình : ngơn ngữ máy, hợp ngữ và ngơn ngữ bậc cao.


- Biết dược vai trị của chương thình dịch.


<i><b>Kĩ năng: Phân biệt được hai khái niệm biên dịch và thông dịch, phân biệt được các</b></i>
loại ngôn ngữ lập trình.


<i><b>Thái độ: Thấy được sự cần thiết và tiện lợi khi sử dụng các ngơn ngữ lập trình bậc</b></i>
cao. Liên hệ được với quá trình giao tiếp trong đời sống.


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


<i><b>Giáo viên: Một số ví dụ về ngơn ngữ lập trình. </b></i>


<i><b>Học sinh: Tìm hiểu một số loại ngơn ngữ giao tiếp thơng dụng. </b></i>
<b>III. HOẠT ĐỘNG DẠY HỌC:</b>


1) <b>Ổn định tổ chức</b>: Kiểm tra sĩ số lớp.



2) <b>Kiểm tra bài cũ: </b>Nếu chỉ có thuật tốn thì máy đã thực hiện được các bài toán mà
chúng ta đã giải hay chưa ?


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


<b>Nội dung</b> <b>Hoạt động của GV và HS</b>


Ngôn ngữ máy: Là ngôn ngữ duy nhất mà máy
tính có thể trực tiếp hiểu và xử lý đựơc.


Hợp ngữ: Là loại ngôn ngữ sử dụng một số từ để
thực hiện lệnh trên thanh ghi.


Ngôn ngữ bậc cao: Là loại ngơn ngữ gần với ngơn
ngữ tự nhiên, ít phụ thuộc vào loại máy.


Chương trình dịch là chương trình đặc biệt, có
chức năng chuyển đổi chương trình đợc viết bằng
ngơn ngữ lập trình bậc cao sang ngơn ngữ máy.


 Dùng máy chiếu diễn giải hai tình huống này.
Kết luận :


GV : Gọi một học sinh nhắc lại các
khái niệm : ngôn ngữ máy, hợp ngữ
và ngôn ngư bậc cao.


HS: Trả lời câu hỏi.


GV : Để chuyển đổi chương trình


viết bằng ngơn ngữ lập trình bậc cao
sang ngơn ngữ máy cần phải có gì?
HS : Đó là chương trình dịch.


GV : - Cho ví dụ từ thực tế : “
Người phóng viên chỉ biết một ngơn
ngữ là tiếng việt phóng vấn một
chính khách nước ngồi ” thơng qua
người phiên dịch.


GV : Như vậy có hai cách để người
phóng viên có thể thực hiện cơng
việc của mình : biên dịch và thơng
dịch


<i>Giáo viên: Phùng Ngọc Thái</i>



CHƯƠNG TRÌNH NGUỒN


CHƯƠNG TRÌNH DỊCH


CHƯƠNG TRÌNH ĐÍCH


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

<i>TRƯỜNG THPT QUANG OAI</i>


<i>Giáo án Tin học 11 – năm học 2010 – 2011 </i>
<b>Thông dịch</b> (Interpreter) đợc thực hiện bằng cách


lặp lại dãy các bước sau



- Kiểm tra tính đúng đắn của câu lệnh tiếp theo
trong chương trình nguồn


- Chuyển đổi câu lệnh đó thành một hay nhiều câu
lệnh tương ứng trong ngôn ngữ máy.


- Thực hiện câu lệnh vừa chuyển đổi được
<b>Biên dịch</b> (Compiler): được thực hiện qua hai
bước


- Duyệt, phát hiện lỗi, kiểm tra tính đúng đắn của
các câu lệnh trong chương trình nguồn


- Dịch tồn bộ chương trình nguồn thành một
ch-ơng trình đích có thể thực hiện trên máy và có thể
lưu trữ để sử dụng lại khi cần thiết


4) <b>CỦNG CỐ : </b>Khái niệm lập trình? Chương trình dịch là gì? Khái niệm ngơn ngữ lập
trình?


5) <b>BÀI TẬP VỀ NHÀ:</b>


<b>IV. RÚT KINH NGHIỆM, BỔ SUNG: </b>


...
...
...
...


<i>Giáo viên: Phùng Ngọc Thái</i>




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

<i>TRƯỜNG THPT QUANG OAI</i>


<i>Giáo án Tin học 11 – năm học 2010 – 2011 </i>
<b>Ngày soạn : 16/8/2009</b> <b>Tiết PPCT:2</b>


<b>&2. CÁC THÀNH PHẦN CỦA NGƠN NGỮ LẬP TRÌNH.</b>
<b>I. MỤC TIÊU</b>


<i><b>- Kiến thức:</b></i>


+ Biết một số khái niệm: tên, tên chuẩn, tên dành riêng, hằng và biến.


+ Học sinh ghi nhớ được các quy định về tên, hằng và biến trong một ngơn ngữ lập trình.
<i><b>- Kĩ năng:</b></i>


<i><b>+ Phân biệt được tên, hằng và biến.</b></i>


+ Biết cách đặt tên chúng và nhận biết được tên viết sai quy tắc.


<i><b>- Thái độ: Rèn luyện cho HS tính nguyên tắc, chặt chẽ trong lập trình. </b></i>
<b>II. CHUẨN BỊ:</b>


<i><b>Giáo viên: Soạn giáo án, nghiên cứu sách giáo khoa, sách bài tập, tài liệu tham khảo.</b></i>
Máy tính cá nhân và máy chiếu ( nếu có).


<i><b>Học sinh: Đọc trước ở nhà Sách giáo khoa.</b></i>
<b>III. HOẠT ĐỘNG DẠY HỌC:</b>


1) <b>Ổn định tổ chức</b>: Kiểm tra sĩ số lớp.


2) <b>Kiểm tra bài cũ:</b>


<i><b>Câu hỏi : </b></i>


1. Chương trình dịch là gì?


2. Biên dịch và thơng dịch khác nhau như thế nào?
3) <b>Giảng bài mới:</b>


<b>Hoạt động của GV và HS</b> <b>Nội dung</b>


GV: Gọi HS trả lời ý nghĩa của việc đặt
tên?


HS: Tại chỗ trả lời.


GV: Nhận xét và đưa ra kết luận.
HS: Chú ý và ghi bài.


GV: Mọi đối tượng trong chương trình
đều phải được đặt tên theo quy tắc của
ngơn ngữ lập trình và từng chương trình
dịch cụ thể.


HS: Chú ý và ghi bài.


GV: Lấy ví dụ tên đặt sai và tên đặt đúng
và gọi học sinh nhận xét.


HS: - Tên đúng: a,b,c,x1, a_b.


- Tên sai: a bc, 2x.


GV: Ngôn ngữ Pascal không phân biệt
chữ hoa, chữ thường.


HS: Chú ý lắng nghe.


GV: Ngơn ngữ lập trình thường có ba
loại tên cơ bản: tên dành riêng, tên chuẩn
và tên do người lập trình đặt.


HS: Đọc SGK và trình bày về tên dành


<b>2. Một số khái niệm</b>
<i><b>a. Tên </b></i>


- Ý nghĩa của việc đặt tên và khai báo tên cho
các đối tượng:


+ Để quản lý và phân biệt các đối tượng trong
chương trình.


+ Để gợi nhớ nội dung của đối tượng.
- Qui tắc đặt tên trong Pascal:


Tên là một dãy liên tiếp khơng q 127 kí tự
bao gồm các chữ cái, chữ số và dấu gạch dưới
nhưng phải bắt đầu bằng chữ cái hoặc dấu
gạch dưới.



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

<i>TRƯỜNG THPT QUANG OAI</i>


<i>Giáo án Tin học 11 – năm học 2010 – 2011 </i>
riêng.


GV: Trong Pascal, khi soạn thảo, tên
dành riêng có màu trắng phân biệt với
các tên khác


GV: Gọi HS phát biểu về tên chuẩn.
HS: Tại chỗ trả lời


GV: Viết một số tên chuẩn.
HS: Ghi bài,


GV: Lấy ví dụ khi giải phương trình bậc
hai thì cần dùng các biến nào?


HS: Khi giải PTBH ta cần dùng các biến:
a,b,c, x1, x2, Delta để biểu diễn nội dung
của hệ số của phương trình; các nghiệm
của phương trình và biệt số delta.
GV: Vậy các tên đó là tên do người lập
trình đặt.


GV: Nêu khái niệm hằng trong ngơn ngữ
lập trình.


HS: Tại chỗ trả lời.



GV: Lấy ví dụ cả ví dụ đúng và ví dụ sai
về hằng cho học sinh nhận biết.


HS: Nhận biết tên hằng đúng và tên hằng
sai.


Ví dụ: 123, ‘123’, ‘TRUE, 2+3,…
GV: Các biến được dùng trong chương
trình phải được khai báo.


GV: Khi viết chương trình người lập
trình có nhu cầu giải thích cho những câu
lệnh mình viết để khi đọc lại được thuận
tiện hoặc người khác đọc có thể hiểu
được chương trình mình viết, do vậy các
ngơn ngữ lập trình thường cung cấp cho
chúng ta cách đưa vào các đoạn chú thích
trong chương trình.


HS: Chú ý lắng nghe và ghi bài.


GV: Ví dụ một chương trình Pascal đơn
giản minh họa.


<b>* Tên dành riêng: </b>


- Là tên được dùng với ý nghĩa riêng xác định.
- Tên dành riêng còn được gọi là từ khố.
Ví dụ: Trong Pascal:



Program, uses, var, type, const, begin, end,
array, type,…


Trong C++: main, include, if, while, void.
<b>* Tên chuẩn </b>


- Được dùng với ý nghĩa nhất định nào đó,
dùng riêng thì phải khai báo.


Ví dụ:


Trong Pascal: abs, sqr, sqrt, cos, sin,…
Trong C++: cin, cout, getchar.


<b>*Tên do người lập trình đặt</b>


- Được dùng với ý nghĩa riêng, xác định bằng
cách khai báo trước khi sử dụng.


<i><b>b. Hằng và biến. </b></i>
<b>Hằng </b>


- Hằng là đại lượng có giá trị khơng thay đổi
trong q trình thực hiện chương trình.
- Các ngơn ngữ lập trình thường có:
+ Hằng số: số nguyên và số thực.
VD: 2 , 1.0E-6,…


+ Hằng lôgic: Là giá trị đúng (True)hoặc sai
(False).



+ Hằng xâu: Là chuỗi kí tự trong bộ mã
ASCII, đặt trong cặp dấu nháy.


<b>Biến </b>


- Là đại lượng được đặt tên, dùng để lưu trữ
giá trị và giá trị có thể được thay đổi trong q
trình thực hiện chương trình.


<i><b>c. Chú thích </b></i>


- Các chú thích khơng làm ảnh hưởng đến
chương trình.


- Trong Pascal chú thích được đặt trong {}
hoặc (*và*).


- Trong C++ chú thích đặt trong /* và */
hoặc //.


4) <b>CỦNG CỐ : </b>Nhắc lại quy tắc đặt tên trong Pascal và khái niệm tên dành riêng, tên
chuẩn, tên do người lập trình đặt. Khái niệm hằng, biến và sự khác nhau giữa hằng và biến


<i>Giáo viên: Phùng Ngọc Thái</i>



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

<i>TRƯỜNG THPT QUANG OAI</i>


<i>Giáo án Tin học 11 – năm học 2010 – 2011 </i>



5) <b>BÀI TẬP VỀ NHÀ:</b>


Hướng dẫn làm bài tập 5 và bài tập 6.


- Bài 6: Các hằng số: a, b, f,g Các hằng xâu: d,i.
<b>IV. RÚT KINH NGHIỆM, BỔ SUNG: </b>


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

<i>TRƯỜNG THPT QUANG OAI</i>


<i>Giáo án Tin học 11 – năm học 2010 – 2011 </i>
<b>Ngày soạn : 16/8/2009</b> <b>Tiết PPCT:3</b>


<b>BÀI TẬP</b>
<b>I. MỤC TIÊU</b>


<i><b>- Kíến thức:</b></i>


+ Củng cố lại cho HS những kiến thức đã học về lập trình, ngơn ngữ lập trình bậc cao, ngơn
ngữ máy, chương trình dịch, thơng dịch, biên dịch qua các bài tập trắc nghiệm.


<i><b>- Kĩ năng:</b></i>


+ Xác định được tên đúng, tên sai, tên chuẩn, từ khoá.


+ Biết viết hằng và tên đúng trong một ngơn ngữ lập trình cụ thể.
<i><b>- Thái độ:</b></i>


<i><b>+ Nhận thức được quá trình phát triển của ngơn ngữ lập trình gắn liền với quá trình phát</b></i>
triển của tin học.



+ Ham muốn học một ngơn ngữ lập trình cụ thể để có khả năng giải các bài tốn bằng máy
tính điện tử.


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


<i><b>Giáo viên: Soạn giáo án, nghiên cứu sách giáo khoa, sách bài tập, tài liệu tham khảo.</b></i>
Máy tính cá nhân và máy chiếu ( nếu có).


<i><b>Học sinh: Làm bài tập trước ở nhà.</b></i>
<b>III. HOẠT ĐỘNG DẠY HỌC:</b>


1) <b>Ổn định tổ chức</b>: Kiểm tra sĩ số lớp.
2) <b>Kiểm tra bài cũ</b>


<i><b>Câu hỏi : </b></i>


1. Nêu các thành phần cơ bản của ngơn ngữ lập trình?
2. Nêu quy tắc đặt tên trong Turbo Pascal?


Đáp án:


1. Ngơn ngữ lập trình có ba thành phần cơ bản: bảng chữ cái, cú pháp và ngữ nghĩa.
- Bảng chữ cái: Là tập các kí tự được dùng để viết chương trình.


- Cú pháp: Là bộ quy tắc để viết chương trình.
- Ngữ nghĩa: Xác định ý nghĩa của các tổ hợp kí tự.
2. Quy tắc đặt tên trong Pascal:


- Đối tượng HS kiểm tra: HS trung bình.
3) <b>Giảng bài mới:</b>



<b>Hoạt động của GV và HS</b> <b>Nội dung</b>


GV: Gọi HS đọc câu hỏi 1, cả lớp suy
nghĩ trả lời.


HS: Đọc câu hỏi.


GV: Gọi HS đứng tại chổ trả lời.
GV: Gọi HS khác bổ sung. Sau đó GV
nhận xét câu trả lời và ghi đáp án.
HS: Chữa bài tập vào vở.


<b>Câu1: Tại sao người ta phải xây dựng các </b>
<b>ngôn ngữ lập trình bậc cao? </b>


Người ta phải xây dựng các ngơn ngữ lập trình
bậc cao, vì:


- Ngơn ngữ lập trình bậc cao gần với ngôn ngữ
tự nhiên hơn, thuận tiện cho đơng đảo người lập
trình.


- Chương trình viết bằng ngơn ngữ lập trình bậc
cao nói chung khơng phụ thuộc vào phần cứng
máy tính.


- Chương trình viết bằng ngơn ngữ bậc cao dễ
hiểu, dễ hiệu chình và nâng cấp.



<i>Giáo viên: Phùng Ngọc Thái</i>



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

<i>TRƯỜNG THPT QUANG OAI</i>


<i>Giáo án Tin học 11 – năm học 2010 – 2011 </i>
GV: Gọi HS đọc câu hỏi 2 và trả lời


câu hỏi 2.


HS: Tại chỗ trả lời và nêu khái niệm
chương trình dịch.


GV: Nêu Input và Output của chương
trình dịch để gợi ý cho HS vai trị của
chương trình dịch.


HS: Tại chỗ trả lời.


GV: Gọi HS trả lời câu hỏi 3.
HS: Tại chỗ đọc câu hỏi.


GV: Gọi HS khác nhận xét câu trả lời,
bổ sung và đưa ra đáp án.


GV: Gọi HS khác nhận xét câu trả lời,
bổ sung và đưa ra đáp án.


GV: Gọi HS đọc câu hỏi 4, cả lớp suy
nghĩ câu hỏi.



GV: Gọi 1 HS trả lời.


GV: Nhận xét và nêu đáp án.
GV: Gọi HS đọc câu hỏi 5


GV: Gợi ý cho HS bằng cách gọi 1 HS
nêu quy tắc đặt tên trong Pascal và tên
được đặt không quá ngắn, hay quá dài
mà nên đặt sao cho gợi nhớ ý nghĩa đối
tượng mang tên đó.


HS: Tại chỗ đọc câu hỏi.
HS: Lên bảng làm.
GV: Chữa bài.


GV: Gọi HS đọc câu hỏi 6


GV: Từng câu a,b,…, i gọi lần lượt
từng HS: Trả lời:


- c) không phải là hằng vì dấu phẩy
phải thay bằng dấu chấm.


- e) là tên chưa rõ giá trị.


- h) thiếu dấu nháy đơn ơ cuối.


- Ngôn ngữ bậc cao cho phép làm việc với nhiều
kiểu dữ liệu và cách tổ chức dữ liệu đa dạng,
thuận tiện cho việc mơ tả thuật tốn.



<b>Câu2: Chương trình dịch là gì? Tại sao cần </b>
<b>phải có chương trình dịch. </b>


- Chương trình dịch là chương trình đặc biệt, có
chức năng chuyển đổi chương trình được viết
trên ngơn ngữ bậc cao thành một chương trình
đích có thể thực hiện trên máy.


- Để một chương trình viết bằng ngơn ngữ bậc
cao máy có thể hiểu và thực hiện được thì phải
có chương trình dịch dịch sang ngơn ngữ máy.
<b>Câu3: Biên dịch và thông dịch khác nhau như</b>
<b>thế nào? </b>


- Trình biên dịch duyệt, kiểm tra, phát hiện lỗi,
xác định chương trình nguồn có dịch được khơng
và dịch tồn bộ thành một chương trình đích có
thể thực hiện trên máy và có thể lưu trữ được.
- Trình thơng dịch lần lượt dịch từng câu ra ngôn
ngữ máy rồi thực hiện và không lưu lại trên máy.
<b>Câu4: Hãy cho biết điểm khác nhau giữa tên </b>
<b>dành riêng và tên chuẩn?</b> - Tên dành riêng
không được dùng khác với ý nghĩa đã xác định,
tên chuẩn có thể dùng với ý nghĩa khác.


<b>Câu5: Hãy tự viết ra ba tên đúng theo quy tắc</b>
<b>của Pascal.</b>


3 tên đúng trong Pascal:


abc; vidu3; _15a.


<b>Câu6: </b>Hãy cho biết những biểu diễn nào dưới
đây không phải là biểu diễn hằng trong Pascal và
chỉ rõ lỗi trong từng trường hợp.


a) 150.0; b) -22; c) 6,23; d) ‘43’ ; e)
A20; f)1.06E-15


g) 4+6 ; h) ‘c ; i) ‘True’.


- Các biểu diễn không phải là hằng: c), e), h).


4) <b>CỦNG CỐ : </b>


- Rèn luyện kĩ năng đặt tên, biến.


- Hiểu và nắm vững khái niệm chương trình dịch, hằng và biến,…


5) <b>BÀI TẬP VỀ NHÀ:</b>


- Hướng dẫn HS làm các bài tập trong SBT: BT 1.9; BT 1.10; BT 1.11; BT 1.12.
<b>IV. RÚT KINH NGHIỆM, BỔ SUNG: </b>


<b>Ngày soạn : 16/8/2009</b> <b>Tiết PPCT: 4</b>


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

<i>TRƯỜNG THPT QUANG OAI</i>


<i>Giáo án Tin học 11 – năm học 2010 – 2011 </i>



<b>CHƯƠNG II: CHƯƠNG TRÌNH ĐƠN GIẢN</b>
<b>&3. CẤU TRÚC CHƯƠNG TRÌNH</b>
<b>§4. MỘT SỐ KIỂU DỮ LIỆU CHUẨN</b>
<b>I. MỤC TIÊU</b>


<i><b>- Kiến thức:</b></i>


+ Hiểu chương trình là sự mơ tả của thuật tốn bằng một ngơn ngữ lập trình.
+ Biết cấu trúc của một chương trình đơn giản: cấu trúc chung và các thành phần.
+ Biết một số kiểu dữ liệu chuẩn: ngun, thực, kí tự, lơgic và miền con.


<i><b>- Kĩ năng:</b></i>


+ Nhận biết được các thành phần của một chương trình đơn giản.
+ Xác định kiểu cần khai báo của dữ liệu đơn giản.


<i><b>- Thái độ:</b></i>


+ Xác định thái độ nghiêm túc trong học tập khi làm quen với nhiều qui định nghiêm ngặt
trong lập trình.


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


<i><b>Giáo viên: Soạn giáo án, nghiên cứu sách giáo khoa, sách bài tập, tài liệu tham khảo.</b></i>
Máy tính cá nhân và máy chiếu ( nếu có).


<i><b>Học sinh: tham khảo trước tài liệu ở nhà.</b></i>
<b>III. HOẠT ĐỘNG DẠY HỌC:</b>


1) <b>Ổn định tổ chức</b>: Kiểm tra sĩ số lớp.


2) <b>Kiểm tra bài cũ ( 7 ‘)</b>


<i><b>Câu hỏi : </b></i>


Câu hỏi: Nêu qui tắc đặt tên trong Pascal? Phân biệt tên chuẩn và tên dành riêng?
Đáp án:


- Qui tắc đặt tên trong Pascal: Trong Pascal, tên là một dãy liên tiếp khơng q 127 kí tự bao
gồm chữ số, chữ cái hoặc dấu gạch dưới và bắt đầu bằng chữ cái hoặc dấu gạch dưới.


- Tên dành riêng không được sử dụng với ý nghĩa khác, cong với tên chuẩn, người dùng có
thể dùng chúng với ý nghĩa và mục đích khác.


Đối tượng kiểm tra: HS trung bình.
3) <b>Giảng bài mới:</b>


<b>Hoạt động của GV và HS</b> <b>Nội dung</b>


GV: Một ngơn ngữ lập trình bậc cao
thường có hai phần.


GV: Với quy ước: Các diễn giải bằng
ngôn ngữ tự nhiên được đặt trong cặp < và
>


[ ] : Biểu diễn có thể có hoặc khơng.


HS: Phần thân chương trình nhất thiết phải
có, phần khai báo có thể có hoặc khơng
tuỳ theo từng chương trình cụ thể.



GV: Nêu cấu trúc chung của một chương
trình Pascal đơn giản:


<b>I) </b>


<b> CẤU TRÚC CHƯƠNG TRÌNH</b>
<b>1. Cấu trúc chung</b>


- Cấu trúc chung:
[<phần khai báo>]
<phần thân>
- Trong Pascal:
Phần khai báo:


<i><b>Program < tên chương trình>;</b></i>
<i><b>Uses < tên các thư viện>;</b></i>


<i><b>Const <tên hằng>=<giá trị của hằng>;</b></i>
<i><b>Var < tên biến>: <kiểu dữ liệu>;</b></i>


<i>Giáo viên: Phùng Ngọc Thái</i>



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

<i>TRƯỜNG THPT QUANG OAI</i>


<i>Giáo án Tin học 11 – năm học 2010 – 2011 </i>
HS: Lắng nghe và ghi bài.


GV: Chúng ta tìm hiểu từng thành phần
của chương trình.



GV: Phần này có thể có hoặc khơng. Với
Pascal, nếu có phải khai báo theo đúng
quy tắc.


HS: Lên bảng


GV: Gọi HS lấy ví dụ về khai báo tên
chương trình đúng.


HS: Lên bảng
GV: Nhận xét.


GV: Mỗi ngơn ngữ lập trình thường có sẵn
một số thư viện cung cấp một số chương
trình thơng dụng đã được lập sẵn.Để sử
dụng các chương trình đó cần khai báo thư
viện chứa nó.


GV: Trong Pascal, khai báo thư viện phải
ln đặt đầu tiên, ngay sau dịng khai báo


<i>program.</i>


GV: Những gía trị xuất hiện nhiều lần
trong chương trình thì thường được khai
báo hằng.


HS: Lắng nghe



GV: Khai báo hằng sẽ tạo điều kiện thuận
lợi cho việc chỉnh sửa lại giá trị của hằng
trong tồn bộ chương trình.


GV: Lấy ví dụ.


GV: - Biến chỉ nhận một giá trị tại mỗi
thời điểm thực hiện chương trình được gọi
là biến đơn.


<b>GV</b>: Khi cần viết chương trình quản lí học
sinh ta cần xử lí thơng tin ở những dạng
nào?


<b>HS</b>: Suy nghỉ và trả lời câu hỏi của GV.
<b>GV</b>: Phân tích câu trả lời của học sinh và
đưa ra một vài thông tin ở dạng như sau:
- Họ tên học sinh là những thơng tin ở
dạng văn bản và dạng kí tự


- Điểm của học sinh là thông tin ở dạng
số thực.


<i><b>Procedure …; <khai báo thủ tục></b></i>
<i><b>Function …; <khai báo hàm>…</b></i>
Phần thân:


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


{Dãy các câu lệnh};


<i><b>End.</b></i>


<b>2. Các thành phần của chương trình</b>
<i><b>a. Phần khai báo</b></i>


<b>* Khai báo tên chương trình. </b>
Trong Pascal:


<i><b>Program <tên chương trình>;</b></i>
Ví dụ:


<i><b>Program vidu;</b></i>
<i><b>Program tinhtong;</b></i>
<b>* Khai báo thư viện.</b>


- Khai báo thư viện trong Pascal:


<i><b>Uses</b> crt;</i> {Thư viện crt chứa các hàm vào/ra
chuẩn làm việc với màn hình và bàn phím}
<i><b>Uses</b> graph</i>; {Thư viện <i>graph</i> chứa các hàm
đồ hoạ}


- Để xố những gì trên màn hình sau khi khai
báo <i>crt</i> thì dùng lệnh <i>clrscr.</i>


- Trong C++:
#include <stdio.h>;
#include <conio.h>;
<b>* Khai báo hằng:</b>
- Trong Pascal:



<i><b> Const MaxN = 1000;</b></i>
PI = 3.1416;


<b>* Khai báo biến: </b>- Trong Pascal:
<i><b>Var <danh sách biến>:<kiểu dữ liệu>;</b></i>
Ví dụ: Giải phương trình bậc hai:


<i>ax2<sub> + bx +c = 0.</sub></i>


Khai báo: <i><b>Var</b> a,b,c,x1,x2,delta: real;</i>


<i><b>b. Phần thân chương trình</b></i>


- Phần thân chương trình bao gồm dãy lệnh
trong phạm vi được xác định bởi cặp dấu
hiệu mở đầu và kết thúc.


- Trong Pascal, được bắt đầu và kết thúc bởi
Begin… End.


Begin


[<Dãy lệnh>];
End.


<b>II. Kiểu dữ liệu chuẩn</b>
<b>1. Kiểu nguyên</b>


<b>Kiểu</b> <b>Số Byte</b> <b>Miền gi trị</b>



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

<i>TRƯỜNG THPT QUANG OAI</i>


<i>Giáo án Tin học 11 – năm học 2010 – 2011 </i>
- Số thứ tự của học sinh là thông tin ở


dạng số nguyên.


- Một số thông tin khác chỉ cần biết
chúng là đúng hay sai.


<b>GV</b>: Thuyết trình đưa ra một số bổ sung
sau:


- Ngơng ngữ lập trình nào cũng đưa ra
một số kiểu dữ liệu chuẩn đơn giản, từ
những kiểu đơn giản này ta có thể xây
dựng thành những kiểu dữ liệu phức tạp
hơn.


- Kiểu dữ liệu nào cũng có miền giới hạn
của nó. Máy tính khơng thể lưu tất cả các
số trên trục số nhưng nó có thể lưu trữ với
độ chính xác cao.


- Tuỳ thuộc vào ngơn ngữ lập trình mà
tên của các kiểu dữ liệu khác nhau và
miền giá trị của các kiểu dữ liệu cũng khác
nhau.



- Với mỗi kiễu dữ liệu người lập trình cần
ghi nhớ tên kiểu, miền giá trị và số ô nhớ
để lưu một giá trị thuộc kiểu đó.


- Trong lập trình nói trung thì kiểu kí tự
thường là tập kí tự trong bảng mã kí tự,
mỗi kí tự có một mã thập phân tương ứng.
Để lưu các giá trị thì phải lưu các mã thập
phân tương ứng của chúng.


Byte 1 0...255


Integer 2 - 215...215- 1


Word 2 0...216- 1


Longint 4 - 231...231- 1
<b>2. Kiểu thực</b>


- Có nhiều kiểu cho giá trị là số thực nhưng
hay dùng một số kiểu sau:


<b>Kiểu</b> <b>Số </b>


<b>Byt</b>
<b>e</b>


<b>SCS</b>
<b>cĩ</b>
<b>nghĩa</b>



<b>Miền gi trị</b>


Real 6 11- 12 2.9e- 39<sub>..1.7e</sub>38


Single 4 7- 8 1.5e- 45<sub>...3.4e</sub>- 38


Double 8 15- 16 5.4e- 325<sub>..1.7e</sub>- 308


Extended 10 19- 20 3.4e- 4932<sub>..1.2e</sub>4932


Comp 8 19- 20 - 9.2e18<sub>...9.2e</sub>18


<b>3. Kiểu kí tự</b>
- Tn kiểu: Char


- Miền gi trị l cc gi trị trong bảng m ASCII
gịm 256 kí tự. Mỗi kí tự cĩ 1 m tương ứng
trong phạm vi từ 0 đến 255


- Cc kí tự cĩ quan hệ so snh, việc so snh dựa
trn m của từng kí tự.


<b>4. Kiểu Logic</b>
- Tn kiểu: Boolean


- Miền giá trị: Chỉ có 2 giá trị là True (đúng)
hoặc False (sai).


4) <b>CỦNG CỐ : </b>Nhắc lại các khái niệm mới về cấu trúc chương trình gồm phần khai báo


và phần thân


5) <b>BÀI TẬP VỀ NHÀ:</b>


Cho một chương trình mẫu về nhà yêu cầu học sinh chỉ rõ từng thành phần của chương trình
đó.


<i>Giáo viên: Phùng Ngọc Thái</i>



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

<i>TRƯỜNG THPT QUANG OAI</i>


<i>Giáo án Tin học 11 – năm học 2010 – 2011 </i>


<i>Program venha;</i>
<i>Uses crt;</i>


<i>Var a,b: integer;</i>
<i>Begin</i>


<i>Clrscr;</i>


<i>Writeln(‘Nhâp a,b:’);</i>
<i>Readln(a,b);</i>


<i>Writeln(‘Tong hai so la:’,a+b:3);</i>


<i>Readln;</i>
<i>End.</i>
<b>IV. RÚT KINH NGHIỆM, BỔ SUNG: </b>



<i>Giáo viên: Phùng Ngọc Thái</i>



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

<i>TRƯỜNG THPT QUANG OAI</i>


<i>Giáo án Tin học 11 – năm học 2010 – 2011 </i>


<i>Giáo viên: Phùng Ngọc Thái</i>



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

<i>TRƯỜNG THPT QUANG OAI</i>


<i>Giáo án Tin học 11 – năm học 2010 – 2011 </i>


Ngày soạn : 13 /9/2009 Ngày dạy :15 /9/2009


Tiết PPCT : 5


<b>§5 + 6. KHAI BÁO BIẾN</b>


<b>PHÉP TỐN, BIỂU THỨC, CÂU LỆNH GÁN</b>



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


- Hiểu được các khai báo biến.


- Biết được khái niệm: phép toán, biểu thức số học, hàm số học chuẩn, biểu thức quan hệ.
- Hiểu lệnh gán.


- Biết được một số hàm thông dụng trong Pascal



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


- Khai báo biến đúng, nhận biết khai báo sai.
- Viết được lệnh gán


- Viết được cc biểu thức số học v logic với cc php tốn thơng dụng
<i><b>3. Về thái độ</b></i>:


- Xác định thái độ nghiêm túc trong học tập khi làm quen với nhiều qui định nghiêm ngặt trong lập trình.


- Tạo sự ham muốn giải các bài tập bằng lập trình, trước mắt thấy được ích lợi của lập trình, phục vụ tính tốn
và giải được một số bài toán.


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


<i><b>Giáo viên: Soạn giáo án, sách giáo khoa, sách bài tập, tài liệu tham khảo. Máy tính ( nếu có).</b></i>
<i><b>Học sinh: Cấu trúc chương trình.</b></i>


<b>III. HOẠT ĐỘNG DẠY HỌC:</b>


1) <b>Ổn định tổ chức</b>: Kiểm tra sĩ số lớp.
2) <b>Kiểm tra bài cũ ( 7 ‘)</b>


<i><b>Câu hỏi : </b></i>


Cấu trúc của một chương trình Pascal đơn giản là gì? Kết thúc của chương trình là gì ?
3) <b>Giảng bài mới:</b>


<b>Hoạt động của GV và HS</b> <b>Nội dung</b>



<b>GV: Khai báo bi</b>ến là chương trình báo cho
máy biết phải dùng những chương trình nào
trong chương trình.


<b>HS: L</b>ắng ghe và ghi chép


- Ví dụ 1: Để giải phương trình bặc nhất
ax+b=0 ta cần khai báo như sau:


Var a, b, x: Real


- Ví dụ 2: Để tính chu vi và diện tích của tam
giác cần khai báo các biến sau:


Var a, b, c, p, s, cv: Real;


Trong đó: a, b, c: Dùng để lưu độ dài của 3
cạnh tam giác;


P: là nữa chu vi;


CV, S: là chu vi và diện tích tam giác.


<b>GV: Khi khai báo bi</b>ến cần chú ý những điểm
gì?


<b>HS: Suy gh</b>ĩ trả lời câu hỏi


<i><b>I) Khai báo biến </b></i>



- Trong NLT Pascal biến đơn được khai báo
như sau.


Var <danh sách biến>: <kiểu dữ liệu>;
Trong đó:


- Var: Là từ khoá dùng để khai báo biến
- Danh sách biến: Tên các biến cách nhau bởi
dấu phẩy.


- Kiểu dữ liệu: Là một kiểu dữ liệu nào đó của
ngơn ngữ Pascal.


- Sau var là có thể khai báo nhiều danh sách biến
có những kiểu dữ liệu khác nhau.


- Cần đặt tên biến sao cho gợi nhớđến ý nghĩa
của nó.


- Không nên đặt tên quá ngắn hay quá dài, rễ


dẫn đến mắc lỗi hay hiểu nhầm.


- Khai báo biến cần quan tâm chú ý đến phạm vi


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

<i>TRƯỜNG THPT QUANG OAI</i>


<i>Giáo án Tin học 11 – năm học 2010 – 2011 </i>
<b>GV: Phân tích câu tr</b>ả lời của học sinh giá trị của nó.



<i>Giáo viên: Phùng Ngọc Thái</i>



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

<i>TRƯỜNG THPT QUANG OAI</i>


<i>Giáo án Tin học 11 – năm học 2010 – 2011 </i>
<b>GV: </b>Trong khi viết chương trình ta thường


phải thực hiện tính tốn, thực hiện các so sánh
để đưa ra quyết định xem làm việc gì? Trong
khi viết chương trình có giống với ngơn ngữ
tự nhiên khơng?...


<b>GV</b>: Tốn học có những phép tốn nào?


<b>HS</b>: Đưa ra một số phép toán thường dùng
trong toán học.


<b>GV</b>: Chúng có được sử dụng trong ngơn ngữ
lập trình khơng?


- Chỉ có một số phép tốn dùng được, một số
phép toán phải xây dựng từ các phép tốn
khác.


- Ví dụ phép luỹ thừa không phải ngôn ngữ
nào cũng viết được.


- Mỗi ngơn ngữ khác nhau lại có cách kí hiệu
phép tốn khác nhau.



<b>GV</b>: Trong tốn học, biểu thức là gì?
<b>HS</b>: Đưa ra khái niệm


<b>GV</b>: Đưa ra khái niệm của biểu thức lập trình.
<b>GV</b>: Cách viết các biểu thức này trong lập
trình có giống với cách viết trong tốn học
hay khơng?


<b>HS</b>: Đưa ra ý kiến của mình


<b>GV</b>: Phân tích ý kiến của học sinh.


<b>GV</b>: Đưa ra cách viết biểu thức và thứ tự thực
hiện phép tốn trong lập trình.


<b>GV</b>: Cách viết biểu thức phụ thuộc vào từng
ngơn ngữ lập trình.


- Đưa ra một số biểu thức toán học và yêu cầu
các em viết chúng trong ngơn ngữ lập trình
Pascal.


- Gọi một vài học sinh lên bảng làm bài.
<b>GV</b>: Muốn tính X2 <sub>ta làm thế nào?</sub>


<b>HS</b>: Có thể đưa ra là: x*x


<b>GV</b>: Như vậy muốn tính <i>x</i>, Sinx, cosx,.. ta
làm như thế nào?



HS: Chưa biết cách tính.


<b>GV</b>: Để tính giá trị đó được đơn giản, người ta
xây dựng sẵn một bộ chương trình trong thư
viện chương trình giúp người lập trình tính
tốn nhanh các giá trị thông dụng.


<b>GV</b>: Với các hàm chuẩn cần quan tâm đến giá
trị của đối số và kiểu của giá trị trả về.


Ví dụ: Sinx thì đo bằng độ hay radian?


<b>GV</b>: Trong lập trình thường ta phải so sánh
hai giá trị nào đó trước khi thực hiện lệnh nào


<b>II) PHÉP TỐN, BIỂU THỨC, CÂU LỆNH GÁN</b>
<b>1. Phép Toán</b>


* NLT Pascal sử dụng một số phép toán sau:
- Với số nguyên: +, - , *, Div, Mod


- Với số thực: +, - , *, /


- Các phép toán quan hệ: <, <=, >, >=, <> cho kết
quả là một giá trị Logic (true hoặc false).


- Các phép toán logic: NOT, OR, AND thường
dùng để kết hợp nhiều biểu thức quan hệ với
nhau.



<b>2. Biểu thức số học</b>


* Là một dãy các phép toán +, - , *, /, div và mod
từ các hằng, biến kiểu số và các hàm.


- Dùng cặp dấu () để quy định trình tự tính tốn.
* Thứ tự thực hiện các phép tốn:


- Trong ngoặc trước, ngoài ngoặc sau.
- Nhân chia trước, cộng trừ sau


- Giá trị của biểu thức có kiểu là kiểu của biến
hoặc hằng có miền giá trị lớn nhất trong biểu thức.
<b>3. Hàm số học chuẩn</b>


- Các ngơn ngữ lập trình thường cung cấp sẵn
một số hàm số học để tính một số giá trị thông
dụng.


- Cách viết: Tên_hàm (đối số)


- Kết quả của hàm phụ thuộc vào kiểu của đối số.
- Đối số của hàm là một hay nhiều biểu thức số
học đặt trong dấu ngoặc () sau tên hàm.


- Bản thân hàm cũng có thể coi là biểu thức số
học và có thể tham gia vào biểu thức như một toán
hạng bất kỳ.


<i>* Bảng một số hàm chuẩn:</i>



Học sinh xem SGK
<b>4. Biểu thức quan hệ</b>
<i>* Có dạng như sau:</i>


<Biểu thức 1> <phép tốn quan hệ> <Biểu thức
2>


- Trong đó: Biểu thức 1 và biểu thức 2 phải cùng
kiểu.


- Kết quả của biểu thức quan hệ là True hoặc
False.


- Ví dụ: a>b hoặc 2*c<3*a
<b>5. Biểu thức Logic</b>


- Biểu thức Logic đơn giản nhất là hằng hoặc
biến Logic.


- Ví dụ: a, b, c là 3 cạnh của tam giác nếu thoã


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

<i>TRƯỜNG THPT QUANG OAI</i>


<i>Giáo án Tin học 11 – năm học 2010 – 2011 </i>
đó. Biểu thức quan hệ cịn được coi là biểu


thức so sánh 2 giá trị cho kết quả là True hoặc
False.



Ví dụ: 3>5 cho kết quả False


<b>GV</b>: Muốn so sánh nhiều giá trị cùng một lúc
thì làm thế nào?


<b>HS</b>: đưa ra ý kiến của mình (dùng biểu thức
quan hệ and, or...)


- Đưa ra ví dụ cách viết đúng trong NLT
Pascal.


- Mỗi NLT có cách viết lệnh gán khác nhau.
<b>GV</b>: Cần chú ý đến điều gì khi viết lệnh gán?
<b>HS</b>: Đưa ra ý kiến.


<b>GV</b>: phân tích câu trả lời của học sinh sau đó
tổng hợp lại: Cần chú ý đến kiểu của biến và
kiểu của biểu thức.


<b>GV</b>: Minh hoạ một vài lệnh gán bằng một ví
dụ trực quan trên bảng hoặc trên màn hình.


mãn điều kiện:


(a+b>c) and (b+c>a) and (c+a>b)
<b>6. Câu lệnh gán</b>


- Lệnh gán là cấu trúc cơ bản nhất của mọi ngơn
ngữ lập trình, thường dùng để gán giá trị cho biến.
- Cấu trúc: Tên biến:=biểu thức;



- Trong đó biểu thức phải phù hợp với tên biến,
nghĩa là kiểu của tên biến phải cùng với kiểu của
biểu thức hoặc phải bao hàm kiểu của biểu thức.
- Hoạt động của lệnh gán: Tính giá trị của biểu
thức sau đó ghi giá trị đó vào tên biến.


X1:=(- b + sqrt(delta))/(2*a);
X2:=(- b - sqrt(delta))/(2*a);


4) <b>CỦNG CỐ : </b>Các kiểu dữ liệu chuẩn: nguyên, thực, kí tự, lơgic. Cách khai báo biến


5) <b>BÀI TẬP VỀ NHÀ:</b>


- Làm bài tập 1,2,3,4,5 sgk trang 35


- Xem trước bài: Các thủ tục chuẩn vào/ra đơn giản. Soạn thảo, dịch, thực hiện và hiệu chỉnh chương trình.


<i>Giáo viên: Phùng Ngọc Thái</i>



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

<b>IV. RÚT KINH NGHIỆM, BỔ SUNG: </b>


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

Ngày soạn : 20/9/2009 Ngày dạy : 22 /9/2009
Tiết PPCT : 6


<b>§7. CÁC THỦ TỤC CHUẨN VÀO/RA ĐƠN GIẢN</b>


<b>§8. SOẠN THẢO, DỊCH, THỰC HIỆN, HIỆU CHỈNH CHƯƠNG TRÌNH</b>
<b>I. MỤC TIÊU</b>



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


- Biết các lệnh vào ra đơn giản để nhập thơng tin từ bàn phím và đưa thơng tin ra màn
hình.


- Biết các bước: soạn thảo, dịch, thực hiện và hiệu chỉnh chương trình.
- Biết một số cơng cụ của môi trường Turbo Pascal.


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


- Viết một số lệnh vào ra đơn giản.


- Bước đầu sử dụng được chương trình dịch để phát hiện lỗi.


- Bước đầu chỉnh sửa được chương trình dựa vào thơng báo lỗi của chương trình dịch
và tính hợp lý của kết quả thu được.


3. Về Thái độ: Thấy được sự cần thiết của các thủ tục vào ra, sáng tạo trong vận dụng vào
các bài toán đơn giản.


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


<i><b>Giáo viên: Soạn giáo án, sách giáo khoa, sách bài tập, tài liệu tham khảo. Máy tính </b></i>
( nếu có).


<i><b>Học sinh: Các kiến thức đã học trong các bài trước.</b></i>
<b>III. HOẠT ĐỘNG DẠY HỌC:</b>


1) <b>Ổn định tổ chức</b>: Kiểm tra sĩ số lớp.
<b>2)</b> <b>Kiểm tra bài cũ ( 7 ‘)</b>



<i>2HS làm độc lập:</i> Cho M, N là 2 biến nguyên. Điều kiện xác định M, N đồng thời là số chẵn
hoặc đồng thời là số lẻ được thể hiện trong Pascal như thế nào?


<b>Đ/a:</b> ((M mod 2 = 0) and (N mod 2 = 0)) Or ((M mod 2 =1) and (N mod 2 = 1))
<b>3)</b> <b>Giảng bài mới:</b>


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

<b>1. Nêu vđ: </b> Khi giải quyết một bài toán, ta
phải đưa dữ liệu vào máy tính xữ lí. Để
chtrình giải quyết được nhiều bài toán hơn, ta
phải sử dụng thủ tục nhập dữ liệu.


- Y/cầu Hs n/cứu Sgk cho biết cấu trúc chung
của thủ tục nhập dữ liệu trong NNLT Pascal:
- HS : N/cứu Sgk và trả lời:


<b>Ví dụ:</b> khi viết chtrình giải ptrình: Ax2<sub> + Bx +</sub>


C = 0, ta phải nhập vào các đại lượng nào?
viết lệnh nhập?


Suy nghĩ, trả lời: phải nhập giá trị vào 3 biến
A, B, C. Lệnhnhập:Readln(A,B,C);


Treo bảng chứa chtrình Pascal đơn giản có
lệnh nhập giá trị cho 3 biến.


<b>Hỏi:</b> Khi nhập giá trị cho nhiều biến, ta phải
thực hiện như thế nào?



<b>HS </b>: Các giá trị phải được cách nhau ít nhất
một dấu cách (Space) hoặc kí tự xuống dòng
(Enter).


<b>Hỏi</b>: Lệnh Read và Readln khác nhau như thế
nào?


- Suy nghĩ, trả lời : Read: …… Readln: ……
<b>GV : </b>Sau khi xữ lí xong, để nhìn thấy được
kết quả ta phải dùng thủ tục xuất dữ liệu.
Y/cầu hs n/cứu Sgk cho biết cấu trúc chung
của thủ tục xuất dữ liệu trong NNLT Pascal
- N/cứu Sgk và trả lời.


Ví dụ: Khi viết CT giải pt: ax+b=0, ta phải
đưa ra màn hình gtrị nghiệm
-b/a, ta phải viết lệnh như thế nào?


HS : Writeln(-b/a);


Để nhập giá trị cho 1 biến từ bàn phím, ta
thường đưa thêm câu dẫn dắt sau đó mới đến
câu lệnh nhập. Bằng cách dùng cặp thủ tục
write và read.


<b>Ví dụ: </b>Write(‘Moi ban nhap 3 so:’);
<b>Hỏi</b>: chức năng câu lệnh writeln();


Viết ra màn hình dịng chữ và đưa con trỏ
xuống dòng.



Giới thiệu một số tập tin cần thiết để Turbo
pascal có thể chạy được, hướng dẫn học sinh
khởi động Pascal trên máy tính. Học sinh chú
ý lắng nghe và theo dõi hình minh họa


Giới thiệu các thành phần cơ bản của màn
hình soạn thảo (màn hình làm việc).


<b>§7. CÁC THỦ TỤC CHUẨN VÀO/RA ĐƠN</b>
<b>GIẢN</b>


<b>1. Nhập dữ liệu vào từ bàn phím</b>


Ta sử dụng thủ tục chuẩn read hoặc readln có
cấu trúc như sau:


read(<biến 1>,…,<biến n>);
<i><b> readln(<biến 1>,…,<biến n>);</b></i>
<b>Ví dụ</b> 1:


read(n);


readln(A,B,C);


<b>* Chú ý</b>: <i>khi nhập giá trị cho nhiều biến thì</i>
<i>những giá trị này gõ cách nhau một dấu cách</i>
<i>hoặc kí tự xuống dịng (phím Enter).</i>


<b>2. Đưa dữ liệu ra màn hình</b>



Để đưa dữ liệu ra màn hình tại vị trí con trỏ, ta
dùng thủ tục write hoặc writeln với cấu trúc:
Write(<giá trị 1>,…<giá trị n>);
<i><b> Writeln(<giá trị 1>,…<giá trị n>);</b></i>


Trong đó: các giá trị có thể là <i>biến đơn, biểu</i>
<i>thức, tên hàm hoặc hằng</i>.


<b> Ví dụ </b>: xét chương trình sau
Program vd;


Uses crt;
Var tuoi:byte;
Begin


Clrscr;


Write(‘Moi ban nhap 3 so:’);readln(a,b,c)
Write(‘Ban vua nhap 3 so:’,a,b,c);
Write(‘Ban go ENTER de ket thuc’);
Readln;


End.


<b>Ghi chú</b>: - Các thủ tục readln và writeln có thể
khơng có tham số.


- Quy cách đưa thông tin ra: Kết quả <b>số thực</b>
:<<i>độ rộng</i>>:<<i>số chữ số thập phân</i>>



Kết quả <b>khác </b> :<<i>độ rộng</i>>


Độ rộng và số chữ số thập phân là các hằng
nguyên dương.


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


Writeln(n:5,x:6:2);
Write(i:3,j:4,a+b:8:3);


<b>§8. SOẠN THẢO, DỊCH, THỰC HIỆN, HIỆU</b>
<b>CHỈNH CHƯƠNG TRÌNH</b>


<b>Một số thao tác thường dùng: </b>
+ Lưu chương trình: F2


+ Mở file đã có: F3


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

4) <b>CỦNG CỐ : </b>Trình bài một số thao tác thường dùng khi soạn thảo chương trình?
Khi viết read(x,y,z); write(‘x’,y,z); nó có ý nghĩa như thế nào?


5) <b>BÀI TẬP VỀ NHÀ:</b> So sánh sự giống nhau và khác nhau của các cặp lệnh
write()/writeln() và read()/readln().


- Làm bài tập 9, 10 sgk trang36


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

Ngày soạn : 26/9/2009 Ngày dạy : 29/8/2009, 16/10/2009
Tiết PPCT : 7- 8



<b>BÀI TẬP THỰC HÀNH SỐ 1</b>
<b>I. MỤC TIÊU</b>


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


- Biết được một chtrình Pascal hồn chỉnh.


- Làm quen các dịch vụ chủ yếu của Turbo Pascal trong việc soạn thảo, lưu, dịch, thực hiện chtrình.
<b>2. Kĩ năng</b>


- Soạn thảo được chtrình, lưu lên đĩa, dịch lỗi cú pháp, thực hiện và tìm lỗi thuật tốn và hiệu chỉnh.
- Bước dầu biết phântích và hồn thành chtrình đơn giản trên Pascal


<b>3. </b><i><b>Thái độ: Tự giác, tích cực và chủ động trong thực hành</b></i>
<b>II. ĐỒ DÙNG DẠY HỌC</b>


<b>1. Giáo viên: </b>Phong máy vi tính được cài đầy đủ Turbo Pascal, projector để hướng dẫn
<b>2. Học sinh: </b>Sgk, sách bài tập và bài tập đã viết ở nhà


<b>III. HOẠT ĐỘNG DẠY HỌC</b>


<b>1. Hoạt động 1:</b> (8 phút) Kiểm tra bài cũ


<b>Hoạt động của GV và HS</b> <b>Nội dung </b>


<i>Viết chtrình nhập vào một số và tính bình phương</i>
<i>của số đó.</i>


Cho 2 hs xung phong lên bảng
Nhận xét, đánh giá, cho điểm



Chtrình đạt yêu cầu:
<b>Var </b>x, y: integer;


<b>Begin</b>


Write(‘nhap vao một so ’); readln(x);
Y:= sqr(y);


Write(y); readln


<b>End.</b>
<b>2. Hoạt động 2: </b>(30phút)Tìm hiểu một chtrình hồn chỉnh


<i>a. Nội dung: </i>Cho chương trình sau:
<b>Program </b>Giai_pt;


<b>Uses </b>crt;


<b>Var </b>a, b, c, d, x1, x2: real;


<b>Begin</b>


Clrscr;


Write(’nhap a b c ’); Readln(a, b, c);
D:= b*b-4*a*c;


X1:= (-b-sqrt(d))/(2*a);
X2:= (-b+sqrt(d))/(2*a);



Writeln(’x1=’,x1:6:2,’ x2=’,x2:6:2);
Readln


<b>End.</b>


b. Các bước tiến hành:


<b>Hoạt động của GV và HS</b> <b>Nội dung </b>


<b>1.</b> Chiếu chtrình lên bảng. Y/cầu hs thực hiện các nhiệm
vụ:


- Soạn chtrình vào máy
- Lưu chtrình


- Dịch lỗi cú pháp
- Thực hiện chtrình


- Nhập dữ liệu 1 -3 2. Thông báo kết quả
- Trở về màn hình soạn thảo


<b>Program </b>Giai_pt;


<b>Uses </b>crt;


<b>Var </b>a, b, c, d, x1, x2: real;


<b>Begin</b>



Clrscr;


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

- Thực hiện chtrình


- Nhập dữ liệu 1 0 2. Thơng báo kết quả.
- Vì sao có lỗi xuất hiện?


<b>HS: </b>


<b>1.</b> Quan sát chtrình, đọc lập soạn vào máy
F2


Alt+F9
Ctrl+F9


x1=1.00 x2=2.00
Enter


Ctrl+F9
Thông báo lỗi


Do căn bậc hai của một số âm


X1:= (-b-sqrt(d))/(2*a);
X2:= (-b+sqrt(d))/(2*a);


Writeln(’x1=’,x1:6:2,’ x2=’, x2:6:2);
Readln


<b>End.</b>



<b>3. Hoạt động 3:</b> (45 phút)Rèn luyện kĩ năng lập chương trình.


<i>a. Mục tiêu:</i> Hs soạn, lưu, dịch và thực hiện được chương trình


<i>b. Nội dung:</i> Viết chương trình nhập từ bàn phím 2 số thực a và b, tính và đưa ra màn hình trung bình cộng
các bình phương của hai số đó.


c. Các bước tiến hành:


<b>Hoạt động của GV và HS</b> <b>Nội dung </b>


<b>1.</b> Định hướng để hs phân tích bài tốn
- Dữ liệu vào:


- Dữ liệu ra:
- Cách tính:
HS :


<b>1. </b>Phân tích theo yêu cầu của gv
- Dữ liệu vào: a b


- Dữ liệu ra: tb
- tb =(a2<sub>+b</sub>2<sub>)/2</sub>


<b>GV: 2.</b> Y/cầu hs tự sọan chtrình và lưu lên máy.
<b>HS: 2.</b> Thực hiện các y/cầu của gv


- Soạn chtrình



- F2, gõ tên file để lưu
- Alt+F9 : biên dịch lỗi
- Ctrl+F9: t/hiện chtrình


Quan sát hướng dẫn từng nhóm hs trong lúc thực hành


<b>Bài tốn:</b> Viết chương trình nhập từ
bàn phím 2 số thực a và b, tính và
đưa ra màn hình trung bình cộng các
bình phương của hai số đó.


- nhập dữ liệu và thông báo kết quả
- Với a=5, b=7


- Với a=7, b=-5


-Nhập dữ liệu theo y/cầu.
- Với a=5, b=7 thì tb=37
- Với a=7, b=-5thì tb=37


<b>IV. ĐÁNH GIÁ CUỐI BÀI </b>(7phút)
<b>1. Nội dung đã học</b>


Các bước để hoàn thành một chương trình: - Phân tích bài tốn để xácđịnh dữ liệu vào/ra; xác định thuật
tốn; soạn thảo chtrình vào máy; lưu trữ chtrình; biên dịch chtrình; thực hiện và hiệu chỉnh chtrình


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

Ngày soạn : 11 /10/2009 Ngày dạy : 13 /10/2009
Tiết PPCT : 9


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


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


<b>1. </b><i><b>Kiến thức: Biết phânbiệt các loại biểu thức trong NNLT</b></i>


<b>2. Kĩ năng: </b>Viết được các biểu thức số học và logic với các phép tốn thơng dụng.
<b>II. ĐỒ DÙNG DẠY HỌC</b>


<b>1. Giáo viên:</b> bài giải các bài tập sgk
<b>2. Học sinh: </b>sgk


<b>III. HOẠT ĐỘNG DẠY HỌC</b>


<b>1. Hoạt động 2: </b>(10 phút) Bài tập 8/sgk/36


<i>a. Mục tiêu:</i> Xây dựng được biểu thức logic làm điều kiện để giải một số bài tốn đơn giản


<i>b. Nội dung:</i> Viết biểu thức lơgic cho kết quả True khi tọa độ (x, y) là điểm nằm trong vùng gạch chéo kể
cả biên của hình 2.a và 2.b (trang 36/sgk)


c. Các bước tiến hành:


<b>Hoạt động của GV và HS</b> <b>Nội Dung</b>


Tóm tắt lí thuyết


Nhắc lại một số <b>Nội dung</b> trong phần chương II
Tại sao phải khai báo biến?


Trong Pascal, nếu một biến chỉ nhận giá trị trong phạm vi
từ 5 đến 25252 thì biến đó có thể nhận khai báo bằng các


kiểu dữ liệu nào?


<b>1. Hình 2.a:</b>


Y/cầu hs quan sát hình và trả lời các câu hỏi:
- Giá trị của y trong vùng gạch chéo?


- Giá trị của x trong vùng gạch chéo? HS: Quan sát hình và
trả lời


<b> 0<=y<=1</b>
<b>-1<=x<=1</b>


- Điểm A(x,y) thì x, y có quan hệ thế nào?
<b> HS: |x|<=y</b>


- Y/cầu hs từ các biểu thức quan hệ viết ra bthức lôgic theo
yêu cầu của đề?


<b>HS: (|x|<=y) and ((x>=-1)and (x<=1)) and ((y>=0) </b>
<b>andy<=1)</b>


- Phân tích các giá trị x, y để đơn giản biểu thức
<b>(y<=1) and (abs(x)<=y)</b>


Chú ý lắng nghe, để ý cách xác định giá trị đúng.Tự làm
<b>2. Hình 2.b</b>


Y/cầu hs tự làm, tương tự hình 2.a



<b>Bài tập làm thêm</b> :Hãy chuyển các biểu thức toán học
dưới đây sang Pascal.


a. 2x2<sub> - 5x + 1 = 0;</sub> <sub>b. (1+x</sub>3<sub>)(</sub> <sub>1</sub>




<i>x</i> );
c. (4 <sub>3</sub> 2 <sub>1</sub>




<i>x</i> )(| x- 3|);


d.
2
3
2
2
2
1
)
2
5
2
(
<i>x</i>
<i>x</i>
<i>x</i>
<i>x</i>





e. 2


- Một chương trình thường gồm có 2
phần: Phần khai báo và phần thân
chương trình, phần khi báo có thể có
hoặc khơng.


- Kiểu dữ liệu chuẩn: Kiểu nguyên,
kiểu thực, kiểu kí tự và kiểu logic.
- Các biến trong chương trình đều
phải được khai báo và mỗi biến chỉ
khai báo một lần.


- Các phép toán: Số học, quan hệ và
logic


- Các loại biểu thức: Số học, quan hệ
và logic.


- Các ngơn ngữ lập trình có:


+ Lệnh gán dùng để gán giá trị
của biểu thức cho biến.


+ Các thủ tục chuẩn dùng để
đưa dữ liệu vào và ra.



Câu hỏi và bài tập
Bài tập 8/sgk/36


ĐS: <b>(y<=1) and (abs(x)<=y)</b>
<b>Bài tập làm thêm</b>


<b>a.</b> 2*x*x-5*x-1=0
<b>b.</b> (1+x*x*x)*sqrt(x-1)


<b>c.</b> Sqrt(sqrt(3*x*x+1))*abs(x-3)
<b>d.</b> (2*x*x-5*x+2)/(1-(2*x*x*x/


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

)
2
3
)(
1


( 2




 <i>y</i>


<i>x</i>


<b>IV. ĐÁNH GIÁ CUỐI BÀI </b>(5phút)
<b>1. Nội dung đã học</b>


<b>2. Câu hỏi, bài tập về nhà</b>



Xem trước bài: Cấu trúc rẽ nhánh, sgk trang 38
<b>V. RÚT KINH NGHIỆM, BỔ SUNG: </b>


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

Ngày soạn : 18/10/2009 Ngày dạy : 19 /10/2009
Tiết PPCT : 10


<b>KIỂM TRA 1 TIẾT</b>



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


<b>1. </b><i><b>Kiến thức: Củng cố các kiến thức về ngơn ngữ lập trình, cấu trúc chương trình, khai báo biến, các biểu </b></i>
thức trong Pascal, các câu lệnh vào ra đơn giản.


<b>2. Kĩ năng: </b>Viết được các biểu thức số học trong Toán học sang dạng tương ứng trong Pascal và ngược
lại, viết được chương trình đơn giản.


<b>3. </b><i><b>Thái độ:</b></i>Nghiêm túc trong khi làm bài.
<b>II. ĐỒ DÙNG DẠY HỌC</b>


<b>1. Giáo viên:</b> Đề kiểm tra, đáp án, biểu điểm cho các lớp.
<b>2. Học sinh: </b>ôn lại các kiến thức đã học.


<b>III. HOẠT ĐỘNG DẠY HỌC</b>
<b>1. Hoạt động 1:</b> (5 phút) Ghi đề.


<b>Đề 1:</b>

(lớp 11A

1

)



<b>Câu 1:</b> (3 điểm) Biến là gì? Viết cấu trúc của khai báo biến trong Pascal và lấy ví dụ minh hoạ?
<b>Câu 2:</b> (3 điểm) : Hãy viết các biểu thức toán học sau sang dạng tương ứng trong Pascal:



a)x + yz;
b)-1 ≤ cosx ≤ 1
c)| x3<sub> + </sub>


<i>x</i> <i>x</i> |


<b>Câu 3:</b> (4 điểm) Viết chương trình Pascal đưa ra màn hình dịng chữ : “Lop 11a1 xin chao cac ban”


<b>Đề 2:</b>

(lớp 11A

2

)



<b>Câu 1:</b> (3 điểm) Nêu các thành phần của ngôn ngữ lập trình. Phân biệt tên chuẩn và tên dành riêng.
<b>Câu 2:</b> (4 điểm) : Hãy viết các biểu thức toán học sau sang dạng tương ứng trong Pascal:


a) <i>x y<sub>xy</sub></i>
b) <sub>2</sub> <i><sub>x x</sub></i><sub>(</sub> 2 <sub>1)</sub>


 


c) | x + 2


<i>x x</i> |
d) <i>x</i> 1


<i>y</i> <i>x</i>





 



<b>Câu 3:</b> (3 điểm) Viết chương trình Pascal đưa ra màn hình dòng chữ : “Lop 11a2 xin chao cac ban”


<b>Đề 3:</b>

(lớp 11A

3

)



<b>Câu 1:</b> (3 điểm) Nêu chức năng của chương trình dịch. Phân biệt q trình thơng dịch và biên dịch.
<b>Câu 2:</b> (4 điểm) : Hãy viết các biểu thức toán học sau sang dạng tương ứng trong Pascal:


a) xy + 3
b) <i>x y<sub>xy</sub></i>
c) <i><sub>x</sub></i>2 <i><sub>y</sub></i>2 <i><sub>R</sub></i>2


 


d) | x + <i>x</i> <i>x</i> |


<b>Câu 3:</b> (3 điểm) Viết chương trình Pascal đưa ra màn hình dịng chữ : “Lop 11a3 xin chao cac ban”
<b>ĐÁP ÁN, BIỂU ĐIỂM, HƯỚNG DẪN CHẤM (ĐỀ 1) </b>


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

Câu 1 :


Biến là đại lượng được đặt tên dùng để lưu trữ giá trị và giá trị của nó có thể
thay đổi trong q trình thực hiện chương trình.


Cấu trúc khai báo biến :


<b>Var </b><danh sách biến> : <kiể dữ liệu>;
Ví dụ : Var a: integer;


1,5 điểm


1,0 điểm
0,5 điểm
Câu 2:


a) x + y*z;


b) -1 <= cos(x) <b>and </b>cos(x) <= 1
c) <b>Abs</b>(x*x*x + <b>sqrt</b>(x+<b>sqrt</b>(x)))


1,0 điểm
1,0 điểm
1,0 điểm
Câu 3:


<i>Program vd; </i>
<i>Begin </i>


<i>Write(‘Lop 11a1 xin chao cac ban’);</i>
<i>End.</i>


1,0 điểm
1,0 điểm
1,0 điểm
1,0 điểm
<b>IV. ĐÁNH GIÁ CUỐI BÀI </b>


<b>1. Dặn dò về nhà</b>


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

<b>V. RÚT KINH NGHIỆM, BỔ SUNG: </b>



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

Ngày soạn : 25 /10/2009 Ngày dạy : 27 /10/2009
Tiết PPCT : 11


<b>CẤU TRÚC RẼ NHÁNH (t1/2)</b>
<b>I.MỤC ĐÍCH YÊU CẦU:</b>


 <b>Kiến thức:</b>Giới thiệu tổ chức rẽ nhánh, cú pháp và chức năng các câu lệnh rẽ nhánh (dạnh thiếu và
dạng đầy đủ).


 <i><b>Kỹ năng:</b></i>Rèn luyện kỹ năng sử dụng câu lệnh rẽ nhánh để viết các chương trình có sử dụng các câu
lệnh này.


<b>II.CHUẨN BỊ CỦA GIÁO VIÊN VÀ HỌC SINH:</b>
<b>1. Đồ dùng dạy học: </b> Máy tính điện tử


<b>2.Phương pháp dạy học:</b> Giải quyết vấn đề


<b>3.Sự chuẩn bị ở nhà: </b>Các kiến thức học sinh đã học trong các bài học trước
<b>III.TIẾN HÀNH BÀI DẠY:</b>


<b>1. Ổn định lớp:(2’)</b> <b>Vắng:</b> <b>Trể:</b>


<b>2.Dạy bài mới:(30 - 37’)</b>


<b>Hoạt động của Giáo viên và Học sinh</b> <b>Nội dung</b>


<b>Câu hỏi: </b>Những câu nói sau đây có dạng của mậnh
đề gì?


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



-Chiều mai nếu trời không mưa thì Châu đến nhà
Ngọc chơi.


Câu nói trên có dạng: Nếu.... Thì....


-Chiều mai nếu trời khơng mưa thì Châu đến nhà
Ngọc soạn bài, nếu trời mưa thì Châu gọi điện cho
Ngọc để trao đổi.


Câu nói trên có dạng: Nếu.... Thì...., Ngược lại thì...
<b>Câu hỏi</b>: Em hãy vẽ sơ đồ khối của bài toán trên.
<b>Trả lời</b>: HS lên bảng vã sơ đồ khối của bài toán
GV nhận xét


<b>Câu hỏi</b>: trong cú pháp của hai câu lệnh, em hãy giải
thích các thành phần trong câu lệnh


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


IF, THEN, ELSE: Từ khoá


Điều kiện là biểu thức logic hoặc biểu thức quan hệ.
khi tính giá trị của điều kiện thì trả lại một trong 2 giá
trị T hoặc F.


Câu lệnh1, câu lệnh 2, câu lệnh là một câu lệnh bất kỳ
đã học


<b>Câu hỏi</b>: Hãy vẽ sơ đồ khối minh hoạ sự thực hiện


của câu lệnh IF


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


<b>I.RẼ NHÁNH:</b>


Một trong hai việc cụ thể chắc chắn sẽ
xảy ra, còn việc một hay việc hai sẽ được
thực hiện thì tuỳ thuộc vào điều kiện cụ
thể có thảo mãn hay khơng.


Các mênh đề rẽ nhánh thường có dạng:
<i><b>Nếu...Thì...</b></i>


<i><b>Nếu...Thì...Nếu khơng thì...</b></i>


Ví dụ: Thuật tốn giải và biện luận
phương trình bậc nhất ax + b = 0


Bước 1: Nhập a, b


Bước 2: Nếu a<>0 thì x:=-b/abước 4
Ngược lại bước 3


Bước 3: Nếu b<>0 thì thơng báo phương
trình vơ nghiệm


Ngược lại thơng báo phương trình vơ số
nghiệm.



Bước 4: Đưa x ra màn hình.
<b>II.CÂU LỆNH IF...THEN</b>
<b>1.Cú pháp:</b>


<b>a)Dạng thiếu:</b>


IF <Điều kiện> THEN<Câu lênh>;
<b>b)Dạng đủ:</b>


IF <Điều kiện> THEN <Câu lệnh 1>
ELSE <Câu lệnh 2>;


Trong đó:


IF, THEN, ELSE là từ khoá


Điều kiện: Là biểu thức Logic hoặc biểu
thức quan hệ.


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

<b>a)Dạng thiếu:</b>


<b>b)Dạng đủ:</b>


câu lệnh duy nhất.
<b>2.Sự thực hiện:</b>
<b>a)Dạng thiếu:</b>


Bước 1: Tính giá trị của biểu thức điều
kiện.



Bước 2: Kiểm tra giá trị cảu biểu thức
điều kiện


-Nếu biểu thức đk có giá trị đúng thì thực
hiện câu lệnh sau từ khoá THEN, rồi
thoát ra khỏi câu lệnh IF


-Nêu biểu thức đk có giá trị F thì thốt ra
khỏi câu lệnh IF


<b>b)Dạng đủ</b>


Bước 1: Tính giá trị của biểu thức điều
kiện.


Bước 2: Kiểm tra giá trị cảu biểu thức
điều kiện


-Nếu biểu thức đk có giá trị đúng thì thực
hiện câu lệnh sau từ khoá THEN, rồi
thoát ra khỏi câu lệnh IF


-Nêu biểu thức đk có giá trị F thì thực
hiện câu lệnh 2, rồi thoát ra khỏi câu lệnh
IF.


<b>3.Hoạt động củng cố:(1-3’) </b>Nhắc lại cú pháp và chức năng của câu lệnh rẽ nhánh dạng khuyết và câu lệnh
rẽ nhánh dạng đủ


<b>4.Hướng dẫn học sinh về nhà:(2-3’)</b>



- <b>Học các nội dung:</b> Cú pháp và chức năng cảu các câu lệnh rẽ nhánh
- <b>Bài tập</b>: 1/SGK


- <b>Chuẩn bị bài mới</b>: Sau Then và ELSE có thể sử dụng từ hai câu lệnh trở lên được khơng, nếu được
thì làm thế nào?


Điều kiệnĐúng Câu lệnh


Kết thúc


Điều kiệnĐúng Câu lệnh
1


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

Ngày soạn : 25 /10/2009 Ngày dạy : 3 /11/2009
Tiết PPCT : 12


<b>CẤU TRÚC RẼ NHÁNH (t2/2)</b>
<b>I.MỤC ĐÍCH YÊU CẦU:</b>


 <b>Kiến thức:</b>Giới thiệu cú pháp và chức năng của câu lệnh ghép và một số ví dụ minh hoạ.


 <i><b>Kỹ năng:</b></i>Rèn luyện kỹ năng sử dụng câu lệnh ghép khi sau từ kháo THEN và ELSE có từ 2 câu lệnh
trở lên.


<b>II.CHUẨN BỊ CỦA GIÁO VIÊN VÀ HỌC SINH:</b>
<b>1. Đồ dùng dạy học: </b> Máy tính điện tử.


<b>2.Phương pháp dạy học:</b> Giải quyết vấn đề



<b>3.Sự chuẩn bị ở nhà: </b>Các kiến thức học sinh đã học trong các bài học trước
<b>III.TIẾN HÀNH BÀI DẠY:</b>


<b>1. Ổn định lớp:(2’)</b> <b>Vắng:</b> <b>Trể:</b>


<b>2.Kiểm tra bài củ( 5-7’):</b>


1. Nêu cú pháp và chức năng của câu lệnh rẽ nhánh dạng khuyết?
2.Nêu cú pháp và chức năng của các câu lệnh rẽ nhánh dạng đầy đủ?
<b>2.Dạy bài mới:(30 - 37’)</b>


<b>Hoạt động của Giáo viên và Học sinh</b> <b>Nội dung</b>


<b>Câu hỏi:</b> Sau THEN và ELSE có thể viết bao
nhiêu câu lệnh


<b>Trả lời:</b> Chỉ một câu lệnh duy nhất.


GV: TỶong trường hợp sau THEN và ELSE ta
có từ 2 câu lệnh trở lên thì ta phải ghép chúng lại
thành một nhóm nằm giữa 2 từ khố Begin và
end được gọi là câu lệnh ghép.


<b>Câu hỏi</b>: Câu lệnh ghep được xem là bao nhiêu
câu lệnh.


<b>Trả lời</b>: Là một câu lệnh


<b>GV</b>: Gọi hoc sinh lên bảng viết chương trình của
bài tốn trên.



Có thể viết ngay trên máy tính để thực hiện thử.
<b>GV</b>: Gọi một HS lên chạy chương trình và sữa
lỗi.


Cho HS chép bài vào vở


<b>III.CÂU LỆNH GHÉP:</b>


Khi sau THEN và sau ELSE có từ 2 câu lệnh
trở lên ta phải ghép chúng lại thành một nhóm
nằm giữa 2 từ khố BEGIN và END.


<b>1.Cú pháp:</b>
BEGIN
CL1;
CL2;
...
CLn
END;


<b>2.Giải thích: </b>


BEGIN, END: Từ khoá


CL1, CL2, ...., CLn là các câu lệnh bất kỳ
<b>IV.MỘT SỐ VÍ DỤ:</b>


<b>1.Ví dụ 1</b>: Tìm nghiệm của phương trình bậc
2: ax2<sub> + bx + c = 0 với a<>0</sub>



PROGRAM vidu1;


VAR a,b,c,x,x1,x2,delta:real;
BEGIN


Write(‘nhap a,b,a’); readln(a,b,c);
Delta:=b*b-4*a*c;


IF delta <0 THEN writeln(‘phuong
trinh vo nghiem’)


ELSE IF delta=0 THEN
Begin


X:=-b/2*a;


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

<b>GV</b>: Gọi hoc sinh lên bảng viết chương trình của
bài tốn trên.


Có thể viết ngay trên máy tính để thực hiện thử.
<b>GV</b>: Gọi một HS lên chạy chương trình và sữa
lỗi.


Cho HS chép bài vào vở


ELSE
Begin


X1:=(-b-sqrt(delta))/2*a;


X2:=(-b+sqrt(delta))/2*a;
End;


Readln
END.


<b>2.Ví dụ 2</b>: Chương trình tìm nghiệm của
phương trình bậc nhất ax + b = 0


PROGRAM vidu2;
VAR a,b,x:real;
BEGIN


Write(‘nhap a,b’); readln(a,b);
IF a<>0 THEN


Begin


X:=-b/a;


writeln(‘phuongtrinh co nghiem
la:’,x:8:2);


End


ELSE IF b=0 THEN
writeln(‘phuong trinh vo so
nghiem’)


Else writeln(‘phuong trinh vo


nghiem’)


Readln
END.


<b>4.Hoạt động củng cố:(1-3’) </b>Nhắc lại cú pháp và chức năng của câu lệnh rẽ nhánh dạng khuyết và câu lệnh
rẽ nhánh dạng đủ


<b>5.Hướng dẫn học sinh về nhà:(2-3’)</b>


- <b>Học các nội dung:</b> Cú pháp và chức năng của các câu lệnh rẽ nhánh
- <b>Bài tập</b>: 5/SGK


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

Ngày soạn : 8 /11/2009 Ngày dạy : 10 /11/2009
Tiết PPCT : 13


<b>CẤU TRÚC LẶP </b>(tiết 1/2)
<b>I. MỤC TIÊU</b>


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


Hiểu nhu cầu của cấu trúc lặp trong biễu diễn thuật toán.


Biết cấu trúc chung của lệnh lặp với số lần biết trước For trong NNLT Pascal
Biết sử dụng đúng 2 dạng lệnh lặp For.


<b>2. Kĩ năng: </b> Bước đầu sử dụng được lệnh lặp For để lập trình giải quyết 1 số bài tốn đơn giản.
<b>II. ĐỒ DÙNG DẠY HỌC</b>


<b>1. Giáo viên: </b>Máy vi tính, Projector, sgk, sgv


<b>2. Học sinh: </b> sgk


<b>III. HOẠT ĐỘNG DẠY HỌC</b>
<b>1. Ổn định lớp : </b>


<b>2. Kiểm tra bài cũ(7 phút)</b>


<b>1. </b>Trình bày cấu trúc rẽ nhánh? Sự khác nhau giữa các dạng rẽ nhánh đó? (HS1)


<b>2.</b> Viết CT nhập vào 2 số a, b và thực hiện đưa ra màn hình giá trị của số lớn hơn.(HS2)
<b>3. Bài mới : </b>


<b>Hoạt động 1:</b> (20 phút)Tìm hiểu ý nghĩa cấu trúc lặp


<b>Hoạt động của Giáo viên và Học sinh</b> <b>Nội Dung</b>


<b>1. </b>Nêu bài toán 1 đặt vấn đề


<b>HS: </b>Chú ý quan sát bài tốn đặt vấn đề.


GV: Hãy xác định cơng thức tốn học để tính tổng
- Có bao nhiêu lần lặp như vậy?


GY: - Rất khó xác định


- Mỗi lần lặp 1 lượng là bao nhiêu?


- Phải viết bao nhiêu lệnh để thể hiện việc này?
HS: Theo dõi gợi ý.



- Thực hiện 100 lần
- Mỗi lần đổ <i><sub>a</sub></i> <i><sub>i</sub></i>



1
- Viết 100 lệnh.


<i><b>Dẫn dắt: Chương trình được viết như vậy sẽ rất dài, khó đọc, dễ sai sót.</b></i>
cần có một cấu trúc điều khiển việc lặp lại thực hiện các cơng việc ở
trên.


- Trong tất cả mọi NNLT đều có một cấu trúc điều khiển việc thực hiện
lặp lại với số lần đã định trước.


<b>Bài toán 1: </b>


Viết CT tính tổng


100
1
...
2
1
1
1
1









<i>a</i>
<i>a</i>
<i>a</i>
<i>a</i>
<i>S</i>


<b>3. Hoạt động 3: </b>(15 phút)Tìm hiểu lệnh lặp For trong NNLT Pascal


<b>Hoạt động của Giáo viên và Học sinh</b> <b>Nội dung </b>


<b>1. </b>Y/cầu hs n/cứu sgk vàcho biết cấu trúc chung của lệnh
For?


<b>HS: </b>Đọc sgk và trả lời


<b>FOR <biến đếm>:= <giá trị đầu> TO <giá trị cuối> DO</b>
<b><lệnh cần lặp>;</b>


Giải thích:
<biến đếm>


- Hỏi: Ý nghĩa của <giá trị đầu>, <giá trị cuối>, kiẻu


<i>a. Dạng tiến</i>


<b>FOR <biến đếm>:= <giá trị đầu></b>


<b>TO <giá trị cuối> DO <lệnh cần</b>
<b>lặp>;</b>


<i>Sơ đồ:</i>


bđếm:= <gtrị đầu>


bđếm<=gtrị
cuối
Câu lệnh lặp
bđếm :=bđếm + 1


<b>Đ</b>


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

dữ liệu của chúng?


- để làm giới hạn cho biến đếm, cùng kiểu với biến đếm
Trong btoán 1:<giá trị đầu>, <giá trị cuối> có giá trị bằng
bao nhiêu?


-<giá trị đầu> là 1
<giá trị cuối> là 100


<i>Dẫn dắt:</i> những lệnh nào cần lặp lại ta đặt sau DO. Khi
nhiều lệnh cần đặt sau Do ta phải viết thế nào?


- Hỏi: + Trong bài toán tiết kiệm lệnh nào cần lặp lại?
- Sử dụng


câu lệnh ghép.



+ Trong bài tốn tính tổng lệnh nào cần lặp lại?
HS: S:= S + 0.015*S;


S:= S+1/(a+i);


- Hãy so sánh giá trị của <giá trị đầu> và <giá trị
cuối>?


<b><giá trị đầu> ≤ <giá trị cuối></b>


<i>Dẫn dắt:</i> Khi đó câu lệnh For đgl For tiến, NNLT Pascal
cịn có dạng ngược lại là For lùi.


<b>2.</b> Y/cầu hs trình bày cấu trúc For lùi.


<b>2. </b>N/cứu sgk, suy nghĩ, so sánh với dạng For tiến rồi trả lời
<b>FOR <biến đếm>:= <giá trị cuối> DOWNTO <giá trị</b>
<b>đầu> </b>


<b>DO <lệnh cần lặp>;</b>


Hãy so sánh giá trị của <giá trị đầu> và <giá trị cuối>?
HS: <giá trị đầu> ≤<giá trị cuối>


- Hai bài toán trên dùng lệnh For nào là phù hợp?
Sử dụng For tiến


<i>b.Dạng lùi</i>



<b>FOR <biến đếm>:= <giá trị cuối></b>
<b>DOWNTO <giá trị đầu> DO</b>
<b><lệnh cần lặp>;</b>


<i>Sơ đồ:</i>


<b>IV. ĐÁNH GIÁ CUỐI BÀI </b>(3phút)
<b>1. Nội dung đã học</b>


Cấu trúc chung của câu lệnh lặp For. Sơ đồ thực hiện của lệnh lặp For
<b>2. Câu hỏi, bài tập về nhà</b>


<b>- </b>Sử dụng câu lệnh For hồn thành chương trình bài tốn 1 và 2 đã nêu ở đầu tiết.
- Giải bài tập 5a, 6 sgk/51


- Xem trước phần ví dụ của nội dung cấu trúc lặp có số lần biết trước.
<b>V. RÚT KINH NGHIỆM, BỔ SUNG: </b>


...
...
...
...


bđếm:= <gtrị
cuối>


bđếm>=gtrị đầu


Câu lệnh lặp
bđếm :=bđếm - 1



<b>Đ</b>


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

Ngày soạn : 14 /11/2009 Ngày dạy : 17 /11/2009
Tiết PPCT : 14


<b>CẤU TRÚC LẶP </b>(tiết 2/2)
<b>I. MỤC TIÊU</b>


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


- Biết được ý nghĩa của cấu trúc lặp có số lần lặp chưa biết trước
- Biết được cấu trúc chung của lệnh lặp While trong NNLT Pascal.
<b>2. Kĩ năng</b>


- Phân biệt được sự giống và khác nhau giữa cấu trúc lặp For và While.
- Sử dụng đúng lệnh lặp While trong lập trình.


- Bước đầu biết lựa chọn đúng dạng lệnh lặp để lập trình giải quyết một số bài toán đơn giản.
<b>II. ĐỒ DÙNG DẠY HỌC</b>


<b>1. Giáo viên: </b> Sgk, sgv, bảng phụ
<b>2. Học sinh : </b>Lặp với số lần biết trước.
<b>III. HOẠT ĐỘNG DẠY HỌC</b>


<b>1. Hoạt động 1:</b> (10 phút) Tìm hiểu ý nghĩa của cấu trúc lặp có số lần chưa biết trước


<b>Hoạt động của Giáo viên và Học sinh</b> <b>Nội Dung</b>


GV: -Sự khác nhau của bài toán này với bài toán đã giải ở tiết trước?


- Lặp bao nhiêu lần?


- Lặp đến khi nào?


HS: -Bài trước: cho giới hạn N
Bài này: cho giới hạn S


- Chưa xác định được ngay


- Cho đến khi điều kiện 1 0.001
<i>N</i>


<i>a</i> được thõa mãn


<i>Tóm lại, qua 2 ví dụ trên ta thấy có 1 dạng tốn có sự lặp lại của</i>
<i>câu lệnh nhưng không biết được số lần lặp. Cần có 1 cấu trúc điều</i>
<i>khiển lặp lại 1 cơng việc nhất định khi thõa mãn 1 điều kiện nào đó.</i>


<b>2. Hoạt động 2: </b>(15 phút) Tìm hiểu cấu trúc lệnh lặp While trong NNLT Pascal


<b>Hoạt động của Giáo viên và Học sinh</b> <b>Nội Dung</b>


<b>1.</b> Y/cầu hs n/cứu sgk và cho biết cấu trúc chung của
lệnh lặp While.


<b>HS: </b>Tham khảo sgk và trả lời
Cấu trúc:


<b>While </b><điều kiện><b> Do </b>
<lệnh cần lặp



Giải thích:


<điều kiện>: biểu thức quan hệ hoặc biểu thức logic.
<lệnh cần lặp>: các lệnh cần phải lặp lại


Hỏi:


- Điều kiện để lặp lại trong bài toán 2 là gì?
- Trong bài tốn 2 lệnh cần lặp là gì?


HS: 1 0.001
<i>i</i>


<i>a</i>


S := S + 1/(a+I); để tính tổng
I := I + 1; để tăng chỉ số


Dựa vào cấu trúc, cho biết máy thực hiện tính <điều kiện>
trước hay <lệnh cần lặp> trước?


<b>3. Câu lệnh While …Do</b>
Cấu trúc:


<b>While </b><điều kiện><b> Do </b><lệnh cần lặp>;
Sơ đồ thực hiện:


* Trong <lệnh cần lặp> phải có lệnh
thay đổi biến chỉ số. <i>(để thay đổi giá</i>


<i>trị <điều kiện>)</i>


điều
kiện


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

- Sự khác nhau trong lệnh cần lặp của For và While là gì?
HS Suy nghĩ và trả lời:


Tính điều kiện trước, thực hiện lệnh lặp sau.
- Trong While phải có lệnh thay đổi biến chỉ số.
<b>2.</b> Y/cầu hs vẽ sơ đồ thực hiện lên bảng


<b>HS </b>Lên bảng vẽ sơ đồ thực hiện của lệnh While.
-Nhận xét đúng sai và bổ sung


* Chú ý lắng nghe và ghi nhớ
- Gọi hs khác nhận xét.


* Treo sơ đồ mẫu và giải thích


<b>3. Hoạt động 3: </b>(15 phút) Rèn luyện kĩ năng vận dụng lệnh lặp While


<b>Hoạt động của Giáo viên và Học sinh</b> <b>Nội Dung</b>


<b>1. </b>Trở lại bài toán 2


- Đã xác định <điều kiện>, <lệnh cần lặp> hãy viết câu lệnh While
hoàn chỉnh?


<b>1. HS </b>Quan sát, xác định lại các thành phần và trả lời:


<b>While</b> A< B <b>Do </b>


<b> begin </b>


<b> </b> A := A + 0.015*A;
T := T + 1;


<b> end;</b>


1hs lên bảng trình bày, hs khác N/xét Đúng–Sai, bổ sung.
* Ghi nhớ những phần sửa chữa của gviên.


- Chia lớp theo từng bàn. Y/cầu hs từng bàn thảo luận và viết chương
trình hồn thiện.


- Cho 1 hs lên bảng trình bày.
- Gọi 1- 2hs khác n/xét, đánh giá.


* Chính xác hóa chương trình cho cả lớp. <i>(chỉnh sửa lại chtrình của</i>
<i>hs) </i>


<b>2. </b>Nêu nội dung ví dụ 2


Phân tích để xác định <điều kiện> và <lệnh cần lặp>.
Hỏi:


- Điều kiện để tiếp tục lặp là gì?
Gợi ý: Điều kiện: M<>N


- Các lệnh cần lặp là gì?


Gợi ý: M := M – N; hoặc
N := N – M;


- Y/cầu hs nêu thuật toán tìm ucln của 2 số đó.
- T/tốn:


B1: Nếu m=n thì ucln=m, dừng;


B2: Nếu m>n thì m:=m-n ngược lại n:=n-m, qlại B1.
HS Suy nghĩ và trả lời:


+ Điều kiện nào để lặp lại
+ Những lệnh nào cần lặp lại


- Y/cầu hs viết chương trình hồn thiện bài tốn ở nhà.


Củng cố: Hãy nêu 2 câu hỏi cần đặt ra khi gặp bài tốn dạng này?


Ví dụ 1:


<b>Var </b>A, B: extended; T:
byte;


<b>Begin</b>


Write(‘So tien ban dau
A: ’);


Readln( A);



Write(‘So tien can co
B(B>A): ’);


Readln(B);
T := 0;


<b>While</b> A< B <b>Do </b>
<b> begin </b>


<b> </b> A := A +
0.015*A;


T := T + 1;


<b> end;</b>


Writeln(‘Phai cho ’,T,’
thang’);


Readln


<b>End.</b>


<b>IV. ĐÁNH GIÁ CUỐI BÀI </b>(5phút)


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

<b>2. Câu hỏi, bài tập về nhà</b>


- Giải bài tập 5b, 7, 8 sgk trang 51.


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

Ngày soạn : 21 /11/2009 Ngày dạy : 24 /11/2009


Tiết PPCT : 15


<b>BÀI TẬP VÀ THỰC HÀNH SỐ 2(T1)</b>
<b>I. MỤC TIÊU</b>


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


Sử dụng đúng lệnh lặp For để giải quyết một bài toán đơn giản.
<b>2. Kĩ năng</b>


Vận dụng đúng đắn các dạng của lệnh lặp For


Viết đúng lệnh lặp For để mơ tả được thuật tốn của một số bài toán đơn giản.
<b>II. ĐỒ DÙNG DẠY HỌC</b>


<b>1. Giáo viên:</b> Giáo án, sgk, Projector, bảng phụ chứa các chương trình mẫu.
<b>2. Học sinh: </b>sgk


<b>III. HOẠT ĐỘNG DẠY HỌC</b>
<b>1. Ổn định lớp : </b>


<b>2. Kiểm tra bài cũ(7 phút)</b>


Trình bày các dạng cấu trúc câu lệnh lặp với số lần biết trước?
<b>3. Bài mới : </b>


<b>Hoạt động 1: </b>(15 phút) Rèn luyện kĩ năng vận dụng câu lệnh For và câu lệnh rẽ nhánh If


<b>Hoạt động của Giáo viên và Học sinh</b> <b>Nội Dung</b>



<i>Dẫn dắt: </i>Từ bài tốn KTBC ở trên, nếu ta y/cầu tính và đưa ra
màn hình tổng các số chẵn và tổng các số lẻ trong phạm vi từ a
đến b.


- <b>Nội dung</b> (sửa lại nội dung đề bài toán)
Y/cầu hs phân tích đề bài và trả lời câu hỏi.
- So sánh với bài tốn trước thì có gì khác?
-Lắng nghe, phân tích bài tốn và trả lời


-Tl: tính tổng các số chẵn và tổng các số lẻ riêng
- Ta cần đưa ra màn hình mấy giá trị?


-Tl: 2 giá trị (S1: tổng chẵn; S2: tổng lẻ)


- Việc chính cần thực hiện trong câu lệnh lặp là gì?
Tl:


Kiểm tra biến đếm i : nếu i là chẵn thì S1:=S1+i ngược lại (i là
lẻ)thì S2:=S2+i.


- Hãy mơ tả việc trên bằng lệnh lặp For?
Đứng tại chổ trả lời:


For I:=a To b Do
If I mod 2 =0
then S1:=S1+I
else S2:=S2+I ;


- Y/cầu hs cả lớp tự hồn thành chương trình. Cho 1 hs lên bảng
trình bày.



* Chuẩn hóa lại bài làm của hs bằng chương trình mẫu (treo
chtrình đã chuẩn bị trên bảng phụ)


Quan sát chtrình của giáo viên và ghi nhớ.


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


<i><b>Bài 1: Viết CT nhập vào 2 số</b></i>
ngun dương a, b (a<b), tính
và đưa ra màn hình tổng các
số chẵn và tổng các số lẻ
trong phạm vi từ a đến b.
<b>Var </b> a, b, i , S1, S2 :
longint;


<b>Begin </b>


Write(‘Nhap a va b
(a<b): ‘);


Readln(a, b);
S1 := 0; S2 := 0;
<b>For</b> i := a <b>To</b> b <b>Do</b>


If i mod 2 = 0


then S1 := S1 + i
else S2 := S2 + i;
Writeln(‘Tong chan: ’,


S1,


’ Tong le: ’,S2);
Readln


<b>End.</b>


<b>Hoạt động 2: </b> (20 phút) Tiếp tục vận dụng câu lệnh lặp For để giải quyết một bài toán đơn giản.


<b>Hoạt động của Giáo viên và Học sinh</b> <b>Nội Dung</b>


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

- Cách tính tiền gửi tiết kiệm hàng tháng như thế nào?
Tl: Với số tiền S, sau mỗi tháng sẽ có lãi là: 0.015*S.


Số tiền này sẽ cộng vào số tiền ban đầu để tính lãi cho tháng tiếp
theo.


- Vậy, cơng thức tính tiền thu được sau mỗi tháng như thế nào?
Tl: <b>S := S + 0.015*S;</b>


- câu lệnh lặp này lặp bao nhiêu lần?
Tl: 12 lần


- Xác định giá trị đầu và giá trị cuối của câu lệnh For để thực hiện
việc lặp trên?


Tl: gtrị đầu là 1; gtrị cuối là 12.


<b>2.</b> Y/cầu hs viết chương trình vào vở, cho 1 hs trình bày lên bảng.
* Chuẩn hóa lại bài làm của hs bằng chương trình mẫu (treo


chtrình đã chuẩn bị trên bảng phụ)


<b>2.</b> Thảo luận và tự viết chương trình
Quan sát chtrình của giáo viên và ghi nhớ.
<b>3.</b> (Nếu cịn thời gian)


Hỏi sau 12 tháng gửi (không rút tiền lãi hàng tháng), ông ta được
số tiền nhiều hơn số tiền ban đầu là bao nhiêu?


<i>Ta phải sửa lại chtrình trên như thế nào?</i>
<b>3.</b> Suy nghĩ và trả lời


ông gửi tiết kiệm ngân hàng với
lãi suất 1.5%/tháng. Hỏi sau 12
tháng gửi (không rút tiền lãi
hàng tháng), ông ta được số tiền
là bao nhiêu?


<b>Var</b> s:real; i:byte;


<b>Begin</b>


Write(‘So tien ban dau: ’);
Readln(S);


<b>For</b> i:= 1 <b>To</b> 12 <b>Do</b>


S:= S + 0.015*S;
Writeln(‘So tien nhan duoc



la: ’,S:8:3);
Readln


<b>End.</b>
<b>IV. ĐÁNH GIÁ CUỐI BÀI </b>(3phút)


<b>Câu hỏi, bài tập về nhà</b>


Làm một số bài trong sách bài tập Tin học 11: 3.23, 3.29; 3.31


Xem trước phần nội dung cấu trúc lặp với số lần chưa biết trước While
<b>V. RÚT KINH NGHIỆM, BỔ SUNG: </b>


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

Ngày soạn : 30 /11/2009 Ngày dạy : 1/12/2009
Tiết PPCT : 17- Tuần 16


<b>ƠN TẬP HỌC KÌ I</b>



<b>I. MỤC TIÊU.</b>
1. <b>Kiến thức</b>.


- Học sinh nắm được toàn bộ kiến thức đã học từ đầu năm học đến nay.
2. <b>Kĩ năng</b>


- Rèn luyện kĩ năng nhận xét, phân tích một bài tốn.
<b>II. Đồ dùng dạy học</b>


1. <b>Chuẩn bị của giáo viên</b>


- Máy chiếu qua đầu, bìa trong, sách giáo khoa.


2. <b>Chuẩn bị của học sinh.</b>


- Sách giáo khoa, một số chương trình bài tập.
<b>III. Hoạt động dạy – học .</b>


1. Hoạt động 1: Nhắc lại kiến thức cũ đã học.
a. <b>Mục tiêu:</b>


- Học sinh nhớ lại được các kiến thức lí thuyết đã học.
b. <b>Nội dung:</b>


- Khái niệm về lập trình và ngơn ngữ lập trình.


- Có hai loại chương trình dịch: Biên dịch và thơng dịch.


- Các thành phần của ngôn ngữ lập trình: Bảng chữ cái, cú pháp và ngữ nghĩa.
- Các khái niệm: Tên, hằng và biến, chú thích.


- Cấu trúc của chương trình Pascal: Phần khai báo và phần thân.
- Các kiểu dữ liệu chuẩn: Số nguyên, số thực, kí tự, logic.
- Phép toán, biểu thức, lệnh gán.


- Tổ chức vào/ra.
- Cấu trúc rẽ nhánh.
- Cấu trúc lặp.


c. Các bước tiến hành:


<b>Hoạt động của Giáo viên và Học sinh</b> <b>Nội Dung</b>



Đặt câu hỏi gợi ý để học sinh tự nhắc lại
kiến thức đã học.


HS Chú ý, theo dõi trả lời các câu hỏi.


- Em hiểu như thế nào về lập trình và ngơn
ngữ lập trình?


- Các loại chương trình dịch?


- Các thành phần cơ bản của ngôn ngữ lập
trình?


- Các khái niệm trong ngơn ngữ lập trình?
- Cấu trúc chung của chương trình TP?


- Nêu tên các kiểu dữ liệu chuẩn?
- Nêu các nhóm phép tốn đã học?


- Các loại biểu thức?


- Chức năng và sự thực hiện của lệnh gán?
- Nêu tên và chức năng của một số hàm số




- Lập trình là q trình diễn đạt thuật tốn bằng


một ngơn ngữ lập trình.


- Biên dịch và thơng dịch.


- Bảng chữ cái, cú pháp và ngữ nghĩa.
- Khái niệm tên, hằng và biến, chú thích.
- Gồm hai phần: Phần khai báo và phần thân.
- Số nguyên, số thực, kí tự, logic.


- Phép toán số học, phép toán quan hệ, phép toán
logic.


- Biểu thức số học, biểu thức quan hệ và biểu
thức logic.


- Dùng để tính tốn một biểu thức và gán giá trị
cho một biến.


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

học?


- Tổ chức vào/ra.


- Tổ chức rẽ nhánh.
- Tổ chức lặp.


tuyệt đối, hàm sin, hàm cos.
- Lệnh Read()/readln();
- Lệnh write()/writeln();



- If <BTĐK> then <lệnh 1> else <lệnh 2>;
While <> do.


- Array ...
<i><b> 2. Hoạt động 2: Rèn luyện kĩ năng.</b></i>


a. Mục tiêu:


- Học sinh biết nhận xét, phân tích và giải quyết hồn chỉnh một bài tốn.
b. Nội dung:


Viết chương tình nhập từ bàn phím một số nguyên dương N (1<=N<=100) và một dãy số A gồm N số
nguyên A1, A2, ...AN . Các số A1 có giá trị tuyệt đối lớn hơn 1000. Hãy đưa ra màn hình số lượng các số


dương và số lượng các số âm trong dãy.
c. Các bước tiến hành:


<b>Hoạt động của Giáo viên và Học sinh</b> <b>Nội Dung</b>


1. Xác định bài toán.


- Chiếu nội dung đề bài lên bảng.
- Chia lớp thành 2 nhóm.


Nhóm 1: Nêu câu hỏi phân tích.


Nhóm 2: Trả lời câu hỏi phân tích của nhóm 1.
- Giáo viên góp ý bổ sung cho cả hai nhóm.


2. rèn luyện kĩ năng lập trình.


- Chia lớp thành hai nhóm.


- u cầu: Viết chương trình hồn thiện lên bìa
trong.


- Thu phiếu học tập, chiếu kết quả lên bảng. Gọi
học sinh của nhóm khác nhận xét đánh giá và bổ
sung.


3. Chuẩn hóa kiến thức bằng chương trình mẫu
của giáo viên. Thực hiện chương trình, nhập dữ
liệu để học sinh thấy kết quả của chương trình.


1. Quan sát, theo dõi đề bài và định hướng
của giáo viên để xác định bài tốn.


- Nhóm 1:


+ Dữ liệu vào.
+ Dữ liệu ra.


+ Các nhiệm vụ chính phải thực
hiện.


- Nhóm 2:


+ Số N và N số nguyên.


+ Số lượng số chẵn C và số lẻ L.
+ 1 – Nhập dữ liệu.



2 – Đếm số lượng số chẵn, số lẻ.
3 – Đưa kết quả ra màn hình.
2. Làm việc theo nhóm.


- Thảo luận theo nhóm để viết chương
trình.


- Báo cáo kết quả.


- Nhận xét, đánh giá và bổ sung những
thiếu sót của nhóm khác.


3. Theo dõi và ghi nhớ.
<b>IV. ĐÁNH GIÁ CUỐI BÀI</b>


<b>1. Những nội dung đã học.</b>


- Giáo viên yêu cầu học sinh nhắc lại một số nội dung chính đã được ơn tập trong tiết học.


2. Câu hỏi và bìa tập về nhà: Chuẩn bị kiến thức cho tiết sau kiểm tra học kì 1: Xem lại tồn bộ các kiến
thức đã được ơn tập, đặc biệt chú trọng cấu trúc lặp và rẽ nhánh.


Ngày soạn : 5 /12/2009 Ngày dạy : 9/12/2009


Tiết PPCT : 18- Tuần 17


<b>KIỂM TRA HỌC KỲ I </b>


<b>I.MỤC ĐÍCH YÊU CẦU:</b>



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

 <i><b>Kỹ năng:</b></i>Nắm được cấu trúc chương trình TP, cách khai báo các thành phần của chương trình TP,
cú pháp và chức năng của các câu lệnh trong TP làm bài kiểm tra trên giấy, các câu lệnh có cấu trúc
và các kiểu dữ liệu có câu trúc.


<b>II.CHUẨN BỊ CỦA GIÁO VIÊN VÀ HỌC SINH:</b>
<b>1. Đồ dùng dạy học:</b> Đề kiểm tra GV phơtơ


<b>2.Hình thức :</b> Tự luận


<b>3.Sự chuẩn bị ở nhà:</b> Các kiến thức HS đã học trong học kỳ I
<b>III.TIẾN HÀNH BÀI DẠY:</b>


<b>1. Ổn định lớp:(2’)</b> <b>Vắng:</b> <b>Trể:</b>


<b>2.Dạy bài mới:(30 - 37’)</b>


<b>Kiến thức cơ bản</b> <b>Hoạt động của Thầy và Trò</b>


<b>I.PHÁT ĐỀ:</b>


<b>II.HƯỚNG DẪN HỌC SINH LÀM BÀI:</b>
<b>1.Hướng dẫn:</b>


<b>2.Làm bài</b>


<b>III.THU BÀI:</b>


Giáo viên phát dề cho HS theo hình
thức A, B, C, D



HS làm bài trong giấy HS tự chuẩn bị.
Ghi chú: Đề bài kiểm tra và đáp án ở
trang sau


HS không cần viết lại đề bài


Làm các phần ngay trên tờ giấy HS đã
chuẩn bị, ghi rõ làm đề nào.


HS tiến hành làm bài tự luận


GV nhắc nhở để Hs làm bài nghiêm túc.
Nếu HS nào vi phạm quy chế thi thì tùy
theo mức độ vi phạm mà có hình thức
xử lý cụ thể.


Hết giờ làm bài HS nộp bài lại cho GV
GV thu bài và chấm.


<b>ĐỀ THI </b>



<b>Bài 1: ( </b>3<i>điểm</i><b>)</b>


Chương trình dịch là gì? Phân biệt hai q trình thơng dịch và biên dịch?
<b>Bài 2: </b>( 3 <i>điểm</i>)


Viết các biểu thức Pascal sau sang dạng tương ứng trong Toán học:
a) x * y / (x - z)


b) (N > 0) <b>and</b> (N ≤ 100)


c) Sqr(x - 1) + sqr(x + 3) ≤ 4
<b>Bài 3: </b>( 2 <i>điểm</i>)<b> </b>


Viết câu lệnh rẽ nhánh tính :
a) 2<i>x</i>1 nếu <i>x</i>0


2


2 1


<i>x</i>  <i>x</i> nếu x < 0
b) <i><sub>x</sub></i>2 <i><sub>y</sub></i>2


 nếu <i>x</i>2<i>y</i>2 1
<i>x y</i> <sub> nếu </sub><i><sub>x</sub></i>2 <i><sub>y</sub></i>2 <sub>1</sub>


  và <i>y x</i>
1.2 nếu <i><sub>x</sub></i>2 <i><sub>y</sub></i>2 <sub>1</sub>


  và y<x
<b>Bài 4: </b>( 2 <i>điểm</i>)<b> </b>


y =


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

Lập trình tính :
60


1
1



<i>n</i>


<i>S</i>


<i>n</i>

<sub></sub>



<b>ĐÁP ÁN, BIỂU ĐIỂM, HƯỚNG DẪN CHẤM </b>


<b>Đáp án, hướng dẫn chấm </b> <b>Biểu điểm </b>


<b>Bài 1: </b>
(3<i>điểm)</i>


Chương trình dịch có chức năng chuyển đổi chương trình được viết từ
ngơn ngữ lập trình bậc cao thành chương trình thực hiện được trên máy
tính.


Phân biệt Thơng dịch và Biên dịch:


- Thông dịch : Thực hiện lăp lại tuần tự các bước : Kiểm tra tính
đúng đắn của câu lệnh tiếp theo trong chương trình nguồn; chuyển đổi
câu lệnh vừa kiểm tra sang ngôn ngữ máy và thực hiện.


- Biên dịch : Thực hiện qua hai bước : Duyệt, phát hiện lỗi, kiểm
tra tính đúng đắn của các câu lệnh trong chương trình nguồn; Dịch tồn
bộ chương trình nguồn thành một chương trình đích có thể thực hiện
trên ngôn ngữ máy.



1,0 điểm
1,0 điểm


1,0 điểm
<b>Bài 2: </b>


(3<i>điểm)</i> <b>Câu a)</b>


*
<i>x y</i>
<i>x z</i>


1,0 điểm


<b>Câu b)</b> 0<i>N</i> 100 1,0 điểm


<b>Câu c)</b> 2 2


(<i>x</i>1) (<i>y</i>3) 4 1,0 điểm


<b>Bài 3: </b>


(2<i>điểm)</i> <b>Câu a)Câu b)</b> <b> if </b>(x < 0 )<b> then </b>y:= x*x + 2*x + 1<b> else </b>y:= -2*x + 1 1,0 điểm


<b>if</b>

(x*x + y*y < 1 )<b> then if (y >= x) then z</b>:= x + y <b>else z</b>:= 1.2


<b>else</b>

z:= x*x + y*y; 1,0 điểm


<b>Bài 4:</b>



(2<i>điểm)</i> <i><b>Program bt4; </b><b>Uses crt; </b></i>
<i><b>Var </b>s: real;</i>
<i> N: integer; </i>


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


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


<i>For n:=1 to 60 do s:=s + 1.0/n; </i>
<i>Writeln(‘Tong s la’, s);</i>


<i>Readln; </i>


<i><b>End. </b></i>


<i>Hướng dẫn : </i>Khai báo biến đúng được 0,5đ; gán giá trị ban đầu cho s
đúng được 0,5đ; sử dụng đúng vòng lăp For – do (While – do ) được
1,0đ


0,5 điểm
0,5 điểm
1,0 điểm


<b>Lưu ý : </b><i>Trong quá trình làm bài học sinh có thể làm tắt một số bước, đáp án chi tiết là dành cho những </i>
<i>học sinh chưa giải đến kết quả cuối cùng. Nếu học sinh có cách giải khác mà vẫn đúng yêu cầu của bài </i>
<i>toán thì vẫn cho điểm tối đa.</i>


<b>3.Hoạt động củng cố:(1-3’):</b>Giáo viên thu bài, chấm, sữa và đánh giá cho điểm ngay trong bài làm của HS
<b>4.Hướng dẫn học sinh về nhà:(2-3’)</b>



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

Ngày soạn : 14 /12/2009 Ngày dạy : 15/12/2009
Tiết PPCT : 16- Tuần 18


<b>BÀI THỰC HÀNH SỐ 2(t2)</b>
<b>I. MỤC TIÊU</b>


<b>1. </b><i><b>Kiến thức: Nắm được cấu trúc và sơ đồ thực hiện của cẩu trúc rẽ nhánh</b></i>
<b>2. Kĩ năng: </b>


- Rèn luyện kĩ năng sử dụng cấu trúc rẽ nhánh trong việc lập trình giải một số ài toán cụ thể.
- Làm quen với các cơng cụ phục vụ hiệu chỉnh chương trình


<b>3. </b><i><b>Thái độ: Tự giác, tích cực, chủ động trong thực hành</b></i>
<b>II. ĐỒ DÙNG DẠY HỌC</b>


<b>1. Giáo viên: </b>Phịng máy vi tính, Projector.
<b>2. Học sinh: </b>Sgk, sbt, bài tập đã viết ở nhà.
<b>III. HOẠT ĐỘNG DẠY HỌC</b>


<b>1. Hoạt động 1:</b> (35 phút) Làm quen với một chương trình và các cơng cụ hiệu chỉnh chtrình.


<i>a. Mục tiêu:</i> Hs biết được nội dung chương trình và kết quả sau khi thực hiện chương trình. Biết các cơng
cụ dùng để hiệu chỉnh chương trình khi cần thiết: thực hiện từng bước, xem kết quả trung gian.


<i>b. Nội dung:</i> Viết chtrình nhập vào 3 số nguyên dương a, b, c và kiểm tra xem chúng có phải là bộ số
Pitago hay khơng?


c. Các bước tiến hành:


<b>Hoạt động của Giáo viên và Học sinh</b> <b>Nội Dung</b>



<b>1. </b>Gợi ý để hs nêu khái niệm bộ số Pitago.


<b>1. </b>Theo dõi dẫn dắt của gv để nêu khái niệm về bộ số Pitago:
tổng bình phương 2 số bằng bình phương số cịn lại.


- Y/cầu hs cho ví dụ cụ thể?


- Phải sử dụng các đẳng thức nào để kiểm tra 3 số bất kỳ a, b,
c là bộ số Pitago?


Ví dụ: 4 5 3
a2<sub>=b</sub>2<sub>+c</sub>2


b2<sub>=a</sub>2<sub>+c</sub>2


c2<sub>=a</sub>2<sub>+b</sub>2


<b>2.</b> Chiếu chương trình mẫu lên bảng. Thực hiện mẫu các thao
tác: lưu, thực hiện từng lệnh chtrình, xem kết quả trung gian,
thực hiện chtrình và nhập dữ liệu.


- Y/cầu hs gõ chtrình vào máy.


- Y/cầu hs lưu chtrình theo hdẫn của sgk.
- Y/cầu hs thực hiện từng lệnh chtrình.


- Y/cầu hs xem các kết quả trung gian a2, b2, c2 trên của sổ
Watches



- Y/cầu hs tìm thêm bộ số a, b, c khác để thực hiện chtrình và
so sánh


<b>2.</b> Soạn chtrình vào máy.
Nhấn <b>F2,</b> gõ tên file, Enter


Nhấn <b>F7,</b> nhập giá trị cho


a = 3, b = 5, c = 4.


Làm theo hdẫn trên bảng


Quan sát qua trình rẽ nhánh của từng bộ dữ liệu vào rồi trả
lời.


<b>* Xem kết quả trung gian</b>
+ Vào Debug\ Watches,


+ nhấn phím <b>Insert</b> xuất hiện cửa
sổ <i>Add watch,</i> nhập <i>tên biến</i> cần
theo dõi giá trị, rồi nhấn <b>Enter </b>(lặp
lại thao tác này nếu muốn cùng lúc
xem giá trị nhiều biến)


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

<i>a. Mục tiêu:</i> Hs đọc hiểu đề, phân tích u cầu của đề. Từ đó chọn được cấu trúc dữ liệu và lệnh phù hợp
để lập trình.


<i>b. Nội dung:</i> Viết chương trình tìm giá trị lớn nhất của 3 số a, b, c được nhập từ bàn phím.
c. Các bước tiến hành:



<b>Hoạt động của Giáo viên và Học sinh</b> <b>Nội Dung</b>


<b>1. </b>Nêu nội dung, mục đích y/cầu của bài tốn.
- Bước đầu tiên để giải bài toán?


- Y/cầu hs xác định các nội dung đó?


- Làm thế nào để xác định gtln của 3 số a, b, c? (Nêu các bước
tìm ra gtln)


- Y/cầu hs phát thảo thuật toán.


- Qua thuật toán ta sẽ sử dụng cấu trúc nào để viết chương
trình?


<b>HS </b>Chú ý theo dõi vấn đề đặt ra của gv.
- Xác định Input, Output và thuật toán
-Input: 3 số a, b, c


Output: Gtln(a,b,c)


- Trả lời theo dạng trình bày ý tưởng
- Hs trình bày trên bảng


- Cấu trúc rẽ nhánh


<b>2.</b> Y/cầu hs gõ chương trình vào máy


Gviên tiếp cận từng máy tính để hướng dẫn và sửa sai.
HS Độc lập từng nhóm soạn chtrình vào máy.



Thơng báo kết quả viết được.
<b>3.</b> Y/cầu hs nhập dữ liệu
a = 23, b = 15, c = 23


HS Nhập dữ liệu theo test cảu gv và thông báo kết quả.
<b>4.</b> Y/cầu hs tự xác định các bộ test khác để kiểm tra chtrình
Hs Tìm các bộ test khác và kiểm thử chtrình


<b>Bài 2: </b>Viết chương trình tìm giá
trị lớn nhất của 3 số a, b, c được
nhập từ bàn phím.


<b>- Nhập a, b, c;</b>
<b>- Nếu a>b thì </b>


<b> nếu a>c thì max:=a</b>
<b> nglại max:=c</b>


<b> Nglại nếu b>c thì max:=b</b>
<b> nglại max:=c;</b>
<b>- Đưa ra max.</b>


<b>IV. ĐÁNH GIÁ CUỐI BÀI </b>(5phút)


<b>Câu hỏi, bài tập về nhà:</b> chuẩn bị các bài tập sgk
Xem trước bài:


<b>V. RÚT KINH NGHIỆM, BỔ SUNG: </b>



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

<i>Ngày soạn : 3/01/2010</i> <i>Ngày dạy : 5/1/2010</i>


<i>Tiết PPCT : 19</i> <i> Tuần : 21</i>


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


<b>I. Mục tiêu:</b>


<b>1. </b><i><b>Kiến thức: Củng cố cho học sinh kiến thức về cấu trúc rẽ nhánh và cấu trúc lặp.</b></i>
<b>2. </b><i><b>Kỹ năng:</b></i>


Rèn luyện kỹ năng vận dụng và linh hoạt trong việc lựa chọn cấu trúc rẽ nhánh và cấu trúc lặp để
giải quyết bài toán đặt ra.


<b>3. Tư duy, </b><i><b>Thái độ:</b></i><b> </b>


Rèn luyện ý thức tự giác học tập tích cực, ham thích tìm hiểu, chủ động trong giải quyết các bài
tập.Rèn luyện tư duy khoa học, tư duy logic.


<b>II. Chuẩn bị của giáo viên và học sinh:</b>
<b>GV:</b> - Soạn giáo án.


<b>HS:</b> - Học bài cũ và chuẩn bị bài tập.
<b>III. Tiến trình bài dạy:</b>


<b>1. Ổn định lớp : </b>


<b>2. Kiểm tra bài cũ (7phút)</b>


Câu hỏi 1(H1): Viết cấu trúc câu lệnh rẽ nhánh và cấu trúc lặp trong Pascal và giải thích các thành
phần?



<i><b>Trả lời : </b></i><b>-Rẽ nhánh</b>


If <btđk > then <lệnh 1> else <lệnh 2>;
If <btđk > then <lệnh 1>;


<b>- Lặp For</b>


For <biến đếm>:= <giá trị đầu> To <giá trị cuối> Do <lệnh>;
For <biến đếm>:= <giá trị đầu> Downto <giá trị cuối> Do <lệnh>;
<b>- Lặp While : </b>While<điềukiện>Do<lệnh>;


<b>3. Bài mới : </b>


<b>Hoạt động 1:</b> (15 phút)Giải bài tập 4


Câu hỏi 1(H1): Sử dụng lệnh If này gồm mấy nhánh ?


Câu hỏi 2(H2): Hàm lấy giá trị tuyệt đối của biểu thức hay biến ?


<b>Hoạt động của GV và HS</b> <b>Nội dung</b>


<b>HĐTP1:</b>


- GV gọi 1 HS lên bảng giải câu 4a)
- 1 HS lên bảng giải câu 4a)


- GV đặt H1.
- 1 HS trả lời H1.



- GV yêu cầ cả lớp theo dõi và nhận xét.
- Các HS khác theo dõi và nhận xét.


- GV nhận xét, hoàn chỉnh bài làm và đánh giá.
<b>HĐTP2:</b>


- GV gọi 1 HS lên bảng giải câu 4b)
- 1 HS lên bảng giải câu 4b)


- GV đặt H2.


- 1 HS trả lời H2.


- GV nhận xét và đánh giá.


Câu 4a)


If (sqrt(x) + sqrt(y)) <=1 then z:=
sqrt(x) + sqrt(y)


Else


If y>=x then z:= x+y
Else z:= 0.5;
Câu 4b)


If (sqr(x-a) + sqr(y-b)) <= sqr(r) then
z:=abs(x) +abs(y)


Else z:= x+y;


<b>Hoạt động 2: </b> (20 phút) Giải bài tập 5


Câu hỏi 1(H1): Hãy khai triển biểu thức Y =

<sub></sub>


 
50


1 1


<i>n</i> <i>n</i>


<i>n</i>


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

Câu hỏi 2(H2): Nhìn vào cơng thức khai triển, em hãy cho biết n lấy giá trị trong đoạn nào ?
Câu hỏi 3(H3): Em hãy thử đưa ra phương pháp tính Y ?


Câu hỏi 4(H4): Sử sụng cấu trúc điều khiển lặp nào là phù hợp ?


<b>Hoạt động của GV và HS</b> <b>Nội dung</b>


- GV đặt H1.


- 1 HS lên bảng trình bày H1.
- GV đặt H2.


- 1 HS trả lời H2.
- GV đặt H3.
- 1 HS trả lời H3
- GV đặt H4.
-1 HS trả lời H4



- GV gọi 1 HS lên bảng giải bài 5a)
- 1 HS lên bảng giải bài 5a


- GV yêu cầu các HS còn lại theo dõi và nhận xét.
- Các HS còn lại theo dõi và nhận xét bổ sung (nếu có).
- GV nhận xét, hồn chỉnh bài làm và đánh giá.


Y = 1<sub>2</sub><sub>3</sub>2<sub>4</sub>3 <sub>51</sub>50
Câu 5a)


Uses crt;
Var y: real;
n: byte;
Begin
Clrscr;
y:=0;


for n:=1 to 50 do
y:= y + n/(n+1);
writeln(y:14:6);
readln;


End.
<b>IV. Củng cố và dặn dò (3’):</b>


1. Nắm được những nội dung đã học:
Có 2 cấu trúc lặp:


 Lặp For: Số lần lặp đã xác định
 Lặp While: Số lần lặp chưa xác định


<b>4.</b> Làm các bài tập còn lại trong SGK trang 51.


<b>V. RÚT KINH NGHIỆM, BỔ SUNG: </b>


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

<i>Ngày soạn : 3/01/2010</i> <i>Ngày dạy : 5/1/2010</i>


<i>Tiết PPCT : 20</i> <i> Tuần : 21</i>


<b>KIỂU MẢNG (tiết 1/3)</b>


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


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


Biết được một kiểu dữ liệu mới là kiểu mảng một chiều.
Biết được một loại biến có chỉ số;


Biết cấu trúc tạo mảng một chiều, cách khai báo biến kiểu mảng một chiều.
<b>2. Kĩ năng</b>


Biết được các thành phần trong khai báo kiểu mảng một chiều;


Biết được định danh của một phần tử kiểu mảng một chiều xuất hiện trong một chương trình;
Biết cách khai báo mảng đơn giản với chỉ số miền con của kiểu nguyên;


Biết cách tham chiếu đến các phần tử của mảng một chiều.


<b> 3. Tư duy và </b><i><b>Thái độ:</b></i>Tự giác, tích cực, chủ động và sáng tạo trong tìm kiếm tri thức.
<b>II. ĐỒ DÙNG DẠY HỌC</b>


<b>1. Giáo viên: </b>giáo án, sgk, sơ đồ cấu trúc mảng 1 chiều


<b>2. Học sinh: </b> sgk


<b>III. HOẠT ĐỘNG DẠY HỌC</b>


1) <b>Ổn định tổ chức</b>: Kiểm tra sĩ số lớp.
2) <b>Kiểm tra bài cũ: </b>Thông qua.


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


<b>Hoạt động 1:</b> (15 phút) Khởi động bài mới


<b>Hoạt động của Giáo viên và Học sinh</b> <b>Nội Dung</b>


<b>1. </b>Nêu bài tốn mở đầu. Y/cầu hs đọc, tìm hiểu chtrình giải
quyết bài tốn đó. Và trả lời các câu hỏi sau:


- Các biến: <b>t1, …,t7</b> thể hiện các giá trị nào? Kiểu của các
biến đó thế nào?


- Biến <b>dem</b> dùng làm gì?


- 7 câu lệnh <b>IF</b> trong chương trình thực hiện việc gì?
TL: <b>dem:</b> để đếm số ngày tron tuần có nđộ lớn hơn nđộ
trung bình.


TL: - Để kiểm tra lần lượt các ngày, nđộ ngày nào lớn hơn
nđộ trung bình.


<b>2. </b> Mở rộng bài tốn từ phạm vi một tuần sang phạm vi <i>N</i>



ngày (chẳng hạn một tháng hay một năm) thì chương trình
trên có hạn chế như thế nào?


TL: Bản chất thuật tốn khơng có gì thay đổi nhưng việc
<b>viết chương trình gặp khó khăn do cần dùng rất nhiều biến</b>
<b>và đoạn các câu lệnh tính tốn khá dài.</b>


<b>3. </b>Để khắc phục hạn chế trên người ta thường ghép chung
7 biến trên thành một dãy và đặt cho nó chung 1 tên và
đánh cho mỗi phần tử một chỉ số.


<b>4.</b>Em hiểu như thế nào về mãng một chiều?


TL: Mảng một chiều là dãy hữu hạn các phận tử cùng kiểu
dữ liệu.


Hỏi: Để mô tả mảng một chiều, ta cần xác định những yếu
tố nào?


<b>1.Kiếu mảng một chiều</b>
<b>a. K/n mảng một chiều</b>


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

- Trả lời: + Kiểu của các p/tử.
<b>+ Cách đánh số các p/tử.</b>


<b>Hoạt động 2: </b>(20 phút)Tạo kiểu mảng một chiều và khai báo biến mảng


<b>Hoạt động của Giáo viên và Học sinh</b> <b>Nội Dung</b>


Hỏi: Chỉ ra phần khai báo mảng trong phần khi báo của


chtrình?


- Ý nghĩa của các khai báo trên là gì?
Trả lời:


<b>Dòng 1</b>: Kbáo kiểu mảng một chiều gồm Max số thực.
<b>Dòng 2</b> : Kbáo biến mảng <i>Nhietdo</i> qua kiểu mảng
<b>2. </b>Giới thiệu cú pháp khai báo kiểu mảng một chiều.
<b>3. </b>Y/cầu cho ví dụ khai báo mảng?


Gọi hs khác: Ý nghĩa của khai báo bạn vừa viết?
và trả lời


<b>Var</b> Dhs2: <b>array</b> [1..100] <b>of</b> real;


<b>- Kbáo trực tiếp mảng có tên Dhs2 gồm 100 p/tử có kiều</b>
<b>thực.</b>


* Lưu ý hs tránh nhầm lẫn giữa tên kiểu dữ liệu mảng và
biến kiểu mảng.


-Hỏi: <b>(Treo bảng)</b> Trong ba cách khai báo ở ví dụ 2, thì
cách nào tốt hơn?


TL: Cách 2 & 3, vì ta dễ dàng điều chỉnh kích thước của
mảng


- Hỏi: Dựa vào ví dụ trang 55 SGK, cho biết:
+ Tên kiểu mảng?



+ Số phần tử của mảng?


+ Mỗi phần tử của mảng thuộc kiểu gì?
<b>Trả lời: </b>


<i>.ArrayReal</i>
.301 phần tử


.Real


<b>5.</b> Cách tham chiếu đến từng phần tử của mảng:
<b>TL: </b>a[2] p/tử ở vị trí thứ 2 của mảng a


a[i] p/tử ở vị trí i của mảng a.


<b>Type </b>


Kmang1=<b>array</b> [1..Max] <b>of </b>real<b>;</b>
<b>Var </b>Nhietdo: Kmang1<b>;</b>


<b>b. Khai báo </b>(Có hai cách)
<i><b>Cách 1: Khai báo trực tiếp:</b></i>


<i><b>Var <tên biến mảng>: array[kiểu chỉ số] of</b></i>
<kiểu phần tử>;


<i><b>Cách 2: Khai báo gián tiếp</b></i>


<i><b>Type <tên kiểu mảng>=</b></i> <i><b>array[kiểu chỉ số] of</b></i>
<kiểu phần tử>;



<i><b>Var <tên biến mảng>:<tên kiểu mảng>;</b></i>


<i><b>Trong đó: +Kiểu chỉ số thường là một đoạn số</b></i>
nguyên liên tục có dạng n1...n2(n1<n2)(n1,n2
là các hằng hoặc biểu thức)


+ Kiểu phần tử là kiểu dl của các phần tử của
mảng.


Ví dụ 1:


<b>Var</b> Nhietdo: <b>array</b> [1..Max] <b>Of </b>real;


Ví dụ 2: Khai báo mảng tối đa 100 số nguyên
(chỉ số đầu tiên là 1)


Ta có các cách sau:
Cách 1:


<b>Var</b> a<b>: Array</b>[1..100] <b>Of</b> Integer;


Cách 2:


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


<b>Var</b> a<b>: Array</b>[1..Nmax] <b>Of</b> integer;


* Tham chiếu tới phần tử cuả mảng
<b>Tên_biến[chỉ số]</b>



4) <b>Củng cố (7 phút)</b>


<b>Hoạt động của Giáo viên và Học sinh</b> <b>Nội Dung</b>


<b>(Treo bảng) </b>


<b>+ </b>Những khai báo nào là đúng?
+ Trả lời:


Arrayr=array[1..200] of integer;


Arrayb = array[-100..100]of boolean;


+ Biến<b> a</b> trong khai báo trên chiếm dung lượng bộ nhớ là
bao nhiêu?


+ Trả lời: a chiếm 400 byte trong bộ nhớ.


<b>Type</b>


Arrayr = array[1..200] Of integer;
Arrayr = array[byte] of real;


Arrayb = array[-100..100] of boolean;
<b>Var</b> a : arrayr;


B : arrayb;


<b>III. ĐÁNH GIÁ CUỐI BÀI, DẶN DÒ </b>(3phút)



1. Câu hỏi, bài tập về nhà: Đọc ví dụ 1 và ví dụ 2/ trang 56+57 SGK:


 Xem lại thuật tốn tìm phần tử lớn nhất của dãy số nguyên và thuật toán sắp xếp dãy số nguyên
bằng thuật toán hoán đổi (lớp 10);


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

<i>Ngày soạn : 10/01/2010</i> <i>Ngày dạy :12/1/2010</i>


<i>Tiết PPCT : 22</i> <i> Tuần : 22</i>


<b>KIỂU MẢNG </b>(tiết 2/3)
<b>BÀI TẬP KIỂU MẢNG MỘT CHIỀU</b>
<b>I. MỤC TIÊU</b>


<b>1. </b><i><b>Kiến thức: Khai báo kiểu, biến mảng một chiều, cách tham chiếu dến các p/tử trong mảng. </b></i>
<b>2. Kĩ năng: </b>Hs sử dụng được biến kiểu mảng một chiều để giải quyết một bài toán đơn giản.
<b>II. CHUẨN BỊ : </b>


<b>1. Giáo viên: </b>giáo án, bảng phụ, sgk
<b>2. Học sinh: </b>sgk


<b>III. HOẠT ĐỘNG dẠY VÀ HỌC</b>


1) <b>Ổn định tổ chức</b>: Kiểm tra sĩ số lớp.


2) <b>Kiểm tra bài cũ: </b>Trình bày các cách khai báo kiểu mảng trong NNLT Pascal?
3) <b>Giảng bài mới:</b>


<b>Hoạt động 2: </b>(20 phút)Vận dụng kiểu mảng một chiều



<b>Hoạt động của Giáo viên và Học sinh</b> <b>Nội Dung</b>


<b>1. </b>Nêu đề bài toán (<b>Nội dung</b>)


Y/cầu hs xác định In/Output của bài toán.
HS: In: mảng A, số k


Out: Tổng (S) các p/tử trong mảng A là bội của k.
<b>2.</b> Ở lớp 10 ta đã xây dựng t/toán cho bài toán này
rồi. Y/cầu hs nhắc lại t/toán.


<b>3.</b> Y/cầu hs cho biết các việc chính cần thực hiện
trong chtrình là gì?


Trả lời


+ Cho biết số ptử của mảng A.


+ Nhập giá trị cho các ptử của mảng A
+ Tính tổng.


<b>4.</b> Y/cầu hs cho biết các biến chính cần sử dụng là
gì?


TL: mảng A
biến đơn: N, k, S.


- Y/cầu hs khác lên viết phần khai báo các biến đó?
HS Lên bảng trình bày



<b>Var </b> S, N, k: integer;
A: <b>array</b>[1..100] of integer;


<b>5.</b> Tiếp tục y/cầu hs lên viết phần chtrình tạo giá trị
cho các ptử của mảng A. (lưu ý nhập số lượng ptử
của mảng trước)


Gọi hs khác nhận xét


* Chỉnh sửa đoạn chtrình hs vừa hồn thành.


<b>6.</b> Để viết tiếp đoạn chtrình cịn lại (tính tổng) theo
thuật tốn ta phải kiểm tra lần lượt tất cả các ptử của
mảng từ A[1] đến A[n]. vậy ta sử dụng câu lệnh gì ở
đây?


TL: Sử dụng cấu trúc lặp For.


- Hỏi: trước khi tính tổng, ngồi mảng A trong CT
cần có thêm gì khơng? <i>(GV bổ sung)</i>


<b>Bài 1:</b> Viết CT tạo mảng A gồm N (N100) số
nguyên. Tính tổng các phần tử của mảng là bội
của một số nguyên dương <b>k</b> cho trước.


<b>Var </b> S, n, k, i : integer;


A: <b>array</b>[1..100] of integer;


<b>Begin</b>



Write(‘Nhap n = ’); readln(n);


<i>{tao mang}</i>


<b>For </b>i:=1 <b>To</b> n <b>Do </b>
<b> begin</b>


write(‘phan tu thu ’,i,’ =’);
readln(A[i]);


<b> end;</b>


write(‘Nhap k = ’); readln(k);
S := 0; <i>{khoi tao S ban dau}</i>
<i>{tinh tong}</i>


<b>For </b>i:=1 <b>To</b> n <b>Do</b>


<b>If </b>A[i] <b>mod</b> k = 0 <b>Then </b>


S := S + A[i];


Writeln(‘Tong can tinh la ’, S);


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

TL: Giá trị <b>k</b> và Biến <b>S := 0</b>


- Y/cầu hs khác lên viết đoạn chtrình cịn lại?
- 1 hs Lên bảng trình bày



Chạy thử chtrình


N = 8 A: 5, 6, -8, 13, 24, 7, -4, -12 và k =3


<b>Hoạt động 3:</b> (15 phút) Mở rộng bài tốn có vận dụng mảng một chiều


<b>Hoạt động của Giáo viên và Học sinh</b> <b>Nội Dung</b>


(Treo bảng) chứa nội dung câu lệnh cần thêm vào
chtrình ở bài 1.


<b>1.</b> Y/cầu hs n/cứu nội dung các câu lệnh và hỏi:
- Ý nghĩa của biến am, duong?


- Chức năng của lệnh (3)?
- Lệnh (4) đưa ra thơng tin gì?


<b>HS </b>N/cứu ý nghĩa các câu lệnh và trả lời:
- Dùng để lưu số lượng đếm được.
- Đếm số dương hoặc đếm số âm.
- Số các số dương, số các số âm.


<b>2.</b> Y/cầu hs tìm vị trí bổ sung các lệnh vào cho phù
hợp để chtrình đếm được số dương, số âm.


<b>HS </b>Chỉ ra vị trí cần bổ sung và các câu lệnh cần loại
bỏ bớt.


<b>3.</b> Y/cầu hs lên



hoàn chỉnh lại chtrình?


<b>HS </b>Lên bảng , chỉnh sửa lại chtrình.
** Chuẩn hố lại chtrình.


* Chạy thử chtrình với 1 bộ giá trị:
Chạy thử chtrình


N = 8 A: 5, 6, -8, 13, 24, 7, -4, -12
<b>A</b> <b>5</b> <b>6</b> <b>- 8</b> <b>13</b> <b>24</b> <b>7</b> <b>- 4</b> <b>- 12</b>


<b>Duong</b> <b>1</b> <b>2</b> <b>2</b> <b>3</b> <b>4</b> <b>5</b> <b>5</b> <b>5</b>


<b>m</b> <b>0</b> <b>0</b> <b>1</b> <b>1</b> <b>1</b> <b>1</b> <b>2</b> <b>3</b>


<b>Var n, i : integer;</b>


am, duong : integer;


A : array[1..100] of integer;
<b>Begin</b>


Write(‘Nhap n = ’); readln(n);
<i>{tao mang}</i>


<b>For i:=1 To n Do </b>
<b> begin</b>


write(‘phan tu thu ’,i,’ =’);
readln(A[i]);



<b> end;</b>


am := 0; duong := 0;
<i>{dem}</i>


<b>For i:=1 To n Do </b>
If A[i] >0 Then


duong := duong + 1
Else if A[i]<0 Then


am := am + 1;
Writeln(duong: 4, am:4);


<b>End.</b>


<b>III. ĐÁNH GIÁ CUỐI BÀI </b>(5phút)
<b>1. Nội dung đã học</b>


- Tính tổng các phần tử trong mảng thoả mãn một điều kiện.
- Đếm số phần tử trong mảng thoả mãn một điều kiện.
<b>2. Câu hỏi, bài tập về nhà</b>


- Cho 2 mảng A, B gồm n (n<=250) số ngun. Hãy viết chương trình xây dựng mảng C[1..n],
trong đó C[i] là tổng của 2 phần tử thứ i thuộc mảng A và mảng B. (tức là: C[i] = A[i] + B[i])


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

<i>Ngày soạn : 10/01/2010</i> <i>Ngày dạy :12/1/2010</i>


<i>Tiết PPCT : 22</i> <i> Tuần : 22</i>



<b>KIỂU MẢNG </b>(tiết 3/3)
<b>I. MỤC TIÊU</b>


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


- Hiểu được khái niệm mảng hai chiều.


- Hiểu cách khai báo và tham chiếu đến các phần tử của mảng hai chiều.
<b>2. Kĩ năng</b>


- Thực hiện được khai báo mảng hai chiều, cách tham chiếu đến một phần tử của mảng hai chiều.
- Thực hiện được việc tính tốn các phần tử trong mảng hai chiều.


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


<b>1. Giáo viên: </b>Bảng phụ chứa chương trình tạo và in mảng hai chiều gồm 5 hàng, 7 cột. Tính và in ra màn
hình tổng các phần tử trong mảng.


<b>2. Học sinh: </b>SGK, vở soạn.


<b>III. HOẠT ĐỘNG dẠY VÀ HỌC</b>


1) <b>Ổn định tổ chức</b>: Kiểm tra sĩ số lớp.


2) <b>Kiểm tra bài cũ:</b> Viết cấu trúc của tổng quát của mảng một chiều ?
3) <b>Giảng bài mới: </b>


<i><b>Hoạt động 2: </b>(7 phút)Tìm hiểu ý nghĩa của mảng hai chiều</i>.



<b>Hoạt động của Giáo viên và Học sinh</b> <b>Nội Dung</b>


- GV yêu cầu HS xem bảng nhân ở SGK.


- Với kiến thức về mảng một chiều đã học, em hãy đưa
ra cách sử dụng kiểu mảng đó để lưu trữ bảng nhân?
TL: - Sử dụng 9 mảng một chiều, mỗi mảng lưu một
hàng của bảng.


- Với cách lưu trữ như vậy, ta phải khai báo bao nhiêu
biến mảng?


- TL: Khai báo 9 biến mảng một chiều.
- Khai báo như vậy có những hạn chế nào?


- TL: Phải khai báo nhiều biến, chương trình phải viết
nhiều lệnh để tạo và in giá trị của mảng.


- Để khắc phục những hạn chế này, ta có thể mơ tả dữ
liệu của bảng nhân bằng kiểu dữ liệu mảng hai chiều.
- Nêu khái niệm mảng hai chiều.


- Để mô tả kiểu mảng hai chiều, cần xác định những
yếu tố nào?


- HS trả lời.


- Tham khảo SGK và trả lời.


<b>§11. KIỂU MẢNG (tt)</b>


<b>2. Kiểu mảng hai chiều: </b>


<i>a. Xét bài toán</i>: Bảng nhân (SGK).


* Khái niệm mảng hai chiều: (SGK).


* Các yếu tố cần xác định để mô tả kiểu
mảng hai chiều. (SGK)


<i><b>3. Hoạt động 3:(10’)Tìm hiểu cách khai báo biến mảng hai chiều và cách tạo/in mảng hai chiều.</b></i>


<b>Hoạt động của Giáo viên và Học sinh</b> <b>Nội Dung</b>


- GV đưa ra hai cách khai báo biến mảng hai chiều.
- GV giải thích các thành phần trong khai báo.


- Gọi HS nêu cách khai báo gián tiếp biến B để lưu trữ bảng
nhân ở SGK.


<i>b. Khai báo:</i>


<i> C1: Trực tiếp:</i>


<b>Var</b> <<i>tênbiếnmảng</i>><b>:array[</b><i>kiểu chỉ số </i>
<i>hàng, kiểu chỉ số cột</i><b>]of </b><<i>kiểu phần tử</i>><b>;</b>
<i> C2: Gián tiếp:</i>


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

- Gọi HS nhắc lại cách tham chiếu đến một phần tử của
mảng một chiều.



- TL: Tênbiến[chỉ số]


<b>Var </b><<i>tên biến mảng</i>><b>:</b><<i>tên kiểu mảng</i>><b>;</b>
<i>c.Tham chiếu đến một phần tử của mảng </i>
<i>hai chiều:</i>


Tênbiến[chỉ số hàng,chỉ số cột]
<i><b>4. Hoạt động 4: </b>(17 phút)</i>Tìm hiểu cách viết chương trình đơn giản.


<b>Hoạt động của Giáo viên và Học sinh</b> <b>Nội Dung</b>


- GV hướng dẫn HS cách tạo mảng hai chiều có m hàng,
n cột.


- GV hướng dẫn HS cách in mảng hai chiều vừa tạo.


- Gọi HS lên bảng sửa lại phần khai báo và các câu lệnh
nhập cho phù hợp với bài này.


- HS lên bảng làm.
+ Không khai báo m,n.
+ Khai báo thêm biến T.


+ Viết hai vòng <b>for</b> của lệnh tạo và in mảng là:
<b>for </b>i := 1 <b>to </b>5 <b>do</b>


<b> for</b> j := 1 <b>to</b> 7 <b>do</b>


- GV hướng dẫn HS cách tính tổng.



- GV treo bảng phụ viết sẵn chương trình cho HS tham
khảo.


- HS Theo dõi chương trình trên bảng phụ.


<i>d. Các ví dụ:</i>


<i>Ví dụ 1:</i> Viết chương trình tạo và in mảng
hai chiều gồm m hàng, n cột.


<b>program</b> Tao_in_mang;
<b>var</b> i, j, m, n: integer;


A: array [1..100,1..100] of integer;
<b>begin</b>


write ('Nhap so hang m = '); readln (m);
write ('Nhap so cot n = ');


readln (n);


<i>{Tạo mảng}</i>
<b>for</b> i := 1 <b>to</b> m <b>do</b>
<b> for </b>j := 1<b> to </b>n<b> do</b>
<b> begin</b>


write('Nhap A[',i, ',' ,j,']=');
readln (A[i , j]);


<b> end;</b>


<i>{In mảng}</i>


<b>for</b> i:= 1 <b>to</b> m <b>do</b>
<b> begin</b>


<b> for </b>j := 1<b> to </b>n<b> do </b>
<b> </b>write (A[i , j]:4);


writeln;
<b> end;</b>


readln
<b>end.</b>
<b>IV. ĐÁNH GIÁ CUỐI BÀI </b>(3phút)


<b>1. Nội dung đã học</b>


- Cách khai báo biến mảng hai chiều.
- Cách tạo mảng hai chiều.


- Cách tính tốn các phần tử trong mảng hai chiều.


<b>2. Câu hỏi, bài tập về nhà : </b>Xem các ví dụ cịn lại trong SGK.
<b>V. RÚT KINH NGHIỆM, BỔ SUNG: </b>


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

<i>Ngày soạn : 17/01/2010</i> <i>Ngày dạy :18/1/2010</i>


<i>Tiết PPCT : 23</i> <i> Tuần : 23</i>


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



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


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


- Khai báo kiểu, biến mảng một chiều, cách tham chiếu dến các p/tử trong mảng.
- Củng cố và làm hs hiểu sâu hơn thuật toán sắp xếp đã được học ở lớp 10.


<b>2. Kĩ năng: </b>Hs sử dụng được biến kiểu mảng một chiều để giải quyết một bài toán đơn giản.
<b>II. ĐỒ DÙNG DẠY HỌC</b>


<b>1. Giáo viên: </b>giáo án, bảng phụ, sgk
<b>2. Học sinh:</b> sgk


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


<b>IV. HOẠT ĐỘNG DẠY HỌC</b>


<b>1. Hoạt động 1:</b> (10 phút) Kiểm tra bài cũ:


Gọi 2 Hs lên bảng trình bày bài tập cho về nhà tiết trước.


<b>2. Hoạt động 2:</b>(15 phút) Phân tích bài tốn trước khi viết chương trình


<i>a. Nội dung: </i>Sắp xếp dãy số nguyên bằng thuật toán tráo đổi.
b. Các bước tiến hành:


<b>Hoạt động của Giáo viên và Học sinh</b> <b>Nội Dung</b>


<b>1.</b> Nêu bài toán, y/cầu hs xác định In/Output của bài toán.
<b>TL</b> :



In: N (N250), dãy A (A[i]<500).
Out: dãy A không giảm


<b>2. </b>Y/cầu hs trình bày lại thuật tốn sắp xếp tráo đổi. (Đã học ở
lớp 10)


<b>3. </b>Y/cầu cả lớp n/cứu lại t/toán và trả lời các câu hỏi:


- Biến <b>j </b>sẽ nhận các giá trị trong phạm vi nào? Tương tự với
biến <b>i</b>?


- Có nhận xét gì về 2 biến i,j?
Trả lời:


+ 2  <b>j</b> N, 1  <b>i</b> j-1
+ i phụ thuộc theo j


(với mỗi giá trị <b>j, i</b> lần lượt nhận các giá trị từ 1 đến j-1)


<i>Số nguyên dương N (N</i>

<i>250) và dãy</i>



<i>A gồm N số nguyên dương, mỗi số</i>


<i>đều không vượt quá 500. Hãy sắp</i>


<i>xếp dãy A thành dãy không giảm.: </i>



In: N (N250), dãy A (A[i]<500).
Out: dãy A khơng giảm


<b>2.</b>Thuật tốn



B1: Nhập N, dãy A ;
B2: jN;


B3: nếu j<2 thì đưa ra dãy đã được sắp
xếp, KT;


B4: jj-1; i1;


B5: Nếu i>j thì Qlại B3;


B6: Nếu A[i]>A[i+1] thì tráo đổi A[i]
và A[i+1];


B7: Quay lại B5.


<b>3. Hoạt động 3:</b>(15phút)Vận dụng kiểu dữ liệu mảng một chiều để mơ tả t/tốn trên trong Pascal


<b>Hđ của GV</b> <b>Nd ghi bảng</b>


<b>1. </b>Y/cầu hs xác định những nội dung chính cần viết trong
chtrình.


HD: +Khai báo biến
+Tạo mảng A


+Sắp xếp mảng A tăng dần


+Đưa mảng A đã sắp xếp ra màn hình
* Chốt lại các nội dung chính cần viết.



2. Yêu cầu từng hs lên bảng viết từng nội dung của chương
trình.


<b>Var</b> A: <b>array</b>[1..300] <b>of</b> integer;
N, i, j :integer;


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

- Khai báo những biến gì?
-TL: mảng A, biến đơn N, i, j
- Tạo mảng là làm những gì?


-TL: Nhập sl p/tử của mảng và nhập giá trị cho các p/tử trong
mảng


- Sắp xếp mảng


Hỏi: Làm thế nào để tráo đổi giá trị 2 biến cho nhau (a[i] và
a[i+1])?


Tl: sử dụng thêm biến trung gian <b>t</b>:
<b>t:=a[i];</b>


<b>a[i]:=a[i+1];</b>
<b>a[i+1] :=t</b>


- Đưa mảng ra màn hình


<i>{tao mang}</i>


Write(‘Nhap n = ’); readln(n);



<b>For </b>i:=1 <b>To</b> n <b>Do </b>
<b> begin</b>


write(‘phan tu thu ’,i,’ =’);
readln(A[i]);


<b> end;</b>


<i>{sap xep mang}</i>


<b>For </b>j := N <b>Downto</b> 1 <b>Do</b>


<b>for</b> i:=1 <b>to</b> j - 1 <b>do</b>


<b> If</b> a[i] > a[i+1] <b>then</b>


<b>begin</b>


t:=a[i]; a[i]:=a[i+1];
a[i+1] :=t


<b>end;</b>


<i>{dua ra mang da sap xep}</i>


Writeln (‘Mang da duoc sap xep ’);


<b>For</b> i :=1 <b>To </b>N <b>Do </b>write (a[i]:4);
Readln



<b>End. </b>
<b>IV. ĐÁNH GIÁ CUỐI BÀI </b>(5phút)


<b>1. Nội dung đã học</b>


Cách phân tích và viết chương trình cho một bài tốn.
<b>2. Câu hỏi, bài tập về nhà</b>


Xem lại các bài tập về mảng đã giải ở tiết 20
Xem trước bài: Bài thực hành số 3


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

<i>Ngày soạn : 17/01/2010</i> <i>Ngày dạy :18/1/2010</i>


<i>Tiết PPCT : 24</i> <i> Tuần : 23</i>


<b>BÀI THỰC HÀNH SỐ 3 </b>
<b>I. MỤC TIÊU:</b>


- Về Kiến thức: Củng cố cho HS những hiểu biết về kiểu dữ liệu mảng.


- Về Kỹ năng: Khai báo được kiểu dữ liệu mảng, nhập dữ liệu mảng, đưa ra màn hình chỉ số và giá trị
của các phần tử mảng.


+ Duyệt qua phần tử của mảng để xử lý từng phần tử.


- Về tư duy và Thái độ: 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>


- GV: Phịng máy tính, máy chiếu Projector.


- HS: SGK, bài tập.


<b>III. HOẠT ĐỘNG DẠY VÀ HỌC</b>


1) <b>Ổn định tổ chức</b>: Kiểm tra sĩ số lớp.


2) <b>Kiểm tra bài cũ:</b> Khi nào ta nên khai báo biến mảng gián tiếp – thông qua định nghĩa kiểu?
3) <b>Giảng bài mới: </b>


<b>HOẠT ĐỘNG CỦA GV</b> <b>HOẠT ĐỘNG CỦA HS</b>


GV: Cài đặt và trình chiếu CT mẫu bài 1a. HS: Xem bài mẫu được trình chiếu.
?1: <b>MyArray</b> là tên kiểu dữ liệu hay tên biến?


GV: Nhận xét.


HS1: Trả lời
?2: Vai trò của nmax và n khác nhau như thế nào? HS2: Trả lời
?3: Dòng lệnh nào dùng để tạo biến mảng A?


GV: Nhận xét.


HS3: Trả lời.


GV: Cho chạy thử CT bài 1a HS: Xem


?4: Lệnh gán <b>A[i]:= random(300) – random(300)</b> có ý nghĩa
gì?


GV: Nhận xét.



HS4: Trả lời.
?5: Lệnh <b>For i:=1 to n do Write(A[i]:5);</b> có ý nghĩa gì?


GV: Nhận xét. HS5: Trả lời.


?6: Lệnh <b>For i:=1 to n do If A[i] mod k = 0 then s:=s + A[i];</b>
thực hiện nhiệm vụ gì?


GV: Nhận xét.


HS6: Trả lời.
?7: Lệnh <b>s:=s+A[i];</b> được thực hiện bao nhiêu lần?


GV: Nhận xét. HS7: Trả lời.


GV: Cho HS chạy thử chương trình để thấy kết quả. HS: Chạy thử chương trình trên máy
của mình.


GV: Nhắc nhở HS lưu chương trình đã chạy tốt ở câu a. HS: Lưu chương trình.
GV: Trình chiếu các câu lệnh của câu 1b. HS: Xem.


?8: Đưa biến <b>Posi </b>và <b>Neg</b> vào vị trí nào trong câu 1a?


GV: Nhận xét. HS8: Trả lời


?9: Nhiệm vụ của câu lệnh:


<b>If A[i]:>0 then Posi:=Posi+1 else If A[i]<0 then </b>
<b>Neg:=Neg+1;</b> ?



GV: Nhận xét.


HS9: Trả lời.


GV: Yêu cầu HS đưa câu lệnh vào chương trình ở câu 1a. HS: Thực hiện.


GV: Yêu cầu HS chạy chương trình và báo cáo kết quả. HS: Lưu và chạy chương trình, báo cáo
KQ.


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

Yêu cầu HS sửa lại chương trình trên để có thể nhập một mảng có 10 phần tử từ bàn phím.


<i>5)</i> <i><b> Dặn dị:</b></i>


- HS về nhà làm bài tập 4.15 trong sách bài tập.


- Chuẩn bị chương trình bài 2 bài thực hành 3 chương IV trong SGK.
<b>IV. RÚT KINH NGHIỆM, BỔ SUNG: </b>


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

<i>Ngày soạn : 24/01/2010</i> <i>Ngày dạy :26/1/2010</i>


<i>Tiết PPCT : 25</i> <i> Tuần : 24</i>


<b>BÀI THỰC HÀNH SỐ 4 </b>
<b>I. Mục tiêu</b>


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


- Củng cố kiến thức về dữ liệu kiểu mảng.



- Xây dựng cấu trúc dữ liệu, hiểu thuật toán sắp xếp bằng tráo đổi.
<b>2. Kĩ năng</b>


- Biết chỉnh sữa lỗi trong chương trình.


- Tự nhập các bộ dữ liệu để hiểu ý nghĩa một số câu lệnh.
<b>3. Thái độ</b>


- Nghiêm túc thực hiện đúng nội quy phịng máy, tự giác trong khi lập trình.
<b>II.Chuẩn bị</b>


<b>- Gv:</b>Bảng phụ viết sẵn chương trình, phịng máy, project.
<b>- Hs: </b>Sgk, CT đã được viết sẵn.


<b>III. Tiến hành dạy học</b>


1) <b>Ổn định tổ chức</b>: Kiểm tra sĩ số lớp.
2) <b>Kiểm tra bài cũ:</b> Thông qua ?
3) <b>Giảng bài mới: </b>


<b>Hoạt động 1: </b>Nhắc lại kiến thức đã học liên quan bài thực hành.


<b>Hoạt động của Giáo viên và Học sinh</b> <b>Nội dung thực hành </b>


<b>Hỏi 1:</b> Nêu cách khai báo kiểu mảng 1 chiều.


<b>Hỏi 2: </b>Nhập từ bàn phím xây dựng mảng một chiều A có
6 phần tử.


<b>Tl: </b>có 2 cách


+ gián tiếp:
+ trực tiếp:


<b>TL:</b> For i:= 1 to 6 do
Begin


Writeln(‘Nhap phan tu thu ’,i,’=’);
Readln(A[i]);


End;
<b>2. Hoạt động 2</b>: Xác định bài toán và tìm hiểu chương trình.


<b>Hoạt động của Giáo viên và Học sinh</b> <b>Nội dung</b>


<b>1.</b> Chiếu đề bài lên bảng.
<b>2.</b> Xác định bài toán


Y/cầu hs xác định dữ liệu vào/ra của bài toán?
Trả lời :


- Vào: mảng A


- Ra: mảng A đã sắp xếp


- Yêu cầu hs nhắc lại ý tưởng thuật toán(Lớp 10)?
- HS Nhắc lại thuật toán.


- Chiếu thuật tốn đã được liệt kê các bước.
<b>4.</b> Tìm hiểu chương trình



- Vai trị của biến i, j trong CT?
-<b> TL:</b> Dùng làm biến chỉ số.


- Đoạn lệnh nào thực hiện tráo đổi giá trị 2 phần tử liền
kề của mảng?


- <b>TL:</b>3 lệnh: tg := a[i];
a[i]:= a[i+1];
a[i+1]:= tg;


<b>Đề:</b> 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 số.


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

- Treo bảng CT chuẩn bị sẵn.
Giải thích một số lệnh của CT.
<b>3. Hoạt động 3: </b>Chạy CT câu a.


<b>Hoạt động của Giáo viên và Học sinh</b> <b>Nội dung</b>


- Yêu cầu hs tự nhập dữ liệu với CT có sẵn.
- Giúp hs phát hiện và sữa lỗi.


- Thuật toán trên tiến hành đưa số lớn thứ j về đến vị trí j sau
mỗi vịng lặp: For i:= 1 to j-1 do


- Chạy CT, nhập dữ liệu, xm kết quả.
- Chỉnh sữa CT thông qua các thông
báo lỗi.


- Chú ý hiểu rõ thêm về CT.


<b>4. Hoạt động 4:</b> Xác định bài toán câu b.


<b>Hoạt động của Giáo viên và Học sinh</b> <b>Nội dung</b>


<b>1.</b> Xác định bài toán.


- Y/cầu hs xác I/O bài toán?


- Biến Dem được tăng lên khi nào?
<b>TL:</b> Khi A[i] > A[i+1]


(tức là biểu thức đk trong CL If đúng)


- Cần đưa câu lệnh tăng Dem vào chỗ nào trong CT trên?
<b>TL: </b>Trong thân CL If: trước hoặc sau 3 lệnh tráo đổi.
- Câu lệnh khởi tạo Dem:= 0 được đặt vào vị trí nào trong
CT?


<b>TL: </b>Chọn một trong hai phương án 3, 4.
+ Trước CL đầu tiên:


For j:= N down to 2 do
+ Trước CL duyệt:


For i:= 1 to j-1 do
+ Trước 3 CL tráo đổi
+ Sau 3 CL tráo đổi


- Sau CL cuối CT nên đưa CL nào vào để hiển thị giá trị
biến Dem ra màn hình.



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


Xác định bài tốn:
+ I: mảng a;


+O: mảng a đã sắp xếp, số lần tráo đổi
(Dem);


<b>4. Hoạt động 5:</b> Sữa CT câu a để giải bài toán câu b.


<b>Hoạt động của Giáo viên và Học sinh</b> <b>Nội dung</b>


- Yêu cầu hs sữa lại CT theo gợi ý đã nêu.
- Hướng dẫn hs chỉnh sửa và chạy CT.
- Đánh giá kết quả của hs.


CT(Phụ lục)


- Thêm các CL như đã hướng dẫn vào CT.
- Chạy CT.


4) Củng cố : Thuật toán sắp xếp bằng tráo đổi. Đếm số lần tráo đổi.
5) Bài tập về nhà


- Tìm thêm các thuật tốn sắp xếp khác tối ưu hơn.



- Cho mảng A và mảng B (là mảng A đã được sắp xếp). Hãy in ra chỉ số của các phần tử mảng A
theo mảng B.


<b>IV. RÚT KINH NGHIỆM, BỔ SUNG: </b>


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

<i>Ngày soạn : 24/01/2010</i> <i>Ngày dạy :26/1/2010</i>


<i>Tiết PPCT : 26</i> <i> Tuần : 24</i>


<b>Bài 12: KIỂU XÂU</b>



<b>I.Mục tiêu</b>
<i>1. Về kiến thức</i>


- Biết được một kiểu dự liệu mới, biết được khái niệm kiểu xâu.
- Phân biệt được sự giống và khác giữa kiểu mảng với kiểu xâu.


- Biết được cách khai báo biến, nhập/xuất dữ liệu, tham chiếu dến từng kí tự của xâu.
- Biết các phép toán liên quan đến 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.


- Sử dụng biến xâu và các phép toán trên xâu để giải quyết một bài toán đơn giản.
<b>II. Chuẩn bị của GV và HS</b>


<i>1. GV:</i> Máy vi tính, Máy chiếu để giới thiệu ví dụ.


<i>2. HS</i>SGK.



<b>III. Phương pháp</b>
Thuyết trình, vấn đáp
<b>IV. Tiến trình bài học</b>


<i>HĐ1: Kiểm tra bài cũ và khởi động bài mới</i>


<b>Hoạt động của Giáo viên và Học sinh </b> <b>Nội dung</b>


Ghi câu hỏi lên bảng
Phát vấn HS tại chỗ
Suy nghĩ, trả lời
Y/c HS khác nhận xét
Nhận xét


Chính xác hóa nội dung


'Viet Nam' là dữ liệu kiểu mảng. Tuy nhiên nó là một kiểu dữ
liệu mà tiết này ta sẽ học: KIỂU XÂU


Ghi nhớ kiến thức


Câu hỏi:


Định nghĩa mảng một chiều và cách
khai báo.


'Viet Nam' có phải là dữ liệu kiểu
mảng một chiều khơng, Vì sao?



<i>HĐ2: Tìm hiểu về dữ liệu kiểu xâu</i>


<b>Hoạt động của Giáo viên và Học sinh</b> <b>Nội dung</b>


Xâu là gì?
Trả lời


Y/c HS khác nhận xét
Nhận xét


Chính xác hóa nội dung
Hình thành khái niệm Xâu
Y/c HS cho VD


Cho VD
Trả lời.


Xâu có bao nhiêu kí tự?
Dấu cách là 1 ký tự.


Y/c HS viết xâu có ký tự trống, xâu rỗng, nêu số lượng ký tự của
mỗi xâu.


Giới thiệu cách tham chiếu phần tử
Cho VD


Trả lời.


<b>Bài 12: KIỂU XÂU</b>
Khái niệm (SGK)



Ttự kiểu mảng


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

<b>Hoạt động của Giáo viên và Học sinh </b> <b>Nội dung</b>
- Hỏi: Ý nghĩa của từ String?


Trả lời


Độ dài lớn nhất của xâu là bao nhiêu
Trả lời


- Hãy nhắc lại các phép toán đã học trên kiểu dữ liệu chuẩn
Quan sát chương trình để dự tính kết qủa


- Chiếu chương trình VD


- Hỏi: Kết quả của chương trình in ra màn hình?
Thực hiện chương trình cho HS thấy kết quả
- Y/c HS tìm một số VD khác


- Hỏi: Chức năng của phép cộng


- Chiếu chương trình VD về phép so sánh và y/c HS cho biết
kết quả


Lưu ý cho HS


1. Khai báo (SGK)
2. Các thao tác xử lí xâu
Var st:string;



Begin


St:='A' + 'B';
Write(st);
Readln;
End.
VD:


'AB'<'ABC'
'AC'<'ABC'
Lưu ý:


Một xâu có độ dài nhỏ hơn có thể
lớn hơn (>) và ngược lại


c) Th
<i><b>HĐ4: Củng cố(5'):</b></i>


Nhắc lại những nội dung đã học:
- Khai báo biến


- Nhập xuất gá trị cho biến xâu
- Tham chiếu từng kí tự trong xâu.
- Phép ghép xâu.


- Các phép so sánh.


<i>HĐ5: Dặn dò (1')</i>



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

<i>Ngày soạn : 01/02/2010</i> <i>Ngày dạy :02/02/2010</i>


<i>Tiết PPCT : 27</i> <i> Tuần : 25</i>


<b>KIỂU XÂU(TT)</b>


<b> I: Mục tiêu:</b>


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


o Hiểu được lợi ích của các hàm và thủ tục liên quan đến xâu tring ngơn ngữ lập trình Pascal.


o Nắm được cấu trúc ching và chức năng của một số hàm liên quan đến xâu.
<i><b>2. Kỹ năng:</b></i>


o Bước đầu sử dụng được một số hàm, thủ tục thơng dụng về xâu.


o Có thể cài đặt được một số chương trình đơn giản có sử dụng xâu
<b>II. Chuẩn bị của GV và HS:</b>


- GV: Giáo án, SGK, sách GV, bảng phụ soạn các ví dụ.


- HS: Sách GK.
<b>III. Phương pháp:</b>


- Đặt vấn đề.


- Thuyết trình, vấn đáp.


- Diễn giải, dùng bảng để ghi lại các chi tiết quan trọng trong ví dụ
<b>IV. Tiến trình bài học.</b>



 <b>Hoạt động 1</b>:


- Tổ chúc lớp: Ổn định và kiểm tra sĩ số.
Các bước tiến hành:


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


<i><b>kiểm tra kiến thức cũ.</b></i>
- Gọi HS :


<i> Câu 1: </i>Xâu là gì? Cách khai báo biến xâu.
HS trả lời câu hỏi.


-GV nhận xét cho điểm.


<i>*</i><b>Giới thiệu bài mới</b>


<b>ĐVĐ: </b>Chúng ta đã biết xâu là gì? Và một số các phép toán
trên xâu. Bây giờ chung ta sẽ học về một số thủ tục chuẩn
dùng để xử lí xâu.


Chú ý quan sát trên bảng.


-Ứng với mỗi thủ tục và hàm giáo viên đưa ra một ví dụ minh
hoạ theo sgk.


- Xâu gồm một kí tự trống được viết như thế nào? số lượng kí
tự là bao nhiêu?



HS trả lời.


- Kí hiệu cảu xâu gồm 1 kí tự trống là ‘ ‘ xâu này có độ dài là
1.


- Tham số của các hàm và thủ tục chuẩn phải hợp lí, chẳng
hạng khơng thể dùng Insert( S1, S2, 12) khi length(S2)<12.
<b>Hoạt động 2: Rèn luyện kĩ năng vận dụng hàm và thủ tục.</b>
<b>ĐVĐ: </b>Bấy giờ chúng ta sẽ đi sâu hơn về các chức năng của
các hàm và thủ tục trong xâu.


Quan sát trên bảng


- Ý nghiã của hàm Length(b)?


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


<i>Một số thủ tục chuẩn dùng để sử lí xâu.</i>


- <b>Delete(St,vt,n)</b> Xố n kí tự của xâu
st bắt đầu từ vị trí vt.


- <b>Insert(S1,S2,vt)</b> Chèn xâu S1 vào
xâu S2 bắt đầu từ vị trí vt của S2.


- <b>Val(St,x,m) </b>Đổi giá trị xâu St
thành số ghi giá trị vào biến X, nến
không đổi được thì vị trí gây lỗi
ghi trong m, nếu đổi thành cơng thì
m = 0



- <b>Str(X,St) </b>Chuyển số X thành xâu
kí tự lưu trong St.


<i>Một số hàm chuẩn:</i>


- Copy(St, vt, n) Sao chép từ xâu St n kí
tự từ vị trí vt.


- Pos(S1, S2) Tìm vị trí xuất hiện đầu
tiên của S1 trong S2.


- Length(st) Cho độ dài của xâu St.
- Upcase(ch) Cho chữ cái viết hoa tưng
ứng với chữ thường trong ch


Bảng phụ chứa ví dụ 1
Ues crt;


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

<b>Hoạt động của thầy và trị</b> <b>Nội dung</b>
TL: Cho ra số lượng kí tự có trong sâu b.


Em nào có thể giải thích câu lệnh
For i:=k downto 1 do write([i]);


TL: Sử dụng vòng lặp For giá trị cuối downto giá trị đầu để
sau đó in ra các kí tự của chuỗi theo chiều ngược lại.


TL: cho thấy hàm length() có thể tham chiếu đến từng kí tự
cử một xâu thơng qua vị trí của nó.



Qua các ví dụ trên ta thấy điêù gì?


TL: Xâu b được tạo thành từ một xâu rỗng qua phép ghép
xâu.


Em có nhận xét gì về xâu b được tạo thành.
Quan sát trên bảng


Tương tự các em xem ví dụ 5


Clrscr;


Write(‘ nhap ho ten thu nhat: ‘);
Realn (a);


Write(‘ nhap ho ten thu hai: ‘);
Realn (b);


If length(a)>length(b) then
Write(a) else writer(b);
Realn


End.


Bảng phụ chứa ví dụ 2
Bảng phụ chứa ví dụ 3
Bảng phụ chứa ví dụ 4
Bảng phụ chứa ví dụ 5
<b>Hoạt động 3:</b>



<b>Củng cố: </b>


Nhắc lại một số hàm và thủ tục liên quan đến xâu.
Nhắc lại cấu trúc câu lệnh.


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

<i>Ngày soạn : 01/02/2010</i> <i>Ngày dạy :02/02/2010</i>


<i>Tiết PPCT : 28</i> <i> Tuần : 25</i>


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



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


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


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


-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.
<i><b>3.Thái độ:</b></i>


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
C.<b>CHUẨN BỊ:</b>



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


<b>D. TIẾN TRÌNH LÊN LỚP:</b>
I.<b>ỔN ĐỊNH LỚP</b>(1’):


II.<b>KIỂM TRA BÀI CŨ</b>(3’): Đưa bài toán lên máy chiếu như sau
Hãy cho biết quả của một số hàm và thủ tục chuẩn sau đây:


S=’THUC HANH TIN HOC’
S1=’BAI TAP’);


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


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


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


Hoạt động 1(20’)


(Tìm hiểu cách khai báo biến, sử dụng hàm và thủ
tục trong chương trình)


Ví dụ 1 : Nhập 1 xâu, kiểm tra xem ký tự đầu tiên


của xâu S1 có trùng với ký tự cuối cùng của xâu S2
hay khơng ?


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


VD 1 :


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 ;


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

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



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


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


VD 2 :


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


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


k := length(a) ;


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


Readln ;
End .
VD 3 :


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


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



k := length(a) ;
b :='' ;


For i := 1 to k do
if a[i] <> '' then
b := b+a[i] ;
Write(b) ;
Readln ;
End .
VD 4 :


Var s1,s2 : String ;
i : Byte ;


Begin


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


s2 := '' ;


For i := 1 to length(s1) do


If ('0'<s1[i]) and (s1[i]<='9') then
s2 := s2 + s1[i] ;


Write(s2);
Readln ;
End .



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


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


Var S : String ;
i : Byte ;
Begin


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

Gv:Yêu cầu hs kiểm tra với một số bộ dữ liệu được
nhập vào từ bàn phím và giải thích từng câu lệnh ở
trong 4 ví dụ.


Hoạt động 2(17’)


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


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


Hs:Hàm Upcase(ch)
Gv:


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


Hs:Thực hành trên máy rồi trả lời câu hỏi


For i:=1 To Length(S) Do


Write(Upcase(S[i]);


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


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


Hs:Thực hành trên máy->Trả lời câu hỏi
Dem:=0;


For i:=1 To length(S) Do


If (S[i]>=’0’) and (S[i] <=’9’) Then
Dem:=Dem+1;


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


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


Hs:


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)



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


Readln(S) ;


For i:=1 To Length(S) Do
Write(Upcase(S[i]);
Readln;


End.


Bài2:Hãy viết chương trình nhập vào một xâu bất
kỳ (có cả ký tự và ký tự số) và đưa ra màn hình
có bao nhiêu ký tự là số?


Ví dụ:


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


IV.CỦNG CỐ(2’):


- Nhận xét buổi thực hành=>đưa ra một số lổi thường gặp khi thực hành.
- Cần nắm cách khai báo biến xâu, các hàm và thủ tục xử lý xâu,...
V.DẶN DỊ(1’): Đưa lên màn hình máy chiếu như sau:


-Tiết sau học tiết: Tiết 32: Bài tập và Thực hành 5(t2)
-Bài tập về nhà: 10,11/79(SGK)


- Xem và đọc trả lời các câu hỏi sau:


1.Hãy viết chương trình nhập vào từ bàn phím xâu S và đếm xâu S có bao nhiêu dấu cách?


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

<i>Ngày soạn : 21/02/2010</i> <i>Ngày dạy :23/02/2010</i>


<i>Tiết PPCT : 29</i> <i> Tuần : 26</i>


<i><b>BÀI TẬP VÀ THỰC HÀNH 5(Tiết 1)</b></i>



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


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



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


-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.
<i><b>3.Thái độ: Tích cực vàc chủ động trong thực hành.</b></i>


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


<i>1.</i> Giáo viên: Giáo án, SGK, máy chiếu.


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


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


II.<b>KIỂM TRA BÀI CŨ</b>(3’): Đưa bài toán lên máy chiếu như sau
Hãy cho biết quả của một số hàm và thủ tục chuẩn sau đây:


S=’THUC HANH TIN HOC’
S1=’BAI TAP’);


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


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


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


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


<b>(Tìm hiểu cách khai báo biến, sử dụng hàm và thủ</b>
<b>tục trong chương trình)</b>


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


Hs: Soạn thảo từng ví dụ vào máy và tìm hiểu cách
sử dụng biến, hàm và thủ tục...


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


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



VD 1 :


Var s1,s2 : String ;
x : Byte ;


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

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


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


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


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


Write('Nhap xau thu 2 : ');
Readln(s2) ;


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


Write('Khac nhau');
Readln ;


End .
VD 2 :



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


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


k := length(a) ;


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


Readln ;
End .
VD 3 :


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


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


k := length(a) ;
b :='' ;


For i := 1 to k do
if a[i] <> '' then
b := b+a[i] ;


Write(b) ;
Readln ;
End .
VD 4 :


Var s1,s2 : String ;
i : Byte ;


Begin


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


s2 := '' ;


For i := 1 to length(s1) do


If ('0'<s1[i]) and (s1[i]<='9') then
s2 := s2 + s1[i] ;


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

Gv: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>
Gv:Đưa câu hỏi lên máy chiếu


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


hoa?


Hs:Hàm Upcase(ch)
Gv:


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


Hs:Thực hành trên máy rồi trả lời câu hỏi
For i:=1 To Length(S) Do


Write(Upcase(S[i]);


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


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


Hs:Thực hành trên máy->Trả lời câu hỏi
Dem:=0;


For i:=1 To length(S) Do


If (S[i]>=’0’) and (S[i] <=’9’) Then
Dem:=Dem+1;


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


Ngồi cách viết thuật tốn như trê ta cịn có cách viết


nào khác nửa?


Hs:


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


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


Readln ;
End .


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


Var S : String ;
i : Byte ;
Begin


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


For i:=1 To Length(S) Do
Write(Upcase(S[i]);
Readln;



End.


Bài2:Hãy viết chương trình nhập vào một xâu bất
kỳ (có cả ký tự và ký tự số) và đưa ra màn hình
có bao nhiêu ký tự là số?


Ví dụ:


S=’08bC156546CD’ =>Dem=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.
IV.CỦNG CỐ(2’):


- Nhận xét buổi thực hành=>đưa ra một số lổi thường gặp khi thực hành.


- Cần nắm cách khai báo biến xâu, các hàm và thủ tục xử lý xâu,...
V.DẶN DÒ(1’): Đưa lên màn hình máy chiếu như sau:


-Tiết sau học tiết: Tiết 32: Bài tập và Thực hành 5(t2)
-Bài tập về nhà: 10,11/79(SGK)


- Xem và đọc trả lời các câu hỏi sau:


1.Hãy viết chương trình nhập vào từ bàn phím xâu S và đếm xâu S có bao nhiêu dấu cách?


2.Hãy viết chương trình nhập từ bàn phím xâu S và tách một xâu con từ xâu S bắt đầu từ vị trí 5 và
lấy 7 ký tự?


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

<i>Tiết PPCT : 30</i> <i> Tuần : 26</i>


<b>BÀI TẬP VÀ THỰC HÀNH 5 (Tiết 2)</b>


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


1.Kiến thức:


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


-Khai báo biến kiểu xâu.


- Nhập, xuất giá trị cho biến xâu.
- Duyệt qua tất cả các ký tự của xâu.
- Sử dụng được các hàm và thủ tục chuẩn.


3.Thái độ:


- 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
C.<b>CHUẨN BỊ:</b>


<i>3.</i> Giáo viên: Giáo án, SGK, máy chiếu.


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


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


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


Hãy nêu cú pháp và ý nghĩa các hàm và thủ tục cơ bản xử lý xâu? Mỗi thủ tục hoặc hàm lấy một ví dụ?
a.<b>Đặ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 hàm và</b>
<b>thủ tục trong chương trình)</b>


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


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


Gv: Quan sát Hs gõ chương trình và đưa ra câu
hỏi thảo luận như sau:


Với hai bộ test trên thì kết quả xuất ra màn hình
như thế nào?


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


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


Nhập vào từ bàn phím một xâu. Kiểm tra xâu đó
có phải là xâu đối xứng hay khơng. Xâu đối xứng có
tính chất: đọc nó từ phải sang trái cũng thu được kết
quả giống như đọc từ trái sang phải (Còn gọi xâu là
palindrome).


a.Hãy chạy thử chương trình sau:
Var



i,x:Byte;
a,p:String;
Begin


Write(‘Nhap xau a=’); Readln(a);
P:=’’;


For i:=length(a) Downto 1 Do p:=p+a[i];
If a=p Then Write(‘Xau là palindrome)
Else Write(‘Xau khong phai la palindrome);
Readln;


End.


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

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


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


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


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


-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>
Gv:Đưa câu hỏi lên máy chiếu


S=’AbaCDacd’


Hãy cho biết số lần xuất hiện của mỗi chữ cái
tiếng Anh trong S ( không phân biệt chữ hoa hay
chữ thường)?


Hs:Đếm rồi trả lời.


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


Input:Nhập xâu S


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


Gv:



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


Hs:Gồm có 26 chữ cái
Gv:Hướng dẫn


Dem[A]:=0;
Dem[B:=0; …
Dem[Z=0;


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


Hs:Sử dụng câu lệnh For


Gv: Hãy viết đoạn chương trình đếm số lần xuất
hiện chữ cái trong tiếng Anh?


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


S[i]:=upcase(S[i]);


dùng biến xâu p?
Var


i,x:Byte;
a,p:String;
Kt:Boolean;


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.


II.Vận dụng kiểu dữ liệu xâu để lập trình:


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


Input:Nhập xâu S


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

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


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



Var


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


i:...;
ch:...;
Begin


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;


End.


Hãy viết chương trình đầy đủ và chạy thử
chương trình để để tra xem kết quả đúng?


Hs:Thảo luận theo nhóm để điền và chạy chương


trình rồi báo cáo kết quả.


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


Var


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


i:Byte;
ch:char;
Begin


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;



End.


<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 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à:


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

<i>Ngày soạn : 28/02/2010</i> <i>Ngày dạy :01/03/2010</i>


<i>Tiết PPCT : 31</i> <i> Tuần : 27</i>


<b>KIỂU BẢN GHI ( Tiết ½) </b>


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


1.Kiến thức:


- Biết được khái niệm về kiểu bảng ghi


- Biết cách khai báo bản ghi, truy xuất trường của bản ghi.


- Phân biệt sự giống nhau và khác nhau giữa kiểu bản ghi với mảng một chiều.
2.Kỹ năng:



- Khai báo được kiểu bản ghi, khai báo được biến kiểu bản ghi trong NNLT Pascal.
- Nhập xuất dữ liệu cho biến bản ghi


- Tham chiếu đến từng trường của kiểu bản ghi.
- Sử dụng kiểu bản ghi để giải quyết một số bài toán.


3.Thái độ:Tiếp tục rèn luyện các phẩm chất cần thiết của nguời lập trình như: ý thức chọn và xây dựng
kiểu dữ liệu, ý thức rèn luyện kỹ năng,...


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


<i>5.</i> Giáo viên: Giáo án, SGK, máy chiếu.


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


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


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


a.Đặt vấn đề(2’): Đưa lên máy chiếu về bài toán cần giải quyết như sau:
Viết chương trình dùng để quản lí các thí sinh của một kỳ thi tuyển sinh .


- Làm thế nào để quản lý tồn bộ thơng tin trên của học sinh ?


- Mỗi thơng tin trên có kiểu dữ liệu là gì ?


HS : Có thể quản lý mỗi dữ kiện trên là một mảng một chiều



=>Ngôn ngữ lập trình bậc cao có cách tốt hơn để quản lý dữ liệu trên -> Bản ghi .


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


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


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


Gv:


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


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


Đưa lên máy chiếu các thuộc tính về bảng ghi.
Hoạt động 2(15’)



(Khai báo biến bảng ghi)


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


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


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

nhau


-Ngôn ngữ Pascal không cho bạn khai báo biến bản
ghi trực tiếp mà phải khai báo biến bản ghi thông qua khai
báo kiểu bản ghi .



-Trước hết phải khai báo kiểu bản ghi sau đó biến bản
ghi được khai báo thông qua kiểu bản ghi này .


GV : Làm thế nào để có thể khai báo được nhiều biến bản
ghi có cùng một kiểu ?


HS : GV sẽ gợi ý để học sinh đưa ra đó là sử dụng kiểu
mảng trong đó phần tử mảng sẽ có kiểu bản ghi.


Gv:Ví dụ về khai báo bản ghi .


+Khai báo một kiểu bản ghi để xử lý bảng kết quả thi
của các học sinh .


Mỗi bản ghi sẽ bao gồm : Họ và tên của học sinh
(Hoten), ngày tháng năm sinh(Ngaysinh), Giới tính
(NamNu), và điểm thi các môn của mỗi học sinh (Toan,
Ly, Hoa, Van, Su, Dia,Tin) .


Hãy xác định kiểu dữ liệu cho các trường trên (Mỗi nội
dung trên là một trường của bản ghi)?


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


GV : Khi có nhu cầu thay đổi thông tin trong từng trường,
làm thế nào để truy cập thông tin vào từng trường của bản
ghi ?


Hs:Mỗi ngơn ngữ có một cách truy cập khác nhau nhưng
thường được viết là :



<Tên biến bản ghi>.<tên trường>
GV: Đưa ra một số ví dụ .


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


Gv: Dựa vào cách khai báo biến bản ghi ở trên hãy
cho biết cách gán A:=B hoặc B:=A đúng hay sai?
Hs:A, B cùng kiểu nên gán cho nhau đúng


Gv:Giới thiệu và đưa lên máy chiếu về nội dung gán.


<Tên biến bản ghi> . <Tên trường>
<b>II.Khai báo biến bảng ghi:</b>


1.Cách khai báo kiểu :


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


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


<Tên mảng> : Array[1..n] Of <Tên kiểu bản ghi> ;
2.Ví dụ:



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 ;


- Gán giá trị cho từng trường . Dùng câu lệnh gán
gán giá trị cho các trường hoặc nhập từ bàn phím .
A.Hoten := ‘Nguyen Van Tuan’ ;


Readln(a.Ngaysinh);


Chương trình xử lý bảng kết quả thi.
<b>IV.CỦNG CỐ(8'):</b>


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

<i>Ngày soạn : 28/02/2010</i> <i>Ngày dạy :01/03/2010</i>


<i>Tiết PPCT : 32</i> <i> Tuần : 27</i>


<b>KIỂU BẢN GHI ( Tiết 2/2 ) </b>


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


1.Kiến thức:


- Ơ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 tốn: Nhập và thơng báo kết quả các trường, sắp xếp dữ liệu.
2.Kỹ năng:


- Khai báo được kiểu bản ghi trong NNLT Pascal.
- Nhập xuất dữ liệu cho biến bản ghi


- Tham chiếu đến từng trường của kiểu bản ghi.


- Sử dụng kiểu bản ghi để giải quyết một số bài toán.


3.Thái độ:Tiếp tục rèn luyện các phẩm chất cần thiết của nguời lập trình như: ý thức chọn và xây dựng
kiểu dữ liệu, ý thức rèn luyện kỹ năng,...


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


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


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


I.<b>ỔN ĐỊNH LỚP</b>(1’):
II.<b>KIỂM TRA BÀI CŨ</b>(5'):


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ẢNG ĐIỂM TRUNG BÌNH NĂM HOC 2007-2008


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


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


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


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


Hoạt động 1(10’)


(Giới thiệu cách truy xuất đến trường)
Gv:


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


Hs:Đọc đề bài kết hợp với ví dụ trong SGK để sửa lại
chương trình


Gv:


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


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


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.


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

-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 tốn.


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


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


Hãy nêu cách tổ chức dữ liệu cho bài tập 2?
Hs:Lên bảng viết cách khai báo biến bản ghi
Gv: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


+Nhóm 4:Xuất kết quả theo bảng như sau:


TT Họ tên DHK1 DHK2 DCN XL



1
2
...
n


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


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


If lop[i].xeploai='A' Then
Begin
Write(i:4);
Write(Lop[i].ten:30);
Write(Lop[i].Xeploai);
Writeln;
End;


Bài tập 2/145(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.


c.Thông báo theo bảng sau theo thứ tự sắp xếp
cột điểm TBCN


TT Họ tên DHK1 DHK2 DCN XL


1
2
...
n


*Chương trình:
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;


{Tinh TB Ca nam va Xep loai}
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';


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

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;


{Thong bao ket qua nhu sau}


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:
- 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'>(81)</span><div class='page_container' data-page=81>

<i>Tiết PPCT : 33</i> <i> Tuần : 28</i>


<i><b>BÀI TẬP (T1)</b></i>



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



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


- Ơ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 tốn: Nhập và thơng báo kết quả các trường, sắp xếp dữ liệu.


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


- Khai báo được kiểu bản ghi trong NNLT Pascal.
- Nhập xuất dữ liệu cho biến bản ghi


- Tham chiếu đến từng trường của kiểu bản ghi.
- Sử dụng kiểu bản ghi để giải quyết một số bài toán.


<i>3.Thái độ:</i>Tiếp tục rèn luyện các phẩm chất cần thiết của nguời lập trình như: ý thức chọn và xây dựng
kiểu dữ liệu, ý thức rèn luyện kỹ năng,...


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


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


<i>10. Học sinh: Chuẩn bị bài ở nhà.</i>


<i><b>D. TIẾN TRÌNH LÊN LỚP:</b></i>
<i><b> I.ỔN ĐỊNH LỚP(1’): </b></i>
<i><b> II.KIỂM TRA BÀI CŨ(5'):</b> </i>


<i>1.Hãy nêu cú pháp về khai báo biến bản ghi?</i>


<i>2.Hãy khai báo biến bản ghi của ví dụ sau:</i>


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


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


<i>1</i>
<i>...</i>
<i>n</i>
<i>III.BÀI MỚI:</i>


<i><b>a.Đặt vấn đề(1’): </b></i>


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.


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


<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>
Gv:


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


Hs:Đọc đề bài kết hợp với ví dụ trong SGK để sửa lại
chương trình


Gv:


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


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


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.


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

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


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


Hãy nêu cách tổ chức dữ liệu cho bài tập 2?
Hs:Lên bảng viết cách khai báo biến bản ghi


Gv: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


+Nhóm 4:Xuất kết quả theo bảng như sau:


TT Họ tên DHK1 DHK2 DCN XL


1
2
...
n


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


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


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


Write(i:4);


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


End;


Bài tập 2/145(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.


c.Thông báo theo bảng sau theo thứ tự sắp xếp
cột điểm TBCN


TT Họ tên DHK1 DHK2 DCN XL


1


2
...
n


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


<i> DHK1,DHK2,TBCN:Real;</i>
<i> Xeploai:String[5];</i>


<i> End;</i>


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


<i> Tg:Bdiem;</i>
<i>Begin</i>


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


<i> With Hs[i] Do</i>
<i> Begin</i>


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

<i> Write('NhapTBKT2',i); Readln(DHK2);</i>
<i> End;</i>


<i>{Tinh TB Ca nam va Xep loai}</i>
<i>For i:=1 To n Do</i>



<i> Hs[i].TBCN:=(Hs[i].DHK1+Hs[i].DHK2*2)/3;</i>
<i>For i:=1 To n Do</i>


<i> With Hs[i] Do</i>
<i> Begin</i>


<i> If TBCN>=8.0 Then Xeploai:='Gioi';</i>


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


<i> End;</i>


<i>For i:=1 to n-1 Do</i>
<i> For j:=i+1 to n Do</i>


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


<i> tg:=Hs[i];</i>
<i> Hs[i]:=Hs[j];</i>
<i> Hs[j]:=tg;</i>
<i> End;</i>


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


<i>Writeln('...');</i>



<i>Writeln('| TT |','| Ho ten |','| TBCN |','| xeploai |');</i>
<i>Writeln('...');</i>


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


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


<i>End.</i>


<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 toán: Sắp xếp, tính tốn


<b>V.DẶN DỊ(1’</b><i>): </i>Đưa lên màn hình máy chiếu như sau:
- 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'>(84)</span><div class='page_container' data-page=84>

<i>Tiết PPCT : 34</i> <i> Tuần : 28</i>

<b>BÀI T</b>

<b>Ậ</b>

<b>P THỰC HÀNH (T2)</b>


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


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


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


<i><b>2. kĩ năng:</b></i>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.


<i><b>3. Thái độ :</b></i>nghiêm túc, hứng thú với môn học.
<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, 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
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


<i>Đề mục</i> <i>Biết</i> <i>Hiểu</i> <i>Áp dụng</i>


<i>Kiểu mảng</i> <i>1.Mảng một chiều</i>


<i>- khái niệm: dãy hữu hạn các</i>
<i>phần tử cùng kiểu.</i>


<i>- Các quy tắc xác định kiểu</i>
<i>mảng 1 chiều</i>


<i>- Khai báo mảng 1 chiều</i>
<i>- tham chiếu đến phần tử thứ</i>
<i>i của mảng 1 chiều.</i>


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


<i>- cách xác định kiểu dữ liệu</i>
<i>là kiểu mảng 2 chiều</i>



<i>- cách khai báo </i>


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


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


<i>biết cách khai báo kiểu dữ liệu</i>
<i>mảng một chiều.</i>


<i>Nhập, in và truy xuất các phần</i>
<i>tử mảng 1 chiều</i>


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


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


<i>Khai báo kiểu mảng 1</i>
<i>chiều và mảng 2 chiều để</i>
<i>giải quyết một số bài tập.</i>
<i>Cài đặt được một số thuật</i>
<i>toán liên quan đến kiểu</i>
<i>dữ liệu là kiểu mảng.</i>


<i>Kiểu Xâu </i> <i>Khái niệm xâu là dãy kí tự</i>
<i>trong bảng mã ASCII. Mỗi kí</i>
<i>tự là một phần tử của xâu. </i>


<i>- Cách xác định kiểu dữ liệu</i>
<i>là kiểu xâu</i>


<i>- Khai báo biến kiểu xâu</i>
<i>- Các thao tác xử lý trên xâu</i>
<i>- Các hàm và thủ tục trên</i>


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


<i>Cách khai báo biến kiểu xâu.</i>
<i>Phép gán xâu và so sánh xâu.</i>
<i>Hiểu được ý nghĩa của các</i>
<i>hàm được sử dụng trên kiểu</i>
<i>xâu.</i>


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

<i>xâu</i>
<i>Kiểu bản</i>


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


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


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



<i>- Tham chiếu đến các trường</i>
<i>của bản ghi.</i>


<i>- Khai báo biến kiểu bản ghi.</i>
<i>- Phép gán giá trị của kiểu</i>
<i>bản ghi.</i>


<i>Khái niệm kiểu bản ghi.</i>


<i>Khai báo được kiểu dữ liệu là</i>
<i>kiểu bản ghi.</i>


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


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


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


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


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


Bài tập: 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


<i>V. Củng cố và dặn dị</i>


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

<i>Ngày soạn :14/03/2010</i> <i>Ngày dạy :15/03/2010</i>


<i>Tiết PPCT : 35</i> <i> Tuần : 29</i>


<i><b>BÀI TẬP CHƯƠNG IV.</b></i>



<i><b>I. Mục tiêu:</b></i>


<i><b>1. Về kiến thức:</b> Củng cố các kiến thức về:</i>


- Các quy tắc kiểu dữ liệu có cấu trúc để thực hiện dữ liệu thực tế.


- Kiểu dữ liệu có cấu trúc được xây dựng từ những kiểu dữ liệu cơ sở theo một số cách thức tạo
kiểu do ngơn ngữ lập trình Pascal quy định.


- Mỗi kiểu dữ liệu có cấu trúc thường hữu ích trong việc giải quyết một số bài tập.
- Trong ngôn ngữ Pascal dùng mô tả kiểu dữ liệu mới với từ khoá Type.


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



- Rèn luyện kĩ năng khai báo kiểu dữ liệu có cấu trúc (với Pascal, sử dụng thành thạo các từ khoá
Var, Type).


- Sử dụng thành thạo các thao tác vào/ ra và các phép toán trên các thành phần cơ sở.
<i><b>3. Về tư duy và thái độ:</b></i>


- Thái độ học tập tích cực, ham thích lập trình.


- Tiếp tục hình thành và xây dựng phẩm chất cần thiết của người lập trình.
II. Chuẩn bị:


- GV: Computer, Projecter.
- HS: Chuẩn bị bài tập về nhà.
III. Phương pháp:


<i>- Nêu vấn đề, Dẫn dắt, gợi ý...</i>


<i><b>IV. Tiến trình hoạt động:</b></i>


<i>Tiết 1:</i>


+ Hoạt động 1: Giải bài tập số 6 trang 79 Sách GK Tin học lớp 11


<b>Hoạt động của GV và HS</b> <b>Ghi bảng</b>


HĐTP1:


H1: Sử dụng kiểu dữ liệu nào và cách khai báo?
- Trả lời:



Kiểu mảng một chiều:


Var A:array [1..100] of integer;
H2: Khai báo biến như thế nào?


- Yêu cầu HS viết chương trình nhập mảng A.
- Chỉnh sửa bài làm của HS.


H3: Số chẵn là số như thế nào?


- Nếu có số lượng số chẵn trong dãy thì tìm số lượng số
lẻ được hay khơng? - Nếu được thì tìm bằng cách nào?
H4: Sử dụng câu lệnh nào để viết?


- u cầu HS hồn thành chương trình của câu a.
- Nhận xét, chỉnh sửa bài làm của HS.


- Nếu có số lượng số chẵn trong dãy thì tìm số lượng lẻ
bằng cách: n - số lượng số chẵn.


TL: If ... then...
HĐTP 2:


H1: Nêu thuật toán kiểm tra 1 số có phải là số ngun tố
hay khơng?


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

<b>Hoạt động của GV và HS</b> <b>Ghi bảng</b>
- Yêu cầu HS viết chương trình dựa theo thuật tốn.



Hd: Sử dụng câu lệnh nào?


- u cầu HS hồn thành đoạn chương trình câu b.
- Nhận xét, đánh giá:


- Gợi ý để HS kết hợp hai đoạn chương trình thành một
chương trình hồn chỉnh cho cả bài.


+ Hoạt động 2: Giải bài tập 7 trang 79 Sách GK Tin học lớp 11


<b>Hoạt động của GV và HS</b> <b>Ghi bảng</b>


- Yêu cầu HS liệt kê 6 số hạng đầu của dãy Fiponaci.
- Liệt kê: 0, 1, 1, 2, 3, 5.


H1: Đoạn chương trình nhập từ bàn phím số nguyện
dương như thế nào?


H2: Số hạng tổng quát thứ n như thế nào?
TL: Fn = Fn-1 + Fn-2


- Gợi ý: Để viết chương trình này ta cần bao nhiêu
biến phụ?


H3: sử dụng câu lệnh nào trong bài này?
TL: Dùng 2 biến phụ (F1, F2)


- Yêu cầu HS viết chương trình tìm số hạng thứ n.
- Gọi 1 HS hồn chỉnh lại chương trình.



- Nhận xét, chỉnh sửa, đánh giá bài làm.


Chính xác hố bài 6/trang79.


+ Hoạt động 3: Củng cố (2ph)


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

<i>Ngày soạn :14/03/2010</i> <i>Ngày dạy :15/03/2010</i>


<i>Tiết PPCT : 36</i> <i> Tuần : 29</i>


<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.
<b>III. Nội dung bài học</b>


1. Ổn định lớp học
<b>2. Đề kiểm tra</b>
<b>Phần 1: trắc nghiệm</b>


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


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

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ì
<b>Phần 2: Tự luận</b>


Để 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'>(90)</span><div class='page_container' data-page=90>

<i>Ngày soạn :21/03/2010</i> <i>Ngày dạy :23/03/2010</i>


<i>Tiết PPCT : 37</i> <i> Tuần : 30</i>


<b>CHƯƠNG V : TỆP VÀ THAO TÁC VỚI TỆP</b>


<b>§ 14 KIỂU DỮ LIỆU TIỆP</b>



<b>§ 15 THAO TÁC VỚI TỆP</b>






<b>I. Mục tiêu</b>
<i><b>1. Về kiến thức: </b></i>


- Biết khái niệm về kiểu dữ liệu tệp.


- Biết khái niệm tệp định kiểu và tệp văn bản.
- Biết các lệnh khai báo tệp kiểu và tệp văn bản.


- Biết các bước làm việc ví i tệp: gán tên cho biến tệp, mở tệp, đọc/ghi tệp, đóng tệp.
- Biết một số hàm và thủ tục chuẩn làm việc ví i tệp.


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


- Khai báo đúng tên tệp.


- Sử dụng một số hàm và thủ tục chuẩn làm việc ví i tệp.


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


- Ham thích mơn học, có tính kỷ luật cao và tính thần làm việc theo nhóm.



- Tiếp tục rèn luyện các phẩm chất cần thiết của người lập trình như: xem xét vấn đề một cách cẩn
thận, chu đáo, sáng tạo, khơng thỏa mãn ví i các kết quả ban đầu đạt được,…


<b>II. Phương pháp, phương tiện dạy học</b>
- Phương pháp: thuyết trình, vấn đáp
- Phương tiện: máy chiếu, máy tính.
<b>III. Tiến trình bài dạy</b>


1. Kiểm tra bài cũ:


Có pháp khai báo biến kiểu xâu, mảng 1 chiều, 2 chiều?


Những kiểu dữ liệu này được lưu trữ ở RAM, khi tắt máy thì sao?
2. Giảng bài mới:


<b>HOẠT ĐỘNG GV & HS</b> <b>NỘI DUNG</b>


-Kiểu dữ liệu mảng có giá trị là một dãy hữu hạn các dữ liệu
cùng kiểu. Số phần tử của mảng được hoàn toàn xác định khi
khai báo mảng.Trong nhiều bài toán, cần phải lưu giữ dữ liệu
để sử dụng trong nhiều lần thực hiện chương trình hoặc xử lí
một số lượng khơng xác định các dữ liệu cùng kiểu. Ví i
những bài nêu như vậy phải sử dụng kiểu dữ liệu tệp.


- Học sinh chú ý lắng nghe


- Kiểu dữ liệu tệp có những đặc điểm nào khác so ví i các
kiểu dữ liệu đã biết.



-Dựa vào đâu để phân loại tệp, có mấy loại tệp ?


-Khai báo tệp văn bản theo có pháp nào? Cho ví dụ
- Cho biết các thao tác cơ bản liên quan đến tệp văn bản


§ 14 KIỂU DỮ LIỆU TIỆP
1/ Vai trò của tệp


Tệp là dãy các dữ liệu cùng kiểu, có
các đặc điểm sau:


- Dữ liệu kiểu tệp được lưu trữ lâu
dài ở bộ nhớ ngoài (đĩa từ, CD, ...) và
không bị mất khi tắt nguồn điện.


- Lượng thông tin lưu trữ trên tệp có
thể rất lớn và chỉ phụ thuộc vào dung
lượng đĩa.


2/ Phân loại tệp


* Xét theo tổ chức dữ liệu có 2 loại:
- 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.


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

-Đó là theo tác gắn tên tập


-Trong các thao tác đó thao tác nào ln phải có khi theo tác
ví i tệp?



-Ý nghĩa của hàm eof, eoln ?


* Xét theo cách thức truy cập, có 2
loại:


- Tệp truy cập tuần tự
- Tệp truy cập trực tiếp
3/ Thao tác ví i tệp văn bản
a) Khai báo


Var <tên biến tệp>: text
Ví du:


Var tep1,tep2: text;
b) Thao tác ví i tệp


* Gắn tên tệp:


Assign(<biến tệp>,<tên tệp>);
* Mở tệp mới


Rewrite(<biến tệp>);
* Mở tệp đã có


Reset(<biến tệp>);
* Ghi dữ liệu vào tệp


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



Writeln(<biến tệp>,<danh sách kết quả>);
* Đọc tệp


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


Readln(<biến tệp>,<danh sách biến>);
* Đóng tệp


Close(<biến tệp>);
* Hàm EOF, EOLN


Eof(<biến tệp>) có giá trị true nếu con
trỏ tệp đang ở cuối tệp.


Eoln(<biến tệp>) có giá trị true nếu con
trỏ tệp đang ở cuối dòng.


3. <b>Củng cố:</b>


Nhắc lại các thao tác trên tệp văn bản?
4. <b>Dặn dò:</b>


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

<i>Ngày soạn :21/03/2010</i> <i>Ngày dạy :23/03/2010</i>


<i>Tiết PPCT : 38</i> <i> Tuần : 30</i>


<b>§ </b>

<b>16 : VÍ DỤ LÀM QUEN VỚI TỆP</b>








<b>I. Mục tiêu</b>
<i>1. Về kiến thức: </i>


- Biết khái niệm về kiểu dữ liệu tệp.


- Biết khái niệm tệp định kiểu và tệp văn bản.
- Biết các lệnh khai báo tệp kiểu và tệp văn bản.


- Biết các bước làm việc ví i tệp: gán tên cho biến tệp, mở tệp, đọc/ghi tệp, đóng tệp.
- Biết một số hàm và thủ tục chuẩn làm việc ví i tệp.


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


- Khai báo đúng tên tệp.


- Sử dụng một số hàm và thủ tục chuẩn làm việc ví i tệp.
- Viết được chương trình đơn giản thao tác ví i tệp văn bản.


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


- Ham thích mơn học, có tính kỷ luật cao và tính thần làm việc theo nhóm.


- Tiếp tục rèn luyện các phẩm chất cần thiết của người lập trình như: xem xét vấn đề một cách cẩn
thận, chu đáo, sáng tạo, không thỏa mãn ví i các kết quả ban đầu đạt được,…


<i><b>II. Phương pháp, phương tiện dạy học</b></i>
- Phương pháp: thuyết trình, vấn đáp
- Phương tiện: máy chiếu, máy tính.


<b>III. Tiến trình bài dạy</b>


<b> 1. Kiểm tra bài cũ: </b>


Khai báo biến tệp văn bản? Cho ví dụ? Các thao tác trên tệp văn bản?
<b> 2. Giảng bài mới:</b>


<b>HOẠT ĐỘNG GV & HS</b> <b>NỘI DUNG</b>


-Yêu cầu học sinh xem đề bài và chương trình trong
SGK.


-Theo em tại sao phải sử dụng lệnh while để đọc nội dung
tệp?


-Hoàn chỉnh câu trả lời của học sinh.


-Khi đi thực hành ở phịng máy có thực hành được ví dụ
1 không? Lý do?


-Chúng ta không thể chạy chương trình này được vì
khơng có tệp TRAI.TXT


-Giải thích cho học sinh hiểu các lệnh đã được sử dụng
trong chương trình.


-Ở ví dụ 2 có mấy biến kiểu tệp
-Có hai biến kiểu tệp là f1,f2


- Giải thích cho học sinh cách lệnh và biểu thức sử dụng


trong chương trình.


- Theo em ý nghĩa của lệnh writeln(f2) là gì?


Ví dụ 1: (SGK TH11 Tr.87)
Program 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);


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


Colse(f);
End.


Ví dụ 2: (SGK TH11 Tr.88)
Program Dientro;



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

i:integer;
Begin


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


Assign(f,’RESIST.EQU’);
Reset(f2);


While not eof(f1) do
Begin


Read(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;



Colse(f1); close(f2);
End.


<b>3. Củng cố: </b>


Để đọc toàn bộ nội dung ta phải sử dụng lệnh nào?
<b>4. Dặn dò: </b>


+ Xem lại bài


+ Chuẩn bị bài tập trang 89.


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

<i>Tiết PPCT : 39</i> <i> Tuần : 31</i>

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


<b>A. MỤC TIÊU</b>


<i>1. Kiến thức:</i> Củng cố lại cho học sinh các kiến thức cơ bản của chương


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


 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 toá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
<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ộ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)
II. Kiểm tra bài cũ
III. Bài mới.
1. Đặt vấn đề


2. Triển khai bài mới


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


<b>Hoạt động 1: Làm bài tập 1 (Bài tập về nhà)</b>


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á, hoà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.


<b>Hoạt động 2:</b> 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à hoà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-}


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

{$I+}


FileExists := (IOResult=0);
end;


Begin


Write('Nhap ten File can doc: '); readln(tep);
if FileExists(tep) then


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.
<b>IV. Củng cố </b>


<b>V. Dặn dò (1p)</b>


- Nghiên cứu trước nội dung bài 17: ‘Chương trình con và phân loại’.
<b>VI. Rút kinh nghiệm:</b>


...
...
...
...
...


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

<i>Tiết PPCT : 39</i> <i> Tuần : 31</i>


<b>Bài 16: CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI(t1/3)</b>



<b>A. MỤC TIÊU</b>
<i>1. Kiến thức:</i>


 Biết được khái niệm chương trình con, ý 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; 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.
<i>2. Kỹ năng: </i>


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


<i>3. Thái độ: </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)



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


<i>1. Đặt vấn đề (1p)</i>


- 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


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


Hoạt động 1: Tiết 39( Hoạt động nhóm)


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<sub>+ b</sub>m<sub> + c</sub>p<sub> + d</sub>q<sub>,</sub>


đã được giao nhiệm vụ về 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.


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


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

HS: Đối với các bài toán lớn, cần nhiều 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. Yê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;
Hoạt động 2: Tiết 40( 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.


GV: Diễn giảng.


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


- Để thực hiện chương trình con ta cần có lệnh gọi nó
tương tự lệnh gọi hàm hay thủ tục chuẩn, bao gồm tên
chương trình con và các tham số (nếu có) là các hằng
và biến chứa các dữ liệu vào/ra tương ứng với các
tham số hình thức đặt trong cặp ngoặc. Các hằng và
biến này được gọi là tham số thực sự.


<b>IV. Củng cố (5p)</b>


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


<b>V. Dặn dò (1p)</b>


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

Ngày soạn: / /2010


Tiết 40


Ngày giảng:


Lớp 11A: . . . /. . . /. . . / (sĩ số:. . ./ . . . ) Lớp 11B: . . . /. . . /. . . / (sĩ số:. . ./ . . . )


Lớp 11C: . . . /. . . /. . . / (sĩ số:. . ./ . . . ) Lớp 11D: . . . /. . . /. . .
/ (sĩ số:. . ./ . . . )


Lớp 11E: . . . /. . . /. . . / (sĩ số:. . ./ . . . )
Bài 18: VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON (T1)
A. MỤC TIÊU


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.


- Phân biệt được sự khác nhau cơ bản giữa hàm và thủ tục.
- 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, 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. PHƯƠNG PHÁP


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

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


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: 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 tố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
chương trình?


HS: Trong phần thân của chương trình.


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


- Dãy câu lệnh được viết giữa cặp tên dành riêng
Begin và End tạo thành thân thủ tục.



Hoạt động 2: (Theo từng nhóm) (10p)
GV: Chiếu ví dụ 2, yê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


b. Ví dụ về thủ tục
* Ví dụ 1;


Program VD_thutuc2;
Uses crt;


Var a, b, i: integer;


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

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


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)


GV: Chiếu VD_thambien1 len bảng. Hỏi:
thủ tục trên thực hiện cơng việc gì;


HS: Hoá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ị.


Program VD_thambien1;
Uses crt;


Var a, b: integer;


Procedure Hoan_doi (var x, y: integer);
Var TG: integer;


Begin


TG:=x; x:=y; y:=TG;
End;



BEGIN
Clrscr;


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

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.


Ngày soạn: / /2010
Tiết 41


Ngày giảng:


Lớp 11A: . . . /. . . /. . . / (sĩ số:. . ./ . . . ) Lớp 11B: . . . /. . . /. . . / (sĩ số:. . ./ . . . )


Lớp 11C: . . . /. . . /. . . / (sĩ số:. . ./ . . . ) Lớp 11D: . . . /. . . /. . .
/ (sĩ số:. . ./ . . . )



Lớp 11E: . . . /. . . /. . . / (sĩ số:. . ./ . . . )


Bài 18: VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON (T2)
A. MỤC TIÊU


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.


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

- Phân biệt được sự khác nhau cơ bản giữa hàm và thủ tục.
- 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, 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. 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, 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ở.


D. TIẾN TRÌNH LÊN LỚP
I. Ổn định tổ chức (1p)
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
nhiêu hàm.


HS: một hàm.


GV: hàm UCLN(x,y) dùng để làm gì?


b. Ví dụ về hàm
* Ví dụ 1;


Program Rutgon_Phanso;
Uses crt;


Var a, tuso, mauso: integer;


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

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


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>
<span class='text_page_counter'>(104)</span><div class='page_container' data-page=104>

Ngày soạn : 21/03/2010 Ngày dạy :23/03/2010



Tiết PPCT : 37 Tuần : 30


Chương V. TỆP VÀ THAO TÁC VỚI TỆP


Bài 14 + 15

:

KIỂU DỮ LIỆU TỆP. THAO TÁC VỚI TỆP


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.


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


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)
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'>(105)</span><div class='page_container' data-page=105>

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.


+ 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 đượ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'>(106)</span><div class='page_container' data-page=106>

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)


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

Ngày soạn : 21/03/2010 Ngày dạy :23/03/2010


Tiết PPCT : 38 Tuần : 30


Bài 16: V Í DỤ LÀM VIỆC VỚI TỆP
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


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


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;


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

TRAI.TXT. Thực hiện chương trình để học
sinh thấy kết quả.


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


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


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:


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

<i>Ngày soạn :</i> <i>Ngày dạy :</i>


<i>Tiết PPCT : 39</i> <i> Tuần : 31</i>


<b>Bài 17</b> <b>CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI (Tiết 1)</b>



<b>I. Mục đích yêu cầu</b>:


+ Biết CTC là một khối lệnh nhằm giải quyết một bài nêu con để góp phần giải quyết một bài nêu lớn hơn
bằng một chương trình.


+ Biết khi viết nhứng chương trình dài, phức tạp thỡ việc sử dụng CTC là cần thiết.
+ Biết được lợi ích của việc sử dụng CTC.


<b>II. Chuẩn bị:</b>


Máy chiếu hoặc bảng phụ đó viết sẵn chương trình tinh_tong khơng sử dụng chương trình con và sử dụng
chương trình con.


<b>III. Tiến trình bài dạy : </b>


<i><b>Hoạt động của GV và HS</b></i> <i><b>Nội dung</b></i>


<b>+ Hoạt động 1:(5’)</b>
Đặt vấn đề:


Các chương trình giải các bài nêu phức tạp thường rất dài, có thể
gồm nhiều lệnh, khi đọc rất khó hình dung chương trình thực hiện
những cơng việc gì và việc hiệu chỉnh chương trình cũng rất khó
khăn.


Như vậy làm thế nào để cho bài nêu phức tạp dễ đọc, dễ hiểu, dễ hiệu
chỉnh, dễ nâng cấp?


Do đó ta nghiên cứu vấn đề mới là CTC, để tìm hiểu CTC là gì ?
<b>+ Hoạt động 2 (17’)</b>



Tỉnh tổng : an<sub> + b</sub>m<sub> + c</sub>p<sub> + d</sub>q


+ GV cho HS nêu ý tưởng bài nêu này


+ HS nêu ý tưởng giải quyết bài nêu và trả lời .


Có nghĩa là chia bài nêu thành 2 bài nêu nhỏ, làm như vậy là làm mịn
dần bài nêu ---> thiết kế bài toán từ trên xuống.


+ GV phân tích: để giải BT trên MT có thế chia chương trình thành
các khối, mỗi khối gồm nhiều lệnh giải bài tốn con nào đó --->
chương trình chính được xây dựng từ các CTC.


+ Chương trình con là gì ?


+ Giáo viên chốt lại khái niệm trên bảng phụ, máy chiếu hoặc viết
trên bảng.


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


+ GV dùng bảng phụ 1: bài tinh_tong ( không sử dụng CTC trang 92
SGK ), cho HS nhận xét đoạn chương trình trên .


+ Chỳ ý bảng phụ hoặc trình chiếu, sau đó nhận xét.
+ GV chốt lại các ý: đoạn CT có 4 đoạn lệnh tương tự
---> chương trình dài, khú theo dừi, khú hiệu chỉnh.


+ Dùng bảng phụ 2: Chương trình tinh_tong có sử dụng chương
trình con.



+ HS nhận xét và so sánh 2 đoạn chương trình.
+ GV giải rhích : các dùng lệnh:


var j: integer;
tich:=1.0;
for j:=1 to k do


<b>1.Khái niệm chương trình con</b>
Những bài tốn phức tạp có thể
phân chia thành nhiều bài nêu
nhỏ, mỗi bài nêu nhỏ được phân
chia thành nhiều bài nêu nhỏ,
quá trình làm “mịn” dần bài
toán như vậy được gọi là cách
thiết kế từ trên xuống.


Khi lập trình để giải các bài nêu
có thể chia thành các khối, mỗi
khối bao gồm các lệnh để giải 1
bài nêu nào đó, mỗi khối lệnh
được xây dựng thành 1 CTC ,
sau đó chương trình chính được
xây dựng trên các CTC này,
cách lập trình như vậy gọi là
chương trình có cấu trúc .
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</b>
<b>CTC</b>


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

tich:=tich*x


+ Để tính các luỹ thừa ta viết:
Luythua(a,n), luythua(b,m),
Luythua(c,p), luythua(d,q)


+ Và chỉ rừ các đoạn lệnh được thay thế bằng CTC.


+ Từ những điều đó nêu cho HS nêu các ích lợi của CTC.
+ GV giải thích rừ từng ích lợi của việc sử dụng CTC
+ Các HS nêu lần lượt các lợi ích của CTC.


lệnh;


+ Hổ trợ việc thực hiện các
chương trình lớn;


+ Phục vụ cho quỏ 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>IV. Củng cố:</b>



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

Hàm
Thủ
tục


<i>Ngày soạn :4/4/2010</i> <i>Ngày dạy :5/4/2010</i>


<i>Tiết PPCT : 41</i> <i> Tuần : 32</i>


<b>Bài 17 CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI (Tiết 2)</b>
<b>I: Mục tiêu :</b>


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


Biết phân biệt được hai loại chương trình con: Hàm và thủ tục.
Biết được cấu trúc của một chương trình con.


Biết phân biệt được tham số hình thức ví i tham số thực sự, biến cục bộ ví i biến tồn cục.
<i><b>2. Kỹ năng:</b></i>


- Nhận biết được hai loại tham số hình thức và tham số thật sự.
- Nhận biết được phạm vi hoạt động của biến toàn cục, biến cục bộ.


- Cách thực hiện một chương trinh con
<i><b> 3. Thái độ:</b></i>


<b> - </b>Phát huy tinh thần học tập theo nhóm.
<b>II. Đồ dùng dạy học:</b>


<b> -GV:</b> Bảng phụ, máy chiếu(nếu có )


<b>-HS:</b> SGK, sách bài tập


<b>IV. Tiến trình bài học.</b>
1. ổn định :


2. Bài cũ : <i>Câu 1:</i> Trình bày khái niệm chương trình con là gì ?.


<i>Câu 2</i>: Mục đích sử dụng chương trình con là gì ?
3. Bài giảng :


<b>Hoạt động của GV & HS</b> <b>Nội dung</b>


<b>ĐVĐ: </b>Chúng ta đó biết chương trình con là gì ?. Lợi ích của
việc sử dụng chương trình con trong lập trình. Nhưng ta chưa
biết chương trình chương trình con có cấu trúc như thế nào?
Và được phân loại như thế nào?.


<i>-Trong nhiều ngôn ngữ lập trình chương trình con được phân</i>
<i>làm mấy loại?</i>


<i>-Trong ngôn ngữ pascal các em cho biết một số hàm và thủ tục</i>
<i>chuẩn mà em biết?</i>


<i>-HS trả lời câu hỏi:</i>


+ Hàm: Sin(x), sqrt(x),length(x)...
+ Writeln, readln,....


-Xét hàm sin(x)



<i>Ví i x=∏/6 giá trị của hàm sin(x) cho kết quả là bao nhiờu ?</i>
<i>-HS trả lời câu hỏi:</i>


Sin(x)=1/2


GV nhận xét : Sau khi thực hiện tính tốn hàm sin(x) ví i x=
<i>∏/6 </i>cho giá trị là 1/2


<i>Vậy các em cho biết hàm có đặc điểm gì ?(hay hàm là gì ?).</i>


-Xét thủ tục Writeln,
Writeln(‘‘xin chao’’)


<i>Thủ tục Writeln(‘xin chao’) làm gì ? cho kết quả là gì ? có</i>
<i>trả về giá trị nào khơng ?.</i>


<i>Vậy các em cho biết thủ tục có đặc điểm gì ?(hay hàm là gì</i>
<i> ?).</i>


<b>ĐVĐ : </b>Trên cơ sở phân loại hàm và thủ tục bây giờ ta tìm


<b>2. Phân loại và cấu trúc của chương</b>
<b>trình con.</b>


<b>a. Phân loại:</b>


<b>+Hàm: </b>Là chương trình con thực hiện
một số thao tác nào đó. Trả lại giá trị
qua tên của hàm.



<b>+Thủ tục:</b> Là chương trình con thực
hiện một số thao tác nào đó. Khơng trả
lại giá trị qua tên của thủ tục.


<b>b. Cấu trúc chương trinh con</b>
<b><Phần đầu></b>


<b> [<Phần khai báo >]</b>
<b> <Phần thân ></b>
<b>+Phần đầu:</b>


+ Để khai báo tên của hàm hoặc
thủ tục.


+ Nếu là hàm phải khai báo kiểu
dữ liệu chi giá trị trả về của hàm.


+ Nhất thiết phải có .
<b>+Phần khai báo :</b>


+ Khai báo các biến cho dữ liệu
vào/ra, các hằng và biến dùng trong
chương trình con.


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


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

<b>Hoạt động của GV & HS</b> <b>Nội dung</b>
hiểu cấu trúc của hàm và thủ tục (Chương trình con) được tổ


chức như thế nào ?



-<i>Các em hãy cho biết chương trình chính gồm mấy phần ?</i>
<i>(kiến thức củ).</i>


<i>-Học sinh trả lời:</i>


[<Phần khai báo >]
<Phần thân >


<i>-Trong chương trình con cấu trúc của nú gồm mấy phần ?</i>


-<i>Học sinh trả lời:</i>


<Phần đầu>


[<Phần khai báo >]
<Phần thân >


<i>-Về cơ bản chương trình con và chuơng trình chính có tương</i>
<i>tự nhau khơng ?</i>


<i>-Phần đầu dùng để làm gì ?</i>
<i>-Phần Khai báo dùng để làm gì ?</i>
<i>-Phần thân dùng để làm gì ?</i>


Xét ví dụ : Tính luỹ thừa : luythua= xk<sub> . khi đó tên chương</sub>


trình con có thể đặt là luythua, tên các biết chưa dữ liệu vào là
x, k. Vậy khi tính xk<sub> ta viết luythua(x,k). Khi đó x, k là tham số</sub>



hình thức.


<i>-Vậy tham số hình thức là gì ?</i>


<b>ĐVĐ</b> : Đối biến cục bộ, ,biến tồn cục thỡ phạm vi hoạt động
của nó như thế nào ?


<b>ĐVĐ </b>: Sau khi có một chương trình con, muốn thực hiện
chuơng trình con đó thỡ ta làm thế nào ?


<i>-Hãy cho ví dụ về lệnh gọi CTC ?</i>


Xét ví dụ :CTC luythua(x,k) ví i x,k tham số hình thức.
Ví i biến : a =2, b=3


Lệnh gọi CTC là Luythua(a,b) khi đó tham số hình thức x,k
nhận giá trị tương ứng của tham số thực sự a,b.


-Học sinh đọc sách GK và trả lời.


những dữ iệu vào/ra ta nhận dữ liệu ra
hay kết qủa mong muốn.


<i><b>*Khái niệm các biến:</b></i>


<i>- Tham số hình thức</i>: gồm các biến
được khai báo cho dữ liệu vào/ra.


<i>- Biến cục bộ:</i> Gồm các biến khái được
khai báo trong chương trình con.



<i>- Biến toàn cục:</i> Gồm các biến khái
được khai báo trong chương trình
chính .


<b>*Phạm vi hoạt động của các biến:</b>
-<i>Biến cục bộ:</i>


+ Chỉ sử dụng trong một chương
trình con cuả nú mà thụi.


+ Không thể sử dụng biến cục bộ
cuả một chương trình con cho chương
trình chính và các chương trình con
khác.


<i>-Biến tồn cục:</i>


+ Được sử dụng trong chương
trình chính cũng có thể sử dụng trong
chương trình con.


<b>c. Thực hiện chương trình con:</b>
-Để thực hiện gọi chương trình con ta
thực hiện lệnh theo có pháp sau


<b>Có pháp : </b>


<tên chương trình con>(<tham số thực
sự>)



<b> </b><i>Trong đó</i>: tham số thực sự là các
hằng, biến chứa dữ liệu vào/ ra.


V. <b>Cũng cố kiến thức:</b>
<i>-CTC gồm: Hàm và thủ tục.</i>
<i>-Cấu trúc chương trinh con.</i>
<i>-Biến cục bộ, biến toàn cục.</i>


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

<i>Ngày soạn :4/4/2010</i> <i>Ngày dạy :5/4/2010</i>


<i>Tiết PPCT : 42</i> <i> Tuần : 32</i>


<b>Bài 18 : VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON</b>
<b>I. MỤC TIÊU</b>


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


- Biết được cấu trúc chung và vị trí của thủ tục trong chương trình.
- Phân biệt được tham số giá trị và tham số biến.


- Nắm được khái niệm về biến toàn cục và biến cục bộ.
<i><b>2. Kĩ năng:</b></i>


- 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 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.
- Sử dụng đúng lời gọi chương trình con trong thân chương trình chính.



- Phân biệt được khác nhau cơ bản của hàm và thủ tục.
- Phân biệt và sử dụng đúng biến toàn cục và biến cục bộ.
<i><b>3. Thái độ:</b></i>


- 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, làm việc theo nhóm, tuân thủ yêu cầu
vì một cơng việc chung.


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


<i>Giáo viên<b> : Máy vi tính và máy chiếu projector để giới thiệu ví dụ.</b></i>


<i>Học sinh<b> : Sách giáo khoa.</b></i>


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


<i><b>1. Hoạt động 1: Tìm hiểu cấu trúc chung và vị trí của thủ tục trong chương trình chính.</b></i>


<b>HOẠT ĐỘNG CỦA GV VÀ HS</b> <b>NỘI DUNG</b>


- Chiếu chương trình ví dụ lên bảng (Ví dụ VD-thutuc1, trang
96). Giới thiệ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.


2. Tìm hiểu cấu trúc thủ tục.


- Hỏi: Vị trí của thủ tục nằm ở phần nào trong chương trình
chính?


- Hỏi: Cấu trúc của thủ tục gồm mấy phần?



- Ba phần: Tên thủ tục, khai báo của thủ tục và phần thân của
thủ tục.


- Hỏi: Phân biệt giống và khác nhau giữa chương trình con và
chương trình chính?


- Giống: Cấu trúc chung.


- Khác: Trong phần tên: Từ khóa đặt tên Procedurre, có các
tham số.


- Giới thiệuc 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 chương trình?
3. Tìm hiểu tham số hình thức và tham số thực sự.
- Chiếu ví dụ 2, VD_thutuc2, sách giáo khoa trang 98.


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


- Hỏi: Quan sát chương trình cho biết, trong chương trình
chính ta vẽ được tất cả bao nhêu hình chữ nhật.


- Tham số chdai, chrong được gọi là tham số hình thức.


- Trong lời gọi thủ tục các tham số hình thức được thay bằng


1. Cách viết và sử dụng thủ tục.
a. Cấu trúc thủ tục:



Procedure <Tên thủ tuc> [(<DS tham
số>)];


[< phần khai báo>]
Begin


[<Dãy các lệnh>]
End;


- <i>Phần đầu thủ tục</i> gồm tên dành riêng
<b>Procedure</b>, tiếp theo là tên thủ tục.
DS tham số có thể có hoặc khơng có.
- <i>Phần khai báo: </i>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.


- <i>Dãy câu lệnhh:</i>Được viết giữa cặp
tên dành riêng<b> Begin </b>và <b>End </b>tạo
thành thân của thủ tục.


b. VD về thủ tục:


- Trong lời gọi thủ tục các tham số
hình thức được thay bằng tham số
thực sự tương ứng là các giá trị cụ thể
đgl tham số giá trị (tham trị).


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

các tham số thực sự.



- So sánh các tham số của lời gọi ve_hcn(5,10); và
ve_hcn(a,b);


4. Tìm hiểu tham số giá trị và tham số biến.
- Hỏi: Các tham số trong ví dụ 2 thuộc loại nào?


- Chiếu chương trình VD_thambien1, sách giáo khoa trang 99.
- Hỏi: Các tham số x,y thuộc loại nào?


- Diễn giải: Trong lời 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 <i>biến chứa</i>
<i>dữ liệu ra</i> được gọi là các tham số biến.


- Hỏi: x, y là tham số giá trị hay tham số biến?


- Hỏi: Có nhận xét gì khi khai báo tham số hình thức là tham
trị và tham biến?


- Chiếu vd_thambien2 và giải thích để học sinh thấy được sự
khác biệt giữa tham số giá trị và tham số biến


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 đgl tham số biến (tham
biến).


<i><b>2.Hoạt động 2: Tìm hiểu cấu trúc chung và vị trí của hàm trong chương trình chính.</b></i>


<b>HOẠT ĐỘNG CỦA GV VÀ HS</b> <b>NỘI DUNG</b>



1. Nhắc lại kiến thức cũ về hàm chuẩn.


- Hỏi: Hãy kể tên một số hàm chuẩn đã học và cách sử dụng
chúng.


1. Suy nghĩ và trả lời.


- Hàm ABS(), SQRT(), ROUND()...
- 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 biểu thức như một nêu hạng,
thậm chí là tham số của một hàm khác.


2. Giới thiệu cấu trúc chung và vị trí của hàm trong chương
trình chính.


- Hỏi: So sánh sự giống và khác nhau của hàm và thủ tục.
2. Quan sát cấu trúc chung.


- Giống: Có cấu trúc tương tự, có các tham số...


- Khác: Tên hàm phải quy đinh kiểu dữ liệu; Trong thân hàm
phải có lệnh Tên_hàm:=biểu_thức;


Bắt đầu của hàm là từ Function
3. Tìm hiểu hàm thơng qua ví dụ


- Chiếu chương trình ví dụ rutgon_phanso, sách giáo khoa
trang 101.



- Hỏi: Trong chương trình có mấy hàm.
- Hàm UCLN(x,y) dùng để làm gì?
- Hỏi: Lời gọi hàm ở đâu?


- Hỏi: Có gì khác ví i thủ tục trong lời gọi hàm.


- Chiếu chương trình ví dụ 2, Minbaso, sách giáo khoa, trang
102.


- Hỏi: Trong chương trình có bao nhiêu hàm? chức năng của
hàm?


- Có bao nhiêu lời gọi hàm trong chương trình chính?
4. Tìm hiểu về biến cục bộ và biến tồn bộ.


- Chiếu chương trình ví du 2: Rutgon_phanso lên bảng.
- Hỏi: Có những biến nào được sử dụng trong chương trình?


II/ <b>Dạng Hàm </b>(Function)
1/ <b>Cấu trúc:</b>


Function <tên hàm>[<danh sách
tham số>]: <kiểu dữ liệu>;


[khai báo các biến];
Begin


[<dãy các lệnh>]
End;



- <Kiểu dữ liệu>: Kiểu dữ liệu trả lại
của hàm như các kiểu integer, real,
char, boolean, string.


Vd: Function tong(x,y: integer):
integer;


2/


<b> Sử dụng hàm</b>:<b> </b>


- Giống hàm chuẩn, viết tên của hàm
gọi và thay thế tham số hình thức bằng
các tham số thực sự tương ứng.


- Lệnh gọi hàm tham gia vào biểu thức
như một tốn hạng.


Ví dụ: A:= 8*UCLN(x,y)-3;


Chú ý: Trong thân hàm phải có ít nhất
một lệnh gán giá trị cho tên hàm.
<tên hàm>:= <biểu thức>;


3/ <b>Phân biệt giữa hàm và thủ tục:</b>
a/ Giống nhau:


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

Các biến đó được khai báo ở chỗ nào trong chương trình?
- Yêu cầu học sinh: Phân biệt sự giống nhau và khác nhau của


biến toàn bộ và biến cục bộ.


giống chương trình.


- Đều có thể chứa các tham số, cùng
tuân theo một quy định khai báo.
b/ Khác nhau:


- Tên hàm phải có kiểu dữ liệu.
- Trong thân hàm phải có lệnh gán
giá trị cho tên hàm.


</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
×