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

Giao an 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 (812.26 KB, 102 trang )

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

<b>Ngày soạn: 13/8/2012</b>
<b>Tiết: 01</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>§1 KHÁI NIỆM LẬP TRÌNH VÀ NGƠN NGỮ LẬP TRÌNH</b>



<b>I.</b>

<b>Mục tiêu</b>


-Biết được khái niệm lập trình.


-Hiểu khả năng của ngơn ngữ lập trình bậc cao, phân biệt được với ngơn ngữ máy và
hợp ngữ.


-Hiểu ý nghĩa và nhiệm vụ của chương trình dịch. Phân biệt được hai loại chương trình
dịch là biên dịch và thông dịch.


<b>II.</b>

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


- Giáo<i> viên: </i>sách giáo khoa, sách giáo viên, Hướng dẫn thực hiện chuẩn kiến thức, kĩ
năng môn Tin học THPT.


-<i> Học sinh:</i> Đọc trước SGK, xem lại một số kiến thức Tin học lớp 10.

<b>III.</b>

<b>Phương pháp: </b>


- Diễn giải
- Đàm thoại


- Giải quyết tình huống có vấn đề.

<b>IV.</b>

<b>Hoạt động dạy- học:</b>


<b>1.</b>

<b>Ổn định lớp:</b>


<b>2.</b>

<b>Hoạt động 1:</b>Tìm hiểu khái niệm lập trình và ngơn ngữ lập trình
<i>a. Nội dung:</i>


- Lập trình là sử dụng cấu trúc dữ liệu và các câu lệnh của ngôn ngữ lập trình cụ thể để ơ
tả dữ liệu và diễn đạt các thuật tốn., là tạo ra các chương trình giải được các bài tốn
trên máy tính.


<i>-</i> Ngơn ngữ lập trình là một phần mềm dùng để diễn đạt thuật tốn thành một chương
trình và giúp cho máy tính hiểu được thuật tốn đó.


<i>-</i> Một số loại ngơn ngữ lập trình: ngơn ngữ máy, hợp ngữ và ngơn ngữ lập trình bậc cao.
<i>b. Hoạt động:</i>


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh</b>


-Cho bài toán sau: Kết luận nghiệm của phương
trình ax + b=0.


+ Hãy xác định Input, Output của bài toán trên.
+ Hãy xác định các bước để giải bài toán trên


-Hệ thống các bước này chúng ta gọi là thuật
tốn. Làm thế nào để máy tính điện tử có thể
hiểu được thuật tốn này ?


-Diễn giải: Hoạt động để diễn đạt một thuật tốn
thơng qua một ngơn ngữ lập trình được gọi là


-Quan sát bài tốn và trả lời câu hỏi.


+Input: a, b


+Output: x=-b/a, vô nghiệm, vô số
nghiệm.


+B1: Nhập a, b.


B2: Nếu a<> 0 kết luận có nghiệm
x=-b/a.


B3: Nếu a=0 và b<>0, kết luận vô
nghiệm.


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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh</b>


lập trình.


-Các em hãy cho biết khái niệm về lập trình ?


- Kết quả của hoạt động lập trình ?


-Ngơn ngữ lập trình gồm những loại nào ?


-Theo các em chương trình được viết bằng ngơn
ngữ bậc cao và chương trình được viết bằng
ngôn ngữ máy khác nhau như thế nào ?


-Làm thế nào để chuyển một chương trình viết
bằng ngơn ngữ bậc cao sang ngơn ngữ máy ?
-Vì sao khơng lập trình trên ngơn ngữ máy để


khỏi mất cơng chuyển đổi khi lập trình với ngơn
ngữ bậc cao


-Dùng ngơn ngữ lập trình.


-Nghiên cứu nội dung trong SGK và trả
lời câu hỏi


+Lập trình là việc sử dụng cấu trúc dữ
liệu và các lệnh của ngơn ngữ lập trình cụ
thể để mơ tả dữ liệu và diễn đạt các thao
tác của thuật toán.


+ Được một chương trình.


+Ngơn ngữ máy, hợp ngữ và ngơn ngữ
bâc cao.


-Nghiên cứu SGK và trả lời câu hỏi.
+ Chương trình viết bằng ngơn ngữ máy
có thể nạp trực tiếp vào bộ nhớ và thực
hiện ngay.


+ Chương trình viết bằng ngơn ngữ lập
trình bậc cao phải được chuyển đổi thành
chương trình trên ngơn ngữ lập máy thì
mới thực hiện được.


-Phải sử dụng một chương trình dịch để
chuyển đổi.



- Ngơn ngữ bậc cao dễ viết, dễ hiểu. Ngơn
ngữ máy khó viết.


<b>3.</b>

<b>Hoạt động 2:</b> Tìm hiểu hai loại chương trình dịch: thơng dịch và biên dịch
<i>a. Nội dung:</i>


- 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 thành chương trình thực hiện trên máy tính cụ thể được gọi là chương
trình dịch.


Chương trình nguồn Chương trình đích


(Iput) (Output)


- Có 2 loại chương trình dịch: biên dịch và thơng dịch


+ Thơng dịch(interpret) : dịch lần lượt từng câu lệnh ra ngôn ngữ máy rồi thực hiện
ngay câu lệnh vừa dịch được hoặc thông báo lỗi nếu không dịch được câu lệnh.
Trong thông dịch khơng có chương trình đích để lưu trữ.


Biên dịch(compile): duyệt, kiểm tra, phát hiện lỗi, khi chương trình nguồn khơng cịn
lỗi thì dịch tồn bộ chương trình nguồn thành chương trình đích để có thể thực hiện trên


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

máy. Chương trình đích có thể được lưu trữ lại để thực hiện được nhiều lần mà không
cần dịch lại.


<i>b. Hoạt động:</i>


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh</b>



-Theo các em đối với chương trình dịch: chương
trình nào là chương trình nguồn và chương trình
đích


-Nêu vấn đề: Em muốn giới thiệu về trường mình
cho một người khách du lịch quốc tế biết tiếng
Anh, ta có những cách thực hiện nào?


- Cách 1 ta có thể gọi là thông dịch; cách 2 gọi là
biên dịch.


- Giáo viên cũng có thể đưa ra các ví dụ tương tự:
Khi thủ trưởng một chính phủ trả lời phỏng vấn
trước một nhà báo quốc tế, họ thường cần một
người thông dịch để dịch từng câu tiếng Việt sang
tiếng Anh.


- Khi thủ tướng đọc một bài diễn văn tiếngAnh
trước Hội nghị, họ cần một người phiên dịch để
chuyển văn bản tiếng Việt thành tiếng Anh.


Tương tự chương trình dịch có hai loại là thơng
dịch và biên dịch.


-Các em hãy cho biết tiến trình của thơng dịch và
biên dịch.


-Nghiên cứu SGK và trả lời câu hỏi:
+ Chương trình nguồn là chương trình


viết bằng ngơn ngữ lập trình bậc cao.
+ Chương trình đích là chương trình thực
hiện chuyển đổi sang ngơn ngữ máy.
C1: Cần một người biết tiếng Anh dịch
từng câu nói của em sang tiếng Anh cho
người khách.


C2: Em soạn nội dung giới thiệu ra giấy
và người phiên dịch dịch toàn bộ nội
dung đó sang tiếng Anh rồi đọc cho
khách nghe.


-Nghiên cứu SGK và trả lời câu hỏi:
+Thơng dịch:


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


B2: Chuyển lệnh đó thành ngơn ngữ máy
B3: Thực hiện các câu lệnh vừa được
chuyển đổi.


+Biên dịch:


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


B2: 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


<b>4.</b>

<b>Hoạt động 4:Củng cố kiến thức </b>


-Khái niệm lập trình và ngơn ngữ lập trình.


-Các ngơn ngữ lập trình: ngơn ngữ máy, ngôn ngữ bậc cao, hợp ngữ.
-Khái niệm chương trình dịch.


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

<b>Ngày soạn: 20/8/2012</b>
<b>Tiết: 02</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>


-Biết ngơn ngữ lập trình có 3 thành phần: bảng chữ cái, cú pháp và ngữ nghĩa. Hiểu và
phân biệt được 3 thành phần này.


-Biết được một số khái niệm như tên, tên chuẩn, tên dành riêng, tên do người lập trình
đặt, hằng, biến và chú thích.


-Biết các qui định về tên, hằng và biến trong một ngơn ngữ lập trình cụ thể.
-Thực hiện việc đặt tên đúng và nhận biết được tên sai theo qui định.


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


-Giáo viên : sách giáo viên, sách giáo khoa, một số bảng phụ, Hướng dẫn thực hiện
chuẩn kiến thức, kĩ năng môn Tin học THPT.



-Học sinh: sách giáo khoa, đọc trước bài học ở nhà.


<b>III. Phương pháp</b>


-Thuyết trình.
-Vấn đáp.


-Hoạt động nhóm.


<b>IV. Tiến trình bài học</b>


<b>1. Hoạt động 1: Ổn định lớp và kiểm tra bài cũ:</b>


<b>2. Hoạt động 2: Giới thiệu cho học sinh các thành phần cơ bản của một ngơn ngữ lập</b>
<b>trình.</b>


a) Nội dung:


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


tự nào khác ngồi các kí tự qui định trong bảng chữ cái.


- Cú pháp là bộ qui tác dùng để viết chương trình, mà dựa vào chúng, người lập trình và
chương trình dịch biết được tổ hợp nào của các kí tự trong bảng chữ cái là hợp lệ. Nhờ
đó có thể mơ tả chính xác thuật tốn để máy tính thực hiện.


- Ngữ nghĩa xác định ý nghĩa các thao tác cần thực hiện, ứng với tổ hợp kí tự dựa vào ngữ
cảnh của nó.



Tóm lại, cú pháp cho biết cách viết chương trình hợp lệ, cịn ngữ nghĩa xác định ý nghĩa của
các tổ hợp kí tự trong chương trình.


b) Hoạt động:


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


Đặt vấn đề : Có những yếu tố nào dùng để xây
dựng nên ngôn ngữ tiếng Việt?


* Diễn giải : Trong ngơn ngữ lập trình cũng
tương tự như vậy, nó gồm có các thành phần :
Bảng chữ cái, cú pháp và ngữ nghĩa.


- Các ngơn ngữ lập trình nói chung thường có
chung một số thành phần như:Dùng những kí


* Độc lập suy nghĩ và trả lời.
- Bảng chữ cái tiếng Việt, số, dấu.
- Cách ghép các kí tự thành từ, phép từ
thành câu.


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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


nào? viết như vậy có ý nghĩa là gì? Mỗi ngơn
ngữ lập trình có một quy định riêng về những
thành phần này


GV treo bảng phụ 1 (SGK Trang 9)



- Bảng chữ cái trong ngơn ngữ lập trình
khác nhau có sự khác nhau. Ví dụ bảng chữ
cái trong ngôn ngữ lập trình C++ chỉ khác


pascal là sử dụng thêm các kí tự như dấu
nháy kép(“), dấu sổ ngược(\), dấu chấm
than(!).


- Giới thiệu cú pháp:Cú pháp ngôn ngữ
lập trình khác nhau cũng khác nhau ngơn ngữ
pascal dùng cặp từ Begin- End để gộp nhiều
lệnh thành một lệnh nhưng trong C++ dùng


cặp kí hiệu {}.


<b>Ví dụ</b> : Xét 2 biểu thức A+B (1) A,B là các số
thực.


I+J (2) với I,J là các số nguyên


Hỏi HS: Về ngữ nghĩa 2 biểu thức trên có khác
nhau khơng?


 <sub>Mỗi ngơn ngữ khác nhau cũng có ngữ nghĩa</sub>


khác nhau


Lắng nghe và ghi chép.


HS chú ý lắng nghe



Khác nhau: Dấu cộng trong (1) là cộng 2
số thực cộng trong (2) là cộng trong 2 số
nguyên


<b>3. Hoạt động 3: Giới thiệu cho học sinh khái niệm tên trong một ngơn ngữ lập trình</b>
<b>nói chung và Turbo Pascal nói riêng.</b>


a) Nội dung:


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


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


- Nhiều ngơn ngữ lập trình phân biệt ba loại tên: tên chuẩn, tên dành riêng và tên do
người lập trình tự đặt.


+ Tên dành riêng: tên được dùng với ý nghĩa xác định, người lập trình khơng được
sử dụng chúng với ý nghĩa khác và còn được gọi là từ khoá..


+ Tên chuẩn: Tên được dùng với ý nghĩa nào đó nhưng người dùng có thể khai báo
và dùng chúng với ý nghĩa và mục đích khác. Ý nghĩa của các tên chuẩn được
qui định trong các thư viện của ngơn ngữ lập trình.


+ Tên do người lập trình ttự đặt: Tên được sử dụng với ý nghĩa riêng, xác định
bằng cách khai báo trước khi sử dụng và không được trùng với tên dành riêng.
b) Hoạt động:



<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


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


- Em hãy dựa vào sách giáo khoa nêu các qui cách
đặt tên trong Pascal.


- Giáo viên đưa ra một số tên để học sinh phân
biệt tên đúng và tên sai: A, A BC, 6pQ, R13,
X##y, _45


- Ngơn ngữ lập trình pascal không phân biệt chữ
hoa chữ thường nhưng một số ngôn ngữ lập trình
khác(như C++) lại phân biệt chữ hoa, chữ thường.




-- Học sinh dựa vào sách giáo khoa để trả
lời.


- + Bao gồm chữ cái, chữ số, dấu gạch
dưới.


- + Độ dài khơng q 127 kí tự.


- + Bắt đầu bằng chữ cái hoặc dấu gạch
dưới.





-- Các tên đúng: A, R13, 45


<b>4. Hoạt động 3: Giới thiệu cho học sinh khái niệm hằng và biến</b>


a) Nội dung:


- Khái niệm hằng.
- Khái niệm biến.


- Phân biệt sự giống và khác nhau của hằng và biến.
b) Hoạt động:


<b>HĐ CỦA GV</b> <b>HĐ CỦA HS</b>


VG đưa ra ví dụ: Để viết một chương trình giải
phương trình bậc hai ta cần khai báo những tên
sau:


- a,b,c là ba tên dùng để lưu ba hệ số của phương
trình.


- - x1,x2 là hai tên dùng để lưu nghiệm ( nếu có).
- - Delta là tên dùng để lưu giá trị của delta.


Biến là đối tượng sử dụng nhiều nhất trong khi
viết chương trình. Biến là đại lượng có thể thay
đổi được nên thường dùng để lưu trữ kết quả



Lắng nghe


Lắng nghe


<b>HĐ4: Củng cố toàn bài</b>:(4’)


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

<b>Ngày soạn: 27/8/2012</b>
<b>Tiết: 03</b>

<b> </b>



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



<b>I. Mục tiêu:</b>
<b>1. Về kiến thức:</b>


<b>-</b> Biết có 3 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.


<b>-</b> Biết vai trị của chương trình dịch.


<b>-</b> Biết khái niệm biên dịch và thông dịch.


<i><b>-</b></i> Biết các thành phần cơ bản của ngơn ngữ lập trình: <i>bảng chữ cái, cú pháp và ngữ nghĩa.</i>
<i><b>-</b></i> Biết các thành phần cơ sở của Pascal: <i>bảng chữ cái, tên, tên chuẩn, tên riêng (từ khóa),</i>


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


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


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



<b>3. Về tư duy và thái độ:</b>


<b>-</b> Nhận thức được q 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 triển
của tin học nhằm giải các bài toán thực tiễn ngày càng phức tạp.


<b>-</b> 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.</b> <b>Chuẩn bị của giáo viên và học sinh:</b>


1. <b>Giáo viên</b>: chuẩn bị nội dung để giải bài tập cuối chương và một số câu hỏi trắc nghiệm
của chương.


<b>2. Học sinh</b>:Ôn lại kiến thức của chương, chuẩn bị bài tập cuối chương.
III. <b>Phương pháp</b>:


<b>-</b> Thuyết trình, vấn đáp


<b>IV.</b> <b>Tiến trình bài học:</b>
<b>1.</b> <i>Ổn định lớp và kiểm tra sĩ số.</i>


<b>2. Kiểm tra bài cũ.</b>
<b>3. Tiến trình tiết dạy:</b>


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh</b>


<b>-</b> ĐVĐ: Trước khi giải bài tập trong SGK, các
em tự ôn lại một số kiến thức mà chúng ta đã
học ở các bài trước dựa trên yêu cầu của câu
hỏi trang 13 SGK.



<b>-</b> Đặt câu hỏi số 1: <i>Tại sao người ta phải xây</i>
<i>dựng các ngơn ngữ lập trình bậc cao?</i>


<i><b>-</b></i> Nhận xét, đánh giá và bổ sung hướng dẫn cho
học sinh trả lời câu hỏi số 1


<b>-</b> Đặt câu hỏi 2: <i>Chương trình dịch là gì? Tại</i>
<i>sao cần phải có chương trình dịch?</i>


.


<b>-</b> Đặt câu hỏi 3: Biên dịch và thông dịch khác
nhau như thế nào?


<b>-</b> Phân tích câu trả lời của học sinh.


<b>-</b> Đọc yêu cầu của câu hỏi và bài tập
cuối chương trang 13 SGK.


<b>-</b> Suy nghĩ để đưa ra phương án trả lời.


<b>-</b> Suy nghĩ, trả lời câu hỏi.


<b>-</b> Suy nghĩ, trả lời câu hỏi.


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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh</b>


<b>-</b> Đặt câu hỏi 4: Hãy cho biết các điểm khác
nhau giữa tên dành riêng và tên chuẩn?



<b>-</b> Gọi hs trả lời và cho ví dụ


<b>-</b> Phân tích câu trả lời của học sinh.


<b>-</b> Đặt câu hỏi 5: <i>Hãy tự viết ra ba tên đúng theo</i>
<i>quy tắc của Pascal</i>


<b>-</b> Gọi 3 học sinh lên bảng cho ví dụ về <i>tên</i> do
người lập trình đặt.


<b>-</b> Nhận xét, sửa chữa, góp ý.


<b>-</b> Đặt câu hỏi 6: 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õ 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’


<b>-</b> Nhận xét, giải thích


- Suy nghĩ, trả lời, giải thích từng câu


hỏi.


<b>4.</b> <i><b>Hoạt động củng cố 3’</b></i>


<b>-Ơn lại các khái niệm, các tên</b>


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

<b>Ngày soạn: 03/9/2012</b>
<b>Tiết: 4+5 </b>


<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 CÁC KIỂU DỮ LIỆU CHUẨN</b>


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


-Biết được cấu trúc chung và các thành phần của một chương trình đơn giản.
-Nhận biết được các thành phần của một chương trình đơn giản.


-Biết được một số kiểu dữ liệu chuẩn: Nguyên, thực, kí tự, logic.


<b> 2. Kĩ năng.</b>


Nhận biết được các thành phần của ngôn ngữ lập trình và viết được các chương trình
đơn giản.


<b> II. CHUẨN BỊ CỦA GV VÀ HS</b>


-Giáo viên: SGK, SGV, trannh có chứa một số khai báo biến để học sinh chọn đúng –
sai, máy chiếu, Hướng dẫn thực hiện chuẩn kiến thức, kĩ năng môn Tin học THPT.
-Học sinh: SGK



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


<b> 1. Hoạt động 1</b> : Tìm hiểu cấu trúc chung và các thành phần của chương trình.
<i> a. Nội dung:</i>


- Cấu trúc chương trình có hai phần: Phần khai báo và phần thân.


- Phần khai báo : Khai báo tên chương trình, khai báo thư viện sử dụng, khai báo hằng, khai
báo biến và khai báo chương trình con.


- Phần thân chương trình : Bao gồm dãy các lệnh được đặt trong cặp dấu hiệu mở đầu và kết
thúc.


BEGIN


[<Câu lệnh;>]
END.


<i>b. Hoạt động:</i>


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


1. Phát vấn gợi ý : Mộtbài tập làm văn em
thường viết có mấy phần? Các phần có thứ tự
khơng? Vì sao phải chia ra như vậy?


2. Yêu cầu học sinh nghiên cứu sách giáo
khoa để trả lời các câu hỏi sau:



- Một chương trình có cấu trúc mấy phần?


- trong phần khai báo có những khai báo nào?


- Yêu cầu học sinh lấy ví dụ khai báo tên
chương trình trong ngơn ngữ Pascal.


- Yêu cầu học sinh lấy ví dụ khai báo thư viện


1. Lắng nghe và suy nghĩ trả lời :
- Có ba phần.


- Có thứ tự : Mở bài, thân bài, kết luận.
- Dễ viết, dễ đọc, dễ hiểu nội dung.


2. Nghiên cứu sách giáo khoa, thảo luận và
trả lời.


+ Hai phần :


[<phần khaibáo>]
<Phần thân chương trình>


- Khai báo tên chương trình, khai báo thư
viện chương trìnhcon, khai báo hằng, khai báo
biến và khai báo chương trình con.



- Cấu trúc : Program
ten_chuong_trinh ;


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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


chương trình con trong ngơn ngữ Pascal.
- Yêu cầu học sinh lấy ví dụ khai báo hằng
trong ngôn ngữ Pascal.


- Yêu cầu học sinh lấy ví dụ khai báo biến
trong ngôn ngữ Pascal.


- Yêu cầu học sinh cho biết cấu trúc chung
của phần thân chương trình trong ngơn ngữ
lập trình Pascal.


3. Tìm hiểu một chương trình đơn giản.
- Chiếu lên bảng một chương trình đơn giản
trong ngôn ngữ C++ .


# include <stdio.h>
void main()


{


Printf(“Xin chao cac ban”);
}


- Hỏi : Phần khai báo của chương trình?



- Hỏi : Phần thân của chương trình, lệnh
prìnt có chức năng gì?


- Chiếu lên bảng một chương trình đơn giản
trong ngơn ngữ Pascal.


Program VD1 ;
Var x,y:byte; t:word;
Begin


t:=x+y;
Writeln(t);
readln;
End


- Hỏi : Phần khai báo của chương trình?
- Hỏi : Phần thân của chương trình? Có lệnh
nào trong thân chương trình?


4. Yêu cầu học sinh lấy một ví dụ về một
chương trình Pascal khơng có phần tên và
phần khai báo.


- Cấu trúc : Uses tên_thư_viện;
- Ví dụ : Uses crt ;


- Cấu trúc : Const tên_hằng =
giá_trị;



- Ví dụ : Const maxn=100;


- Cấu trúc : Var
tên_biến=kiểu_dữ_liệu;


- Ví dụ : Var a, b, c : integer;
Begin


Dãy các lệnh;
End.


3. Quan sát tranh và trả lời.


- Phần khai báo chỉ có một khai báo thư viện
stdio.h


- Phần thân {}


- Lệnh printf dùng để đưa thông báo ra màn
hình.


- Khai báo tên chương trình :
Program VD1;


- Khai báo biến : Var x, y:byte ;t:word;
Var x, y:byte; t:word;


- Còn lại là phần thân.



- Lệnh gán, lệnh đưa thông báo ra màn
hình.


4. Thảo luận và trả lời
Begin


Writeln(“Hello”);
Readln;


End.


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

Integer: -32768..32767
Word: 0..65535


Longint: -2148473648..214873647
- Kiểu số thực:


Real: 2.9E-39..1.7E38
Extended: 3.4E..1.1E4932


- Kiểu kí tự: Là các kí tự thuộc bảng mã ASCII, gồm 256 kí tự được đánh số từ 0 đến 255.
- Kiểu logic: Là tập hợp gồm hai giá trị True và Flase, là kết quả của phép so sánh.


<i> c. Hoạt động:</i>


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


1. Đặt vấn đề: Trong toán học, để thực hiện
được tính tốn ta cần phải có các tập số. Đó là
các tập số nào?





- Diễn giải: Cũng tương tự như vậy, trong
ngôn ngữ lập trình Pascal, để lập trình giải
quyết các bài tốn, cần có các tập hợp, mỗi
tập hợp có một giới hạn nhất định.


- Các em có thể hiểu nơm na: Kiểu dữ liệu
chuẩn là một tập hữu hạn các giá trị, mỗi kiểu
dữ liệu cần một dung lượng bộ nhớ cần thiết
để lưu trữ và xác định các phép tốn có thể tác
động lên dữ liệu.


2. Yêu cầu học sinh nghiên cứu sách giáo
khoa, trả lời các câu hỏi sau:


- Có bao nhiêu kiểu dữ liệu chuẩn trong
ngôn ngữ Pascal?


- trong ngơn ngữ Pascal, có những kiểu
ngun nào thường dùng, phạm vi biểu diển
của mỗi loại?


- trong ngơn ngữ Pascal, có những kiểu số
thực nào thường dùng, phạm vi biểu diễn của
mỗi loại?


- trong ngôn ngữ Pascal, có bao nhiêu kiểu
kí tự?



- trong ngơn ngữ Pascal, có bao nhiêu kiểu
logic, gồm các giá trị nào?


3. Giáo viên giải thích một số vấn đề cho
học sinh:


+ Vì sao phạm vi biểu diễn của các loại
kiểu nguyên khác nhau?


+ Miềm giá trị của các loại kiểu thực, số
chữ số có nghĩa?


4. Phát vấn: Muốn tính tốn trên các giá trị :
4 6 7.5 ta phải sử dụng dữ liệu gì?


1. Chú ý, Lắng nghe và suy nghĩ trả lời:
- Số tự nhiên, số nguyên, số hữu tỉ, số thực.


- Liên tưởng các tập số trong toán học với
một kiểu dữ liệu trong Pascal?


2. Nghiên cứu sách giáo khoavà trả lời.
- Có 4 kiểu: Kiểu ngun, kiểu thực, kiểu kí
tự và kiểu logic.


- Có 4 loại: Byte, word, integer và longint.



- Có 2 loại: real, extended.


- Có 1 loại: Char.


- Có một loại: boolean, gồm 2 phần tử: True
và False.


3. Chú ý lắng nghe và ghi nhớ .


4. Suy nghĩ và trả lời.
Kiểu Real


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

<b> 1. Những nội dung đã học</b>


- Một chương trình gồm có hai phần: Phần khai báo và phần thân.


- Các kiểu dữ liệu chuẩn: Kiểu số nguyên, kiểu số thực, kiểu kí tự, kiểu logic.


- Mọi biến trong chương trình phải được khai báo. Cấu trúc chung của khai báo biến trong
Pascal: Var tên_ biến: tên_kiểu_dữ_liệu;


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


- Làm bài tập 1, 2, 3, 4, 5 trang 35 sách giáo khoa.


- Xem trước nội dung bài: Khai báo biến; Phép toán, biểu thức, lệnh gán trang 24 sách giáo
khoa.



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

<b>Ngày soạn: 10/9/2012</b>


<b>Tiết: 6+7</b>



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



<b>§6 PHÉP TOÁN, BIỂU THỨC, LỆNH GÁN</b>



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


-Biết cách khai báo biến.


-Biết được các phép tốn thơng dụng trong ngơn ngữ lập trình.
-Biểu diễn đạt một hình thức trong ngơn ngữ lập trình.


-Biết được chức năng của lệnh gán.


-Biết được cấu trúc của lệnh gán và một số hàm chuẩn trông dụng trong ngôn ngữ lập
trình Pascal.


<b> 2. Kĩ năng</b>


-Sử dụng được các phép toán để xây dựng biểu thức.


-Sử dụng được lệnh gán và khai báo biến để viết chương trình.


<b> II. ĐỒ DÙNG DẠY HỌC</b>
<b> 1. Chuẩn bị của giáo viên</b>


-Sách giáo khoa, Hướng dẫn thực hiện chuẩn kiến thức, kĩ năng môn Tin học THPT.


-Tranh chứa các biểu thức trong toán học, tranh chứa bảng các hàm số học chuẩn, tranh


chứa bảng chân trị.


- Máy vi tính và máy chiếu Projector.


<b> 2. Chuẩn bị của học sinh</b>


- Sách giáo khoa.


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


<b>1. Hoạt động 1: </b>Ổn định lớp và kiểm tra bài cũ


<b>2. Hoạt động 2: </b>Tìm hiểu cách khai báo biến.
a. Nội dung:


Trong ngơn ngữ lậo trìnhPascal, cấu trúc chung của khai báo biến là Var.
tên_biến_1: Kiểu_dữ_liệu_1;


tên_biến_2: Kiểu_dữ_liệu_2;
...


tên_biến_n: Kiểu_dữ_liệu_n;


Nếu có nhiều biến có cùng kiểu dữ liệu, có thể khai báo ghép, khi đó các biến phân cách
nhau bằng dấu phẩy. Kiểu_dữ_liệu là một trong các kiểu dữ liệu chuẩn của Pascal.


b. Hoạt động



<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


1. Yêu cầu học sinh nghiên cứu sách giáo
khoa và cho biết vì sao phải khai báo biến?


- Cấu trúc chung của khai báo biến trong
ngôn ngữ Pascal.


- Cho ví dụ để khai báo một biến nguyên và
một biến kiểu kí tự.


1. Nghiên cứu sách giáo khoa và trả lời.
- Mọi biến dùng trong chương trình đều
phải được khai báo tên biến và kiểu dữ liệu
của biến. Tên biến dùng để xác lập quan hệ
giữa biến và địa chỉ bộ nhớ nơi lưu giữ giá trị
của biến.


- Var <danh sách biến>: <kiểu dữ liệu>;
Var x: word;


y: char;


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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


2. Treo tranh có chứa một số khai báo và yêu
cầu học sinh chọn khai báo đúng trong ngơn
ngữ lập trình Pascal?



Var


x, y, z: word;
n 1: real;
X: longint;
h: integer;
i: byte;


