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

giao an tin 11 day du

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 (683.94 KB, 123 trang )

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

<i>Ngày soạn:24/08/2009</i> Tuần: 1


<i>Ngày giảng:</i> Tiết: 1


<b>Chương I: </b>



<b>MỘT SỐ KHÁI NIỆM VỀ LẬP TRÌNH VÀ NGƠN</b>


<b>NGHỮ LẬP TRÌNH</b>



<b>§1.</b>

<b>KHÁI NIỆM LẬP TRÌNH VÀ NGƠN NGỮ LẬP TRÌNH</b>



<b>I. Mục đích, u cầu</b>


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


- 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 biên dịch và
thông dịch.


<i><b>2. Kĩ năng:</b></i>
<i><b>3. Thái độ:</b></i>


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


- Kết hợp phương pháp giảng dạy thuyết trình, vấn đáp.
<b>II.Chuẩn bị của giáo viên và học sinh</b>


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, tài liệu tham khảo.



<i><b>2. Chuẩn bị của học sinh:</b></i> Đọc trước bài mới, vở ghi lý thuyết, SGK.
<b>III. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


<i><b>2. Giới thiệu chương trình học và dẫn nhập bài mới</b></i>
<i><b>2.1. Giới thiệu chương trình học</b></i>


- Giới thiệu sơ lược chương trình tin học 11.
- Giới thiệu sơ lược chương I.


<i><b>2.2. Dẫn nhập bài mới</b></i>


- Trong chương trình lớp 10 các em đã được biết đến một số khái niệm: ngơn
ngữ lập trình, chương trình dịch,...Trong bài học hôm nay chúng ta sẽ tập trung làm
sáng tỏ hơn về chương trình dịch (bao gồm biên dịch và thông dịch).


<i><b> 3. Nội dung bài giảng</b></i>


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


<b>Hoạt động 1: Khái niệm lập trình và ngơn ngữ lập trình</b>


<i><b>GV:</b></i> Đặt câu hỏi


Em hãy cho biết các bước giải một bài


toán trên máy tính?


<i><b>HS:</b></i> Suy nghĩ và trả lời câu hỏi.


<i><b>GV:</b></i> Phân tích câu trả lời của học sinh.
Nhắc lại các bước giải bài tốn trên máy
tính đã học ở lớp 10.


- Mọi bài tốn có thuật tốn đều có thể
giải được trên máy tính điện tử. Các bước
để giải 1 bài tốn:


+ Xác định bài toán


+ Xây dựng được thuật toán khả thi
+ Lập trình


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

<i><b>GV:</b></i> Thuyết trình về lập trình và ngơn ngữ
lập trình.


<i><b>GV:</b></i> Đặt câu hỏi:


Em hãy cho biết có mấy loại ngơn ngữ lập
trình?


<i><b>HS:</b></i> Trả lời câu hỏi của giáo viên.


<i><b>GV:</b></i> Chương trình viết bằng ngơn ngữ bậc
cao nói chung khơng phụ thuộc vào loại
máy, nghĩa là một chương trình có thể


thực hiện trên nhiều máy.


Chương trình viết bằng ngơn ngữ
máy có thể được nạp trực tiếp vào bộ nhớ
và thực hiện ngay, cịn chương trình viết
bằng ngôn ngữ bậc cao phải được chuyển
đổi thành ngôn ngữ máy mới có thể thực
hiện được


các câu lệnh của một ngơn ngữ lập trình
cụ thể để mơ tả dữ liệu và diễn đạt thuật
tốn.


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


- Có ba loại ngơn ngữ lập trình: ngôn ngữ
máy, hợp ngữ và ngôn ngữ bậc cao.


<b>Hoạt động 2: Chương trình dịch</b>


<i><b>GV:</b></i> Làm thế nào để chuyển chương trình
viết bằng ngơn ngữ bậc cao sang ngơn
ngữ máy?


<i><b>HS:</b></i> Cần phải có một chương trình dịch
để chuyển chương trình được viết bằng
các ngôn ngữ khác thành ngơn ngữ máy.



<i><b>GV:</b></i> Đưa ra ví dụ


- Em muốn giới thiệu về trường mình cho
du khách quốc tế biết tiếng Anh, có 2
cách để thực hiện:


+ Cách 1: Cần 1 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.--> Khơng có vb lưu trữ
+ Cách 2: Em soạn nội dung cần giới
thiệu ra giấy và người phiên dịch dịch
tồn bộ nội dung đó sang tiếng Anh rồi
đọc cho du khách.--> Có vb lưu trữ


<i><b>GV:</b></i> Thuyết trình về thơng dịch, biên dịch
và chương trình dịch. Lấy ví dụ về biên
dịch và thơng dịch để học sinh có thể hình
dung được mỗi cơng việc.


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


<b>Chương trình nguồn--> Chương trình</b>
<b>dịch--> Chương trình đích</b>


- Chương trình dịch có hai loại: biên dịch
và thông dịch



<b>a. Thông dịch (interpreter): Dịch lần</b>
lượt từng câu lệnh và thực hiện ngay câu
lệnh ấy.


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

<i><b>HS:</b></i> chú ý lắng nghe và ghi bài.


<i><b>GV:</b></i> Đi kèm với các chương trình dịch
thường có các công cụ như soạn thảo
chương trình nguồn, lưu trữ, tìm kiếm,
phát hiện lỗi, thơng báo lỗi,... ngơn ngữ
lập trình thường chứa tất cả các dịch vụ
trên.


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


- Chuyển đổi các câu lệnh đó thành một
hay nhiều câu lệnh trong ngôn ngữ máy.
- Thực hiện các câu lệnh vừa chuyển đổi
được.


<b>a. Biên dịch (Compiler): Thực hiện theo</b>
các bước sau:


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


- Dịch tồn bộ chương trình nguồn thành


một chương trình đích để có thể thực hiện
trên máy và có thể lưu trữ để sử dụng lại.


<b>IV. Củng cố bài</b>



- Qua tiết học này, các em đã có khái niệm chính xác hơn về lập trình và ngơn ngữ
lập trình, về chương trình dịch, phân biệt được hai loại chương trình dịch: biên dịch và
thơng dịch.


<b>V. Bài tập về nhà</b>



- Ơn tập lại bài học, trả lời các câu hỏi cuối bài.


-Đọc trước bài 2: “Các thành phần của ngơn ngữ lập trình” chuẩn bị cho tiết học
sau.


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

<i>Ngày soạn:26/08/2009</i> Tuần: 2


<i>Ngày giảng:28/08/2009</i> <i>-Lớp: 11A4</i> Tiết: 2


<b>§2.</b>

<b>CÁC THÀNH PHẦN CỦA NGƠN NGỮ LẬP TRÌNH</b>



<b>I. Mục đích, u cầu</b>


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


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


- Biết được các thành phần cơ bản của pascal: Bảng chữ cái, tên, tên chuẩn, tên


riêng(từ khoá), hằng và biến.


- Phân biệt được tên, hằng và biến. Biết đặt tên đúng.


<i><b>2. Kĩ năng:</b></i>
<i><b>3. Thái độ:</b></i>


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


- Kết hợp phương pháp giảng dạy thuyết trình, vấn đáp.
<b>II.Chuẩn bị của giáo viên và học sinh</b>


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, tài liệu tham khảo.


<i><b>2. Chuẩn bị của học sinh:</b></i> Đọc trước bài mới, vở ghi lý thuyết, SGK.
<b>III. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


<i><b>2. Kiểm tra bài cũ và dẫn nhập bài mới</b></i>
<i><b>2.1. Kiểm tra bài cũ:</b></i>


- Giáo viên nêu lần lượt các câu hỏi, gọi học sinh trả lời, đánh giá cho điểm:
+ Câu hỏi 1: Hãy nêu khái niệm ngơn ngữ lập trình và ý nghĩa của nó.
+ Câu hỏi 2: Chương trình dịch là gì?



<i><b>2.2. Dẫn nhập bài mới</b></i>


- Chúng ta biết rằng ngơn ngữ lập trình là để viết chương trình giải các bài tốn
trên máy tính. Vậy nó bao gồm những thành phần nào? Bài học hơm nay sẽ trả lời câu
hỏi đó.


<i><b> 3. Nội dung bài giảng</b></i>


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


<b>Hoạt động 1: Các thành phần cơ bản</b>


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


<i><b>HS:</b></i> Độ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ừ, ghép từ
thành câu.


<i><b>GV:</b></i> Nhận xét và thuyết trình.


Tương tự như vậy các ngơn ngữ lập trình
thường có chung một số thành phần như:


<b>1. Các thành phần cơ bản</b>



- Mỗi ngôn ngữ lập trình thường có 3
thành phần cơ bản: bảng chữ cái, cú pháp
và ngữ nghĩa.


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

dùng những kí hiệu nào để viết chương
trình, viết theo qui tắc nào, viết như vậy
có ý nghĩa là gì. Mỗi ngơn ngữ lập trình
có một qui định riêng về những thành
phần này.


VD: Pascal khơng sử dụng kí hiệu !, còn
c++<sub> sử dụng !làm phép phủ định.</sub>


<i><b>HS:</b></i> trật tự và chép bài đầy đủ.


<i><b>GV:</b></i> Giảng giải về cú pháp để viết CT.
Cú pháp của các NNLT khác nhau thì
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 còn c++<sub> dùng cặp kí hiệu {}.</sub>


<i><b>GV:</b></i> Mỗi ngôn ngữ khác nhau cũng có
cách xác định ngữ nghĩa khác nhau.


<i><b>HS:</b></i> lắng nghe và ghi chép
<b>Ví dụ : Xét 2 biểu thức </b>


A+B (1) với A,B là các số thực.
I+J (2) với I,J là các số nguyên
Khi đó:



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


<i><b>GV:</b></i> đưa ra ví dụ ngơn ngữ tự nhiên cũng
có bảng chữ cái, ngữ pháp (cú pháp), và
nghĩa của câu, từ.


dùng để viết chương trình.


- Trong ngơn ngữ pascal bảng chữ cái
gồm: các chữ cái trong bảng chữ cái tiếng
anh, các chữ số 0..9 và một số kí tự đặc
biệt (xem trong sgk).


<b>b. Cú pháp: là bộ quy tắc dùng để viết</b>
chương trình.


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


- Cú pháp cho biết cách viết chương trình
hợp lệ, 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 2: Giới thiệu tên</b>


<i><b>GV:</b></i> Đặt vấn đề



Trong chúng ta ai cũng đều có một cái tên
để phân biệt mọi người với nhau.


<i><b>GV:</b></i> Thuyết trình


Trong các NNLT cũng vậy, các đối tượng
sử dụng trong chương trình đều phải được
đặt tên để tiện cho việc sử dụng. Việc đặt
tên trong các ngôn ngữ khác nhau là khác
nhau, có ngơn ngữ phân biệt chữ hoa chữ
thường (c++<sub>), có ngôn ngữ không phân</sub>
biệt (pascal).


<i><b>GV:</b></i> Giới thiệu cách đặt tên trong ngơn
ngữ pascal.


Ví dụ:


Tên đúng: a, b, c, x1, x2,...
Tên sai: a bc, 2x, a&b,...


<i><b>GV:</b></i> thuyết trình


Ngơn ngữ nào cũng có 3 loại tên cơ bản.
Trong khi soạn thảo chương trình, các
ngơn ngữ lập trình thường hiển thị các tên


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


<b>a. Tên</b>



- Mọi đối tượng trong chương trình đều
phải được đặt tên. Mỗi NNLT có một quy
tắc đặt tên riêng.


- Trong pascal, phân biệt 3 loại tên:


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

dành riêng với một màu chữ khác hẳn với
các tên cịn lại giúp người lập trình nhận
biết được từ khoá, trong pascal là màu
trắng.


<i><b>GV:</b></i> Nếu có máy chiếu, mở một chương
trình viết bằng pascal để hs quan sát.


<i><b>GV:</b></i> thuyết trình


Các NNLT thường cung cấp một số đơn
vị chương trình có sẵn trong thư viện
chương trình giúp người lập trình có thể
thực hiện nhanh một số thao tác thường
dùng.


Chỉ cho hs một số tên chuẩn trong NNLT
pascal.


<i><b>GV:</b></i> Đưa ra ví dụ: để viết chương trình
giải phương trình bậc 2 ta cần khai báo
các tên sau:



a,b,c lưu hệ số
x1,x2 lưu nghiệm
delta lưu giá trị delta


<i><b>HS:</b></i> chú ý lắng nghe, ghi chép.


được dùng với ý nghĩa khác.
VD:


pascal: program, uses, const, var...
c++<sub>: main, include, void...</sub>


+ Tên chuẩn: là những tên được ngôn ngữ
lập trình qui định dùng với 1 ý nghĩa nhất
định nào đó, người lập trình có thể định
nghĩa lại để dùng nó với ý nghĩa khác.
VD:


pascal: real, integer, sin, cos...
c++<sub>: cin, cout...</sub>


+ Tên do người lập trình đặt:


. Được xác định bằng cách khai báo trước
khi sử dụng và khơng trùng với từ khố.
. Các tên trong chương trình khơng được
trùng nhau.


<b>Hoạt động 3: Hằng, biến và chú thích</b>



<i><b>GV:</b></i> Đặt vấn đề


- Bài tốn đặt vấn đề: Tính chu vi (cv),
diện tích(s) hình trịn với bán kính(r) bất
kì nhập từ bàn phím. Các em hãy xác định
các đại lượng có trong bài tốn trên?


<i><b>HS: </b></i>suy nghĩ và trả lời.


- VD trên pi chính là một hằng sốKN:


+Đại lượng có giá trị ko thay đổi: Pi=3.14
+Đại lượng có giá trị thay đổi:cv,s,r


<i><b>GV:</b></i> Hằng được chia làm hai loại: hằng
được đặt tên và hằng không được đặt tên (
là các giá trị được viết trực tiếp khi viết
chương trình.


VD trên:


s:=r*r*3.14 (dùng hằng ko đặt tên_ dùng
trực tiếp).


s:=r*r*pi (dùng tên hằng)


<i><b>GV:</b></i> 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 nên thường được
dùng để lưu trữ kết quả, làm trung gian


cho các tính tốn,...


VD trên: biến là cv,s,r


<b>b. Hằng, biến và chú thích.</b>
<b>* Hằng:</b>


- Hằng là đại lượng khơng đổi trong quá
trình thực hiện chương trình. Có 3 loại
hằng thường dùng:


+ Hằng số học: là các số ngun hoặc số
thực, có dấu hoặc khơng dấu


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


+ Hằng xâu: là một chuỗi kí tự bất kì. Khi
viết, chuỗi kí tự này được đặt trong cặp
dấu nháy.


<b>* Biến:</b>


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

<i><b>GV:</b></i> thuyết trình


Khi viết chương trình người lập trình
thường có nhu cầu giải thích những câu
lệnh mình viết, để khi đọc lại được thuận
tiện hoặc người khác đọc có thể hiểu được
chương trình mình viết, do vậy các NNLT


thường cung cấp cho ta cách để đưa chú
thíc vào trong chương trình.


<i><b>GV:</b></i> Mở một chương trình hoặc treo bảng
phụ chứa các khái niệm của bài học.


<b>* Chú thích</b>


- Có thể cài đặt các đoạn chú thích trong
chương trình nguồn. Chú thích khơng làm
ảnh hưởng đến chương trình. Dùng để giải
thích cho chương trình rõ ràng và dễ hiểu.
- VD:


Trong pascal: Chú thích được đặt giữa cặp
dấu { } hoặc (* *)


c++<sub>: /**/</sub>


<b>IV. Củng cố bài</b>



- Bài học hôm nay các em cần ghi nhớ những nội dung sau:
+ Các thành phần cơ bản của NNLT pascal.


+ Một số khái niệm: tên, hằng và biến, chú thích của NNLT pascal và c++<sub>.</sub>

<b>V. Bài tập về nhà</b>



- Ôn tập lại bài học hôm nay.


- Làm bài tập trong sgk tin học 11 trang 13.


- Ôn tập chương I.


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

<i>Ngày soạn:01/09/2009</i> Tuần: 3


<i>Ngày giảng:04/09/2009 - Lớp 11A4</i> Tiết: 3


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


<b>I. Mục đích, yêu cầu</b>


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


- Một số khái niệm cơ bản về lập trình và NNLT.
- Các thành phần cơ bản của NNLT.


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


- Biết viết hằng và tên đúng trong một NNLT cụ thể.


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


- Ham muốn học một NNLT 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. Phương pháp</b>


- Kết hợp phương pháp giảng dạy thuyết trình, vấn đáp.
<b>II.Chuẩn bị của giáo viên và học sinh</b>


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, SBT, tài liệu tham khảo.



<i><b>2. Chuẩn bị của học sinh:</b></i> Đọc trước bài mới, vở ghi lý thuyết, SGK, SBT.
<b>III. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


<i><b>2. Kiểm tra bài cũ và dẫn nhập bài mới</b></i>
<i><b>2.1. Kiểm tra bài cũ:</b></i>


- Kiểm tra lồng ghép với bài mới.


<i><b>2.2. Dẫn nhập bài mới</b></i>


- Nêu kế hoặch ôn tập chương I và làm bài tập.


<i><b>3. Hướng dẫn bài tập SGK</b></i>


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


<b>Hoạt động 1: Hướng dẫn câu hỏi 1</b>


<i><b>GV</b></i>: nêu câu hỏi. Yêu cầu hs chuẩn bị câu
trả lời.


<i><b>HS:</b></i> suy nghĩ, tham gia xây dựng bài.


<i><b>GV:</b></i> Nhận xét và cho điểm. Nhấn mạnh


những nội dung chủ yếu cho câu hỏi.


<i><b>HS: </b></i>trật tự, chép câu trả lời.


<b>Câu 1: Tại sao người ta phải xây dựng</b>
<b>các NNLT bậc cao?</b>


Người ta phải xây dựng NNLT bậc cao
bởi những lí do sau:


<b>- Lập trình bằng ngơn ngữ bậc cao dễ viết</b>
hơn vì các lệnh được mã hố gần với ngôn
ngữ tự nhiên, thuận tiện cho đông đảo
người dùng.


- Chương trình viết bằng ngơn ngữ lập
trình bậc cao nói chung khơng phụ thuộc
vào loại máy, cùng 1 chương trình có thể
thực hiện trên nhiều loại máy tính khác
nhau.


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

cao dễ hiểu, dễ hiệu chỉnh và dễ nâng cấp
hơn.


- NNLT bậc cao cho phép làm việc với
nhiều kiểu DL và cách tổ chức DL đa
dạng, thuận tiện cho mơ tả thuật tốn.
<b>Hoạt động 2: Hướng dẫn câu 2</b>


<i><b>GV:</b></i> nêu câu hỏi. Yêu cầu hs chuẩn bị câu


trả lời.


<i><b>HS:</b></i> đọc sách, tham gia xây dựng bài.


<i><b>GV:</b></i> Nhận xét và cho điểm. Nhấn mạnh
những nội dung chủ yếu cho câu hỏi.


<i><b>HS:</b></i> trật tự, chép câu trả lời.


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


- Chương trình dịch là 1 chương trình có
chức năng chuyển đổi các ngơn ngữ khác
sang ngơn ngữ máy.


- Cần phải có chương trình dịch để chuyển
chương trình được viết bằng các ngơn ngữ
khác thành ngôn ngữ máy thì máy tính
mới có thể hiểu và thực hiên được.


<b>Hoạt động 4: Hướng dẫn câu 3</b>


<i><b>GV:</b></i> nêu câu hỏi. Yêu cầu hs chuẩn bị câu
trả lời.


<i><b>HS:</b></i> đọc sách, tham gia xây dựng bài.


<i><b>GV:</b></i> Nhận xét và cho điểm. Nhấn mạnh
những nội dung chủ yếu cho câu hỏi.



<i><b>HS:</b></i> trật tự, chép câu trả lời.


<b>Câu 3: Biên dịch và thông dịch khác</b>
<b>nhau như thế nào?</b>


+ Trình biên dịch duyệt, kiểm tra, phát
hiện lỗi xác địch chương trình nguồn có
dịch được khơng, duyệt tồn bộ chương
trình nguồn thành chương trình đích có
thể thực hiện trên máy và có thể lưu trữ để
tái sử dụng.


+ Trình thơng dịch lần lựơt dịch 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 báo lỗi nếu
không dịch được.


 Trong thông dịch khơng có chương


trình đích để lưu trữ. Trong biên dịch cả
chương trình nguồn và chương trình đích
có thể lưu trữ lại để sử dụng về sau.
<b>Hoạt động 4: Hướng dẫn câu 4</b>


<i><b>GV:</b></i> nêu câu hỏi. Yêu cầu hs chuẩn bị câu
trả lời.


<i><b>HS:</b></i> đọc sách, tham gia xây dựng bài.



<i><b>GV:</b></i> Nhận xét và cho điểm. Nhấn mạnh
những nội dung chủ yếu cho câu hỏi.
HS: trật tự, chép câu trả lời.


<b>Câu 4: Hãy cho biết điểm khác nhau</b>
<b>giữa tên dành riêng và tên chuẩn?</b>
- Tên dành riêng được dùng với ý nghĩa
xác định, không được dùng với ý nghĩa
khác. Tên chuẩn được dùng với ý nghĩa
nhất định, có thể khai báo và dùng với ý
nghĩa khác.


<b>Câu 5: Hãy viết ra 3 tên đúng theo quy định của pascal?</b>
<b>-Gọi HS lên bảng viết 3 tên đúng và 3 tên sai.</b>


<b>Câu 6: </b>


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

a> 150.0 b> -22 c> 6,23
d> ‘43’ e> A20 f> 1.06E-15
g> 4+6 h> ‘C i> ‘True’
c, e, g, h, i sai.


c: dấu phẩy phải thay bằng dấu chấm
e: là tên chưa có giá trị


g: là biểu thức số học


h: sai qui định về hằng xâu: thiếu nháy đơn
i: là hằng xâu nhưng không phải là hằng logic

<b>IV. Củng cố bài</b>




- Bài học hôm nay các em cần ghi nhớ những khái niệm cơ bản.
- Làm 1 số bài tập trong SBT.


<b>V. Bài tập về nhà</b>



- Ôn tập lại bài học hơm nay.
- Làm bài tập trong SBT tin học.
- Ơn tập chương I.


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

<i>Ngày soạn:08/09/2009</i> Tuần: 4


<i>Ngày giảng:11/09/2009 -Lớp: 11A4</i> Tiết: 4


<b>Chương II: </b>



<b>CHƯƠNG TRÌNH ĐƠN GIẢN</b>



<b>§3.</b>

<b>CẤU TRÚC CHƯƠNG TRÌNH</b>



<b>I. Mục đích, u cầu</b>


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


- Giúp học sinh hiểu chương trình là sự mơ tả của thuật toán bằng NNLT.
- Biết cấu trúc chung của một chương trình.


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


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



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


- Tư duy logic.
<b>II. Phương pháp</b>


- Kết hợp phương pháp giảng dạy thuyết trình, vấn đáp.
<b>II.Chuẩn bị của giáo viên và học sinh</b>


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, tài liệu tham khảo, một số chương
trình mẫu.


<i><b>2. Chuẩn bị của học sinh:</b></i> Đọc trước bài mới, vở ghi lý thuyết, SGK.
<b>III. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


<i><b>2. Dẫn nhập bài mới</b></i>


- chúng ta biết rằng, các ứng dụng của tin học trong đời sống là thu thập, xử lí và
tìm kiếm thơng tin,... các cơng việc này chỉ có thể thực hiện thơng qua các chương
trình mà con người đã lập sẵn. Chúng ta hãy cùng nhau tìm hiểu xem một chương trình
có cấu trúc như thế nào. Bài học hơm nay sẽ giải quyết vấn đề đó.


<i><b> 3. Nội dung bài giảng</b></i>



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


<b>Hoạt động 1: Cấu trúc chung</b>


<i><b>GV: </b></i>Đặt vấn đề


Một bà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?


<i><b>HS: </b></i>Lắng nghe và suy nghĩ trả lời:
- Có 3 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


<i><b>GV: </b></i>Trong tin học chương trình được viết
bằng một NNLT bậc cao thường gồm


<b>1. Cấu trúc chung</b>


- Cấu trúc chương trình có 2 phần được
mơ tả như sau:


<b>[<phần khai báo>]</b>


<b><phần thân chương trình></b>


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

phần khai báo và phần thân.



<i><b>HS:</b></i> nghe giảng và chép bài. + Phần khai báo có thể có hoặc khơng.+ Phần thân chương trình bắt buộc phải
có.


<b>Hoạt động 2: Các thành phần của chương trình</b>


<i><b>GV: </b></i>Phần khai báo sẽ báo cho máy biết
chương trình sẽ sử dụng những tài nguyên
nào của máy.


Chúng ta có thể khai báo tên chương trìn,
hằng được đặt tên, chương trình con...
Khai báo chương trình có thể có hoặc
khơng, tên chương trình do người lập
trình tạo nên theo đúng quy tắc đặt tên.


<i><b>HS:</b></i> nghe giảng và ghi bài.


<i><b>GV: </b></i>Thư viện chương trình thường chứa
những đoạn chương trình lập sẵn, các
đoạn chương trình này rất hữu ích cho
người lập trình.


<i><b>HS:</b></i> nghe giảng và ghi bài.


<i><b>GV:</b></i> Thuyết trình


Khai báo hằng là việc đặt tên cho hằng để
tiện khi sử dụng và tránh việc phải viết lại
nhiều lần cùng một hằng trong chương
trình.



Khai báo hằng cịn tiện dụng hơn khi thay
đổi giá trị của nó trong chương trình.


<i><b>HS:</b></i> nghe giảng và ghi bài.


<i><b>GV:</b></i> Thuyết trình


Khai báo biến là xin máy tính cấp cho
chương trình một vùng nhớ để lưu trữ và
xử lí thơng tin trong bộ nhớ trong. Chúng
ta sẽ tìm hiểu sâu hơn vấn đề này trong
<b>§5.</b>


<i><b>HS:</b></i> nghe giảng và ghi bài.


<i><b>GV:</b></i> Thuyết trình


Mỗi ngơn ngữ lập trình có cách tổ chức
chương trình khác nhau, thường thì phần
thân chứa các câu lệnh của chương trình.


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


* Khai báo tên chương trình:


- ý nghĩa: để ghi nhớ tên bài tốn cần giải,
phần này có thể có hoặc khơng.



- Cách viết:


<b>Program </b><i><b><Tên CT></b></i><b>;</b>
- VD: Program giaiptb2;
* Khai báo thư viện:


- ý nghĩa: cung cấp 1 số chương trình
thơng dụng đã được lập sẵn.


- Cách viết:


<b>Uses </b><i><b><Tên thư viện></b></i><b>;</b>
- VD: Uses crt;


Lệnh khi sử dụng thư viện: Clrscr;
- NNLT c++<sub>: #include <tên thư viện>;</sub>
Lệnh khi sử dụng thư viện: clrscr();
* Khai báo hằng:


- ý nghĩa: thường sử dụng cho những giá
trị xuất hiện nhiều lần trong chương trình.
- Cấu trúc:


<b>Const </b><i><b><Tên hằng>=<giá trị>;</b></i>


- VD: Const pi=3.14;


Sau từ khố const có thể có nhiều dịng
khai báo.



- VD: const a=5;
b=4;
* Khai báo biến:


- Mọi biến trong chương trình đều phải
được đặt tên và khai báo cho chương trình
dịch biết để lưu trữ và xử lí.


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


Vd: giải ptb2: ax2<sub>+bx+c=0.</sub>
a,b,c là cần nhập.


delta,x1,x2 là biến cần tìm.
<b>b. Phần thân chương trình</b>


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


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

<b>[<dãy lệnh>]</b>
<b>End.</b>


<b>Hoạt động 3: Ví dụ chương trình đơn giản</b>


<i><b>GV: </b></i>Yêu cầu học sinh đọc ví dụ đơn giản
trong SGK.



Giải thích từng dịng lệnh.


Viết lên bảng 1 chương trình đơn giản
trong ngôn ngữ Pascal


Program VD1;
const pi=3.14;
Begin


Writeln(pi);
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?


<i><b>HS :</b></i> Suy nghĩ và trả lời.

<b>IV. Củng cố bài</b>



- Hôm nay chúng ta đã học xong bài Cấu truc chương trình Với những nội dung
sau: một chương trình gồm có hai phần: phần khai báo và phần thân.


+ Phần khai báo: tên chương trình, biến, thư viện, hằng...
+ Phần thân: các câu lệnh.


<b>V. Bài tập về nhà</b>



- Đọc lại bài học và làm các bài tập 1, 2, 3, 4 SGK-tr35.


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

<i>Ngày soạn:12/09/2009</i> Tuần: 5


<i>Ngày giảng:15/09/2009 - Lớp: 11A4</i>


<i> - Lớp: 11A5</i> Tiết: 5


<b>§4.</b>

<b>MỘT SỐ KIỂU DỮ LIỆU CHUẨN</b>



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


<b>I. Mục đích, yêu cầu</b>


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


- Biết được một số kiểu dữ liệu chuẩn: nguyên, thực, kí tự, logic.
- Xác định được kiểu dữ liệu cần khai báo của dữ liệu đơn giản.


- Biết được cấu trúc chung của khai bào biến. Biết các khai báo biến đúng


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


- Xác định được kiểu cần khai báo của dữ liệu đơn giản.
- Khai báo đúng. Nhận biết khai báo sai.


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


- Tư duy logic.
<b>II. Phương pháp</b>


- Kết hợp phương pháp giảng dạy thuyết trình, vấn đáp, kết hợp những kiến thức
SGK và những ví dụ thực tế..


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



<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, tài liệu tham khảo, một số VD.


<i><b>2. Chuẩn bị của học sinh:</b></i> Đọc trước bài mới, vở ghi lý thuyết, SGK.
<b>III. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


<i><b>2. Kiểm tra bài cũ và dẫn nhập bài mới</b></i>
<i><b>2.1. Kiểm tra bài cũ:</b></i>


- GV nêu lần lượt các câu hỏi, gọi học sinh trả lời, đánh giá, cho điểm.
+ Câu hỏi 1: Hãy nêu các thành phần cơ bản của chương trình?


+ Câu hỏi 2: Em hãy cho biết cấu trúc của một chương trình pascal đơn giản?


<i><b>2.2. Dẫn nhập bài mới</b></i>


- Chúng ta biết rằng, trong bất kì chương trình pascal nào cũng ln bắt đầu
bằng phần khai báo, đặc biệt là phần khai báo biến để biết kiểu dữ liệu trả về và kiểu
dữ liệu sẽ tính tốn trên máy. Để biết được những kiểu dữ liệu hay dùng trong pascal,
chúng ta sẽ nghiên cứu bài học hôm nay.


<i><b> 3. Nội dung bài giảng</b></i>


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



<b>Hoạt động 1: Một số kiểu dữ liệu chuẩn</b>


<i><b>GV: </b></i>Trong toán học để thực hiện được
tính tốn cần phải có các tập số. Đó là các
tập số nào ?


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

<i><b>GV: </b></i>Đó là một số kiểu dữ liệu quen thuộc
trong toán học. Cũng tương tự như vậy,
trong ngơn ngữ lập trình thường cung cấp
một số kiểu dữ liệu chuẩn cho biết phạm
vi có thể lưu trữ, dung lượng bộ nhớ cần
thiết để lưu trũ và các phép toán tác động
lên dữ liệu. Sau đây ta sẽ đi vào chi tiết
từng loại dữ liệu.


<i><b>GV:</b></i> Em thấy kiểu nguyên trong máy tính
so với kiểu ngun trong tốn học có hạn
chế gì?


<i><b>HS:</b></i> Miền giá trị bị hạn chế, tập số
nguyên là vô hạn, nhưng kiểu nguyên
trong máy tính là hữu hạn.


<i><b>GV:</b></i> Nêu câu hỏi


Em thấy số thực có đặc điểm gì?


<i><b>HS:</b></i>Cho kết quả gần đúng, kq gồm 2 phần
là phần nguyên và phần thực. Số thực


trong máy tính cũng là hữu hạn nhưng
miền giá trị được mở rộng hơn so với kiểu
nguyên.


<i><b>GV:</b></i> Em hãy cho biết kiểu kí tự được
dùng khi nào?


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


Kiểu kí tự thường dùng khi thơng tin là
các kí tự, xâu, hầu hết các NNLT đều có
kiểu kí tự để làm việc với văn bản.


<i><b>GV:</b></i> Em biết những bảng mã nào?


<i><b>HS:</b></i> ASCII và Unicode


<i><b>GV:</b></i> Trong lập trình nói chung thì kiểu kí
tự thường là tập các kí tự trong bảng mã
kí tự, mỗi kí tự có mã thập phân tương
ứng, để lưu các giá trị là kí tự thì phải lưu
mã thập phân tương ứng.


<i><b>GV:</b></i> Kiểu logic là kiểu thường chỉ có 2
giá trị đúng – sai. Mỗi ngôn ngữ khác
nhau lại có cách mơ tả kiểu logic khác
nhau, pascal dùng true-false, một số ngôn
ngữ khác mô tả bằng 0-1...


<b>1. Kiểu nguyên</b>



Kiểu nguyên bao gồm một số kiểu dữ liệu
cơ bản sau: byte, integer, word, longint.
Mỗi giá trị được lưu trữ trong bộ nhớ từ 1
đến 4 byte. Cụ thể: sgk-tr21.


<b>2. Kiểu thực</b>


Có nhiều kiểu dùng để khai báo đại lượng
nhận giá trị thực. Nhưng hay dùng hơn cả
là kiểu: real và extend được lưu trữ trong
bộ nhớ từ 6byte đến 10 byte.


sgk-tr21
<b>3. Kiểu kí tự</b>
- Tên: Char


- Miền giá trị: là các kí tự trong bảng mã
ascii gồm 256 kí tự.


- Mỗi kí tự có 1 mã từ 0 đến 255.


<b>4. Kiểu logic</b>
- Tên: Boolean


- Miền giá trị: chỉ có 2 giá trị là true hoặc
false


<b>Hoạt động 2: Khai báo biến</b>



- Chúng ta đã làm quen với một số kiểu DL chuẩn như kiểu nguyên, kiểu thực, kiểu
logic và kiểu kí tự. Mặt khác, mọi biến dùng trong chương trình đều cần khai báo tên
và kiểu dữ liệu của biến.


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

cho máy biết phải dùng những tên nào
trong chương trình.


<i><b>HS:</b></i> Lắng nghe và ghi chép.


<i><b>GV:</b></i> Đưa ra ví dụ


Xét khai báo của bài tốn tính cv,s hình
trịn với bán kính r.


var r:byte;
cv,s:real;


<i><b>GV: </b></i>Đặt câu hỏi


Khi khai báo biến cần lưu ý những gì?


<i><b>HS:</b></i> Suy nghĩ và trả lời câu hỏi.


<i><b>GV:</b></i> Phân tích câu trả lời của HS.


khai báo như sau:


var <DS biến>:<Kiểu DL>;
- Trong đó:



+ var: là từ khố để khai báo biến. Sau từ
khố var có thể có nhiều dịng khai báo.
+ DS biến: là tên các biến nếu nhiều biến
thì dùng dấu phẩy để ngăn cách.


+ Kiểu DL: là một kiểu DL nào đó của
ngơn ngữ pascal.


*Chú ý:


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


- Không nên đặt tên biến quá ngắn hoặc
quá dài.


- Khai báo biến cần lưu ý đến phạm vi gtrị
của biến.


<b>IV. Củng cố bài</b>



- Hơm nay chúng ta đã tìm hiểu về các kiểu dữ liệu thường dùng và khai báo biến.
Với mỗi ngôn ngữ, các em cần nắm vững tên kiểu, miền giá trị, kích thước trong bộ
nhớ. Cần lưu ý cách khai báo biến.


<b>V. Bài tập về nhà</b>



- Đọc lại bài học và làm các bài tập:


+ Hãy viết khai báo cho bài tốn tính chu vi, diện tích hcn với các cạnh nhập từ bàn


phím.


+ Hãy viết khai báo cho bài tốn giải phương trình bậc nhất.


- Nghiên cứu bài 6: “Phép toán, biểu thức, câu lệnh gán” để chuẩn bị cho tiết học
sau.


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

<i>Ngày soạn:13/09/2009</i> Tuần: 5
<i>Ngày giảng:16/09/2009 - Lớp 11A5</i>


<i>Ngày giảng:18/09/2009 - Lớp 11A4</i> Tiết: 6


<b>§6.</b>

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



<b>I. Mục đích, yêu cầu</b>


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


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


- Hiểu lệnh gán.


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


- Viết được lệnh gán.


- Viết được các biểu thức số học và logic với các phép tốn thơng dụng.


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



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


- Kết hợp phương pháp giảng dạy thuyết trình, vấn đáp, kết hợp những kiến thức
SGK và những ví dụ thực tế.


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


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, tài liệu tham khảo, VD.


<i><b>2. Chuẩn bị của học sinh:</b></i> Đọc trước bài mới, vở ghi lý thuyết, SGK.
<b>III. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


<i><b>2. Kiểm tra bài cũ và dẫn nhập bài mới</b></i>
<i><b>2.1. Kiểm tra bài cũ:</b></i>


- GV nêu lần lượt các câu hỏi, gọi học sinh trả lời, đánh giá, cho điểm.
+ Câu hỏi 1: Em hãy cho biết một số kiểu dữ liệu chuẩn?


+ Câu hỏi 2: Em hãy cho biết cách khai báo biến trong NNLT pascal?


<i><b>2.2. Dẫn nhập bài mới</b></i>


- Trong khi viết chương trình ta thường phải thực hiện các tính toán, thực hiện


các so sánh để đưa ra quyết định xem làm việc gì? Vậy trong chương trình ta viết thế
nào? có giống với ngơn ngữ tự nhiên hay khơng? Tất cả ngơn ngữ có sử dụng chúng
giống nhau hay không? Ta xét các khái niệm này trong ngôn ngữ pascal.


<i><b>3. Nội dung bài giảng </b></i>


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


<b>Hoạt động 1: Phép tốn</b>


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


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


<i><b>GV:</b></i> Chúng có dùng được trong NNLT?
Chỉ một số phép dùng được, một số phép
toán phải xây dựng khác.


<b>1. Phép toán</b>


- NNLT Pascal sử dụng một số phép toán
như sau:


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

<i><b>GV:</b></i> Nêu các phép toán thường dùng
trong pascal.


<i><b>HS:</b></i> Trật tự nghe giảng và chép bài.



lấy phần dư).


- Các phép toán quan hệ: <, <=, >, >=, =,
<>(khác), dùng để so sánh 2 hay nhiều đại
lượng. Kết quả của các phép toán này là
True hoặc False


- 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>Hoạt động 2: Biểu thức số học</b>


<i><b>GV:</b></i> Trong toán học biểu thức là gì?


<i><b>HS:</b></i> Đưa ra khái niệm.


<i><b>GV:</b></i> Đưa ra khái niệm biểu thức trong lập
trình.


Đưa ra trình tự thực hiện của biểu thức số
học, so sánh có giống với trình tự biểu
thức trong tốn học.


<i><b>HS:</b></i> Nghe giảng và ghi bài.


<i><b>GV:</b></i> yêu cầu hs 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 x+y+z2
2z 1-z


<i><b>HS:</b></i> Lên bảng trình bày.
2*a+5*b+c


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


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


- Là một biến kiểu số hoặc một hằng số.
- Là các biến kiểu số và các hằng số liên
kết với nhau bởi các phép toán số học.
- Dùng cặp dấu ngoặc trịn để qui định
trình tự tính tốn.


- Trình tự thực hiện của biểu thức số học
là: trong ngoặc trước ngoài ngoặc sau,*, /,
div, mod, +, -.


<b>Hoạt động 3: Hàm số học chuẩn</b>


<i><b>GV:</b></i> Trong toán học các em đã được làm
quen với những hàm số học nào?


<i><b>HS:</b></i> Hàm khai căn, hàm tính trị tuyệt,
hàm lượng giác,...



<i><b>GV:</b></i> Để lập trình được dễ dàng, thuận tiện
hơn, pascal có một số hàm hỗ trợ tính giá
trị những hàm tốn học thường dùng. Các
hàm này gọi là các hàm chuẩn và có tên
gọi riêng. Đối số của hàm là một hay
nhiều biểu thức số học và được đặt dấu
ngoặc tròn sau tên hàm.


<i><b>HS:</b></i> Trật tự nghe giảng, ghi bài đầy đủ.


<b>3. Hàm số học chuẩn</b>


Cách viết cho một số hàm số học chuẩn :
Tên hàm (đối số)


+ Đối số là một hay nhiều biểu thức số
học đặt trong dấu ngoặc ( ) sau tên hàm .
+ Một số hàm thông dụng (SGK – tr26).
VD: Nghiệm của phương trình bậc 2
(-b+sqrt(b*b-4*a*c))/(2*a) hoặc
(-b+sqrt(sqr(b)-4*a*c))/(2*a)


- Bản thân hàm cũng có thể coi là biểu
thức số học.


<b>Hoạt động 4: Biểu thức quan hệ</b>


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


gọi là biểu thức so sánh 2 giá trị cho kết
quả là đúng hoặc sai (logic).


<b>4. Biểu thức quan hệ</b>


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

VD: 3>5 cho kết quả sai.


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


<i><b>HS:</b></i> Kiểu logic


thưc 2>


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


<b>Hoạt động 5: Biểu thức Logic</b>


<i><b>GV:</b></i> Muốn so sánh nhiều điều kiện đồng
thời ta làm thế nào?


HS: đưa ra ý kiến của mình (và, hoặc...)


<i><b>GV:</b></i> Thuyết trình bài giảng.


<i><b>HS:</b></i> Nghe giảng và chép bài.


<i><b>GV:</b></i> Trong toán học ta có biểu thức
5<=x<=7, hãy cho biết dùng phép toán


logic nào để biểu diễn biểu thức này trong
ngơn ngữ lập trình.


<i><b>HS:</b></i> Suy nghĩ và trả lời.


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


- Dùng phép toán and hoặc or để liên kết
các biểu thức logic đơn giản và biểu thức
quan hệ lại với nhau.


- Phép toán not được viết trước biểu thức
cần phủ định. Vd: not(x<1)


- Các biểu thức quan hệ thường được đặt
trong dấu ngoặc tròn.


VD: (5<=x) and (x<=11)
<b>Hoạt động 6: Câu lệnh gán</b>


<i><b>GV:</b></i>Giới thiệu 1 ví dụ về lệnh gán trong
Pascal như sau: x:=8+4;


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


<i><b>GV: </b></i>Hỏi: hãy cho biết chức năng của lệnh
gán?



<i><b>HS:</b></i> Suy nghĩ, nghiên cứu sgk trả lời.


<i><b>GV:</b></i> Thuyết trình về lệnh gán.


<i><b>HS:</b></i> Nghe giảng và chép bài.


GV: Nhấn mạnh và nêu một số điểm chú
ý khi sử dụng lệnh gán.


- Bên trái lệnh gán là tên biến, bên phải là
biểu thức đã xác định.


- Một số điểm chú ý:


+Viết đúng kí hiệu lệnh gán


+ Tên biến và biểu thức được gán phải có
cùng miền giá trị.


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


- Lệnh gán là một trong những lệnh cơ
bản nhất của các ngơn ngữ lập trình,
thường dùng để gán giá trị biểu thức cho
biến


- Cách viết:



<tên biến>:=<biểu thức>;
- Sự thực hiên của máy:
+ Tính giá trị của biểu thức
+ Đặt giá trị vào tên biến


VD: gán cơng thức tính nghiệm cho x1
x1:=(-b+sqrt(b*b-4*a*c))/(2*a);


i:=i+1;


<b>IV. Củng cố bài</b>



- Hơm nay chúng ta đã tìm hiểu về các phép toán, biểu thức, câu lệnh gán trong
NNLT pascal. Các em đã được biết về các hàm số học chuẩn dùng trong pascal.


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

- Về nhà các em cần đọc kĩ lại bài học hôm nay, nắm vững các phép tốn, các biểu
thức hàm số học và trình tự thực hiện các phép toán trong một biểu thức. Điều này rất
cần thiết trong việc viết thuật toán và lập trình các bài tốn sau này.


- Nghiên cứu bài học tiếp theo: “Các thủ tục chuẩn vào/ra đơn giản”

<b>VI. Nhận xét rút kinh nghiệm:</b>



<i>Ngày soạn:19/09/2009</i> Tuần: 6


<i>Ngày giảng:22/09/2009 - Lớp 11A4</i>


<i> - Lớp 11A5</i> Tiết: 7


<b>§7.</b>

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




<b>§8.</b>

<b>SOẠN THẢO, DỊCH, THỰC HIỆN VÀ HIỆU CHỈNH</b>



<b>CHƯƠNG TRÌNH</b>


<b>I. Mục đích, yêu cầu</b>


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


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


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


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


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


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


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


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


- Ham muốn tìm hiểu các biên soạn và thực hiện chương trình.
<b>II. Phương pháp</b>


- Kết hợp phương pháp giảng dạy thuyết trình, vấn đáp, kết hợp những kiến thức
SGK và những ví dụ thực tế.



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


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, tài liệu tham khảo,VD.


<i><b>2. Chuẩn bị của học sinh:</b></i> Đọc trước bài mới, vở ghi lý thuyết, SGK.
<b>III. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


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

- GV nêu lần lượt các câu hỏi, gọi học sinh trả lời, đánh giá, cho điểm.
+ Câu hỏi 1: Hãy nêu quy tắc cách viết biểu thức số học?


+ Câu hỏi 2: Em hiểu thế nào là hàm số học chuẩn? Nêu một số hàm chuẩn mà
em biết?


+ Câu hỏi 3: Em hiểu thế nào là biểu thức quan hệ, biểu thức logic? Nêu ví dụ
minh hoạ?


<i><b>2.2. Dẫn nhập bài mới</b></i>


- Chúng ta đã làm quen với các phép toán, biểu thức và câu lệnh gán. Vậy làm
thế nào để thực hiện được phép toán và đưa kết quả của các phép tốn, các biểu thức...
ra màn hình cho người sử dụng biết? Câu hỏi này sẽ được giải quyết khi chúng ta
nghiên cứu bài học: “Các thủ tục chuẩn vào/ra đơn giản”.


<i><b>3. Nội dung bài giảng </b></i>



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


<b>Hoạt động 1: Nhập dữ liệu từ bàn phím</b>


<i><b>GV:</b></i> Thuyết trình


Khi giải quyết một bài toán, ta phải đưa
dữ liệu vào để máy tính xử lý, 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 bộ dữ liệu
cố định. Để chương trình giải quyết được
nhiều bộ dữ liệu hơn, ta phải sử dụng thủ
tục nhập dữ liệu.


<i><b>GV:</b></i> Diễn giải hoạt động của read/readln,
nêu sự khác nhau.


<i><b>GV:</b></i> Mỗi ngơn ngữ có cách nhập thơng tin
khác nhau.


Đưa ra hai ví dụ về chương trình có nhập
thơng tin vào từ bàn phím.


Chạy chương trình cho học sinh quan sát,
nhận xét về chương trình.


Giải thích việc nhập giá trị cho nhiều biến
đồng thời.



<i><b>HS:</b></i> Trật tự nghe giảng và chép bài


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


- Thủ tục nhập dữ liệu từ bàn phím trong
pascal có dạng:


Read(<biến1>,…,<biếnn>);
Readln(<biến1>,…,<biếnn>);
Readln;


- Chú ý:


+ Khi nhập dữ liệu từ bàn phím READ,
READLN có ý nghĩa như nhau, thường
hay dùng READLN hơn.


+ Readln có thể ko có tham số dùng để
tạm dừng thực hiện chương trình cho
người dùng quan sát kết quả. Enter để
chạy tiếp.


+ Khi nhập giá trị cho nhiều biế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.
VD: Readln(a,b);


<b>Hoạt động 2: Đưa dữ liệu ra màn hình</b>


<i><b>GV:</b></i> Trên đây là thủ tục nhập dữ liệu vào


cịn xuất ra thì sao?


<i><b>GV:</b></i> Giải thích sự khác nhau giữa write,


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


- Thủ tục nhập dữ liệu từ bàn phím trong
pascal có dạng:


write(<gtrị 1>,..., <gtrị n>);
writeln(<gtrị 1>,..., <gtrị n>);
writeln;


- Trong đó các giá trị có thể là tên biến,
hàm, biểu thức, hằng.


VD: write(A);write(sin(x));


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

writeln.


<i><b>GV:</b></i> Lấy ví dụ minh hoạ cụ thể bằng
chương trình.


- Giải thích VD.


- Trong thủ tục write hoặc writeln, có hai
cách viết để trình bày dữ liệu in ra là cách
viết khơng qui cách và cách viết có qui
cách.



- Cách viết khơng có qui cách như dạng
đã cho trên.


- Nêu rõ cách viết có qui cáchnhằm tạo


ra giao diện với người dùng tốt hơn.


hình con trỏ khơng chuyển xuống dịng
tiếp theo còn thủ tục writeln con trỏ xuống
đầu dòng tiếp theo.


- Writeln không tham số đơn giản chỉ là
đặt con trỏ xuống đầu dòng tiếp theo.
* Chú ý:


- Trong thủ tục write hoặc writeln, sau
mỗi kết quả ra có thể có qui cách ra. Có
dạng:


+ Đối với kết quả thực:


:<độ rộng>:<số chữ số phần thập phân>
+ Đối với các kết quả khác:


:<độ rộng>


- Trong đó, độ rộng và số chữ số phần
thập phân là số nguyên dương.


VD:



writeln(‘x1=’,x1:8:3);


<b>Hoạt động 3: Soạn thảo, dịch, thực hiện và hiệu chỉnh chương trình</b>


<i><b>GV:</b></i> Giới thiệu một số tập tin cần thiết để
turbo pascal có thể chạy được, hướng dẫn
các em cách khởi động pascal trên máy
tính.


Trên máy cần có tệp:
Turbo.exe(file chạy)
Turbo.tpl(file thư viện)
Turbo.tph(file hướng dẫn)
Graph.tpu


Egavga.bgi và các file *.chr


<i><b>GV :</b></i> Giới thiệu một số thao tác thường
dùng khi soạn thảo chương trình trong
môi trường soạn thảo turbo pascal.


<i><b>GV :</b></i> Thực hiện một vài lần các thao tác
để các em nhận thấy mức độ tiện lợi của
nó khi soạn thảo cũng như khi chạy CT.


<i><b>GV :</b></i> Viết một chương trình VD, thực
hiện các thao tác sửa lỗi...


<i><b>Một số tao tác thường dùng trong </b></i>


<i><b>pascal:</b></i>


- Khi soạn thảo muốn xuống dòng nhấn
Enter.


- Ghi file vào đĩa: F2
- Mở file đã có: F3


- Biêng dịch chương trình: Alt +F9
- Chạy chương trình:


Ctrl + F9


- Đóng cửa sổ chương trình: Alt + F3
- Thoát khỏi phần mền:


Alt + X


<b>IV. Củng cố bài</b>



- Bài học hôm nay các em cần nắm vững những nội dung: thủ tục nhập dữ liệu từ
bàn phím, thủ tục đưa dữ liệu ra màn hình, quy cách ra của kết quả ra, màn hình làm
việc của pascal, bảng chọn, một số phím tắt.


<b>V. Bài tập về nhà</b>



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

<i>Ngày soạn:20/09/2009</i> Tuần: 6
<i>Ngày giảng:23/09/2009 - Lớp 11A5</i>


<i>Ngày giảng:25/09/2009 - Lớp 11A4</i> Tiết: 8



<b>Bài tập và thực hành 1</b>


<b>I. Mục đích, yêu cầu</b>


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


- Biết được một chương trình Pascal hồn chỉnh đơn giản.


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


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


- Viết được chương trình đơn giản, lưu được chương trình trên đĩa, dịch lỗi cú pháp,
thực hiện và tìm lỗi thuật tốn, 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 Pascal
hoặc Free Pascal.


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


- Hình thành cho học sinh bước đầu về tư duy về lập trình có cấu trúc.
- Tự giác, tích cực và chủ động hoàn thành


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


- Kết hợp phương pháp giảng dạy: Giáo viên thao tác mẫu, giới thiệu và hướng dẫn
thơng qua máy tính, máy chiếu, thuyết trình, vấn đáp.


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



<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, sắp xếp phịng máy, VD mẫu, máy
tính đã cài sẵn chương trình Turbo Pascal hoặc Free Pascal..


<i><b>2. Chuẩn bị của học sinh:</b></i> Chuẩn bị nội dung thực hành, SGK, vở bài tập.
<b>III. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


<i><b>2. Kiểm tra bài cũ và dẫn nhập bài mới</b></i>
<i><b>2.1. Kiểm tra bài cũ:</b></i>


- Kết hợp hỏi bài cũ khi hướng dẫn học sinh thực hành trên máy tính.


<i><b>2.2. Dẫn nhập bài mới</b></i>


- Qua các bài học lý thuyết các em đã được làm quen với cấu trúc trong một
NNLT(đặc biệt trong pascal), với một số kiểu dữ liệu chuẩn, khai báo biến, phép toán,
biểu thức, câu lệnh gán, các thủ tục chuẩn vào/ra đơn giản cũng như việc soạn thảo,
dịch, thực hiện và hiệu chỉnh chương trình. Bài thực hành hơm nay sẽ giúp các em
hồn thiện, khắc sâu những vấn đề đã nêu trên.


<i><b>3. Nội dung thực hành </b></i>


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



<b>Hoạt động 1: Hướng dẫn thực hiện bài tập SGK</b>


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

pascal, soạn thảo chương trình trong SGK
trang 34.


<i><b>HS:</b></i> Tự giác nhập chương trình.


<i><b>GV:</b></i> Lưu ý học sinh một số điểm khi soạn
thảo chương trình: dấu ;, dấu . sau end.


<i><b>GV:</b></i> Làm mẫu việc lưu CT lên đĩa.


<i><b>HS</b></i>: tự giác thực hiện.


<i><b>GV:</b></i> Làm mẫu cho hs cách dịch và sửa lỗi
cú pháp.


<i><b>HS:</b></i> tự giác thực hiện.


<i><b>GV:</b></i> Làm mẫu cho hs cách chạy CT.


<i><b>HS:</b></i> tự giác thực hiện.


<i><b>GV:</b></i> Nêu một số điểm cần lưu ý trong quá
trình thực hiện CT:


- Nhập giá trị cách nhau dấu cách hoặc 


- Quay lại màn hình soạn thảo 



<i><b>GV:</b></i> Yêu cầu và giảng giải.


<i><b>HS:</b></i> Thực hiện.


a. Gõ chương trình sau:
program giai_ptb2;
uses crt;


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


clrscr;