3. Treo tranh có chứa một số khai báo biến
trong Pascal.


- Hỏi: Có bao nhiêu biến tất cả, Bộ nhớ
phải cấp phát là bao nhiêu?


Var x, y: word;
z: longint;
h: integer;
i: byte;



Var


x, y, z: word;
i: byte;


3. Quan sát tranh và trả lời.
- Có 5 biến.


- tổng bộ nhớ cần cấp phát.



x (2 byte); y (2 byte); z (4 byte);
h (2 byte); i (1 byte); tỏng 11 byte


<b>3. Hoạt động 3 </b>: Tìm hiểu một số phép toán.
a. Nội dung:


- Các phép toán số học: + - * / DIV MOD.


- Các phép toán quan hệ: <, <=, >, >=, =, <>. Dùng để so sánh hai đại lượng, kết quả của
các phép toán này là True hoặc Flase.


- Các phép toán logic: NOT, OR, AND, thường dùng để tạo các biểu thức logic từ các biểu
thức quan hệ đơn giản.


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


<b>Hoạt động của giáo viên`</b> <b>Hoạt động của học sinh </b>


1. đặt vấn đề: để mô tả các thao tác trong
thuật tốn, mỗi ngơn ngữ lập trình đếu sử
dụng một số khái niệm cơ bản: Phép toán,
biểu thức, gán giá trị.


2. Phát vấn: Hãy kể các phép toán em đã
được học trong toán học.


- Diễn giải: Trong ngơn ngữ lập trịnh
Pascal cũng có các phép tốn đó nhưng được
diễn đạt bằng một cách khác.



- Yêu cầu học sinh nghiên cứu sách giáo
khoa và cho biết các nhóm phép tốn.


- Hỏi : Phép Div, Mod được sử dụng cho
những kiểu dữ liệu nào?


- Hỏi: Kết quả của phép toán quan hệ thuộc
kiểu dữ liệu nào?


1. Chú ý lắng nghe.


2. Suy nghĩ và trả lời :


- Phép: Cộng, trừ, nhân, chia, lấy số dư,
chia lấy nguyên, so sánh.




- Các phép toán số học: + - * / div mod
- Các phép toán quan hệ: <, <=, >, >=, =,
<>


- Các phép toán logic: And, Or, Not.
- Chỉ sử dụng được cho kiểu nguyên.
- Thuộc kiểu logic.


<b>4. Hoạt động </b>: Tìm hiểu biểu thức.
a. Nội dung:



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

- Thứ tự thực hiện biểu thức số học: trong ngoặc trước, ngồi ngoặc sau. trong dãy các phép
tốn khơng chứa ngoặc thì thực hiện từ trái sang phải theo thứ tự của các phép toán: Nhân,
chia, chia lấy nguyên, chia lấy dư thực hiện trước và ccs phép toán công, trừ thực hiện sau.
- Hàm số học chuẩn thông dụng.


<b>Hàm</b> <b>Kiểu đối số</b> <b>Kiểu hàm số</b>


bình phương: SQR(X) I hoặc R Theo kiểu của đối số


Căn bậc hai: SQRT(X) I hoặc R R


Gái trị tuyệt đối: ABS(X) I hoặc R Theo kiểu của đối số


Sin(X) I hoặc R R


Cos(X) I hoặc R R


logarit tự nhiên lnx ln(x) I hoặc R R


Lũy thừa của số e ex<sub> exp(x)</sub> <sub>I hoặc R</sub> <sub> R</sub>


- Hai biểu thức có cùng kiểu dữ liệu được liên kết với nhau bởi phép toán quan hệ cho ta
một biểu thức quan hệ.


<biểu_thức_1> <phép_toán_quan_hệ> <biểu_thức_2>
- Thứ tự thực hiên.:


+ tính giá trị các biểu thức.
+ Thực hiện phép toán quan hệ.



- Các biểu thức quan hệ liên kết với nhau bởi phép toán logic ta được biểu thức logic. Biểu
thức logic đơn giản là giá trị True hoặc Flase.


b. Hoạt động:


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


1. Nêu vấn đề: trong toán học ta được làm
quen với khái niệm biểu thức, hãy cho biết
yếu tố cơ bản xây dựng nên biểu thức.
- Nếu trong một bài toán mà toán hạng là
biến số, hằng số hoặc hàm số và toán tử là các
phép tốn số học thì biểu thức có tên gọi là
gì?


2. Treo tranh có chứa biểu thức toán học lên
bảng, yêu cầu: Sử dụng các phép toán số học,
hãy biểu diễn biểu thức toán học sau thành
biểu thức trong ngơn ngữ lập trình.


2a+5b+c
xy


2z


x+y + x 2<sub> </sub>


1 - 2 2z
z



- Nghiên cứu sách giáo khoa và từ việc xây
dựng các biểu thức trên, hãy nêu thứ tự thực
hiện các phép toán.


3. Nêu vấn đề: trong toán học ta đã làm quen
với một số hàm số học, hãy kể tên một số hàm
đó?


- Trong một số ngơn ngữ lập trình ta cũng


1. Suy nghĩ và trả lời.


- Gồm hai phần: Toán hạng và toán tử.
- Biểu thức số học.


2. Quan sát và trả lời.
2*a+5*b+c


x*y/(2*z)


((x+y)/(1 – (2 /z)))+(x*x/(2*z))


- Thực hiện trong ngoặc trước; Ngoài ngoặc
sau. Nhân, chia, công, trừ sau.


3. Suy nghĩ và trả lời.


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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>



có một số hàm như vậy nhưng được diễn đạt
bằng một cách khác.


- Treo tranh chứa bảng một số hàm chuẩn,
yêu cầu học sinh điền thêm các thông tin như
chứac năng của hàm , kiểu của đối số và kiểu
của hàm số.


- cho biểu thức:


2 <sub>4</sub>
2


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


<i>a</i>


  


hãy biểu
diễn biểu thức trên sang biểu thức trong ngôn
ngữ lập trình .


4. Nêu vấn đề : Khi hai biểu thức số học
liên kết với nhau bằng phép toán quan hệ ta
được một biểu thức mới, biểu thức đó gọi là
biểu thức gì?


- Hãy lấy một ví dụ về biểu thức quan hệ?
- Yêu cầu học sinh nghiên cứu sách giáo


khoa và cho biết cấu trúc chung của biểu thức
quan hệ?


- Thứ tự thực hiện của biểu thức quan hệ?
- Cho biết kết quả của phép toán quan hệ
thuộc kiểu dữ liệu nào đã học?


5. Nêu vấn đề: Các biểu thức quan hệ được
liên kết với nhau bởi phép toán Logic được
gọi là biểu thức Logic.


- Hãy cho một số ví dụ về biểu thức logic.
- trong tốn học ta có biểu thức 5<=x<=11,
hãy biểu diễn biểu thức này trong ngôn ngữ
lập trình.


- Thứ tự thực hiện biểu thức logic.


- Kết quả của biểu thức logic có kiểu dữ
liệu gì?


- Treo tranh có chứa bảng chân trị của A và
B, yêu cầu học sinh điền giá trị cho A and B;
A or B; not A.


- Quan sát tranh vẽ, nghiên cứu sách giáo
khoa và lên bảng điền tranh.





- Suy nghĩ, lên bảng trả lời.
(-b-sqrt(b*b – 4*a*c))/(2*a)
4. Suy nghĩ và trả lời.
- Gọi là biểu thức quan hệ.


- Ví dụ: 2*x<y
- Cấu trúc chung:


<BT1> <phép toán qh> <BT2>
+ Tính giá trị biểu thức


+ Thực hiện phép toán quan hệ.


- Kiểu logic.


5. Chú ý theo dõi dẫn dắt của giáo viên và
suy nghĩ để trả lời.


- Ví dụ: (A>B) or ((X+1)<Y) và (5>2) and
((3+2)<7).


- Biểu thức trong ngôn ngữ lập trình :
(5<=x) and (x<=11).


+ Thực hiện các biểu thức quan hệ.
+ Thực hiện phép toán logic.
- Kiểu logic.



- Học sinh suy nghĩ và trả lời bằng cách
điền vào bảng.


<b> 5. Hoạt động 5</b> : Tìm hiểu lệnh gán.
a. Nội dung:


- Lệnh gán dùng để tính giá trị một biểu thức và chuyển giá trị đó vào một biến.
- Cấu trúc: Tên biến : =biểu_thức;


- Sự thực hiện của máy:


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

b. Hoạt động:


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


- Giới thiệu một số ví dụ về lệnh gán trong
Pascal như sau:


x:=4+8;


- Giải thích: Lấy 4 cộng 8, đem kết quả đặt
vào x. Ta được x=12.


- Hỏi : Hãy cho biết chức năng của lệnh
gán?


- Yêu cầu học sinh nghiên cứu sách giáo
khoa và cho biết cấu trúc chung của lệnh gán
trong ngôn ngữ Pascal.



- Hãy cho một ví dụ để tính nghiệm của
phương trình bậc hai.


2 <sub>4</sub>
2


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


<i>x</i>


<i>a</i>


  


- Giới thiệu thêm ví dụ: Cho chương trình.
Var i,z:integer;


Begin
z:=4;
i:=6;
z:=z – 1;
i:=i+1;


writeln(“i=”,i);
writeln(“z=”,z);
readln;


End.



- Hỏi: Chương trình in ra màn hình giá trị
bằng bao nhiêu?


- Thực hiện chương trình để học sinh kiểm
nghiệm kết quả tự suy luận.


- Quan sát ví dụ và suy nghĩ để trả lời.


+ Tính giá trị của biểu thức.


+ Gán giá trị tính được và tên một biến.
<tên_biến>:=<biểu_thức>;


x:=(-b+sqrt(b*b – 4*a*c))/(2*a);


- In ra màn hình: z=3 và i=7.


- Quan sát kết quả của chương trình.


<b> IV. ĐÁNH GIÁ CUỐI BÀI.</b>


1. Những nội dung đã học.


- Các phép toán trong Turbo Pascal: Số học, quan hệ và logic.
- Các biểu thức trong Turbo Pascal: Số học, quan hệ và logic
- Cấu trúc lệnh gán trong Turbo Pascal: tên_biến :=biểu_thức;
2. Câu hỏi và bài tập về nhà



- Làm bài tập 5, 6, 7, 8, sách giáo khoa, trang 35 – 36;


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

<b>Ngày soạn:10/10/2012</b>


<b>Tiết: 08</b>



<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 VÀ HIỆU CHỈNH CHƯƠNG TRÌNH</b>



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


-Biết được ý nghĩa của các thủ tục và/ra chuẩn đối với lập trình.


-Biết được cấu trúc chung của thủ tục vào/ra trong ngơn ngữ lập trình Pascal.
-Biết được các bước để hồn thành một chương trình.


-Biết các file chương trình cơ bản của Turbo Pascal 7.0


<b> 2. Kĩ năng.</b>


-Viết đúng lệnh vào/ra dữ liệu.


-Biết nhập đúng dữ liệu khi thực hiện chương trình.
-Biết khởi động và thoát hệ soạn thảo Turbo Pascal.
-Soạn được một chương trình vào máy.


-Dịch được chương trình đê phát hiện lỗi cú pháp.



-Thực hiện được chương trình để nhập dữ liệu và thu kết quả, tìm lỗi thuật tốn và sửa
lỗi.


<b>II. ĐỒ DÙNG DẠY HỌC</b>
<b> 1. Chuẩn bị của giáo viên</b>


-Sách giáo khoa, Hướng dẫn thực hiện chuẩn kiến thức, kĩ năng môn Tin học THPT.
-Tranh chứa các biểu thức trong tốn học, một số chương trình viết sẵn.


-Máy vi tính có cài phần mềm Turbo Pascal 7.0, máy chiếu Projector, máy chiếu vật thể.
<b>2. Chuẩn bị của học sinh.</b>


- Sách giáo khoa.


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


1. <b>Hoạt động 1:</b> Ổn định lớp và kiểm tra bài cũ.


2. <b>Hoạt động 2:</b> Giáo viên hướng dẫn học sinh tìm hiểu thủ tục nhập dữ liệu và từ bàn
phím.


a) Nội dung:


- Thủ tục nhập dữ liệu vào dùng để đưa nhiều bộ dữ liệu khác nhau cho cùng một chương
trình xử lí.


- Cú pháp: Read/Readln(<danh sách biến vào >);
b) Các bước tiến hành:


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>



1. Nêu vấn đề: Khi giải quyết một bài tốn,
ta phải đưa dữ liệu vào để máy tính xử lí, việc
đưa dữ liệu bằng lệnh gán sẽ làm cho chương
trình chỉ có tác dụng với một dữ liệu cố định.
Để chương trì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êu cầu học sinh nghiên cứu sách giáo
khoa và cho biết cấu trúc chung của thủ tục
nhập dữ liệu trong ngôn ngữ lập trình Pascal:


1. Chú ý lắng nghe dẫn dắt của giáo viên.


- Nghiên cứu sách giáo khoa và suy nghĩ để
trả lời.


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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


phương trình ax+b=0, ta phải nhập vào các
đại lượng nào? Viết lệnh nhập?


2. Chiếu một chương trình Pascal đơn giản
có lệnh nhập giá trị có hai biến.


- thực hiện chương trình và thực hiện nhập
dữ liệu.


- Hỏi : Khi nhập giá trị cho nhiều biến, ta


phải thực hiện như thế nào?




- Yêu cầu học sinh thực hiện nhập dữ liệu
cho chương trình.


- Phải nhập giá trị cho hai biến: a, b.
- Viết lệnh: Readln(a,b);


2. Quan sát chương trình ví dụ của giáo viên.


- Những giá trị này phải được gõ cách nhau
ít nhất một dấu cách hoặc kí tự xuống dịng.
- Lên bảng thực hiện nhập theo yêu cầu của
giáo viên.




3. <b>Hoạt động 3</b>: Tìm hiểu thủ tục đưa dữ liệu ra màn hình.
a) Nội dung:


- Thủ tục xuất dữ liệu ra màn hình dùng để đưa kết quả sau khi sử lí ra màn hình để người
sử dụng thấy.


- Cú pháp: Write/Writeln(<danh sách kết quả ra>);
b) Các bước tiến hành:


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>



1. Dẫn dắt: sau khi xử lí xong, kết quả tìm
được đang được lưu trong bộ nhớ. Để thấy
được kết quả trên màn hình ta sử dụng thủ tục
xuất dữ liệu.


- Yêu cầu học sinh nghiên cứu sách giáo
khoa và cho biết cấu trúc chung của thủ tục
xuất dữ liệu trong ngơn ngữ lập trình Pascal.
- Nêu ví dụ: Khi viết chương trình giải
phương trình ax+b=0, ta phải đưa ra màn hình
giá trị của nghiệm –b/a, ta phải viết lệnh như
thế nào?


2. Chiếu một chương trình Pascal đơn giản
Program vb;


Var x, y, z:integer;
Begin


Writeln(“nhap vao hai so:”);
Readln(x, y);


z:=x+y;


write(x:6, y:6, z:6);
readln;


end.



- Thực hiện chương trình và thực hiện nhập
dữ liệu để học sinh thấy kết quả trên nền màn
hình.


- Hỏi : Chức năng của lệnh Writeln();


1. Chú ý lắng nghe dẫn dắt của giáo viên.


- Nghiên cứu sách giáo khoa và trả lời.
Write(<tên_biến_1>,...,<tên_biến_k>);
Writeln(<tên_biến_1>,...,<tên_biến_k>);
- Viết lệnh : Writeln(-b/a);


2. Quan sát chương trình ví dụ của giáo viên.


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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


- Hỏi: ý nghĩa của : 6 trong lệnh Write(...)
- Hỏi: Khi các tham số trong lệnh Write()
thuộc kiểu Char hoặc real thì quy định vị trí
như thế nào?




- Cho ví dụ cụ thể với 2 biến c kiểu Char và r
kiểu real.


xuống dòng.



- Dành 6 vị trí trên màn hình để viết số x, 6
vị trí tiếp để viết số y và 6 vị trí tiếp để viết số
z.


- Khi các tham số có kiểu kí tự, việc quy
định vị trí giống kiểu nguyên.


- Khi các tham số có kiểu thực thì phải quy
định hai loại vị trí : Vị trí cho tồn bộ số thực
và vị trí cho phần thập phân.


- Ví dụ : Write(c:8);
Write(r:8:3);
4. <b>Hoạt động 4</b>: Làm quen với Turbo Pascal 7.0


a) Nội dung:


- Việc khởi động chương trình Turbo Pascal tương tự như việc khởi động các chương trình
khác trong Windows. Ta có thể thực hiện như sau:


+ Chuyển vào thư mục chứa file Turbo.exe
+ Nháy đúp chuột vào tập tin Turbo.exe


(Nếu ở mơi trường Win thì chỉ cần bấm biểu tượng Turbo Pascal)
b) Các bước tiến hành:


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


1. Đặt vấn đề: Để sử dụng được Turbo


Pascal, trên máy phải có các file chương trình
cần thiết. Tham khảo sách giáo khoa và cho
biết tên các file chương trình đó?




2. Trình diễn cách khởi động Turbo Pascal
thông qua máy chiếu Projector.


- Giới thiệu màn hình soạn thảo chương
trình: Bảng chọn, con trỏ, vùng soạn thảo...


1. Tham khảo sách giáo khoa và trả lời .
Turbo.exe


Turbo.tpl
Graph.tpu


Egavga.bgi và các file *.chr
2. Học sinh quan sát và ghi nhớ.


5. <b> Hoạt động 5:</b> Tập soạn thảo chương trình và dịch lỗi cú pháp.
a) Nội dung:


- Soạn thảo chương trình là gõ các lệnh của chương trình vào trong vùng soạn thảo (giống như
trong hệ soạn thảo văn bản).


- Lưu file chương trình trên đĩa bấm F2 hoặc File/save hoặc save as sau đó gõ tên chương trình
và nơi lưu trữ chương trình.



- Biên dịch lỗi cú pháp : bấm ALT+F9.
- Dịch toàn bộ chương trình: F9


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

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


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


1. Soạn một chương trình làm ví dụ, lưu
chương trình, dịch lỗi.


- Dùng máy chiếu vật thể để minh họa thao
tác lưu file chương trình và biên dịch.




2. Soạn một chương trình, hỏi các lỗi cú
pháp trong chương trình, gọi học sinh dịch lỗi
và sửa.


Program vd1
var x:integer;
Begin


Write(‘Nhap mot so nguyen duong);
readln(x);


y:=sqrt(x);
write(y);
End.



1. Quan sát và ghi nhớ.


- Lưu: F2


- Dịch lỗi: ALT_F9


2. Quan sát và phát hiện lỗi để sửa lỗi cho
chương trình.


Program vd1;
var x,y:integer;
Begin


Write(‘Nhap mot so nguyen
duong);


readln(x);
y:=sqrt(x);
write(y);
End.


<b>IV.ĐÁNH GIÁ CUỐI BÀI.</b>


1. Những nội dung đã học.


- Nhập dữ liệu : Read/Readln(<tên_biến_1>,...,<tên_biến_k>);
- Xuất dữ liệu : write/writeln(<tham_số_1>,...,<tham_số_k>);


- Khởi động Turbo. Soạn thảo chương trình. Dịch lỗi cú pháp. Thực hiện chương trình. Tìm


lỗi thuất tốn và hiệu chỉnh.


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


- Hãy so sánh sự giống nhau và khác nhau giữa Write(); và writeln();
- Hãy so sánh sự giống nhau và khác nhau giữa Read(); và Readln();
- Tìm hiểu chức năng của lệnh Readln; Writeln;


- Viết chương trình nhập vào một số và tính bình phương của số đó.


- Viết chương trình nhập độ dài bán kính và t icnhs chu vi diện tích của hìnhtrịn tương
ứng.


- Làm các bài tập 9, 10, sách giáo khoa, trang 36.


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

<b>Ngày soạn: 17/10/2012</b>


<b>Tiết: 09+10</b>



<b>BÀI 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 chương trình Pascal hồn chỉnh.


- Làm quen với các dịch vụ chủ yếu của Turbo Pascal trong việc soạn thảo, lưu chương
trình, dịch chương trình và thực hiện chương trình.


<b> 2. Kĩ năng</b>



- Soạn được chương trì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 đầu biết phân tích và hồn thành một chương trình đơn giản trên Turbo pascal.
<b>3. Thái độ</b>


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


<b>II. ĐỒ DÙNG DẠY HỌC</b>


<b>1. Chuẩn bị của giáo viên.</b>


- Phịng máy vi tính đã được cài đầy đủ Turbo Pascal, máy chiếu projector để hướng dẫn.


<b> 2. Chuẩn bị của học sinh</b>


- Sách giáo khoa, 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>Ổn định lớp


<b>2. Hoạt động 2: </b> Tìm hiểu một chương trình hồn chỉnh.
a. Nội dung:


- Cho chương trình sau:
Program giai_pt;
Uses CRT;


var a,b,c,d,x1,x2:read;
Begin



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;


End.


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


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


1. Chiếu chương trình lên bảng. Yêu cầu
học sinh thực hiện các nhiêmj vụ:


- Soạn chương trình vào máy.
- Lưu chương trình.


- dịch lỗi cú pháp.


- Thực hiện chương trình.


1. Quan sát bảng, độc lập soạn chương trình


vào máy.


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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


quả.


- Trở về màn hình soạn thảo.
- Thực hiện chương trình.


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


-Sửa lại chương trình khơng dùng biến d.


Enter
Ctrl_F9
Thông báo lỗi


Do căn bậc hai cảu một số âm
Readln(a, b, c);


x1:=(-b-sqrt(b*b-4*a*c))/(2*a);
x2:=(-b+sqrt(b*b-4*a*c))/(2*a);
writeln(‘x1=’,x1:6:2, ‘x2=’,x2:6:2,);


<b>3. Hoạt động 3:</b> Rèn luyện kĩ năng lập chương trình.
a. Nội dung:


- Viết chương trình tính diện tích hình được mô tả màu, với a được nhập vào từ bàn phím.



VẼ HÌNH TRỊN TÍNH DIỆN TÍCH




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


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


1. Định hướng để học sinh phân tích bài
tốn.


- Dữ liệu vào:
- Dữ liệu ra:
- Cách tính:


2. Yêu cầu học sinh soạn chương trình và
lưu lên đĩa.


- Quan sát hướng dẫn từng học sinh trong
lúc thực hành.


3. Yêu cầu học sinh nhập dữ liệu và thông
báo kết quả.


a=3
a=-3


1. Phân tích theo yêu cầu của giáo viên.
- Dữ liệu vào a



- Dữ liệu ra s


Tính diện tích hình trịn có bk a (s1)
Tính diện tích hình vng cạnh

<i>a</i>

2

(s2)


s:=sl-s2;


2. Thực hiện các yêu cầu của giáo viên.


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


- Bấm phím F2, gõ tên file để lưu.


- Bấm phím ALT_F9 để dịch lỗi cú pháp.
- Bấm phím CTRL_F9 để thực hiện chương
trình.


- thông báo kết quả cho giáo viên.
3. Nhập dữ liệu theo yêu cầu.


- Với a=3, ta được:s=9(Pi-2)=10.26


- Với a=-3, kết quả khơng đúng, vì độ dài
cạnh phải là một số dương.


<b> IV.ĐÁNH GIÁ CUỐI BÀI.</b>
<b> 1. Những nội dung đã học</b>


- Các bước để hồn thành một chương trình:



+ Phân tích bài tốn để xác định dữ liệu và, dữ liệu ra.
+ Xác đinh thuật toán.


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

+ Thực hiện và hiệu chỉnh chương trình.
<b>2. Câu hỏi và bài tập về nhà</b>


- Viết chương trình nhập vào độ dài ba cạnh của một tam giác và tính chu vi, diện tích của
tam giác đó.


- Cho chương trình sau:
Program bt1;


Var r,s1,s2,s:real;
Begin


write(‘nhap r’);
readln(r);
s1:=4*r*r;
s2:= r*r*pi;
s:=s1 – s2;
write(s:6:2);
readln;
End.


Hỏi : chương trình thực hiện cơng việc gì, kết quả in ra màn hình là bao nhiêu?
- Làm bài tập 7, 8, 9, 10, trang 36.


+ Soạn chương trình.
+ Dịch lỗi và thực hiện.



+ Nhập dữ liệu và kiểm tra kết quả.


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

<b>Ngày soạn: 28/10/2012</b>


<b>Tiết: 11</b>



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


<b>I. Mục tiêu:</b>


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


- Củng cố lại cho học sinh một số kiến thức đã được học ở chương 1 và 2.


- Học sinh biết sử dụng các thủ tục vào/ra chuẩn, một số phép toán và câu lệnh gán.


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


- Học sinh biết sửa lỗi một chương trình, dự đốn kết quả của chương trình cho trước.
- Học sinh viết được một số chương trình đơn giản bằng cách sử dụng câu lệnh gán và các


thủ tục vào ra chuẩn


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


- Giáo viên: sách giáo khoa, sách bài tập và một số bài tập tham khảo thêm.
- Học sinh: sách giáo khoa, sách bài tập.


<b>III. Phương pháp:</b>


- Vấn đáp


- Gợi mở
- Nêu vấn đề


<b>IV. Hoạt động dạy-học</b>


<b>1.</b> <b>Hoạt động 1:</b> Ổn định lớp và kiểm tra bài cũ.


<b>2.</b> <b>Hoạt động 2:</b> Rèn luyện cho học sinh giải các bài tập về xác định kiểu dữ liệu, biểu
diễn biểu thức trong Pascal.


Cho các d li u sau:

ữ ệ



Tên biến Kiểu dữ liệu Giá trị


a Byte 10


b Byte 7


c Real 4.6


d Real -0.4


Xác định kiểu dữ liệu và giá trị của các biểu thức sau:


Biểu thức Kiểu dữ liệu Giá trị
(a-b)/sqrt(c-d)


(adivb)/(amodb)
Sqr(amodb)



<b>3.</b> <b>Hoạt động 3:</b> Rèn luyện cho học sinh kĩ năng đọc hiểu chương trình và sửa lỗi trong
một chương trình cho trước.


Tìm, sửa lỗi và cho biết kết quả khi thực hiện chương trình sau:


<b>Program</b> bt2;
<b>Var</b> a,b,t:integer;


c:byte;
<b>Begin</b>


A:=200;
B:=a+50;
C:=a+b;
T:=c/a;


Write(‘Ket qua la:’,c,t);
Readln;


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

<b>4.</b> <b>Hoạt động 4:</b> Rèn luyện cho học sinh các kĩ năng ban đầu về viết các chương trình đơn
giản.


1) Viết chương trình nhập vào tổng số giây. Thơng báo ra màn hình dưới dạng
giờ:phút:giây.


Ví dụ: nhập vào 4215. Kết quả: 1h10m15s


2) Viết chương trình nhập vào một số có 2 chữ số. Hiện ra màn hình tổng các chữ số của số
nói trên.



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

<b>Ngày soạn: 04/11/2012</b>


<b>Tiết: 12</b>



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


<b>I. Mục tiêu:</b>


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


- Củng cố lại cho học sinh một số kiến thức đã được học ở chương 1 và 2 thông qua cácbài
tập cụ thể.


- Học sinh biết sử dụng các thủ tục vào/ra chuẩn, một số phép toán và câu lệnh gán.


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


- Học sinh biết sửa lỗi một chương trình, dự đốn kết quả của chương trình cho trước.
- Học sinh viết được một số chương trình đơn giản bằng cách sử dụng câu lệnh gán và các


thủ tục vào ra chuẩn


<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:các kiến thức đã học để làm các bài tập.


<b>III. Phương pháp:</b>


- Nêu vấn đề



<b>IV. Hoạt động dạy-học</b>


<b>1.</b> <b>Hoạt động 1:</b> Ổn định lớp .


<b>2.</b> <b>Hoạt động 2:</b> Nội dung đề kiểm tra.
1)

Cho các d li u sau:

ữ ệ



Tên biến Kiểu dữ liệu Giá trị


a Byte 10


b Byte 7


c Integer 15


d Integer 19


Xác định kiểu dữ liệu và giá trị của các biểu thức sau: (2 đ)
Biểu thức Kiểu dữ liệu Giá trị


(c+d)/(a+b)
(a>b) or (c>d)


2) Viết các biểu thức sau trong ngơn ngữ lập trình Turbo Pascal(3đ)
a)


5 <sub>3</sub> 3 <sub>6</sub>
2 1


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



<i>x</i>


 


b)


3 2


2
2 5
(2 1) 5


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


<i>x</i>


 
 


c)


6 2


2 2


2 15
(3 5) 48



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


<i>x</i>


 
 


3) Tìm, sửa lỗi và cho biết kết quả khi thực hiện chương trình sau: (2đ)


<b>Program</b> bt2;
<b>Var</b> a,b:integer;


x,y:boolean;
<b>Begin</b>


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

y:=(a>b) or (c>d);;
Write(‘Ket qua la:’,x,y);
Readln;


<b>End.</b>


4) Viết chương trình nhập vào một số có 4 chữ số. Hiện ra màn hình tổng bình phương các
chữ số của số nói trên.(3đ)


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

<b>Ngày soạn: 10/11/2012</b>


<b>Tiết: 13+14</b>



<b>Chương III: CẤU TRÚC RẼ NHÁNH VÀ LẶP</b>



<b>§9 CẤU TRÚC RẼ NHÁNH</b>




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


<i> </i> - Hiểu nhu cầu của cáu trúc rẽ nhánh trong biểu diễn thuật toán.


- Học sinh nắm vững ý nghĩa và cú pháp của câu lệnh rẽ nhánh dạng khuyết và dạng đủ,
hiểu được cách sử dụng câu lệnh ghép.


<b>2. Kĩ năng.</b>


- Sử dụng cấu trúc rẽ nhánh trong mơ tả thuật tốn của một số bài toán đơn giản.


- Viết được các lệnh rẽ nhánh khuyết, rẽ nhánh đầy đủ và áp dụng được để thể hiện thuật toán
của một số bài toán đơn giản.


<b>II. ĐỒ DÙNG DẠY HỌC</b>
<b> 1. Chuẩn bị của giáo viên</b>


- Sách giáo khoa, sách giáo viên, Hướng dẫn thực hiện chuẩn kiến thức, kĩ năng môn Tin
học THPT.


- Các sơ đồ khối của cấu trúc rẽ nhánh dạng đủ và thiếu.
<b>2. Chuẩn bị của học sinh.</b>


- Sách giáo khoa.


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


<b>1. Hoạt động 1:</b> Ổn định lớp và kiểm tra bài cũ.



<b>2. Hoạt động 2:</b> Giáo viên hướng dẫn học sinh tìm hiểu thủ tục nhập dữ liệu và từ bàn
phím.


<i>a) Nội dung:</i>


- Để giải một số bài tốn trên máy tính, ta phải sử dụng một số mệnh đề có dạng: nếu…thì,
nếu….thì….ngược lại thì…. Cấu trúc này gọi là cấu trúc rẽ nhánh.


- Ý nghĩa của cấu trúc rẽ nhánh: Cấu trúc rẽ nhánh là một điều khiển chọn thực hiện hay
không thực hiện công việc phù hợp với một điều kiện đang xảy ra.


- Mọi ngơn ngữ lập trình đều có các câu lệnh để mô tả cấu trúc rẽ nhánh.
<i>b) Hoạt động:</i>


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh</b>
<b>GV:</b> Cho ví dụ về 1 câu điều kiện?


<b>GV:</b> Chọn hai câu làm ví dụ. Từ đó phân tích
cho học sinh thấy cấu trúc rẽ nhánh thể hiện
trong ví dụ này.


<b>HS:+ </b>Nếu em thuộc bài thì 10 điểm…
+ Nếu tối nay trời mưa thì em nghỉ học
ngược lại thì em đi học….


<b>3. Hoạt động 3</b>: Tìm hiểu cú pháp, ý nghĩa và cách thực hiện câu lệnh rẽ nhánh dạng đủ và
thiếu.


<i>a)</i> <i>Nội dung:</i>



 Cú pháp:


- Dạng thiếu IF <điều kiện> THEN <câu lệnh>;


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

 Cách thực hiện:


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


- Bước 2: Nếu biểu thức điều kiện nhận giá trị đúng thì câu lệnh 1/câu lệnh được thực
hiện; nếu biểu thức điều kiện nhận giá trị sai thì câu lệnh 2 được thực hiện. Trong
trường hợp câu lệnh rẽ nhánh dạng thiếu thì kết thúc câu lệnh IF và chuyển qua các
câu lệnh tiếp theo.


 Sơ đồ khối:


 Ví dụ:


- Tìm giá trị lớn nhất của hai số a,b.
C1: If a>b then max:=a else max:=b;
C2: max:=a;


If max<b then max:=b;


- Viết câu lệnh cho biết pt bậc 2 có nghiệm hay khơng?
If delta<0 then write(‘PT vo nghiem!’)


Else write(‘PT co nghien’);


<i>b)</i> <i>Hoạt động:</i>



<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh</b>
<b>GV:</b> Nêu cú pháp câu lệnh rẽ nhánh dạng đủ và dạng


khuyết.


<b>GV:</b> Treo bảng phụ và giải thích q trình thực hiện
câu lệnh rẽ nhánh dạng đủ và dạng khuyết.


<b>H: </b>Gọi học sinh viết câu lệnh so sánh để tìm Max(a,
b) bằng 2 cách.


<b>GV:</b> Có thể chỉ dùng 1 câu lệnh khuyết?
max:=a; if a < b then max:=b;


<b>GV: </b>lưu ý các em trước từ khoá Else khơng có dấu ;
và sau then, sau else chỉ có 1 lệnh chương trình.


<b>GV:</b> Với 2 dạng này, dạng nào thuận tiện hơn?


<b>GV:</b>Gọi học sinh viết câu lệnh kiểm tra pt bậc 2có
nghiệm hay khơng?


<b>HS:</b> Quan sát và ghi chép.


<b>HS:</b> Lên bảng viết:
If a > b then max:= a;
If a < b then max:= b;
Hoặc: If a > b then max:=a
Else max:=b;



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

<b>4. Hoạt động 4</b>: Tìm hiểu về câu lệnh ghép trong các ngơn ngữ lập trình nói chung và Pascal
nói riêng; Tìm hiểu một số chương trình có sử dụng cấu trúc rẽ nhánh


<i>a) Nội dung:</i>


- Trong các ngơn ngữ lập trình nói chung, câu lệnh ghép thương được sử dụng cho một sô
các công việc được thực hiện khi cùng thoả mãn một điều kiện nào đó.


- Trong ngơn ngữ Pascal câu lệnh ghép có dạng:
Begin


<các câu lệnh>;
End;


 Một số ví dụ:


Viết chương trình giải phương trình bậc hai với các hệ số a,b,c được nhập
vào từ bàn phím.


Program ptb2;


Var a, b, c, d, x1, x2: real;
Begin


Write(‘ Nhap a, b, c:’);
Readln(a,b,c);


d := b*b – 4*a*c;



If d < 0 then Write(‘ PT vo nghiem’)
Else


If d=0 then writeln(‘PT co nghiem kep x=’,-b/(2*a):6:2)
Else


Begin


Write(‘ PT co 2 nghiem phan biet :’);
x1:= (- b – sqrt(d))/(2*a);


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


Write(‘x1=’,x1:6:2, ‘x2=’,x2:6:2);
End;


Readln
end.


<i>b) Hoạt động</i>:


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh</b>
<b>GV:</b> Muốn thực hiện nhiều lệnh sau if hoặc sau


then thì làm thế nào?


<i>→</i> Dẫn đến khái niệm và cách dùng câu lệnh
ghép: nếu trong cấu trúc rẽ nhánh, sau THEN có
từ 2 lệnh trở lên thì gộp thành câu lệnh ghép, đặt
các lệnh đó trong cặp từ khoá Begin…end; với


Pascal


<b>H:</b> Gọi học sinh nêu thuật toán giải PT bậc hai?


<b>GV:</b> Nhận xét, bổ sung.


<b>GV:</b> Phân nhóm và yêu cầu học sinh thảo luận


<b>HS: </b> Phát biểu ý kiến của mình.


<b>Đ: </b>B1:Nhập a, b, c.
B2: Tính d = b2<sub> – 4ac;</sub>


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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh</b>


nhóm để viết chương trình thể hiện thuật toán
trên. Ghi lời giải vào bảng phụ.


<b>GV:</b> Yêu cầu đại diện nhóm lên treo bảng lời giải
và trình bày.


Cho các nhóm khác nhận xét.


<b>GV:</b> chính xác hố lời giải của HS và cho điểm.


x1,2 = 2


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


<i>a</i>



 




<b>HS:</b> Thảo luận theo nhóm và trình bày lời
giải vào bảng phụ:


<b>HS:</b> Đại diện nhóm lên treo bảng lời giải
và trình bày.


Các nhóm khác nhận xét.


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

<b>Ngày soạn: 26/11/2012</b>


<b>Tiết: 15</b>



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


<b>I. Mục tiêu:</b>


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


- Củng cố lại cho học sinh các số kiến thức về cấu trúc rẽ nhánh dạng đủ và dạng thiếu.
- Học sinh biết sử dụng cấu trúc rẽ nhánh


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


- Học sinh biết sửa lỗi một chương trình, dự đốn kết quả của chương trình cho trước.
- Học sinh viết được một số chương trình thơng qua các câu lệnh nhập xuất, lệnh gán và


caâ lệnh rẽ nhánh.



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


- Giáo viên: sách giáo khoa, sách bài tập và một số bài tập tham khảo thêm.
- Học sinh: sách giáo khoa, sách bài tập.


<b>III. Phương pháp:</b>


- Vấn đáp
- Gợi mở
- Nêu vấn đề


<b>IV. Hoạt động dạy-học</b>


<b>1.</b> <b>Hoạt động 1:</b> Ổn định lớp và kiểm tra bài cũ.


<b>2.</b> <b>Hoạt động 2:</b> Học sinh dự đoán kết quả của một chương trình cho trước.
Cho biết kết quả khi thực hiện chương trình sau:


Program bt1;
Var a,b: word;
Begin


A:=5;b:=8;


If (amod2=0) and (bmod2=0) then writeln(‘Tong hai so a va b la so le’)
Else


Writeln(‘Tong cua a va b la so chan’);
Readln;



End.


<b>3.</b> <b>Hoạt động 3:</b> Rèn luyện cho học sinh cách viết câu lệnh rẽ nhánh
Viết đoạn chương trình chứa các câu lệnh IF để tính:


2 2 2 2


2 2


2 2


1



)

1



0.5

1



<i>x</i>

<i>y neu x</i>

<i>y</i>



<i>a y</i>

<i>x y neu x</i>

<i>y</i>

<i>va y x</i>


<i>neu x</i>

<i>y</i>

<i>va y x</i>







<sub></sub>










)

<i>x</i>

<i>y</i>



<i>b z</i>



<i>x y</i>











<sub>nếu điểm (x,y) thuộc đường tròn (I,r)</sub>


<b>4.</b> <b>Hoạt động 4:</b> Rèn luyện cho học sinh các kĩ năng về viết các chương trình .


1) Viết chương trình nhập vào toạ độ 3 điểm, kiểm tra 3 điểm đó có tạo thành tam giác
khơng? Nếu có hãy tính diện tích tam giác đó.


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

<b>Ngày soạn: 03/12/2012</b>


<b>Tiết: 16+17</b>



<b>ÔN TẬP</b>


<b>A. MỤC TIÊU, YÊU CẦU:</b>



- Ôn tập và hệ thống các kiến thức cũng như rèn luyện về kĩ năng ban đầu khi học sinh mới
tiếp xúc với ngơn ngữ lập trình.


- Học sinh nắm và vận dụng được các cấu trúc rẽ nhánh và lặp vào các bài toán cụ thể.


<b>B. PHƯƠNG PHÁP VÀ PHƯƠNG TIỆN:</b>


- Đàm thoại
- Gợi mở
- Nêu vấn đề


<b>C. TIẾN TRÌNH LÊN LỚP, NỘI DUNG BÀI GIẢNG:</b>
<b>1. Hoạt động 1: </b>Ổn dịnh lớp.


<b>2. Hoạt động 2: </b>Củng cố lại các kiến thức đã học về ngơn ngữ lập trình, các kiểu dữ liệu trong
Pascal, cấu trúc chương trình thơng qua các câu trắc nghiệm.


<i><b> Câu 1) </b></i><b>Chọn phát biểu sai trong các phát biểu sau :</b>


<b>A.</b> Nói chung, chương trình thường gồm hai phần : phần khai báo và phần thân;


<b>B.</b> Phần thân chương trình nhất thiết phải có;


<b>C.</b> Phần khai báo nhất thiết phải có; (*)


<b>D.</b> Phần thân chương trình có thể khơng chứa một lệnh nào;
<i><b> Câu 2) </b></i>Xét chương trình Pascal cho khung dưới đây :


Chọn phát biểu sai trong các phát biểu dưới đây :



<b>A.</b> Khai báo tên chương trình là <i>vi du </i>(*)


<b>B.</b> Khai báo tên chương trình là <i>vi_du</i>


<b>C.</b> Thân chương trình có hai câu lệnh


<b>D.</b> Chương trình khơng có khai báo hằng


<i><b> Câu 3) </b></i>Chọn phát biểu đúng trong các phát biểu sau :


<b>A.</b> Mọi ngơn ngữ lập trình đều có các kiểu dữ liệu chuẩn là : kiểu nguyên, kiểu thực,
kiểu kí tự, kiểu lơgic;


<b>B.</b> Quy định về phạm vi giá trị và kích thước bộ nhớ lưu trữ một giá trị của các kiểu
dữ liệu chuẩn trong mọi ngơn ngữ lập trình là như nhau;


<b>C.</b> Dữ liệu kiểu byte có 256 giá trị từ 0, 1, 2, …, 255; (*)


<b>D.</b> Dữ liệu kiểu kí tự chỉ có 256 giá trị;
<i><b> Câu 4) </b></i>Cho các gợi ý về khai báo biến như sau :


 Nên đặt tên biến sao cho gợi nhớ đến ý nghĩa của biến đó.
 Khơng nên đặt tên biến quá ngắn.


 Không nên đặt tên biến quá dài, dễ mắc lỗi khi gõ tên biến trong chương trình.


 Khi khai báo biến cần chú ý đến phạm vi giá trị của nó để chọn kiểu biến cho phù hợp.
Có bao nhiêu gợi ý đúng ?


<b>PROGRAM</b> vi_du;



<b>BEGIN</b>


Writeln(‘Xin chao cac ban’);


Writeln(‘Moi cac ban lam quen voi Pascal’);


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

<b>B.</b> 2 gợi ý đúng;


<b>C.</b> 3 gợi ý đúng;


<b>D.</b> 4 gợi ý đúng; (*)


<i><b> Câu 5) </b></i>Cho một chương trình cịn lỗi như sau :


Tìm kết luận đúng nhất về lỗi của chương trình trong các kết luận sau :


<b>A.</b> Thiếu Begin


<b>B.</b> Không khai báo biến d


<b>C.</b> Thiếu Begin và khơng khai biến d (*)


<b>D.</b> Khơng có END.


<i><b> Câu 6) </b></i>Trường hợp nào sau đây không phải là lệnh gán trong Pascal ?


<b>A.</b> a := 10 ;


<b>B.</b> a + b := 1000 ; (*)



<b>C.</b> cd := 50 ;


<b>D.</b> a := a*2 ;


<i><b> Câu 7) </b></i>Hãy chọn phương án ghép đúng nhất . Để mô tả cấu trúc rẽ nhánh trong thuật
tốn, nhiều ngơn ngữ lập trình bậc cao dùng câu lệnh <b>IF – THEN</b>, sau <b>IF</b> là <<i>điều kiện</i>> .
<i>Điều kiện</i> là


<b>A.</b> biểu thức lôgic; (*)


<b>B.</b> biểu thức số học;


<b>C.</b> biểu thức quan hệ;


<b>D.</b> một câu lệnh;


<i><b> Câu 8) </b></i><b>ELSE</b> <<i>câu lệnh 2</i>>, <i>câu lệnh 2</i> được thực hiện khi


<b>A.</b> biểu thức <i>điều kiện</i> đúng và <i>câu lệnh 1</i> thực hiện xong;


<b>B.</b> <i>câu lệnh 1</i> được thực hiện;


<b>C.</b> biểu thức <i>điều kiện</i> sai; (*)


<b>D.</b> biểu thức <i>điều kiện</i> đúng;


<i><b> Câu 9) </b></i>Hãy chọn cách dùng sai . Muốn dùng biến X lưu giá trị nhỏ nhất trong các giá trị
của hai biến A, B có thể dùng cấu trúc rẽ nhánh như sau :



<b>A.</b> if A <= B then X := A else X := B;


<b>B.</b> if A < B then X := A; (*)


<b>C.</b> X := B; if A < B then X := A;


<b>D.</b> if A < B then X := A else X := B;


<i><b> Câu 10) </b></i>Chọn phát biểu sai trong các phát biểu sau đây :


<b>A.</b> Để mô tả việc lặp đi lặp lại một số thao tác (hoặc câu lệnh) trong một thuật tốn
ta có thể dùng cấu trúc lặp.


<b>B.</b> Tùy từng trường hợp cụ thể (khi mơ tả một thuật tốn), khi thì ta biết trước số lần
lặp, khi thì ta khơng cần hoặc không xác định được trước số lần lặp các thao tác
nào đó.


<b>C.</b> Có thể dùng cấu trúc lặp để thay cho cấu trúc rẽ nhánh trong mơ tả thuật tốn. (*)


<b>D.</b> Khơng thể mơ tả được mọi thuật tốn bằng ngơn ngữ lập trình bậc cao nếu khơng
dùng cấu trúc lặp.


Var


A, b, c : real ;


A := 1; b := 1; c := 5 ;
d := b*b – 4*a*c ;
writeln(‘d = ’,d);



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

<b>3. Hoạt động 3: </b>Rèn luyện kĩ năng đọc-hiểu chương trình.
Cho biết kết quả khi thực hiện đoạn chương trình sau:
a) S:=0;


For i:=1 to 9 do


If i mod 3=0 then s:=S+i
Else s:=s-i;


Write(‘S=’,S);
b) i:=1;P:=1;
while (i<=6) do
begin


p:=p*i;
i:=i+2;
end;


write(‘P=’,P);


<b>4. Hoạt động 4: </b>Rèn luyện kĩ năng lập trình.


1) Viết chương trình tính tổng bình phương các số lẻ từ 1 đến n với n nguyên dương cho
trước,được nhập vào từ bàn phím.


2) Viết chương trình tính S=20<sub>+2</sub>1<sub>+2</sub>2<sub>+….+2</sub>N<sub> với n ngun dương cho trước.</sub>


3)Viết chương trình tính 2 3
1 1 1



....


3 3 3  <sub> cho đến khi số hạng cuối cùng nhỏ hơn 0.0001 (</sub>
3


1


0.0001


<i>n</i>  <sub>)</sub>


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

<b>Ngày soạn:10/12/2012</b>


<b>Tiết: 18</b>



<b>KIỂM TRA HỌC KÌ I</b>


<b>I. Mục tiêu đánh giá:</b>


- Kiểm tra, đánh giá khả năng tiếp thu kiến thức, kĩ năng của học sinh về: Các thành
phần cơ sở của ngơn ngữ Pascal, phép tốn, biểu thức, các kiểu dữ liệu chuẩn, câu lệnh
gán, tổ chức vào/ra đơn giản, tổ chức rẽ nhánh và lặp.


- Đánh giá khả năng tổ chức 1 chương trình Pascal với các cấu trúc cơ bản.


<b>II.Ma trận đề:</b>
<b>Cấp độ</b>
<b>Chủ </b>


<b>đề</b>


<b>Nhận biêt</b> <b>Thông hiểu</b> <b>Vận dụng</b> <b>Cộng</b>


<b>Cấp độ thấp</b> <b>Cấp độ cao</b>


<b>TN</b> <b>TL</b> <b>TN</b> <b>TL</b> <b>TN</b> <b>TL</b> <b>TN</b> <b>TL</b>


<i>Chương I</i> Câu 7 Câu 5


<i>Sổ câu:2</i>
<i>Số điểm: </i>
<i>0.8 Tỉ lệ: </i>
<i>8%</i>


<i>Chương II</i> Câu 2 Câu 1,4 Câu 9 Câu


1a,b Câu 1c,d,3


<i>Sổ câu:6</i>
<i>Số điểm:5.1</i>
<i>Tỉ lệ:51%</i>


<i>Chương III</i> Câu


6,8,10,3


Câu 2 Câu 3


<i>Sổ câu:6</i>
<i>Sổ điểm:4.1</i>
<i>Tỉ lệ: 41%</i>


<b>III. Đề kiểm tra:</b>



<b>ĐỀ KIỂM TRA HKI</b>


<b>MÔN: TIN HỌC 11</b>



<b>--- </b><b> </b>


<i><b>---Thời gian: 45 phút (không kể thời gian giao đề)</b></i>


<b>I. Phần trắc nghiệm (4 điểm): Mỗi câu trả lời đúng được 0.4 điểm</b>


<b>Câu 1. Chọn phát biểu sai trong các phát biểu sau đây : </b>


<b>A. </b>Trong Pascal, phép chia số thực (kí hiệu là "/") cũng áp dụng được cho chia hai số
nguyên


<b>B. </b>Trong Pascal, phép chia số nguyên (kí hiệu là div) cũng áp dụng được cho hai số thực
<b>C. </b>Trong máy tính, khơng thể chia một số cho số nhỏ tùy ý (tùy ý sát gần giá trị 0)


<b>D. </b>Hầu hết các ngôn ngữ lập trình đều có các phép tốn số học và phép toán quan hệ
<b> Câu 2. Cho x và y là các biến đã khai báo kiểu thực, câu lệnh nào sau đây là đúng ? </b>


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

<b> Câu 3. Hãy chọn phương án ghép đúng . Với cấu trúc rẽ nhánh IF <</b><i><b>điều kiện</b></i><b>> THEN </b>
<b><</b><i><b>câu lệnh 1</b></i><b>> ELSE <</b><i><b>câu lệnh 2</b></i><b>>, </b><i><b>câu lệnh 2</b></i><b> được thực hiện khi </b>


<b>A. </b>biểu thức <i>điều kiện</i> đúng và <i>câu lệnh 1</i> thực hiện xong <b>B. </b><i>câu lệnh 1</i> được thực hiện
<b>C. </b>biểu thức <i>điều kiện</i> sai <b>D. </b>biểu thức <i>điều kiện</i> đúng
<b> Câu 4. Phát biểu nào dưới đây là hợp lí nhất ? </b>


<b>A. </b>Biến là đại lượng được đặt tên và có giá trị thay đổi trong q trình thực hiện chương
trình.



<b>B. </b>Biến có thể lưu trữ nhiều loại giá trị khác nhau
<b>C. </b>Biến có thể đặt hoặc khơng đặt tên gọi


<b>D. </b>Biến là đại lượng nhận giá trị trước khi chương trình thực hiện


<b> Câu 5. Phát biểu nào dưới đây là sai khi nói về biên dịch và thơng dịch ? </b>


<b>A. </b>Một ngơn ngữ lập trình có thể có cả chương trình thơng dịch và chương trình biên dịch
<b>B. </b>Chương trình dịch của ngơn ngữ lập trình bậc cao gọi là biên dịch cịn thơng dịch là
chương trình dịch dùng với hợp ngữ


<b>C. </b>Biên dịch và thơng dịch đều kiểm tra tính đúng đắn của câu lệnh


<b>D. </b>Thông dịch lần lượt dịch và thực hiện từng câu lệnh còn biên dịch phải dịch trước tồn
bộ chương trình sang mã nhị phân thì mới có thể thực hiện được


<b> Câu 6. Hãy chọn phương án ghép đúng nhất . Để mô tả cấu trúc rẽ nhánh trong thuật </b>
<b>tốn, nhiều ngơn ngữ lập trình bậc cao dùng câu lệnh IF - THEN, sau IF là <</b><i><b>điều kiện</b></i><b>> . </b>


<i><b>Điều kiện</b></i><b> là </b>


<b>A. </b>biểu thức số học <b>B. </b>biểu thức quan hệ <b>C. </b>biểu thức lôgic <b>D. </b>một câu lệnh
<b> Câu 7. Phát biểu nào dưới đây chắc chắn sai ? </b>


<b>A. </b>Chương trình được tạo thành từ tổ hợp các câu lệnh và các khai báo cần thiết về biến,
hằng, hàm, … <b>B. </b>Lập trình và chương trình là hai khái niệm tương đương, đều là
cách mơ tả thuật tốn bằng ngơn ngữ lập trình


<b>C. </b>Lập trình là viết chương trình



<b>D. </b>Chương trình chưa chắc là đã đúng nếu cho kết quả đúng với rất nhiều bộ dữ liệu vào
<b> Câu 8. Phát biểu nào sau đây có thể lấy làm biểu thức điều kiện trong cấu trúc rẽ </b>
<b>nhánh? </b>


<b>A. </b>"A nho hon B" <b>B. </b>A > B <b>C. </b>N mod 100 <b>D. </b>A + B
<b> Câu 9. Những biểu thức nào sau đây có giá trị TRUE ? </b>


<b>A. </b>( 4 > 2 ) and not( 4 + 2 < 5 ) or ( 2 > 4 div 2 )
<b>B. </b> ( 3 < 5 ) or ( 4 + 2 < 5 ) and ( 2 < 4 div 2 )


<b>C. </b>4 + 2 * ( 3 + 5 ) < 18 div 4 * 4 <b>D. </b> ( 20 > 19 ) and ( 'B' < 'A' )


<b> Câu 10. Hãy chọn phương án ghép đúng . Với cấu trúc rẽ nhánh IF <</b><i><b>điều kiện</b></i><b>> THEN </b>
<b><</b><i><b>câu lệnh</b></i><b>>, </b><i><b>câu lệnh</b></i><b> đứng sau THEN được thực hiện khi </b>


<b>A. </b>điều kiện được tính tốn và cho giá trị đúng <b>B. </b>điều kiện được tính tốn xong
<b>C. </b>điều kiện khơng tính được <b>D. </b>điều kiện được tính tốn và cho giá trị sai


<b>II.</b> <b>Phần tự luận: (6 điểm)</b>


<b>Câu 1(2 điểm): Biểu diễn các biểu thức sau trong Pascal:</b>


3
/ 2x 5x


<i>a</i> 


2 3



/ (2x 3x )(4x+5)


<i>b</i> 


6
2
2x 6x
/


(3x 5)


<i>c</i> 




2


/ 2 (2x+3) 5


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

<b>VAR</b> x,y,z:integer;


<b>BEGIN</b>


x:=10;y:=50;z:=5;


if x<y then z:=x-y else z:=y-x;
if z<0 then


begin



writeln(‘chuc cac em thi tot!’);
writeln(x:4,y:4,z:4);


end
else


writeln(‘bai kiem tra hoc ki khong qua kho’);


<b>END.</b>


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

<b>Ngày soạn: 02/01/2013</b>


<b>Tiết: 19+20+21</b>



<b>§10 CẤU TRÚC LẶP</b>


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


- Biết được cấu trúc chung của lệnh lặp for trong ngơn ngữ lập trình Pascal.
- Biết sử dụng đúng hai dạng lệnh lặp For trong ngơn ngữ lập trình Pascal.


- Biết được ý nghĩa của cấu trúc lặp có số lần lặp chưa xác định .
- Biết được cấu trúc chung của lệnh lặp While trong ngôn ngữ Pascal.
- Biết được sự thực hiện của máy khi gặp lệnh lặp While.


<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 được một số bài toán đơn


giản.


- 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 được một số bài tốn
đơn giản.


<b>II. ĐỒ DÙNG DẠY HỌC.</b>
<b> 1. Chuẩn bị của giáo viên.</b>


- Sách giáo khoa, sách giáo viên, Hướng dẫn thực hiện chuẩn kiến thức, kĩ năng môn Tin
học THPT.


- Máy vi tính, máy chiếu Overhead, bìa trong, bút dạ, máy chiếu Projector,


<b> 2. Chuẩn bị của học sinh.</b>


- Sách giáo khoa.


<b>III. HOẠT ĐỘNG DẠY – HỌC</b>
<b>Tiết 19+20</b>


<b>1.Hoạt động 1:</b> Ổn định lớp và kiểm tra bài cũ.


<b>2. Hoạt động 2</b>: Tìm hiểu ý nghĩa của cấu trúc lặp.
<i> a. Nội dung:</i>


Bài tốn 1: Viết chương trình tính tổng S = 1/a+ 1/a+1 + 1/a+2 + ....+ 1/a+100.
Bài toán 2: Một người có số tiền là S, ơng ta gửi tiền 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 tiết kiệm (không rút tiền lãi hàng tháng), ông ta được số tiền
là bao nhiêu?


<i> b</i>. Các bước tiến hành:


<b>HƯỚNG DẪN CỦA GIÁO VIÊN</b> <b>HOẠT ĐỘNG CỦA HỌC SINH</b>


1. Nếu bài toán đặt vấn đề như bài toán 1.
- Hãy xác định cơng thức tốn học để tính
tổng?


- Gợi ý phương pháp: Ta xem S như là một
cái thùng, các số hạng như là những cái ca có
dung tích khác nhau, khi đó việc tính tổng
trên tương tự việc đổ các ca nước vào trong
thùng S.


- Có bao nhiêu lần đổ nước vào thùng?


1. Chú ý quan sát bài toán đặt vấn đề.
- Rất khó xác định được cơng thức.


- Theo dõi gợi ý.


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

<b>HƯỚNG DẪN CỦA GIÁO VIÊN</b> <b>HOẠT ĐỘNG CỦA HỌC SINH</b>


thứ i đổ bao nhiêu?



- Phải viết bao nhiêu lệnh?


2. Nêu bài toán đặt vấn đề như bài toán 2.
- Em hiểu như thế nào về cách tính tiền gửi
tiết kiệm trong bài toán 2.




- Từ đó, hãy lập cơng thức tính tiền thu được
sau tháng thứ nhất.


- Ta phải thực hiện tính bao nhiêu lần như
vậy?


- Dẫn dắt: Chương trình được viết nhơ vậy
sẽ rất dài, khó đọc và dễ sai sót. 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ả các ngơn ngữ lập trình đều có
một cấu trúc điều khiển việc thực hiện lặp lại
so với số lần đã định trước.


3. Chia lớp thành 4 nhóm. 2 nhóm viết thuật
tốn giải quyết bài tốn 1, 2 nhóm viết thuật
tốn giải quyết bài tốn 2 lên bìa trong.


- Thu kết quả, chiếu kết quả lên bảng. Gọi


học sinh nhóm khác nhận xét đánh giá.


- Chuẩn hóa lại thuật tốn cho học sinh lần
cuối.


- Phải viết 100 lệnh.


2. Chú ý quan sát và trả lời các câu hỏi.
- Với số tiền S, sau mỗi tháng sẽ có tiền lãi
là 0,015*S.


- Số tiền này được cộng vảôtng số tiền ban
đầu để tính lãi cho tháng tiếp theo.


- S: = S + 0,015*S;


- Phải thực hiện tính 12 lần như vậy.


- Tập trung theo dõi giáo viên trình bày.


3. Thảo luận theo nhóm để viết thuất tốn:
Bước 1: N <– 0; S <– 1/a;


Bước 2: N <– N+1;


Bước 3: nếu : N>100 thì chuyển đến bước 5.
Bước 4 : S <– S+1/(a+N),



Quay lại bước 2.


Bước 5 : Đưa S ra màn hình rồi kết thúc.
- Thông báo kết quả viết được.


- Nhận xét, đánh giá kết quả của nhóm
khác.


- Theo dõi và ghi nhớ.


<b>3. Hoạt động 3:</b> Tìm hiểu lệnh lặp For của ngơn ngữ lập trình Pascal.
a. Nội dung:


 <b>Dạng tiến:</b>
- Cấu trúc:


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


- Giải thích:


+ Biến đếm: Là biến kiểu nguyên, kí tự hoặc miền con.


+ Giá trị đầu, giá trị cuối là biểu thức cùng kiểu với biến đếm. Giá trị đầu phải nhỏ hơn
hoặc bằng giá trị cuối.


- Sự thực hiện của máy:


+ Bước 1: Tính giá trị đầu, gán cho biến đếm.



+ Bước 2: Nếu biến đếm <= giá trị cuối thì thực hiện lệnh cần lặp.
+ Bước 3: Tăng biến đếm lên 1 và quay lại bước 1.


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

 <b> Dạng lùi:</b>


- Cấu trúc : <b>For <biến đếm>:=<giá trị cuối> Downto <giá trị đầu> Do <lệnh cần lặp>;</b>
- Giải thích:


+ Giá trị đầu phải lớn hơn hoặc bằng giá trị cuối.
- Sự thực hiện của máy:


+ Bước 1: tính giá trị đầu, gán cho biến đếm.


+ Bước 2: Nếu biến đếm>=giá trị cuối thì thực hiện lệnh cần lặp
+ Bước 3: Giảm biến đếm xuống 1 và quay lại bước 1.


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


<b>HƯỚNG DẪN CỦA GIÁO VIÊN</b> <b>HOẠT ĐỘNG CỦA HỌC SINH</b>


1. Yêu cầu học sinh nghiên cứu sách giáo
khoa và cho biết cấu trúc chung của For?
- Giải thích:


< Biến đếm>: Là biến kiểu nguyên, kí tự.
- Hỏi : ý nghĩa của <Giá trị đầu> <Giá trị
cuối>, Kiểu dữ liệu của chúng.


- Hỏi: Trong bài toán gửi tiết kiệm, <Giá trị
đầu> <Giá trị cuối> là bao nhiêu?



- Hỏi : Trong bài tốn tính tổng <Giá trị
đầu> <Giá trị cuối> là bao nhiêu?


- Dẫn dắt : Những lệnh nào cần lặp lại ta
đặt sau Do.


- Hỏi : Khi nhiều lệnh khác nhau cần lặp lại
ta viết như thế nào?


- Hỏi : Trong bài toán gửi tiết kiệm, lệnh
nào cần lặp lại?


- Hỏi : Trong bài tốn tính tổng, lệnh nào
cần lặp lại?


- Hỏi : Em có nhận xét gì về giá trị của
<Giá trị đầu> <Giá trị cuối> ?


- Dẫn dắt: Khi đó lệnh For được gọi là For
tiến. Ngơn ngỡ lập trình Pascal cịn có một
dạng For khác gọi là For lùi.


2. Yêu cầu: Hãy trình bày cấu trúc chung của
For lùi.




- Hỏi : So sánh <Giá trị đầu> <Giá trị cuối>?
- Hỏi : Trong hai bài toán trên, dạng lệnh


For nào là phù hợp?


1. Đọc sách giáo khoa và trở lời


For <Biến đếm>:=<giá trị đầu> To <Giá trị
cuối> Do <lệnh cần lặp>;


- Dùng để làm giới hạn cho biến đếm.
- Cùng kiểu với <Biến đếm>


<Giá trị đầu> là 1; <Giá trị cuối> là 12.


<Giá trị đầu> là 1; <Giá trị cuối> là 100.


- Phải sử sụng cấu trúc lệnh ghép .


S : = S + 0,015*S;
1


1


<i>S</i>


<i>a i</i>


 



<Giá trị đầu> <Giá trị cuối>


2. Nghiên cứu sách giáo khoa, suy nghĩ, so
sánh với cấu trúc của For tiến để trả lời.
For <biến đếm>:=<giá trị cuối>


Downto <giá trị đầu> Do <lệnh cần lặp>;
<Giá trị đầu> <Giá trị cuối>


- Sử dụng dạng For tiến là phù hợp .


<b>4. Hoạt động 4:</b> Rèn luyện kĩ năng vận dụng lệnh lặp For.
a<i>. Nội dung:</i>


Ví dụ 1: Viết chương trình tính tổng
S = 1/a+ 1/a+1 + 1/a+2 + ....+ 1/a+100.


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

<i>b. Các bước tiến hành:</i>


<b>HƯỚNG DẪN CỦA GIÁO VIÊN</b> <b>HOẠT ĐỘNG CỦA HỌC SINH</b>


1. Nêu nội dung bài toán 1. Mục tiêu là xác
định được những việc chính cần làm.


+ Xác định giá trị đầu, giá trị cuối.
+ Xác định lệnh cần lặp lại.


- Yêu cầu học sinh tiếp tục hồn thành
chương trình ở nhà.



2. Nêu nội dung bài toán2, mục tiêu là viết
được chương trìn hồn thiện.


- Định hướng những vấn đề chính.


- Chia lớp thành 3 nhóm. Yêu cầu học sinh
viết chương trình lên giấy bìa trong.


- Thu phiếu học tập, chiếu lên bảng, gọi học
sinh nhóm khác nhận xét và đánh giá.


- Chính xác hóa bài làm của học sinh bằng
chương trình mẫu.


1. Chú ý lắng nghe và trả lời các yêu cầu của
giáo viên.


- Giá trị đầu là 1, Giá trị cuối là 100.
1


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


 




2. Chú ý lắng nghe nội dung và yêu cầu.




- Cùng thảo luận và viết chương trình theo
nhóm.




- Quan sát chương trình giáo viên hướng dẫn
và ghi nhớ.


<b>Tiết 21</b>


<b> 1. Hoạt động 1 : </b>Tìm hiểu ý nghĩa của cấu trúc lặp có số lần chưa xác định .
a.Nội dung:


Bài toán 1: Viết chương trình tính tổng:


S = 1/a + 1/a+1 + 1/a+2 + ... + 1/a+N + ... cho đến khi 1/a+N <0,0001.


Bài tốn 2: Một người có số tiền là S đồng, ông ta gửi tiét kiệm ngân hàng với số lãi suất
1,5% tháng. Hỏi sau bao nhiêu tháng người đó có số tiền lớn hơn S1 đồng?


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


<b>HƯỚNG DẪN CỦA GIÁO VIÊN</b> <b>HOẠT ĐỘNG CỦA HỌC SINH</b>


- Nêu nội dung của bài toán 1.


+ Hỏi : Sự khác nhau của bài toán này với


bài toán đã viết ở tiết trước?


+ Hỏi : Lặp lại bao nhiêu lần?
+Hỏi : Lặp đến khi nào?
- Nêu nội dung của bài toán 2.


+ Hỏi : Sự khác nhau trong bài toán này với
bài toán đã giải trong tiết trước?


+ Hỏi: Số lần lặp của lệnh?
+ Hỏi : Lặp đến khi nào?


- Tiểu kết vấn đề: Qua hai ví dụ ta thấy có


- Chú ý lắng nghe, quan sát và suy nghĩ để trả
lời.


+ 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 ngay được.


+ Đến khi điều kiện
1/a+N < 0,0001 được thỏa mãn.


- Chú ý lắng nghe, quan sát và suy nghĩ trả
lời.


+ Bài trước : Biết số tháng, hỏi số tiền.
+ Bài này: Biết số tiền, hỏi số tháng.



+ Chưa biết trước, đó chính là số tháng cần
tìm .


+Đến khi số tiền thu được > S1 đồng.


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

<b>HƯỚNG DẪN CỦA GIÁO VIÊN</b> <b>HOẠT ĐỘNG CỦA HỌC SINH</b>


một dạng bài tốn có sự lặp lại của một số
lệnh nhưng không biết trước số lần lặp. Cần
có một cấu trúc điều khiển lặp lại một công
viêc nhất định khi thỏa mãn một điều kiện nào
đó.


<b> 2. Hoạt động 2:</b> Tìm hiểu cấu trúc lệnh lặp While trong ngơn ngữ lập trình Pascal.
a. Nội dung:


- Cấu trúc: While<điều kiện>Do <lệnh cần lặp>;
- Giải thích:


Điều kiện : Là biểu thức quan hệ hoặc biểu thức logic.
- Sự thực hiện cuả máy:


+ Bước 1: Tính giá tị của <điều kiện>.


+ Bước 2: Nếu<điều kiện> Có giá trị đúng thì thực hiện câu lệnh cần lặp.
+ Bước 3: Quay lại bước 1.


- Sơ đồ khối



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


<b>HƯỚNG DẪN CỦA GIÁO VIÊN</b> <b>HOẠT ĐỘNG CỦA HỌC SINH</b>


1. Yêu cầu học sinh nghiên cứu sách giáo
khoa và cho biết cấu trúc chung của lệnh lặp
While.


- Giải thích:


+ <Điều kiện>: Là biểu thcứ quan hệ hoặc
biểu thức logic, là điều kiện để lặp lại.


- Hỏi : trong bài toán 1: Điều kiện để lặp lại
là gì?


- Hỏi : Trong bài toán 2: Điều kiện để lặp
lại là gì?


+ <Lệnh cần lặp>: Là các lệnh cần phải lặp
lại.


- Hỏi : Trong hai bài toán trên lệnh cần lặp
là gì?


- Hỏi: Một sự khác nhau trong lệnh cần lặp
của For và While là gì?


- Dựa vào cấu trúc chung, hãy cho biết máy
sẽ thực hiện tính <điều kiện> trước hay thực


hiện <lệnh cần lặp> trước?


2. Yêu cầu học sinh vẽ sơ đồ cấu trúc lên
bảng.


- Gọi học sinh đánh giá nhận xét.


- Tiểu kết cho vấn đề bằng cách treo sơ đồ
mãu và giải thích.


1. Tham khảo sách giáo khoa và trả lời.
- Cấu trúc chung


While <điều kiên> Do <lệnh cần lặp>;
1/a+M >0,0001


S < S1


S:= S + 0,015*S để tính số tiền.
t:= t + 1; để tính số tháng.
S := S + 1/(a + i) để tính tổng.
i := i + 1; để tăng tỉ số.


- While phải có lệnh tăng biến chỉ số.
- Quan sát, suy nghĩ và trả lời:


+ tính biểu thức điều kiện trước.
+ Thực hiện lệnh cần lặp sau.


2. Lên bảng vẽ sơ đồ cấu trúc của lệnh


While.


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

a. Nội dung:


Ví dụ 1: Một ngưới có số tiền là S, ông ta gửi tiết kiệm ngân hàng với lãi suất 1,5% /tháng.
Hỏi sau bao nhiêu tháng người đó có số tiền lớn hơn S1 đồng?


Ví dụ 2: Viết chương trình nhập vào hai số nguyên dương a và b. Tìm ước số chung lớn nhất
của hai số đó.


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


<b>HƯỚNG DẪN CỦA GIÁO VIÊN</b> <b>HOẠT ĐỘNG CỦA HỌC SINH</b>


1. Nêu nội dung bài toán 1. Mục tiêu là viết
chương trình hồn thiện.


- Định hướng các vấn đề chính.
+ Xác định điều kiện để tiếp tục lặp.
+ Xác định các lệnh cần lặp.


- Chia ra làm 3 nhóm. Yêu cầu học sinh
viết chương trình hồn thiện lên bìa trong.
- thu phiếu trả lời, chiếu kết quả bằng máy
Overhead.


- Gọi học sinh nhóm khác nhận xét và
đánh giá.


- Chính xác hóa chương trình cho cả lớp.


2. Nêu nội dung của bài toán 2. Mục tiêu là
phân tích để xác định <điều kiện> và <lệnh
cần lặp>.


- Lấy một ví dụ cụ thể khi tìm ước số
chung của hai số 15 và 25.


m n
15 25
15 10
5 10
5 5


Trả lời: 5 là ước số chung lớn nhất.
- Hỏi: Điều kiện để tiếp tục lặp là gì?
- Hỏi : các lệnh cần lặp lại là gì?


- Yêu cầu học sinh viết chương trình hồn
thiện bài tốn ở nhà.


- Yêu cầu học sinh chỉ ra hai câu hỏi cần
đặt ra khi gặp bài toán dạng này.


1. Chú ý lắng nghe và suy nghĩ trả lời các
câu hỏi định hướng của giáo viên.


- Điều kiện: S < S1


S:= S + 0,015*S để tính số tiền.


t:= t + 1; để tính số tháng.


- Tập trung làm việc theo nhóm để viết
được chương trình hồn thiện.


- Đánh giá đúng – sai và bổ sung.


- ghi nhớ những phần giáo viên sửu chữa.
2. Tập trung theo dõi để thấy được những
công việc cần thực hiện.


- Điều kiện : m<> n


- Lạnh cần lặp: m:=m-n; hoặc n:=n-m;
- Thuật toán:


B1: Nếu m=n thì UC=m, dừng.


B2: Nếu m>n thì m:=m-n ngược lại
n:=n-m; Quay lại B1.


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


<b> IV. ĐÁNH GIÁ CUỐI BÀI.</b>
<b> 1. Những nội dung đã học.</b>



- Cấu trúc chung của lệnh lặp For. Sơ đồ thực hiện của lệnh của lệnh lặp For.
- Ý nghĩa của cấu trúc lặp có số lần chưa xác định.


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

- Sự thực hiện của máy khi gặp lệnh lặp While.


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


- Giải bài tập 4, 5, 6, 7, 8, sách giáo khoa trang 51.
- Viết chương trình tính tổng:


S = 1/a + 1/a+1 + 1/a+2 + ... + 1/a+N + ... cho đến khi 1/a+N <0,0001.


- Đọc lại lệnh rẽ nhánh IF và làm các bài tập liên quan, chuẩn bị cho tiết sau thực hành.
- Xem nội dung bài thực hành số 2, sách giáo khoa trang 49.


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

<b>Ngày soạn: 15/01/2013</b>


<b>Tiết: 22</b>



<b>Bµi tËp vµ thùc hµnh 2</b>



<b>A. MỤC TIÊU, YÊU CẦU:</b>


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


- Nắm chắc cấu trúc và sơ đồ thực hiện của cấu trúc rẽ nhánh.


<i><b>2. Kĩ năng:</b></i>


- 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ố bài tốn cụ
thể.



- Làm quen với các cơng cụ phục vụ và hiệu chỉnh chương trình.


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


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


<b>B. PHƯƠNG PHÁP VÀ PHƯƠNG TIỆN:</b>
<b>1. </b><i><b>Phương pháp:</b></i>


Kết hợp phương pháp giảng dạy như: truyền thống, vấn đáp, có hình minh hoạ.


<i><b>2. Phương tiện:</b></i>


- GV: Chuẩn bị phòng máy và các thiết bị liên quan
- HS: Thực hành và nghe giảng trên máy.


<b>C. TIẾN TRÌNH LÊN LỚP, NỘI DUNG BÀI GIẢNG:</b>
<b>I. Ổn định lớp:</b>


Yêu cầu lớp trưởng báo cáo sĩ số.


<b>II. Kiểm tra bài cũ và gợi động cơ bài học:</b>


- Giới thiệu bài học.


<b>III. Bài giảng, nội dung bài giảng:</b>


<b>1. Làm quen với một chương trình và các cơng cụ hiệu chỉnh chương trình.</b>



<i><b>a. Mục tiêu:</b></i>


- Học sinh hiểu đượ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 như: thực hiện từng bước và
xem kết quả trung gian.


<i><b>b. Nội dung:</b></i>


- Ba số nguyên dương a, b, c được gọi là bộ số Pitago nếu tổng bình phương của 2 số
bằng bình phương của hai số cịn lại.


u cầu: Viết chương trình nhập từ bàn phím 3 số nguyên dương a, b, c và kiểm tra xem
chúng có 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</b> <b>Hoạt động của học sinh</b>


- GV: Cho cả lớp lên phòng máy.


- GV: Phổ biến nội quy phòng máy, yêu cầu học
sinh phải có trách nhiệm bảo vệ tất cả trang thiết bị.


<b>1. Gợi ý để học sinh nêu khái niệm về bộ số</b>
<b>Pitago</b>.


- Yêu cầu : lấy VD cụ thể.


- Hỏi: Để kiểm tra bộ 3 số a, b, c bất kỳ có phải là
bộ Pitago, ta phải kiểm tra các đẳng thức nào?



<b>2. Yêu cầu học sinh thực hiện các thao tác soạn</b>
<b>chương trình, lưu, thực hiện từng lệnh chương</b>


- Học sinh lắng nghe và thực hiện.


<b>1. Chú ý lắng nghe</b>


- Tổng bình phương của 2 số bằng bình
phương của 2 số cịn lại.


- VD 5 4 3
- a2<sub> = b</sub>2<sub> + c</sub>2


b2 = <sub>a</sub>2<sub> + c</sub>2
<sub>c</sub>2<sub> = a</sub>2<sub> + b</sub>2


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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh</b>


<b>trình.</b>


- Yêu cầu học sinh gõ chương trình mẫu vào máy.
-Yêu cầu học sinh lưu chương trình lên đĩa với tên
Pitago.pas.


- Yêu cầu học sinh thực hiện từng lệnh của chương
trình.


- Yêu cầu học sinh xem kết quả a2, b2, c2



- Yêu cầu học sinh tự tìm thêm một số bộ a b c khác
và so sánh.


<b>cầu của giáo viên.</b>


- Bấm F2, gõ tên Pitago.pas và enter.
- Bấm F7: Nhập các giá trị a=5, b=4, c=3.
- Chon menu Debug để mở cửa sổ hiệu
chỉnh.


- Quan sát quá trình rẽ nhánh của từng bộ
dữ liệu vào và trả lời.


<b>2. Rèn luyện kĩ năng lập trình hồn thiện một bài toán:</b>


<i><b>a. Mục tiêu:</b></i>


- Học sinh biết đọc hiểu đề, phân tích u của đề. Từ đó chon được cấu trúc dữ liệu và
lệnh phù hợp để lập trình.


<i><b>b. Nội dung:</b></i>


- Viết chương trình giải phương trình ax + b = 0.
c. Các bước tiến hành:


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh</b>


<b>1. Nêu nội dung, mục đích, yêu cầu của bài toán.</b>


- Hỏi: Bước đầu tiên để giải bài toán?



- Hỏi: Để xác định ta phải đặt các câu hỏi như thế
nào? Gọi học sinh đặt câu hỏi và gọi học sinh trả lời
cho câu hỏi đó?


- Yêu cầu học sinh phác họa thuật toán.


<b>2. Yêu cầu học sinh gõ chương trình vào máy.</b>


- GV tiếp cận từng học sinh để hướng dẫn và sửa sai.


<b>3. Yêu cầu học sinh nhập dữ liệu 1, 2, -2</b>


<b>1. Chú ý theo dõi vấn đề đặt ra của giáo</b>
<b>viên.</b>


- Xác định Input và output, thuật giải.
- Mục đích của giải phương trình?


+ Kết luận số nghiệm và giá trị nghiệm x.
- Để tính được nghiệm x cần các đại lượng
nào?


+ Cần các đại lượng a, b.


- Có các bước xử lý nào để tính được x?


<b>2. Độc lập soạn chương trình vào máy.</b>


- Thơng báo kết quả viết được.



<b>3. Nhập dữ liệu theo yêu cầu của GV.</b>
<b>IV. Đánh giá cuối bài: </b>


<b>1. Nội dung đã học:</b>


Các bước để hồn thành một chương trình:


- Phân tích bài toán để xác định dữ liệu vào, ra, thuật toán.
- Soạn chương trình vào máy.


- Lưu trữ chương trình.
- Biên dịch.


- Thực hiện và hiệu chỉnh chương trình.


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


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

<b> Ngày soạn:28/01/2013</b>
<b>Tiết: 23</b>


<i><b>Bài tập và thực hành 2:</b></i>



<b>CẤU TRÚC LẶP</b>



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


<b>-</b> Củng cố lại cho học sinh những kiến thức liên quan đến tổ chức lặp: cấu trúc
lặp, sơ đồ thực hiện, sự thực hiện của máy.



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


<b>-</b> Rèn luyện kỹ năng vận dụng và linh họat trong việc lựa chọn cấu trúc lặp phù
hợp để giải quyết bài toán đặt ra.


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


<b>-</b> Tự giác, tích cực, chủ động trong giải quyết các bài tập.


<b>II. Chuẩn bị phương tiện, tài liệu, đồ dùng dạy học;</b>
<b>-</b> <b>Giáo viên: </b>Giáo án, Máy chiếu, phòng máy,...


<b>-</b> <b>Học sinh :</b>vở, Sgk, chuẩn bị bài cũ,…


<b>III. Phương pháp dạy học: </b>


Thực hành + thuyết trình.


<b>IV. Tiến trình tổ chức dạy và học:</b>
<b>1. Ổn định lớp:</b>


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


Nhắc lại kiến thức đã học về tổ chức rẽ nhánh và lặp?


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh</b>
<b>-</b> Yêu cầu hs nhắc lại cấu trúc rẽ nhánh.


<b>-</b> Yêu cầu hs nhắc lại cấu trúc của các


lệnh lặp đã học.


<b>-</b> Độc lập suy nghĩ trả lời.
+ Rẽ nhánh:


IF <điều kiện > THEN <câu lệnh>;


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


<b>-</b> Suy nghĩ và trả lời.
+ Lặp FOR


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


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


+ Lặp WHILE:


WHILE <điều kiện> DO <câu lệnh>;


<b>3. Dẫn dắt vào bài mới:</b> Ở tiết trước chúng ta đã thực hành về cấu trúc rẽ nhánh.
Hôm nay các em vận dụng kiến thức đã học để lập trình một số bài toán về cấu trúc lặp.


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


<i><b>a. Hoạt động 1</b></i> : Rèn luyện kỹ năng vận dụng tổ chức lặp



<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>
<b>Bài 5 (SGK_51)</b>


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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


<i>HS đã làm ở nhà)</i>


- Hỏi: Có thể khai triển biểu thức Y thành
tổng của các số hạng như thế nào?


- Từ phân tích trên đưa ra quy luật của bài
tốn?


- Nhìn vào công khai triển, cho biết N lấy
giá trị trong đoạn nào?


- Hỏi: ta sử dụng cấu trúc điều khiển lặp nào
là phù hợp?


- Yêu cầu viết chương trình .
- HS trình bày lại.


- Gọi hs khác nhận xét, đánh giá, bổ sung.


Y= 1<sub>2</sub> + <sub>3</sub>2 + 3<sub>4</sub> +…..+ <i><sub>n</sub>n</i>


+1


- Thảo luận theo nhóm để viết chương trình.
Program bai5a;



Var y: Real; n: byte;
BEGIN


Y:=0;


For n:=1 to 50 do y:=y+n/(n+1);
Write (‘y=’, y:2:2);


Readln
END.


- Nhận xét, đánh giá, bổ sung các thiếu sót.


<i><b>b. Hoạt động 2</b></i> : Luyện tập


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh</b>


1. Bài 1: Lập trình tính tổng bài toán:
S= 1 + 1<sub>2</sub> + 1<sub>3</sub> + …… + 1<i><sub>n</sub></i> (Với n
=100)


- Phân tích bài tốn:


S1=1; S2=S1+1/2; S3=S2+1/3;
…………. S100=S99 + 1/100


- Từ phân tích trên đưa ra quy luật của bài
tốn?



- Nhìn vào cơng khai triển, cho biết N lấy giá
trị trong đoạn nào ?


- Hỏi : ta sử dụng cấu trúc điều khiển lặp nào
là phù hợp ?


- Chia lớp thành nhiều nhóm, u cầu viết
chương trình .


- Gọi hs khác nhận xét, đánh giá, bổ sung.


Nhận xét bắt đầu từ S2 việc tính S được lặp đi
lặp lại 99 lần theo quy luật


Ssau = Strước + 1/i


Với i chạy từ 2 → 100
- Thuật toán:


+ B1: Nhập N
+ B2: S:=1; i:=2


+ B3: Nếu i > N thì đưa ra S rồi kết thúc
+ B4: S:=S+1/i


+ B5: i:= i +1 rồi quay lại b3


- Thảo luận theo nhóm để viết chương trình.
Program tong;



Var s: Real; n, i:integer;
BEGIN


write(‘ Nhap vao n : ’);
readln(n);


s:=1;


for i:=2 to n do
s:=s+1/i;


Writeln(‘ s = ‘, s:5:1);
Readln


END.
2. Lập trình tính tổng S


S = 1 + 4 + 9 + 16 + 25 + …. + n2


Cho đến khi S >= 300, Cho đến lúc đó n=?
+ Gợi ý hs cách làm.


- Thuật toán:


+ B1: Gán S:=0; N:=0


+ B2: Chừng nào S<300 thì thực hiện
N:=N+1;


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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh</b>



+ Nhận xét cách giải.


+ Sửa nếu cần thiết.


S:=0; N:= 0;


WHILE S<300 DO
Begin


N:=N+1;
S:=S + N*N;
End;


Writeln(‘ N = ’,N);


<b>5. Củng cố dặn dò:</b>


Những nội dung đã học
Có hai cấu trúc lặp :


+ Lặp với số lần đã xác định (FOR - DO)
+ Lặp với số lần chưa xác định (WHILE - DO)


<b>6. Bài tập về nhà</b>


Viết chương trình đếm số chữ số của một số nguyên cho trước.
Giải:


Program demchuso;



Var so:longint; chuso:longint;


Begin Write(‘Nhap mot so nguyen:’); readln(so);
Chuso:=0;


While so <>0 do


Begin so:=so div 10;
Chuso:=chuso +1;
End;


Writeln (‘so chu so=’,chuso);
Readln


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

<b>Ngày soạn:01/02/2013</b>
<b>Tiết:24+25+26+27</b>


<b>CHƯƠNG 4. KIỂU DỮ LIỆU CÓ CẤU TRÚC</b>


<b>§11 KIỂU MẢNG </b>



<b>I. Mục tiêu:</b>


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


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


<b>-</b> Biết cấu trúc tạo kiểu mảng một chiều và cách khai báo biến khiểu mảng một chiều.



<b>-</b> Biết được một kiểu dữ liệu mới là kiểu mảng hai chiều.


<b>-</b> Biết được cách tạo kiểu mảng hai chiều chiều, cách khai báo biến, tham chiếu đến từng
phần tử của mảng.


<i><b>2. Kĩ năng</b></i>


<b>-</b> Nhận biết được các thành phần trong khai báo của mảng một chiều.


<b>-</b> Biết cách khai báo mảng một chiều và truy xuất đến một phần tử của mảng một chiều.


<b>-</b> Tạo được kiểu mảng hai chiều và khai báo biến mảng hai chiều trong ngôn ngữ lập trình
Pascal. Sử dụng đúng biến mảng để giải quyết một số bài toán cụ thể.


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


<i><b>-</b></i> Giáo viên: sách giáo khoa, sách giáo viên, Chuẩn KTKN Tin học THPT.


<i><b>-</b></i> Học sinh:sách giáo khoa


<b>III.Phương pháp:</b>


<b>-</b> Thuyết trình


<b>-</b> Giảng giải


<b>-</b> Gợi mở


<b>IV. Hoạt động dạy học:</b>
<b>Tiết 24+25</b>



<i><b>1. Hoạt động 1: </b></i><b>Ổn định lớp</b>


<b>2.</b> <i><b>Hoạt động 2:</b></i><b>Tìm hiểu ý nghĩa và khái niệm của mảng một chiều</b>.
<i>a. Nội dung:</i>


<b>-</b> Bài tốn ví dụ:Nhập vào nhiệt độ của 7 ngày trong tuần, tính và hiện ra màn hình nhiệt
độ trung bình của tuần đó, số lượng ngày trong tuần có nhiệt độ cao hơn nhiệt độ trung
bình của tuần.


<b>-</b> Giáo viên yêu cầu học sinh nêu cách giải và viết chương trình.


<b>-</b> Giáo viên cho học sinh làm bài toán trên trong trường hợp tổng quát hơn: nhập vào nhiệt
độ của n ngày, tính nhiệt độ trung bình. <sub></sub> Sự cần thiết sử dụng mảng một chiều.


 <b>Khái niệm và đặc điểm của mảng một chiều:</b>


<b>-</b> Là dãy hữu hạn các phần tử có cùng kiểu.


<b>-</b> Mảng được đặt tên và mỗi phần tử của nó có một chỉ số.


<b>-</b> Để mơ tả mảng một chiều cần xác định kiểu của các phần tử và cách đánh số các phần
tử của nó.


<b></b>


<i>-b. Hoạt động</i>:


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>



<b>-</b> Nêu đề bài tốn ví dụ.


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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


<b>-</b> Hỏi: Khi N lớn thì chương trình trên có
những hạn chế như thế nào?


<b>-</b> Dẫn dắt: Để khắc phục những 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
một tên và đánh cho một phần tử một chỉ
số.


<b>-</b> Yêu cầu học sinh tham khảo sách giáo
khoa và hỏi: Em hiểu như thế nào về mảng
một chiều?


<b>-</b> Giáo viên đưa ra một số ví dụ trong thực
tế về mảng một chiều.


<b>-</b> Hỏi: Để mô tả mảng một chiều, ta cần xác
định những yếu tố nào?


<b>-</b> Học sinh nhận xét được trong trường hợp
n lớn thì phải khai báo quá nhiều biến.
Chương trình phải viết rất dài.


<b>-</b> Nghiên cứu sách giáo khoa để trả lời.


<b>-</b> Mảng một chiều là dãy hữu hạn các phần


tử có cùng kiểu dữ liệu. Các phần tử trong
mảng có cùng chung một tên và phân biệt
nhau bởi chỉ số.


<b>-</b> Để mô tả mảng một chiều cần xác định
được kiểu của các phần tử và cách đánh số
các phần tử của nó.


<b>3.</b> <i><b>Hoạt động 3:</b></i><b>Tạo kiểu mảng một chiều và khai báo biến mảng.</b>


<i>a. Nội dung:</i>


 <b>Khai báo mảng một chiều: có hai cách</b>


<i><b>-</b></i> <i>Khai báo trực tiếp: </i><b>Var</b> <tên biến mảng>:array[chỉ số đầu..chỉ số cuối] of <kiểu pt>;


<i><b>-</b></i> <i>Khai báo gián tiếp: </i><b>Type <</b>tên kiểu mảng>= array[chỉ số đầu..chỉ số cuối] of <kiểu pt>;


<b>Var <</b>tên biến mảng>: <tên kiểu mảng>;


<b>-</b> Giải thích:


+ Chỉ số đầu..chỉ số cuối là một đoạn số nguyên liên tục.


+ Chỉ số đầu, chỉ số cuối là các hằng hoặc biểu thức nguyên (chỉ số đầu chỉ số cuối)
+ Kiểu phần tử là kiểu chung của các phần tử trong mảng (là một trong các kiểu dữ liệu đã
biết).


+ Số phần tử tối đa của mảng là chỉ số cuối- chỉ số đầu +1



<b>-</b> Ví dụ: Để khai báo một mảng a chứa 100 các số thực ta khai báo như sau:
+ Cách 1: <b>Var</b> a:array[1..100] of real;


+ Cách 2: <b>Type</b> sothuc=array[1..100] of real’


<b>Var </b> a: sothuc;


<b>-</b> Để truy xuất đến một phần tử trong mảng ta thực hiện: tên biến mảng[chỉ số];
Ví dụ: Để truy xuất đến phần tử thứ 5 trong mảng a đã khai báo ở trên ta thực hiện a[5]
 <b>Một số lưu ý:</b>


<b>-</b> Không thể nhập hay xuất giá trị của một biến mảng một chiều như nhập hay xuất giá trị
của một biến kiểu đơn giản mà phải nhập hay xuất từng phần tử của mảng.


<i><b>-</b></i> Do mảng là dãy các phần tử được đánh chỉ số bởi các giá trị liên tục nên khi thực hiện
thao tác nhập, xuất, xử lí mảng thường gắn với câu lệnh FOR- DO.


<i><b>-</b></i> Khi khai báo kiểu mảng cần xác định kích thước (số phần tử) của mảng.
<i>b. Hoạt động:</i>


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


<b>-</b> Yêu cầu học sinh nghiên cứu sách giáo
khoa và cho biết cách tạo kiểu dữ liệu
mảng một chiều trong ngôn ngữ lập trình
Pascal.


<b>-</b> Giáo viên nêu lại cú pháp và giải ý nghĩa


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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>



các thành phần trong khai báo.


<b>-</b> Giáo viên cho một ví dụ để minh họa.


<b>-</b> Yêu cầu một số học sinh cho các ví dụ
khác


<b>-</b> Giáo viên cho sẵn một số khai báo kiểu
mảng một chiều, yêu cầu học sinh nhận
biết khai báo đúng, khai báo sai.


Type


Arrayr=array[1..200] of real;
Arrayr=array[byte] of real;
Arrayb=array[-100..0] of boolean;


<b>-</b> Chú ý cho học sinh về cách đặt tên kiểu
dữ liệu và tên biến, tránh nhầm lẫn.


<b>-</b> Giới thiệu cách tham chiếu đến từng phần
tử của mảng một chiều. Yêu cầu học sinh
lấy một ví dụ.


<b>-</b> Giáo viên yêu cầu học sinh khai báo biến
cho hai bài toán đã nêu ra ở đầu bài học.


<b>-</b> Học sinh cho một số ví dụ.



<b>-</b> Quan sát bảng và chọn khai báo đúng.
Arrayr=array[1..200] of real;


Arrayb=array[-100..0] of boolean;


<b>-</b> Theo dõi hướng dẫn của giáo viên và độc
lập suy nghĩ để trả lời.


a[1] là phần tử ở vị trí 1 của mảng a.
a[i] là phần tử ở vị trí i của mảng a.


<b>-</b> Học sinh viết các khai báo biến


<b>4. Củng cố, dặn dò: </b>Học sinh về nhà viết chương trình bài tốn 1 và chuẩn bị bài tốn ví dụ
trong sách giáo khoa trang 57.


<b>Tiết 26: </b>


<b>1.</b> <i><b>Hoạt động 1</b></i><b>:Ổn định lớp và kiểm tra bài cũ</b>


<b>-</b> Viết cú pháp khai báo mảng một chiều.


<b>-</b> Cho 2 ví dụ minh họa.


<b>-</b> Nêu được ý nghĩa của một khai báo biến mảng một nhiều.


<i><b>2.</b></i> <b>Hoạt động 2:Rèn luyện kĩ năng sử dụng kiểu mảng một chiều thông qua một số ví dụ</b>


<i><b>a.</b></i> <i>Nội dung:</i>



 Hướng dẫn học sinh tìm thuật tốn và viết chương trình sử dụng kiểu mảng một chiều
đối với 2 bài toán đã nêu ở tiết trước.


+ Hướng dẫn học sinh viết chương trình bài toán 1.


+ Đưa ra trường hợp tổng quát cho bài toán 2 và học sinh tự viết.


 Hướng dẫn học sinh tìm hiểu ví dụ 1 trong sách giáo khoa: Bài tốn tìm phần tử lớn
nhất của một dãy số nguyên và cho biết chỉ số của phần tử lớn nhất..


Chương trình bài tốn như sau:


<b>Program</b> tim_max;


<b>Var</b> n,i,max,csmax:integer;
a: array[1..200] of integer;


<b>Begin</b>


write(‘nhap so phan tu cua day’);
readln(n);


For i:=1 to n do
Begin


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

max:=a[1];csmax:=1;
For i:= 2 to n do


If a[i]>max then
begin



max:=a[i];
csmax:=i;
end;


writeln(‘Gia tri cua phan tu lon nhat la:’,max);
writeln(‘Chi so cua phan tu lon nhat la:’,csmax);
readln;


<b>End.</b>


 <b>Sau khi học sinh đã viết chương trình giáo viên cần lưu ý cho học sinh các điểm</b>


<b>sau</b>:


<b>-</b> Dùng mảng có kiểu phần tử là nguyên để biểu diễn một dãy hữu hạn số nguyên và cách
khai báo mảng này.


<b>-</b> Câu lệnh FOR-DO thứ nhất trong chương trình dùng để nhập các phần tử cho mảng.


<i><b>-</b></i> Câu lệnh FOR-DO thứ hai trong chương trình thể hiện vòng lặp dùng để duyệt tuần tự
các phần tử trong mảng để tìm phần tử lớn nhất trong từng thời điểm.


<i><b>b.</b></i> <i>Hoạt động:</i>


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


<b>-</b> Giáo viên nhắc lại đề bài


<b>-</b> Yêu cầu học sinh xác định dữ liệu vào, dữ


liệu ra, trình bày thuật tốn.


<b>-</b> Hỏi: Nếu khơng sử dụng biến mảng một
chiều, ta có thể giải quyết được bài tốn
khơng? Khó khăn gì không?


<b>-</b> Định hướng: Sử dụng kiểu mảng một
chiều để giải quyết bài tốn và nêu lại,giải
thích thuật tốn đã tìm hiểu ở tiết trước.


<b>-</b> Chia lớp thành 6 nhóm. u cầu các nhóm
thảo luận và viết chương trình lên giấy bìa
trong.


<b>-</b> Giáo viên nhận xét, sữa chữa và bổ sung
các chương trình học sinh đã viết.


<b>-</b> Đối với bài tốn ví dụ trong sách giáo
khoa trang 56 giáo viên có thể phát vấn để
học sinh đưa ra cách giải, hướng dẫn học
sinh khai báo biến và trình bày thuật tốn
chi tiết để học sinh viết chương trình.


<b>-</b> Giáo viên nhận xét, sữa chữa và bổ sung


<b>-</b> Quan sát đề bài, theo dõi những yêu cầu
cần giải quyết của đề bài.


<b>-</b> Vào: 7 số là giá trị nhiệt độ của 7 ngày
trong tuần.



<b>-</b> Ra: Số ntb là nhiệt độ trung bình trong
tuần và số nch là số ngày có nhiệt độ cao
hơn nhiệt độ trung bình.


<b>-</b> Nếu khơng sử dụng biến mảng một chiều
ta vẫn có thể viết chương trình theo đúng
yêu cầu đặt ra nhưng như vậy thì chương
trình dài dịng, khó sửa đổi...


<b>-</b> Theo dõi sự hướng dẫn của giáo viên
Type tuan=array[1..7] of real;


Var ndtuan: tuan;


- Nhập giá trị cho mảng a.


- Tính trung bình cộng giá trị của mảng.


- Đếm số phần tử có giá trị lớn hơn trung bình
cộng tính được.


<b>-</b> Học sinh thảo luận theo nhóm để viết
chương trình.


<b>-</b> Báo cáo kết quả viết được.


<b>-</b> Nhận xét, đánh giá và bổ sung những thiếu
sót của nhóm khác.



<b>-</b> Quan sát và ghi nhớ.


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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


chương trình đã viết của học sinh.


<b>-</b> Nhắc cho học sinh các lưu ý và giải thích
một số điểm trong chương trình.


<b>3. Củng cố, dặn dị: </b>Học sinh về nhà xem và chuẩn bị bài tốn ví dụ 2 trong sách giáo khoa
trang 57


<b>Tiết 27:</b>


<i><b>1. Hoạt động 1: </b></i><b>Ổn định lớp và kiểm tra bài cũ:</b>


<b>2.</b> <i><b>Hoạt động 2:</b></i><b> Rèn luyện kĩ năng sử dụng kiểu mảng một chiều thơng qua một số ví dụ</b>


<i>a. Nội dung:</i>


 Hướng dẫn học sinh tìm hiểu ví dụ 2 trong sách giáo khoa: Bài toán sắp xếp dãy số
nguyên bằng thuật toán tráo đổi.


Chương trình bài tốn như sau:


<b>Program</b> sxtang;


<b>Var</b> n,i,j,t:integer;


a: array[1..200] of integer;



<b>Begin</b>


write(‘nhap so phan tu cua day’);readln(n);
For i:=1 to n do


Begin


write(‘Phan tu thu’,i,’la’);
readld(a[i]);


End;


For j:=n down to 2 do
For i:= 1 to j-1 do


If a[i]>a[i+1] then
begin


t:=a[i];
a[i]:=a[i+1];
a[i+1]:=t;
end;


writeln(‘Day so da sap xep tang dan la’);
For i:=1 to n do write(a[i]: 4);


readln;


<b>End.</b>



 <b>Sau khi học sinh đã viết chương trình giáo viên cần lưu ý cho học sinh các điểm</b>


<b>sau:</b>


<b>-</b> Khái niệm lượt: sau lượt (lần) duyệt thứ nhất giá trị lớn nhất xếp đúng vị trí về cuối
dãy. Tương tự sau lượt duyệt thứ 2, giá trị lớn thứ hai được xếp ở vị trí sát cuối…Sau
mỗi lượt có ít nhất một phần tử xếp đúng vị trí. Trong thuật tốn phải thực hiện bao
nhiêu lượt như vậy, mỗi lượt thực hiện trên đoạn nào của dãy số? Giá trị j chính là chỉ
số phần tử cuối trong đoạn được duyệt của lượt. Như vậy sau mỗi lượt duyệt j giảm đi 1
đơn vị, đây chính là câu lệnh for j:=n down to 2 với biến đếm j chạy ngược từ n về 2.


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

begin


t:=a[i];a[i]:=a[i+1];a[j]:=t;
end;


Giá trị biến đếm i chính là chỉ số phần tử được lấy ra so sánh với phần tử kề sau nó
trong dãy số


 Tìm hiểu và viết chương trình bài tốn tìm kiếm nhị phân (Nội dung giảm tải)
<i>b. Hoạt động</i>:


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


<b>-</b> Giáo viên giới thiệu đề bài và yêu cầu học
sinh xác định dữ liệu vào, dữ liệu ra.


<b>-</b> Giáo viên nhắc lại tư tưởng và các bước
của thuật toán sắp xếp bằng tráo đổi cho


học sinh .


- Ý tưởng chung của bài toán sắp xếp là so
sánh các cặp phần tử liền kề nhau nếu
không thoả mãn tính chất dãy khơng giảm
thì hốn đổi vị trí cho nhau.


<b>-</b> Thuật tốn:


+ Nhập n và a1, a2,…, an


+ Sử dụng hai vòng lặp chạy ngược nhau
để thực hiện việc so sánh và đổi chỗ các
cặp phần tử liền kề nhau chưa thoả mãn
điều kiện sắp xếp.


<b>-</b> Để thời gian cho học sinh chuyển từ thuật
tốn sang viết chương trình theo nhóm.
<b>-</b> Giáo viên nhận xét, đánh giá, sửa chữa, bổ


sung các chương trình của học sinh viết.
<b>-</b> Nêu ra các nhận xét, lưu ý trong thuật toán


và trong chương trình.


<b>-</b> Đối với bài tốn tìm kiếm nhị phân, giáo
viên chỉ giới thiệu đề bài, hướng dẫn cho
học sinh nắm được thuật tốn, cịn phần viết
chương trình học sinh về nhà viết (xem như
bài tập về nhà)



<b>-</b> Quan sát đề bài, theo dõi những yêu cầu
cần giải quyết của đề bài.


<b>-</b> Vào: số nguyên dương n và dãy a có n số
nguyên.


<b>-</b> Ra: dãy số đã sắp xếp không giảm.


<b>-</b> Học sinh lắng nghe và theo dõi sự hướng
dẫn của giáo viên


<b>-</b> Học sinh thảo luận theo nhóm để viết
chương trình.


<b>-</b> Báo cáo kết quả viết được.


<b>-</b> Nhận xét, đánh giá và bổ sung những thiếu
sót của nhóm khác.


<b>-</b> Quan sát và ghi nhớ.


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

<b>Ngày soạn:18/02/2013</b>
<b>Tiết:28+29</b>


<b>BÀI THỰC HÀNH SỐ 3</b>



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


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



- Nhận biết khai báo mảng.


- Biết cách nhập dữ kiệu cho mảng từ bàn phím.


- Biết cách duyệt phần tử của mảng và truy cập từng phần tử của mảng.


<i><b>2. Kĩ năng</b></i>


- Nâng cao kĩ năng sử dụng một số lệnh kiểu dữ liệu mảng một chiều trong lập trình, cụ thể:
+ Khai báo kiểu dữ liệu mảng một chiều.


+ Nhập/xuất dữ liệu cho mảng.


+ Duyệt qua tất cả các phần tử của mảng để xử lý từng phần tử.
- Biết giải một số bài toán cơ bản thường gặp:


+ Tính tổng các phần tử thoả mãn điều kiện nào đó.
+ Đếm số các phần tử thoả mãn điều kiện nào đó.
+ Tìm phần tử lớn nhất, nhỏ nhất.


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


- Góp phần rèn luyện tác phong, tư duy lập trình: Tự giác, tich cực, chủ động và sáng
tạo trong tìm kiếm kiến thức.


<b>II. CHUẨN BỊ CỦA GIÁO VIÊN VÀ HỌC SINH</b>


<i><b>-</b></i> Giáo viên: sách giáo khoa, sách giáo viên, Chuẩn KTKN Tin học THPT.



<i><b>-</b></i> Học sinh:sách giáo khoa


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


<i><b>1. Hoạt động 1: </b></i> Tìm hiểu cách sử dụng lệnh và kiểu dữ liệu mảng một chiều qua chương
trình có sẵn.


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


1. Tìm hiểu chương trình ở câu a, sách giáo khoa,
trang 63 và chạy thử chương trình.


- Chiếu chương trình lên bảng.


- Hỏi: Khai báo Uses CRT; có ý nghĩa gì?
- Hỏi: Myarray là tên kiểu dữ liệu hay tên biến?
- Hỏi: Vai trị của nmax và n có gì khác nhau?
- Hỏi: Những dòng lệnh nào dùng để tạo biến
mảng a?


- Thực hiện chương trình để học sinh thấy kết quả.
- Hỏi: Lệnh gán a[i]:=random(300)-random(300)
có ý nghĩa gì?


- Hỏi: Lệnh For i:=1 to n do Write(A[i]:5); có ý
nghĩa gì?


- Hỏi: Lệnh For-Do cuối cùng thực hiện nhiệm vụ
gì?



- Hỏi: Lệnh s:=s+a[i]; được thực hiện bao nhiêu
lần?


1. Quan sát, chú ý và trả lời.


- Khai báo thư viện chương trình con Crt
để sử dụng được thủ tục Clrscr;


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


- nmax là số phần tử tối đa có thể chứa của
biến mảng a. n là số phần tử thực tế của a.
- Lệnh khai báo kiểu và khai báo biến.
- Quan sát chương trình thực hiện và kết
quả trên màn hình.


- Lệnh sinh ngẫu nhíên giá trị cho mảng a
từ -299 đến 299.


- In ra màn hình giá trị của từng phần tử
trong mảng a.


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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


thấy kết quả.


2. Sửa chương trình câu a để được chương trình
giải quyết bài toán ở câu b.


- Chiếu lên màn hình các lệnh cần thêm vào


chương trình ở câu a.


- Hỏi: Ý nghĩa của biến Posi và neg?
- Hỏi: Chức năng của lệnh?


If a[i]>0 then posi:=posi+1
else if a[i]<0 then neg:=neg+1;


- Yêu cầu học sinh thêm vào vị trí cần thiết để
chương trình đếm được số .


- Yêu cầu học sinh gõ nội dung và lưu lại với tên
caub.pas. Thực hiện chương trình và báo cáo kết
quả.


hết k.


- Quan sát giáo viên thực hiện chương
trình và kết quả trên màn hình.


2. Quan sát và chú ý theo dõi các câu hỏi
của giáo viên:


- Quan sát các lệnh và suy nghĩ vị trí cần
sửa trong chương trình câu a.


- Dùng để lưu số lượng đếm được.
- Đếm số dương hoặc đếm số âm.


- Chỉ ra vị trí cần thêm vào trong chương


trình.


- Lưu chương trình. Thực hiện chương
trình và thơng báo kết quả.


<i><b>2. Hoạt động 2:</b></i> Rèn luyện kĩ năng lập trình.


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


1. Lấy một ví dụ thực tiễn: Người mù tìm viên sỏi
có kích thước lớn nhất trong một dãy các viên sỏi
để gợi ý cho học sinh thuật tốn tìm giá trị lớn
nhất.


- u cầu: nêu thuật tốn tìm phần tử có giá trị
lớn nhất.


2. Tìm hiểu chương trình tìm chỉ số và giá trị lớn
nhất.


- Chiếu chương trình ví dụ, sách giáo khoa, trang
64.


- Hỏi: Vai trò của biến j trong chương trình?
- Hỏi: Nếu muốn tìm phần tử nhỏ nhất, cần sửa ở
chỗ nào?


- Hỏi: Nếu muốn tìm phần tử lớn nhất với chỉ số
lớn nhất ta sửa ở chỗ nào?



3. Đặt yêu cầu mới: Viết chương trình đưa ra các
chỉ số của các phần tử có giá trị lớn nhất.


- Hỏi: Cần giữ lại đoạn chương trình tìm giá trị
lớn nhất khơng?


- Hỏi: Cần thêm lệnh nào nữa?
- Hỏi: Vị trí thêm các lệnh đó?


- u cầu: Viết chương trình hồn thiện.


- u cầu học sinh nhập dữ liệu vào của giáo viên
và báo kết quả.


- Đánh giá kết quả của học sinh.


1. Theo dõi ví dụ của giáo viên.


- So sánh lần lượt từ trái sang phải, giữ lại
chỉ số của phần tử lớn nhất.


2. Quan sát chương trình, suy nghĩ và trả
lời.


- Giữ lại chỉ số của phần tử có giá trị lớn
nhất.


- Phép so sánh a[i]<a[j]


- Chuyển thứ tự duyệt từ n-1 về 1.



3. Theo dõi yêu cầu, suy nghĩ các câu hỏi
định hướng để viết chương trình.


- Có.


- Lệnh để in ra các chỉ số có giá trị bằng
giá trị lớn nhất tìm được.


- Sau khi tìm được giá trị lớn nhất.


- Soạn chương trình vào máy. Thực hiện
chương trình và thơng báo kết quả.


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

<b>IV. ĐÁNH GIÁ CUỐI BÀI</b>


<i><b>1. Những nội dung đã học</b></i>


Một số thuật tốn cơ bản:


+ Tính tổng các phần tử thoả mãn điều kiện nào đó.
+ Đếm số các phần tử thoả mãn điều kiện nào đó.
+ Tìm phần tử lớn nhất, nhỏ nhất.


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


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

<b>Ngày soạn:25/02/2013</b>
<b>Tiết:30+31</b>


<b>BÀI THỰC HÀNH SỐ 4</b>




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


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


- Củng cố lại các kiến thức cơ bản khi lập trình với kiểu dữ liệu mảng.


- Hiểu cách cài đặt thuật toán sắp xếp các phần tử của một dãy (bằng tráo đổi)


<i><b> 2. Kĩ năng</b></i>


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


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


- Có ý thức lựa chọn thuật tốn có khối lượng tính tốn ít nhất có thể.


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


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


<b>II. CHUẨN BỊ CỦA GIÁO VIÊN VÀ HỌC SINH</b>


<i><b>-</b></i> Giáo viên: sách giáo khoa, sách giáo viên, Chuẩn KTKN Tin học THPT.


<i><b>-</b></i> Học sinh:sách giáo khoa


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



<i><b>1. Hoạt động 1: </b></i>Tìm hiểu chương trình diễn đạt của thuật tốn sắp xếp.


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


1. Gợi ý cho học sinh thuật toán sắp xếp tăng
dần.


- Lấy một ví dụ thực tiễn: Người mù sắp xếp
một dãy các viên bi theo kích thước không
giảm.


- Yêu cầu: Vạch ra các bước để sắp xếp các
phần tử của một mảng không giảm.


2. Tìm hiểu chương trình ví dụ, sách giáo khoa,
trang 65.


- Chiếu chương trình ví dụ lên bảng.


- Hỏi: Vai trị của biến i, j trong chương trình?
mỗi vịng lặp For trong đoạn chương trình sắp
xếp có ý nghĩa gì?


- Hỏi: Ba lệnh tg:=a[i]; a[i]:=a[i+1]; a[i+1]:=tg;
có ý nghĩa gì?


- Thực hiện chương trình, nhập dữ liệu để học
sinh thấy kết quả chương trình.



- Hỏi: Chương trình làm cơng việc gì?


3. Sửa chương trình để giải quyết bài tốn ở
câu b.


- Đặt yêu cầu mới: Khai báo thêm biến nguyên


1. Chú ý theo dõi những dẫn dắt của giáo
viên để trả lời câu hỏi


- Lần lượt lấy từng phần tử từ trái qua phải.
- Cứ mỗi phần tử ta đem so sánh lần lượt với
các phần tử đứng bên phải của nó.


- Nếu nhỏ hơn thì đổi chỗ.


2. Quan sát chương trình, suy nghĩ câu hỏi và
trả lời.


- Biến i, j dùng làm chỉ số.


- Mỗi vòng lặp For ứng với mỗi phép duyệt
lần lượt.


- Dùng để đổi giá trị của hai phần tử a[i] với
a[i+1].


- Quan sát giáo viên thực hiện chương trình.
- Chương trình sắp xếp dãy số thao thứ tự
không giảm.



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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


Dem và bổ sung vào chương trình đoạn lệnh
cần thiết để biến Dem tính số lần thực hiện tráo
đổi trong thuật toán. In kết quả tìm được ra
màn hình.


- Hỏi: Đoạn chương trình nào dùng để thực
hiện tráo đổi giá trị?


- Yêu cầu hoc sinh viết lệnh để đếm số lần tráo
đổi.


- Hỏi: Lệnh này được viết ở vị trí nào trong
chương trình?


- u cầu học sinh soạn chương trình vào máy.
- Yêu cầu học sinh nhập dữ liệu vào của giáo
viên và thông báo kết quả.


- Đánh giá kết quả của học sinh.


tg:=a[i]; a[i]:=a[i+1]; a[i+1]:=tg;
- Dem: = Dem+1;


- Ngay sau đoạn lệnh tráo đổi.


- Soạn chương trình vào máy, thực hiện
chương trình và thơng báo kết quả.



- Nhập dữ liệu theo yêu cầu của giáo viên,
thực hiện chương trình và thơng báo kết quả
sau khi thực hiện.


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


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


1. Xác định bài toán.
- Chiếu đề bài lên bảng.


- Yêu cầu: Xác định dữ liệu vào, dữ liệu ra?
- Gợi ý để học sinh đề xuất thuật tốn thơ.
2. Giới thiệu chương trình chưa cải tiến.
- Chiếu chương trình diễn đạt thuật tốn.


- Thực hiện chương trình để học sinh biết thời
gian thực hiện chương trình và kết quả của
chương trình.


- Hỏi: Trong chương trình phải thực hiện bao
nhiêu phép cộng?


- Hỏi: Có cách nào để cải tiến?


- Lệnh này được thay lệnh nào trong chương
trình? Viết ở vị trí nào?



3. u cầu: Viết chương trình hồn thiện.
4. Tiểu kết: Cùng một bài tốn, có nhiều cách
giải quyết khác nhau. Người lập trình cần chọn
cách sao cho máy thực hiện nhanh nhất.


1. Quan sát đề bài và tả lời câu hỏi.
- Vào: Mảng A gồm n phần tử.
- Ra: Mảng B gồm n phần tử.


- Tại vị trí i ta tính tổng giá trị các phần tử từ
1 đến i.


2. Quan sát chương trình trên bảng.


- Quan sát giáo viên thực hiện, nhận xét về
thời gian thực hiện chương trình.


- Phải thực hiện n(n+1)/2 phép cộng.


- Để tính bước thứ i, ta sử dụng kết quả đã
tính ở bước thứ i-1.


B[i]:=B[i-1]+A[i];
- Thay đoạn lệnh


For j:=1 to i do B[i]:=B[i]+A[j];


3. Soạn chương trình vào máy, thực hiện
chương trình và thơng báo kết quả.



- Nhận xét về thời gian thực hiện của chương
trình này so với chương trình trước khi cải
tiến.


<b>IV. ĐÁNH GIÁ CUỐI BÀI</b>


<i><b>1. Những nội dung đã học</b></i>


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

- Một bài tốn có thể có nhiều cách viết thành một chương trình. Cần chọn cách có số
phép tính ít nhất.


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


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

<b>Ngày soạn: 03/3/2013</b>
<b>Tiết : 32+33+34</b>


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

<b> </b>



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


<i><b>1. Kiến thức</b></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 ký tự với xâu ký tự.


- Biết được cách khai báo biến, nhập xuất dữ liệu, tham chiếu đến từng ký tự của xâu.
- Biết các phép toán liên quan xâu.


- Biết được sự lợi ích của các hàm và thủ tục liên quan xâu trong ngơn ngữ lập trình Pascal.


- Nắm được cấu trúc chung và chức năng của một số hàm và thủ tục liên quan đến xâu của
ngôn ngữ lập trình Pascal.


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


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


<b>II. CHUẨN BỊ CỦA GIÁO VIÊN VÀ HỌC SINH</b>


<i><b>-</b></i> Giáo viên: sách giáo khoa, sách giáo viên, Chuẩn KTKN Tin học THPT.


<i><b>-</b></i> Học sinh:sách giáo khoa


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


<b>1. Hoạt động 1:</b> Ổn định lớp và kiểm tra bài cũ.


<b>2. Hoạt động 2: </b> Tìm hiểu về xâu và cách sử dụng.
<i>a. Nội dung: </i>


 <b>Khái niệm</b>:


<b>-</b> Xâu là dãy các kí tự trong bảng mã ASCII, mỗi kí tự được gọi là một phần tử của xâu.
Số lượng kí tự trong xâu gọi là độ dài của xâu.


<b>-</b> Các ngôn ngữ lập trình đều có các qui tắc, cách thức cho phép xác định: tên kiểu xâu,


cách khai báo biến, số lượng kí tự trong xâu, các phép tóan đối với kiểu xâu và cáh
tham chiếu đến từng phần tử của xâu.


<b>-</b> Có thể xem xâu là mảng một chiều mà mỗi phần tử là một kí tự. (kiểu phần tử trong
mảng là kiểu kí tự-character)


<b>-</b> Kiểu xâu thường được sử dụng trong lập trình để giải quyết các bài tốn liên quan đến
từ, câu, nguyên âm, phụ âm trong các hệ soạn thảo văn bản.


 Cách khai báo:


<b>-</b> <b>Cú pháp: VAR <tên biến>: STRING[MAX];</b>


Trong đó max là số nguyên dương để chỉ số kí tự tối đa trong xâu. Nếu khơng ghi max thi
ngầm định số kí tự tối đa trong xâu là 255.


<b>-</b> <b>Ví dụ: var </b>cau: string[60]; →Khai báo xâu cau có tối đa 60 kí tự.


<b>Dongchu</b>:string; →Khai báo xâu dongchu có tối đa 255 kí tự.
 <b>Cách tham chiếu đến từng phần tử của xâu:</b>


<b>-</b> Để tham chiếu đến từng phần tử của xâu ta thực hiện theo cú pháp sau: tên biến xâu[chỉ
số]; Trong đó chỉ số là một số nguyên dương chỉ vị trí của kí tự trong xâu.


<b>-</b> Cách tham chiếu đến từng phần tử của xâu giống như cách tham chiếu đến từng phần tử
của mảng.


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

<i>b. Họat động:</i>


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>



 <b>Tìm hiểu ý nghĩa của xâu ký tự.</b>


- Chiếu đề bài của bài tốn đặt vấn đề: Viết chương
trình nhập họ tên của 30 học sinh trong lớp.


- Hỏi: Ta sẽ chọn kiểu dữ liệu như thế nào? Khai
báo biến như thế nào?


- Yêu cầu học sinh: Viết đoạn lệnh để nhập và xuất
dữ liệu cho từng phần tử.


- Hỏi: Có những khó khăn gì gặp phải?


- Dẫn dắt: Cần có một kiểu dữ liệu mới cho phép ta
nhập/xuất dữ liệu cho xâu bằng một lệnh.


 <b>Tìm hiểu về kiểu xâu.</b>


- Chiếu lên bảng cách khai báo biến xâu trong ngơn
ngữ lập trình Pascal.


- Hỏi: Ý nghĩa của từ String, [n]


- Hỏi: Khi khai báo khơng có [n] thì số lượng ký tự
tối đa là bao nhiêu?


- Yêu cầu học sinh cho ví dụ một xâu ký tự
- Hỏi: Xâu có bao nhiêu ký tự?



- Diễn giải: Mỗi ký tự được gọi là một phần tử của
xâu. Số lượng ký tự trong xâu được gọi là độ dài của
xâu.


- Hỏi: Xâu chỉ gồm một ký tự trống được viết như
thế nào? số lượng ký tự bao nhiêu?


- Hỏi: Xâu rỗng được viết như thế nào? số lượng ký
tự bao nhiêu?


 <b>Nhập/xuất dữ liệu cho biến xâu trong ngôn</b>


<b>ngữ Pascal.</b>


- Giới thiệu cấu trúc chung của thủ tục nhập/xuất dữ
liêu.


- Yêu cầu học sinh tìm ví dụ cụ thể.


- Hỏi: Khi viết lệnh nhập/xuất dữ liệu cho biến xâu,
có gì khác so với biến mảng các ký tự.


- Dẫn dắt: Ta có thể sử dụng lệnh gán để nhập giá trị
cho biến xâu. Cấu trúc chung:
tên_biến_xâu:=hằng_xâu;


- u cầu học sinh tìm một ví dụ cụ thể.
 <b>Tham chiếu đến từng ký tự của xâu.</b>
- Giới thiệu cấu trúc chung.



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


- Kiểu mảng một chiều gồm 30 ký tự.
- Khai báo một biến mảng A để lưu họ
tên của một học sinh.


Readln(A[1]);Readln(A[2]);
Readln(A[3]);Readln(A[4]);
...


- Chương trình được viết dài dịng. Khi
nhập dữ liệu, phải thực hiện gõ nhiều
phím.


Quan sát cấu trúc khai báo và tham khảo
sách giáo khoa.


- String là tên kiểu xâu.


- [n] là giá trị quy định số lượng ký tự
tối đa mà biến xâu có thể chứa.


- Số ký tự tối đa là 255
- Ví dụ: ‘HA NOI’


- Xâu có 6 ký tự, dấu cách là một ký tự.
- Ký hiệu của xâu gồm một ký tự trống
là ‘ ’. Xâu này có độ dài là 1.


- Ký hiệu của xâu rỗng là ‘ ’. Xâu này


có độ dài là 0.


3. Quan sát bảng để trả lời.


- Ví dụ: Readln(hoten);


- Ví dụ: Write(‘Ho ten ’,hoten);


- Viết một lệnh nhập nguyên cho cả xâu.
Viết lệnh gọn hơn, chương trình gọn.


- Ví dụ: St:= ‘HA NOI’;


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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


- Hỏi: Có gì giống và khác nhau so với cách tham
chiếu đến từng phần tử của mảng.


- u cầu học sinh tìm một ví dụ.
 <b>Kiểm tra kiến thức.</b>


- Chiếu nội dung bài tập kiểm tra kiến thức:
Var st:string[1]; c:char;


Begin


c:=st[1]; {1}
c:=st; {2}
End.



- Hỏi: Trong hai lệnh {1} và {2}, lệnh nào đúng?
- Thực hiện chương trình để học sinh tự kiểm
nghiệm suy luận.


- Giống cấu trúc chung khi tham chiếu
tên biến[chỉ số]


- Ví dụ: st[2].


5. Quan sát chương trình trên bảng và
độc lập suy nghĩ.


- Lệnh {1} đúng.


- Lệnh {2} sai. Không thể gán một xâu
cho một ký tự.


<b>3. Hoạt động 3:</b> Tìm hiểu các phép toán liên quan đến xâu.
<i>a. Nội dung:</i>


<b>-</b> <b>Phép ghép xâu: </b>+. Ví dụ ’Ha’+’Noi’→’HaNoi’


<b>-</b> <b>Các phép so sánh:</b> <b>>, >=,<,<=, =,<> </b>có thứ tự ưu tiên thực hiện thấp hơn phép ghép
xâu và thực hiện việc so sánh hai xâu theo các qui tắc sau:


+

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


+

Nếu A và B là hai xâu có độ dài khác nhau và A là đoạn đầu của B thì A nhỏ hơn B.



+

Hai xâu đựoc coi là bằng nhau nếu chúng giống nhau hoàn toàn.
<i>b. Hoạt động:</i>


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


 <b>Gợi nhớ các phép toán đã học.</b>


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


 <b>Tìm hiểu chức năng của một số phép toán</b>


<b>trong kiểu xâu qua một số ví dụ. </b>


- Chiếu chương trình ví dụ:
Var st:string;


Begin


st:= ‘Ha’+‘Noi’;
Write(st);


readln;
End.


- 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 để học sinh thấy kết quả.
- Yêu cầu học sinh tìm một số ví dụ khác.


- Hỏi: Chức năng của phép cộng ?



Chú ý theo dõi, suy nghĩ và trả lời.
- Phép toán số học.


- Phép toán so sánh.
- Phép tốn logic.


Quan sát ví dụ, suy nghĩ và trả lời.
- Quan sát chương trình.


- Kết quả cho ta: st = ‘HA NOI’
- Quan sát kết quả chương trình.


Ví dụ: st:= ‘HA NOI’ + ‘Co ho
GUOM’. Kết quả:


st = ‘HA NOICo ho GUOM’


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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


sinh cho biết kết quả.
st:= ‘Ha’ +‘Noi’;
st:= ‘Ha ’+‘Noi’;
st:= ‘ ’ + ‘Ha Noi’;


st:= ‘Ha Noi’ + ‘Việt’ + ‘Nam’;


- Chiếu chương trình ví dụ về phép so sánh xâu.
Var bo:boolean;



Begin


bo:= ‘AB’ < ‘AC’;
Write(bo);


readln;
End.


- 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 để học sinh thấy kết quả.
- Hỏi: Cịn các phép so sánh nào nữa?


- Chiếu các ví dụ về các phép so sánh và yêu cầu
học sinh cho biết kết quả của các phép so sánh đó.
‘AB’ < ‘ABC’


‘AC’ < ‘ABC’


Lưu ý cho học sinh: Một xâu có độ dài nhỏ hơn có
thể lớn hơn (>) xâu có độ dài lớn


st:= ‘HaNoi’;
st:= ‘Ha Noi’;
st:= ‘ Ha Noi’;


st:= ‘Ha NoiViệtNam’;


- Quan sát chương trình để dự tính kết
quả.



- Kết quả là: TRUE


- Quan sát kết quả chương trình để kiểm
chứng suy luận.


- Có các phép <, <=, >=, <>, =
- Kết quả: True.


- Kết quả: False.


<b>4. Hoạt động 4</b><i><b>: </b></i>Tìm hiểu về một số hàm và thủ tục chuẩn liên quan xâu trong ngơn ngữ lập
trình Pascal.


<i>a. Nội dung:</i>


<b>-</b> Hàm <b>length(st)</b>: cho giá trị là độ dài của xâu st.


<b>-</b> Hàm <b>Upcase(ch)</b>: cho chữ cái hoa tương ứng với ch.


<b>-</b> Hàm <b>Pos(s1,s2)</b>: cho vị trí xuất hiện đầu tiên của s1 trong s2


<b>-</b> Hàm <b>Copy(st,vt,n)</b>: tạo xâu mới gồm n kí tự liên tiếp nhau bắt đầu từ vt trong xâu st.


<b>-</b> Thủ tục <b>Delete(st,vt,n):</b> thực hiện việc xóa n kí tự trong xâu s kể từ vt.


<b>-</b> Thủ tục <b>Insert(s1,s2,vt)</b>: chèn xâu s1 vào trong xâu s2 kể từ vt.
<i>b. Họat động:</i>


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>



 <b>Giới thiệu cấu trúc chung của hàm length(st)</b>


<b>lên bảng.</b>


- Hỏi: Ý nghĩa của Length và của st?
- Chiếu chương trình ví dụ:


Var st:string;
Begin


st:= ‘Ha Noi’;
Write(length(st));
readln;


End.


- 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 để học sinh thấy kết quả.
- Hỏi: Chức năng của hàm length() là gì?


- Chiếu đề bài tập ứng dụng: Viết chương trình nhập


Quan sát cấu trúc chung.


- Length: là tên hàm, có nghĩa là độ dài,
st: là một biểu thức xâu ký tự.


- Quan sát chương trình để dự tính kết
quả.



- Kết quả là: 6


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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


một xâu, in ra màn hình số ký tự ‘a’ có trong xâu.
 <b>Giới thiệu cấu trúc chung của hàm</b>


<b>Upcase(ch).</b>


- Chiếu chương trình ví dụ:
Var ch:char;


Begin
ch:= ‘h’;


Write(upcase(ch));
readln;


End.


- 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 để học sinh thấy kết quả.
- Hỏi: Chức năng của hàm upcase()?


- Chiếu bài tập ứng dụng: Viết chương trình nhập
một xâu, in ra màn hình xâu đó dạng in hoa.


 <b>Giới thiệu cấu trúc chung của hàm Pos(s1,s2).</b>
- Chiếu chương trình ví dụ:



Var vt:byte;
Begin


vt:=Pos(‘cd’, ‘abcdefcd’);
Write(vt);


readln;
End.


- 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 để học sinh thấy kết quả.
- Hỏi: Chức năng của hàm pos?


- Thay tham số của hàm Pos trong chương trình bằng
Pos(‘k’, ‘abc’). Hỏi kết quả của hàm bằng bao
nhiêu?


- Chiếu bài tập ứng dụng: Viết chương trình nhập
vào một xâu st. Xét xem trong xâu có dấu cách hay
khơng?


- Hỏi: Có cách giải nào khác?


 <b>Giới thiệu cấu trúc chung của hàm</b>


<b>copy(st,vt,n).</b>


- Hàm cho số lượng ký tự của xâu st.
Quan sát cấu trúc chung của hàm
Upcase.



- Quan sát chương trình để dự tính kết
quả.


- Kết quả là: H


- Quan sát kết quả của chương trình.
- Cho giá trị là chữ cái in hoa của ch.
Var st:string;


Begin
readln(st);


For i:=1 to length(st) do
write(upcase(st[i]));
End.


Quan sát cấu trúc chung của hàm Pos và
các ví dụ để biết chức năng.


- Quan sát chương trình để dự tính kết
quả.


- Kết quả là: 3


- Quan sát kết quả của chương trình.
- Hàm cho giá tri là một số nguyên là vị
trí của xâu st2 trong xâu st2.


- Bằng 0.


Var st:string;
Begin


readln(st);


if pos(‘ ’, st)<>0 then write(‘Co’)
else write(‘Khong’);


End.


- Có thể sử dụng For để tìm dấu cách
trong xâu.


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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


Begin


st:=copy(‘bai tap’,3,4);
Write(st);


readln;
End.


- 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 để học sinh thấy kết quả.
- Hỏi: Chức năng của hàm copy?


- Thay các tham số của hàm copy trong chương trình
ví dụ trên như sau và hỏi kết quả in ra màn hình:
Copy(‘abc’,1,5)



Copy(‘abc’,5,2)
Copy(‘abc’,1,0)


- Thực hiện chương trình để học sinh thấy kết quả.
 <b>Giới thiệu cấu trúc chung của thủ tục</b>


<b>delete(st,vt,n); </b>


- Chiếu chương trình ví dụ:
Var st:string;


Begin


st:= ‘HaNoi’;
delete(st,3,2);
Write(st);
readln;
End.


- 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 để học sinh thấy kết quả.
- Hỏi chức năng của thủ tục delete();


- Thay lệnh gán st:= ‘HaNoi’; và thủ tục xóa bởi các
lệnh sau và hỏi kết quả in ra màn hình.


st:=’abc’; Delete(st,1,5);
st:=’abc’; Delete(st,5,2);
st:=’abc’; Delete(st,1,0);



- Chiếu bài tập ứng dụng: Viết chương trình nhập
một xâu và xoá đi các dấu cách thừa ở đầu xâu.


 <b>Giới thiệu cấu trúc chung của thủ tục</b>


<b>Insert(st1,st2,vt);</b>


- Chiếu chương trình ví dụ:


- Kết quả là: ‘i ta’


- Quan sát kết quả của chương trình.
- Hàm cho giá trị là một xâu ký tự được
lấy trong xâu st, gồm n ký tự bắt đầu tại
vị trí vt.


Cho giá trị là: ‘abc’
Cho giá trị là xâu rỗng
Cho giá trị là xâu rỗng


- Quan sát kết quả của chương trình để
kiểm nghiệm suy luận.


Quan sát cấu trúc chung của thủ tục
Insert và các ví dụ.


- Quan sát chương trình để dự tính kết
quả.



st=’Hai’


- Quan sát kết quả của chương trình.
- Thủ tục thực hiện việc xóa đi trong
biến xâu st gồm n ký tự, bắt đầu từ vị trí
vt.


st:= ‘’; xâu rỗng.
st:= ‘abc’;


st:= ‘abc’;
Var st:string;
begin


readln(st);


while st[1]= ‘ ’ do delete(st,1,1);
writeln(st);


readln;
end.


Quan sát cấu trúc chung của thủ tục
Insert.


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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


Var st1,st2:string;
Begin



st2:=‘HaNoi’;
st1:= ‘ ’;


insert(st1,st2,3);
Write(st);


readln;
End.


- 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 để học sinh thấy kết quả.
- Hỏi chức năng của thủ tục insert();


- Thay lệnh gán st2:=‘HaNoi’; và thủ tục chèn bởi
các lệnh như sau và hỏi kết quả:


st2:=‘ef’; Insert(‘abc’,st2, 5);
st2:=‘ef’; Insert(‘abc’,st2, 0);


quả.


- Kết quả st2=’Ha Noi’


- Quan sát kết quả của chương trình.
- Thủ tục thực hiện việc chèn xâu st1
vào trong biến xâu st2 bắt đầu tại vị trí
vt.


st2= ‘efabc’;
st2= ‘abcef’;



<b>5. Hoạt động 5</b><i><b>: </b></i>Rèn luyện kĩ năng vận dụng hàm và thủ tục.
<i>a. Nội dung:</i>


 <b>Ví dụ 1: Viết chương trình nhập một xâu từ bàn phím và đưa ra màn hình xâu đó</b>


<b>theo thứ tự ngược lại.</b>


Hướng dẫn học sinh xây dựng thuật tốn và sau đó viết chương trình.
Program vd1;


Var n,i:byte;s,s1: string;
Begin


Write(‘nhap vao xau s:’);readln(s);
n:=length(s);s1:=’’;


For i:=n downto 1 do s1:=s1+s[i];


Writeln(‘xau viet theo thu tu nguoc lai la:’,s1);
Readln;


End.


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


<b>thu được từ nó sau khi đã loại bỏ các dấu cách (nếu có).</b>


Giáo viên hướng dẫn học sinh xây dựng thuật tốn và sau đó viết chương trình.
Program vd1;



Var n,i:byte;s,s1: string;
Begin


Write(‘nhap vao xau s:’);readln(s);
n:=length(s);s1:=’’;


For i:=1 to n do


If (s[i]=’ ’) then s1:=s1+s[i];


Writeln(‘xau sau khi xoa bo cac ki tu trong la:’,s1);
Readln;


End.


<i>b. Hoạt động:</i>


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

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


<b>-</b> Xác định dữ liệu vào, dữ liệu ra.


<b>-</b> Giáo viên đặt các câu hỏi gợi ý để học sinh xây
dựng thuật toán.


Giáo viên nhận xét, bổ sung thuật tốn sau đó u
cầu học sinh viết chương trình dựa trên thuật tốn đã
xây dựng.



→ BTVN: Viết chương trình nhập vào một xâu và
cho biết xâu đó có là xâu đối xứng hay không? (xâu
đối xứng là xâu ban đầu và xâu viết ngược lại là
giống nhau)


 <b>Đưa ra bài tốn thứ hai: Viết chương trình</b>


<b>nhập một xâu từ bàn phím và đưa ra màn</b>
<b>hình xâu thu đựơc từ nó sau khi đã lọai bỏ</b>
<b>các dấu cách.</b>


<b>-</b> Giáo viên yêu cầu học sinh xác định dữ liệu vào,
dữ liệu ra.


<b>-</b> Giáo viên đặt các câu hỏi gợi ý để học sinh xây
dựng thuật toán.


<b>-</b> Giáo viên nhận xét, bổ sung thuật tốn sau đó
u cầu học sinh viết chương trình dựa trên
thuật toán đã xây dựng.


Input: xâu s


Output: xâu s1 là xâu viết ngược của s.
Thuật toán:


- Nhập xâu s


- tạo xâu s1 bằng cách lấy từng kí tự
trong s theo thứ tự từ phải sang.



→sử dụng vòng lặp for lùi


Input: xâu s


Output: xâu s đối xứng hoặc xâu s
khơng đối xứng.


Thuật tốn:
- Nhập xâu s


- Tạo xâu s1 là xâu s viết theo thứ tự đảo
ngược.


- so sánh xâu s1 và s. Nếu s1=s thì thơng
báo s là xâu đối xứng, ngồi ra thơng
báo xâu s khơng là xâu đối xứng.


<b>IV. ĐÁNH GIÁ CUỐI BÀI</b>


<i><b>1. Những hàm và thủ tục liên quan đến xâu</b></i>


- Thủ tục Delete(st,vt,n);
- Thủ tục Insert(st1,st2,vt);
- Hàm Copy(st,vt,n)


- Hàm Length(st)
- Hàm Pos(st1,st2)
- Hàm UpCase(ch)



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


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

<b>Ngày soạn:11/3/2013</b>
<b>Tiết:35+36</b>


<b>BÀI THỰC HÀNH SỐ 5</b>



<b>I. MỤC TIÊU</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 là 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.


- 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ủ tuc chuẩn.


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


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


<b>II. CHUẨN BỊ CỦA GIÁO VIÊN VÀ HỌC SINH</b>



<i><b>-</b></i> Giáo viên: sách giáo khoa, sách giáo viên, Chuẩn KTKN Tin học THPT.


<i><b>-</b></i> Học sinh:sách giáo khoa


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


<i><b>1. Hoạt động 1: </b></i>Tìm hiểu một chương trình, đề xuất phương án cải tiến.


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


 <b>Tìm hiểu đề bài</b>


- Giới thiệu nội dung đề bài lên bảng.


- Diễn giải: Một xâu được gọi là Palidrom nếu ta
đọc các ký tự từ phải sang trái sẽ giồng khi đọc
từ trái sang phải.


- Yêu cầu học sinh cho hai ví dụ về xâu palidrom
và một ví dụ khơng phải là palidrom.


 <b>Tìm hiểu chương trình gợi ý.</b>
- Chiếu chương trình lên bảng.


- Hỏi: Chương trình sau đây có chức năng làm
gì? Kết quả in ra màn hình như thế nào?


- Thực hiện chương trình để học sinh kiểm
nghiệm suy luận của mình.



 <b>Cải tiến chương trình.</b>


- Nêu yêu cầu mới: Viết lại chương trình mà
khơng sử dụng biến trung gian p.


- Yêu cầu: Nhận xét về các cặp ở vị trí đối xứng
nhau trong một xâu palidrom?


- Hỏi: Ký tự thứ i đối xứng với ký tự vị trí nào?
- Hỏi: Cần phải so sánh bao nhiêu cặp ký tự
trong xâu để biết được xâu đó là palidrom?
- Hỏi: Dùng cấu trúc lặp nào để so sánh?


- Yêu cầu học sinh viết chương trình hồn chỉnh.


Quan sát, đọc kỹ đề.


Phải: 12321 abccba
Khơng phải: abcdea


Quan sát chương trình, suy nghĩ phân tích
để hiểu chương trình.


- Kiểm tra một xâu có phải Palidrom hay
không?


- In ra: ‘xau la palidrom’


‘Xau khong la palidrom’



- Quan sát giáo viên thực hiện chương trình,
nhập dữ liệu và kết quả của chương trình.
Chú ý theo dõi yêu cầu của giáo viên, trả lời
một số câu hỏi dẫn dắt.


- Các ký tự ở vị trí này giống nhau.


- Ký tự thứ i đối xứng với ký tự thứ
length()-i+1


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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


- Yêu cầu học sinh nhập dữ liệu cho sẵn của giáo
viên và thông báo kết quả.


- Xác nhận những bài làm có kết quả đúng.


máy theo yêu càu cải tiến của giáo viên.
- Nhập dữ liệu vào và thông báo kết quả.


<i><b>2. Hoạt động 2:</b></i> Rèn luyện kĩ năng lập trình.


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


 <b>Giới thiệu đề bài.</b>


- Chiếu nội dung đề bài lên bảng. Nêu mục đích
của bài tốn.


- Chia lớp làm hai nhóm:



+ Nhóm 1: Đặt các câu hỏi phân tích
+ Nhóm 2: Trả lời các câu hỏi phân tích


- Theo dõi những câu hỏi phân tích của nhóm 1
và trả lời câu hỏi phân tích của nhóm 2


- Bổ sung và sửa sai cho cả nhóm 1 và nhóm 2.


 <b>Yêu cầu học sinh độc lập viết chương</b>


<b>trình hồn chỉnh theo thuật tốn đã phát</b>
<b>hiện ở trên.</b>


- Yêu cầu một số học sinh lập trình xong sớm
tìm một số bộ test.


- Yêu cầu học sinh nhập dữ liệu vào theo test của
giáo viên đã chọn và thông báo kết quả sau khi
thực hiện chương trình.


- Xác nhận kết quả đúng của học sinh và sửa sai
cho các em có kết quả sai.


Quan sát đề và xác định những cơng việc
cần thực hiện.


Nhóm 1:


- Hỏi: Dữ liệu vào, dữ liệu ra của bài toán?


- Nêu các nhiệm vụ chính cần thực hiện khi
giải quyết bài toán.


- Hỏi: Cấu trúc dữ liệu phải sử dụng như
thế nào?


- Ta phải sử dụng hàm nào?
Nhóm 2:


- Vào: Một xâu S.


- Ra: Dãy các số ứng với sự xuất hiện của
mỗi loại ký tự trong xâu.


- TT: Duyệt từ trái sang phải, thêm một đơn
vị cho ký tự đọc được.


- Cấu trúc dữ liệu: Dem[‘A’..’Z’]
- Dùng hàm Upcase().


Độc lập soạn chương trình vào máy.
- Tìm test


- Nhập dữ liệu của giáo viên và thực hiện
chương trình để xem kết quả.


- Thông báo kết quả cho giáo viên.


<b>IV. ĐÁNH GIÁ CUỐI BÀI</b>



<i><b>1. Những nội dung đã học</b></i>


- Một số thuật toán đơn giản liên quan đến xâu ký tự: Kiểm tra một xâu đối xứng, tìm
tần suất xuất hiện của các ký tự có trong xâu.


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

<b>Ngày soạn: 06/3/2013</b>
<b>Tiết:37+38</b>


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


<b>I.</b>

<b>Mục tiêu:</b>


- Sửa các bài tập về kiểu mảng
- Sửa các bài tập về kiểu dữ liệu xâu.

<b>II.</b>

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


<b>-</b> Giáo viên: sách giáo viên, sách bài tập, sách giáo khoa.


<b>-</b> Học sinh: sách giáo khoa, sách bài tập.

<b>III.</b>

<b>Phương pháp:</b>


<b>-</b> Đàm thoại


<b>-</b> Nêu vấn đề

<b>IV.</b>

<b>Nội dung:</b>


<b>1. Hoạt động 1:</b> Ổn định lớp và kiểm tra bài cũ


<b>2. Hoạt động 2: Đưa ra bài tập và học sinh tự giải quyết vấn đề qua các câu hỏi vấn đáp,</b>
<b>)Bài tập 1: Viết chương trình nhập vào một xâu kí tự. Sau đó hãy chuẩn hố xâu và </b>



<b>hiện xâu đã chuẩn hố ra màn hình.</b>


Giáo viên giải thích cho học sinh hiểu chuẩn hoá xâu là như thế nào?


Chuẩn hóa xâu tức là xố bỏ các kí tự trống thừa: đầu xâu, cuối xâu và giữa các từ.
Giáo viên đặt ra các câu hỏi để gợi ý cho học sinh tìm thuật tốn.


<b>-</b> Nhập xâu s


<b>-</b> Xố các kí tự trống ở đầu xâu: Trong khi kí tự đầu tiên là khoảng trống thì xố.
→ sử dụng hàm Delete và lặp không xác định và bắt đầu ở đầu xâu


<b>-</b> Xố các kí tự trống ở cuối xâu: Trong khi kí tự cuối cùng là khoảng trắng thì xố.
→sử dụng hàm Delete, lặp khơng xác định và bắt đầu ở cuối xâu.


<b>-</b> Xố các kí tự trống ở giữa các từ. Duyệt tất cả các phần tử của xâu, nếu giữa hai kí tự
kế tiếp nhau có q một kí tự trống thì xố đi một kí tự trống.→ Sử dụng lặp xác định.


<b>-</b> Hiện xâu s ra màn hình.


Giáo viên yêu cầu học sinh khai báo các biến cần sử dụng trong chương trình.


<b>-</b> biến xâu s: kiểu string, số kí tự khơng giới hạn nên khơng cần xác định số kí tự tối đa.


<b>-</b> biến i là biến đếm của vòng lặp: kiểu byte.


Học sinh viết chương trình dựa trên thuật tốn đã xây dựng ở trên:
Program bt1;


Var s: string; i:byte;


Begin


writeln(‘ Nhap vao xau ki tu:’);readln(s);
while s[1]= ‘ ‘ do delete(s,1,1);


while s[length(s)]=’ ’ do delete(s, length(s),1);
For i:=length(s) downto 1 do


If (s[i]=’ ’) and (s[i+1]=’ ’ ) then delete(s,i,1);


s[1]:=upcase(s[1]);writeln(‘Xau s da chuan hoa la:’,s);
readln;


End.


<b>)Bài tập 2: Dãy F là dãy Fibonaxi nếu </b><i>F</i>0 1;<i>F</i>1 1;<i>FN</i> <i>FN</i>1<i>FN</i>2(<i>N</i> 2)


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

<b>Ngày soạn: 13/3/2013</b>
<b>Tiết: 39</b>


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



<b>I. Mục tiêu đánh giá:</b>


- Kiểm tra, đánh giá khả năng tiếp thu kiến thức, kĩ năng của học sinh về: Các thành
phần cơ sở của ngơn ngữ Pascal, phép tốn, biểu thức, các kiểu dữ liệu chuẩn, câu lệnh
gán, tổ chức vào/ra đơn giản, tổ chức rẽ nhánh và lặp.


- Đánh giá khả năng tổ chức 1 chương trình Pascal với các cấu trúc cơ bản.



<b>II.Ma trận đề:</b>
<b>Cấp độ</b>
<b>Chủ </b>


<b>đề</b>


<b>Nhận biêt</b> <b>Thông hiểu</b> <b>Vận dụng</b> <b>Cộng</b>


<i>Bài 11: Kiểu mảng</i> Câu 1 Câu 2


<i>Sổ câu:</i> 1 1 2


<i>Số điểm: </i>


<i>Tỉ lệ: </i> 3 điểm30% 3 điểm30% 6 điểm60%


<i>Bài 12: Kiểu xâu</i> Câu 3


<i>Sổ câu:</i> 1 1


<i>Số điểm:</i>


<i>Tỉ lệ:</i> 4 điểm40% 4 điểm40%


<i>Tổng số câu:</i>
<i>Tổng sổ điểm:</i>
<i>Tỉ lệ:</i>


1
3 điểm


30%


2
7 điểm
70%


<b>III.</b> <b>Đề kiểm tra:</b>


<b>Câu 1 (3 điểm): </b>Cho dãy A= (-1,2,10,5,-22,6,28,-9)
Cho biết kết quả khi thực hiện đoạn chương trình sau:
Var s,i:integer;


Begin
S:=0;


For i:=1 to 8 do


If a[i] mod 2 =1 then s:=s+sqr(a[i]);
Writeln(‘Tong la S=’,S);


End;


<b>Câu 2 (3 điểm): </b>Viết chương trình nhập vào dãy N số nguyên <i>A A</i>1, ,...,2 <i>AN</i> có giá trị tuyệt đối


không vượt quá 100. Cho biết số lượng các số dương, số âm trong dãy và tính tổng của chúng.


<b>Câu 3 (4 điểm): </b>Viết chương trình nhập vào một xâu kí tự. Hãy xóa bỏ các kí tự trắng thừa
trong xâu và in hoa các kí tự đầu từ.


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

<b>i</b> <b>A[i]</b> <b>A[i] mod 2=1</b> <b>S</b>


<b>0</b>


<b>1</b> <b>-1</b> <b>T</b> <b>1</b>


<b>2</b> <b>2</b> <b>F</b> <b>1</b>


<b>3</b> <b>10</b> <b>F</b> <b>1</b>


<b>4</b> <b>5</b> <b>T</b> <b>26</b>


<b>5</b> <b>-22</b> <b>T</b> <b>1</b>


<b>6</b> <b>-11</b> <b>F</b> <b>147</b>


<b>7</b> <b>28</b> <b>T</b> <b>147</b>


<b>8</b> <b>-8</b> <b>F</b> <b>147</b>


<b>Kết quả sau khi thực hiện đoạn chương trình trên: </b>


<b>Câu 2:</b>


Viết đúng khai báo các biến cần dùng: 0.25 điểm
Nhập dãy số : 0.5 điểm


Tính được số lượng số âm: 0.5 điểm
Tính được số lượng số dương: 0.5 điểm


Khởi tạo biến S1,S2 cho tổng số âm, tổng số dương: 0.25 điểm
Tính được tổng số âm: 0.5 điểm



Tính được tổng số dương: 0.5 điểm


<b>Câu 3:</b>


Viết đúng khai báo biến và cấu trúc chương trình: 0.25 điểm
Nhập xâu s : 0.5 điểm


Xóa kí tự trắng thừa đầu xâu:0.75 điểm
Xóa kí tự trắng thừa cuối xâu: 0.75 điểm
Xóa kí tự trắng thừa ở trong xâu: 0.75 điểm
In hoa đầu từ: 1 điểm


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

<b>Ngày soạn: 17/3/2013</b>
<b>Tiết:40+41</b>


<b>§14 KIỂU DỮ LIỆU TỆP</b>


<b>§15 THAO TÁC VỚI TỆP</b>



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


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


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


- Biết hai cách phân loại tệp: theo cách tổ chức dữ liệu và theo cách truy cập.
- Hiểu bản chất của tệp văn bản.


- Biết các bước làm việc với tệp: gắn tên tệp cho biến tệp, mở tệp, đọc/ghi tệp, đóng tệp.
- Biết khai báo biến tệp và các thao tác cơ bản với tệp văn bản.



- Biết sử dụng một số hàm và thủ tục chuẩn với tệp.


<i><b>2. Kĩ năng:</b></i>


- 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 liên quan để đọc/ghi dữ liệu của tệp.


<i><b>3. Thái độ:</b></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>II. CHUẨN BỊ CỦA GIÁO VIÊN VÀ HỌC SINH</b>


<i><b>-</b></i> Giáo viên: sách giáo khoa, sách giáo viên, Chuẩn KTKN Tin học THPT.


<i><b>-</b></i> Học sinh:sách giáo khoa


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


<b>1. Hoạt động 1: </b>Ổn định lớp và kiểm tra bài cũ


<b>2. Hoạt động 2: </b>Tìm hiểu đặc điểm của kiểu dữ liệu tệp. Phân loại kiểu tệp.
<i>a) Nội dung:</i>


 <b>Đặc điểm của kiểu tệp:</b>



<b>-</b> Dữ liệu kiểu tệp được lưu trữ lâu dài trên các thiết bị nhớ ngồivà khơng bị mất khi tắt
nguồn điện.


<b>-</b> Lượng dữ liệu trên tệp có thể rất lớn và chỉ phụ thuộc vào dung lượng đĩa.
 <b>Phân loại tệp:</b>


 <i><b>Xét theo cách tổ chức dữ liệu, tệp có thể được chia thành hai loại như sau:</b></i>


<b>-</b> 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. Trong tệp
văn bản, dãy kí tự được kết thúc bởi kí tự xuống dịng hay kí tự kết thúc tệp tạo thành
một dịng.


<b>-</b> Tệp có cấu trúc là 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 nhị phân làmột trường hợp riêng của tệp có cấu trúc.


 <i><b>Xét theo cách thức truy cập,có thể phân tệp thành hai loại sau:</b></i>


<b>-</b> Tệp truy cập tuần tự cho phép truy cập đến 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 tất cả các dữ liệu trước nó.


<b>-</b> Tệp truy cập trực tiếp cho phép tham chiếu đến các dữ liệu cần truy cập bằng cách xác
định trực tiếp vị trí (thường là số hiệu) của dữ liệu đó.


 <b>Chú ý:</b>


<b>-</b> Khác với kiểu mảng, số lượng phần tử của tệp không xác định trước.


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

<i>b)</i> Họat động:


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>



- Hỏi: 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?


- Hỏi: Vì sao em biết điều đó?


- Diễn giải: Để lưu giữ được dữ liệu, ta phải lưu nó
ở bộ nhớ ngồi thơng 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 sách giáo khoa và
cho biết đặc điểm của kiểu tệp? Có mấy loại kiểu
tệp?


- 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


- Bộ nhớ RAM.


- Mất dữ liệu khi mất điện.


- Không mất thông tin khi tắt máy.
- Dung lượng dữ liệu được lưu trữ lớn.
- 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.


<b>3. Hoạt động 3</b><i><b>: </b></i>Tìm hiểu các thao tác cơ bản xử lý tệp văn bản trong ngơn ngữ lập trình
Pascal.


<i>a) Nội dung:</i>


 <b>Khai báo: var <tên biến tệp>:text;</b>
 <b>Các thao tác cơ bản khi xử lí tệp:</b>


 <i><b>Gắn tên tệp cho biến tệp:</b></i>


<b>-</b> Trong lập trình, ta khơng thao tác trực tiếp với tệp dữ liệu mà thông qua biến tệp.


<b>-</b> Gắn tên tệp với biến tệp thực chất là tham chiếu giữa tệp trên đĩa (do tên tệp và đường
dẫn tương ứng của nó xác định) và biến tệp trong chương trình, làm cho biến tệp thành
đại diện cho tệp.


<b>-</b> Cú pháp: <b>Assign(<biến tệp>,<tên tệp>);</b>


Trong đó, độ dài lớn nhất của tên tệp bao gồm 79 kí tự
Ví dụ:


Assign(f,’C:/dulieu.dat’);→gán tệp dulieu.dat trên ở đĩa C cho biến tệp f. Khi làm việc với
biến tệp f thực chất là làm việc với tệp dulieu.dat


 <i><b>Mở tệp:</b></i>



<b>-</b> Mở tệp để ghi dữ liệu vào: <b>Rewrite(<biến tệp>);</b>


Trước khi mở tệp để ghi dữ liệu vào ta phải sử dụng lệnh gắn tên tệp cho biến.
<b>+</b> <b>Ví dụ:</b>


Assign(f,’C:/dulieu.dat’);
rewrite(f);


<b>+</b> <b>Chú ý: </b>Khi thực hiện lệnh rewrite, nếu trên đĩa chưa có tệp dulieu.dat thì tệp sẽ được
tạo với nội dung rỗng, nếu tệp đã có rồi thì nội dung cũ sẽ bị mất.


<b>-</b> Mở tệp để ghi dữ liệu vào: <b>Reset(<biến tệp>);</b>


Trước khi mở tệp để ghi dữ liệu vào ta phải sử dụng lệnh gắn tên tệp cho biến.
<b>+</b> <b>Ví dụ:</b>


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

<b>+</b> <b>Chú ý: </b>Khi thực hiện lệnh reset, nếu trên đĩa chưa có tệp thì khơng thực hiện lệnh reset
được và chương trình bị lỗi; nếu tệp đã mở thì sẽ đóng tệp và sau đó mở tệp ra lại.Vị trí
con trỏ sau lời gọi reset là đầu tệp.


 <i><b>Đọc/ghi tệp:</b></i>


<i><b>-</b></i> Đọc tệp văn bản:
<i><b>+</b></i> <b>Cú pháp:</b>


<b>Read(<biến tệp, <ds biến>);</b>
<b>Readln(<biến tệp>,<dsbiến>)</b>;


Trong đó, danh sách biến là một hoặc nhiều biến đơn.



<b>+</b> <b>Chú ý: </b>Các dữ liệu cần đọc trong tệp được gán vào danh sách biến phải có kiểu tương
ứng với kiểu của biến trong danh sách biến. Nếu sai kiểu thì chương trình báo lỗi. Lỗi
này thường gặp khi biến có kiểu số mà dữ liệu đọc được lại là kiểu xâu.


<i><b>-</b></i> Ghi vào tệp văn bản:
<i><b>+</b></i> <b>Cú pháp:</b>


<b>Write(<biến tệp, <ds kết quả>);</b>
<b>writeln(<biến tệp>,<ds kết quả>)</b>;


Trong đó, danh sách kết quả gồm một hoặc nhiều phần tử. Phần tử có thể là biến đơn, biểu
thức hoặc hằng xâu.


<b>+</b> <b>Chú ý: </b>Khi hai kết quả liền nhau cùng là kiểu số thì cần xen vào giữa hai kết quả số
này một khoảng trống để phân cách (ví dụ: write(f,x, ‘ ’,y) ). Trước khi gọi thủ tục này,
biến tệp tương ứng phải đang mở.


<b>+</b> <b>Một số hàm chuẩn thường sử dụng:</b>


<b>eof(<biến tệp)</b>; cho kết quả là <b>True </b>nếu con trỏ ở cuối tệp, ngược lại cho kết quả <b>false.</b>
<b>Eoln(<biến tệp>); </b>cho kết quả là <b>True </b>nếu con trỏ ở cuối dòng, ngược lại cho kết quả


<b>false.</b>


 <i><b>Đóng tệp:</b></i>


<b>+</b> <b>Cú pháp: close(<biến tệp>);</b>


<b>+</b> <b>Chú ý: </b>Sau khi đóng tệp ta vẫn có thể dùng lệnh <b>reset</b> để mở lại. Khi mở lại tệp ta vẫn


dùng biến cũ thì khơng cần gắn lại tên tệp.


<i>b) Hoạt động:</i>


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh</b>


 <b>Giới thiệu cấu trúc chung của khai báo biến</b>


<b>tệp.</b>


Var <tên_biến_tệp>: Text;


- Yêu cầu học sinh tìm ví dụ cụ thể:


 <b>Giới thiệu các thao tác gán tên tệp, tạo tệp</b>


<b>mới để ghi, mở tệp để đọc, đóng tệp.</b>


Assign(<tên_biến_tệp>,<tên_tệp>);
Rewrite(<tên_biến_tệp>);


Reset(<tên_biến_tệp>);
Close(<tên_biến_tệp>);


- u cầu: lấy ví dụ minh họa mở tệp để ghi thông
tin và mở tệp để đọc thông tin.


Quan sát cấu trúc và suy nghĩ trả lời.
- Var f,g:text;



Quan sát và suy nghĩ để trả lời câu hỏi.


Assign(f5, ‘B1.INP’);
Rewrite(f5);


Close(f5);


Assign(f5, ‘B1.OUT’);
Reset(f5);


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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh</b>


 Chiếu <b>sơ</b> đồ làm việc với tệp lên bảng, hình
16, trang 86, sách giáo khoa. Yêu cầu học sinh
giải thích ý nghĩa của sơ đồ.


 Giới thiệu cấu trúc chung của thủ tục đọc/ghi
dữ liệu tệp văn bản.


- Yêu cầu học sinh lấy ví dụ minh họa.


3. Quan sát sơ đồ và suy nghĩ để trả lời
- Ghi tệp: Gán tên tệp, tạo tệp mới, ghi
thơng tin, đóng tệp.


- Đọc tệp: Gán tên tệp, mở tệp, đọc thơng
tin, đóng tệp.


4. Quan sát cấu trúc chung.



- Readln(f,x1,x2); Đọc dữ liệu từ biến tệp
f, đặt giá trị vào hai biến x1 và x2.


- Writeln(g, ‘Tong la ’, x1+x2); Ghi vào
biến tệp g hai tham số; dòng chữ ‘Tong la
’ và giá trị tổng x1+x2.


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

<b>Ngày soạn:24/3/2013</b>
<b>Tiết:42</b>


<b>§16 VÍ DỤ LÀM VIỆC VỚI TỆP</b>



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


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


- Củng cố lại kiến thức đã học về tệp trong chương 5 thơng qua ví dụ.


<i><b>2. Kĩ năng:</b></i>


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


<b>II. CHUẨN BỊ CỦA GIÁO VIÊN VÀ HỌC SINH</b>


<i><b>-</b></i> Giáo viên: sách giáo khoa, sách giáo viên, Chuẩn KTKN Tin học THPT.


<i><b>-</b></i> Học sinh:sách giáo khoa


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



<i><b>1. Hoạt động 1: Ôn tập kiến thức lý thuyết và kết hợp kiểm tra bài cũ.</b></i>


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


 <b>Gợi ý để học sinh nhớ lại các kiến thức đã</b>


<b>học về kiểu tệp</b>.


- Hỏi: Cách khai báo biến kiểu tệp?


- Hỏi: Có các thủ tục cơ bản nào khi làm việc với
tệp?


<b>-</b> Hỏi: Hàm và thủ tục nào liên quan khi xử lý
tệp?


 <b>Giới thiệu bảng tổng hợp các hàm và thủ tục</b>


<b>lên bảng, xem như đây là tổng kết kiến thức</b>
<b>liên quan.</b>


Theo dõi dẫn dắt của giáo viên và trả lời.
- Var <tên_biến_tệp>: Text;


- Assign(<tên_biến_tệp>,<tên_tệp>);
- Rewrite(<tên_biến_tệp>);


- Reset(<tên_biến_tệp>);
- Close(<tên_biến_tệp>);



- Read/Readln(<tên_biến_tệp>,


<Danh_sách_tên_biế
n>);


- Write/Writeln(<tên_biến_tệp>,


<Danh_sách_kết_qu
ả>);


- Eof(<tên_biến_tệp>)


- Seek(<tên_biến_tệp>,<biến_nguyên>);
Quan sát bảng tổng hợp và ghi nhớ.


<i><b>2. Hoạt động 2:</b></i> Tìm hiểu chương trình ví dụ.


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


 <b>Tìm hiểu ví dụ 1.</b>


- Giới thiệu nội dung đề bài.


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


- Hỏi: Hàm Eof(f) có chức năng gì?


- Có thể sử dụng cấu trúc For thay cho While
được không?



- Chương trình này thực hiện cơng việc gì?


- Thực hiện chương trình để học sinh thấy được
kết quả.


Theo dõi và quan sát đề bài và chương
trình gợi ý.


- Hàm cho giá trị True nếu con trỏ tệp định
vị ở vị trí kết thúc tệp.


- Khơng. Vì khơng biết số lượng phần tử
của tệp.


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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


 <b>Tìm hiểu chương trình của ví dụ 2.</b>
- Giới thiệu đề bài


- Chiếu tranh mô phỏng kết nối các điện trở, hình
17, trang 88, sách giáo khoa.


- Hỏi: Cơng thức tính điện trở của sơ đồ II, III,
IV.


- Chiếu chương trình ví dụ lên bảng.


- Hỏi: Mảng a dùng để lưu giữ giá trị nào?



- Cho một file dữ liệu vào gồm 2 dòng. Yêu cầu
học sinh tính kết quả.


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


2. Quan sát nội dung đề bài, quan sát tranh
mô phỏng kết nối các điện trở và các yêu
cầu.


- Dùng để lưu giữ điện trở tương đương
của 3 điện trở theo 5 cách ghép nối như
trong sơ đồ.


- Tính kết quả của 5 điện trở tương đương.
- Quan sát kết quả của chương trình và so
sánh với kết quả tính đương


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


<i><b>3. Hoạt động 3: Rèn luyện kĩ năng lập trình.</b></i>


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh </b>


- Chiếu đề bài lên bảng. Yêu cầu học sinh tự
viết chương trình, chạy thử và báo cáo kết quả.
- Quan sát, theo dõi việc lập trình của từng học
sinh, có thể gợi ý cho một số em còn yếu.
- Yêu cầu học sinh cùng thực hiện chương trình


với bộ test giáo viên đã chuẩn bị. Thơng báo
kết quả mà chương trình tìm được. Xác nhận
kết quả đúng.


Theo dõi đề bài, định hướng dữ liệu vào, ra
và thuật tốn.


Soạn chương trình vào máy, thực hiện
chương trình và thông báo kết quả cho giáo
viên.


Nhập dữ liệu theo yêu cầu.


<b>IV. ĐÁNH GIÁ CUỐI BÀI</b>


<i><b>1. Những nội dung đã học</b></i>


- Các thao tác xử lý tệp:
+ Gán tên tệp.


+ Tạo tệp mới. mở tệp
+ Đọc/ghi thông tin của tệp.
+ Đóng tệp.


- Hàm và thủ tục liên quan: Hàm EOF(tên_biến_tệp)


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


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

<b>Ngày soạn:24/3/2013</b>
<b>Tiết:43</b>



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


<b>I.</b>

<b>Mục tiêu:</b>


- Sửa các bài tập về kiểu tệp.


<b>II.</b>

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


<b>-</b> Giáo viên: sách giáo viên, sách bài tập, sách giáo khoa.


<b>-</b> Học sinh: sách giáo khoa, sách bài tập.

<b>III.</b>

<b>Phương pháp:</b>


<b>-</b> Đàm thoại


<b>-</b> Nêu vấn đề

<b>IV.</b>

<b>Nội dung:</b>


<b>1. Hoạt động 1: Ổn định lớp</b>


<b>2. Hoạt động 2: Đưa ra bài tập và học sinh tự giải quyết vấn đề qua các câu hỏi trắc </b>
<b>nghiệm.</b>


<b>Câu 1:Tệp văn bản là tệp:</b>


A. Có số dịng giới hạn <b>B. Có số dịng, số kí tự khơng giới hạn</b>


C. Có số kí tự trên mỗi dịng là giới hạn D. Khơng thể có dịng để trống


<b>Câu 2: Thủ tục </b><i><b>reset</b></i><b> dùng để</b>:



A. Mở tệp văn bản để ghi B. Đọc thông tin từ tệp văn bản
C. Xóa thơng tin trong tệp văn bản <b>D. Mở tệp để đọc dữ liệu.</b>
<b>Câu 3: Thủ tục </b><i><b>rewrite</b></i><b> dùng để:</b>


<b>A. Mở tệp văn bản để ghi</b> B. Đọc thơng tin từ tệp văn bản
C. Xóa thơng tin trong tệp văn bản D. Mở tệp để đọc dữ liệu<b>.</b>


<b>Câu 4: Với f là biến tệp văn bản, cho biết đoạn chương trình sau cho phép thực hiện cơng</b>
<b>việc gì?</b>


Assign(f,’in.txt’);
rewrite(f);


for i:=’A’ to ‘Z’ do write(f,i);


<b>A.</b> Đưa ra màn hình các chữ cái in hoa trong bộ mã ASCII


<b>B.</b> Đưa ra màn hình các số từ 1 đến 26


<b>C.</b> Ghi vào tệp in.txt các số từ 1 đến 26


<b>D. Ghi vào tệp in.txt các chữ cái in hoa từ A đến Z.</b>
<b>Câu 5: Kiểu dữ liệu tệp được sử dụng với mục đích gì?</b>


A. Thay thế tồn bộ các kiểu dữ liệu còn lại <b>B. Lưu trữ dữ liệu lâu dài với lượng thơng tin </b>
<b>lớn</b>


C. Lưu trữ tồn bộ thơng tin dưới dạng văn bản D. Tất cả đều đúng



<b>3. Họat động 3: Rèn luỵên kĩ năng viết chương trình thông qua việc giải một số bài tập.</b>


<b>-</b> <b>Đề bài: </b>lập chương trình ghi vào đĩa một bài thơ. Sau đó đọc từ đĩa và hiện bài thơ đó
ra màn hình.


<b>-</b> Giáo viên đặt ra các câu hỏi gợi ý để học sinh diễn đạt được thuật toán và viết được
chương trình.


<b>-</b> Chương trình bài tốn:
Program bt;


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

Begin


Write(‘cho biet so cau tho can nhap:’);readln(n);
Assign(f, ‘tho.xd’);rewrite(f);


For i:=1 to n do
Begin


Write(‘Cau tho thu ‘,i);
Readln(cau);


Writeln(f,cau);
end;


close(f);writeln(‘Bai tho moi nhap la:’);
Assign(f, ‘tho.xd’);reset(f);


While not eof(f) do
Begin



Readln(f,cau);
Writeln(cau);
End;


Close(f);
Readln;
End.


<b>4. Bài tập về nhà:</b>


<b>- L</b>ập chương trình ghi vào đĩa các số nguyên dương từ 1 đến 100. Sau đó đọc từ đĩa và cho
hiện ra màn hình các số chính phương.


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

<b>Ngày soạn:31/3/2013</b>
<b>Tiết:44</b>


<b>§ 17 CHƯƠNGTRÌNH CON VÀ PHÂN LOẠI</b>



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


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


- Biết được khái niệm chương trình con.


- Biết được ý nghĩa của chương trình con, sự cần thiết phải viết một chương trình thành các
chương trình con.


- Biết được cấu trúc của chương trình con.



- Phân biệt được hai loại chương trình con là hàm và thủ tục.


<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.
- Biết cách viết lời gọi chương trình con trong thân chương trình chính.


<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,
tn thủ u cầu vì một công việc chung.


<b>II. CHUẨN BỊ CỦA GIÁO VIÊN VÀ HỌC SINH</b>


<i><b>-</b></i> Giáo viên: sách giáo khoa, sách giáo viên, Chuẩn KTKN Tin học THPT.


<i><b>-</b></i> Học sinh:sách giáo khoa


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


<b>1. Hoạt động 1:</b>Ổn định lớp và kiểm tra bài cũ


<b>2. Họat động 2</b><i><b>: </b></i>Tìm hiểu về chương trình con và ích lợi của việc sử dụng chương trình con
khi lập trình.


<i><b>a)</b></i> <i>Nội dung:</i>



<b>-</b> 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>-</b> Một số lợi ích của việc sử dụng chương trình con.


<b>+</b> Để tránh được việc phải viết lặp lại một dãy lệnh nào đó, ngơn ngữ lập trình cho
phép tổ chức dãy lệnh đó thành chương trình con. Sau đó, mỗi khi chương trình
chính cần đến dãy lệnh này thì chỉ cần gọi thực hiện chương trình con đó.


<b>+</b> Hỗ trợ việc thực hiện các chương trình lớn: Khi phải viết chương trình lớn có hàng
nghìn, hàng vạn lệnh, cần huy động nhiều người tham gia, có thể giao cho mỗi
người(hoặc mỗi nhóm) viết một chương trình con, rồi sau đó lắp ghép chúng lại
thành chương trình chính.


<b>+</b> Phuc vụ cho q trình trừu tượng hóa: Người lập trình có thể sử dụng các kết quả
được thực hiện bởi chương trình con mà khơng cần quan tâm đến việc các chương
trình con đó được cài đặt như thế nào. Trừu tượng hóa là tư tưởng chủ đạo để xây
dựng chương trình nói chung và chương trình có cấu trúc nói riêng.


b) <i><b>Hoạt động:</b></i>


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh</b>


1. Tìm hiểu ý nghĩa và khái niệm của chương trình
con.


- Chiếu hai chương trình giáo viên đã chuẩn bị sẵn.
Một chương trình có sử dụng chương trình con, một
chương trình khơng sử dụng chương trình con.



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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh</b>


Chẳng hạn: Chương trình tính tổng 4 lũy thừa:
TLT=an<sub> + b</sub>m<sub> + c</sub>p<sub> + d</sub>q<sub>.</sub>


- Gọi học sinh nhận xét về tính ngắn gọn, rõ ràng,
tính dễ đọc dễ hiểu của hai chương trình đó.


- Hỏi: Khi nào nên viết chương trình con?


- Yêu cầu học sinh đọc sách giáo khoa, cho biết khái
niệm chương trình con.


- Chia lớp làm ba nhóm. Phát bìa trong cho mỗi
nhóm. u cầu học sinh điền các lợi ích của việc sử
dụng chương trình con.


-Thu phiếu học tập. Chiếu kết quả lên bảng.


- Bổ sung và giải thích thêm một số lợi ích mà học
sinh điền chưa đầy đủ. (vì các em cịn mơ hồ về
chương trình con)


- Nhận xét: Chương trình có sử dụng
chương trình con được viết ngắn gọn, dễ
hiểu hơn chương trình viết khơng sử dụng
chương trình con.


- Đối với các bài tố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.


- Tham khảo sách giáo khoa để trả lời
- Nghiên cứu sách giáo khoa, thảo luận để
điền phiếu học tập


+ Tránh được việc phải viết lặp đi lặp lại
cùng một dãy lệnh nào đó trong chương
trình.


+ Hỗ trợ việc thực hiện viết các chương
trình lớn


+ Phục vụ q trình trừu tượng hóa
+ Mở rộng khả năng ngơn ngữ


+ Thuận tiện cho việc phát triển, nâng cấp
chương trình.


- Báo cáo kết quả.


- Theo dõi bổ sung và giải thích của giáo
viên.


<b>3. Hoạt động 3:</b> Tìm hiểu phân loại chương trình con và cấu trúc của chương trình con.


<i><b>a)</b></i> <i>Nội dung:</i>



 <b>Phân loại chương trình con: gồm hai loại</b>


<b>-</b> Hàm (Function) là chương trình con thực hiện một số thao tác nào đó và trả về giá trị
thơng qua tên của nó; do đó nó được sử dụng như một tốn hạng dùng trong các biểu
thức.


Ví dụ: abs(x), length(st), sin(x),…


<b>-</b> Thủ tục (Procedure) là chương trình con thực hiện các thao tác nhất định nhưng không
trả về giá trị nào đó qua tên của chúng; do đó thủ tục được sử dụng trong chương trình
như các lệnh đã biết.


Ví dụ: write, readln, delete, insert,….
 <b>Cấu trúc chương trình con:</b>


<Phần đầu>
[<phần khai báo>]
<Phần thân>


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

<b>+</b> Các biến được khai báo cho dữ liệu vào/ra gọi là tham số hình thức.


<b>+</b> Các biến được khai báo để dùng riêng cho chương trình con gọi là biến cục bộ.
<b>+</b> Các biến của chương trình chính gọi là biến tồn cục.


 <b>Thực hiện chương trình con:</b>


<b>-</b> Để thực hiện (gọi) một chương trình con,ta cần phải có các lệnh 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 cùng với các tham số (nếu có) là các
hằng và biến chứa dữ liệu vào và ra tương ứng với các tham số hính thức đặt trong cặp
dấu ngoặc (). Các hằng và biến này được gọi là tham số thực sự.



<b>-</b> Khi thực hiện chương trình con, các tham số hình thức để nhập dữ liệu vào và sẽ nhận
giá trị của các tham số thực sự tương ứng, cịn các tham số hình thức để lưu trữ dữ liệu
ra sẽ trả giá trị đó cho các tham số thực sự tương ứng.


<b>-</b> Sau khi chương trình con kết thúc, lệnh tiếp theo lệnh gọi chương trình con sẽ được
thực hiện.


<i><b>b)</b></i> <i>Hoạt động:</i>


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh</b>


 <b>Phân loại chương trình con.</b>


- Hỏi: Có mấy loại chương trình con? Gọi tên của
chúng?


- Hỏi: Đã 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.
- Ý nghĩa của hàm và thủ tục chuẩn?


- Yêu cầu học sinh tham khảo sách giáo khoa để
phân biệt khái niệm hàm và thủ tục.


 <b>Cấu trúc của chương trình con.</b>


- Giới thiệu cấu trúc chung của chương trình con
<Phần đầu>


[<Phần khai báo>]


<Phần thân>


- Yêu cầu học sinh so sánh với cấu trúc chương
trình chính


- u cầu học sinh giải thích phần khai báo và phần
thân chương trình con.


- Diễn giải: Phần đầu của chương trình con gồm có
tên chương trình con, các tham số của chương trình
con. Các tham số này được gọi là tham số hình thức.


 <b>Thực hiện chương trình con.</b>


- Hỏi: Để sử dụng hàm và thủ tục chuẩn em thường
viết ở đâu và viết như thế nào?


Tham khảo sách giáo khoa và trả lời.
- Hai loại chương trình con: hàm và thủ
tục.


- Đã sử dụng hàm và thủ tục chuẩn.


- Ví dụ: Hàm abs(), length(st). Thủ tục
Delete(st,p,n);


- Hàm là 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 thực hiện thực hiện các tháo tác
nhất định nhưng không trả về giá trị qua
tên của nó.


Quan sát cấu trúc của chương trình con.


- Giống cấu trúc chương trình chính. Khác
ở chỗ phần đầu chương trình là bắt buộc
phải có.


- Phân khai báo thường có thể là khai báo
biến, hằng.


- Phần thân là một dãy các lệnh thực hiện
nhiệm vụ nhất định của chương trình con.


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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh</b>


- Diễn giải: Để gọi một chương trình con, ta cần
phải 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ới các
tham số (nếu có) là các hằng và biến chứa 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ự.


- Viết trong chương trình chính. Viết thủ
tục kèm 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.


<b>IV. ĐÁNH GIÁ CUỐI BÀI</b>


<i><b>1. Những nội dung đã học</b></i>


- Chương trình con đóng vai trị quan trọng trong lập trình, đặc biệt là trong lập trình cấu
trúc.


- Các lợi ích cơ bản của chương trình con: Dùng chương trình con sẽ thuận lợi cho việc tổ
chức, viết, kiểm tra và sử dụng lại chương trình.


- Có hai loại chương trình con.


- Cấu trúc chương trình con và vị trí của nó trong chương trình chính: Chương trình con
được viết ở phần khai báo. Chương trình con có phần đầu, phần khai báo và phần thân.


- Chương trình con có thể có tham số hình thức khi khai báo và được thay bằng tham số
thực sự khi gọi chương trình con.


- Chương trình con được gọi bằng tên của nó.


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


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

<b>Ngày soạn:03/4/2013</b>
<b>Tiết:45+46</b>


<b>§ 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Ị CỦA GIÁO VIÊN VÀ HỌC SINH</b>


<i><b>-</b></i> Giáo viên: sách giáo khoa, sách giáo viên, Chuẩn KTKN Tin học THPT.


<i><b>-</b></i> Học sinh:sách giáo khoa



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


<b>1. Hoạt động 1</b><i><b>: </b></i>Tìm hiểu cấu trúc chung và vị trí của thủ tục trong chương trình chính.
a)<i>Nội dung:</i>


 <b>Cấu trúc của thủ tục:</b>


<b>Procedure <tên thủ tục>[<ds tham số>];</b>


[phần khai báo>]


<b>Begin</b>


[<b><</b>dãy các lệnh>]


<b>End;</b>
<b>Trong đó:</b>


<b>-</b> Phần đầu thủ tục bao gồm tên dành riêng <b>procedure</b>, tiếp theo là tên thủ tục. Danh sách
các tham số có thể có hoặc khơng.


<b>-</b> Phần khai báo dành để xác địnhcác hằng, 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.


<b>-</b> Dãy câu lệnh được viết giữa cặp tên dành riêng <b>begin end</b> tạo thành thân của thủ tục.
 <b>Ví dụ về cách sử dụng thủ tục:</b>


<b>Vd 1: Viết thủ tục vẽ hình chữ nhật bằng các dấu * khi biết chiều dài và chiều rộng.</b>
<b>Procedure vehcn(dai,rong:integer);</b>



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


For i:=1 to dai do write(‘*’);
writeln;


for j:=1 to rong-2 do
begin


write(‘*’);


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

writeln(‘*’);
end;


for i:=1 to dai do write(‘*’);
writeln;


<b>End;</b>


Sử dụng thủ tục vừa viết để vẽ trên màn hình 2 hình chữ nhật có kích thước lần lượt là: 25x15,
20x13; Sau đó tiếp tục vẽ 4 hình chữ nhật, hình đầu tiên kích thước 4x2, hình sau gấp đơi hình
trước.


<b>Program vd_thutuc2;</b>
<b>Var a,b,i:integer;</b>


<b>Procedure vehcn(dai,rong:integer);</b>
<b>Var i,j:integer;</b>



<b>Begin</b>


For i:=1 to dai do write(‘*’);
writeln;


for j:=1 to rong-2 do
begin


write(‘*’);


for i:=1 to dai-2 do write(‘ ’);
writeln(‘*’);


end;


for i:=1 to dai do write(‘*’);
writeln;


<b>End;</b>
<b>Begin</b>


Vehcn(25,15);writeln;writeln;
Vehcn(20,13);writeln;writeln;
a:=4;b:=2;


For i:=1 to 4 do
Begin


Vehcn(a,b);writeln;
a:=a*2;b:=b*2;


End;


readln;


<b>End.</b>


<b>Ví dụ 2: Viết thủ tục hoán đổi giá trị của hai biến nguyên. Viết chương trình để sử dụng</b>
<b>thủ tục đó.</b>


<b>Program vd_thambien2;</b>
<b>Var a,b:integer;</b>


<b>Procedure hoandoi(x:integer,var y:integer);</b>
<b>Var tg:integer;</b>


<b>Begin</b>


Tg:=x;
x:=y;
y:=tg;


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

a:=5;b:=10;writeln(a:6,b:6);
hoandoi(a,b); writeln(a:6,b:6);
readln;


<b>End.</b>


b)<i>Hoạt động:</i>


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh</b>



 <b>Tìm hiểu cấu trúc thủ tục.</b>


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


- 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ới thiệu cấu trúc chung của thủ tục.


Procedure tên_thủ_tục(danh sách các tham số);
Các khai báo của thủ tục;


Begin


Các lệnh của thủ tục;
End;


- Lời gọi thủ tục ta viết ở phần nào trong chương
trình?


 <b>Tìm hiểu tham số hình thức và tham số thực</b>


<b>sự.</b>


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


- Diễn giải: Khai báo này cho phép thủ tục ve_hcn
thực hiện vẽ được nhiều hình chữ nhật có kích thước
khác nhau.


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


 <b>Tìm hiểu tham số giá trị và tham số biến.</b>
- Diễn giải: Tham số có hai chức năng: đưa dữ liệu
vào cho chương trình con hoặc đưa dữ liệu chương
trình con tìm được ra.


- 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


Quan sát ví dụ, suy nghĩ và trả lời.


- Nằm ở phần khai báo, sau phần khai


báo biế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.


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


- Quan sát và ghi nhớ cấu trúc chung.


Trong phần thân kết thúc End;


- Trong phần thân của chương trình
chính.


Quan sát ví dụ trên bảng.


- Thủ tục ve_hcn ở ví dụ này có các tham
số chdai, chrong


- Vẽ được 6 hình chữ nhật.


- Tham số thực sự trong thủ tục
ve_hcn(5,10); là các hằng số còn trong
thủ tục ve_hcn(a,b); là các biến.


Theo dõi và trả lời



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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh</b>


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


xử lý.


- Đưa dữ liệu sau khi chương trình con
xử lý ra ngồi.


- Là tham số biến.


- Khi khai báo tham số biến ta đặt từ
khóa var trước các tham số đó.



<i><b>2.Hoạt động 2: </b></i>Tìm hiểu cấu trúc chung và vị trí của hàm trong chương trình chính.
a) <i>Nội dung:</i>


 <b>Đặc điểm:</b>


<b>-</b> Điểm khác nhau cơ bản giữa hàm và thủ tục là việc hàm luôn trả về một giá trị kết quả
thuộc kiểu xác định và giá trị đó được gán cho tên hàm.


<b>-</b> Hàm có cấu trúc tương tự như thủ tục, chỉ khác nhau ở phần đầu. Phần đầu khai báo
hàm có dạng như sau:


<b>function <tên hàm>[<ds tham số>]:<kiểu dữ liệu>;</b>


Trong đó kiểu dữ liệu là kiểu của giá trị mà hàm trả về và chỉ có thể là các kiểu integer,
real, char, boolean, string.


<b>-</b> Cũng giống như thủ tục, nếu hàm khơng có tham số hình thức thì khơng cần danh sách
tham số.


<b>-</b> Trong thân hàm cần có câu lệnh gán giá trị cho tên hàm: <b><tên hàm>:=<biểu thức>;</b>


 <b>Ví dụ cách sử dụng hàm</b>


<b>Ví dụ 1: Xét chương trình thực hiện việc rút gọn phân số trong đó có sử dụng hàm</b>
<b>ước chung lớn nhất.</b>


<b>Program rutgon_phanso;</b>
<b>Var tuso,mauso,a:integer;</b>


<b>Function UCLN(x,y:integer):integer;</b>



Var sodu:integer;
Begin


While y<>0 do
Begin


Sodu:=x mod y;
x:=y;


y:=sodu;
End;
UCLN:=x;
End;


<b>Begin</b>


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

Begin


Tuso:=tuso div a;
Mauso:=mauso div a;
End;


Writeln(‘Phan so da toi gian la:’,tuso, ‘/’,mauso);
Readln;


<b>End.</b>


<b>Ví dụ 2: Chương trình tìm số nhỏ nhất trong 3 số ngun và có sử dụng hàm tìm số</b>
<b>nhỏ nhất trong hai số.</b>



<b>Program minbaso;</b>
<b>Var a,b,c:real;</b>


<b>Function min(a,b:real):real;</b>


Begin


If a<b then min:=a else min:=b;
End;


<b>Begin</b>


Write(‘nhap vao ba so:’);readln(a,b,c);


Writeln(‘So nho nhat trong ba so la:’,min(min(a,b),c));
Readln;


<b>End.</b>


 <b>Chú ý:</b>


<b>-</b> Việc sử dụng hàm hoàn toàn tương tự với việc sử dụng các hàm chuẩn, khi viêt lệnh gọi
gồm hàm và tham số thực sự tương ứng với các tham số hình thức.


<b>-</b> Lệnh gọi hàm có thể tham gia vào biểu thức như một tốn hạng và thậm chí là tham số
của lời gọi hàm, thủ tục khác.


b) <i>Hoạt động:</i>



<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh</b>


 <b> Nhắc lại kiến thức cũ về hàm chuẩn.</b>


- Hỏi: Hãy kể tên một số hàm chuẩn đã học và cách
sử dụng chúng.


 <b>Giới thiệu cấu trúc chung và vị trí của hàm</b>


<b>trong chương trình chính.</b>


- Hỏi: So sánh sự giống và khác nhau của hàm và
thủ tục.


 <b>Tìm hiểu hàm thơng qua ví dụ</b>


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


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 tốn hạng, thậm chí là tham số
của một hàm khác.


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
Quan sát ví dụ và trả lời.


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

<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh</b>


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


 <b>Tìm hiểu về biến cục bộ và biến toàn bộ.</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? Các biến đó được khai báo ở chỗ nào
trong chương trình?


- Diễn giải: Biến <i>tuso, mauso, A</i> có ảnh hưởng trong
tồn bộ chương trình. Biến <i>Sodu</i> chỉ ảnh hưởng
trong thân chương trình con.


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


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


- Quan sát chương trình ví dụ
- Có một hàm được khai báo.
- Hàm được sử dụng hai lần.


- Kết quả của hàm lại là đầu vào cho
chính hàm đó trong lần gọi thứ hai.
4. Quan sát lại các ví dụ


- Quan sát chương trình của giáo viên
- Có các biến: tuso, mauso, A, sodu
- Các biến: tuso, mauso, A được khai báo
trong chương trình chính



- Các biến: sodu được khai báo trong
chương trình con.


- Biến cục bộ: có ảnh hưởng trong
chương trình con, được khai báo trong
phần khai báo của chương trình con.
- Biến tồn bộ: có phạm vi ảnh hưởng
trong toàn bộ chương trình, được khai
báo trong phần khai báo của chương
trình chính.


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

<b>Ngày soạn:10/4/2013</b>
<b>Tiết:47+48</b>


<b>BÀI THỰC HÀNH SỐ 6</b>



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


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


- Củng cố lại các kiến thức về xâu ký tự, chương trình con.


<i><b>2. Kĩ năng:</b></i>


- Rèn luyện kĩ năng xử lý xâu bằng việc tạo hiệu ứng chữ chạy trên màn hình
- Nâng cao kĩ năng viết và sử dụng chương trình con.


<b>II. CHUẨN BỊ CỦA GIÁO VIÊN VÀ HỌC SINH</b>



<i><b>-</b></i> Giáo viên: sách giáo khoa, sách giáo viên, phịng máy vi tính.


<i><b>-</b></i> Học sinh:sách giáo khoa


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


<i><b>1. Hoạt động 1: Tìm hiểu việc xây dựng hai thủ tục catdan(s1,s2) và cangiua(s)</b></i>


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh</b>


 <b>Tìm hiểu hai thủ tục catdan(s1,s2) và </b>


<b>cangiua(s).</b>


- Chiếu nội dung thủ tục catdan(s1,s2);
- Hỏi: Đầu vào và đầu ra của thủ tục này?
- Hỏi: Chức năng của thủ tục là gì?


- Yêu cầu học sinh cho một ví dụ minh họa.
- Chiếu nội dung thủ tục: cangiua(s);


- Hỏi: Đầu vào của thủ tục?


- Hỏi: Thủ tục thực hiện cơng việc gì?


- Giáo viên chú ý: Có thể nhắc học sinh nếu khơng
khai báo s là tham biến thì thủ tục này khơng có
hiệu lực gì vì lệnh đưa s ra màn hình khơng nằm
trong thủ tục này.



 <b>Tìm hiểu chương trình của câu b, sách giáo </b>


<b>khoa, trang 103, 104.</b>


- Chiếu chương trình lên bảng.
- Hỏi: Chức năng của chương trình.


- Giới thiệu cho học sinh các thủ tục chuẩn:
gotoxy(x,y); delay(n); và keypressed;


- Thực hiện chương trình để giúp học sinh thấy kết
quả của chương trình.


Quan sát thủ tục catdan() và trả lời câu hỏi
của giáo viên.


- Vào: xâu ký tự s1.
- Ra: biến xâu ký tự s2.


- Thực hiện việc tạo xâu s2 từ xâu s1 bằng
việc chuyển ký tự thứ nhất đến vị trí cuối
của xâu.


- S1= ‘abcd’ thì S2= ‘bcda’
- Quan sát, suy nghĩ và trả lời.


- Đầu vào là một xâu ký tự S không quá 79
ký tự.


- Thủ tục thực hiện thêm vào trước xâu s


một số ký tự trắng để khi đưa s ra màn hình
ký tự trong S ban đầu được căn giữa của
dịng gồm 80 ký tự.


Quan sát chương trình trên bảng và theo dõi
dẫn dắt của giáo viên.


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

<i><b>2. Hoạt động 2:</b></i> Rèn luyện kĩ năng lập trình.


<b>Hoạt động của giáo viên</b> <b>Hoạt động của học sinh</b>
<b>Tìm hiểu yêu cầu đề bài: </b>Viết chương trình


cho dịng chữ chạy tại dịng bất kì do chương
trình chính qui định




-- Yêu cầu học sinh tìm ra vấn đề mới trong bài
tập này.


- Yêu cầu học sinh lập trình trên máy.


- Yêu câu học sinh thực hiện chương trình và
nhập dữ liệu test.


- Đánh giá kết quả lập trình của học sinh.


Quan sát yêu cầu trên bảng.


- Về cơ bản, giống như nhiệm vụ mà


câu b đã làm. Chỉ khác là chương trình
câu b ln cho xâu ký tự chạy ở dòng
12, còn trong bài này xâu ký tự phải
chạy ở dòng bất kỳ. Vì vậy phải truyền
tham số quy định dịng chạy cho thủ tục.
- Độc lập viết chương trình vào máy và
báo cáo kết quả thử nghiệm.


- Nhập dữ liệu theo test của giáo viên và
báo cáo kết quả


<b>IV. ĐÁNH GIÁ CUỐI BÀI</b>


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


- Viết thủ tục chaychu(s,dong) nhận tham số là xâu S gồm không quá 79 ký tự và một
biến nguyên Dong. In ra màn hình dịng chữ xác định bởi S chạy ở dịng Dong. Viết chương
trình và thực hiện có sử dụng thủ tục này.


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

<b>Ngày soạn: 17/4/2013</b>
<b>Tiết:49</b>


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


<b>I.</b>

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


- Tiếp tục củng cố cho học sinh các kiến thức về chương trình con thơng qua một số câu
hỏi trắc nghiệm.


- Rèn luyện kĩ năng đọc hiểu chương trình cũng như kĩ năng viết chương trình thơng qua
các bài tập cụ thể.



<b>II.</b>

<b>CHUẨN BỊ CỦA GIÁO VIÊN VÀ HỌC SINH:</b>


- Giáo viên: sách giáo khoa, sách giáo viên, sách bài tập.
- Học sinh: sách giáo khoa, sách bài tập.


<i><b>III.</b></i>

<i>NỘI DUNG</i>


<b>1. Hoạt động 1: </b>Củng cố các kiến thức về chương trình con thơng qua một số câu trắc
nghiệm.


1) Sự khác nhau cơ bản giữa hàm và thủ tục là:


<i>A. Hàm luôn trả về kết quả cịn thủ tục thì khơng</i> B. Hàm có tham số cịn thủ tục thì khơng


C. Thủ tục có tham số cịn hàm thì khơng D. Thủ tục trả về giá trị và hàm thì
khơng.


2) Thủ tục được bắt đầu bằng từ khoá nào:


A. Function <i>B. Procedure</i> C. Program D. Begin


3) Chọn phát biểu đúng:


<b>A.</b> Tham số giá trị sẽ thay đổi sau khi thực hiện xong thủ tục.


<b>B.</b> Tham số biến và tham số giá trị đều thay đổi sau khi thực hiện xong thủ tục.


<b>C.</b> <i>Tham số biến sẽ thay đổi sau khi thực hiện xong thủ tục. </i> D)Tất cả đều đúng.
4) Chọn phát biểu đúng nhất về tham số của chương trình con.



<b>A.</b> Chương trình con nào cũng phải có tham số.


<b>B.</b> Tất cả các chương trình con khơng có các tham số.


<b>C.</b> Mọi chương trình con đều phải chứa tham số biến.


<i><b>D.</b></i> <i>Tất cả các loại chương trình con đều có thể chứa các tham số hoặc không.</i>
5) Chọn phát biểu đúng.


<b>A.</b> Trong lời gọi thủ tục hoặc hàm, tương ứng với tham số biến phải là biến và tương ứng
với tham số giá trị phải là giá trị cụ thể.


<b>B.</b> Trong lời gọi thủ tục hoặc hàm, tương ứng với tham số biến phải là biến, tương ứng
với tham số giá trị cũng phải là biến.


<i><b>C.</b></i> <i>Trong lời gọi thủ tục hoặc hàm, tương ứng với tham số biến phải là biến và tương ứng</i>
<i>với tham số giá trị có thể là hằng hoặc biến.</i>


<b>D.</b> Trong lời gọi thủ tục hoặc hàm, tương ứng với tham số biến là hằng hoặc biến, tương
ứng với tham số giá trị cũng có thể là hằng hoặc biến .


<b>2. Hoạt động 2: </b>Rèn luyện cho học sinh kĩ năng đọc hiểu chương trình thơng qua các đoạn
chương trình cụ thể.


1)Hàm sau đây dùng để thực hiện cơng việc gì?
Function F(a,b:integer):integer;


Begin



While a<>b do


If a>b then a:=a-b Else b:=b-a;
F:=a;


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

A. <i>Tìm ước chung lớn nhất của a và b</i> B. Tìm bội chung nhỏ nhất của a và b


C. So sánh hai số a và b D. Tìm hiệu của a và b


2)Cho biết kết quả của x, y sau khi thực hiện chương trình sau:
Program vd2;


var x,y:integer;


Procedure P(var a:integer;b:integer);
begin


a:=a*a;
b:=b*10;
end;


begin


x:=5;y:=10;
P(x,y);
end.


A. x=5, y=10 B. x=5, y=100 C. x=25, y=100 <i>D. x=25, y=10</i>


<b>3. Hoạt động 3: </b>rèn luyện cho học sinh kĩ năng lập trình.



1) Viết hàm tính tổng các số lẻ từ a đến b với a,b được nhập vào từ bàn phím.


2) Viết hàm kiểm tra 3 số a,b, c cho trước có phải là độ dài 3 cạnh của 1 tam giác hay
khơng?


3) Viết chương trình con tính chu vi và diện tích của 1 tam giác nếu biết độ dài 3 cạnh của
tam giác đó.


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

<b>Ngày soạn: 19/4/2014</b>
<b>Tiết:50+51</b>


<b>ÔN TẬP</b>



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


- Ôn tập và hệ thống lại các kiến thức đã học về kiểu dữ liệu có cấu trúc và lập trình có
cấu trúc.


- Rèn luyện kĩ năng đọc hiểu chương trình cũng như kĩ năng viết chương trình thơng qua
các bài tập cụ thể.


<b>II. CHUẨN BỊ CỦA GIÁO VIÊN VÀ HỌC SINH:</b>


- Giáo viên: sách giáo khoa, sách giáo viên, sách bài tập.
- Học sinh: sách giáo khoa, sách bài tập.


<b>III. NỘI DUNG</b>


<b>1. Hoạt động 1: </b>Củng cố các kiến thức đã học về kiểu dữ liệu có cấu trúc và lập trình có


cấu trúc thơng qua các câu hỏi trắc nghiệm.


1) Trong các kiểu khai báo sau, chỉ ra khai báo hợp lệ:


A. var arr[10]: array of integer; B. var arr:array[1.10] of integer;
C. var arr[1..10]:integer; <i>D. Var arr:array[1..10] of integer;</i>
2) Trong các kiểu khai báo sau, chỉ ra khai báo không hợp lệ:


<i>A. var m:array[100..10] of integer;</i> B. var m:array[10..100] of integer;
C. var m:arr[1..10, ‘a’.. ‘h’]:integer; D. Var m:array[-3..10] of integer;
3) Hãy chọn phương án ghép đúng. Cho xâu S là ‘Hanoi-Vietnam’. Kết quả của hàm


Pos(‘Vietnam’,S) là


A. 5 B. 6 <i>C. 7</i> D. 8


4) Cho biết kết quả của đoạn chưong trình sau:
Var st:string;


Function chuoi(s:string):string;
var tam:string;


i:integer;
begin
tam:='';


for i:=1 to length(s) do
tam:=s[i]+tam;


chuoi:=tam;


end;


BEGIN


st:=chuoi('123456');
write('Ket qua: ',st);
readln;


END.


A. 123456 <i>B. 654321</i> C. st D. Tất cả đều sai


5) Đoạn<b> chương </b>trình<b> sau làm gì?</b>


<b>For i:=length(a) downto 1 do write(a[i]); </b>


a. Viết ra kí tự đầu của a b. Viết ra kí tự cuối của a
<i>c. Viết xâu a theo thứ tự ngược</i> d. Viết xâu a theo thứ tự


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

<b>Bài 1:</b>Nhập vào một xâu ký tự bất kỳ. Hãy chuẩn hoá xâu đó bằng cách chỉ giữ lại một dấu
trống (dấu cách) giữa các từ (từ được hiểu là một dãy các ký tự liên tiếp không chứa dấu
cách).


uses crt;


var i,k,m,n:integer;
s:string;


<b>Begin</b>



clrscr;


Write('Ban hay nhap mot xau ki tu:');Readln(s);
While Pos(' ',s)<>0 do Delete(s,Pos(' ',s),1);
Writeln('Xau da chuan hoa:',s); Readln;


<b>End</b>.


<b>Bài 2: Nhập vào một xâu kí tự, viết chương trình cho xâu vừa nhập ch</b>ạy xâu trên
màn hình


Uses CRT;


<b>Var</b> a : string;


<b>BEGIN</b>


Write('Nhập xâu : ');
Readln(a);


Repeat


write(a);
delay(500);
a:= ' ' + a;
clrscr;
Until keypressed;
Readln


<b>END</b>.



<b>Bài 3: </b>Viết chương trình tính tổng và hiệu các số chẵn nhỏ hơn n, với n nguyên dương
được nhập vào từ bàn phím (sử dụng chương trình con).


<b>Bài 4: </b>Viết chương trình tìm số lớn nhất của 4 số nguyên cho trước (sử dụng chương trình
con tìm số lớn nhất của hai số nguyên).


<b>Bài 5: </b>Viết chương trình đếm số lượng các số từ m đến n chia hết cho k, m,n,k nguyên
dương cho trước. (sử dụng chương trình con).


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

<b>Ngày soạn:28/4/2012</b>
<b>Tiết:52</b>


<b>KIỂM TRA HỌC KÌ II</b>


<i><b>I. Mục tiêu:</b></i>


<b>-</b> Củng cố các kiến thức và các nội dung đã học trong học kì 2.


<b>-</b> Rèn luỵên kĩ năng đọc hiểu chương trình và lập trình.


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


<i><b>-</b></i> Giáo viên: đề kiểm tra


<i><b>-</b></i> Học sinh: tự ôn tập và hệ thống các kiến thức đã học.


<i><b>III. Phương pháp:</b></i>


<i><b>-</b></i> Nêu vấn đề



<i><b>IV. Hoạt động dạy- học:</b></i>


<b>1. Hoạt động 1: </b>Ổn định lớp


<b>2. Hoạt động 2: </b>Từng học sinh độc lập làm bài kiểm tra trên giấy
Hình thức: trắc nghiệm 60% Tự luận 40%


<b>Nội dung đề kiểm tra</b>



<b>I. Phần trắc nghiệm(4 điểm): (Mỗi câu trả lời đúng được 0.5 điểm)</b>
<b>Câu 1: Cho khai báo sau :</b>


Var hoten : string;


<b>Phát biểu nào dưới đây là đúng ?</b>


<b>A. </b>Câu lệnh sai vì thiếu độ dài tối đa của xâu; <b>B. </b>Xâu có độ dài lớn nhất là 0;


<b>C. </b>Xâu có độ dài lớn nhất là 255; <b>D. </b>phải khai báo kích thước của xâu sau đó;
<b>Câu 2: Phát biểu nào dưới đây về kiểu mảng là phù hợp ?</b>


<b>A. </b>Độ dài tối đa của mảng là 255; <b>B. </b>Là một dãy hữu hạn các phần tử cùng kiểu;
<b>C. </b>Là một tập hợp các số nguyên; <b>D. </b>Mảng không thể chứa kí tự;


<b>Câu 3: Hãy chọn phương án ghép đúng nhất. Để khai báo số phần tử của mảng trong</b>
<b>PASCAL, người lập trình cần :</b>


<b>A. </b>khai báo chỉ số bắt đầu và kết thúc của mảng; <b>B. </b>khai báo một hằng số là số phần tử của
mảng;



<b>C. </b>không cần khai báo gì, hệ thống sẽ tự xác định; <b>D. </b>khai báo chỉ số kết thúc của mảng;
<b>Câu 4: Phát biểu nào dưới đây về chỉ số của mảng là phù hợp nhất ?</b>


<b>A. </b>Dùng để quản lí kích thước của mảng;
<b>B. </b>Dùng trong vòng lặp với mảng;


<b>C. </b>Dùng để truy cập đến một phần tử bất kì trong mảng;


<b>D. </b>Dùng trong vịng lặp với mảng để quản lí kích thước của mảng;


<b>Câu 5: Hãy chọn phương án ghép đúng. Cho xâu S là ‘Quangngai-Vietnam’. Kết quả của</b>
<b>hàm Length(S) là:</b>


<b>A. </b>16 <b>B. </b>17 <b>C. </b>14 <b>D. </b>15


<b>Câu 6: Cho </b><i><b>str</b></i><b> là một xâu kí tự, đoạn chương trình sau thực hiện cơng việc gì </b>
for i := 1 to length(str) – 1 do str[i+1] := str[i] ;


<b>A. </b>Khởi tạo lại mọi kí tự của xâu bằng kí tự đầu tiên;
<b>B. </b>Dịch chuyển các kí tự của sâu lên trước một vị trí;
<b>C. </b>Dịch chuyển các kí tự của xâu về sau 1 vị trí;
<b>D. </b>Khởi tạo lại mọi kí tự của xâu bằng kí tự cuối cùng;


<b>Câu 7: Hãy chọn phương án ghép đúng. Độ dài tối đa của xâu kí tự trong PASCAL là:</b>


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

<b>Câu 8: Str là một xâu kí tự, đoạn chương trình sau thực hiện cơng việc gì ?</b>
For i :=length(str) downto 1do write(str[i]);


<b>A. </b>In xâu ra màn hình; <b>B. </b>In từng kí tự xâu ra màn hình;
<b>C. </b>In từng kí tự ra màn hình theo thứ tự ngược, trừ kí tự đầu tiên;



<b>D. </b>In từng kí tự ra màn hình theo thứ tự ngược;
<b>II. Phần tự luận (6 điểm)</b>


<b>Câu 1(2 điểm): ): Cho chương trình sau :</b>
<b>Program </b>cau13;


<b>var </b>i, j, m, n : integer;


<b>Procedure</b> TINH (b : integer; Var c : integer);


<b>var</b> i : integer;


<b>begin</b>


i := 5; j := 1; b := b +i;
c := c+j;


write (i : 3, j : 3, b : 3, c : 3);


<b>end;</b>
<b>begin</b>


i := 5; j := 7; m : = 0; n := 2;
TINH (m, n);


Writeln (i : 3, j : 3, m : 3, n : 3) ;
Readln;


<b>End.</b>



<b>Câu 2(2 điểm):</b>Viết chương trình nhập dãy N số ngun có giá trị tuyệt đối khơng vượt q 100
(<i>N</i> 20)<sub>. Tính trung bình cộng các số trong dãy vừa nhập. </sub>


<b>Câu 3(2 điểm):</b> Viết hàm <b>LATAMGIAC (a, b, c : integer) : boolean;</b> để kiểm tra ba số a, b,
c có là ba cạnh của một tam giác hay không? (Hàm trả về giá trị bằng TRUE nếu a, b, c là ba
cạnh của một tam giác, hàm trả về giá trị bằng FALSE nếu a, b, c không là ba cạnh của một
tam giác).


--- - HẾT


<b>---Hãy đọc chương trình trên cho biết:</b>


1. Tham số hình thức:
2. Tham số thực sự:


3. Tham số giá trị (hay tham trị):
4. Tham số biến (hay tham biến):
5. Biến cục bộ:


</div>

<!--links-->

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

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