write('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);


write('x1 = ',x1:6:2,' x2 = ',x2:6:2);
readln;


end.


b. Lưu chương trình bằng cách nhấn phím
<b>F2 với tên PTB2.PAS.</b>


c. Dịch và sửa lỗi cú pháp với tổ hợp phím


<b>Alt+F9.</b>


d. Thực hiện chương trình với tổ hợp
phím Ctrl+F9.


- Nhập các giá trị 1; -3; và 2. Thông báo
kết quả của máy đưa ra.


-->x1 = 1.00 x2 = 2.00


- Nhập các giá trị 1 ; 0 ; -2. Thông báo kết
quả của máy đưa ra.


-->Thơng báo lỗi và cho biết vì sao: Do
căn bậc hai của một số âm.


- Sửa lại chương trình trên khơng dùng
đến biến D và thực hiện chương trình đã
sửa.


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


- Sửa lại chương trình bằng cách thay đổi
cơng thức tính của x2.


x2=-b/a-x1;


- Thực hiện chương trình đã sửa với bộ dữ
liệu 1 ; - 5 ; 6. Thông báo kết quả.



-->x1 = 2.00 x2 = 3.00


- Thực hiện chương trình với bộ dữ liệu
1 ; 1 ; 1. Thông báo kết quả.


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

<b>IV. Củng cố bài</b>



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


+ Phân tích bài tốn để xác định dữ liệu vào, dữ liệu ra
+ Xác định 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 chương trình


+ Thực hiện và hiệu chỉnh chương trình

<b>V. Bài tập về nhà</b>



- Làm lại bài thực hành hôm nay.


- Làm các bài tập trong SGK trang 35,36

<b>VI. Nhận xét rút kinh nghiệm:</b>



<i>Ngày soạn:26/09/2009</i> Tuần: 7


<i>Ngày giảng:29/09/2009 - Lớp 11A5</i>


<i> - Lớp 11A4</i> Tiết: 9



<b>Bài tập và thực hành 1</b>


<b>I. Mục đích, yêu cầu</b>


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


- Biết được một chương trình Pascal hồn chỉnh đơn giản.


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


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


- Viết được chương trình đơn giản, lưu được chương trình trên đĩa, dịch lỗi cú pháp,
thực hiện và tìm lỗi thuật tốn, 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 Pascal
hoặc Free Pascal.


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


- Hình thành cho học sinh bước đầu về tư duy về lập trình có cấu trúc.
- Tự giác, tích cực và chủ động hồn thành


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


- Kết hợp phương pháp giảng dạy: Giáo viên thao tác mẫu, giới thiệu và hướng dẫn
thơng qua máy tính, máy chiếu, thuyết trình, vấn đáp.


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



<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, sắp xếp phịng máy, VD mẫu, máy
tính đã cài sẵn chương trình Turbo Pascal hoặc Free Pascal..


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

<b>III. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


<i><b>2. Kiểm tra bài cũ:</b></i>
<i><b>3. Nội dung thực hành </b></i>


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


<b>Hoạt động 1: Thực hiện một số bài tập</b>


- Viết chương trình nhập vào độ dài 3 cạnh của một tam giác 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 bao nhiêu?

<b>IV. Củng cố bài</b>



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


+ Phân tích bài tốn để xác định dữ liệu vào, dữ liệu ra
+ Xác định 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 chương trình


+ Thực hiện và hiệu chỉnh chương trình

<b>V. Bài tập về nhà</b>



- Làm lại bài thực hành hôm nay.


- Làm các bài tập trong SGK trang 35,36
- Ôn tập chương II.


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

<i>Ngày soạn:27/09/2009</i> Tuần: 7
<i>Ngày giảng:30/09/2009 - Lớp 11A5</i>



<i>Ngày giảng:02/10/2009 - Lớp 11A4</i> Tiết: 10


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


<b>I. Mục đích, yêu cầu</b>


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


- Nắm được các kiến thức các bài 3,4,5,6,7,8.


- Củng cố những nội dung đã đạt được ở tiết thực hành 1.


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


- Viết được chương trình đơn giản với một NNLT đã chọn.


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


- Có ý thức cố gắng học tập vượt qua những khó khăn ở giai đoạn đầu bắt đầu học
lập trình.


- Tạo sự ham muốn giải các bài tập băng lập trình.
<b>II. Phương pháp</b>


- Kết hợp phương pháp dạy học, chủ yếu là thuyết trình và vấn đáp, lấy ví dụ minh
hoạ, mở rộng và củng cố vấn đề bằng kiểm tra đánh giá


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


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, SBT, tài liệu tham khảo.



<i><b>2. Chuẩn bị của học sinh:</b></i> Đọc trước bài mới, vở ghi lý thuyết, SGK, SBT.
<b>III. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


<i><b>2. Kiểm tra bài cũ và dẫn nhập bài mới</b></i>
<i><b>2.1. Kiểm tra bài cũ:</b></i>


- Câu hỏi 1: Hãy nêu một số thao tác và phím tắt thường sử dụng để soạn thảo
và thực hiện một chương trình viết bằng pascal.


<i><b>2.2. Dẫn nhập bài mới</b></i>


- Hôm nay chúng ta sẽ ơn lại tồn bộ chương II.


<i><b>3. Nội dung bài giảng </b></i>


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


<b>Hoạt động 1: Giáo viên nhắc lại những vấn đề cần nắm vững trong chương II</b>
<b>Hoạt động 2: Hướng dẫn câu hỏi 1</b>


<i><b>GV:</b></i> Nêu câu hỏi, gợi ý câu trả lời cho học
sinh.



<i><b>HS:</b></i> Tập trung suy nghĩ, tham gia xây
dựng bài.


<i><b>Câu 1: Hãy cho biết sự khác nhau giữa</b></i>
<i><b>hằng có đặt tên và biến</b></i>


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

<b>Hoạt động 3: Hướng dẫn câu hỏi 2</b>


<i><b>GV:</b></i> Nêu câu hỏi, gọi học sinh trả lời.
Đánh giá câu trả lời của học sinh.


<i><b>HS:</b></i> Tập trung suy nghĩ, tham gia xây
dựng bài.


<i><b>Câu 1: Tại sao phải khai báo biến</b></i>


- Khai báo biến nhằm các mục đích sau:
+Xác định kiểu của biến. Trình dịch sẽ
biết cách tổ chức ô nhớ chứa giá trị
củabiến.


+ Đưa tên biến vào danh sách các đối
tượng được chương trình quản lí.


+ Trình dịch biết cách truy cập giá trị của
biến và áp dụng thao tác thích hợp cho
biến.


<b>Hoạt động 4: Hướng dẫn câu hỏi 3</b>



<i><b>GV:</b></i> Yêu cầu học sinh đọc câu hỏi, nghiên
cứu sgk tr21,22 để tìm câu trả lời.


<i><b>HS:</b></i> Tự giác đọc sách, tìm câu trả lời,
tham gia xây dựng bài.


<i><b>Câu 3:</b></i>


integer, word, longint


<b>Hoạt động 5: Hướng dẫn câu hỏi 4</b>


<i><b>GV:</b></i> Yêu cầu học sinh đọc câu hỏi, nghiên
cứu sgk tr21,22, 23 để tìm câu trả lời.


<i><b>HS:</b></i> Tự giác đọc sách, tìm câu trả lời,
tham gia xây dựng bài.


<i><b>Câu 4:</b></i>


b và dd tốt hơn


<b>Hoạt động 6: Hướng dẫn câu hỏi 5</b>


<i><b>GV:</b></i> Yêu cầu học sinh đọc câu hỏi. Đánh
giá câu trả lời của học sinh.


<i><b>HS:</b></i> Tập trung suy nghĩ, tìm câu trả lời,
tham gia xây dựng bài.



<i><b>Câu 5:</b></i>


b, c, dc tốt nhất


<b>Hoạt động 7: Hướng dẫn câu hỏi 8</b>


<i><b>GV:</b></i> Yêu cầu học sinh đọc câu hỏi. Đánh
giá câu trả lời của học sinh.


<i><b>HS:</b></i> Tập trung suy nghĩ, tìm câu trả lời,
tham gia xây dựng bài.


<i><b>Câu 6:</b></i>


Hình 2a: (y>=abs(x)) and (y<=1)
Hình 2b: (abs(x)<=1) and (abs(y)<=1)


<b>Hoạt động 8: Hướng dẫn câu hỏi 9</b>


<i><b>GV:</b></i> Yêu cầu học sinh đọc câu hỏi. Đánh
giá câu trả lời của học sinh.


<i><b>HS:</b></i> Tập trung suy nghĩ, tìm câu trả lời,
tham gia xây dựng bài.


<i><b>Câu 6:</b></i>


Var a:real;
Begin



Write(‘nhap gia tri a (a>0):’);readln(a);
Write(‘dien tich phan gach cheo la:’,
a*a*pi/2:8:3);


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

Const g=9.8;
<b>Hoạt động 9: Hướng dẫn câu hỏi 10</b>


<i><b>GV:</b></i> Yêu cầu học sinh đọc câu hỏi. Đánh
giá câu trả lời của học sinh.


<i><b>HS:</b></i> Tập trung suy nghĩ, tìm câu trả lời,
tham gia xây dựng bài.


<i><b>Câu 10:</b></i>


Var v,h:real;
Begin


Clrscr;


Write(‘nhap do cao cua vat h=’);
readln(h);


V:=sqrt(2*g*h);


Writeln(‘Van toc khi cham dat la
v=’,v:10:2,’ m/s’);


Readln
End.


<b>IV. Củng cố bài</b>



<b>V. Bài tập về nhà</b>



- Làm lại bài tập hôm nay và làm thêm bài tập SBT.
- Đọc trước bài 9 chương III.


<b>VI. Nhận xét rút kinh nghiệm:</b>



<i>Ngày soạn:03/10/2009</i> Tuần: 8


<i>Ngày giảng:06/10/2009 - Lớp 11A5</i>
<i>Ngày giảng:09/10/2009 - Lớp 11A4</i>
<i>Ngày giảng: /10/2009 - Lớp 11A</i>
<i>Ngày giảng: /10/2009 - Lớp 11A</i>
<i>Ngày giảng: /10/2009 - Lớp 11A</i>


Tiết: 11


<b>Chương III: </b>



<b>CẤU TRÚC RẼ NHÁNH VÀ LẶP</b>



<b>§9.</b>

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



<b>I. Mục đích, yêu cầu</b>


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


- Hiểu nhu cầu cần sử dụng cấu trúc rẽ nhánh trong biểu diễn thuật toán.


- Hiểu câu lệnh rẽ nhánh (dạng thiếu và dạng đủ).


- Hiểu câu lệnh ghép.


- 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


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

- 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


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


- Giải quyết bài tốn một cách cẩn thận, chu đáo, có sáng tạo, không thoả mãn với
kết quả ban đầu đạt được.


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


- Kết hợp phương pháp giảng dạy thuyết trình, vấn đáp.
<b>II.Chuẩn bị của giáo viên và học sinh</b>


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, tài liệu tham khảo, máy chiếu, máy
tính, chương trình mẫu giải ptb2.


<i><b>2. Chuẩn bị của học sinh:</b></i> Đọc trước bài mới, vở ghi lý thuyết, SGK.
<b>III. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.



<i><b>2. Giới thiệu chương trình học và dẫn nhập bài mới</b></i>
<i><b>2.1. Giới thiệu chương trình học</b></i>


- Giới thiệu sơ lược chương III.


<i><b>2.2. Dẫn nhập bài mới</b></i>


- Chúng ta đã làm quen với cấu trúc chương trình, các kiểu dữ liệu, phép tốn,
câu lệnh gản, tổ chức vào/ra đơn giản và cách thực hiện chương trình trong môi trường
pascal. Bài học hôm nay chúng ta sẽ nghiên cứu một cấu trúc lệnh thường dùng trong
NNLT pascal là “Cấu trúc rẽ nhánh”.


<i><b> 3. Nội dung bài giảng</b></i>


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


<b>Hoạt động 1: Rẽ nhánh</b>


<i><b>GV:</b></i> Thường ngày chúng ta có những
cơng việc chỉ được thực hiện khi một điều
kiện cụ thể nào đó được thoả mãn.


VD1: Chiều mai nếu trời không mưa thì
<i>châu sẽ đến nhà Ngọc...</i>


<i><b>GV:</b></i> Yêu cầu HS đưa ra cấu trúc chung
của câu điều kiện trên?


<i><b>HS:</b></i> Chú ý lắng nghe và trả lời.



<i><b>GV:</b></i> Đưa ra VD2: Chiều mai nếu trời
<i>không mưa thi Ngọc sẽ đến nhà châu, nếu</i>
<i>mưa thì sẽ gọi điện cho châu để trao đổi.</i>


<i><b>GV:</b></i> Yêu cầu HS đưa ra cấu trúc chung
của câu điều kiện trên?


<i><b>HS:</b></i> Chú ý lắng nghe và trả lời.


<i><b>GV:</b></i><b> Yêu cầu HS nêu các bước để kết luận</b>
nghiệm của phương trình bậc 2:
ax2<sub>+bx+c=0.</sub>


<i><b>HS:</b></i> Tính D(delta)


Nếu D <0 thì PTVN Ngược lại PT có
nghiệm.


<b>1. Rẽ nhánh</b>


- Một số mệnh đề có dạng điều kiện:
+ Dạng thiếu: Nếu…thì…


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

<b>Hoạt động 2: Câu lệnh if-then</b>


<i><b>GV:</b></i> Thuyết trình.


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. Để mô tả


cấu trúc rẽ nhánh, pascal dùng câu lệnh
if-then. Tương ứng với hai dạng thiếu và đủ
nói ở trên.


<i><b>GV:</b></i> Đưa ra cấu trúc lệnh rẽ nhánh trong
pascal. Nhắc nhở học sinh đây là cấu trúc
quan trọng, nó sẽ được sử dụng rất nhiều
trong các chương trình sau này.


<i><b>GV:</b></i> Lưu ý các em sau then và sau else
chỉ có 1 lệnh chương trình.


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


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


<i><b>HS:</b></i><b> Suy nghĩ trả lời.</b>
-> tuỳ trường hợp cụ thể.


<b>2. Câu lệnh if-then</b>


<b>a. Dạng thiếu</b>
<b>*Cấu trúc:</b>


<b>IF <điều kiện> THEN <câu lệnh>;</b>
Trong đó:



- Điều kiện là biểu thức quan hệ hoặc
lôgic.


- Câu lệnh là 1 câu lệnh của Pascal.


<b>*Ý nghĩa: Nếu điều kiện đúng thì câu</b>
lệnh được thực hiện, ngược lại thì câu
lệnh sẽ bị bỏ qua.


<b>*VD: if x mod 2=0 then writeln(x,’Là số</b>
chẵn’);


<b>b. Dạng đủ</b>
<b>*Cấu trúc:</b>


<b>IF </b> <i><điều kiện> </i> <b>THEN </b> <i><câu lệnh 1></i>
<b>ELSE < câu lệnh 2>;</b>


<b>*Ý nghĩa: Nếu điều kiện đúng thì thực</b>
hiện câu lệnh 1, nếu điều kiện sai thì thực
hiện câu lệnh 2.


<b>*VD: if b<>0 then T:=a/b else write(‘Mẫu</b>
số =0 không chia được’);


<b>Hoạt động 3: Câu lệnh ghép</b>


<i><b>GV:</b></i> Muốn thực hiện nhiều lệnh sau if
hoặc sau then thì làm thế nào?



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


<i><b>GV:</b></i> 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ừ khố Begin…end; với Pascal


<i><b>GV:</b></i> Nếu có máy chiếu, chiếu chương
trình soạn sẵn có chứa lệnh ghép. Yêu cầu


<b>3. Câu lệnh ghép</b>
- Cấu trúc của lệnh ghép:
Begin


<Các lệnh cần ghép>;
End;


* Chú ý:


- Sau end phải là dấu ; và trước else không
chứa dấu ;


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

hs chỉ ra lệnh ghép.


Nếu có nhiều thời gian, gv có thể gõ từng
lệnh, giải thích và hướng dẫn cách gõ
if-then-else để đỡ nhầm lẫn trong khi lập
trình.


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



<i><b>GV:</b></i>u cầu học sinh sửa lại chương trình
giải PTb2 đã thực hành sử dụng lệnh rẽ
nhành.


<i><b>HS:</b></i> Lên bảng viết chương trình hoặc nếu
có máy chiếu gõ vào máy tính.


<i><b>GV:</b></i> Phân tích và nhận xét VD sgk-41 chủ
yếu nhấn mạnh vào cấu trúc rẽ nhánh và
lệnh ghép.


<b>4. Một số ví dụ</b>
sgk-tr41


<b>IV. Củng cố bài</b>



- Qua tiết học này, các em cần nắm được cấu trúc chung của cấu trúc rẽ nhánh, sự
thực hiện của máy khi gặp cấu trúc rẽ nhánh thiếu và đủ. Áp dụng cấu trúc vào giải các
bài tập.


<b>V. Bài tập về nhà</b>



- Ôn tập lại bài học, trả lời các câu hỏi cuối bài.
- Làm bài tập 1,2 và 4 trang 50.


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

<i>Ngày soạn:07/10/2009</i> Tuần: 9
<i>Ngày giảng: / /2009 - Lớp 11A</i>


<i>Ngày giảng: / /2009 - Lớp 11A</i>


<i>Ngày giảng: / /2009 - Lớp 11A</i>
<i>Ngày giảng: / /2009 - Lớp 11A</i>
<i>Ngày giảng: / /2009 - Lớp 11A</i>


Tiết: 12


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


<b>I. Mục đích, yêu cầu</b>


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


- Nắm được các kiến thức bài 9.


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


- Viết được chương trình đơn giản với một NNLT đã chọn.


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


- Tạo sự ham muốn giải các bài tập băng lập trình.
<b>II. Phương pháp</b>


- Kết hợp phương pháp dạy học, chủ yếu là thuyết trình và vấn đáp, lấy ví dụ minh
hoạ, mở rộng và củng cố vấn đề bằng kiểm tra đánh giá.


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


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, SBT, tài liệu tham khảo.


<i><b>2. Chuẩn bị của học sinh:</b></i> Làm bài tập được giao, vở ghi, SGK, SBT.


<b>III. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


<i><b>2. Kiểm tra bài cũ và dẫn nhập bài mới</b></i>
<i><b>2.1. Kiểm tra bài cũ:</b></i>


- Kiểm tra trong quá trình làm bài tập.


<i><b>2.2. Dẫn nhập bài mới</b></i>


- Hôm nay chúng ta sẽ làm một số bài tập giúp các em củng cố được kiến thức
bài 9: cấu trúc rẽ nhánh.


<i><b>3. Nội dung bài giảng </b></i>


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


<b>Hoạt động 1: Củng cố kiến thức chương I, II, III chuẩn bị cho tiết sau kiểm tra</b>
<b>Hoạt động 2: Hướng dẫn bài tập 4-sgk-tr51</b>


<i><b>GV:</b></i> Các em đã có sự chuẩn bị ở nhà. 2
em lên bảng làm bài tập, 1 em làm phần a,
1 em làm phần b.


<i><b>HS:</b></i><b> Lên bảng làm bài tập</b>



<i><b>GV:</b></i> Gọi học sinh khác nhận xét.


<i><b>HS:</b></i><b> Quan sát và nhận xét.</b>


<i><b>GV:</b></i> Nhận xét, phân tích và cho điểm.


<b>Bài tập 4-sgk-tr51</b>


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

<i><b>GV:</b></i> Đưa ra bài tập.


Tìm nghiệm của phương trình bậc nhất
ax+b=0. Xác định input, output của bài
toán và lập trình chương trình tìm nghiệm
cho bài tốn.


<i><b>HS:</b></i><b> Chép đề và làm bài</b>


<b>Hoạt động 4: Kiểm tra 15 phút</b>

<b>IV. Củng cố bài</b>



<b>V. Bài tập về nhà</b>



- Làm lại bài tập hơm nay và làm thêm bài tập SBT.


- Ơn kỹ lý thuyết và làm nhiều bài tập để chuẩn bị giờ sau kiểm tra 1tiết.

<b>VI. Nhận xét rút kinh nghiệm:</b>



<i>Ngày soạn:</i> Tuần: 9



<i>Ngày giảng:</i> Tiết: 16


<b>KIỂM TRA 15 PHÚT</b>


<b>I. Mục tiêu đánh giá</b>


<i><b>-</b></i> Đánh giá kết quả tiếp thu kiến thức để viết được một chương trình đơn giản trong
ngơn ngữ lập trình pascal.


<b>II. u cầu của đề</b>


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


- Biết cách viết biểu thức trong pascal.
- Hiểu được lệnh gán.


III. Ma trận đề


Nhận biết Câu 1,5,9,10
Thơng hiểu Câu 6,8


Vận dụng Câu 2,3,4,7


<b>IV. Đề bài</b>


<i><b>Khoanh trịn phơng án A, B, C, D mà bạn cho là đúng nhất.</b></i>



<b>Câu 1 : Trong NNLT Pascal để viết xâu kí tự "Chao cac ban" ta viết nh sau:</b>


<b>A.</b> “Chao ban” <b>B.</b> “Chao ban’ <b>C.</b> “Chao ban “ <b>D.</b> ’Chao ban’



<b>Câu 2 : Với a: real; b: real; khi nhập giá trị cho a, b từ bàn phím ứng với lệnh </b>
<b>Readln(a, b) ta đánh nh sau:</b>


<b>A.</b> 2.5 , 3  <b>B.</b> <sub>2.5 – 3</sub><sub></sub> <b>C.</b> <sub>2.5 va 3 </sub><sub></sub> <b>D.</b> <sub>2.5 3 </sub><sub></sub>


<b>C©u 3 : Để thông báo giá trị của biến S (víi khai b¸o var S : integer) ta viÕt </b>
<b>lƯnh sau:</b>


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

<b>C.</b> Write(’S=’,s:8:2); <b>D.</b> Write(’S=’,s:6);


<b>C©u 4 : </b>


<b>Trong ngôn ngữ lập trình Pascal, biểu thức </b><i>a b</i>
<i>d c</i>




<b>đợc viết là:</b>


<b>A.</b> a-b/d-c <b>B.</b> (a-b)/d-c <b>C.</b> (a-b)/(d-c) <b>D.</b> (a-b):(d-c)


<b>Câu 5 : Trong NNLT Pascal để thực hiện một chơng trình ta làm nh sau:</b>


<b>A.</b> BÊm tỉ hỵp phÝm Ctrl + F9. <b>B.</b> BÊm phÝm F9.


<b>C.</b> BÊm tỉ hỵp phÝm Alt + F9. <b>D.</b> BÊm tỉ hỵp phÝm Shift + F9.


<b>Câu 6 : </b>

Giá trị của biểu thức 30 div 3 mod (2*2) lµ:



<b>A.</b> 1 <b>B.</b> 2



<b>C.</b> 3 <b>D.</b> 4


<b>Câu 7 : Trong ngơn ngữ lập trình Pascal, mệnh đề a </b><b> 0 và d >0 đợc viết là </b>


<b>A.</b> a0 and d > 0 <b>B.</b> a<>0 and d > 0


<b>C.</b> (a <> 0) and (d > 0) <b>D.</b> (a >< 0) and (d > 0)


<b>C©u 8 : Với giá trị của a := 1.345 thì lệnh Write(a:4:2) cho kết quả trên màn </b>
<b>hình là:</b>


<b>A.</b> 1.34 <b>B.</b> 1.3450 <b>C.</b> 1.345 <b>D.</b> 1.35


<b>Câu 9 : Trong Pascal để khai báo biến x là số nguyên, y số thực là viết:</b>


<b>A.</b> Const x = 1; y = 2.5; <b>B.</b> Var x: real; y: integer;


<b>C.</b> Var x: integer; y: Real; <b>D.</b> Type x = integer; y = real;


<b>Câu 10 : Trong NNLT Pascal phát biểu nào đúng khi nói về lệnh rẽ nhánh?</b>
<b>A.</b> Nếu sau THEN muốn thực hiện nhiều lệnh thì phải đặt các lệnh đó giữa


Begin vµ End;


<b>B.</b> Nếu sau THEN muốn thực hiện nhiều lệnh thì phải đặt các lệnh đó giữa hai
dấu ngoặc đơn.


<b>C.</b> Nếu sau THEN muốn thực hiện nhiều lệnh thì phải đặt câu lệnh rẽ nhánh IF
giữa Begin và End;



<b>D.</b> NÕu sau THEN mn thùc hiƯn nhiỊu lƯnh thì phải thêm Else


<b>V. ỏp ỏn v biu im</b>


<b>Câu</b>

<b><sub>1</sub></b>

<b><sub>2</sub></b>

<b><sub>3</sub></b>

<b><sub>4</sub></b>

<b><sub>5</sub></b>

<b><sub>6</sub></b>

<b><sub>7</sub></b>

<b><sub>8</sub></b>

<b><sub>9</sub></b>

<b><sub>10</sub></b>



<b>P.¸n</b>

<sub>D</sub>

<sub>D</sub>

<sub>D</sub>

<sub>C</sub>

<sub>A</sub>

<sub>B</sub>

<sub>B</sub>

<sub>D</sub>

<sub>C</sub>

<sub>A</sub>



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

<i>Ngày soạn:</i> Tuần:10


<i>Ngày giảng:</i> Tiết: 13


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


<b>I. Mục tiêu đánh giá</b>


<i><b>-</b></i> Đánh giá kết quả tiếp thu các bài 1,2,3,4,5,6,7,8,9 đã học.
<b>II. Yêu cầu của đề</b>


- Biết các ngơn ngữ lập trình.


- Biết phân biệt cấu trúc một chương trình, phép tốn, biểu thức, câu lệnh gán.
- Biết cấu trúc if-then.


- Biết viết một chương trình đơn giản.
III. Ma trận đề


Nhận biết Câu 1,2,3,7,9,10
Thông hiểu Câu 5,6



Vận dụng 4,8,Phần tự luận
<b>IV. Đề bài</b>


<b>A. Phần trắc nghiệm ( 5điểm)</b>


<i><b>Khoanh tròn phơng án A</b></i>, B, C, D mà bạn cho là đúng nhất.
<b>Câu 1 : Chơng trình viết bằng ngơn ngữ bậc cao có u điểm:</b>


<b>A.</b> Ng¾n gọn dễ hiểu, dễ hiệu chỉnh và nâng cấp, ít phụ thuộc vào loại máy


<b>B.</b> Tc thc hin nhanh hơn so với chơng trình viết bẳng ngơn ngữ máy.


<b>C.</b> Khai thác đợc tối đa các khả năng của máy.


<b>D.</b> Viết dài, mất nhiều thời gian hơn so với viết chơng trình bằng ngôn ngữ máy.


<b>Cõu 2 : Cỏch khai báo biến nào đúng trong các cách khai báo sau:</b>
<b>A.</b> Var x,i: integer; <b>B.</b> Var <x,y>: Real;


<b>C.</b> Var x;i: char; <b>D.</b> Var x i: boolean;


<b>Câu 3: Cho A,B,X là các biến thực. Trong số các lệnh sau, câu lệnh nào là đúng:</b>
<b>A.</b> IF A<B; THEN X:=X+1;


<b>B.</b> IF A<B THEN X:=A+B;


<b>C.</b> IF A<B THEN X=A ELSE X=B;


<b>D.</b> IF A<B THEN X:=A; ELSE X:=B;



<b>Câu 4 : </b> Kết quả của phép chia 7 div 4:


<b>A.</b> 1 <b>B.</b> 2 <b>C.</b> 3 <b>D.</b> 4


<b>Câu 5 : Trong ngơn ngữ lập trình Pascal, mệnh đề a ≠0 và a mod 2<>0 đợc viết là </b>
<b>A.</b> a0 and a mod 2<>0 B. a<>0 and a mod 2<>0


<b>C.</b> (a <> 0) and (a mod 2<>0) D. (a >< 0) and (a mod 2<>0)


<b>C©u 6 : Muốn nhập vào giá trị ba cạnh a,b,c của một tam giác ta phải sử dụng </b>
<b>câu lệnh nµo ?</b>


<b>A.</b> Readln(a,b,c); <b>B.</b> Realn(a,b,c);


<b>C.</b> Readln(a;b;c); <b>D.</b> Readln(abc);


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

<b>A.</b> sqrt(x) <b>B.</b> sqr(x) <b>C.</b> exp(x) <b>D.</b> abs(x)


<b>C©u 8 :</b> Trong ngôn ngữ lập trình Pascal, biểu thức <i><sub>x</sub></i> <i><sub>y</sub></i>2


 đợc viết là:


<b>A.</b> -x+sqrt(y2<sub>)</sub> <b><sub>B.</sub></b>


-<i>x </i>+ <i>sqr</i>(<i>y</i>)


<b>C.</b> -x+sqrt(sqr(y)) <b>D.</b> -x+sqr(y*y)


<b>Câu 9 : Khai báo hằng bắt đầu bằng từ khoá:</b>



<b>A.</b> program <b>B.</b> const <b>C.</b> var <b>D.</b> uses


<b>Câu 10 : Cho đoạn chơng trình sau:</b>


var a,b,t: real; {Dßng 1}


Begin {Dßng 2}


if b<>0 then t:=a/b; {Dßng 3}


else {Dßng 4}


writeln(Mau bang 0, khong chia duoc); {Dòng 5}


End.


<b>Chơng trình trên báo lỗi ở dòng nào?</b>


{Dòng 6}


<b>A.</b> Dòng 1 <b>B.</b> Dòng 2 <b>C.</b> Dòng 3 <b>D.</b> Dòng 4


<b>B. Bài tập (5 điểm):</b>


<b>Câu 1 :</b> <b><sub>Cho đoạn chơng trình sau</sub><sub>:</sub></b>


Begin
x:=a;



if a<b then x:=b;
end.


<b>Với a=20 và b=15. Với chơng trình trên kết quả x bằng bao nhiêu?</b>


...


<b>Với a=5 và b=10. Với chơng trình trên kết quả x bằng bao nhiêu?</b>


...


<b>Câu 2: </b>Viết chơng trình tính diện tích hình chữ nhật với cạnh a,b nhËp tõ bµn phÝm.


<b>V. Hướng dẫn chấm</b>


1. Phần trắc nghiệm: mỗi câu 0.5đ.
2. Phần tự luận: 5đ.


<b>VI. Đáp án</b>


<b>A. Phần trắc nghiệm</b>


<b>Câu</b> 1 2 3 4 5 6 7 8 9 10


<b>Đ. án</b>


<b>B. Phần tự luận</b>
<b>Câu 1:</b>


a=20, b=15


x:=ax=20


Vì a>b nên khơng thực hiện câu lệnh gán x:=bx=20


a=5, b=10
x:=ax=20


Vì a<b nên thực hiện câu lệnh gán x:=bx=10


<b>Câu 2:</b>


program s_hcn;
uses crt;


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

Begin
clrscr;


write('Nhap canh a,b:'); readln(a,b);


if (a<0) and (b<0) then write('Yeu cau nhap a,b>0')
else


Begin
s:=a*b;


writeln('S=',s);
end;


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

<i>Ngày soạn:25/10/2009</i> Tuần: 11



<i>Ngày giảng:27/10/2009</i> Tiết: 14


<b>§10.</b>

<b>CẤU TRÚC LẶP (Tiết 1)</b>


<b>I. Mục đích, yêu cầu</b>


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


- Hiểu ý nghĩa của cấu trúc lặp.


- Hiểu nhu cầu cần sử dụng cấu trúc lặp trong biểu diễn thuật toán.
- Hiểu đúng hai dạng lệnh lặp FOR trong NNLT pascal.


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


-

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.


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


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


- Kết hợp phương pháp giảng dạy thuyết trình, vấn đáp.
<b>III.Chuẩn bị của giáo viên và học sinh</b>


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, tài liệu tham khảo, máy chiếu, máy
tính, chương trình minh hoạ.


<i><b>2. Chuẩn bị của học sinh:</b></i> Đọc trước bài mới, vở ghi lý thuyết, SGK.
<b>IV. Tiến trìn lên lớp, nội dung bài giảng</b>



<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


<i><b>2. Kiểm tra bài cũ và dẫn nhập bài mới</b></i>
<i><b>2.1. Kiểm tra bài cũ</b></i>


Câu hỏi: Cho biết kết quả của doạn chương trình sau
Program VD;


Begin


Writeln (‘PASCAL’);
Writeln (‘PASCAL’);
Writeln (‘PASCAL’);
Writeln (‘PASCAL’);
Writeln (‘PASCAL’);
Readln;


End.


<i><b>2.2. Dẫn nhập bài mới</b></i>


- Nếu giải bài toán trên với việc in khoảng 10 dịng có từ PASCAL. Các em có
nhận xét gì về các dịng lệnh trong chương trình trên? Chương trình dài dịng, các


lệnh giống nhau lặp đi lặp lại. Đối với những thuật tốn có những thao tác phải thực
hiện lặp đi lặp lại một số lần thì máy tính có thể thực hiện hiệu quả hơn các thao tác


lặp đó bằng các cấu trúc lặp. Bài học hôm nay bài 10: “Cấu trúc lặp”.


<i><b> 3. Nội dung bài giảng</b></i>


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


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

<i><b>GV:</b></i> Đưa ra bài toán, yêu cầu học sinh tìm
cách để lập trình giải quyết bài tốn này.
1. Tính tổng của 10 số tự nhiên đầu tiên.
2. Tính tổng của n số tự nhiên đầu tiên với
n <=10.


Chia HS làm 3 nhóm để viết thuật tốn
giải 2 bài tốn trên.


<i><b>HS:</b></i> Đưa ra cách giải của mình (có thể
cách giải của mỗi em là khác nhau).


<i><b>GV:</b></i> Tương tự xem bài toán SGK-42.
Xét 2 bài toán như sau với a>2 là số
ngun.


* Bài tốn 1: tính và đưa kết quả ra màn
hình tổng S.


1 1 1 1


...


1 2 100



<i>S</i>


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


    


  


* Bài toán 2: tính và đưa kết quả ra màn
hình tổng S.


...
1
...
1
1
1







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



Cho đến khi 1 0.0001
<i>N</i>


<i>a</i>


<i><b>GV:</b></i> Phân tích và nhận xét.


-BT1: Việc tăng giá trị cho biến S được
lặp đi lặp lại 100 lầnLặp với số lần biết


trước.


-BT2: Việc tăng giá trị cho biến S được
lặp đi lặp lại cho đến khi 1 0.0001


<i>N</i>
<i>a</i>


Lặp với số lần chưa biết trước.


<i><b>GV:</b></i> Từ VD trên và nghiên cứu thêm ở
SGK hãy cho biết có mấy loại cấu trúc
lặp?


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


<b>1. Lặp</b>


- Trong lập trình, có những thao tác phải


lặp đi lặp lại nhiều lần, khi đó ta gọi là cấu
trúc lặp.


- Lặp thường có 2 loại:


+ Lặp với số lần biết trước.
+ Lặp với số lần chưa biết trước.


<b>Hoạt động 2: Lặp với số lần biết trước và câu lệnh for-do</b>


<i><b>GV:</b></i> Đưa ra 2 thuật tốn khác nhau để giải
ví dụ 1 nêu trên.


<b>Thuật toán 1:</b>
B1: S0; n0


B2: n  n +1


B3: Nếu n > 10 thì chuyển đến B5
B4: S= S + n rồi quay lai b2
B5: Đưa S ra màn hình và kết thúc
<b>Thuật tốn 2:</b>


B1: S10; n10


B2: n  n -1


B3: Nếu n < 1 thì chuyển đến B5
B4: S= S + n rồi quay lai b2



<b>2. Lặp với số lần biết trước và câu lệnh</b>
<b>for-do</b>


* Dạng lặp tiến:
- Cấu trúc:


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


- Trong đó:


+ Biến đếm là biến đơn, thường có kiểu
nguyên.


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

B5: Đưa S ra màn hình và kết thúc


<i><b>GV:</b></i> Số lần lặp của cả 2 thuật toán trên là
biết trước và như nhau (10 lần).


- Giải thích từng thuật toán


+ TT1: n bắt đầu là 1 và sau mỗi lần lặp n
tăng lên 1 đơn vị cho đến khi n>10 thì kết
thúc lặp.


+ TT2: n bắt đầu là 10 và sau mỗi lần lặp
n giảm đi 1 đơn vị cho đến khi n< 1 thì
kết thúc lặp.


<i><b>GV:</b></i> Nêu các dạng của cách lặp?



<i><b>HS:</b></i> Suy nghĩ trả lời.


<i><b>GV:</b></i> Giới thiệu câu lệnh FOR - DO với 2
dạng tiến, lùi trong Pascal.


- Giải thích các thơng số trong câu lệnh.
- Yêu cầu HS nghiên cứu SGK và nêu
hoạt động của lệnh FOR - DO?


- GV treo bảng phụ 1 về sơ đồ thuật toán
lặp


- Gv treo bảng phụ 2 về cài đặt các thuật
toán ở VD trên


- Qua 2 chương trình trên có nhận xét gì
về biến đếm ?


- Cho HS cài đặt thuật toán với VD1


<b>- Sự thực hiện của máy: câu lệnh viết sau</b>
từ khóa DO được thực hiện tuần tự, với
biến đếm lần lượt nhận các giá trị liên tiếp
tăng từ giá trị đầu đến giá trị cuối.


* Dạng lặp lùi:
- Cấu trúc:


<b>FOR <biến đếm>:= <giá trị cuối></b>


<b>DOWNTO <giá trị đầu> DO <câu</b>
<b>lệnh>;</b>


<b>- Sự hoạt động của máy: câu lệnh viết sau</b>
từ khóa DO được thực hiện tuần tự, với
biến đếm lần lượt nhận các giá trị liên tiếp
giảm từ giá trị cuối đến giá trị đầu.


* Chú ý: Câu lệnh viết sau DO không
được thay đổi giá trị của biến đếm


<b>V. Củng cố bài</b>



- Qua tiết học này, các em cần nắm được cấu trúc chung của cấu trúc rẽ lặp, sự thực
hiện của máy khi gặp cấu trúc lặp biết trước số lần lặp. Áp dụng cấu trúc vào giải các
bài tập.


<b>VI. Bài tập về nhà</b>



- Ôn tập lại bài học, trả lời các câu hỏi cuối bài.
- Làm bài tập trang 50.


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

<i>Ngày soạn:31/10/2009</i> Tuần: 12


<i>Ngày giảng:03/10/2009</i> Tiết: 15


<b>§10.</b>

<b>CẤU TRÚC LẶP (Tiết 2)</b>


<b>I. Mục đích, yêu cầu</b>


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



- Biết cách vận dụng đúng đắn cấu trúc lặp vào tình huống cụ thể.


- Mơ tả được thuật toán của một số bài toán đơn giản có sử dụng lệnh lặp.


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


-

Bước đầu sử dụng được lệnh For để lập trình giải quyết được một số bài toán
đơn giản.


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


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


- Kết hợp phương pháp giảng dạy thuyết trình, vấn đáp.
<b>III.Chuẩn bị của giáo viên và học sinh</b>


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, tài liệu tham khảo, máy chiếu,
máy tính, chương trình minh hoạ.


<i><b>2. Chuẩn bị của học sinh:</b></i> Đọc trước bài mới, vở ghi lý thuyết, SGK.
<b>IV. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


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



Câu hỏi: Lặp với số lần biết trước có mấy dạng? Mơ tả cấu trúc và nêu sự thực
hiện của máy với các dạng đó?


<i><b> 3. Nội dung bài giảng</b></i>


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


<b>Hoạt động 1:Hướng dẫn HS làm ví dụ</b>


<i><b>GV:</b></i> Nêu nội dung bài tố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


- u cầu học sinh tiếp tục hồn thành
chương trình


- Chính xác hố bài làm của học sinh
bằng chương trình mẫu.


VD1:
* Lặp tiến:


Program laptien;
uses crt;


var i,n,s: integer;


Begin


clrscr;


write('Nhap n=');
readln(n);


s:=0;


for i:=1 to n do
s:=s+i;


writeln('Tong s=',s);
readln;


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

* Ví dụ trong SGK tương tự.


Program laptien;
uses crt;


var i,n,s: integer;
Begin


clrscr;


write('Nhap n=');
readln(n);


s:=0;



for i:=n downto 1 do
s:=s+i;


writeln('Tong s=',s);
readln;


End.
VD2:


Program laptien;
uses crt;


var i,m,n,t: integer;
Begin


clrscr;


write('Nhap m=');readln(m);
write('Nhap n=');readln(n);
t:=0;


for i:=m to n do


if (i mod 5=0) or (i mod 3=0) then
t:=t+1;


writeln('Ket qua la: ',t);
readln;


End.



<b>Hoạt động 2: Ví dụ khác</b>
*VD: In ra màn hình các số từ 1 đến 20


Thấy được biến i tăng liên tiếp từ giá


trị đầu đến giá trị cuối.


Program inso;
uses crt;


var i: integer;
Begin


clrscr;


for i:=1 to 20 do
writeln(‘i:',i);
readln;


End.

<b>V. Củng cố bài</b>



<b>VI. Bài tập về nhà</b>



- Về nhà làm nhiều ví dụ SBT. Làm bài tập trang 50.
- Đọc tiếp các phần tiếp theo của bài 10.


<b>VII. Nhận xét rút kinh nghiệm:</b>




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

<i>Ngày giảng:10/11/2009</i> Tiết: 16

<b>§10.</b>

<b>CẤU TRÚC LẶP (Tiết 3)</b>



<b>I. Mục đích, yêu cầu</b>


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


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


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


- 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 sử dụng được lệnh while để lập trình giải quyết được một số bài tốn
đơn giản.


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


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


- Kết hợp phương pháp giảng dạy thuyết trình, vấn đáp, minh hoạ.
<b>III.Chuẩn bị của giáo viên và học sinh</b>


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, tài liệu tham khảo, máy chiếu,
máy tính, chương trình minh hoạ.


<i><b>2. Chuẩn bị của học sinh:</b></i> Đọc trước bài mới, vở ghi lý thuyết, SGK.


<b>IV. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


<i><b>2. Kiểm tra bài cũ </b></i>
<i><b> 3. Nội dung bài giảng</b></i>


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


<b>Hoạt động 1:Lặp với số lần chưa biết trước và câu lệnh while-do</b>


<i><b>GV:</b></i> Nêu nội dung bài toán 2. Yêu cầu
học sinh xây dựng thuật toán để giải bài
toán 2.


<i><b>GV:</b></i> Sự khác nhau của bài toán này với
bài toán 1 đã viết ở tiết trước?


<i><b>HS:</b></i> Cho giới hạn n.


<i><b>GV:</b></i> Lặp bao nhiêu lần?


<i><b>HS:</b></i> phụ thuộc vào n (lặp n lần với điều
kiện n<=10)Chưa biết số lần lặp.


<i><b>GV:</b></i> Tiểu kết vấn đề: qua ví dụ trên ta


thấy có 1 dạng bài tốn có sự lặp lại của
1 số lệnh nhưng không biết trước được
số lần lặp. Cần có 1 cấu trúc điều khiển
lặp lại 1 cơng việc nhất định khi thoả
mãn 1 điều kiện nào đó.


<i><b>GV: </b></i>Yêu cầu học sinh nghiên cứu sách


<b>3. Lặp với số lần chưa biết trước và</b>
<b>câu lệnh while-do</b>


<b>Thuật toán:</b>
B1: S0; n0


B2: Nếu n > 10 thì chuyển đến B5
B3: n  n +1


B4: S= S + n rồi quay lai b2
B5: Đưa S ra màn hình và kết thúc
<b>While <điều kiện> do <câu lệnh>;</b>
Tronh đó:


-Điều kiện là biểu thức quan hệ hoặc biểu
thức logic;


-Câu lệnh là 1 câu đơn hoặc ghép
* Sự thực hiện của máy:


B1: Tính giá trị của điều kiện



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

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 thức 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 trên đ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 bài tốn trên lệnh cần lặp là
gì?


-Hỏi: 1 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 lệnh cần lặp trước?


<i><b>GV:</b></i> Đưa ra ví dụ để mơ tả thêm lệnh
while.


Thực hiện lệnh cần lặp, quay lại B1
* Chương trình:


Program lapwhile;


uses crt;


var i,n,s: integer;
Begin


clrscr;


write('Nhap n=');readln(n);
s:=0;i:=0;


while i<n do
begin


i:=i+1;
s:=s+i;
end;


writeln('Tong s=',s);
readln;


End.


VD: Tìm ước chung lớn nhất của hai số
nguyên dương M,N.


Program USCLN;
USES crt;
Var


M,N : integer;


BEGIN


clrscr;


write('Nhap M,N: ');
readln(M,N);


while M<>N do
Begin


IF M>N then M:=M-N
else N:=N-M;
End;


Writeln('UCLN(M,N) la :',M);
readln;


END.


<b>V. Củng cố bài</b>



- Qua tiết học này, các em cần nắm được cấu trúc chung của cấu trúc lặp, sự
thực hiện của máy khi gặp cấu trúc lặp chưa biết trước số lần lặp. Áp dụng cấu trúc
vào giải các bài tập.


<b>VI. Bài tập về nhà</b>



- Ôn lại bài học, làm bài tập trang 50.


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

<i>Ngày soạn:13/11/2009</i> Tuần: 14,15



<i>Ngày giảng:16/11/2009 </i> Tiết: 17,18


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


<b>I. Mục đích, u cầu</b>


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


- Xây dựng chương trình có cấu trúc rẽ nhánh.


- Làm quen với các cơng cụ hiệu chỉnh chương trình.


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


- Rèn luyện kĩ năng vận dụng và linh hoạt trong việc lựa chọn cấu trúc rẽ nhánh và cấu
trúc lặp phù hợp để giải quyết bài tốn đặt ra.


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


- Hình thành cho học sinh bước đầu về tư duy về lập trình có cấu trúc.
- Tự giác, tích cực và chủ động hoàn thành


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


- Kết hợp phương pháp giảng dạy: thuyết trình, vấn đáp, ví dụ minh hoạ.
<b>II.Chuẩn bị của giáo viên và học sinh</b>


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, sắp xếp phòng máy, VD mẫu,
máy tính đã cài sẵn chương trình Turbo Pascal hoặc Free Pascal.



<i><b>2. Chuẩn bị của học sinh:</b></i> Chuẩn bị nội dung thực hành, SGK, vở bài tập.
<b>III. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


<i><b>2. Kiểm tra bài cũ:</b></i>
<i><b>3. Nội dung thực hành </b></i>


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


<b>Hoạt động 1: Bài toán. Bộ số Pi-ta-go</b>
1. Gợi ý để học sinh nêu khái niệm về bộ


số Pitago.


- Yêu cầu: Lấy một ví dụ cụ thể.


- Hỏi: Để kiểm tra bộ ba 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?


2. Chiếu chương trình mẫu lên bảng.
Thực hiện mẫu các thao tác: lưu, thực
hiện từng lệnh chương trình, xem kết
quả trung gian, thực hiện chương trình



1. Theo dõi dẫn dắt của GV để nêu khái
niệm về bộ số pitago: tổng bình phương
của hai số bằng bình phương của số cịn
lại.


Ví dụ về bộ số Pitago: 5 4 3
a2<sub> = b</sub>2<sub> + c</sub>2


b2<sub> = a</sub>2<sub> + c</sub>2
c2<sub> = b</sub>2<sub> + a</sub>2


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

và nhập dữ liệu.


a. Yêu cầu học sinh gõ chương trình mẫu
vào máy.


b. Yêu cầu học sinh lưu chương trình lên
đĩa với tên Pytago.pas


c. Yêu cầu học sinh thực hiện từng lệnh
của chương trình.


d. Yêu cầu học sinh vào bảng chọn
Debug mở cửa sổ hiệu chỉnh để xem giá
trị a2,b2,c2.


e. Nhấn phím F7 để thực hiện các câu
lệnh tính những giá trị nói trên, so sánh
với kết quả a2=9,b2=16,c2=25.



f. Quan sát quá trình rẽ nhánh.


g. Lặp lại các bước trên với bộ dữ liệu
a=700, b=1000, c=800.


h. Thay đổi câu lệnh sau đó chạy chương
trình và quan sát kết quả có gì thay đổi
không?


- Bấm F2, gõ tên file và enter.


- Bấm F7. Nhập các giá trị a=3, b=4,
c=5.


- Chọn menu Debug để mở cửa sổ hiệu
chỉnh: Debug/Add watch/ nhập a2,
tương tự b2,c2.


- Quan sát quá trình rẽ nhánh của từng
bộ dữ liệu vào và trả lời: Điều kiện: tổng
các bình phương của hai số bằng bình
phương của số cịn lại thì chương trình
sẽ in ra thơng báo “bộ số đã nhập là bộ
số Pi-ta-go” ngược lại chương trình sẽ in
ra thông báo “bộ số đã nhập không là bộ
số Pi-ta-go”


<b>Hoạt động 2: Làm một số ví dụ (đã học tiết lý thuyết)</b>
VD1: Tính tổng 10 số tự nhiên đầu tiên.



VD2: Tính tổng n số tự nhiên đầu tiên
với n<=10


VD3: Tìm UCLN(M,N).


VD1: Sử dụng cấu trúc lặp biết trước số
lần lặp FOR-DO


VD2, VD3:Sử dụng cấu trúc lặp chưa
biết trước số lần lặp WHILE-DO


<b>IV. Củng cố bài</b>



- Qua bài thực hành các em đã hiểu rõ hơn về chương trình có sử dụng cấu trúc rẽ
nhánh, cấu trúc lặp và việc hiệu chỉnh chương trình, thực hiện chương trình. Quan
sát kết quả chương trình với nhiều bộ dữ liệu khác nhau.


<b>V. Bài tập về nhà</b>



- Làm lại bài thực hành hôm nay.


- Làm các bài tập trong SGK trang 50, 51.
- Ôn tập chương III.


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

<i>Ngày soạn:18/11/2009</i> Tuần: 16


<i>Ngày giảng:</i> Tiết: 19


<b>ÔN TẬP HỌC KỲ I </b>


<b>I. Mục đích, yêu cầu</b>


<i><b>1.</b><b>Về kiến thức:</b></i>
<i><b>củng cố kiến thức về:</b></i>


- Một số khái niệm cơ bản về lập trình và NNLT.
- Các thành phần cơ bản của NNLT.


- Nắm được cấu trúc chung và các thành phần của một chương trình viết trên
ngơn ngữ bậcd cao.


- Hiểu cách khai báo hằng, biến, cách tạo các biểu thức. Hiểu cách sử dụng
lệnh gán. Biết cách sử dụng các lệnh vào/ra đơn giản.


- Ghi nhớ những kiểu dữ liệu chuẩn thường dùng (tên, phạm vi giá trị và kích
thước trong bộ nhớ).


- Hiểu các khái niệm rẽ nhánh và lặp trong lập trình.


- Biết sử dụng các câu lệnh thực hiện rẽ nhánh và lặp của pascal.
- Bước đầu hình thành khái niệm lập trình có cấu trúc.


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


- Biết viết hằng và tên đúng trong một NNLT cụ thể.
- Biết khai báo biến, biết viết đúng các biểu thức đơn giản.


- Biết diễn đạt đúng các câu lệnh, soạn được chương trình giải các bài tốn đơn
giản áp dụng các cấu trúc đã học.


- Bước đầu có khả năng phân tích bài tốn đơn giản để chọn kiểu cấu trúc điều


khiển phù hợp.


- Biết tạo câu lệnh ghép khi cần thiết.


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


- Ham muốn học một NNLT 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. Phương pháp</b>


- Kết hợp phương pháp giảng dạy thuyết trình, vấn đáp.
<b>II.Chuẩn bị của giáo viên và học sinh</b>


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, SBT, tài liệu tham khảo.


<i><b>2. Chuẩn bị của học sinh:</b></i> Đọc trước bài mới, vở ghi lý thuyết, SGK, SBT.
<b>III. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


<i><b>2. Kiểm tra bài cũ </b></i>
<i><b>3. Nội dung ơn tập</b></i>


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



<b>Hoạt động 1: Lý thuyết</b>


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

thuyết chương I, II, III.


<i><b>GV:</b></i> Nhắc lại những vấn đề cần nắm
vững trong chương I, II, III.


Đặt câu hỏi gợi ý để học sinh tự nhắc lại
kiến thức đã học.


- Em hiểu như thế nào về lập trình và
ngơn ngữ lập trình?


- Các loại chương trình dịch?


- Các thành phần cơ bản của ngơn ngữ
lập trình?


- Các khái niệm trong ngơn ngữ lập
trình?


- Cấu trúc chung của chương trình TP?
- Nêu tên các kiểu dữ liệu chuẩn?
- Nêu các nhóm phép tốn đã học?
- Các loại biểu thức?


- Chức năng và sự thực hiện của lệnh
gán?


- Nêu tên và chức năng của một số hàm


số học?


- Tổ chức vào/ra.
- Tổ chức rẽ nhánh.
- Tổ chức lặp.


- Lập trình là quá trình diễn đạt thuật
tốn bằng một ngơn ngữ lập trình.


- Biên dịch và thơng dịch.


- Bảng chữ cái, cú pháp và ngữ nghĩa.
- Khái niệm tên, hằng và biến, chú thích.
- Gồm 2 phần: Phần khai báo và phần
thân.


- Số nguyên, số thực, ký tự, logic.


- Phép toán số học, phép toán quan hệ,
phép toán logic.


- Biểu thức số học, biểu thức quan hệ và
biểu thức logic.


- Dùng để tính tốn một biểu thức và gán
giá trị cho một biến.


- Hàm bình phương, hàm căn bậc hai,
hàm giá trị tuyệt đối, hàm sin, hàm cos.
- Lệnh Read()/readln();



- Lệnh write()/writeln();


- If <BTĐK> then <lệnh 1> else <lệnh 2>;
For tiến.


For lùi.
While <> do.
<b>Hoạt động 2: Bài tập</b>


<i><b>GV:</b></i> Yêu cầu học sinh làm bài tập.


<i><b>GV:</b></i> Yêu cầu HS xác định bài toán.
+ Dữ liệu vào.


+ Dữ liệu ra.


+ Các nhiệm vụ chính phải thực hiện.
toán.


<i><b>HS:</b></i> suy nghĩ và trả lời
+ Số n.


+ Tổng các số chẵn C.
+ 1- Nhập dữ liệu.


2- Tính tổng các số chẵn.
3- Đưa kết quả ra màn hình.


<i><b>GV:</b></i> YC hs viết chương trình.



<i><b>GV:</b></i> Yêu cầu học sinh về đọc lại các ví
dụ đã học, làm nhiều bài tập SGK, có thể


Bài tập: Nhập n số ngun sau đó tính
tổng các số chẵn.


input: n (n là số nguyên dương)
output: s (tổng các số chẵn)
chương trình:
Program tc;
uses crt;
var n,s,i:integer;
Begin
write(‘Nhap n=’);readln(n);
s:=0;


for i:=1 to n do
if (i mod 2=0) then
s:=s+i;


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

tham khảo sách bài tập tin học 11. end.

<b>IV. Củng cố bài</b>



- Bài học hôm nay các em cần ghi nhớ những khái niệm cơ bản.
- Làm 1 số bài tập trong SBT.


- Làm một số bài tập sau:


1. Nhập n số ngun sau đó tính tổng các số lẻ.


2. Nhập n số nguyên sau đó đếm các số chẵn, số lẻ.
3. Nhập vào số n sau đó in ra màn hình n dịng pascal.
4. Làm bài 4,5-tr51;


5. So sánh sự giống và khác nhau của hai dạng câu lệnh if- then, for-do và while
–do.


6. Viết chương trình tính giá trị biểu thức
50


2
1
<i>n</i>


<i>n</i>
<i>Y</i>


<i>n</i>





<sub></sub>


<b>V. Bài tập về nhà</b>



- Chuẩn bị kiến thức cho tiết sau kiểm tra học kỳ 1: Xem lại toàn bộ các kiến
thức đã được ôn tập, đặc biệt chú trọng cấu trúc lặp và rẽ nhánh.


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

<i>Ngày soạn:02/12/2009</i> Tuần:17



<i>Ngày giảng:08/12/2009</i> Tiết: 20


<b>KIỂM TRA HỌC KỲ I</b>


<b>I. Mục tiêu đánh giá</b>


- Kiểm tra kết quả tiếp thu của HS từ đầu năm học đến nay.


- Đánh giá kĩ năng phân tích một bài tốn và tư duy lập trình trên giấy.
- Có thái độ tự giác, tích cực trong làm bài kiểm tra.


<b>II. Yêu cầu của đề</b>


- Kiến thức: HS nắm được các kiến thức về kiểu dữ liệu cơ bản. Các hàm chuẩn
thông dụng. Cấu trúc vào/ra dữ liệu, cấu trúc rẽ nhánh và lặp.


- Kĩ năng: có kĩ năng phân tích bài tốn, viết chương trình.
<b>III. Đề bài: 2 đề</b>


<b>ĐỀ THI MÔN TIN HỌC 11</b>


<i>Thời gian làm bài: <b>45 phút</b></i>


<b>Câu 1 (3đ): </b>Hãy cho biết sự giống và khác nhau của hai dạng câu lệnh IF - THEN?


<b>Câu 2 (2đ): </b>Chuyển biểu thức sau sang biểu diễn trong ngôn ngữ lập trình Pascal.
A = <i><sub>x</sub></i><sub></sub> <i><sub>x</sub></i><sub></sub> <i><sub>x</sub></i><sub></sub> <i><sub>x</sub></i>


B = <sub>2</sub> 2


1 2



<i>aSinx</i> <i>x</i> <i>Sinx</i>


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






<b>Câu 3 (2đ):</b>Cho đoạn chương trình sau:


Program kiemtra;
Var s, i: integer;
Begin


S:=0;


For i:=1 to 4 do S:=S + 3;
Readln;


End.


Hỏi: Sau khi thực hiện chương trình S bằng bao nhiêu?


<b>Câu 4 (3đ):</b> Viết chương trình nhập vào một số ngun n sau đó tính tổng các số chia
hết cho 2.


<b>ĐỀ THI MÔN TIN HỌC 11</b>


<i>Thời gian làm bài: <b>45 phút</b></i>


<b>Câu 1 (3đ): </b>Hãy cho biết sự giống và khác nhau của hai dạng câu lệnh FOR-DO?



<b>Câu 2 (2đ): </b>Chuyển biểu thức sau sang biểu diễn trong ngôn ngữ lập trình Pascal.
A = (1 )<sub>2</sub> 1


1
1


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


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


 






<b>ĐÊ SỐ 1</b>


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

B = <sub>2</sub> 2


1 2


<i>aSinx</i> <i>x</i> <i>Sinx</i>


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







<b>Câu 3 (2đ):</b>Cho đoạn chương trình sau:


Program kiemtra;
Var s, i: integer;
Begin


S:=0;


For i:=1 to 4 do S:=S + 5;
Readln;


End.


Hỏi: Sau khi thực hiện chương trình S bằng bao nhiêu?


<b>Câu 4 (3đ):</b> Viết chương trình nhập vào một số ngun n sau đó tính tổng các số khơng
chia hết cho 2.


<b>VI. Đáp án</b>
<b>Đề bài 1</b>


<b>Câu 1. Nêu cấu trúc chung của 2 lệnh </b>
IF-THEN sau đó so sánh sự giống và
khác nhau.


<b>Câu 2. </b>


A := Sqrt(x + sqrt(x+ sqrt(x+sqrt(x))))


B := (a*Sinx) / (sqr(b)+a) +


(sqrt(sqr(x)+Sinx) / 2*a*c
<b>Câu 3. </b>


<b>S=18</b>
<b>Câu 4.</b>
Program tc;
uses crt;


var n,s,i:integer;
Begin


clrscr;


write(‘Nhap n=’);readln(n);
s:=0;


for i:=1 to n do
if (i mod 2=0) then
s:=s+i;


write(‘Tong s=’,s);
readln;


end.


<b>Đề bài 2</b>


<b>Câu 1. Nêu cấu trúc chung của 2 lệnh </b>


IF-THEN sau đó so sánh sự giống và
khác nhau.


<b>Câu 2. </b>


A := (a*Sinx) / (sqr(b)+a) +
(sqrt(sqr(x)+Sinx) / 2*a*c


B := ((1-a)*sqrt(a-1)) / (a*sqrt(a-1)))
+ sqrt(a) / (a + 1)


<b>Câu 3. </b>
<b>S=20</b>
<b>Câu 4.</b>
Program tc;
uses crt;


var n,s,i:integer;
Begin


clrscr;


write(‘Nhap n=’);readln(n);
s:=0;


for i:=1 to n do
if (i mod 2<>0) then
s:=s+i;


write(‘Tong s=’,s);


readln;


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

- Lớp 11A1:


<b>Câu 1 (3đ): </b>Hãy cho biết sự giống và khác nhau của hai dạng câu lệnh IF - THEN?


<b>Câu 2 (2đ): </b>Chuyển biểu thức sau sang biểu diễn trong ngơn ngữ lập trình Pascal.
A = <i><sub>x</sub></i><sub></sub> <i><sub>x</sub></i><sub></sub> <i><sub>x</sub></i><sub></sub> <i><sub>x</sub></i> B = <sub>2</sub> 2


1 2


<i>aSinx</i> <i>x</i> <i>Sinx</i>


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






<b>Câu 3 (2đ):</b>Cho đoạn chương trình sau:


Program kiemtra;
Var s, i: integer;
Begin


S:=0;


For i:=8 to 16 do


if (i mod 2) or (i mod 3) then S:=S + i;


Readln;


End.


Hỏi: Sau khi thực hiện chương trình S bằng bao nhiêu?


<b>Câu 4 (3đ):</b> Viết chương trình nhập vào một số nguyên n, đếm các số chia hết cho 2 trong
khoảng từ 1 đến n.


<b>Câu 1 (3đ): </b>Hãy cho biết sự giống và khác nhau của hai dạng câu lệnh FOR-DO?


<b>Câu 2 (2đ): </b>Chuyển biểu thức sau sang biểu diễn trong ngơn ngữ lập trình Pascal.
A = (1 )<sub>2</sub> 1


1
1


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


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


 





 B =


2


2


1 2


<i>aSinx</i> <i>x</i> <i>Sinx</i>


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






<b>Câu 3 (2đ):</b>Cho đoạn chương trình sau:


Program kiemtra;
Var s, i: integer;
Begin


S:=0;


For i:=1 to 8 do


if (i mod 2) or (i mod 3) then S:=S + i;
Readln;


End.


Hỏi: Sau khi thực hiện chương trình S bằng bao nhiêu?


<b>Câu 4 (3đ):</b> Viết chương trình nhập vào một số nguyên n, đếm các số không chia hết cho 2


trong khoảng từ 1 đến n.


<b>ĐÊ SỐ 1</b>


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

<b>VI. Đáp án</b>
<b>Đề bài 1</b>


<b>Câu 1. Nêu cấu trúc chung của 2 lệnh IF-THEN sau đó so sánh sự giống và khác </b>
nhau.


<b>Câu 2. </b>


A := Sqrt(x + sqrt(x+ sqrt(x+sqrt(x))))


B := (a*Sinx) / (sqr(b)+a) + (sqrt(sqr(x)+Sinx) / 2*a*c
<b>Câu 3. </b>


<b>S=56</b>
<b>Câu 4.</b>
Program tc;
uses crt;


var n,d,i:integer;
Begin


clrscr;


write(‘Nhap n=’);readln(n);
d:=0;



for i:=1 to n do
if (i mod 2=0) then
d:=d+1;


write(‘Cac so chan=’,d);
readln;


end.
<b>Đề bài 2</b>


<b>Câu 1. Nêu cấu trúc chung của 2 lệnh IF-THEN sau đó so sánh sự giống và khác </b>
nhau.


<b>Câu 2. </b>


A := (a*Sinx) / (sqr(b)+a) + (sqrt(sqr(x)+Sinx) / 2*a*c
B := ((1-a)*sqrt(a-1)) / (a*sqrt(a-1))) + sqrt(a) / (a + 1)
<b>Câu 3. </b>


<b>S=23</b>
<b>Câu 4.</b>
Program tc;
uses crt;


var n,d,i:integer;
Begin


clrscr;


write(‘Nhap n=’);readln(n);


d:=0;


for i:=1 to n do
if (i mod 2<>0) then
d:=d+1;


write(‘Cac so le=’,d);
readln;


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

<i>Ngày soạn:12/12/2009</i> Tuần: 18


<i>Ngày giảng:15/12/2009</i> Tiết: 21


<b>Chương IV. KIỂU DỮ LIỆU CĨ CẤU TRÚC</b>



<b>§11.</b>

<b>KIỂU MẢNG</b>



<b>I. Mục đích, yêu cầu</b>


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


- Biết được một kiểu dữ liệu mới là kiểu mảng một chiều. Biết được một loại
biến có chỉ số.


- Biết cấu trúc tạo kiểu mảng một chiều và cách khai báo biến khiểu mảng một
chiều.


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


- Tạo được kiểu mảng một chiều và sử dụng biến mảng một chiều trong ngơn


ngữ lập trình Pascal để giải quyết một số bài toán cụ thể.


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


- Có tư duy đúng đắn trong việc áp dụng mảng một chiều để giải các bài toán
đơn giản.


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


- Kết hợp phương pháp giảng dạy thuyết trình, vấn đáp, hình ảnh minh hoạ.
<b>III.Chuẩn bị của giáo viên và học sinh</b>


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, tài liệu tham khảo, máy chiếu,
máy tính, chương trình minh hoạ.


<i><b>2. Chuẩn bị của học sinh:</b></i> Đọc trước bài mới, vở ghi lý thuyết, SGK.
<b>IV. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


<i><b>2. Kiểm tra bài cũ và dẫn nhập bài mới</b></i>
<i><b>2.1. Kiểm tra bài cũ</b></i>


<i><b>2.2. Dẫn nhập bài mới</b></i>


- Ở chương III chúng ta đã nghiên cứu về cấu trúc rẽ nhánh, cấu trúc lặp. Mặt


khác, các em cũng đã được làm quen với các kiểu dữ liệu chuẩn như kiểu số
nguyên, số thực, logic, kí tự. Tuy nhiên, với những kiểu dữ liệu này làm thế nào để:
<i>Lưu trữ và xử lí một dãy số? Lưu trữ và xử lí họ và tên của một người?Lưu trữ và</i>
<i>xử lí bảng kết quả thi tốt nghiệp ... Các kiểu dữ liệu chuẩn không đủ để biểu diễn dữ</i>
liệu của các bài toán trên cũng như nhiều bài toán khác trong thực tế.


- Các NNLT thường cung cấp một số kiểu dữ liệu được xây dựng từ những kiểu
dữ liệu chuẩn gọi là kiểu dữ liệu có cấu trúc. Chương này chúng ta sẽ tìm hiểu một
số kiểu dữ liệu trong ngôn ngữ pascal để trả lời những câu hỏi trên. VD với bài toán
xử lí một dãy số ta dùng kiểu dữ liệu mảng. Vậy mảng là gì và sử dụng mảng như
thế nào? Bài học hơm nay chúng ta sẽ nghiên cứu, tìm hiểu “Kiểu mảng”


<i><b> 3. Nội dung bài giảng</b></i>


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

<b>Hoạt động 1: Kiểu mảng một chiều</b>


<i><b>GV:</b></i> Đưa ra ví dụ, cần lập trình xử lí một
dãy số ngun, hãy tìm cách lưu trữ một
dãy số nguyên khi lập trình?


Bằng cách nào có thể lưu trữ được thơng
tin dưới dạng bảng khi lập trình?


<i><b>HS:</b></i> Đưa ra ý kiến


<i><b>GV:</b></i> Đưa ra khái niệm mảng một chiều
và một số yếu tố liên quan trong lập
trình nói chung.


<i><b>GV:</b></i> Đi sâu phân tích hai chương trình


để cho học sinh nhận thấy sự tiện lợi khi
sử dụng mảng.


<i><b>HS:</b></i> Trong khi gv phân tích 2 chương
trình, hs sẽ đưa ra ý kiến nhận xét về hai
chương trình.


<i><b>GV:</b></i> Chiếu CT ví dụ


<i><b>HS:</b></i> Quan sát 2 chương trình:
CT1: Không sử dụng kiểu mảng.
CT2: Sử dụng kiểu mảng một chiều.


<i><b>GV:</b></i> Từ CT đưa ra cách khai báo mảng
một chiều trong NNLT pascal, giải thích
ý nghĩa.


Trong lập trình thường có 2 loại mảng:
- Mảng một chiều.


- Mảng hai chiều.
<b>1. Kiểu mảng một chiều</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ố.


- Để 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>- Hầu hết các ngơn ngữ lập trình đều có</b>
quy tắc cho phép xác định: tên kiểu
mảng, số lượng phần tử, kiểu dữ liệu của
từng phần tử, cách khai báo 1 biến mảng
và cách tham chiếu đến từng phần tử của
mảng.


*Xét VD SGK-tr53-54


<b>a. Khai báo</b>


<b>- Có 2 cách khai báo:</b>


<i><b>Cách 1</b></i>: Khai báo trực tiếp:


<i><b>Var</b></i> <tên biến mảng>: <i><b>array</b></i>[kiểu chỉ số]


<i><b>of</b></i> <kiểu phần tử>;


<i><b>Cách 2:</b></i> Khai báo gián tiếp


<i><b>Type </b></i><tên kiểu mảng>= <i><b>array</b></i>[kiểu chỉ
số] <i><b>of</b></i> <kiểu phần tử>;


<i><b>Var </b></i><tên biến mảng>:<tên kiểu mảng>;


<i><b>Trong đó:</b></i>



+Kiểu chỉ số thường là một đoạn số
nguyên liên tục có dạng n1...n2 (n1<n2)
(n1,n2 là các hằng hoặc biểu thức).
+ Kiểu phần tử là kiểu dl của các phần tử
của mảng.


<b>Hoạt động 2: VD khai báo mảng một chiều</b>


<i><b>GV:</b></i> - Quan sát bảng và chọn khai báo đúng.
Arrayr:array[1..200] of real;


Arrayb:array[-100..0] of boolean;


<i><b>GV:</b></i> Yêu cầu học sinh cho ví dụ khai


- Ví dụ:


Arrayr:array[1..200] of real;


Type mmc=array[1..100] of integer;


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

báo một biến mảng ứng với kiểu dữ liệu
vừa tạo.


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


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



Var a:mmc;


- Để truy cập vào phần tử mảng, ta viết:
<Tên biến mảng>[chỉ số]


VD: a[3] truy cập phần tử mang chỉ số 3 của
mảng a.


<b>V. Củng cố bài</b>



- Qua tiết học này, các em cần nắm được cấu trúc chung của mảng một chiều.
Áp dụng cấu trúc vào giải các bài tập.


<b>VI. Bài tập về nhà</b>



- Viết chương trình nhập vào một mảng gồm n số nguyên (1<=n<=100), mỗi số
có giá trị tuyệt đối khơng q 300. Tính tổng giá trị các phần tử có giá trị chia hết
cho k.


- Trả lời các câu hỏi 1-4, làm bài tập 5, 6, 7, sách giáo khoa, trang 79.


- Xem lại 3 thuật tốn đã học ở lớp 10 (Tìm GTLN của 1 dãy số nguyên, sắp
xếp bằng trao đổi và tìm kiếm nhị phân)


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

<i>Ngày soạn:20/12/2009</i> Tuần: 19


<i>Ngày giảng:24/12/2009</i> Tiết: 22, 23


<b>§11.</b>

<b>KIỂU MẢNG (Tiết 2)</b>



<b>I. Mục đích, u cầu</b>


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


- Hiểu cách khai báo và truy cập đến các phần tử của mảng một chiều.


- Cài đặt được thuật toán của một số bài toán đơn giản với kiểu dữ liệu mảng
một chiều.


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


- Nắm được các thành phần trong khai báo biến mảng, định danh được các phần
tử xuất hiện trong chương trình


- Biết cách khai báo và sử dụng các thao tác vào ra với biến mảng


- Biết sử dụng các phép toán đối với biến mảng, áp dụng để giải một số bài toán
cần lưu trữ dữ liệu dưới dạng mảng.


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


- Giúp học sinh hiểu rõ hơn tầm quan trọng của kiểu mảng.


- Làm cho học sinh thêm yêu thích lập trình, u thích mơn học hơn.
<b>II. Phương pháp</b>


- Kết hợp phương pháp giảng dạy thuyết trình, vấn đáp.
<b>III.Chuẩn bị của giáo viên và học sinh</b>


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, tài liệu tham khảo, máy chiếu,


máy tính, chương trình minh hoạ.


<i><b>2. Chuẩn bị của học sinh:</b></i> Đọc trước bài mới, vở ghi lý thuyết, SGK.
<b>IV. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


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


- Câu hỏi: Một em lên bảng viết cấu trúc khai báo mảng một


<i><b>3. Nội dung bài giảng</b></i>


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


<b>Hoạt động 1: Tìm hiểu ví dụ 1</b>


<i><b>GV:</b></i> Chúng ta xét chương trình có sử
dụng mảng một chiều cài đặt một số
thuật toán giải những bài tốn tìm kiếm
và sắp xếp.


<i><b>GV:</b></i> u cầu học sinh đọc u cầu ví dụ
1 sau đó hãy tìm input, output và thuật
toán để giải bài toán?



<i><b>HS:</b></i> Nhớ lại thuật toán đã được học ở
lớp 10, suy nghĩ trả lời.


<b>1. Kiểu mảng một chiều</b>
<b>b. Một số ví dụ</b>


<b>VD1: Tìm phần tử lớn nhất của dãy số</b>
<b>nguyên.</b>


<i><b>*Input: </b></i>N, dãy gồm N số nguyên


<i><b>*Output:</b></i>Chỉ số và giá trị Max = ?


<i><b>*Ý tưởng:</b></i>


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

<i><b>GV:</b></i>Giải thích thuật tốn, phân tích bài
toán cho hs hiểu hơn.


<i><b>GV:</b></i> Đối với bài toán trên, chúng ta cần
khai bào những biến nào, kiểu dữ liệu
tương ứng?


<i><b>HS:</b></i> quan sát và theo dõi, đưa ra ý kiến
Ta cần khai báo biến n chỉ số lượng
phần tử trong dãy, i là biến chỉ số, một
mảng A, biến Max và biến lưu chỉ số
của phần tử có giá trị Max: csMax


<i><b>GV:</b></i> GV đưa ra đoạn chương trình giải
bài tốn trên, chạy chương trình.



thì Max nhận giá trị là phần tử đó


Q trình lặp lại cho đến khi so sánh hết
các phần tử trong dãy.


<b>*Thuật toán:</b>


B1: Nhập N và A1, A2, …, An
B2: Max <= A1, i <= 2


B3: Nếu i>N đưa ra max rồi kết thúc
B4: 4.1 Nếu Ai>Max thì Max <= Ai
4.2 i <= i+1 rồi quay lại B3
<b>*Chương trình:</b>


<b>Program </b> Tim_Max;


<b>Uses</b> Crt;


<b>Var </b> A: Array[1..250] Of Integer;
N, i, Max, csMax: Integer;


<b>Begin</b>


Clrscr;


Write(‘Nhap so luong phan tu cua day: ’);
Readln(N);



For i:=1 To N do
Begin


Write(‘A[ ’,i,’]= ‘);
Readln(A[i]);
End;


Max:=A[1];
For i:=2 To n Do
If A[i] > Max Then


Begin


Max := A[i];
csMax := i;
End;


Write(‘Max = ’, Max, ‘ tai vi tri thu ’,csMax);
Readln


<b>End.</b>


<b>Hoạt động 2: Tìm hiểu ví dụ 2</b>


<i><b>GV:</b></i> Trong bài 4: Bài toán và thuật toán
(SGK Tin học 10), các em đã được học
về 1 số thuật tốn trong đó có thuật tốn
sắp xếp bằng tráo đổi. Em hãy tìm input,
output và thuật toán để giải bài toán?



<i><b>HS:</b></i> Nhớ lại thuật toán đã được học ở
lớp 10, suy nghĩ trả lời.


<i><b>GV:</b></i>Giải thích thuật tốn, phân tích bài
tốn cho hs hiểu hơn.


<i><b>GV:</b></i> Đối với bài toán trên, chúng ta cần
khai báo những biến nào, kiểu dữ liệu


<b>VD2: Sắp xếp dãy số nguyên bằng</b>
<b>thuật toán tráo đổi</b>


<i><b>Input:</b></i> Số nguyên N<=250, Dãy số A1,
A2, …, An với các số không vượt quá
500


<i><b>Output: </b></i> Sắp xếp dãy trên thành dãy
không giảm


<b>*Ý tưởng:</b>


Với mỗi cặp số hạng đứng liền kề trong
dãy, nếu số trước lớn hơn số sau ta đổi
chỗ chúng cho nhau. Lặp lại q trình
này cho đến khi khơng có sự đổi chỗ nào
xảy ra nữa.


<b>*Chương trình:</b>


Program Sap_xep;


Uses Crt;


Var A: Array[1..250] Of Integer;
N, i, j, t: Integer;


Begin
Clrscr;


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

tương ứng?


<i><b>HS:</b></i> quan sát và theo dõi, đưa ra ý kiến
Khai báo biến


- Một biến mảng A


- Một biến N lưu số lượng phần tử
của dãy


- Biến chỉ số i, j và biến trung gian t
HS lên bảng viết chương trình khai báo
và nhập


<i><b>GV:</b></i> GV đưa ra đoạn chương trình giải
bài tốn trên, chạy chương trình.


Writeln(‘Nhap gia tri cho mang’);
For i:=1 To n Do


Begin



Write(‘A[’, i, ‘]= ‘);
Readln;


End;


For i:=1 To N-1 Do
For j:=i + 1 To N Do
If A[i]>A[j] Then


Begin
T:=A[i];
A[i]:=A[j];
A[j]:=t;
End;


Writeln(‘Day sau sap xep la:’);
For i:= 1 To N Do


Write(A[i]:5);
Readln
End.


<b>Hoạt động 3: Tìm hiểu ví dụ 3</b>


<i><b>GV:</b></i> Chúng ta xét chương trình có sử
dụng mảng một chiều cài đặt bài tốn
tìm kiếm.


<i><b>GV:</b></i> Yêu cầu học sinh đọc yêu cầu ví dụ
3 sau đó hãy tìm input, output và thuật


tốn để giải bài toán?


<i><b>HS:</b></i> Nhớ lại thuật toán đã được học ở
lớp 10, suy nghĩ trả lời.


<i><b>GV:</b></i>Giải thích thuật tốn, phân tích bài
tốn cho hs hiểu hơn.


<i><b>GV:</b></i> Đối với bài tốn trên, chúng ta cần
khai bào những biến nào, kiểu dữ liệu
tương ứng?


<i><b>HS:</b></i> quan sát và theo dõi, đưa ra ý kiến
Ta cần khai báo biến n chỉ số lượng
phần tử trong dãy, i là biến chỉ số, một
mảng A lưu dãy số đã sx tăng dần, biến
k lưu khố cần tìm kiếm.


<b>VD1: Tìm kiếm nhị phân</b>


<i><b>*Input: </b></i>N, dãy a gồm N số ngun từ
a1,...,an


<i><b>*Output:</b></i>Chỉ số i mà ai=k hoặc thơng báo
khơng tìm thấy.


<i><b>*Ý tưởng:</b></i>


- Dãy A đã được sắp xếp tăng dần.



- Chia dãy A thành 2 phần với phần tử
giữa agiua với giua= <sub></sub>






 
2
1
<i>N</i>


- Khi đó chỉ sảy ra 1 trong 3 trường hợp:
+ Nếu agiua=k thì giữa là chỉ số cần tìm.
+ Nếu agiua>k thì việc tìm kiếm chỉ xét
trên dãy a1,a2,…,agiua-1(phạm vi tìm kiếm
chỉ bằng nửa phạm vi trước đó).


+ Nếu agiua<k thì việc tìm kiếm chỉ xét
trên dãy agiua+1,agiua+2,…,aN.


- Quá trình trên sẽ được lặp lại một số lần
cho đến khi hoặc đã tìm thấy khoá k
trong dãy A hoặc phạm vi tìm kiếm bằng
rỗng.


<b>*Thuật tốn:</b>


B1. Nhập N, các số hạng a1, a2,...,aN và
khoá k;



B2. Dau1, cuoiN;


B3. Giua <sub></sub>






 
2
<i>cuoi</i>
<i>dau</i>
;


B4. Nếu agiua=k thì thơng báo chỉ số giữa
rồi kết thúc;


B5. Nếu agiua>k thì đặt cuoi=giua-1, rồi
chuyển đến bước 7;


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

<i><b>GV:</b></i> GV đưa ra đoạn chương trình giải
bài tốn trên, chạy chương trình.


B7. Neu dau>cuoi thì thơng báo dãy A
khơng có số hạng có giá trị k, rồi kết
thúc;


B8. Quay lại bước 3.
<b>*Chương trình:</b>



Program TK_nhiphan;
Uses crt;


Var A: Array [1..10000] of integer ;
N,i,dau,cuoi,giua,k,vk: Integer ;
Timthay: Boolean;


Begin
Clrscr;


Write (‘Nhap so phan tu trong day:’) ;
Readln (n) ;


Write (‘Nhap gia tri can tim :’) ;
Readln (k);


For i:=1 to n do
Begin


Write (‘Nhap A[’, i, ‘]=’);
Readln (a[i]);


End;


Dau:=1; Cuoi:=n;
Timthay:=False;


While (Dau>Cuoi) and Not(timthay) do
Begin



Giua:=(Dau+Cuoi) div 2;
If A[giua]:= k then
Timthay:=true
Else


If A[giua] > k then
Cuoi:=Giua -1
Else


Dau:= Giua+1;
End;


If timthay then


Write (‘ Vi tri tim duoc la :’, Vk)
Else


Write (‘Khong tim thay’);
Readln;


End.


<b>V. Củng cố bài</b>



- Qua tiết học này, các em cần biết áp dụng sử dụng kiểu mảng một chiều vào
giải các bài toán.


<b>VI. Bài tập về nhà</b>




- BTVN: Nhập vào N và dãy gồm N số nguyên, Tính và đưa ra màn hình tổng
và bản thân các phần tử chẵn trong mảng.


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

<i>Ngày soạn:03/01/2009</i> Tuần: 20


<i>Ngày giảng:07/01/2009</i> Tiết: 24


<b>§11.</b>

<b>KIỂU MẢNG (Tiếp)</b>


<b>I. Mục đích, yêu cầu</b>


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


- HS Biết được khái niệm về mảng 2 chiều: Có thể hình dung mảng 2 chiều như
1 bảng có các dịng và các cột. Các dòng và các cột được đánh số bằng các số
nguyên liên tiếp


- Giống như mảng 1 chiều, có thể tham chiếu trên trên mỗi phần tử của mảng 2
chiều


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


- Biết cách khai báo mảng 2 chiều và ứng dụng vào giải 1 số ví dụ cụ thể.


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


- Có tư duy đúng đắn trong việc áp dụng mảng một chiều để giải các bài toán
đơn giản.


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



- Kết hợp phương pháp giảng dạy thuyết trình, vấn đáp, hình ảnh minh hoạ.
<b>III.Chuẩn bị của giáo viên và học sinh</b>


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, tài liệu tham khảo, máy chiếu,
máy tính, chương trình minh hoạ.


<i><b>2. Chuẩn bị của học sinh:</b></i> Đọc trước bài mới, vở ghi lý thuyết, SGK.
<b>IV. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


<i><b>2. Kiểm tra bài cũ </b></i>
<i><b>3. Nội dung bài giảng</b></i>


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


<b>Hoạt động 1: Kiểu mảng hai chiều</b>


<i><b>GV:</b></i> Đưa ra VD về mảng 2 chiều. Em
hãy quan sát bảng số trên và sử dụng kiến
thức về mảng một chiều, các em hãy đưa ra
cách sử dụng kiểu mảng đó để lưu trữ bảng
cửa chương này?


<i><b>HS:</b></i> Sử dụng 9 mảng một chiều, mỗi mảng
lưu 1 hàng của bảng.



<i><b>GV:</b></i> Với cách lưu trữ như vậy thì ta phải
khai báo bao nhiêu biến mảng?


<i><b>HS:</b></i> Khai báo 9 biến mảng một chiều.
<i><b>GV:</b></i> Như vậy thì nó có những khó khăn gì?
<i><b>HS:</b></i> Khai báo nhiều biến, viết chương trình
nhập xuất dữ liệu dài.


<i><b>GV:</b></i> Để khắc phục các khó khăn này, ta


<b>2. Kiểu mảng hai chiều:</b>


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

xem 1 mảng một chiều là 1 phần tử, ta ghép
9 mảng một chiều thành 1 mảng hai chiều.
<i><b>GV:</b></i> Thế thì mảng hai chiều là mảng như
thế nào?


<i><b>HS:</b></i> HS chú ý lắng nghe và trả lời.


<i><b>GV:</b></i> Để mô tả kiểu mảng hai chiều ta cần
xác định những yếu tố chính nào?


<i><b>GV:</b></i> Bây giờ chúng ta sẽ đi tìm hiểu cách
khai bái kiểu mảng hai chiều như thế nào?
<i><b>GV:</b></i> Tương tự như kiểu mảng một chiều,
em nào có thể lên bảng viết cách khai báo
kiểu mảng hai chiều trong ngơn ngữ Pascal?


<i><b>GV:</b></i> GV đưa ra ví dụ và yêu cầu HS chỉ ra


đâu là chỉ số của mảng, số dòng, số cột và
kiểu của mỗi phần tử trong mảng?


- Các yếu tố xây dựng mảng hai chiều:
+ Tên kiểu mảng hai chiều.


+ Số lượng phần tử của mỗi chiều.
+ Kiểu dữ liệu của phần tử.


+ Cách khai báo biến.


+ Cách tham chiếu đến phần tử.
<i><b>a/. Khai báo:</b></i>


- Cách 1: Khai báo trực tiếp.


Var <tên biến mảng> : array [kiểu chỉ số
hàng, kiểu chỉ số cột] of <kiểu phần tử>;
- Cách 2: Khai báo gián tiếp.


Type <tên kiểu mảng> = array [kiểu chỉ số
hàng, kiểu chỉ số cột] of <kiểu phần tử>;
Var <tên biến mảng> : <tên kiểu mảng>;
<i>* Ví dụ:</i>


- Cách 1:


Var A : array [1..9,1..10] of Integer;
- Cách 2:



Type bang =array [1..9,1..10] of Integer;
Var A : bang;


- Cách truy cập phần tử mảng:
<tên mảng>[chỉ số dòng, chỉ số cột]
<b>Hoạt động 2: Một số ví dụ</b>


<i><b>GV:</b></i> Giới thiệu ví dụ SGK.


- Yêu cầu học sinh xác định cách thức tổ
chức dữ liệu.


- Yêu cầu học sinh chỉ ra các nhiệm vụ
chính của bài tốn cần giải quyết.


Chiếu chương trình ví dụ sách giáo khoa,
trang 61, 62 để học sinh quan sát.


- Thực hiện chương trình để học sinh thấy
được kết quả của nó.


- Giáo viên cần giải thích một số chỗ có thể
học sinh chưa hiểu và yêu cầu học sinh về
nhà tìm hiểu thêm.


<i>* Ví dụ 1:</i> Chương trình sau tính và đưa ra
màn hình bảng nhân.


<i>* Ví dụ 2:</i> Chương trình sau nhập vào từ bàn
phím các phần tử của mảng hai chiều B gồm


5 dòng, 7 cột với các phần tử là các số
nguyên và 1 số ngun k. Sau đó, đưa ra
màn hình các phần tử của mảng có giá trị
nhỏ hơn k.


<b>V. Củng cố bài</b>



- Qua tiết học này, các em cần nắm được cấu trúc chung của mảng hai chiều. Áp
dụng cấu trúc vào giải các bài tập.


<b>VI. Bài tập về nhà</b>



- Làm các bài tập số 8, 9 trang 79 trong SGK.


- Xem trước nội dung của bài thực hành số 3 trong SGK.


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

<i>Ngày soạn:10/01/2009</i> Tuần: 22


<i>Ngày giảng:13/01/2009 </i> Tiết: 25, 26


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


<b>I. Mục đích, yêu cầu</b>


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


<b> - Củng cố lại kiến thức cơ bản về kiểu dữ liệu mảng, cụ thể là mảng một chiều.</b>


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


<b>- Rèn luyện cho học sinh một số kĩ năng làm việc với mảng như:</b>


+Khai báo kiểu dữ liệu mảng một chiều,


+ Nhập/ xuất dữ liệu,


+Duyệt qua các phần tử của mảng,


-Qua đó giúp học sinh biết cách giải một số bài toán cơ bản thường gặp như:
+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/bé nhất của mảng và vị trí của nó.


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


<b> -Rèn luyện tác phong, tư duy lập trình, tự giác , tích cực, chủ động và sáng tạo</b>
trong tìm kiếm kiến thức.


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


-Trình chiếu kết hợp đàm thoại.


-Hướng dẫn học sinh các bước thực hiện một số chương trình.
<b>II.Chuẩn bị của giáo viên và học sinh</b>


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, sắp xếp phòng máy, CT mẫu.


<i><b>2. Chuẩn bị của học sinh:</b></i> Chuẩn bị nội dung thực hành, SGK, vở bài tập.
<b>III. Tiến trình lên lớp, nội dung bài giảng</b>



<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


<i><b>2. Kiểm tra bài cũ:</b></i>
<i><b>3. Nội dung thực hành </b></i>


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


<b>Hoạt động 1: Tìm hiều bài 1</b>
Sử dụng máy chiếu, chiếu nội dung


bài số 1a/ sgk/63. Sau đó đặt câu hỏi cho
học sinh trả lời .


+ Khai báo uses CRT; có ý nghĩa gì?
+Myarray là tên kiểu dữ liệu hay tên
biến?


+Vai trị của nmax và n có gì khác nhau?


Quan sát trên màn chiếu.
- Lắng nghe câu hỏi và trả lời.


-Khai báo thư viện chương trình con
CRT để sử dụng được thủ tục Clrscr;
- Myarray : tên kiểu dữ liệu



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

+Những dòng lệnh nào dùng để tạo biến
mảng a


-Giáo viên giới thiệu hàm Random cho
học sinh.Sau đố đặt câu hỏi:


+ a[i] := Random(300) – Random (300)
có ý nghĩa gì?


+ Lệnh for i:=1 to n do
Write ( a[i] : 5);
Có ý nghĩa gì?


+Lệnh For-do cuối cùng thực hiện
nhiệm vụ gì?


+Lệnh gán s := s + a[i] ; được thực hiện
bao nhiêu lần?


-Thực hiện lại chương trình lần cuối để
học sinh thấy được kết quả.


- Chiếu nội dung câu b/ bài tập 1 sgk/64
Hỏi HS:


+ Ý nghĩa của biến posi và neg?


+ 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;
là gì?


+Hướng dẫn học sinh thêm vào vị trí
cần thiết để chương trình đếm được số
lượng các số âm và các số dương.


+Chạy thử chưong trình để học sinh
theo dõi kết quả.


-Theo dõi để nắm hàm Random.


-Random(n): cho số ngẫu nhiên từ 0 đến
n-1


+Câu lệnh cho số ngẫu nhiên có giá trị từ
-299 đến 299.


+câu lệnh in ra màn hình giá trị tất cả
các phần tử của mảng.


+cộng tất cả các phần tử chia hết cho k.
+Số lần thực hiện lệnh gán đúng bằng số
phần tử của mảng chia hết cho k.


-Theo dõi kết quả chạy thử chương trình.



Sửa chương trính câu a/ để được
chương trình giải quyết bài tốn câu b/
-Quan sát, theo dõi và trả lời các câu hỏi
của GV.


+posi : đếm số dương trong mảng.
+neg: đếm các số âm trong mảng.


+Nếu a[i] > 0 thì cộng a[i] vào posi;
ngược lại nếu a[i] < 0 thì cộng a[i] vào
neg.


+Quan sát các lệnh và suy nghĩ vị trí cần
sửa trong chương trình câu a/.


+Theo dõi kết quả chạy chương trình.
<b>Hoạt động 2: Tìm hiểu bài 2</b>


-Cho học sinh đọc đoạn chương trình
trong bài 2/64sgk .




Hỏi HS:


+ Nếu muốn tìm phần tử nhỏ nhất thì
cần sửa ở chỗ nào?


+Nếu muốn tìm phần tử lớn nhất với chỉ
số lớn nhất của nó thì ta sửa ổ chỗ nào?



-Đọc đoạn chương trình sgk. Liên hệ trả
lời các câu hỏi mà GV nêu ra.


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

-Chạy thử chưong trình cho học sinh
theo dõi


-Theo dõi học sinh thực hiện chương
trình và xem kết quả.


<i> -Theo dõi GV chạy chương trình và làm</i>
lại trên máy tính.


<b>IV. Củng cố bài</b>



- Qua bài thực hành hôm nay, các em hiểu rõ hơn về chương trình có sử dụng một
số câu lệnh và một số kiểu dữ liệu thông qua việc tìm hiểu, chạy thử các chương
trình có sẵn. Biết giải một số bài tốn tính tốn, tìm kiếm đơn giản trên máy tính.

<b>V. Bài tập về nhà</b>



- Làm lại bài thực hành hơm nay.


- Viết một chương trình nhập một mảng một chiều, đếm số phần tử nhỏ hơn một
số k nào đó.


- Viết chương trình nhập một mảng một chiều A[1..20] và nhập một số x. đếm
số lượng số trong A có giá trị bằng x.


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

<i>Ngày soạn:</i> Tuần:



<i>Ngày giảng: </i> Tiết: 27, 28


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


<b>I. Mục đích, yêu cầu</b>


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


<b> - Tiếp tục củng cố kiến thức khi lập trình với dữ liệu kiểu mảng.</b>


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


<b>- Biết nhận xét, phân tích, đề xuất thuật tốn giải bài tốn sao cho chương trình</b>
chạy nhanh hơn.


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


- Tự giác, chủ động trong khi lập trình.
<b>II. Phương pháp</b>


- Trình chiếu kết hợp đàm thoại.


- Hướng dẫn học sinh các bước thực hiện một số chương trình.
<b>II.Chuẩn bị của giáo viên và học sinh</b>


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, sắp xếp phòng máy, CT mẫu.


<i><b>2. Chuẩn bị của học sinh:</b></i> Chuẩn bị nội dung thực hành, SGK, vở bài tập.
<b>III. Tiến trình lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>



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


- Yêu cầu lớp trưởng báo cáo sĩ số.


<i><b>2. Kiểm tra bài cũ:</b></i>
<i><b>3. Nội dung thực hành </b></i>


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


<b>Hoạt động 1: Tìm hiểu bài toán 1</b>
GV yêu cầu HS khởi động Pascal


GV đưa ra bài toán: Tạo mảng A gồm n
(n<=100) số ngun, mỗi số có giá trị
tuyệt đối khơng q 300. Sắp xếp dãy
thành dãy không giảm


GV yêu cầu HS gõ chương trình trang
65 (SGK)


HS khởi động pascal


HS gõ chương trình
<b>Uses Crt;</b>


<b>Const nmax=250;</b>


<b>Var A: Array[1..nmax] of Integer;</b>
n, i, j, t: Integer;



<b>Begin</b>
Clrscr;
Randomize;


Write(‘Nhap n= ’); Readln(n);
{Tao ngau nhien mang gom n so
nguyen}


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

GV yêu cầu HS soát lỗi chương trình và
chạy thử chương trình với những bộ dữ
liệu khác nhau


(GV hướng dẫn HS giải ý b)


Yêu cầu HS tắt màn hình, giáo viên sau
khi quan sát hs thực hành thì gọi 1 số hs
nêu ý tưởng giải ý b.


GV tổng hợp lại và nêu hướng giải
quyết.


Khai báo thêm biến Dem để đếm số lần
thực hiện tráo đổi trong dãy


? Có thể sửa chương trình như thế nào
để có thể đếm được số lần tráo đổi trong
dãy




A[i]:=Random(300)-Random(300);


For i:=1 To n Do Write(A[i]); {In
ra mang vua tao}


Writeln;


For j:= n DownTo 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 duoc sap xep:’);
For i:=1 To n Do


Write(A[i]:7);
Writeln;
Readln;
<b>End.</b>


HS sửa lỗi chương trình (nếu có) và chạy
chương trình. Tính thời gian chạy thử
chương trình.



HS trả lời


HS sửa lại chương trình cho phù hợp khi
cho thêm đoạn chương trình và chương
trình.


HS trả lời:


Khởi tạo biến Dem:=0;


So sánh các giá trị trong mảng với nhau,
nếu xảy ra trường hợp A[i]>A[i+1] thì
đổi chỗ, khi đó tăng biến đếm lên 1 lần.
Cụ thể chương trình sau khi sửa lại là:
<b>Uses Crt;</b>


<b>Const nmax=250;</b>


<b>Var A: Array[1..nmax] of Integer;</b>
n, i, j, t, Dem: Integer;


<b>Begin</b>
Clrscr;
Randomize;


Write(‘Nhap n= ’); Readln(n);
{Tao ngau nhien mang gom n so
nguyen}


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

GV theo dõi và hướng dẫn HS sửa lại


chương trình cho đúng, sau đó u cầu
HS soát lỗi chương trình và chạy lạic
hương trình với những bộ dữ liệu khác
nhau. Tính thời gian chạy chương trình



A[i]:=Random(300)-Random(300);


For i:=1 To n Do Write(A[i]); {In
ra mang vua tao}


Writeln;
Dem:=0;


For j:= n DownTo 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;
Dem:=Dem+1;
End;


Writeln(‘Day so duoc sap xep:’);
For i:=1 To n Do


Write(A[i]:7);


Writeln;


Write(‘Có ’,Dem,’ lan trao doi
trong mang vưa nhap’);


Readln;
<b>End.</b>


HS soát lỗi và chạy lại chương trình,
theo dõi kết quả nhận được


<b>Hoạt động 2: Tìm hiểu bài tốn 2</b>
GV u cầu HS khởi động Pascal, giải


bài toán 2 trang 66.


Bài toán: Đọc và phân tích lời giải, từ dó
xây dưụng được chương trình hồn
chỉnh giải bài toán sau


<i>Cho mảng A gồm n phần tử. Hãy viết</i>
<i>chương trình tạo mảng B[1..n], trong đó</i>
<i>B[i] là tổng của I phần tử đầu tiên trong</i>
<i>mảng A.</i>


? Input, Output của bài tốn
Ý tưởng giải bài tốn?


GV phân tích để HS đưa ra được cách
tạo mảng B thoả mãn yêu cầu của đề


Có thể sử dụng 2 vòng For lồng nhau, 1
vòng For duyệt theo các phần tử của
mảng B, một vòng For duyệt i phần tử
đầu của mảng A, tính tổng và gán cho
phần tử thứ i của mảng B


GV yêu cầu HS gõ chương trình trong
sách giáo khoa


HS khởi động Pascal


HS trả lời


Input: Mảng A gồm N phần tử


Output: Mảng B thoả mãn
B[i]=B[i-1]+A[i]


Ban đầu nhập N và dãy gồm N phần tử
(sử dụng mảng 1 chiều)


Tạo ngẫu nhiên mảng A có n phần tử
Tạo mảng B.


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

GV quan sát lớp, phát hiện ra những lỗi
mà học sinh hay mắc phải và nêu cách
sửa trước lớp.


Yêu cầu HS chạy chương trình với nhiều
bộ dữ liệu khác nhau.



? Theo em, trong chương trình trên, để
tạo được mảng B thì máy phải thực hiện
bao nhiêu phép tính cộng?


? Có cách nào thực hiện nhanh hơn
<b>b/</b>


GV yêu cầu HS tắt màn hình và theo dõi
GV phân tích để học sinh nhận thấy
được phần tử B[i] nhận được bằng tổng
của B[i-1] và A[i]. Tức là
B[i]=B[i-1]+A[i];


Vậy khi đã có mảng A rồi, ta có
B[1]=A[1]


B[2]=A[1]+A[2]=B[1]+A[2]
B[3]=A[1]+A[2]+A[3]=B[2]+A[3]
:


B[i]=B[i-1]+A[i]


Từ đó hình thành nên chương trình
GV hướng dẫn để HS sửa lại chương
trình.


<b>Const nmax=100;</b>


<b>Type </b> MyArray=Array[1..nmax] of


Integer;


<b>Var i, j, n: Byte;</b>
A, B:MyArray;
<b>Begin</b>


Clrscr; Randomize;
Write(‘Nhap n= ’);
Readln(n);


For i:=1 To n Do


A[i]:=Random(300)-Random(300);
For i:=1 To n Do Write(A[i]:4);
Writeln;


{Bat dau tao B}
For i:=1 To n Do
Begin


B[i]:=0;


For j:=1 To i Do B[i]:=B[i]
+A[j];


End;


{Ket thuc tao B}


For i:=1 o n Do Write(B[i]:4);


Readln;


<b>End.</b>


- HS chạy chương trình với những bộ dữ
liệu khác nhau.


- Tính thời gian thực hiện chương trình
HS trả lời


- MT phải thực hiện n(n+1)/2 phép tính
cộng


(Vịng lặp For thứ nhất n lần, vòng lặp
For thứ hai 1+2+3+…+n=(n+1)/2 lần,
tổng là n(n+1)2 lần)


HS theo dõi, nghe giảng


HS sửa lại chương trình theo sự hướng
dẫn của giáo viên


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

? Em có nhận xét gì về chương trình đã
được sửa trong chương trình trên, máy
tính phải thực hiện bao nhiêu phép tính
cộng?


? So sánh với chương trình cũ


Chú ý: Tuy tốc độ tính tốn của máy tính


có nhanh nhưng có giới hạn, vì vậy, khi
giải bài tốn trên máy tính, ta cần chọn
thuật tốn sao cho thời gian thực hiện
càng nhỏ thì cành tốt


<b>Const nmax=100;</b>


<b>Type </b> MyArray=Array[1..nmax] of
Integer;


<b>Var i, j, n: Byte;</b>
A, B:MyArray;
<b>Begin</b>


Clrscr; Randomize;
Write(‘Nhap n= ’);
Readln(n);


For i:=1 To n Do


A[i]:=Random(300)-Random(300);
For i:=1 To n Do Write(A[i]:4);
Writeln;


{Bat dau tao B}
For i:=1 To n Do


B[i]:=B[i-1]+A[j];
{Ket thuc tao B}



For i:=1 o n Do Write(B[i]:4);


Readln;
<b>End.</b>


HS trả lời


Chương trình ngắn gọn hơn


Máy tính phải thực hiện n-1 phép tính
cộng


Chương trình sửa máy tính phải thực
hiện ít phép tính cộng hơn nên thời gian
thực hiện nhanh hơn


<b>IV. Củng cố bài</b>



- Nhận xét chất lượng thực hành

<b>V. Bài tập về nhà</b>



- Làm lại bài thực hành hôm nay.


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

<i>Ngày soạn:</i> Tuần: 23


<i>Ngày giảng: </i> Tiết: 29


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


<b>I. Mục đích, yêu cầu</b>



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


- Nắm được các kiến thức bài 11.


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


- Viết được chương trình đơn giản với một NNLT đã chọn.


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


- Tạo sự ham muốn giải các bài tập băng lập trình.
<b>II. Phương pháp</b>


- Kết hợp phương pháp dạy học, chủ yếu là thuyết trình và vấn đáp, lấy ví dụ
minh hoạ, mở rộng và củng cố vấn đề bằng kiểm tra đánh giá.


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


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, tài liệu tham khảo.


<i><b>2. Chuẩn bị của học sinh:</b></i> Làm bài tập được giao, vở ghi, SGK.
<b>III. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


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



- Kiểm tra trong quá trình làm bài tập.


<i><b>3. Nội dung bài giảng </b></i>


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


<b>Hoạt động 1: Hướng dẫn trả lời câu hỏi 1,2,4 trang 79- SGK</b>


<i><b>GV:</b></i> Yêu cầu học sinh đọc các câu hỏi
1,2,4 và suy nghĩ trả lời.


<i><b>HS:</b></i><b> Nhớ lại kiến thức đã học, trả lời.</b>


<b>Câu 1: Tại sao mảng là kiểu dữ liệu có</b>
<b>cấu trúc?</b>


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


Mảng là kiểu dữ liệu có cấu trúc bởi vì
mảng là kiểu có cấu trúc được đề cập tới
sớm nhất trong các NNLT. Nó được xây
dựng từ những kiểu dữ liệu đã có theo
quy tắc khn dạng do NNLT cung cấp.
Nó được dùng để chỉ định một nhóm các
đối tượng cùng một tính chất nào đó.
Chẳng hạn, vectơ là một nhóm số mà
mỗi số ta có thể xác định khi biết chỉ số.
Như vậy khi khai báo mảng phải chỉ ra
kiểu dữ liệu các phần tử và kiểu chỉ số.


<b>Câu 2: Tại sao phải khai báo kích</b>
<b>thước của mảng?</b>


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

Chúng ta phải khai báo kích thước của
mảng để 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>Câu 4: Tham chiếu đến phần tử của</b>
<b>mảng bằng cách nào?</b>


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


Tham chiếu đến phần tử của mảng được
xđ bởi tên mảng cùng chỉ số.


- Mảng một chiểu tên mảng đến cặp []
và chỉ số được đặt trong cặp [].
- Mảng hai chiều chỉ số gồm 2 chiều


ngăn cách nhau bởi dấu phẩy.
<b>Hoạt động 2: Hướng dẫn bài 5</b>


<i><b>GV:</b></i> Đưa ra bài tập. Hướng dẫn học sinh
làm theo các ý chính như sau:


- Nhập n đảm bảo 0<n<100


- Nhập từng phần tử đảm bảo
a[i]<=1000


- Kiểm tra dãy a nhập vào có phải là


một cấp số cộng hay khơng và đưa
ra màn hình thơng báo “a là cấp số
cộng” hoặc “a không là cấp số
cộng”.


- Kiểm tra:
Lấy d=a[2]-a[1];


a là cấp số cộng nếu thoả mãn:
a[i]=a[1]+(i-1)d


hoặc ĐK a[i]-a[i-1]=d với 1<i<=n


<i><b>HS:</b></i> Nhớ lại kiến thức toán và viết
chương trình.


program cscong;
uses crt;


var


a:array[1..100]of integer;
i,n,d,dem:integer;


begin
clrscr;


write('n=');readln(n);
for i:=1 to n do



begin


write('a[',i,']=');
readln(a[i]);


end;


for i:=1 to n do
write(a[i]:4);
writeln;


d:=a[2]-a[1]; dem:=0;
for i:=3 to n do


if a[i]-a[i-1]<> d then dem:=dem+1;
if dem>0 then


write('a khong la cap so cong')
else


write('a la cap so cong');
readln;


end.
readln
end.


<b>Hoạt động 3: Hướng dẫn hs về nhà làm bài 6,7,8,9</b>

<b>IV. Củng cố bài</b>




<b>V. Bài tập về nhà</b>



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

<i>Ngày soạn:</i> Tuần:


<i>Ngày giảng:</i> Tiết: 30


<b>§11.</b>

<b>KIỂU XÂU </b>


<b>I. Mục đích, u cầu</b>


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


- Học sinh nắm được xâu là một dãy kí tự (có thể coi xâu là mảng một chiều).
- Biết cách khai báo xâu, truy cập phần tử của xâu.


- Sử dụng được một số thủ tục, hàm thông dụng về xâu.
- Cài đặt được một số chương trình đơn giản có sử dụng xâu.


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


- Khai báo kiểu xâu, so sánh hai xâu, nhận biết và bước đầu sử dụng được các
hàm, thủ tục chuẩn.


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


- Giúp học sinh hiểu rõ tầm quan trọng của kiểu mảng, Làm cho hs thêm u
thích lập trình, u thích mơn học hơn.


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


- Kết hợp pp giảng dạy thuyết trình, vấn đáp, dùng phương tiện trực quan.


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


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, tài liệu tham khảo, máy chiếu,
máy tính, chương trình minh hoạ.


<i><b>2. Chuẩn bị của học sinh:</b></i> Đọc trước bài mới, vở ghi lý thuyết, SGK.
<b>IV. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


<i><b>2. Kiểm tra bài cũ </b></i>
<i><b>3. Nội dung bài giảng</b></i>


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


<b>Hoạt động 1: Tìm hiểu ý nghĩa của xâu kí tự, cách khai báo</b>


<i><b>GV</b></i>: 'Viet Nam' có phải là dữ liệu kiểu
mảng một chiều khơng, Vì sao?


<i><b>HS:</b></i> Suy nghĩ, trả lời


<i><b>GV</b></i>: 'Viet Nam' là dữ liệu kiểu mảng một
chiều. Tuy nhiên nó khơng là mảng kiểu
số mà là mảng phi số hay gọi cách khác
là : KIỂU XÂU



<i><b>GV</b></i>: Đưa ra khái niệm


<i><b>GV</b></i>: Thuyết trình về khai báo kiểu xâu.


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

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


<i><b>HS:</b></i> Suy nghĩ, trả lời.
- 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.


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


<i><b>HS:</b></i> 255


- Ví dụ: ‘HA NOI’


- Xâu có 6 ký tự, dấu cách là một ký tự.



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


<i><b>HS:</b></i>


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


<i><b>GV</b></i>: Tham chiếu đến từng ký tự của
xâu. 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ụ.


<i><b>HS:</b></i> - Giống cấu trúc chung khi tham
chiếu: tên biến[chỉ số]


- Ví dụ: st[2].



<b>1. Khai báo</b>


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


VD: var hoten:string[30];


<b>- Tham chiếu đến từng kí tự trong xâu:</b>
<b>tên_biến[chỉ_số]</b>


<b>Hoạt động 2: Các thao tác xử lí xâu</b>


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


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

đầu của B thì A nhỏ hơn B.


<i>* Một số thủ tục chuẩn dùng để sử lí</i>
<i>xâu.</i>


- <b>Delete(St,vt,n) Xố n kí tự của xâu st</b>
bắt đầu từ vị trí vt.


- <b>Insert(S1,S2,vt) Chèn xâu S1 vào</b>
xâu S2 bắt đầu từ vị trí vt của S2.


- <b>Val(St,x,m) Đổi giá trị xâu St thành</b>
số ghi giá trị vào biến X, nến khơng đổi
được thì vị trí gây lỗi ghi trong m, nếu
đổi thành cơng thì m = 0



- <b>Str(X,St) Chuyển số X thành xâu kí</b>
tự lưu trong St.


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


- Copy(St, vt, n) Sao chép từ xâu St n kí
tự từ vị trí vt.


- Pos(S1, S2) Tìm vị trí xuất hiện đầu
tiên của S1 trong S2.


- Length(st) Cho độ dài của xâu St.
- Upcase(ch) Cho chữ cái viết hoa tưng
ứng với chữ thường trong ch


<b>V. Củng cố bài</b>



- Qua tiết học này, ta biết được thêm một kiểu dữ liệu có cấu trúc .

<b>VI. Bài tập về nhà</b>



- Làm các bài tập số 10, 11 trang 80 trong SGK.
- Xem trước nội dung tiếp theo của bài.


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

<i>Ngày soạn:</i> Tuần:


<i>Ngày giảng:</i> Tiết: 31


<b>§11.</b>

<b>KIỂU XÂU (Tiếp)</b>


<b>I. Mục đích, yêu cầu</b>



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


- Cài đặt được một số chương trình đơn giản có sử dụng xâu.


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


- Khai báo kiểu xâu, so sánh hai xâu, nhận biết và bước đầu sử dụng được các
hàm, thủ tục chuẩn.


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


- Giúp học sinh hiểu rõ tầm quan trọng của kiểu mảng, Làm cho hs thêm u
thích lập trình, u thích mơn học hơn.


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


- Kết hợp pp giảng dạy thuyết trình, vấn đáp, dùng phương tiện trực quan.
<b>III.Chuẩn bị của giáo viên và học sinh</b>


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, tài liệu tham khảo, máy chiếu,
máy tính, chương trình minh hoạ.


<i><b>2. Chuẩn bị của học sinh:</b></i> Đọc trước bài mới, vở ghi lý thuyết, SGK.
<b>IV. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.



<i><b>2. Kiểm tra bài cũ </b></i>
<i><b>3. Nội dung bài giảng</b></i>


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


<b>Hoạt động 1: Ví dụ 1</b>


<i><b>GV</b></i>: u cầu hs đọc ví dụ 1 và xác định
bài tốn.


<i><b>HS:</b></i> trả lời


input: a,b(lưu họ tên 2 người)


output: Nếu độ dài xâu a>b thì đưa ra a,
Nếu độ dài xâu a<=b thì đưa ra b


<i><b>GV</b></i>: Nhắc lại cấu trúc hàm Length và
cho ví dụ.


<i><b>HS:</b></i> suy nghĩ, trả lời.


<i><b>GV</b></i>: Chạy chương trình VD1 và yc hs
giải thích câu lệnh.


<b>3. Một số ví dụ</b>


<i><b>Ví dụ 1.</b></i>



var a,b:string;
begin


write('Nhap ho ten thu
nhat:');


readln(a);


write('Nhap ho ten thu hai:');
readln(b);


if length(a)>length(b) then
write(a) else write(b);


readln
end.


<b>Hoạt động 2: Ví dụ 2</b>


<i><b>GV</b></i>: Yêu cầu hs đọc ví dụ 2 và xác định
bài toán.


<i><b>HS:</b></i> trả lời


var a,b:string;
x:byte;
begin


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

input: Xâu a, b bất kì



output: So sánh kí tự đầu của xâu thứ
nhất và kí tự cuối của xâu thứ 2 và thơng
báo “Trùng nhau” hoặc “Khác nhau”.


<i><b>GV</b></i>: Chạy chương trình VD1 và yc hs
giải thích câu lệnh.


readln(a);


write('Nhap ho ten thu hai:');
readln(b);


x:=length(b);
if a[1]=b[x] then
write('Trung nhau')
else write('Khac nhau');
readln


end.


<b>Hoạt động 2: Ví dụ 3</b>


<i><b>GV</b></i>: Yêu cầu hs đọc ví dụ 3 và xác định
bài toán.


<i><b>HS:</b></i> trả lời
input: Xâu a


output: Đưa ra xâu a theo thứ tự ngược
lại.



<i><b>GV</b></i>: Chạy chương trình VD3 và yc hs
giải thích câu lệnh.


var a:string;
i,k:byte;
begin


write('Nhap xau:');
readln(a);


write('Nhap ho ten thu hai:');
readln(b);


k:=length(a);


for i:=k downto 1 do
write(a[i]);


readln
end.


<b>Hoạt động 2: Ví dụ 4</b>


<i><b>GV</b></i>: Yêu cầu hs đọc ví dụ 4 và xác định
bài tốn.


<i><b>HS:</b></i> trả lời
input: Xâu a



utput: Xâu a khơng có dấu cách


<i><b>GV</b></i>: Xâu rỗng viết thế nào?


<i><b>HS:</b></i> ‘’


<i><b>GV</b></i>: Chạy chương trình VD4 và yc hs
giải thích câu lệnh.


<i><b>GV</b></i>: VD5 theo dõi SGK.


var a,b:string;
i,k:byte;
begin


write('Nhap xau:');
readln(a);


k:=length(a);
b:=’’;


for i:=1 to k do


if a[i]<>’ ’ then b:=b+a[i];
write(‘Ket qua: ’ ,b);


readln
end.


<b>V. Củng cố bài</b>




- Qua tiết học này, ta biết được thêm một kiểu dữ liệu có cấu trúc .

<b>VI. Bài tập về nhà</b>



- Làm các bài tập số 10, 11 trang 80 trong SGK.
- Xem trước nội dung tiếp theo của bài.


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

<i>Ngày soạn:</i> Tuần:


<i>Ngày giảng: </i> Tiết: 32,33


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


<b>I. Mục đích, yêu cầu</b>


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


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


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


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


- Nhập dữ liệu cho xâu, đưa ra màn hình giá trị của xâu.


- Duyệt qua tất cả các ký tự của xâu để thực hiện xử lí tương ứng với từng kí tự
đó.


- Sử dụng được các hàm và thủ tục chuẩn đã trình bày ở SGK.


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



- Góp phần hình thành và rèn luyện tư duy lập trình, tác phong của người lập
trình.


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


- Trình chiếu kết hợp đàm thoại.


- Hướng dẫn học sinh các bước thực hiện một số chương trình.
<b>II.Chuẩn bị của giáo viên và học sinh</b>


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, sắp xếp phòng máy, CT mẫu.


<i><b>2. Chuẩn bị của học sinh:</b></i> Chuẩn bị nội dung thực hành, SGK, vở bài tập.
<b>III. Tiến trình lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


<i><b>2. Kiểm tra bài cũ:</b></i> Kết hợp kiểm tra trong quá trình thực hành.


<i><b>3. Nội dung thực hành </b></i>


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


<b>Hoạt động 1: Tìm hiểu bài tốn 1</b>



<i><b>GV:</b> Giới thiệu nội dung đề bài.</i>


- 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 2 ví dụ về xâu
Palidrom và 1 ví dụ không phải là
Palidrom.


<i><b>HS:</b></i> Đọc kĩ đề bài.


Phải: 12321 abccba
Không phải: abcdea


<b>Bài 1:</b>


<b>a. Chạy chương trình:</b>


uses crt;
var i,x:byte;
a,p: string;
Begin


clrscr;


write('Nhap vao
xau:');readln(a);
x:=length(a);


p:='';


for i:=x downto 1 do
p:=p+a[i];


if a=p then


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

<i><b>GV:</b></i> Gợi ý


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


<i><b>HS:</b></i> Quan sát chương trình, suy nghĩ
phân tích để hiểu chương trình


- Kiểm tra 1 xâu có phải Palidrom hay
khơng?


- In ra: ‘xau la Palidrom’
‘Xau khong la Palidrom’


<i><b>GV:</b></i> Thực hiện chương trình để học sinh
kiểm nghiệm suy luận của mình.


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



<i><b>GV:</b></i> Cải tiến chương trình


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


- 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


<i><b>HS:</b></i> Chú ý theo dõi yêu cầu của giáo
viên, trả lời 1 số câu hỏi dẫn dắt


- Kí tự thứ I đối xứng với kí tự thứ
length()-i+1


- So sánh tối đa length() div 2


- Có thể dùng For hoặc While


- Thực hiện soạn thảo chương trình vào
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ả


else


write('Xau khong la palindrome');
readln;


End.


<b>b. Sửa lại chương trình không dùng</b>
<b>biến p</b>


uses crt;


var i,x,d:byte;
a: string;
Begin


clrscr;


write('Nhap vao
xau:');readln(a);
x:=length(a);
d:=0;


for i:=1 to x do



if a[i]<>a[x-i+1] then d:=d+1;
if d>0 then


write('Xau khong la palidrome')
else


write('Xau la palidrome');
readln;


End.


<b>Hoạt động 2: Tìm hiểu bài tốn 2</b>


<i><b>GV:</b></i> Giới thiệu đề bài.


- Chiếu nội dung đề bài lên bảng. Nêu mục
đích của bài toán.


<b>Bài 2:</b>


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

- 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 tố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?
<i><b>HS:</b></i> Đọc kỹ đề bài và trả lời


- Vào: Một xâu S.


- Ra: Số lần 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().


<i><b>GV:</b></i> Vì là bài tốn khó gv đưa ra dàn ý cho
hs làm theo.


<i><b>GV:</b></i> Yêu cầu học sinh độc lập viết chương
trình hoàn chỉnh theo thuật toán đã phát
hiện ở trên.


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


var s,s1:string;
i,j,n:integer;



dem:array['A'..'Z'] of integer;
c:char;
Begin
clrscr;
write('Nhap vao
xau:');readln(s);
n:=length(s);


for c:='A' to 'Z' do
dem[c]:=0;


s1:='';


for i:=1 to n do


if (upcase(s[i])>='A') and
(upcase(s[i])<='Z') then


s1:=s1+s[i];


for c:='A' to 'Z' do
for j:=1 to length(s1) do
if c=upcase(s1[j]) then
dem[c]:=dem[c]+1;


for c:='A' to 'Z' do
if dem[c]<>0 then
begin



write('So lan xuat hien chu
cai ',c,' la: ',dem[c]);


writeln;
end;
readln;
End.


<b>Hoạt động 3: Tìm hiểu bài tốn 3</b>


<i><b>GV:</b></i> giới thiệu đề bài


<i><b>GV:</b></i> hướng dẫn: Tìm vị trí xâu con
“<i><b>anh”</b></i> trong xâu st đã cho, xoá xâu con
này đi rồi chèn xâu <i><b>“em”</b></i> vào vị trí đó .
Lặp đi lặp lại điều này cho đến khi
khơng tìm thấy xâu <i><b>“anh”</b></i> cần thay thế
trong xâu st nữa


* Các hàm và thủ tục chuẩn đã biết đối
với kiểu xâu có thể tìm được vị trí xuất
hiện 1 xâu con, xố 1 xâu con, chèn 1
xâu con không?


<i><b>HS:</b></i> trả lời và độc lập viết CT


<b>Bài 3</b>
uses crt;
var vt:integer;
s:string;


Begin
clrscr;


write('Nhap vao xau:');
readln(s);


while pos('anh',s)<>0 do
Begin
vt:=pos('anh',s);
delete(s,vt,3);
insert('em',s,vt);
end;
write(s);
readln
End.


<b>IV. Củng cố bài</b>



- Nhận xét chất lượng thực hành

<b>V. Bài tập về nhà</b>



- Chuẩn bị nội dung bài 13: “Kiểu bản ghi”.
VI. Nhận xét rút kinh nghiệm:


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

<i>Ngày giảng:</i> Tiết: 34

<b>§11.</b>

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



<b>I. Mục đích, u cầu</b>


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



- Biết khái niệm kiểu bản ghi.


- Biết cách khai báo bản ghi, truy cập trường của bản ghi.


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


- Khai báo được kiểu bản ghi, khai báo được biến kiểu bản ghi trong ngơn ngữ
lập trình Pascal.


- Nhập xuất được dữ liệu cho biến bản ghi.
- Tham chiếu đến từng trường của kiểu bản ghi.


- Sử dụng kiểu bản ghi để giải quyết một số bài tập đơn giản.


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


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


- Kết hợp pp giảng dạy thuyết trình, vấn đáp, dùng phương tiện trực quan.
<b>III.Chuẩn bị của giáo viên và học sinh</b>


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, tài liệu tham khảo, máy chiếu,
máy tính, chương trình minh hoạ.


<i><b>2. Chuẩn bị của học sinh:</b></i> Đọc trước bài mới, vở ghi lý thuyết, SGK.
<b>IV. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>



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


- Yêu cầu lớp trưởng báo cáo sĩ số.


<i><b>2. Kiểm tra bài cũ </b></i>
<i><b>3. Nội dung bài giảng</b></i>


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


<b>Hoạt động 1: Giới thiệu về bản ghi, khai báo kiểu bản ghi.</b>


<i><b>GV:</b></i> Giáo viên đưa ra một số ví dụ để
giải thích cho học sinh hiểu về khái niệm
bản ghi.


VD:


- Bảng kết quả thi gồm những
thơng tin về các thí sinh: Số báo
danh, Họ tên, Ngày sinh, Giới
tính, Điểm Tốn, Điểm Lý, Điểm
Hoá...


- Hoá đơn bán hàng của cửa hàng:
tên hàng, đơn giá, chủng loại, số
lượng bán, đơn vị tính, người
mua, ngày bán...


Để mô tả các thông tin trên, người ta sử



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

dụng dữ liệu kiểu bản ghi


<i><b>GV:</b></i> Đặt câu hỏi.


Cách thức xác định kiểu bản ghi?


<i><b>HS: </b></i>HS trả lời


- Tên kiểu bản ghi
- Tên các thuộc tính


- Kiểu dữ liệu của mỗi trường
- Cách khai báo biến


- Cách tham chiếu đến trường.


<i><b>GV:</b></i> giải thích các thành phần trong cấu
trúc khai báo


Chú ý:


Trong cấu trúc khai báo dữ liệu kiểu bản
ghi, bắt đầu bằng Record và kết thúc là
<b>End;</b>


<i><b>HS:</b></i> Chú ý và ghi bài.


<i><b>GV:</b></i> YC hs tìm một ví dụ để minh hoạ.


<i><b>HS:</b></i><b> VD: Khai báo Record giải bài tốn</b>


quản lí HS trường THPT Bình Liêu.


<i><b>GV:</b></i> Để lưu được thông tin của nhiều
học sinh ta phải khai báo một mảng các
bản ghi.


<i><b>GV:</b></i> Hướng dẫn học sinh tham chiếu tới
trường trong bản ghi.


Ví dụ: Lop[1].Hten: Tham chiếu tới tên
của HS thứ nhất trong danh sách.


- Một bản ghi bao gồm các thành phần
(trường), mỗi trường có thể có kiểu dữ
liệu khác nhau.


<b>1. Khai báo</b>
Cấu trúc khai báo:


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


<Tên trường n>:<Kiểu trường n>
End;


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


<b>VD:</b>



Type Hocsinh=Record
Hten:String[30];
Nsinh:String[15];


Gtinh:String[5];
Toan,Ly,Hoa:Real;


End;


Var Lop: Array[1..50] Of Hocsinh;


<i><b>Tham chiếu tới trường trong bản ghi</b></i>


<Tên biến>.<Tên trường>
<b>Hoạt động 2: Gán giá trị</b>


<i><b>GV:</b></i> Ta không thể nhập, xuất dữ liệu cho
biến kiểu bản ghi như một biến thông
thường mà phải nhập, xuất dữ kiệu cho
từng trường trong bản ghi.


<i><b>GV:</b></i> phân tích ví dụ trong chương trình
xếp loại trong sách giáo khoa trang 77,
78 để HS thấy được cách nhập, xuất dữ
liệu cho biến kiểu bản ghi.


<b>2. Gán giá trị</b>


- Có hai cách gán giá trị cho biến kiểu


bản ghi


+ Dùng lệnh gán trực tiếp: Nếu A và B
là hai bản ghi cùng kiểu, ta có thể gán
giá trị của A cho B bằng câu lệnh
B:=A;


+ Gán giá trị cho từng trường: Dùng câu
lệnh gán gán giá trị cho từng trường
hoặc nhập vào từ bàn phím.


VD: Lop[1].Hten:=’Nguyen Ngoc Ha’;
Lop[1].Nsinh:=’11/12/1991’;

<b>V. Củng cố bài</b>



- Cách tạo kiểu bản ghi, khai báo biến kiểu bản ghi.
- Tham chiếu đến từng trường của biến bản ghi.
- Nhập/xuất giá trị cho biến bản ghi.


<b>VI. Bài tập về nhà</b>



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

Nhập họ và tên, điểm toán (Toan), điểm lý (Ly) của 30 học sinh trong lớp. In ra
màn hình họ tên, điểm trung bình (DTB) của 30 học sinh đó với DTB =
(TOAN+LY)/2.


- Xem nội dung phụ lục B, sách giáo khoa, trang 134: Câu lệnh With.
- Làm các bài tập trang 80 trong SGK.


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

<i>Ngày soạn: 20/02/2010</i> Tuần:



<i>Ngày giảng: 25/02/2010</i> Tiết: 35


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


<b>I. Mục đích, yêu cầu</b>


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


- Nắm được các kiến thức bài 11,12,13.


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


- Viết được chương trình đơn giản với một NNLT đã chọn.


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


- Tạo sự ham muốn giải các bài tập băng lập trình.
<b>II. Phương pháp</b>


- Kết hợp phương pháp dạy học, chủ yếu là thuyết trình và vấn đáp, lấy ví dụ
minh hoạ, mở rộng và củng cố vấn đề bằng kiểm tra đánh giá.


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


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, tài liệu tham khảo.


<i><b>2. Chuẩn bị của học sinh:</b></i> Làm bài tập được giao, vở ghi, SGK.
<b>III. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>



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


- Yêu cầu lớp trưởng báo cáo sĩ số.


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


- Kiểm tra trong quá trình làm bài tập.


<i><b>3. Nội dung bài giảng </b></i>


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


<b>Hoạt động 1: Hướng dẫn bài 6 trang 79- SGK</b>


<i><b>GV:</b></i><b> Yêu cầu học sinh đọc bài số 6 và trả</b>
lời câu hỏi.


<b>? Sử dụng kiểu dữ liệu nào và cách khai</b>
báo?


<i><b>HS:</b></i> Kiểu mảng một chiều:
Var A:array [1..100] of integer;


<i><b>GV:</b></i><b> ? Khai báo biến như thế nào?</b>


- Yêu cầu HS viết chương trình nhập
mảng A.


<i><b>HS:</b></i> Lên bảng viết CT.



<i><b>GV:</b></i> Chỉnh sửa bài làm của HS.


<i><b>GV:</b></i> Số chẵn là số như thế nào?


- Nếu có số lượng số chẵn trong dãy thì
tìm số lượng số lẻ được hay khơng?
-Nếu được thì tìm bằng cách nào?


<i><b>HS:</b></i>


- Chia hết cho 2.


- Nếu có số lượng số chẵn trong dãy thì


<b>Bài 6:</b>


program cscong;
uses crt;


var


a:array[1..100]of integer;
j,i,n,c,d:integer;


begin
clrscr;


write('n=');readln(n);
for i:=1 to n do



begin


write('a[',i,']=');
readln(a[i]);


end;
{In}


for i:=1 to n do
write(a[i]:4);
writeln;


for i:=1 to n do
begin


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

tìm số lượng lẻ bằng cách: n - số lượng
số chẵn.


<i><b>GV:</b></i> Sử dụng câu lệnh nào để viết?
- u cầu HS hồn thành chương trình
của câu a.


<i><b>HS:</b></i> If ... then...
- Lên bảng viết CT.


<i><b>GV:</b></i> Nhận xét, chỉnh sửa bài làm của
HS.


<i><b>GV:</b></i> Nêu thuật toán kiểm tra 1 số có phải
là số ngun tố hay khơng?



- u cầu HS viết chương trình dựa theo
thuật tốn.


<i><b>GV:</b></i> Sử dụng câu lệnh nào?


- Yêu cầu HS hoàn thành đoạn chương
trình câu b.


- Nhận xét, đánh giá:


- Gợi ý để HS kết hợp hai đoạn chương
trình thành một chương trình hoàn chỉnh
cho cả bài.


c:=c+1;


if a[i]>1 then
begin


j:=2;


while (j<=sqrt(a[i]))
and (a[i] mod j<>0) do j:=j+1;
if j>sqrt(a[i]) then
d:=d+1;


end;
end;



writeln('So chan: ',c, ' So
le: ',n-c);


writeln('So nguyen to:
',d);


readln;
end.
readln
end.


<b>Hoạt động 2: Hướng dẫn hs về nhà làm bài 7,8,9</b>
<b>Hoạt động 3: Kiểm tra 15 phút</b>


<i><b>Khoanh tròn phơng án A, B, C, D mà bạn cho là đúng nhất.</b></i>


Câu 1 : Các lệnh nào trong ngôn ngữ lập trình pascal dùng để lặp:


A. While…do, if…then C. For …to…do, if…then
B. While …do, for…to(downto)…do D. If…then, while …do


C©u 2 : <sub>Trong Pascal, biến đếm của lệnh For…to(downto)…do phải có kiểu dữ liệu là:</sub>
A. KiĨu thùc B. KiĨu nguyªn hoặc thực


C. Kiểu nguyên hoặc thực hoặc kí tự D. Kiểu nguyên hoặc kí tự


Cõu 3 : Cụng thức nào sau đây là đúng (Trong đó S, S1, S2 là kiểu chuỗi, n là kiểu số).
A. Pos(S, S1, S2); B. Insert(S, S1, n);


C. Copy(S, S1, n); D. Delete(S, 2, Hoc);



Câu 4 : Cho n là biến nguyên, lệnh n:=length(Tin_hoc); write(n); Kết quả in ra là:


A. 5 B. 6 C. 7 D. 8


C©u 5 : <sub>Cho t:= ‘Tin_hoc’; để có kết qủa là xâu ‘Tin’ ta thực hiện:</sub>
A. Delete(t,1,3); B. Delete(t,3,1);
C. Delete(t,4,4); D. Delete(t,4,3);
C©u 6 : <sub>Trong ngơn ngữ Pascal, từ khố VAR dùng để:</sub>


A. Khai báo tên chương trình B. Khai báo biến
C. Khai báo thư viện D. Khai báo hằng


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

A. S: string; s: real;


C. S: byte; s: char;


C©u 8 : <sub>Trong ngơn ngữ lập trình Pascal, Với khai báo mảng </sub>


X: Array[1..100,1..100] of integer; thì việc truy xuất đến các phần tử như sau:


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


C©u 9 : <sub>Cho mảng một chiều: </sub> <sub>Hỏi a[3]=?</sub>


A. 5 B. 3 C. 6 D. 4


C©u 10 : <sub>Trong ngơn ngữ lập trình Pascal, để in một xâu kí tự ra màn hình theo thứ tự </sub>
ngược lại của các kí tự trong xâu (Vd: abcd thành dcba), đoạn chương trình nào
sau đây thực hiện việc này?



A. A. For i:=1 to length(S) do write(S[i]);
B. B. For i:=length(S) downto 1 do write(S[i]);
C. C. For i:=length(S) downto 1 do write(S]);
D. D. For i:=1 to length(S) div 2 do write(S[i]);


<b>IV. Củng cố bài</b>


<b>V. Bài tập về nhà</b>



- Làm lại bài tập hôm nay và làm thêm bài tập SBT.
- Chuẩn bị trước nội dung bài 14 và 15.


<b>VI. Nhận xét rút kinh nghiệm:</b>



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

<i>Ngày soạn:</i> Tuần:


<i>Ngày giảng:</i> Tiết: 36


<b>§14.</b>

<b>KIỂU DỮ LIỆU TỆP</b>


<b>§15. THAO TÁC VỚI TỆP</b>


<b>I. Mục đích, yêu cầu</b>


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


- Biết khái niệm và vai trò của kiể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 tệp văn bản.


<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 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 tệp
một cách khoa học, phòng chống mất mát hoặc nhiễm virut.


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


- Kết hợp pp giảng dạy thuyết trình, vấn đáp, dùng phương tiện trực quan.
<b>III.Chuẩn bị của giáo viên và học sinh</b>


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, tài liệu tham khảo, máy chiếu,
máy tính, bài giảng trên slide.


<i><b>2. Chuẩn bị của học sinh:</b></i> Đọc trước bài mới, vở ghi lý thuyết, SGK.
<b>IV. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


<i><b>2. Kiểm tra bài cũ </b></i>
<i><b>3. Nội dung bài giảng</b></i>



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


<b>Hoạt động 1: Vai trò của kiểu tệp.</b>


<i><b>GV:</b></i> Đặt câu hỏi, nêu vấn đề.


Ở những bài tập thực hành các em quan
sát, sau khi chạy chương trình có lưu
được kết quả cho lần chạy tiếp theo hay
khơng?


<i><b>HS:</b></i> Sau khi chạy chương trình ở các bài
trước ta thấy kết quả in trên màn hình
nhưng muốn sử dụng kết quả đó về sau
thì khơng được.


<i><b>GV:</b></i> Vậy trong quá trình chạy chương
trình, theo em dữ liệu được lưu ở đâu?


<i><b>HS:</b></i> Bộ nhớ trong (RAM).


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

dữ liệu lớn, có yêu cầu lưu trữ để xử lí


nhiều lần, cần có kiểu tệp (file). <b>I. Kiểu dữ liệu tệp1. Vai trò của kiểu tệp</b>


- Dữ liệu kiểu tệp có những đặc điểm
sau: + Được lưu trữ lâu dài ở bộ nhớ
ngoài (đĩa từ, CD, . . .) và không bị mất
khi tắt nguồn điện vào máy



+ Lượng thông tin lưu trữ trên tệp có thể
rất lớn và chỉ phụ thuộc vào dung lượng
đĩa.


<b>Hoạt động 2: Phân loại tệp và thao tác với tệp</b>


<i><b>GV:</b></i> Giới thiệu cho HS biết hai cách
phân loại tệp.


- Tệp văn bản: là tệp mà dữ liệu được
ghi dưới dạng các kí tự theo bảng mã
ASCII. Khi truy cập tệp, con trỏ tệp
được di chuyển trên các dòng tuần tự từ
đầu dòng về cuối dòng và từ dòng đầu
đến dòng cuối của tệp. Cuối mỗi dịng có
nhóm kí tự báo hiệu hết dòng. Truy cập
tuần tự


<i><b>GV:</b></i> ? Hãy lấy VD về tệp văn bản


<i><b>HS:</b></i>Sách, tài liệu,…


- Tệp cấu trúc: là tệp mà các thành phần
của nó được tổ chức theo 1 cấu trúc nhất
định. Cách truy cập tệp thường là truy
cập trực tiếp. Bằng cách xác định trực
tiếp vị trí của dữ liệu đó


<i><b>GV:</b></i> ? Hãy lấy VD về tệp cấu trúc



<i><b>HS: </b></i>Hình ảnh, âm thanh,…


<i><b>GV:</b></i> Có hai thao tác cơ bản khi làm việc
với tệp là ghi dữ liệu vào tệp và đọc dữ
liệu từ tệp.


<b>2. Phân loại tệp và thao tác với tệp</b>
Hai cách phân loại tệp:


- Theo cách tổ chức dữ liệu
+ Tệp văn bản


+ Tệp có cấu trúc


- Theo cách thức truy cập
+ Tệp truy cập tuần tự
+ Tệp truy cập trực tiếp


Hai thao tác cơ bản đối với tệp là ghi dữ
liệu vào tệp và đọc dữ liệu từ tệp


<b>Hoạt động 3: Khai báo</b>


<i><b>GV:</b></i> Chỉ xét cách khai báo, thao tác với
tệp văn bản. Giới thiệu cấu trúc chung
của khai báo biến tệp và giải thích.


<b>II. Thao tác với tệp</b>
<b>1. Khai báo</b>



Var <tênbiếntệp>:TEXT;
Trong đó:


- <tên biến tệp>: phải tuân thủ theo quy
tắc đặt tên.


VD: var f1,f2: text;
<b>Hoạt động 4: Thao tác với tệp</b>


<i><b>GV:</b></i> Các thao tác với tệp chia thành bốn
nhóm :


Gắn tên tệp; Mở tệp;Vào/Ra dữ liệu;
Đóng tệp.


<i><b>GV: </b></i>Giới thiệu cấu trúc chung của từng


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

thao tác và giải thích.
a. Gắn tên tệp


Để thao tác với tệp, trước hết phải gán
tên tệp cho biến tệp bằng câu lệnh :
<b>ASSIGN(</b>< Tên biến tệp>,<Tên tệp>);


Trong đó Tên tệp là biến xâu hoặc
hằng xâu.


<i><b>Ví dụ 1 </b></i>Giả thiết có biến xâu MYFILE
và cần gán biến tệp F2 với tệp có tên


DULIEU.DAT. Việc gán tên tệp được
thực hiện bằng các câu lệnh ?


<i><b>Ví dụ 2 </b> Để chuẩn bị thao tác với tệp có</i>
tên là INP.DAT trên thư mục gốc đĩa C:
ta dùng các câu lệnh sau để gắn nó với
tệp F3?


b. Mở tệp


Tệp có thể dùng để chứa kết quả ra
hoặc dữ liệu vào. Trước khi mở tệp, biến
tệp phải được gán tên tệp bằng thủ tục
ASSIGN.


Câu lệnh mở tệp để ghi kết quả có
dạng :


<b>REWRITE(<Tên biến tệp>);</b>


Khi thực hiện lệnh REWRITE(F3),
nếu trên thư mục gốc C:\ chưa có tệp


KQ.DAT, thì tệp sẽ được tạo với nội
dung rỗng. Nếu tệp này đã có, thì nội
dung của nó sẽ bị xố để chuẩn bị ghi
thơng tin mới.


Để chuẩn bị đọc dữ liệu từ tệp đã có
ta mở tệp bằng câu lệnh :



<b>RESET(<Tên biến tệp>); </b>
c. Đọc/ghi tệp văn bản


<b> Tệp định kiểu mở bằng thủ tục</b>
REWRITE chỉ có thể ghi dữ liệu bằng
thủ tục WRITE. Câu lệnh ghi có dạng :
<b>WRITE(<Tên biến tệp>,<Tên Biến >);</b>
Nếu tệp được mở bằng thủ tục
RESET thì có thể đọc thông tin. Câu
lệnh đọc có dạng:


<b>READ(<Tên biến tệp>,<Tên biến >);</b>
Yêu cầu học sinh cho ví dụ và giải thích
d. Đóng tệp


Sau khi làm việc xong với tệp cần
phải đóng tệp. Việc đóng tệp là đặc biệt
quan trọng sau khi ghi thông tin vào tệp.
Câu lệnh đóng tệp có dạng :


<b>CLOSE(<Tên biến tệp>);</b>


<b>a. Gắn tên tệp</b>


<b>ASSIGN(< Tên biến tệp>,<Tên tệp>);</b>
Trong đó Tên tệp là biến xâu hoặc hằng
xâu.


<b>b. Mở tệp</b>



Để đọc : RESET(<Tên biến tệp>);
Để ghi : REWRITE(<Tên biến tệp>);


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


<b> READ(<Tên biến tệp>,<danh sách</b>
<i>biến>);</i>


Ghi :


<b>WRITE(<Tên biến tệp>, <danh sách kêt</b>
<i>quả>);</i>


<b>d. Đóng tệp</b>


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

Một tệp, sau khi đóng có thể mở lại.
Khi mở lại tệp, nếu vẫn dùng biến tệp cũ
thì không cần thiết phải dùng thủ tục
ASSIGN gán lại tên tệp.


<i><b>HS:</b></i> Chú ý nghe giảng, ghi bài.


<i><b>GV:</b></i> Giới thiệu HS biết hai hàm chuẩn
và ý nghĩa của nó.


<i><b>Một số hàm và thủ tục chuẩn thường</b></i>
<i><b>dùng trong thao tác tệp</b></i>



<b>Hàm lơ gíc EOF(<Tên biến tệp>); Cho</b>
giá trị <b>True</b> nếu con trỏ tệp đang chỉ tới
cuối tệp.


<b>Hàm lơgíc EOFLN(<Tên biến tệp>)</b>


Cho giá trị <b>True</b> nếu con trỏ tệp đang chỉ
tới cuối dòng.


<b>V. Củng cố bài</b>



Nêu đặc điểm của kiểu dữ liệu tệp


Hãy cho biết những khác biệt giữa tệp định kiểu và tệp văn bản.
Cho biết các thao tác cơ bản khi làm việc với tệp.


Sơ đồ làm việc với tệp dùng để nhập thông tin phải có những lệnh cơ bản nào?
Các thao tác với tệp được mơ tả trong hình16


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.


<b>VI. Bài tập về nhà</b>



-

Về nhà xem trước VD bài 16.
VII. Nhận xét rút kinh nghiệm:


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



WRITE(<Tªn biÕn tƯp>,<ds ket qua>);


CLOSE(<Tªn biÕn>);
tƯp>);


Ghi §äc


<i><b>Hình 16</b></i>. Sơ đồ làm việc với tệp


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

<i>Ngày soạn:</i> Tuần:


<i>Ngày giảng:</i> Tiết: 37


<b>§16.</b>

VÍ DỤ LÀM VIỆC VỚI TỆP



<b>I. Mục đích, yêu cầu</b>


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


- Củng cố các kiến thức cơ bản làm việc với tệp: Gắn tên tệp, mở tệp, đọc/ghi dữ
liệu, đóng tệp thơng qua các ví dụ.


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


- Rèn luyện các kỹ năng thao tác với tệp.


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


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



- Kết hợp pp giảng dạy thuyết trình, vấn đáp, dùng phương tiện trực quan.
<b>III.Chuẩn bị của giáo viên và học sinh</b>


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, tài liệu tham khảo, máy chiếu,
máy tính, bài giảng trên slide.


<i><b>2. Chuẩn bị của học sinh:</b></i> Đọc trước bài mới, vở ghi lý thuyết, SGK.
<b>IV. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


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


- Kiểm tra trong q trình làm ví dụ.


<i><b>3. Nội dung bài giảng</b></i>


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


<b>Hoạt động 1: Ví dụ 1</b>


<i><b>GV:</b></i> Gọi học sinh đọc đề bài


<i><b>HS:</b></i> Đọc bài



<i><b>GV:</b></i> Tóm tắt bài


Một trường tổ chức cắm trại.


+ Trại thầy hiệu trưởng ở gốc toạ độ
(0,0)


+ Các trại có toạ độ (x,y) được lưu
trong tệp TRAI.TXT


+ Tính khoảng cách từ trại thầy hiệu
trưởng đến các trại và đưa kết quả
đó màn hình.


<i><b>GV:</b></i> Phân tích lại bài toán và gọi
học sinh nêu ý tưởng làm bài toán.


<i><b>HS:</b></i>


- Cần khai báo 1 biến tệp để gán nó
cho tệp TRAI.TXT


- Mở tệp TRAI.TXT để đọc các
thơng số (x,y)


VD1:


Chương trình:


Program Khoang_cach;


Var


T: text;
D: real;
x,y: integer;
Begin


Assign(T,’TRAI.TXT’);
Reset(T);


While not eof(T) do
Begin


Read(T,x,y);
D:=sqrt(x*x+y*y);


Writeln(‘Khoang cach la: ‘,D);
End;


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

- Tính khoảng cách d


- Cho hiện khoảng cách ra màn
hình.


<i><b>GV:</b></i> Viết (chiếu) chương trình lên
bảng và hướng dẫn. Chú thích các
dịng hướng dẫn hs hiểu ý nghĩa các
câu lệnh. Chạy chương trình.


<b>Hoạt động 2: Ví dụ 2</b>



<i><b>GV:</b></i> u cầu học sinh tóm tắt ví dụ 2


<i><b>HS:</b></i> tóm tắt


- Cho 3 điện trở có các giá trị lưu
trong tệp RESIST.DAT.


- được mắc như sơ đò (hình).


- Tính điện trở tương đương của các
mạch và lưu vào tệp RESIST.EQU.


<i><b>GV:</b></i> Treo bảng phụ


Chi học sinh thành 4 nhóm u cầu
Nhóm 1 +2: Viết cơng thức tính
điện trỏ tương đương của từng đoạn
mạch.


Nhóm 3: nêu ý tưởng làm bài tốn


<i><b>HS:</b></i> Chia nhóm và thực hiện.
* Nhóm 1+2:


Mạch 1: RI=


3
*
1


3
*
2
2
*
1
3
*
2
*
1
<i>R</i>
<i>R</i>
<i>R</i>
<i>R</i>
<i>R</i>
<i>R</i>
<i>R</i>
<i>R</i>
<i>R</i>



Mạch 2: RII=<i><sub>R</sub>R</i><sub>1</sub>1*<i>R<sub>R</sub></i>2<sub>2</sub>


 +R3


Mạch 3: RIII=<i><sub>R</sub>R</i><sub>1</sub>1*<i>R<sub>R</sub></i>3<sub>3</sub>


 +R2



Mạch 4: RIV=<i><sub>R</sub>R</i><sub>3</sub>3*<i>R<sub>R</sub></i>2<sub>2</sub>


 +R1


M ạch 5: RV=R1+R2+R3
Nhóm 3: Nêu ý tưởng


- Mở tệp RESIST.DAT để đọc các
thông số R1, R2, R3


- Tính các điện trở tơng đơng


- Lu các điện trở tơng đơng vừa tính
đợc v tp RESIST.EQU


<i><b>GV:</b></i> Chuẩn bị chơng trình trên máy
tính. Hớng dẫn học sinh


VD2:
Chơng trình
Program dientro;
Var


f1,f2: text;


R1, R2, R3: Real;
i: integer;


A:array[1..5] of real;


Begin


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


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


While not eof(f1) do
Begin


Readln(f1, R1, R2, R3);


A[1]:=R1*R2*R3/(R1*R2+R2*R3+R1*R3);
A[2]:=R1*R2/(R1+R2) + R3


A[3]:=R1*R3/(R1+R3) + R2
A[4]:=R3*R2/(R3+R2) + R1
A[5]:=R1+R2+R3;


For i:=1 to 5 do write(f2,A[i]:9:3,’ ‘);
Writeln(f2);


End;
Close(f1);
Close(f2);
End.


<b>V. Củng cố bài</b>


<b>VI. Bài tập v nh</b>




- các em chuẩn bị các câu hỏi từ 1->4 trang 89 SGK.


- Làm các bài tập trong sách bài tập chuẩn bị giờ sau làm bài tập.


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

<i>Ngày soạn: </i> Tuần:


<i>Ngày giảng: </i> Tiết: 38


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


<b>I. Mục đích, yêu cầu</b>


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


- Qua trả lời các câu hỏi 1, 2, 3, 4 học sinh tự nhận thức lại nội dung và ý nghĩa
của các vấn đề lí thuyết đã được đề cập trong tiết 1 và 2 gồm kiểu tệp, biến tệp, thao
tác với tệp: gắn tên tệp, mở và đóng tệp, đọc/ghi dữ liệu.


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


- Viết được chương trình đơn giản với một NNLT đã chọn.


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


- Tạo sự ham muốn giải các bài tập băng lập trình.
<b>II. Phương pháp</b>


- Kết hợp phương pháp dạy học, chủ yếu là thuyết trình và vấn đáp, lấy ví dụ
minh hoạ, mở rộng và củng cố vấn đề bằng kiểm tra đánh giá.



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


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, tài liệu tham khảo.


<i><b>2. Chuẩn bị của học sinh:</b></i> Làm bài tập được giao, vở ghi, SGK.
<b>III. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


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


- Kiểm tra trong quá trình làm bài tập.


<i><b>3. Nội dung bài giảng </b></i>


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


<b>Hoạt động 1: Hướng dẫn trả lời các câu hỏi 1,2,3,4 – sgk tr89</b>


<i><b>GV:</b></i> Yêu cầu học sinh đọc câu hỏi và
suy nghĩ trả lời.


<i><b>HS:</b></i> Đọc câu hỏi và trả lời


<b>Câu 1:</b>



Một số trường hợp cần phải dùng tệp:
lượng thông tin lớn, dùng lâu dài...
<b>Câu 2:</b>


Trong sơ đồ thao tác với tệp, khi cần
nhập dữ liệu từ tệp phải dùng những
thao tác như gắn tên tệp, mở tệp để ghi,
ghi dữ liệu vào tệp, đóng tệp để hồn tất
việc ghi dữ liệu.


<b>Câu 3:</b>


Trước khi sử dụng tệp phải có câu lệnh
mở tệp để trình dịch biết mục đích mở
tệp để đọc hay ghi, đồng thời đặt con trỏ
tệp vào vị trí thích hợp.


<b>Câu 4:</b>


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

kết thúc ghi dữ liệu vào tệp để hệ thống
hoàn tất việc ghi dữ liệu ra tệp.


- Trước khi dữ liệu được thực sự ghi vào
tệp, nó được lưu trữ trên bộ nhớ đệm.
Mỗi khi bộ nhớ đệm đầy hoặc khi có u
cầu đóng tệp thì dữ liệu trên bộ nhớ đệm
(có thể chưa đầy) mới được chuyển và
ghi vào tệp.


<b>Hoạt động 2: Hướng dẫn làm bài thêm</b>



<i><b>GV:</b></i> Đưa ra bài tập


<i><b>HS:</b></i> Đọc kỹ đề bài và xác định các thao
tác cần dùng.


<i><b>HS:</b></i> Lên bảng viết chương trình vào máy
và chạy thử chương trình.


<b>Bài thêm: </b>


<b>- Vào thư mục gốc D:\ tạo tệp bai.txt</b>
<b>chứa nhiều dòng dữ liệu mỗi dịng là</b>
<b>thơng tin của từng học sinh.</b>


<b>- Viết chương trình đọc từ tệp bai.txt</b>
<b>và in ra màn hình kết quả đọc được.</b>
<b>Chương trình:</b>


uses crt;
var s:string;
n:integer;
f:text;
Begin


assign(f,'D:\bai.txt');
reset(f);


while not eof(f) do
begin



readln(f,s);
writeln(s);
end;


close(f);
readln


<b>* Lưu ý: Readln để đọc từng dòng với</b>
<b>kiểu ký tự.</b>


<b>IV. Củng cố bài</b>


<b>V. Bài tập về nhà</b>



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

<i>Ngày soạn: </i> Tuần:


<i>Ngày giảng: </i> Tiết: 39


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


<b>I. Mục đích, u cầu</b>


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


- Nắm được các kiến thức bài 11,12,13,14,15,16.


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


- Viết được chương trình đơn giản với một NNLT đã chọn.


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



- Tạo sự ham muốn giải các bài tập băng lập trình.
<b>II. Phương pháp</b>


- Kết hợp phương pháp dạy học, chủ yếu là thuyết trình và vấn đáp, lấy ví dụ
minh hoạ, mở rộng và củng cố vấn đề bằng kiểm tra đánh giá.


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


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, tài liệu tham khảo.


<i><b>2. Chuẩn bị của học sinh:</b></i> Làm bài tập được giao, vở ghi, SGK.
<b>III. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


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


- Kiểm tra trong quá trình làm bài tập.


<i><b>3. Nội dung bài giảng </b></i>


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


<b>Hoạt động 1: Ơn lại lý thuyết bài 11,12,13,14,15,16.</b>
<b>Hoạt động 2: Đưa ra bài 1 và hướng dẫn</b>



<i><b>GV:</b></i> đưa ra bài tập.


Tính xn<sub> (Với n là số nguyên không âm)</sub>
<b>? Sử dụng kiểu dữ liệu nào và cách khai</b>
báo?


<i><b>HS:</b></i> x, n là số nguyên.
Var x,n: integer;


<i><b>GV:</b></i><b> ?Cách tính luỹ thừa.</b>


<i><b>HS:</b></i> Nhân x với x đến n lần.


<i><b>GV:</b></i> Dùng cấu trúc lệnh nào trong bài?


<i><b>HS:</b></i> Lặp tiền.


<i><b>GV:</b></i><b> yêu cầu hs lên viết CT.</b>


<i><b>HS:</b></i> Lên bảng viết CT.


<i><b>GV:</b></i> Nhận xét, chỉnh sửa bài làm của hs


<b>Bài 1</b>


uses crt;


var i,n,x,lt:integer;
Begin



clrscr;


write('Nhap x=');readln(x);
write('Nhap n=');readln(n);
lt:=1;


for i:=1 to n do
lt:=lt*x;


writeln('X^n=',lt);
Readln;


End.


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

<b>IV. Củng cố bài</b>


<b>V. Bài tập về nhà</b>



- Làm lại bài tập hôm nay và làm thêm bài tập SBT.
- Chuẩn bị trước nội dung bài 14 và 15.


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

<i>Ngày soạn:</i> Tuần:


<i>Ngày giảng:</i> Tiết: 40


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


<b>I. Mục tiêu đánh giá</b>


<i><b>-</b></i> Đánh giá kết quả tiếp thu kiến thức bài 11, 12, 13, 14, 15.
<b>II. Yêu cầu của đề</b>



- Biết cách khai báo biến với những kiểu dữ liệu đã học.


- Biết cách viết chương trình đơn giản có sử dụng kiểu mảng, kiểu xâu....
<b>III. Đề bài</b>


<b>Câu 1 (3đ): </b>

Có mấy cách khai báo mảng một chiều? Viết cấu trúc khai báo từng
cách? Tham chiếu đến phần tử của mảng bằng cách nào?


<b>Câu 2 (3đ): </b>

Vai trò của dữ liệu kiểu tệp? Khi cần ghi dữ liệu vào tệp phải dùng
những thao tác nào?


<b>Câu 3 (2đ): </b>

Viết chương trình nhập từ bàn phím số nguyên dương n và dãy a gồm
n số nguyên a1,..., an. Tính tổng các phần tử là số lẻ trong dãy và in ra màn hình kết
quả.


<b>Câu 4 (2đ): </b>

Viết chương trình nhập vào từ bàn phím một xâu. Thay thế tất cả các
cụm kí tự ‘HS’ bằng cụm kí tự ‘Hoc sinh’.


<i>Ngày soạn: </i> Tuần:


<i>Ngày giảng: </i> Tiết: 41


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

<i>Ngày soạn:</i> Tuần: 30


<i>Ngày giảng:</i> Tiết: 42


<b>CHƯƠNG VI: </b>



<b>CHƯƠNG TRÌNH CON VÀ LẬP TRÌNH CĨ CẤU TRÚC</b>




<b>§17.</b>

<b>CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI</b>



<b>I. Mục đích, yêu cầu</b>


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


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


- Kết hợp pp giảng dạy thuyết trình, vấn đáp, dùng phương tiện trực quan.
<b>III.Chuẩn bị của giáo viên và học sinh</b>


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, tài liệu tham khảo, máy chiếu,
máy tính, chương trình minh hoạ.


<i><b>2. Chuẩn bị của học sinh:</b></i> Đọc trước bài mới, vở ghi lý thuyết, SGK.
<b>IV. Tiến trìn lên lớp, nội dung bài giảng</b>



<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


<i><b>2. Kiểm tra bài cũ và dẫn nhập bài mới</b></i>
<i><b>2.1. Kiểm tra bài cũ</b></i>


<i><b>2.2. Dẫn nhập bài mới: </b></i>Các chương trình giải các bài tốn phức tạp thường
rất dài, có thể gồm nhiều lệnh, khi đọc rất khó hình dung chương trình thực hiện
những cơng việc gì và việc hiệu chỉnh chương trình cũng rất khó khăn. Như vậy làm
thế nào để cho bài toán phức tạp dễ đọc, dễ hiểu, dễ hiệu chỉnh, dễ nâng cấp?


Chúng ta nghiên cứu vấn đề mới là CTC, để tìm hiểu CTC là gì?


<i><b>3. Nội dung bài giảng</b></i>


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


<b>Hoạt động 1: Khái niệm chương trình con</b>


<i><b>GV:</b></i> Thuyết trình.


Để đưa ra khái niệm CTC, ta cần xét bài
toán tính tổng bốn luỹ thừa trong SGK
trang 91.


<i><b>HS:</b></i> Tìm hiểu ví dụ SGK.



<i><b>GV:</b></i> Yêu cầu học sinh đưa ra ý tưởng
giải bài toán.


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

dụng chương trình con, một chương
trình khơng sử dụng chương trình con.
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?


<i><b>HS:</b></i> Quan sát, suy nghĩ trả lời.


- Ct có sử dụng ct con được viết ngắn
gọn, dễ hiểu hơn ct viết không sử dụng
ct con.


- Đối với các bài toán lớn cần nhiều
người cùng viết. Ct dài, cần chia làm
nhiều đoạn. Có nhiều đoạn lặp lại, chỉ
nên viết 1 ct con.


<i><b>GV:</b></i> Tham khảo SGK và đưa ra khái
niệm chương trình con.


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



<i><b>GV:</b></i> Đưa ra khái niệm.


<i><b>GV:</b></i> So sánh 2 chương trình trên.
+ GV giải rhích : các dịng lệnh:
var j: integer;


tich:=1.0;
for j:=1 to k do
tich:=tich*x


+ Để tính các luỹ thừa ta viết:
Luythua(a,n), luythua(b,m),
Luythua(c,p), luythua(d,q)


+ Và chỉ rõ các đoạn lệnh được thay thế
bằng CTC.


+ Từ những điều đã nêu cho HS nêu các
ích lợi của CTC.


+ GV giải thích rõ từng ích lợi của việc
sử dụng CTC


<i><b>HS:</b></i> Chú ý nghe giảng và ghi bài.


- Để viết chương trình giải các bài tốn
lớn, phức tạp người lập trình có thể chia
thành nhiều bài tốn nhỏ, mỗi bài tốn là
một dãy lệnh mô tả một số thao tác nhất


định (gọi là Chương trình con). Sau đó
ghép nối các chương trình con thành
chương trình chính.


<b>* Lợi ích của việc sử dụng CTC</b>


+ Tránh được việc phải viết đi viết lại
nhiều lần cùng 1 dãy lệnh.


+ Hổ trợ việc thực hiện các chương trình
lớn;


+ Phục vụ cho quá trình trừu tượng hố.
+ Mở rộng khả năng ngơn ngữ;


+ Thuận tiện cho phát triển, nâng cấp
chương trình;


<b>V. Củng cố bài</b>



- Bài học hôm nay các em cần nắm vững được: khái niệm chương trình con và
lợi ích của việc sử dụng chương trình con.


<b>VI. Bài tập về nhà</b>



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

<i>Ngày soạn:23/03/2010</i> Tuần: 29


<i>Ngày giảng:25/03/2010</i> Tiết: 43


<b>§17.</b>

<b>CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI (Tiếp)</b>




<b>I. Mục đích, u cầu</b>


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


- 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 hai loại tham số hình thức và tham số thật sự.
- Nhận biết được phạm vi hoạt động của biến toàn cục, biến cục bộ.
- Cách thực hiện một chương trình con.


<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. Phương pháp</b>


- Kết hợp pp giảng dạy thuyết trình, vấn đáp, dùng phương tiện trực quan.
<b>III.Chuẩn bị của giáo viên và học sinh</b>


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, tài liệu tham khảo, máy chiếu,
máy tính, chương trình minh hoạ.


<i><b>2. Chuẩn bị của học sinh:</b></i> Đọc trước bài mới, vở ghi lý thuyết, SGK.
<b>IV. Tiến trìn lên lớp, nội dung bài giảng</b>



<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


<i><b>2. Kiểm tra bài cũ </b></i>
<i><b>2.1. Kiểm tra bài cũ</b></i>


- Khái niệm chương trình con? Lợi ích của việc sử dụng chương trình con?


<i><b>2.2. Dẫn nhập bài mới: </b></i>Chúng ta đã biết chương trình con là gì?. Lợi ích của
việc sử dụng chương trình con trong lập trình. Nhưng ta chưa biết chương trình
chương trình con có cấu trúc như thế nào? Và được phân loại như thế nào?.


<i><b>3. Nội dung bài giảng</b></i>


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


<b>Hoạt động 1: Phân loại và cấu trúc của chương trình con</b>


<i><b>GV: </b>Trong nhiều ngơn ngữ lập trình</i>
<i>chương trình con được phân làm mấy</i>
<i>loại?</i>


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


<i><b>GV:</b>Trong ngôn ngữ pascal các em cho</i>
<i>biết một số hàm và thủ tục chuẩn mà em</i>


<i>biết?</i>


<i><b>HS:</b></i> Trả lời câu hỏi:


+ Hàm: Sin(x), sqrt(x),length(x)...
+ Thủ tục: Writeln, readln, Delete....


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

<i><b>GV:</b></i> Xét hàm sin(x)


<i>Với x=∏/6 giá trị của hàm sin(x) cho</i>
<i>kết quả là bao nhiêu ?</i>


<i><b>HS: </b></i>Sin(x)=1/2


<i><b>GV:</b></i> Sau khi thực hiện tính tốn hàm
sin(x) với x= ∏/6 cho giá trị là ½.


<i>Vậy các em cho biết hàm có đặc điểm</i>
<i>gì ?(hay hàm là gì ?).</i>


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


<i><b>GV: </b></i>Xét thủ tục Writeln,
Writeln(‘xin chao’)


<i>Thủ tục Writeln(‘xin chao’) làm gì ? cho</i>
<i>kết quả là gì ? có trả về giá trị nào</i>
<i>không ?.</i>


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



<i>Vậy các em cho biết thủ tục có đặc điểm</i>
<i>gì ?(hay hàm là gì ?).</i>


<i><b>GV:</b></i><b> Trên cơ sở phân loại hàm và thủ tục</b>
bây giờ ta tìm hiểu cấu trúc của hàm và
thủ tục (Chương trình con) được tổ chức
như thế nào ?


<i><b>GV:</b></i> <i>Các em hãy cho biết chương trình</i>
<i>chính gồm mấy phần ?(kiến thức cũ).</i>


<i><b>HS:</b></i>trả lời.


<i><b>GV:</b>Trong chương trình con cấu trúc</i>
<i>của nó gồm mấy phần ?</i>


<i><b>HS</b></i><b>: Học sinh trả lời.</b>


<i><b>GV:</b> -Phần đầu dùng để làm gì ?</i>


<i>-Phần Khai báo dùng để làm gì ?</i>


<i>-Phần thân dùng để làm gì ?</i>


<i><b>GV</b></i><b> :Bây giờ ta tiếp tục sẽ tìm hiểu các</b>
biến được khai báo và phạm vi hoạt
động của nó trong chương trình con và
trong chương trình chính.



<b>+Hàm: </b>


 Là chương trình con


 Thực hiện một số thao tác nào đó.
 Trả lại giá trị qua tên của hàm.


<b>+Thủ tục:</b>


 Là chương trình con


 Thực hiện một số thao tác nào đó.
 KhơngTrả lại giá trị qua tên của


thủ tục.


<b>b. Cấu trúc chương trinh con</b>


<b>-Chương trình con có cấu trúc tương tự</b>
như chương trình chính gồm 3 phần:
<Phần đầu>


<b> [<Phần khai báo>]</b>
<b> <Phần thân></b>


<b>+Phần đầu:</b>


 Để khai báo tên của hàm hoặc thủ


tục.



 Nếu là hàm phải khai báo kiểu dữ


liệu chi giá trị trả về của hàm.


 Nhất thiết phải có.


<b>+Phần khai báo:</b>


 Khai báo các biến cho dữ liệu


vào/ra, các hằng và biến dùng
trong chương trình con.


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


 Gồm dãy các lệnh thực hiện để từ


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

Xét ví dụ : Tính luỹ thừa : luythua= xk<sub> .</sub>
khi đó tên chương trình con có thể đặt là
luythua, tên các biết chưa dữ liệu vào là
x, k. Vậy khi tính xk<sub> ta viết luythua(x,k).</sub>
Khi đó x, k là tham số hình thức.


<i>-Vậy tham số hình thức là gì ?</i>


<i><b>GV:</b></i> Đối biến cục bộ, ,biến tồn cục thì
phạm vi hoạt động của nó như thế nào ?
-Biến cục bộ:



 Chỉ sử dụng trong một chương


trình con cuả nó mà thôi.


 Không thể sử dụng biến cục bộ


cuả một chương trình con cho
chương trình chính và các chương
trình con khác.


<i>-Biến tồn cục:</i>


 Được sử dụng trong chương trình


chính cũng có thể sử dụng trong
chương trình con.


<i><b>GV:</b></i> Sau khi có một chương trình con,
muốn thực hiện chuơng trình con đó thì
ta làm thế nào ?


<i>-Hãy cho ví dụ về lệnh gọi CTC ?</i>


Xét ví dụ :CTC luythua(x,k) với x,k
tham số hình thức.


Với biến : a =2, b=3


Lệnh gọi CTC là Luythua(a,b) khi đó
tham số hình thức x,k nhận giá trị tương


ứng của tham số thực sự a,b.


<i><b>*Khái niệm các biến:</b></i>


<i>- Tham số hình thức: gồm các biến được</i>
khai báo cho dữ liệu vào/ra.


- Tham số thực sự: biến chứa trong lời
gọi chương trình con ở CT chính.


<i>- Biến cục bộ: Gồm các biến khái được</i>
khai báo trong chương trình con.


<i>- Biến tồn cục: Gồm các biến khái được</i>
khai báo trong chương trình chính.
<b>*Phạm vi hoạt động của các biến:</b>
-Biến cục bộ:


<i>-Biến tồn cục:</i>


<b>c. Thực hiện chương trình con:</b>


-Để thực hiện gọi chương trình con ta
thực hiện lệnh theo cú pháp sau


<b>Cú pháp:</b>


<tên CTC>(<tham số thực sự>)


<b> Trong đó: tham số thực sự là các</b>


hằng, biến chứa dữ liệu vào/ ra.


-Khi thực hiện chương trình con các
tham số hình thức dùng để nhập dữ liệu
vào và tham số hình thức sẽ nhận giá trị
của tham số thực sự tương ứng, cịn các
tham số hình thức dùng để lưu trữ dữ
liệu ra sẽ trả giá trị đó cho tham số thực
sự tương ứng.


<b>V. Củng cố bài</b>



- Bài học hôm nay các em cần nắm vững được: CTC gồm: Hàm và thủ tục;
<i>Cấu trúc chương trinh con; Biến cục bộ, biến toàn cục; Tham sơ hình thức, tham số</i>
<i>thật sự; Cách gọi chương trình con.</i>


<b>VI. Bài tập về nhà</b>



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

<i>Ngày soạn:23/03/2010</i> Tuần: 31


<i>Ngày giảng:31/03/2010</i> Tiết: 44


<b>§18.</b>

<b>VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG </b>


<b>CHƯƠNG TRÌNH CON</b>



<b>I. Mục đích, u cầu</b>


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


- Học sinh biết được cấu trúc chung và vị trí của thủ tục trong CT chính.


- Phân biệt được tham trị, tham biến.


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


- Nhận biết được các thành phần trong phần đầu của thủ tục.
- Nhận biết được 2 loại tham số trong phần đầu của thủ tục.


- Nhận biết lời gọi của thủ tục ở chương trình chính cùng với tham số thực sự.


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


- Thấy sự cần thiết và tiện lợi của chương trình con.
<b>II. Phương pháp</b>


- Kết hợp pp giảng dạy thuyết trình, vấn đáp, dùng phương tiện trực quan.
<b>III.Chuẩn bị của giáo viên và học sinh</b>


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, tài liệu tham khảo, máy chiếu,
máy tính, chương trình minh hoạ.


<i><b>2. Chuẩn bị của học sinh:</b></i> Đọc trước bài mới, vở ghi lý thuyết, SGK.
<b>IV. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


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


<i><b>2.1. Kiểm tra bài cũ</b></i>


Hãy nêu cấu trúc của chương trình con? Em hiểu thế nào là tham số hình
thức, tham số thực sự.


<i><b>2.2. Dẫn nhập bài mới: </b></i>Trong bài học trước, chúng ta đã được làm quen
khái niệm, lợi ích của việc sử dụng, phân loại và cấu trúc chương trình con. Vấn đề
đặt ra là nó được viết và sử dụng như thế nào trong ngơn ngữ lập trình?


<i><b>3. Nội dung bài giảng</b></i>


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


<b>Hoạt động 1: Cách viết và sử dụng thủ tục</b>


<i><b>GV:</b></i><b> Chiếu ví dụ vẽ HCN cho HS quan</b>
sát. Đặt câu hỏi: VD trên bảng sử dụng
bao nhiêu câu lệnh để vẽ HCn?


<i><b>HS:</b></i> 3 câu lệnh


<i><b>GV:</b></i> Như vậy khi cần cẽ 1 HCN ta phải
dùng 3 câu lệnh. Giả sử muốn vẽ 3 HCN
thì 3 câu lệnh Writeln ở trên phải lặp lại
3 lần. Gọi 1 HS đứng lên nhận xét.


<i><b>HS:</b></i> Chương trình dài dịng, tốn TG.


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

<i><b>GV:</b></i> Đúng vậy nếu dùng 3 lần câu lệnh
đó thì chương trình sẽ rất dài, để khắc


phục điều đó ta dùng CT con là thủ tục.


<i><b>GV:</b></i> Giới thiệu cho HS từng câu lệnh
trong chương trình để HS thấy được cấu
trúc thủ tục.


- ?Vị trí của thủ tục nằm ở phần nào
trong chương trình.


<i><b>HS:</b></i> Thủ tục nằm ở bên dưới phần khai
báo trong chương trình.


<i><b>GV:</b></i> ?Các em quan sát và cho biết cấu
trúc thủ tục gồm mấy phần ?


<i><b>HS:</b></i> Gồm có 3 phần: Tên thủ tục, phần
khai báo, phần thân thủ tục.


<i><b>GV:</b></i> Qua VD cho biết lời gọi thủ tục
nằm ở đâu ?


<i><b>HS:</b></i> Nằm ở phần thân của CT chính.


<i><b>GV:</b></i> nhận xét và ghi bảng.


<i><b>GV:</b></i> chiếu thủ tục 2 trang 98,99 SGK.
- GV giải thích về VD.


- GV nhận xét : Qua VD trên ta có thể
dùng nhiều giá trị thay thế để vẽ nhiều


HCN với 1 chương trình.


- Thủ tục vẽ - HCN ở đây đã diễn đạt 1
thủ tục vẽ 1 HCN có kích thước chiều
dài và chiều rộng tuỳ theo giá trị của các
tham số chdai, chrong. Những tham số
này gọi là tham số hình thức. Ngồi ra
nó cịn đựơc thay bằng tên các biến.


<i><b>GV:</b></i> chiếu VD tham biến 1, VD tham
biến 2 trang 99, 100.


- Gọi HS nhận xét.


- GV nhận xét.


- Để phân biệt 2 tham số này Pascal
dùng từ khoá Var để khai báo.


- GV ghi bảng


a. Cấu trúc thủ tục:


* Thủ tục có cấu trúc như sau.


Procedure <Tên thủ tuc> [(<DS tham
số>)];


[< phần khai báo>]
Begin



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


- Phần đầu thủ tục gồm tên dành riêng
<b>Procedure, tiếp theo là tên thủ tục. DS</b>
tham số có thể có hoặc khơng có.


- Phần khai báo: Dùng để xác định các
hằng, kiểu, biến và cũng có thể xác định
các chương trình con khác được sử dụng
trong thủ tục.


- Dãy câu lệnhh:Được viết giữa cặp tên
dành riêng Begin và End tạo thành thân
của thủ tục.


b. VD về thủ tục:


- Trong lời gọi thủ tục các tham số hình
thức được thay bằng tham số thực sự
tương ứng là các giá trị cụ thể được gọi
là tham số giá trị (tham trị).


- Trong lệnh gọi thủ tục các tham số hình
thức được thay bằng các tham số thực sự
tương ứng là tên các biến chứa dữ liệu ra
được gọi là tham số biến (tham biến).
* Sự khác nhau trong khai báo tham số
hình thức:



- Các tham số có từ khố Var đứng là
tham số biến, cịn khơng có là tham số
giá trị.


** Chú ý:


- Nếu có nhiều tham biến cùng một kiểu
dữ liệu thì có thể dùng 1 từ khố Var
cho phần khai báo, ngăn cách bằng dấu
phẩy.


- Khai báo dữ liệu cho tham số chỉ được
dùng tên kiểu. Tên kiểu là tên chuẩn
hoặc tên do người lập trình đặt.


<b>V. Củng cố bài</b>



- Bài học hơm nay các em cần nắm vững được: cách viết và sử dụng thủ tục.

<b>VI. Bài tập về nhà</b>



- Ôn lại bài học và đọc trước phần tiếp theo của bài.

<b>VII. Nhận xét rút kinh nghiệm:</b>



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

<i>Ngày giảng:01/04/2010</i> Tiết: 45

<b>§18.</b>

<b>VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG </b>



<b>CHƯƠNG TRÌNH CON (Tiếp)</b>


<b>I. Mục đích, yêu cầu</b>



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


- Nhớ cấu trúc của hàm, cách sử dụng hàm.


- Phân biệt được giữa hai loại chương trình con (thủ tục và hàm).
- Xác định được 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 thành phần trong đầu hàm.


- Nhận biết các câu lệnh sử dụng hàm ở chương trình chính cùng các tham số
thực sự.


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


- Thấy sự cần thiết và tiện lợi của chương trình con.
<b>II. Phương pháp</b>


- Kết hợp pp giảng dạy thuyết trình, vấn đáp, dùng phương tiện trực quan.
<b>III.Chuẩn bị của giáo viên và học sinh</b>


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, tài liệu tham khảo, máy chiếu,
máy tính, chương trình minh hoạ.


<i><b>2. Chuẩn bị của học sinh:</b></i> Đọc trước bài mới, vở ghi lý thuyết, SGK.
<b>IV. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>



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


- Yêu cầu lớp trưởng báo cáo sĩ số.


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


Câu hỏi: Cho ví dụ về cấu trúc thủ tục? Nêu sự khác nhau giữa tham số giá
trị và tham số biến?


<i><b>3. Nội dung bài giảng</b></i>


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


<b>Hoạt động 1: Cách viết và sử dụng hàm</b>


<i><b>GV:</b></i> Hỏi: Hãy kể tên một số hàm chuẩn
đã học và cách sử dụng chúng.


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


<i><b>GV:</b></i> Giới thiệu cấu trúc chung và vị trí
của hàm trong chương trình chính.


<i><b>HS:</b></i> Quan sát cấu trúc chung.



<b>2. Cách viết và sử dụng hàm</b>


<b>a. Cấu trúc:</b>


Function <tên hàm>[<DS tham số>]:
<kiểu dữ liệu>;


[khai báo các biến];
Begin


[<dãy các lệnh>]
End;


- <Kiểu dữ liệu>: Kiểu dữ liệu trả lại của
hàm như các kiểu integer, real, char,
boolean, string.


Vd: Function tong(x,y: integer): integer;
b.


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

<i><b>GV:</b></i> Hỏi: So sánh sự giống và khác nhau
của hàm và thủ tục.


<i><b>HS:</b></i> so sánh.


- 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


<i><b>GV: </b></i>Chiếu chương trình ví dụ
rutgon_phanso.


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


<i><b>HS:</b></i>


- Một hàm UCLN, dùng để tìm ước số
chung lớn nhất của hai số X, Y.


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


<i><b>GV:</b></i>


- Chiếu chương trình ví dụ 2, Minbaso,
sách giáo khoa.



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


<i><b>HS:</b></i>


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


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


- Giống hàm chuẩn, viết tên của hàm gọi
và thay thế tham số hình thức bằng các
tham số thực sự tương ứng.


- Lệnh gọi hàm tham gia vào biểu thức
như một tốn hạng.


Ví dụ: A:= 8*UCLN(x,y)-3;



Chú ý: Trong thân hàm phải có ít nhất
một lệnh gán giá trị cho tên hàm.


<tên hàm>:= <biểu thức>;
Ví dụ 1:


- Chương trình thực hiện rút gọn một
phân số, sử dụng hàm tính ước chung
lơn của 2 số.


3/ Phân biệt giữa hàm và thủ tục:
a/ Giống nhau:


- Là chương trình con, có cấu trúc
giống chương trình.


- Đều có thể chứa các tham số, cùng
tuân theo một quy định khai báo.


b/ Khác nhau:


- Tên hàm phải có kiểu dữ liệu.


- Trong thân hàm phải có lệnh gán giá
trị cho tên hàm.


Ví dụ 2:


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

khai báo ở chỗ nào trong chương trình?



<i><b>HS:</b></i>


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


- Diễn giải: Biến tuso, mauso, A có ảnh
hưởng trong tồn bộ chương trình. Biến
<i>Sodu chỉ ảnh hưởng trong thân chương</i>
trình con.


<b>V. Củng cố bài</b>



- Nhấn mạnh lại cách khai báo hàm, phân biệt giữa hàm và thủ tục.

<b>VI. Bài tập về nhà</b>



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



Function tim(m,n: integer);
Begin


r:=m mod n;


If r= 0 then tim:=n;
Else


Tim:=tim(n,r);


End;


1. Khai báo biến, sửa lỗi cho đoạn chương trình trên?
2. Đoạn chương trình thực hiện cơng việc gì?


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

<i>Ngày soạn:</i> Tuần: 32


<i>Ngày giảng: </i> Tiết: 46,47


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


<b>I. Mục đích, yêu cầu</b>


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


<b> - Củng cố lại kiến thức về xâu kí tự, chương trình con.</b>


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


<b>- Rèn luyện các thao tác xử lí xâu, kĩ năng tạo hiệu ứng chữ chạy trên màn hình.</b>
- Nâng cao kĩ năng viết, sử dụng chương trình con.


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


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


- Trình chiếu kết hợp đàm thoại.


- Hướng dẫn học sinh các bước thực hiện một số chương trình.
<b>II.Chuẩn bị của giáo viên và học sinh</b>



<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, sắp xếp phòng máy, CT mẫu.


<i><b>2. Chuẩn bị của học sinh:</b></i> Chuẩn bị nội dung thực hành, SGK, vở bài tập.
<b>III. Tiến trình lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


<i><b>2. Kiểm tra bài cũ:</b></i> Kết hợp kiểm tra trong quá trình thực hành.


<i><b>3. Nội dung thực hành </b></i>


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


a. Tìm hiểu hai thủ tục catdan(s1,s2) và
cangiua(s).


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


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


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

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


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


- Chiếu nội dung yêu cầu lên bảng.
- 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 quat lập trình của học
sinh.


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.


- Yêu cầu người sử dụng nhập một xâu
ký tự. Đưa xâu đó ra màn hình có dạng
dịng chữ chạy giữa màn hình văn bản
25*80.


- Quan sát trên màn hình để đối chiếu
với kết quả mà học sinh tự suy luận tính


được.


- 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. Củng cố bài</b>



- Nhận xét chất lượng thực hành

<b>V. Bài tập về nhà</b>



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

<i>Ngày soạn:</i> Tuần: 33


<i>Ngày giảng: </i> Tiết: 48,49


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


<b>I. Mục đích, yêu cầu</b>


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



<b>- Củng cố lại các kiến thức về chương trình con: Thủ tục, hàm, tham số biến và</b>
tham số giá trị, biến toàn cục và biến cục bộ.


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


<b>- Sử dụng được CTC để giải quyết trọn vẹn một bài toán trên máy tính.</b>


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


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


- Trình chiếu kết hợp đàm thoại.


- Hướng dẫn học sinh các bước thực hiện một số chương trình.
<b>II.Chuẩn bị của giáo viên và học sinh</b>


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, sắp xếp phòng máy, CT mẫu.


<i><b>2. Chuẩn bị của học sinh:</b></i> Chuẩn bị nội dung thực hành, SGK, vở bài tập.
<b>III. Tiến trình lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


<i><b>2. Kiểm tra bài cũ:</b></i> Kết hợp kiểm tra trong quá trình thực hành.



<i><b>3. Nội dung thực hành </b></i>


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


- Đưa ra bài toán: Nhập toạ độ 3 đỉnh
của 1 tam giác, tính diện tích, chu vi,
hiển thị tính vng, cân đều của tam
giác.


- GV định hướng cho HS vì sao phải xây
dựng kiểu dữ liệu để giải quyết bài toán
như trong SGK


- Hỏi: Yêu cầu HS phân biệt hàm và thủ
tục


- GV chính xác hố kết quả, nhấn mạnh
ý: Một chương trình con có thể được
dùng các chương trình con khai báo
trước nó trong thân của chương trình
mình


- Dẫn dắt, giải thích cho HS hiểu được ý
nghĩa, dạng chương trình con, cách dùng
các tham số (tham biến, tham trị), thứ tự
khai báo, đầu vào, đầu ra của từng
chương trình con được sử dụng để giải


- HS nhìn bảng và trả lời các câu hỏi của
GV đưa ra



- Trả lời câu hỏi của GV


- Trả lời các câu hỏi của GV đưa ra trong
quá trình giảng bài


- HS lắng nghe GV giảng bài và trả lời
các câu hỏi GV đưa ra:


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

quyết bài toán trên


+ Procedure daicanh(R: Tamgiac; var
a,b,c: real);: Nhận đầu vào là biến R mô
tả một tam giác và đầu ra là độ dài 3
cạnh a,b,c.


+ Function chuvi(var R: Tamgiac): real;:
Cho giá trị là chu vi của tam giác R
+ Function dientich(var R: Tamgiac):
real;: Cho giá trị là chu vi của tam giác
R


+ Procedure tinhchat(var R: Tamgiac;
var deu,can,vuong: boolean);: Nhận đầu
vào là một biến R mô tả tam giác và đầu
ra là tính chất của tám giác (đều, cân
hoặc vuông)


+ Procedure hienthi(var R: Tamgiac);:
Hiển thị toạ độ 3 đỉnh của tam giác trên


màn hình


+ Funtion kh_cach(P,Q: Diem): real;:
Cho giá trị là khoảng cách giữa hai điểm
P, Q


- GV sử dụng máy chiếu để để hiển thị
nội dung của chương trình trong SGK
lên màn hình cho HS quan sát, kết hợp
với dùng bảng để thảo luận và giải thích
nội dung của từng chương trình con và
cách dùng các chương trình con trong
chương trình chính. Sau khi HS đã thơng
hiểu được chương trình, yêu cầu HS lên
chạy thử bằng cách nhập những toạ độ
HS đã kiểm tra trước


- Phân tích yêu cầu của để bài
+ Chiếu nội dung, yêu cầu lên bảng
+ Chia lớp thành hai nhóm


 Nhóm 1: Nêu câu hỏi phân tích


để giải quyết bài tốn


 Nhóm 2: Trả lời câu hỏi phân tích


của nhóm 1 để tìm ra cách giải
quyết của bài tốn



+ GV góp ý, bổ sung câu hỏi phân tích
và trả lời phân tích


- Quan sát chương trình, dự tính chức
năng của chương trình


- Nhập vào toạ độ 3 đỉnh của tam giác,
khảo sát tính chất của tam giác (cân,
vuông, đều). Quan sát kết quả trên màn
hình để đối chiếu với kết quả tự tính
được


- Quan sát và ghi nhớ kết quả để thấy
được hiệu ứng thay đổi của tham biến và
tham trị


- Quan sát yêu cầu
+ Nhóm 1: Đặt câu hỏi


 Dữ liệu vào
 Dữ liệu ra


 Cần sửa những chỗ nào trong


chương trình câu b


 Thuật tốn để đếm số lượng các


loại hình tam giác



+ Nhóm 2: Trả lời câu hỏi phân tích


 Phải viết lệnh đọc đữ liệu trong


tệp


 Ba số nguyên dương là số lương


của 3 loại hình tam giác ghi trên 3
dòng của một tệp


 Cần thay đoạn chương trình nhập


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

- Lập trình:


+ Yêu cầu HS lập trình trên máy. GV
tiếp cận từng Hs để sửa lỗi cần thiết
+ Yêu cầu HS nhập dữ liệu vào của GV
và báo cáo kết quả của chương trình
+ Đánh giá kết quả của HS


con để đọc dữ liệu từ tệp
TAMGIAC.DAT.


 Thay đoạn chương trình in kết


quả ra màn hình bằng một chương
trình con để in 3 số nguyên dương
là số lượng 3 loại hình ra tệp
TAMGIAC.OUT



<i><b>Thuật toán:</b></i>


Nếu deu thì d:= d + 1


Ngược lại nếu can thì c:= c + 1
Ngược lại thì v:= v + 1;


- Độc lập viết chương trình, thực hiện
chương trình đối với test tự tạo


- Thơng báo kết quả cho GV


- Nhập dữ liệu của GV và báo cáo kết
quả


<b>IV. Củng cố bài</b>



- Nhận xét chất lượng thực hành

<b>V. Bài tập về nhà</b>



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

<i>Ngày soạn:18/03/2010</i> Tuần: 34


<i>Ngày giảng:21/04/2010</i> Tiết: 50


<b>§19.</b>

<b>THƯ VIỆN CHƯƠNG TRÌNH CON CHUẨN</b>



<b>I. Mục đích, yêu cầu</b>


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



- Giới thiệu một số chương trình con chuẩn và cách sử dụng.


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


- Bước đầu sử dụng được các thư viện đó trong lập trình.
- Biết khai báo và sử dụng thư viện CRT, GRAPH.


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


- Thấy sự cần thiết và tiện lợi của chương trình con.
<b>II. Phương pháp</b>


- Kết hợp pp giảng dạy thuyết trình, vấn đáp, dùng phương tiện trực quan.
<b>III.Chuẩn bị của giáo viên và học sinh</b>


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, tài liệu tham khảo, máy chiếu,
máy tính, chương trình minh hoạ.


<i><b>2. Chuẩn bị của học sinh:</b></i> Đọc trước bài mới, vở ghi lý thuyết, SGK.
<b>IV. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


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



Câu hỏi: Cho ví dụ về cấu trúc thủ tục? Nêu sự khác nhau giữa tham số giá
trị và tham số biến?


<i><b>3. Nội dung bài giảng</b></i>


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


<b>Hoạt động 1: Giới thiệu thư viện CRT</b>


<i><b>GV:</b></i> Đặt vấn đề: Giới thiệu về các thư
viện chương trình trong ngơn ngữ lập
trình. Các chương trình trong thư viện
CRT : Clrscr, textcolor, textbackgrond,
gotoXY


<i><b>GV:</b></i> Trình chiếu và cho chạy chương
trình sau:


Program xoamanhinh;
Begin


Clrscr;


Writeln(‘Xoa man hinh’);
Readln;


End.


<i><b>HS:</b></i> Quan sát.



<i><b>GV:</b></i> Vì sao xuất hiện lỗi khi chạy
chương trình này?


<b>1. CRT:</b>


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

<i><b>HS:</b></i> Chưa sử dụng thư viện CRT.


<i><b>GV:</b></i> Cần thêm : Uses CRT vào trước
begin và chạy chương trình


<i><b>GV:</b></i> Chức năng của thủ tục Clrscr ?


<i><b>HS:</b></i> Xố màn hình


<i><b>GV:</b></i> Trình chiếu chương trình chứa thủ
tục textcolor, yêu cầu học sinh quan sát
và nhận xét về chức năng của lệnh này


<i><b>HS:</b></i> Đặt màu chữ


<i><b>GV:</b></i> Trình chiếu chương trình chứa thủ
tục textbackground, yêu cầu học sinh
quan sát và nhận xét về chức năng của
lệnh này


<i><b>HS:</b></i> Đặt màu nền


<i><b>GV:</b></i> Trình chiếu chương trình chứa thủ
tục gotoXY, yêu cầu học sinh quan sát
và nhận xét về chức năng của lệnh này



<i><b>HS:</b></i> Đưa con trỏ về cột X và dòng Y


- Clrscr: xố màn hình


- Textcolor(n): đặt màu chữ, trong đó n
là hằng hoặc biến xác định màu


- Textbackground(n): đặt màu nền


- GotoXY(x,y): đưa con trỏ đến cột x
dịng y của màn hình văn bản


<b>Hoạt động 2: Tìm hiểu thư viện Graph</b>
- ĐVĐ: thư viện Graph chứa các thủ tục


liên quan đến chế độ đồ hoạ


<i><b>GV:</b></i> Các dạng dữ liệu nào có thể được
hiển thi trên màn hình?


<i><b>HS: </b></i>Văn bản và hình ảnh


<i><b>GV:</b></i> Card màn hình có nhiệm vụ gì?


<i><b>HS:</b></i> Đảm bảo tương tác giữ vi xử lí và
màn hình


<i><b>GV:</b></i> Các tệp điều khiển đồ hoạ có chức
năng gì?



<i><b>HS:</b></i> Cung cấp các chương trình điều
khiền tương ứng với các loại bảng mạch
đồ hoạ


<i><b>GV:</b></i> Khi nói đến màn hình phân giải
640x480 là nói đến điều gì?


<i><b>HS:</b></i> 640 dịng và 480 cột


<i><b>GV:</b></i> Để sử dụng thư viện đồ hoạ ta phải
làm gì?


<i><b>HS:</b></i> Khởi tạo chế độ đồ hoạ


<i><b>GV:</b></i> Để khởi tạo chế độ đồ hoạ ta sử
dụng thủ tục nào?


<i><b>HS:</b></i> Initgraph(var driver, mode: Integer;
path: string);


<b>2. Graph:</b>


- Chứa các hàm và thủ tục liên quan đến
chế độ đồ hoạ


<i><b>a. Các thiết bị và chương trình hỗ trợ</b></i>
<i><b>đồ hoạ:</b></i>


- Có hai chế độ làm việc: văn bản và đồ


hoạ


- Bảng mạch điều khiển màn hình là
thiết bị đảm bảo tương tácgiữa vi xử lí
và màn hình


<i><b>b. Khởi tạo chế dộ đồ hoạ:</b></i>


- Initgraph(var driver, mode: Integer;
path: string);


+ Trong đó:


- driver: số hiệu chương trình điều khiển
BGI


- mode: số hiệu độ phân giải
- path: đường dẫn đến tệp BGI


- CloseGraph: Kết thúc chế độ đồ hoạ
<b>c.</b><i><b>Các thủ tục vẽ điểm, đoạn thẳng</b></i>


<b>Putpixel (x, y: integer; color: word);</b>
+ x và y là tọa độ của điểm


+ color là màu của điểm


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

<i><b>GV:</b></i> Trình chiếu ví dụ về các thủ tục vẽ
điểm, đoạn thẳng. Gọi HS nêu cấu trúc
chung của thủ tục Putpixel.



<i><b>GV:</b></i> Giải thích các thơng số trong thủ
tục. Chức năng của thủ tục đó là gì ?


<i><b>HS:</b></i> Tham khảo SGK trả lời.


<i><b>GV:</b></i> Thuyết trình về các thủ tục và hàm
liên quan đến vị trí con trỏ.


<i><b>GV:</b></i> Trình chiếu ví dụ.
Use graph;


Begin


Drive: = 0;


Initgraph ( drive, mode,
‘C: TP\BGI’)
Circle (20, 20, 30);


Elipse (50,50,30,120,50,100);
Rectangle (100,100,100,200);
Readln;


End.


<i><b>GV:</b></i> Giải thích các thơng số trong thủ
tục. Chức năng của thủ tục đó là gì ?


<i><b>HS:</b></i> Quan sát và ghi bài.



<b>Line (x1,y1,x2,y2: integer)</b>


- Chức năng: Vẽ một đoạn thẳng từ
điểm có tọa độ (x1,y1) đến điểm có tọa
độ (x2,y2).


<b>Lineto (x,y: integer) </b>


- Chức năng: Vẽ một đường thẳng từ
điểm hiện tại đến điểm có tọa độ (x,y)
<b>Linerel (dx,dy: integer) </b>


- Chức năng: Vẽ một đường thẳng nối
điểm hiện tại với điểm có tọa độ bằng
tọa độ hiện tại cộng với gia số (dx,dy).
<b>Setcolor (color: word) </b>


- Chức năng: Đặt màu cho nét vẽ.


<i><b>e. Các thủ tục và hàm liên quan đến vị</b></i>
<i><b>trí con trỏ</b></i>


- Hàm xác định GTLN cua màn hình:
Function GetMaxX: integer;


Function GetMaxY: integer;


- Thủ tục chuyển con trỏ tới tọa độ (x;y)
Procedure MoveTo(x,y:integer);



<i><b>d. Các thủ tục vẽ hình đơn giản</b></i>


+ Hình trịn:


<b>Circle (x,y: integer; r:word)</b>
+ Elipse:


<b>Ellipse(x,y:integer;</b> <b>stAngle,</b>
<b>EndAngle, Xr, Yr: word)</b>


+ Hình chữ nhật:


<b>Rectange(x1,y1,x2,y2:integer)</b>


<b>Hoạt động 3: Tìm hiểu một số thư viện khác</b>


<i><b>GV:</b></i> Hãy nêu một số thư viện khác trong
Pascal?


<i><b>HS:</b></i> System, Dos, Printer.


<i><b>GV:</b></i> Để sử dụng các thủ tục và hàm
chuẩn của thư viện nào đó ta phải làm
gì?


<i><b>HS:</b></i> - uses crt,graph;


<b>3. Một số thư viện khác</b>



- System: chứa các hàm sơ cấp và các
thủ tục vào ra.


- Dos: chứa các thủ tục tạo thư mục, thiết
lập giờ hệ thống.


- Printer: cung cấp các thủ tục làm việc
với máy in.


<b>4. Sử dụng thư viện</b>


- Khai báo thủ tục và hàm chuẩn theo
cấu trúc:


<b>Uses unit1, unit2,...,unit n;</b>

<b>V. Củng cố bài</b>



- Biết được một số thư viện chuẩn. Biết được một số thủ tục đồ họa đơn giản.

<b>VI. Bài tập về nhà</b>



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

<i>Ngày soạn:</i> Tuần:


<i>Ngày giảng: </i> Tiết:


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


<b>I. Mục đích, yêu cầu</b>


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


<b>- Học sinh thấy được khả năng đồ hoạ của pascal.</b>



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


<b>- Sử dụng các thủ tục đồ hoạ để viết một chương trình đơn giản.</b>


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


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


- Trình chiếu kết hợp đàm thoại.


- Hướng dẫn học sinh các bước thực hiện một số chương trình.
<b>II.Chuẩn bị của giáo viên và học sinh</b>


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, sắp xếp phòng máy, CT mẫu.


<i><b>2. Chuẩn bị của học sinh:</b></i> Chuẩn bị nội dung thực hành, SGK, vở bài tập.
<b>III. Tiến trình lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


<i><b>2. Kiểm tra bài cũ:</b></i> Kết hợp kiểm tra trong quá trình thực hành.


<i><b>3. Nội dung thực hành </b></i>


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



<b>Hoạt động 1: Giới thiệu chng trỡnh cõu a, b</b>


1. Giới thiệu chơng trình câu a.
- Chiếu nội dung chơng trình lên
bảng(sách giáo khoa, trang 115).
- Hỏi: Hàm Detectinit có chức năng
gì?




- Thđ tơc Moveto(getmaxx div 2,
getmaxy div 2) thùc hiÖn công việc gì?
- 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 kết quả của chơng trình này.
2. Giới thiệu chơng trình câu b, sách
giáo khoa trang 116.


- Yêu cầu học sinh nghiên cứu chơng
trình và cho biết chức năng của chơng
trình.




- Thực hiện chơng trình để học sinh



1. Quan sát nội dung chơng trình.
- Cho giá trị khác khơng nếu có lỗi
khởi động đồ họa.




- Chuyển con trỏ đồ họa đến vị trí tâm
của màn hình.




- Vẽ các đờng gấp khúc ngẫu nhiên nhờ
thủ tục Lineto, mỗi đoạn có một màu
ngẫu nhiên. Vị trí bắt đầu vẽ là tâm của
màn hình. Kết thúc việc vẽ bằng cách
nhấn một phím bất kì.


- Quan s¸t gi¸o viên thực hiện và kiểm
nghiệm suy luận.




2. Quan sát nội dung chơng trình.


- Vẽ hình chữ nhật với nét vẽ màu
vàng.


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

thÊy kÕt qu¶ cđa nã.



- Yêu cầu học sinh thay đổi một số
tham số về màu vẽ, tọa độ và thực hin
li chng trỡnh.


450, 100 và bán kính 50.


- Quan sát kết quả thực hiện Chơng
trình và kiểm nghiệm suy luận.




- Thực hiện yêu cầu của giáo viên.
Thực hiện chơng trình để biết đợc ý
nghĩa của các thủ tục và tham số của nó.


<b>Hoạt động 2: Rèn luyện kỹ năng xử lý đồ hoạ</b>


1. Giới thiệu nội dung đề bài lên bảng.
Định hớng phơng pháp giải quyết vấn
đề:


- Viết chơng trình vẽ một hình vng
có độ dài cạnh 100 và tọa độ đỉnh góc
trên trái là 50, 50.


- Từ điểm góc trên trái, dùng thủ tục
linerel(0,100) để vẽ đoạn thẳng đến đỉnh
góc dới trái. Tơng tự nh vậy, thực hiện để
vẽ hình vng.



2. Yêu cầu học sinh độc lập viết chơng
trình lên máy.


- Yêu cầu học sinh thực hiện chơng
tình để thấy kết quả.


- Tiếp cận từng học sinh để hớng dẫn
sửa chữa các sai sót cho học sinh.


1. Quan sát nội dung đề bài, theo dõi
định hớng phân tích yêu cu ca giỏo
viờn.


2. Độc lập soạn thảo chơng trình vào
máy.


- Thông báo hoàn thành lập trình.
- Thực hiện chơng trình.


<b>IV. Cng c bi</b>



- Nhn xột cht lng thực hành

<b>V. Bài tập về nhà</b>



- Ôn tập.


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

<i>Ngày soạn: </i> Tuần:


<i>Ngày giảng: </i> Tiết: 52



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


<b>I. Mục đích, yêu cầu</b>


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


- Hiểu được khái niệm, cấu trúc chương trình con, lợi ích của việc sử dụng
chương trình con. Phân loại được chương trình con. Phân biệt được tham số hình
thức, tham số thực sự, biến cục bộ, biến toàn cục.


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


- Viết được chương trình đơn giản có sử dụng chương trình con.


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


- Thấy được sự cần thiết và tiện lợi của CTC.
<b>II. Phương pháp</b>


- Kết hợp phương pháp dạy học, chủ yếu là thuyết trình và vấn đáp, lấy ví dụ
minh hoạ, mở rộng và củng cố vấn đề bằng kiểm tra đánh giá.


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


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, tài liệu tham khảo.


<i><b>2. Chuẩn bị của học sinh:</b></i> Làm bài tập được giao, vở ghi, SGK.
<b>III. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>



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


- Yêu cầu lớp trưởng báo cáo sĩ số.


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


- Kiểm tra trong quá trình làm bài tập.


<i><b>3. Nội dung bài giảng </b></i>


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


<b>Hoạt động 1: Hướng dẫn trả lời các câu hỏi 1,2,3 – sgk tr117</b>


<i><b>GV:</b></i> Yêu cầu học sinh đọc câu hỏi và
suy nghĩ trả lời.


<i><b>HS:</b></i> Đọc câu hỏi và trả lời


<b>Câu 1:</b>


Giống nhau: cả thủ tục và hàm đều là
CTC, cấu trúc giống như một chương
trình trừ phần đầu và kết thúc end; Cả
thủ tục và hàm có thể chứa DS tham số.
cùng tuân theo quy định về khai báo và
sử dụng các loại tham số này.


Khác nhau: Việc thực hiện hàm luôn trả


về giá trị kết quả thuộc kiểu xác định và
giá trị đó được gán cho tên hàm.


<b>Câu 2:</b>


Chương trình con có thể khơng có tham
số. VD thủ tục vẽ HCN…


<b>Câu 3:</b>


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

<b>Hoạt động 2: Hướng dẫn làm bài 4 – sgktr117</b>


<i><b>GV:</b></i> Đưa ra bài tập


<i><b>HS:</b></i> Đọc kỹ đề bài và xác định các thao
tác cần dùng.


<i><b>GV:</b></i> Hướng dẫn


Ta nhận thấy rằng, bội số chung nhỏ
nhất của hai số ngun dương a,b có thể
tính theo cơng thức


ab/d


trong đó d là UCLN của a và b. Bởi
vậy :


- Nên viết hàm để tính bội chung nhỏ
nhất của hai số nguyên dương.



- Hàm tính BCNN.


<i><b>HS:</b></i> Lên bảng viết chương trình vào máy
và chạy thử chương trình.


<b>Bài 4:</b>


function BCNN(a,b:integer):integer;
begin


BCNN:=a*b div UCLN(a,b);
end;


<b>IV. Củng cố bài</b>


<b>V. Bài tập về nhà</b>



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

<i>Ngày soạn:</i> Tuần:


<i>Ngày giảng:</i> Tiết: 53


<b>ÔN TẬP HỌC KỲ II </b>


<b>I. Mục đích, yêu cầu</b>


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


- Biết và hiểu đợc toàn bộ kiến thực đã học ở chơng IV, chơng V “Tệp và thao
tác với tệp”, chơng VI “Chơng trình con và phân loại”trong kì II và một số kiến thc
cơ bản học ở học kì I..



- VËn dơng kiÕn thùc lµm mét sè bµi tËp.
<i><b>2. Kĩ năng:</b></i>


- Vận dụng đợc các lệnh và kiểu dữ liệu đã học để lập trình giải các bài tốn một
cách trọn vẹn.


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


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


- Kết hợp phương pháp giảng dạy thuyết trình, vấn đáp.
<b>III.Chuẩn bị của giáo viên và học sinh</b>


<i><b>1. Chuẩn bị của giáo viên:</b></i> Soạn giáo án, SGK, SBT, tài liệu tham khảo.


<i><b>2. Chuẩn bị của học sinh:</b></i> Đọc trước bài mới, vở ghi lý thuyết, SGK, SBT.
<b>IV. Tiến trìn lên lớp, nội dung bài giảng</b>


<i><b>1. Ổn định lớp</b></i>


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


- Yêu cầu lớp trưởng báo cáo sĩ số.


<i><b>2. Kiểm tra bài cũ </b></i>
<i><b>3. Nội dung ơn tập</b></i>


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


<b>Hot ng 1: Lý thuyt</b>



1. Chơng IV: Kiểu dữ liệu cã cÊu tróc.
a. KiĨu m¶ng


GV: Em hãy nhắc lại cách khai báo kiểu
mảng, biến mảng, cách tham chiếu đến
phần tử trong mảng.


b. KiĨu x©u


Hỏi: Cách khai báo kiểu xâu, tham chiếu
đến từng vị trí trong xâu, các hàm và thủ
tục liên quan đến việc xử lý xâu.


c. Bản ghi


GV: Hỏi cách tạo bản ghi, khai báo biến


HS: Ghi bài
a. Kiểu mảng
HS: Khai báo
Kiểu mang:
Type


<tên kiểu mảng>=array[<kiểu chỉ số>]
of <kiểu phần tử>;


Biến mảng
Var



<tờn bin mng>: <tờn kiểu mảng>;
Cách truy cập đến phần tử trong mảng
<Tên biến mng>[<v trớ phn t trong
mng>];


b. Kiểu xâu


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


Var <tên biến xâu>: String[<số kí tự tối
đa của xâu>];


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

kiu bn ghi cach tham chiếu đến các
tr-ờng trong bản ghi.


2. Ch¬ng V: TƯp và thao tác với tệp
Nhắc lại các thao tác cơ bản với tệp và
cách khai báo biến kiểu tệp.


3. Chơng VI: Chơng trình con và lập
trình có cấu trúc:


- Chơng trình con chia làm mấy loại
- Lợi ích của việc sử dụng chơng trình
con


- Sự giống nhau giữa hàm và thủ tục.


Length(s), Delete(S,vt,n); Insert, Pos,
Upcase.



HS: Suy nghĩ trả lời


2. Cách khai báo và một số thao tác cơ
bản với tệp.


Var <tờnbintp>:TEXT
Assign(<bientep>,<tentep>)
reset(<bientep>);


rewrite(<bientep>);


readln(<bientep>, <dsbien>);
write(<bientep>,<dsketqua>);
Close(<bientep>).


HS: Chng trỡnh con đợc chia ra làm 2
lại: Hàm và thủ tục.


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


GV: Giới thiệu nội dung đề bài lên bảng:


Viết chương trình nhập vào mảng 1
chiều, in ra màn hình mảng vừa nhập,
tính và hiển thị giá trị trung bình của cỏc
phn t trong mng ú.


GV: Định hớng phơng pháp giải quyết
cho bài toán



Các nhiệm vụ phải thực hiện:
+ Nhập dÃy số gồm N phần tử
+ Tính trung bình.


+ In kêt quả ra màn hình.


GV: Hớng dÉn hs gi¶i bài toán theo 2
cách (sd CTC vµ ko SD CTC).


HS: Quan sát nội dung đề bài hớng giải
quyết bài toán.


HS: Thảo luận để ghép chơng trình.
HS: Quan sát kết quả sau khi chạy chơng
trình.


<b>V. Củng cố bài</b>



- Cách khai báo và truy cập đến các phần tử trong mảng, trong xâu, bản ghi
- Các hàm và thủ tục liên quan đến xâu.


- C¸ch khai báo tệp và các thao tác với tệp.
- Khái niệm chơng trình con và phân loại.


- Cấu trúc CTC và chơng trình chính khi sử dụng chơng trình con.


<b>VI. Bài tập về nhà</b>



- Chuẩn bị kiến thức cho tiết sau kiểm tra học kỳ 2: Xem lại toàn bộ các kiến


thức đã được ôn tập.


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

<i>Ngày soạn:</i> Tuần:


<i>Ngày giảng:</i> Tiết: 54


<b>KIỂM TRA HỌC KÌ II</b>


<b>I.</b> <b>Mục tiêu đánh giá</b>


 Đánh giá hiện trạng chất lượng dạy và học và kết quả học tập của học sinh


cuối năm học.


 Đánh giá tổng kết, xác định kết quả, chất lượng học tập sau 1 năm học.


<b>II.</b> <b>Mục đích, yêu cầu của đề</b>


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


 Biết cách sử dụng các kiểu dữ liệu chuẩn, các kiểu dữ liệu có cấu trúc và sử


dụng chương trình con để giải một số bài tốn trên máy tính.


 Nắm được các thao tác làm việc với kiểu dữ liệu tệp.
 Phân biệt được các thành phần trong chương trình con.


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


 Biết viết các chương trình con để giải các bài tốn lớn



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


 Rèn luyện HS có thái độ nghiêm túc, tự lực khi làm bài


</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
×