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

GiaoAn11TachTietThepppct20102011

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 (428.96 KB, 83 trang )

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

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


<b>NGƠN NGỮ LẬP TRÌNH</b>



Tuần 01
Tiết 01


Ngày soạn: 03/08/2010
Ngày giảng :…/…/………..

<b>Bài 1: KHÁI NIỆM VỀ LẬP TRÌNH VÀ NGƠN NGỮ LẬP TRÌNH</b>


<b>I. MỤC ĐÍCH, U CẦU</b>


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


- Nắm được các thành phần cơ bản của ngôn ngữ lập trình nói chung
- Biết được khái niệm về chương trình dịch


- Phân biệt được chươn trình dịch là biên dịch và thơng dịch


<i>2. Kỹ năng</i>


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


- Hiểu ý nghĩa nhiệm vụ của chương trình dịch


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


- Ý thức được tầm quan trọng của mơn học và có thái độ học tập nghiêm túc, ln tự tìm
hiểu học tập


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



1. Gv: Giáo án, máy chiếu, máy tính, phịng chiếu hoặc bảng.
2. Hs: Đọc trước SGK, xem lại một số kiến thức Tin học lớp 10.


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


- Thuyết trình, vấn đáp


- Diễn giải, đàm thoại, giải quyết tình huống có vấn đề.


<b>IV. NỘI DUNG BÀI GIẢNG:</b>
<b>1. Ổn định lớp:</b>


+ Chào thầy cô.


+ Cán bộ lớp báo cáo sỉ số
+ Chỉnh đốn trang phục


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


- Thông qua giảng bài


<b>3. Bài mới</b>


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


<b>Hoạt động 1: giới thiệu lập trình và ngơn ngữ lập trình</b>
<b>GV: Đặt câu hỏi 1: Em hãy cho biết các</b>


bước giải một bài tốn trên máy tính?



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


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


Nhắc lại các bước giải bài toán trên máy
tính đã học ở lớp 10.


<b>GV: Đặt câu hỏi 2: Em hãy cho biết có</b>


mấy loại ngơn ngữ lập trình?


<b>HS: Trả lời câu hỏi của giáo viên.</b>
<b>GV: Phân tích câu trả lời của học sinh.</b>


Mỗi loại máy có một ngơn ngữ riêng,
thường thì chương trình viết bằng ngơn ngữ
của máy nào chỉ chạy được trên máy đó.
Khi viết chương trình bằng ngơn ngữ bậc


<b>1. Khái niệm lập trình: Lập trình là sử</b>


dụng một cấu trúc dữ liệu và 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 .


-Trả lời câu hỏi: Có 3 loại ngơn ngữ lập
trình: Ngơn ngữ máy, hợp ngữ và ngôn ngữ
bậc cao.


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

cao muốn thi hành được trên loại máy nào


thì cần chuyển chương trình sang ngơn ngữ
máy của máy đó.


Chương trình viết bằng ngơn ngữ bậc cao
nói chung khơng phụ thuộc loại máy, muốn
thi hành được thì nó phải được chuyển sang
ngơn ngữ máy.


<b>Hoạt động 2: Chương trình dịch</b>
<b>GV: Đặt câu hỏi 3 : Làm thế nào để chuyển</b>


chương trình viết bằng ngơn ngữ bậc cao
sang ngơn ngữ máy?


<b>Đưa ra ví dụ : Bạn là người khơng biết</b>


tiếng Anh vậy làm sao để bạn có thể nói
chuyện với người Anh hay đọc một cuốn
sách tiếng Anh?


+ Khi một người làm phiên dịch người đó
phải dịch như thế nào? (Dịch ngay từng
câu khi 2 người nói chuyện)


+ Khi một người muốn dịch 1 cuốn sách
sang tiếng Việt thì làm thế nào? (Dịch
tồn bộ cuốn sách đó sang tiếng Việt để
người đó có thể đọc được)


<b>GV: Lấy ví dụ về biên dịch và thơng dịch</b>



cho học sinh có thể hình dung được mỗi
công việc.


<b>Biên dịch: Sử dụng ngôn ngữ lập trình</b>


Pascal để dịch một chương trình viết sẵn ra
đĩa và thi hành chương trình đã dịch để học
sinh quan sát.


<b>Thông dịch: Sử dụng các lệnh trong</b>


Command promt để thực hiện một số lệnh
của DOS hoặc dùng ngôn ngữ Foxpro để
thực hiện một số lệnh quản trị dữ liệu, học
sinh dễ dàng nhận ra việc thông dịch.


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


=>Cần phải có chương trình dịch để
chuyển chương trình viết bằng ngơn ngữ
lập trình bậc cao sang ngơn ngữ máy để
máy có thể thi hành được.


<b>2. Chương trình dịch</b>



<i> có 2 loại: Biên dịch và thông dịch</i>


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


 Duyệt, kiểm tra, phát hiện lỗi và 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 (ngơn ngữ máy) để
có thể thực hiện trên máy và có thể lưu trữ
để sử dụng lại khi cần.


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


Thông dịch được thực hiện bằng cách lặp
lại dãy các bước sau:


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


 Chuyển đổi cá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>4. Cũng cố: Nhắc lại một số khái niệm mới.</b>


<b>V. PHỤ LỤC</b>


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

Tuần 01


Tiết 02 Ngày soạn: 03/08/2010Ngày giảng:…/…/………..


<b>Bài 2: 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>1. Kiến thức</i>


- Biết một số khái niệm như: tên, tên chuẩn, tên dành riêng, ….


<i>2. Kỹ năng</i>


- Phân biệt được tên chuẩn với tên dành riêng và tên do người lập trình đặt.
- Nhớ các quy tắc đặt tên hằng và biến


- Biết đặt tên đúng, nhận biết tên sai.


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


- Ý thức được tầm quan trọng của mơn học và có thái độ học tập nghiêm túc, ln tự tìm
hiểu học tập


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


1. Gv: Giáo án, máy chiếu, máy tính, phòng chiếu hoặc bảng.
2. Hs: Hiểu kiến thức ở bài 1, đọc trước SGK bài 2.



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


- Thuyết trình, vấn đáp


- Diễn giải, đàm thoại, giải quyết tình huống có vấn đề.


<b>IV. NỘI DUNG BÀI GIẢNG</b>
<b>1. Ổn định lớp:</b>


+ Chào thầy cô.


+ Cán bộ lớp báo cáo sỉ số
+ Chỉnh đốn trang phục


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


<i>Câu 1: Thế nào là lập trình, ngơn ngữ lập trình?</i>


<i>Câu 2: Chương trình dịch là gì? Có mấy loại chương trình dịch?</i>
<b>3. Bài mới</b>


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


<b>Hoạt động 1: Các thành phần cơ bản của ngôn ngữ lập trình</b>
<b> GV: Các ngơn ngữ lập trình nói chung</b>


thường có chung một số thành phần như:
Dùng những ký hiệu nào để viết chương
trình, viết theo quy 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 quy định riêng về những thành phần
này.


<b> Ví dụ: Bảng chữ cái của các ngơn ngữ</b>


lập trình khác nhau có sự khác nhau. Chẳng
hạn ngôn ngữ Pascal không sử dụng dấu !
nhưng ngôn ngữ C++<sub> lại sử dụng ngôn ngữ</sub>
này.


- Cú pháp các ngơn ngữ lập trình khác nhau
cũng khác nhau, ngôn ngữ Pascal dùng cặp
<b>từ Begin – End để gộp nhiều lệnh thành 1</b>


<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 là : bảng chữ cái, cú pháp và
ngữ nghĩa.


<b>a.Bảng chữ cái: Là tập các ký hiệu dùng</b>


để 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>



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

lệnh nhưng C++<sub> lại dùng cặp kí hiệu {}.</sub>


<b>Ví dụ: Xét 2 biểu thức:</b>


A + B (1) A, B là các số thực.
I + J (2) I, j là các số nguyên.


Khi đó dấu + trong (1) sẽ là cộng hai số
thực, trong (2) là cộng hai số nguyên.
- Mỗi ngôn ngữ khác nhau cũng có cách
xác định ngữ nghĩa khác nhau.


<b>HS: Lắng nghe, ghi chép.</b>


<b>GV: Đưa ra ví dụ ngơn ngữ tự nhiên cũng</b>


có bảng chữ cái, ngữ pháp (cú pháp) và
nghĩa của câu, từ.


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



- Lỗi cú pháp được chương trình dịch
phát hiện và thơng báo cho người lập
trình. Chương trình khơng cịn lỗi cú
pháp thì mới có thể dịch sang ngôn
ngữ máy.


- Lỗi ngữ nghĩa được phát hiện khi chạy
chương trình.


<b>Hoạt động 2: Một số khái niệm cơ bản</b>
<b>GV: Trong các ngôn ngữ lập trình nói</b>


chung, các đối tượng sử dụng trong chương
trình đều phải đặ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ó ngơn ngữ khơng
phân biệt chữ hoa, chữ thường.


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


cụ thể Pascal.


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


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


<b>GV: Ngôn ngữ nào cũng có 3 loại tên cơ</b>



bản này nhưng tùy theo ngơn ngữ mà các
tên có ý nghĩ khác nhau trong các ngôn ngữ
khác nhau.


<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 ngơn ngữ lập
trình có một quy tắc đặt tên riêng .
- Trong ngôn gnữ Turbo Pascal tên là


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


- Trong Free Pascal, tên có thể có tối đa
255 ký tự.


- Ngơn ngữ lập trình Pascal khơng phân
biệt chữ hoa, chữ thường nhưng một số
ngơn ngữ lập trình khác lại phân biệt
chữ hoa và chữ thường.


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


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



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

o 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 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ên nào là tên
dành riêng (từ khóa). Trong ngơn ngữ
Pascal, từ khóa thường hiển thị bằng
màu trắng.


<b>GV: Mở một chương trình viết bằng</b>


Pascal để học sinh quan sát cách hiển thị
của một số từ khóa trong chương trình.
- Các ngơn ngữ lập trình thường cung


cấp một số đơn vị chương trình có sẵn
trong các thư viện chương trình giúp
người lập trình có thể thực hiện được
nhanh một số thao tác thường dùng.
- Giáo viên chỉ cho học sinh một số tên


chuẩn trong ngơn ngữ Pascal.


<b>GV: Đưa ra ví dụ: Để viết chương trình</b>


giải phương trình bậc hai ta cần khai báo
những tên sau:


+ a,b,c là ba tên để lưu ba hệ số


của chương trình.


+ X1,X2 là 2 tên dùng để lưu
nghiệm nếu có.


+ Delta là tên để lưu giá trị của
Delta.


- Hằng thường có 2 loại, hằng được đặt
tên và hằng không được đặt tên. Hằng
không được đặt tên là những giá trị
viết trực tiếp khi viết chương trình.
Mỗi ngơn ngữ lập trình có một quy
định về cách viết hằng riêng.Hằng
được đặt tên cũng có cách đặt tên cho
hằng khác nhau.


- Biến là đối tượng được sử dụng nhiều
nhất trong khi viết chương trình. Biến
là đại lượng có thể thay đổi được nên
thường được dùng để lưu trữ kết qủa,
làm trung gian cho các tính tốn,…
Mỗi loại ngơn ngữ có những loại biến
khác nhau và cách khai báo cũng khác


nghĩa khác.


- Tên dành riêng cịn được gọi là từ khóa


<b>Ví dụ: Một số từ khóa</b>



Trong ngơn ngữ Pascal: Program, Var,
Uses, Begin, End, …


Trong ngôn ngữ C++<sub>: main, include,</sub>
while, void,…


<i><b>Tên chuẩn:</b></i>


- Là những tên được ngơn ngữ lập trình
(NNLT) dùng với ý nghĩa nào đó trong
các thư viện của NNLT, tuy nhiên
người lập trình có thể sử dụng với ý
nghĩa khác.


<b>Ví dụ: Một số tên chuẩn</b>


Trong ngơn ngữ Pascal: Real, Integer, Sin,
Cos, Char, …


Trong ngôn ngữ C==<sub>: cin,cout. Getchar…</sub>


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


- Được xác định bằng cách khai báo
trước khi sử dụng và không được trùng
với tên dành riêng.


- Các tên trong chương trình khơng được
trùng nhau



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


<b>Hằng: Là các đại lượng có giá trị khơng</b>


đổi trong q trình thực hiện chương trình.
- Các ngơn ngữ lập trình thường có:


+ Hằng số học : số nguyên hoặc số thực.
+ Hằng xâu : là chuỗi ký tự đặt trong d6áu


nháy “ hoặc ””


+ Hằng Logic : là các giá trị đúng hoặc sai


<b>Biến:</b>


- Là đại lượng được đặt tên, giá trị có thể
thay đổi được trong chương trình.
- Các NNLT có nhiều loại biến khác


nhau.


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

<b>4. Cũng cố</b>


 Nhắc lại một số khái niệm mới
 Cho bài tập về nhà


<b>V. PHỤ LỤC</b>



………
………
………
………
………
………
………
………
………
………
……….………


Tuần 02
Tiết 03


Ngày soạn: 05/08/2010
Ngày giảng:…/…/………..

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



<b>I. MỤC ĐÍCH, YÊU CẦU</b>
<i>1. Kiến thức</i>


- Cũng cố lại kiến thức về ngơn ngữ lập trình, chương trình dịch


- Biết 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.


<i>2. Kỹ năng</i>


- Biết 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ừ khóa),
hằng và biến. Quy tắc đặt tên trong Pascal, biết đặt tên đúng.



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


- Biết một trong những nhiệm vụ quan trọng của chương trình dịch là phát hiện lỗi cú
pháp của chương trình nguồn.


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


- Nghiêm túc, tích cực trong học tập.


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


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

2. Hs: Học bài cũ, đọc trước SGK bài mới.


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


- Thuyết trình, vấn đáp


- Diễn giải, đàm thoại, giải quyết tình huống có vấn đề.


<b>IV. NỘI DUNG BÀI GIẢNG</b>
<b>1. Ổn định lớp:</b>


+ Chào thầy cô.


+ Cán bộ lớp báo cáo sỉ số
+ Chỉnh đốn trang phục


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



Kiểm tra trong khi giảng bài


<b>3. Bài mới</b>


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


<b>Hoạt động 1: Tìm hiểu về ngơn ngữ lập trình</b>
<b>Gv:Trước khi giải bài tập trong</b>


SGK, các em tự ôn lại một số
kiến thức mà chúng ta đã học ở
các bài trước dựa trên yêu cầu
của câu hỏi trang 13 SGK.


<i>Đặt câu hỏi số 1: Tại sao</i>


<i>người ta phải xây dựng các</i>
<i>ngôn ngữ lập trình bậc cao?</i>
<b>Hs: - Suy nghĩ để đưa ra phương</b>


án trả lời.


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


<b>Gv: Nhận xét, đánh giá và bổ </b>


sung hướng dẫn cho học sinh trả
lời câu hỏi số 1:


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



<i><b>- Ngôn ngữ bậc cao gần với ngôn ngữ tự nhiên hơn,</b></i>


thuận tiện cho đông đảo người lập trình.


<b>- Chương trình viết bằng ngôn ngữ bậc cao nói</b>


chung khơng phụ thuộc vào phần cứng máy tính
và một chương trình có thể thực hiện trên nhiều
máy tính khác nhau.


<b>- Chương trình viết bằng ngôn ngữ bậc cao dễ hiểu,</b>


dễ hiệu chỉnh và dễ nâng cấp.


<i><b>- Ngôn ngữ bậc cao cho phép làm việc với nhiều</b></i>


kiêu dữ liệu và cách tổ chức dữ liệu đa dạng,
thuận tiện cho mơ tả thuộc tốn.


<b>Hoạt động 2: Tìm hiểu về chương trình dịch</b>


<i>Đặt câu hỏi 2: Chương trình</i>


<i>dịch là gì? Tại sao cần phải</i>
<i>có chương trình dịch?</i>


<b>Hs: Suy nghĩ, trả lời câu hỏi, cho</b>


ví dụ



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


<b>Hs: Suy nghĩ, trả lời, giải thích</b>


từng câu hỏi,


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


sinh.


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


<i><b>- Chương trình dịch là chương trình đặc biệt, có</b></i>


chức năng chuyển đổi chương trình được viết trên
ngơn ngữ lập trình bậc cao thành chương trình
thực hiện được trên máy tính cụ thể.


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


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


<i><b>- Trình biên dịch: duyệt, kiểm tra, phát hiện lỗi, xác</b></i>


định chương trình nguồn có dịch được khơng?
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ữ lại để sử dụng về sau khi cần thiết.


<i>Trình thơng dịch lần lượt dịch từng câu lệnh ra ngôn </i>


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

hoặc báo lỗi nếu không dịch được.


<b>Hoạt động 3: Tìm hiểu một số khái niệm về tên, hằng, biến trong pascal</b>
<b>Gv: Đặt câu hỏi 4: Hãy cho biết </b>


các điểm khác nhau giữa tên
dành riêng và tên chuẩn?


<b>- Gọi hs trả lời và cho ví dụ </b>
<b>Hs: Suy nghĩ, trả lời, giải thích</b>


từng câu hỏi,


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


sinh.


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


<b>- Gọi 3 học sinh lên bảng cho</b>


<i>ví dụ về tên do người lập</i>
trình đặt.



<b>Hs: Suy nghĩ trả lời</b>


<b>Gv: Nhận xét, sửa chữa, góp ý.</b>
<b>Gv: Đặt câu hỏi 6: Hãy cho biết</b>


những biểu diễn nào dưới đây
không phải là biểu diễn hằng
trong Pascal và chỉ rõ trong từng
trường hợp:


a) 150.0 b) -22
c) 6,23 d) ‘43’


e) A20 f) 1.06E-15
g) 4+6 h) ‘C


i) ‘TRUE’


<b>Hs: Suy nghĩ trả lời</b>


<b>Gv: Nhận xét, sữa chữa, góp ý</b>


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


<i><b>- Tên dành riêng khơng được dùng khác với ý nghĩa</b></i>


<i>đã xác định, tên chuẩn có thể dùng với ý nghĩa</i>
khác.



VD:


<i> Tên dành riêng trong Pascal: program, uses, const,</i>
type, var, begin, end.


<i>Tên chuẩn: trong Pascal abs, integer.</i>


<i><b>Câu 5: Gợi ý: Trong Pascal tên (do người lập trình</b></i>


đặt) được đặt tuân theo các quy tắc sau:


<b>- Chỉ bao gồm chữ cái, chữ số và dấu gạch dưới;</b>
<b>- Không bắt đầu bằng chữ số;</b>


<b>- Độ dài theo quy định của chương trình dịch (TP</b>


khơng q 127 kí tự, Free Pascal khơng q 255 kí
tự).


<i><b>- Tuy nhiên, không nên đặt tên quá dài hay quá</b></i>


ngắn mà nên đặt sao cho gợi ý nghĩa đối tượng
mang tên đó.


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


-Những biểu diễn sau đây khơng phải là hằng trong
Pascal:


6,23 dấu phẩy phải thay bằng dấu chấm;


<i>A20 là tên chưa rõ giá trị;</i>


4+6 là biểu thức hằng trong Pascal chuẩn cũng được
coi là hằng trong Turbo Pascal;


‘TRUE’ là hằng xâu nhưng khơng là hằng lơgic.


<b>4. Cũng cố</b>


-Ơn lại các khái niệm, các tên


-Chuẩn bị bài Cấu trúc chương trình.


<b>V. PHỤ LỤC</b>


………
……….


………
……….


………
……….


………
……….


………
……….



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

………
……….………


<b>Chương 2: CHƯƠNG TRÌNH ĐƠN GIẢN</b>


Tuần 02


Tiết 04


Ngày soạn: 05/08/2010
Ngày giảng :…/…/……

<b>Bài 3: CẤU TRÚC CHƯƠNG TRÌNH</b>



<b>I. MỤC ĐÍCH, U CẦU</b>
<i>1. Kiến thức</i>


- Cấu trúc chung của một chương trình và cấu trúc chung của một chương trình Pascal


<i>2. Kỹ năng</i>


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


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


- Ý thức được tầm quan trọng của mơn học và có thái độ học tập nghiêm túc, ln tự tìm
hiểu học tập


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

1. Gv: Giáo án, máy chiếu, máy tính, phịng chiếu hoặc bảng.
2. Hs: Học bài cũ, đọc trước SGK bài mới.



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


- Thuyết trình, vấn đáp


- Diễn giải, đàm thoại, giải quyết tình huống có vấn đề.


<b>IV. NỘI DUNG BÀI GIẢNG</b>
<b>1. Ổn định lớp:</b>


+ Chào thầy cô.


+ Cán bộ lớp báo cáo sỉ số
+ Chỉnh đốn trang phục


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


<i><b> Câu 1: Nêu các thành phần của ngơn ngữ lập trình?</b></i>


<i> Câu 2: Trong Pascal có máy loại tên?nêu quy tắc đặt tên?</i>


<b>3. Bài mới</b>


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


<b>Hoạt động 1: Tìm hiểu cấu trúc chung của chương trình</b>
<b>GV : Thuyết trình đưa ra cấu trúc chung</b>


của chương trình :


<b>HS: Lắng nghe, ghi chép</b>



<b>GV : Thuyết trình đưa ra kiến thức</b>
<b>HS : Lắng nghe, ghi chép .</b>


<b>GV : Phần khai báo sẽ báo cho máy biết</b>


chương trỉnh sẽ sử dụng những tài nguyên
nào của máy.


<b>GV : Mỗi ngôn ngữ lập trình có cách khai</b>


báo khác nhau và tùy thuộc vào ngơn ngữ
mà ta cần tìm hiểu xem trong chương trình
ta cần khai báo những gì .


<b>GV : Thư viện chương trình thường chứa</b>


những đoạn chương trình lập sẵn giúp
người lập trình thực hiện một số cơng việc
thường dùng, các đoạn chương trìnhnày
cực kỳ hữu ích cho gnười lập trình, nhất là
trong những ngơn ngữ lập trình tiên tiến
hiện nay.


<b>GV : Lấy một ngơn ngữ lập trình mới nhất</b>


hiện nay, chẳng hạn Visual Basic.NET, lấy
một số lệnh để học sinh thấy được sự tiện
dụng khi sử dụng thư viện.



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


- Mỗi chương trình nói chung gồm 2 phần:
phần khai báo và phần thân chương trình.


<i>[<Phần khai báo>]</i>
<i><Phần thân></i>


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


- Có thể khai báo tên chương trình, hằng
được đặt tên, biến, thư viện, chương trình
con,…


<b>Khai báo tên chương trình</b>


- Trong Turbo pascal


Program <tên chương trình>;
- Tên chương trình do người lập trình tự


đặt theo đúng quy tắc đặt tên.


<b>Ví dụ : Program Bai_1;</b>


Program Tong;


<b>Khai báo thư viện:</b>



- Trong ngôn gnữ Pascal :
Uses <tên thư viện>;
- Trong ngôn ngữ C++ <sub>: </sub>


#include<Tên tệp thư viện>


<b>Ví dụ: Trong Turbo Pascal : Uses CRT,</b>


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

<b>GV : Khai báo hằng là việc đặt tên cho</b>


hằng để tiện khi sử dụng và tránh việc phải
viết lặp 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 lợi
hơn khi cần thay đổi giá trị của nó trong
chương trình.


<b>GV : Lập trình bằng ngơn ngữ nào cần tìm</b>


hiểu cách khai báo hằng của ngơn ngữ ấy.


<b>GV : Nếu có thể giáo viên giải thích để học</b>


sinh có thể hiểu được rằng, 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.


<b>GV : Mỗi ngơn ngữ lập trình có cách tổ</b>


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>GV : Đưa ra những ví dụ khác nhau về</b>


cách viết thân chương trình trong các ngơn
ngữ lập trình khác nhau.


Trong VISUAL STUDIO 2005 :
Imports System.Xml


<b>Khai báo hằng :</b>


- Những hằng sử dụng nhiều lần trong
chương trình thường được đặt tên cho
tiện khi sử dụng.


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


Trong Pascal :
Const N = 100;
e = 2.7;
Trong C++ <sub>:</sub>


Const int N = 100;
Const float e = 2.7


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


- Mọi biến sử dụng trong chương trình


đều phải khai báo để chưoyng trình
dịch biết để xử lý và lưu trữ.


- Biến chỉ mang một giá trị gọi là biến
đơn


(Khai báo biến sẽ trình bày ở bài 5)


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


- Thân chương trình thường là nơi chứa
tồn bộ các câu lệnh của chương trình
hoặc lời gọi chương trình con.


- Thân chương trình thường có cặp dấu
hiệu bắt đầu và kết thúc chương trình


<b>Ví dụ: Trong ngơn gnữ Pascal</b>


Begin


[<Các câu lệnh>]
End.


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

<b>GV : Cho học sinh quan sát 2 chương trình</b>


trong 2 ngơn ngữ khác nhau là Pascal và C+
+<sub>.</sub>


<b>HS : Quan sát và nhận xét về cách viết của</b>



hai chương trình trong 2 ngơn ngữ khác
nhau.


Thơng qua đó học sinh cần nhận ra : hai
chương trình cùng thực hiện một công việc
nhưng viết bằng hai ngôn ngữ khác nhau
nên hệ thống các câu lệnh trong chương
trình cũng khác nhau.


Có thể thêm câu lệnh hiển thị một xâu vào
trong chương trình Pascal để thể hiện rõ
hơn là nếu muốn đưa ra câu thơng báo thì
ta có thể sử dụng lệnh. Writeln và xâu được
để trong dấu nháy đơn .


<b>3. Ví dụ chương trình đơn giản</b>


Xét hai chương trình đơn giản trong 2 ngơn
ngữ khác nhau sau đây :


<b>Chương trình 1 : Trong ngôn ngữ Turbo</b>


Pascal


Program VD;
Begin


Write(‘Chao cac ban’);
Readline;



End.


<b>Chương trình 2 : Trong ngôn ngữ C</b>++
#include<stdio.h>


Main()
{


Printf(“Chao cac ban”);
}


<b>4. Cũng cố</b>


 Nhắc lại một số khái niệm mới


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


<b>V. PHỤ LỤC</b>


………
………..


………..


………
………
…..………..



………
………
………..


………
………..


………
………..


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

Tuần 03
Tiết 05


Ngày soạn: 11/08/2010
Ngày giảng :…/…/………..


<b>Bài 4: MỘT SỐ KIỂU DỮ LIỆU CHUẨN</b>
<b> Bài 5: KHAI BÁO BIẾN</b>


<b>I. MỤC ĐÍCH YÊU CẦU</b>
<i>1. Kiến thức</i>


- Biết được cấu trúc chung của một chương trình.


- Biết được một số kiểu dữ liệu chuẩn: nguyên, ký tự, logic, thưc.
- Biết đực cấu trúc chung của khai báo biến.


<i>2. Kỹ năng</i>


- Sử dụng được kiểu dữ liệu và khai báo biến để viết được một chương trình đơn giản


- Hiểu được khai báo biến. Khai báo đúng, nhận biết được khai báo sai.


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


- Ý thức được tầm quan trọng của môn học và có thái độ học tập nghiêm túc, ln tự tìm
hiểu học tập


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


1. Gv: Giáo án, máy chiếu, máy tính, phịng chiếu hoặc bảng.
2. Hs: Học bài cũ, đọc trước SGK bài mới.


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


- Thuyết trình, vấn đáp


- Diễn giải, đàm thoại, giải quyết tình huống có vấn đề.


<b>IV. NỘI DUNG BÀI GIẢNG</b>
<b>1. Ổn định lớp:</b>


+ Chào thầy cô.


+ Cán bộ lớp báo cáo sỉ số
+ Chỉnh đốn trang phục


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


<b> Câu 1: Nêu cấu trúc chung của chương trình? Cách khai báo các thành phần của</b>



chương trình?


<b>3. Bài mới</b>


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


<b>Hoạt động 1: Các kiểu dữ liệu chuẩn trong pascal_Bài 4</b>
<b>GV : Vấn đáp: Khi cần viết chương trình</b>


quản lý học sinh ta cần sử lý thông tin ở
những dạng nào ?


<b>HS : Suy nghĩ, trả lời câu hỏi của GV</b>
<b>GV : Phân tích câu trả lời của học sinh,</b>


đưa ra một vài dạng thông tin như sau :
- Họ tên học sinh là những thông tin


dạng văn bản hay là dạng ký tự .
- Điểm của học sinh là các thông tin


các số thực .


- Số thứ tự của học sinh là các số
nguyên.


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


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



như sau :


NNLT Pascal có một số kiểu dữ liệu chuẩn
sau :


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


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


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


BYTE 1 0 … 255


INTEGER 2 -215<sub> … 2</sub>15<sub> – 1</sub>


WORD 2 0 … 216<sub> – 1</sub>


LONGINT 4 -231<sub> … 2</sub>31<sub> – 1</sub>


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


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

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


- Kiểu dữ liệu nào cũng có miền giới
hạn của nó, máy tính khơng thể lưu


trữ tất cả các số trên trục số nhưng
nó có thể lưu trữ với độ chính xác
cực cao.


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


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


- Trong lập trình nói chung thì kiểu kí
tự thường là tập các kí tự trong các
bảng mã kí tự, trong các bảng mã
hóa kí tự người ta quy định có bao
nhiêu kí tự khác nhau và mỗi kí tự
có một 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 của nó .


<b>GV : Đặt câu hỏi: Em biết những bảng</b>


mã nào?


<b>HS : HS sẽ đưa ra một số bảng mã</b>


nhưng GV chú ý các em NNLT Pascal


chỉ sử dụng bảng mã ASCII cho kiểu kí
tự.


- 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
nhưng một số ngôn ngữ khác lại mô
tả bằng 0 – 1,… Có ngơn ngữ lại
khơng có kiểu logic mà người lập
trình phải tự tìm cách để thể hên
những giá trị dạng này.


<b>Tên kiểu</b> <b>Miền giá trị</b> <b>Số</b>


<b>Byte</b>


REAL 0 hoặc nằm trong


(10-38<sub>  10</sub>38<sub>)</sub> 6
EXTENDED 0 hoặc nằm trong


(10-4932<sub>  10</sub>4932<sub>)</sub> 10


<b>3. Kiểu kí tự</b>


<b>- Tên kiểu: CHAR</b>


- 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ương ứng từ 0 đến
255


- Các kí tự có quan hệ so sánh, việc so
sánh dựa trên mã của từng kí tự.


<b>Ví dụ: Trong bảng mã ASCII, các kí tự trong</b>


bảng chữ cái tiếng Anh xếp liên tiếp vối nhau,
các chữ số cũng xếp liên tiếp, cụ thể: A mã
65; a mã 97, 0 mã 48


<b>4. Kiểu logic</b>


- Tên kiểu : Boolean


- Miền giá trị : Chỉ có 2 giá trị là TRUE
(Đúng) hoặc FALSE (Sai)


- Một số ngôn ngữ có cách mơ tả các giá
trị logic bằng những cách khác nhau.
- Khi viết chương trình bằng ngơn ngữ lập


trình nào thì cần tìm hiểu đặc trưng của
các kiểu dữ liệu của ngơn ngữ đó.


<b>Hoạt động 2: Khai báo biến_bài 5</b>
<b>GV : Khai báo biến là chương trình báo</b>



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


<b>HS : Lắng nghe và ghi chép</b>
<b>Ví dụ :</b>


- Để giải phương trình bậc hai


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

cần khai báo các biến như sau:
<b> Var a, b, c, x1, x2, delta : real;</b>
- Để tính chu vi và diện tích tam giác


cần khai báo các biến sau:


<b>Var a, b, c, p, s, cv: Real;</b>
<b>Trong đó :</b>


a, b, c: dùng để lưu độ dài 2 cạnh
của tam giác.


p: nửa chu vi tam giác


cv, s: chu vi và diện tích tam giác


<b>GV : Đặt câu hỏi: Khi khai báo biến cần</b>


chú ý những điều gì ?


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



<b>GV : Phân tích câu trả lời của học sinh.</b>
<b>GV: Lấy ví dụ về khai báo biến giải</b>


phương trình bậc 2, giải hệ phương trình
bậc nhất, tính diên tích tam giác khi biết
3 cạnh.


<b>GV: Phân tích ví dụ đầu, 2 ví du sau cho</b>


học sinh phân tích và tự khai báo


<b>GV: Phân tích và chữa lại</b>


khai báo như sau :


Var <danh sách biến> : <kiểu số liệu>


<b>Trong đó:</b>


<b>+ Var : là từ khóa dùng để khai báo biến</b>
<b>+ Danh sách biến : tên các biến cách nhau</b>


bởi dấu phẩy


<b>+ Kiểu dữ liệu : là một kiểu dữ liệu nào đó</b>
của ngơn ngữ Pascal


<b>+ Sau Var có thể khai báo nhiều danh sách</b>
biến có những kiểu dữ liệu khác nhau
+ Cần đặt tên biến sao cho gợi nhớ đến ý



nghĩa của nó.


+ Khơng nên đặt tên q ngắn hay quá dài,
dễ dẫn tới mắc lỗi hoặc hiểu nhầm.


Khai báo biến cần quan tâm đến phạm vi giá
trị của nó .


<i>Ví dụ 1:</i>


Khai báo biến giải phương trình
ax2<sub>+bx+c=0(a<>0)</sub>


<b>Var a, b, c, x1, x2, Delta :Real;</b>


<i>Ví du 2: Khai báo biến giải hệ phương trình</i>


bậc nhất


a1x+b1y=c1
a2x+b2y=c2


{Phương pháp thông thường}


<b> Var a1, a2, b1, b2, c1, c2, x, y:Real;</b>
{Phương pháp định thức}


<b>Var a1, a2, b1, b2, c1, c2, x, y:Real;</b>
<b> D, Dx, Dy :real</b>





<i>Ví du 3: khai báo biến tính diện tích tam giác</i>


biết độ dài 3 cạnh


<b> Var a, b, c, p, S: Real;</b>
<b>4. Cũng cố</b>


 Nhắc lại các kiểu dữ liệu đơn giản hay dùng.


 Cho về nhà một số ví dụ về việc lưu trữ trong cuộc sống và yêu cầu học sinh tìm
kiểu dữ liệu tương ứng


<b>V. PHỤ LỤC</b>


………
………
………
………
………
………..


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

………
………..………


Tuần 03


Tiết 06 Ngày soạn: 11/08/2010



Ngày giảng :…/…/………..


<b>Bài 6: PHÉP TOÁN, BIỂU THỨC, CÂU LỆNH GÁN</b>
<b>I. MỤC ĐÍCH, YÊU CẦU</b>


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


- Biết được các phép tốn thơng dụng trong ngơn ngữ lập trình
- Biết diễn đạt một số hình thức trong ngơn ngữ lâp trình
- Biết được chức năng của câu lệnh gán


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


<i>2. Kỹ năng</i>


- Sử dụng được các phép toán để xây dựng biểu thức
- Sử dụng lệnh gán để viết chương trình.


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


- Ý thức được tầm quan trọng của mơn học và có thái độ học tập nghiêm túc, ln tự tìm
hiểu học tập.


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


1. Gv: Giáo án, máy chiếu, máy tính, phịng chiếu hoặc bảng.
2. Hs: Học bài cũ, đọc trước SGK bài mới.


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



- Thuyết trình, vấn đáp


- Diễn giải, đàm thoại, giải quyết tình huống có vấn đề.


<b>IV. NỘI DUNG BÀI GIẢNG</b>
<b>1. Ổn định lớp:</b>


+ Chào thầy cô.


+ Cán bộ lớp báo cáo sỉ số
+ Chỉnh đốn trang phục


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


<i>Câu 1: Nêu cú pháp khai báo biến trong Pascal? Cho ví dụ.</i>
<b>3. Bài mới</b>


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


<b>Hoạt động 1: Phép tốn trong ngơn ngữ lập trình</b>
<b>GV : Dẫn dắt vào bài: Trong khi viết </b>


chương trình ta thường phải thực hiện các
tính tố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ả các
ngôn ngữ có sử dụng chúng một cách giống
nhau khơng ?



<b>GV : Tốn học có những phép tốn nào ?</b>
<b>HS : Đưa ra một số phép toán thường dùng</b>


trong toán học


<b>GV : Chúng có dùng được trong các ngơn </b>


ngữ lập trình ?


Chỉ một số phép dùng được, một số phép


- Ngơn ngữ lập trình nào cũng sử dụng
đến phép tốn, biểu thức, câu lệnh gán.
- Ta xét các khái niệm này trong ngơn


ngữ Pascal


<b>1. Phép tốn</b>


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


<b>- Với số nguyên : +, -, * (nhân), div</b>
(chia lấy nguyên), mod (chia lấy dư)
<b>- Với số thực : +, -, *, / (chia)</b>


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

phải xây dựng từ các phép toán khác.


<b>VD : Phép lũy thừa không phải ngôn ngữ </b>



nào cũng viết được.


<b>GV : Mỗi ngơn ngữ khác nhau lại có cách </b>


kí hiệu phép toán khác nhau.


=, <>: Cho kết qủa là một giá trị logic
(True hoặc False)


<b>- Các phép toán Logic : NOT (phủ</b>
định), OR (hoặc), AND (và): thường
dùng để kết hợp nhiều biểu thức quan
hệ với nhau.


<b>Hoạt động 2: Biểu thức số học và hàm số học chuẩn</b>
<b>GV : Trong toán học, biểu thức là gì?</b>


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


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


trình.


<b>GV: Cách viết các biểu thức này trong lập </b>


trình có giống cách viết trong toán học ?


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



<b>GV : Phân tích ý kiến của học sinh.</b>
<b>GV : Đưa ra cách viết biểu thức và thứ tự </b>


thực hiện phép tốn trong lập trình.


<b>GV : Cách viết biểu thức phụ thuộc cú </b>


pháp từng ngôn ngữ lập trình.


Đưa ra một số biểu thức tốn học và yêu
cầu các em viết chúng trong ngôn ngữ
Pascal.


<b>HS : Gọi một vài học sinh lên bảng viết.</b>
<b>GV : Đặt câu hỏi, muốn tính X</b>2<sub> ta viết thế </sub>
nào?


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


<b>GV : Muốn tính </b> ,sinx, cosx,… làm thế
nào ?


<b>HS : Chưa biết cách tính</b>


<b>GV : Để tính các giá trị đó một cách đơn </b>


giản, người ta xây dựng sẵn một số đơn vị
chương trình trong các thư viện chương
trình giúp người lập trình tính tốn nhanh
các giá trị thơng dụng.



<b>GV : Với các hàm chuẩn, cần quan tâm </b>


đến kiểu của đối số và kiểu của giá trị trả
về.


<b>VD : Sinx thì được đo bằng độ hay radian ?</b>


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


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


- Dùng cặp dấu () để qui định trình tự
tính toán.


<b>Thứ tự thực hiện các phép toán :</b>


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


- Giá trị của biểu thức có kiểu là kiểu
của biến hoặc hằng có miền giá trị lớn
nhất trong biểu thức.


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


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


số giá trị thông dụng.


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


- -Kết qủa của hàm phụ thuộc vào kiểu
của đố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.


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


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


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

<b>Hoạt động 3: Biểu thức quan hệ và logic</b>
<b>GV : Trong lập trình thường ta phải so </b>


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>VD : 3>5: Cho kết quả sai</b>


<b>GV : Đặt câu hỏi, muốn so sánh nhiều điều</b>


kiện đồng thời làm thế nào?



<b>HS : Đưa ra ý kiến của mình. (và, hoặc,…)</b>


Đưa ra ví dụ và cách viết đúng trong ngôn
ngữ Pascal


<b>Chú ý : Mỗi ngơn ngữ có cách viết khác </b>


nhau.


<b>4. Biểu thức quan hệ</b>
<b>Có dạng như sau:</b>


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


Trong đó:


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


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


<b>Ví dụ: A < B;</b>


2*A >= 4+ B


<b>5. Biểu thức logic</b>



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


- Thường dùng để liên kết nhiều biểu
thức quan hệ lại với nhau bởi các phép
tốn logic.


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


- Ba số dương a, b, c là độ dài ba cạnh
tam giác nếu biểu thức sau cho giá trị
đúng


(a+ b > c) and (b+ c >a) and (c+ a >b)
- Biểu thức điều kiện 0 d” X d’ 5 được


viết như sau:


(x >= 0) and (x <= 5)


<b>Hoạt động 4: Câu lệnh gán</b>
<b>GV : Mỗi NNLT có cách viết lệnh gán </b>


khác nhau.


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


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



đó tổng hợp lại: cần chú ý đến kiểu của
biến và kiểu của biểu thức.


<b>GV : Minh họa một vài lệnh gán bằng một</b>


ví dụ trực quan trên bảng hoặc trên màn
hình.


<b>6. Câu lệnh gán</b>


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


Cấu trúc:


<b> <tên biến> := <biểu thức>;</b>


- Trong đó biểu thức phải phù hợp với
tên biến. Có nghĩa là kiểu của tên
biến phải cùng kiểu với kiểu của biểu
thức hoặc phải bao hàm kiểu của biểu
thức.


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

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


X1 := (-b –sqrt(b*b – 4*a*c))/(2*a);
X2 := (-b +sqrt(b*b – 4*a*c))/(2*a);
I := I + 1;



J := J – 2;


<b>Trong đó : lệnh thứ 3 tăng giá trị của I một</b>


đơn vị, lệnh thứ 4 giảm giá trị biến J hai
đơn vị.


<b>4. Cũng cố</b>


- Nhắc lại một số khái niệm mới.


- Cho bài tập về nhà, ngồi bài tập có trong sách có thể cho thêm nhiều biểu thức logic để
học sinh về nhà tính tốn tìm giá trị của nó, cho học sinh một số biểu thức trong tốn học
và yêu cầu viết nó trong tin học (NNLT); có thể cho thêm bài theo cột, một cột là biểu
thức toán học, một cột là biểu thức trong tin học tương ứng và tìm chỗ sai của biểu thức
so với trong toán.


<b>V. PHỤ LỤC</b>


.


………
………
………..


………
…………


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

.



Tuần 04


Tiết 07 Ngày soạn: 20/08/2010Ngày giảng :…/…/………..


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


<b> Bài 8: SOẠN THẢO, DỊCH, THỰC HIỆN VÀ HIỆU CHỈNH CHƯƠNG TRÌNH</b>


(Tiết 07)


<b>I. MỤC ĐÍCH, U CẦU</b>
<i>1. Kiến thức</i>


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


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


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


<i>2. Kỹ năng</i>


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


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


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



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


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


- Ý thức được tầm quan trọng của môn học và có thái độ học tập nghiêm túc, ln tự tìm
hiểu học tập


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


1. Gv: Giáo án, máy chiếu, máy tính, phịng chiếu hoặc bảng.
2. Hs: Học bài cũ, đọc trước SGK bài mới.


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


- Thuyết trình, vấn đáp


- Diễn giải, đàm thoại, giải quyết tình huống có vấn đề.


<b>IV. NỘI DUNG BÀI GIẢNG</b>
<b>1. Ổn định lớp:</b>


+ Chào thầy cô.


+ Cán bộ lớp báo cáo sỉ số
+ Chỉnh đốn trang phục


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


<i>Câu 1: Kể tên và cho ví dụ về biểu thức số học?</i>
<i>Câu 2: Nêu cú pháp câu lệnh gán và cho ví dụ</i>


<b>3. Bài mới</b>


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


<b>Hoạt động 1: Các thủ tục chuẩn vào/ra đơn giản_ bài 7</b>
<b>GV: Khi sử dụng các ứng dụng ta thường</b>


nhập thông tin vào, như vậy bằng cách nào
ta nhập được thông tin nào khi lập trình?
Làm cách nào để nhập giá trị từ bàn
phím vào cho biến.


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


Trong ngôn ngữ Pascal các thủ tục vào ra
chuẩn viết như sau :


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


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

dùng Read/Readln.


<b>GV: Mỗi ngơn ngữ có cach nhập thơng tin</b>


vào khác nhau.


<b>GV: Đưa ra hai ví dụ về chương trình có</b>


nhập thơng tin vào từ bàn phím .



<b>Ví dụ 1 : Xét chương trình sau:</b>


Program VD;
Uses crt;
Var Tuoi: Byte
Begin


Clrscr;


Write(‘Moi ban cho biet tuoi cua ban’);
Readln(tuoi);


Write(‘Cam on, tuoi cua ban la’,tuoi,
‘Tuoi’);


Readln;
End.


<b>GV : Chạy chương trình cho học sinh quan</b>


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 .


Có thể thay đổi lệnh Readln(a, b, c) trong
ví dụ 2 thánh Read(a, b, c), chạy chương
trình để học sinh thấy sự khác nhau khi sử
dụng hai lệnh này .



<b>GV : Ta thấy ở ví dụ 2 của phần 1 việc ghi</b>


ra dữ liệu thì 3 giá trị a, b, c dính liền vào
nhau và người sử dụng không thể phân biệt
được giá trị của từng biến. Vậy làm thế nào
và có những cách nào để hiển thị dữ liệu
theo ý muốn của người lập trình .


<b>GV : Mỗi ngơn ngữ có cách đưa thơng tin</b>


ra màn hình khác nhau.


Lấy thêm ví dụ về các thủ tục đưa thơng tin
ra màn hình của ngơn ngữ khác


C++: cout ….


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


Writeln.


Lấy ví dụ minh họa cụ thể bằng chương
trình.


Có thể lấy dữ liệu của phần nhập dữ dữ liệu
sửa để học sinh thấy việc khác nhau giữa 2


READ/READLN(<biến 1>, …,<biến n>);


<b>Ví dụ: Read(N);</b>



Readln(a,b,c);


<i><b>Chú ý : Khi nhập dữ liệu từ bàn phím</b></i>


<i><b>READ và READLN có ý nghĩa như nhau,</b></i>
<i><b>thường hay dùng READLN hơn.</b></i>
<i><b>READLN ln chờ gõ phím Enter.</b></i>


<b>Ví dụ 2 : Xét chương trình sau:</b>


Program VD;
Uses crt;


Var a, b, c : Integer;
Begin


Clrscr;


Write(‘Moi ban nhap 3 so:’);
Readln(a, b, c);


Write(‘Ban vua nhap vao 3 so:, a, b, c);
Readln;


End.


Việc lập dữ liệu cho nhiều biến thì giá
trị mỗi biến phải cách nhau ít nhất một dấu
cách hoặc dấu Enter,máy sẽ gán giá trị cho


các biến theo thứ tự như trong lệnh tương
ứng .


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


- Để đưa dữ liệu ra màn hình tại vị trí
con trỏ, ta dùng thủ tục WRITE hoặc
WRITELN với cấu trúc :


Write/Writeln(<Giá trị 1>, <Giá trị 2>,
…,<Giá trị n>);


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


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


Write(a, b, c);


Writeln(‘Gia tri cua N la : ’,N);
-Thủ tục Writeln sau khi đưa kết quả ra sẽ
chuyển con trỏ màn hình xuống đầu dịng
tiếp theo .


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

lệnh Write và Writeln.


Minh họa quy cách đưa thông tin ra bằng
chương trình.



Sửa lại ví dụ 2 của phần 1 để dữ liệu của 3
số phân cách nhau – người dùng có thể
phân biệt được.


<b>GV : Đưa ra 2 ví dụ :</b>
<b>Ví dụ 1:</b>


Để nhập giá trị từ bàn phím ta thường
dùng:


Write(‘Nhap gia tri cua M:’); {1}
Readln(M) {2}


Trong đó: {1} Đưa ra thơng báo:
Nhap gia tri cua M:


Còn {2} Dùng để đọc giá trị và gán cho
biến M.


Cấu trúc {1}, {2} gọi là giao tiếp người –
máy.


<i>Kết quả thực hiện :<Độ rộng>:<Số chữ số</i>


<i>thập phân></i>


Kết quả khác: :<Độ rộng>


<b>Ví dụ: Write(N : 8);</b>



Writeln(‘X = ’,X:8:3);


<b>Ví dụ 2 : Xét chương trình đầy đủ sau:</b>


Program VD2;
Var N : Integer;
Begin


Write(‘lop ban co bao nhieu nguoi:’);
Readln(N);


Write(‘Vay la ban co’,N -1,‘nguoi ban
trong lop’);


Write(‘Go Enter de ket thuc chuong
trinh’);


Readln;
End.


<b>Hoạt động 2: Soạn thảo, dịch, thực hiện và hiệu chỉnh chương trình_ bài 8</b>
<b>GV : Giới thiệu một số tập tin vần thiết để</b>


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.


Turbo.exe (file chạy)
Turbo.tpl (file thư viện)
Turbo.tph (file hướng dẫn)



<b>GV : Giới thiệu một số thao tác thường</b>


dùng khi soạn thảo chương trình trong môi
trường soạn thảo Turbo Pascal .


<b>GV : Thực hiện một vài lần các thao tác</b>


này để các em nhận thấy mức độ tệin lợi
của nó khi soạn thảo cũng như chạy
chương trình .


<b>GV : Viết một chương trình ví dụ, thực</b>


hiện các thao tác sửa lỗi…


Có thể lấy ví dụ u cầu người dùng nhập
vào năm sinh, trả ra kết quả là tuổi của


Màn hình làm việc ngôn ngữ Pascal có
dạng như sau:


<b>Một số thao tác thường dùng trong</b>
<b>Pascal:</b>


-Xuống dịng: Enter
-Ghi file vào đĩa: F2
-Mở file đã có: F3


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


-Sốt lỗi chương trình: F9


-Chạy chương trình: Ctrl + F9


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

người đó.


<b>4. Cũng cố</b>


 Lấy 1 ví dụ đơn giản lập trình trực tiếp trên máycho học sinh quan sát .
 Ra bài tập về nhà .


<b>V. PHỤ LỤC</b>


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

Tuần 04-05
Tiết 08-09


Ngày soạn: 22/08/2010
Ngày giảng :…/…/………


<b>BÀI TẬP VÀ THỰC HÀNH 1</b>
<b>I. MỤC ĐÍCH, YÊU CẦU</b>


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


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


- Biết sử dụng một số dịch vụ chủ yếu của Pascal trong soạn thảo, lưu, dịch và thực
hiện chương trình.


<i>2. Về kỹ năng:</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>3. Về tư duy và thái độ: </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. CHUẨN BỊ</b>


1. Gv: Giáo án, máy chiếu, máy tính, phịng chiếu hoặc bảng.
2. Hs: Học bài cũ, chuẩn bị bài thực hành trong SGK.


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


- Thuyết trình, vấn đáp


- Diễn giải, đàm thoại, giải quyết tình huống có vấn đề.


<b>IV. NỘI DUNG BÀI GIẢNG</b>


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


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


+ Chào thầy cô.



+ Cán bộ lớp báo cáo sỉ số
+ Chỉnh đốn trang phục


<b> 2. Kiểm tra bài cũ: Thông qua bài dạy</b>
<b> 3. Bài mới</b>


<b>Hoạt động của GV và HS</b> <b>Ghi bảng</b>


<b>Hoạt động 1: Kiểm tra nội dung thực hành và khởi động máy.</b>


- GV kiểm tra sự chuẩn bị nội dung thực hành của
học sinh.


- HS để nội dung thực hành trước mặt.


- GV hướng dẫn học sinh khởi động máy, và khởi
động chương trình Turbo Pascal hoặc Free Pascal.
- Chý ý hướng dẫn của GV để khởi động máy và
chương trình Turbo Pascal hoặc Free Pascal.


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

- GV ghi chương trình Giai_PTB2 lên bảng


- GV yêu cầu học sinh đọc và gõ chương trình
Giai_PTB2 như trên bảng.


- Học sinh quan sát trên bảng và độc lập gõ chương
trình vào máy.


<b>- GV yêu cầu học sinh thực hiện các nhiệm vụ sau:</b>


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


<b>PTB2.PAS.</b>


<b>+ Dịch và sửa lỗi cú pháp với tổ hợp phím Alt+F9.</b>
<b>+ Thực hiện chương trình với tổ hợp phím Ctrl+F9.</b>
+ Nhập các giá trị 1; -3; và 2. Thơng báo kết quả của
máy đưa ra.


<b>Hs:</b>


<b>- Nhấn phím F2 và gõ PTB2.PAS</b>
<b>- Nhấn phím Alt+F9</b>


<b>- Nhấn phím Ctrl+F9</b>
- x1 = 1.00 x2 = 2.00


<b>Gv: </b>


<b>- Trở về màn hình soạn thảo bằng phím Enter.</b>
- Tiếp tục thực hiện chương trình


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


<b>- Nhấn phím Ctrl+F9</b>
<b>Hs:</b>


<b>- Thơng báo lỗi </b>



<b>Gv: Vì sao lại có lỗi xuất hiện? và sửa lại cho đúng</b>
<b>Hs: Suy nghĩ trả lời: do delta âm.</b>


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


<b>- Thơng báo lỗi và cho biết vì sao: Do căn bậc hai</b>


của một số âm.


- Thông báo lỗi với lý do delta của pt là số âm.
+ 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ả.


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


Chương trình giải phương trình
bậc hai:


<b>program Giai_PTB2;</b>
<b>uses crt;</b>


<b>var a, b , c, D: real;</b>


x1, x2: real;


<b>begin</b>


clrscr;



write(‘ a, b, c: ‘);
readln(a, b, c);
D:=b*b - 4a*b*c;


x1:= (-b - sqrt(D))/(2*a);
x2:= -b/a - x1;


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


<b>end.</b>


readln(a, b, c);


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


x2:= -b - x1;


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


readln(a, b, c);


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


x2:=(-b+ sqrt(b*b - 4a*b*c))/


(2*a);


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

= ‘, x2 : 6 : 2);


- x1 = 2.00 x2 = 3.00


<b>4. Cũng cố</b>


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

………
……….


………
……….


………
……….


………
……….


………
………
………


<i><b>Tiết 09</b></i>


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


+ Chào thầy cô.



+ Cán bộ lớp báo cáo sỉ số
+ Chỉnh đốn trang phục


<b> 2. Kiểm tra bài cũ: Thông qua bài dạy</b>
<b> 3. Bài mới</b>


Rèn luyện thêm về kỹ năng lập trình cho học sinh


<b>Hoạt động của Gv và Hs</b> <b>Ghi bảng</b>


<b> GV: u cầu học sinh hãy viết một chương trình</b>
tính diện tích một tam giác khi biết độ dài ba cạnh
của nó.


<b>Hs: Nghe và nhận nhiệm vụ.</b>


- Phân tích theo yêu cầu của giáo viên.


<b> GV định hướng để học sinh phân tich bài toán.</b>


+ Dữ liệu vào (Input)
+Diệu liệu ra (Output)
+ Cách tính:


<b>Hs</b>


+ Dữ liệu vào ba cạnh a; ; b ; c
+ Dữ liệu ra S:


+ p:= (a+b+c)/2



S: = sqrt(sqr(p-a)*sqr(p-b)*sqr(p-c))
- Thực hiện theo yêu cầu của giáo viên:
+ Soạn chương trình


<b>+ Bấm phím F2 để lưu chương trình.</b>
<b>+Bấm Alt+F9 để dịch lỗi cú pháp.</b>
<b>+ Bấm Ctrl+F9 để chạy chương trình.</b>


+ Dữ liệu vào ba cạnh a; ; b ; c
+ Dữ liệu ra S:


+ p:= (a+b+c)/2


S: =
sqrt(sqr(p-a)*sqr(p-b)*sqr(p-c))


<i>Chương trình:</i>
<b>Program</b>


Tinh_dien_tich_tam_giac;


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

- GV yêu cầu học sinh nhập dữ liệu và thông báo kết
quả ;


a = 3; b = 6; c = 5
a = 2; b = 5; c = 10;


<b>- Hs thông báo kết quả.</b>



<b>Begin</b>


Write(‘a, b, c =’);readln(a, b,c);
P:=(a+b+c)/2;


S: =
sqrt(sqr(p-a)*sqr(p-b)*sqr(p-c));


Write();
Readln


<b>End.</b>
<b>4. Cũng cố</b>


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

vào/ ra.


+ Xác định thuật tốn.
+ Soạn 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.
Làm bài tập trang 35 và 36.


<b>V. PHỤ LỤC 2</b>


………
……….


………


……….


………
……….


………
……….


………
………
………


Tuần 05


Tiết 10 Ngày soạn: 28/08/2010Ngày giảng :…/…/………..


<b>BÀI TẬP</b>
<b>I. MỤC ĐÍCH, YÊU CẦU</b>


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

<i> 2. Kỹ năng</i>


- Rèn luyện kỹ năng vận dụng các thủ tục vào/ra chuẩn.
- Biết xác định input và output của bài toán


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


- Tự giác, tích cực, chủ động trong giải bài tập


<b>II. CHUẨN BỊ</b>
<b>1. Gv</b>



- Máy chiếu projector, máy vi tính giới thiệu, minh họa một số bài tập mẫu (chương
trình soạn trước).


<b> 2. Hs.</b>


- Sách giáo khoa, vở bài tập


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


- Thuyết trình, gợi mở, vấn đáp


- Diễn giải, đàm thoại, giải quyết tình huống có vấn đề.
- Làm việc theo nhóm.


<b>IV. NỘI DUNG BÀI GIẢNG</b>
<b>1. Ổn định lớp:</b>


+ Chào thầy cô.


+ Cán bộ lớp báo cáo sỉ số
+ Chỉnh đốn trang phục


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


Kiểm tra khi giảng bài


<b>3. Bài mới</b>


<b>Hoạt động của Gv & Hs</b> <b>Nội dung</b>



<b>Hoạt động 1: Nhắc lại kiến thức đã học</b>
<b>Gv. Câu 1 đến câu 5 chuyển thành câu hỏi</b>


đầu giờ dạy, lấy điểm bài cũ.


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


<b>Gv. Nhận xé và cho điểm</b>


<b>Hoạt động 2: hướng dẫn giải một số bài tập</b>
<b>Gv. Chiếu 2 đề bài lên bảng và yêu cầu 2</b>


học sinh lên bảng làm bài tập


<b>Hs. Lên bảng làm theo yêu cầu</b>


<b>Gv. Nêu đề bài </b>
<b>Hs.</b>


<b>Gv. </b>
<b>Hs.</b>
<b>Gv. </b>
<b>Hs.</b>
<b>Gv. </b>
<b>Hs.</b>


<i>6.Bg: Biểu thức sang Pascal</i>


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


7. a) <i>2a</i>


<i>b</i> b) 2


<i>abc</i>


c) <i>b</i>


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

- Nhắc lại cấu trúc câu lệnh rẽ nhánh và câu lệnh lặp
- Yêu cầu học sinh làm các bài tập còn lại.


<b>V. PHỤ LỤC</b>


………
……….


………
……….


………
……….


………
……….


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

Tuần 06


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

<b>I. MỤC ĐÍCH, YÊU CẦU</b>
<i>1. Kiến thức:</i>



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


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


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


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


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


<i>3. Về tư duy và thái độ: </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. CHUẨN BỊ</b>
<i>1. Giáo viên:</i>


+ Soạn giáo án.


+ Chuẩn bị bảng phụ sau:


<i>2. Học sinh: học bài cũ, đọc và chuẩn bị bài mới.</i>
<b>III. PHƯƠNG PHÁP</b>


- Thuyết trình, gợi mở, vấn đáp


- Diễn giải, đàm thoại, giải quyết tình huống có vấn đề.


- Làm việc theo nhóm.


<b>IV. NỘI DUNG BÀI GIẢNG</b>
<b>1. Ổn định lớp:</b>


+ Chào thầy cô.


+ Cán bộ lớp báo cáo sỉ số
+ Chỉnh đốn trang phục


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


Bài tốn: cho 2 số ngun a, b; tìm Max(a,b).


u cầu: viết phần tên, phần khai báo, và câu lệnh nhập a, b.
Nêu thuật tốn tìm Max(a,b).


<b>3. Bài mới</b>


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


<b>Hoạt động 1: Khái niệm rẽ nhánh</b>


Câu lệnh
IF


Điều kiện Đ


S



Câu lệnh 1
IF


Điều kiện Đ
S


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

luận phương pháp giải quyết bài toán.


Đưa ra khái niệm rẽ nhánh trong lập
trình.


<b>1. Khái niệm rẽ nhánh</b>


<b>Ví dụ : Để viết chương trình giải phương</b>


trình bậc 2, ta phải:
Tính  = b2<sub> – 4ac;</sub>


Sau đó tùy thuộc vào giá trị của  mà ta có
tính nghiệm hay khơng.


<b>Trong thực tế :</b>


- Nếu  <0 thì phương trình vơ nghiệm
- Nếu  >=0 thì phương trình có nghiệm
- Như vậy tùy thuộc vào giá trị của  mà


ta đưa ra vơ nghiệm hay có nghiệm.
- Hoặc có thể nói : Nếu  < 0 thì phương



trình vơ nghiệm, ngược lại thì phương
trình có nghiệm.


=>Như vậy ta thấy một số mệnh đề có dạng
+ Nếu …..thì…..


+ Nếu …..thì….. ngược lại thì


Cấu trúc này được gọi là cấu trúc rẽ nhánh


<b>Hoạt động 2: Câu lệnh If_Then</b>
<b>Gv. Mỗi NNLT có cách thể hiện rẽ</b>


nhánh khác nhau .


<b>GV : Đưa ra cấu trúc lệnh rẽ nhánh trong</b>


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.


<b>GV : Lưu ý các em sau Then và sau Else</b>


chỉ có một lệnh chương trình.


<b>GV : Với hai dạng này, dạng nào dùng</b>


thuận tiện hơn ?


<b>HS : Tìm câu trả lời, giáo viên gợi ý để</b>



học sinh đưa ra được tùy trường hợp cụ
thể mà dùng dạng thiếu hay dạng đủ.


Các NNLT thường cung cấp các câu lệnh để
mô tả các cấu trúc rẽ nhánh như trên .


<b>2. Câu lệnh If – Then</b>


Pascal dùng câu lệnh If – then để mô tả
việc rẽ nhánh tương ứng với hai loại mệnh đề
rẽ nhánh như nhau


<b>- Dạng thiếu :</b>


<i> If <điều kiện> Then <câu lệnh>;</i>


<b>- Dạng đầy đủ :</b>


<i> If <điều kiện> Then < câu lệnh 1></i>
<i> Else <câu lệnh 2></i>


<b>Trong đó:</b>


<i>- Điều kiện : Là biểu thức quan hệ Logic.</i>
<i>- Câu lệnh, câu lệnh 1, câu lệnh 2 là 1 câu</i>
lệnh của Pascal


Kiểm tra


>=0
Thơng báo


vơ nghiệm Tính và đưa ra nghiệm


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

Đưa ra các ví dụ có sử dụng lệnh rẽ
nhánh, nếu khơng có lệnh rẽ nhánh thì
khơng thể thực hiện được.


<b>GV : ở VD3: Cách nào nhanh hơn, tiện</b>


hơn?


=> Cách 2 tiện hơn


<b>GV : Phân tích sự tiện lợi trong cách 2</b>


và số lệnh mà máy phải thực hiện.


<b>- Dạng thiếu : Nếu điều kiện đúng thì câu</b>


lệnh được thực hiện, nếu điều kiện sai thì
khơng thực hiện gì


<b>- Dạng đủ : Nếu điều kiện đúng thì thực hiện</b>


câu lệnh 1, nếu điều kệin sai thì thực hiện câu
lệnh 2.


<i><b>VD 1 : If (X Mod 2 = 0) Then</b></i>



WRITE(x,’La so chan’);


<b>VD 2: If DELTA <0 Then </b>


WRITE(‘PT Vo Nghiem’)
<b> Else WRITE(‘PT co nghiem’);</b>


<b>VD 3: Tìm giá trị lớn nhất (max) của 2 số a</b>


và b


<i>Cách 1 :</i>


<b> Max :=a; If b >a Then max :=b;</b>


<i>Cách 2 :</i>


<b> If a >b Then max :=a Else max :=b;</b>
<b>Hoạt động 3: Câu lệnh ghép</b>


<b>GV : Trong câu lệnh If – Then muốn</b>


thực hiện nhiều lệnh sau Then hay nhiều
lệnh sau Else làm thế nào ?


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


<b>GV : Khi đó ta cần gộp nhiều lệnh đó lại</b>



và coi đó là một câu lệnh trong chương
trình. Các ngơn ngữ lập trình thường có
cấu trúc để giúp ta thực hệin điều này.


<b>GV : Giới thiệu lệnh ghép của một vài</b>


ngơn ngữ lập trình khác
C==: {}


VB: If – Then – Endif


<b>GV : Chỉ rõ đâu là lệnh ghép trong</b>


chuỗi lệnh này.


<b> GV nên soạn sẵn hai chương trình</b>


này và cho các em quan sát cách viết
chương trình để các em hình thành dần
cách viết một chương trình .


<b>3. Câu lệnh ghép</b>


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


<b>Begin</b>


<các câu lệnh>



<b>End ;</b>
<i>Chú ý :</i>


<i>- Sau End phải là dấu; và trước Else không</i>
<i>chứa dấu ;</i>


<i>- Từ nay nói đến câu lệnh thì đó có thể là câu</i>
<i>lệnh đơn hoặc là câu lệnh ghép.</i>


<b>Ví dụ : Đoạn chương trình sau trong ngơn</b>


ngữ Pascal có sử dụng chương trình ghép.
IF DELTA <0 THEN


WRITELN(‘Phuong trinh vo nghiem’)
ELSE


BEGIN


X1 :=(-B-SQRT(DELTA))/(2*A);
X2 := - B/A – X1;


WRITELN(‘X1=’,X1:6:3,’X2=’,X2:6:
3);


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

lệnh trong chương trình dùng để làm gì .


<b>Hoạt động 4: Một số ví dụ minh họa</b>


Nếu có nhiều thời gian, GV có thể gõ


từng lệnh chương trình, gõ đến đâu giải
thích cho học sinh đến đó.


<b>Nếu cịn thời gian, gọi học sinh lên</b>
<b>bảng viết câu lệnh If – Then cho một</b>
<b>số bài toán đơn giản .</b>


Có thể viết chương trình mẫu cho
học sinh xong, yêu cầu các em gõ lại
chương trình vừa được theo dõi mà
khơng cần nhìn vào bài mẫu .


<b>4. Một số ví dụ</b>


Quan sát các chương trình sau trong ngơn
ngữ lập trình Pascal .


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


Tìm nghiệm thực của phương trình bậc hai
AX2<sub> + BX + C= 0</sub>


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


Tìm số ngày của một năm: Năm nhuận là
năm chia hết cho 400 hoặc chia hết cho 4
nhưng không chia hết cho 100 .


<b>4. Cũng cố</b>



- Nhắc lại một số khái niệm mới .


- Nhắc lại cấu trúc câu lệnh IF – THEN, IF – THEN – ELSE thơng qua các ví dụ .
- Cho bài tập về nhà .


<b>V. PHỤ LỤC</b>


………
………
………
………
………
………
………
………
………
………
……….


Tuần 06


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

<b>I. MỤC ĐÍCH, YÊU CẦU</b>
<i>1. Kiến thức:</i>


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


- Biết được cấu trúc chung của lệnh lặp FOR trong ngơn ngữ lập trình.
- Hiểu được cấu trúc lặp với số lần biết trước và câu lệnh FOR - DO


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



toán đơn giản


<i>3. Về tư duy và thái độ: </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. CHUẨN BỊ</b>


<i>1. Giáo viên: SGK, Giáo án, Máy chiếu Projector</i>
<i>2. Học sinh: HS: SGK, vỏ</i>


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


- Gợi mở, vấn đáp.
- Làm việc theo nhóm


<b>IV. NỘI DUNG BÀI GIẢNG</b>
<b>1. Ổn định lớp: </b>


- Chào thầy cô.


- Cán bộ lớp báo cáo sỉ số
- Chỉnh đốn trang phục


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


Cho biết kết quả của doạn chương trình sau



<b>Program VD;</b>
<b>Begin</b>


Writeln (‘PASCAL’);
Writeln (‘PASCAL’);
Writeln (‘PASCAL’);
Writeln (‘PASCAL’);
Writeln (‘PASCAL’);
Readln;


<b>End.</b>
<b>3. Bài mới</b>


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


<b>Hoạt động 1: Tìm hiểu khái niệm lặp</b>
<b>Gv: Nếu giải bài toán trên với việc in</b>


khoảng 10 dịng có từ PASCAL?


<b>Hs: Chương trình dài dịng </b>


<b>Gv: Có nhận xét gì về các dịng lệnh trong</b>


chương trình trên?


<b>Hs: Lặp lại nhiều lần với câu lệnh: Writeln</b>
<b>Gv: Đối với những thuật tốn có những thao</b>


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>GV : Đưa ra bài tốn, u cầu học sinh tìm</b>


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

thể đưa ra những cách giải khác nhau .


<b>GV : Đưa ra cách giải cho bài toán .</b>


Giải theo các lệnh tuần tự
S1:=0;


If (1/a>0.0001) then S1:=S1+ 1/a;


If (1/(a+1)>0.0001) then S1:=S1+ 1 /(a+1);
If (1/(a+2)>0.0001) then S1:=S1+ 1 /(a+2);
If (1/(a+3)>0.0001) then S1:=S1+ 1 /(a+3);


<b>HS : Nhận xét với việc giải bài tốn theo</b>


cách đó ?


Với N = 100 thì lặp 100 lần như thế nhưng
theo việc kiểm tra điều kiện thì không biết
phải làm theo cách nào? Theo cả hai trường
hợp thì đều quá dài.


Để học sinh hiểu được khái niệm lặp, giáo
viên đưa ra một số ví dụ trong thực tế được


tính tốn lặp đi lặp lại nhiều lần.


<b>VD1 : Bài toán gửi tiền vào ngân hàng.</b>


Hằng tháng phải tính lãi và cộng thêm vào
gốc đang gửi hay nói cách khác gốc của
tháng sau = gốc + lãi tháng trước.


<b>VD 2: Tính tổng của một đoạn số nguyên</b>


mà khơng được dùng cơng thức.


<i>Bài tốn 1 : Tính tổng</i>


S1= ... 1<sub>100</sub>


2
1
1
1
1







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


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


<i>Bài tốn 2 : Tính Tổng</i>


S2= ... 1 ...


2
1
1
1
1








<i>N</i>
<i>a</i>
<i>a</i>
<i>a</i>
<i>a</i>


Với điều kiện 1 0.0001
<i>N</i>


<i>a</i>



<b>Cách giải :</b>


- Bắt đầu S được gán giá trị 1/a.


- Tiếp theo mỗi lần cộng thêm vào S là
1/(a+N) với N = 1, 2, 3, …


- Với bài toán 1, việc cộng thêm dừng
khi 1/(a+N) < 0.0001, => số lần lặp
chưa biết.


- Với bài toán 2, việc cộng thêm dừng
khi N = 100, => số lần lặp đã biết
trước.


<b>Trong lập trình, có những thao tác phải</b>
<b>lặp lại nhiều lần, khi đó ta gọi là cấu</b>
<b>trúc lặp.</b>


<b>Lặp thường có 2 loại :</b>


 Lặp với số lần biết trước .


 Lặp với số lần không biết trước .
NNLT nào cũng cung cấp một số câu lệnh
để mô tả các cấu trúc lặp như trên.


Sau đây chúng ta sẽ tìm hiểu các câu lệnh
trong ngơn ngữ Pascal.



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

So sánh hai thuật toán sau:
Thuật toán


Tong_1a


B1: S:=1/a; N:=0;
B2: N:=N+1;
B3: Nếu N >100
thì chuyển sang
bước 5;


B4: S:= S + 1/(a+
N) rồi quay lại
B2;


B5: Đưa ra S rồi
kết thúc.


Thuật toán
Tong_1b


B1: S:=1/a;


N:=101;
B2: N := N -1;
B3: Nếu N < 1 thì
chuyển sang bước
5;



B4: S:= S+ 1/
(a+N) rồi quay lại
B2;


B5: Đưa ra S rồi
kết thúc.


<b>GV : Gọi một số học sinh nhận xét về 2</b>


thuật toán trên về một số vấn đề :
 Thuật toán có lặp khơng?
 Lặp bao nhiêu lần?


 Hai thuật toán giống và khác nhau
như thế nào?


 Cái gì thay đổi trong thuật toán này?
Sau khi so sánh hai thuật toán trên, giáo viên
đưa ra hai cách lặp trong ngơn ngữ Pascal,
giải thích ý nghĩa của các thành phần trong
câu lệnh .


<b>2. Lặp có số lần biết trước và câu lệnh</b>
<b>for – do</b>


Trong Pascal, có 2 lọai câu lệnh lặp có số
lần biết trước :


<b>- Lặp dạng tiến:</b>



<i>For <biến đếm> := <giá trị đầu> to <giá</i>


<i>trị cuối> do <câu lệnh>;</i>
<b>- Lặp dạng lùi</b>


<i>For <biến đếm> := <giá trị cuối></i>


<i>downto <giá trị đầui> do <câu lệnh>;</i>
<b>Trong đó:</b>


 <i>Biến đếm thường là biến kiểu số</i>
nguyên.


 <i>Giá trị đầu, giá trị cuối là các biểu</i>
thức cùng kiểu với biến đếm. Giá
trị đầu phải nhỏ hơn hay bằng giá
<i>trị cuối.</i>


 Ở dạng lặp tiến: Biến đếm tự tăng
dần từ giá trị đầu đến giá trị cuối.
 Ở dạng lặp lùi: Biến đếm tự giảm


dần từ giá trị cuối đến giá trị đầu.
Tương ứng với mỗi giá trị của biến đếm,
câu lệnh sau do thực hiện 1 lần.


<b>4. Cũng cố</b>


- Nắm lại các cấu trúc lặp.



- Nhớ được 2 dạng tiến lùi của câu lệnh FOR - DO trong Pascal
- Xem trước bài mới


<b>V. PHỤ LỤC</b>


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

Tiết 13 Ngày giảng :…/…/….


<b>Bài 10: CẤU TRÚC LẶP</b>
<b>I. MỤC ĐÍCH, YÊU CẦU</b>


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


- Biết được cấu trúc chung của lệnh lặp FOR trong ngơn ngữ lập trình.
- Hiểu được cấu trúc lặp với số lần biết trước và câu lệnh FOR - DO


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


giản


<i>3. Về tư duy và thái độ: </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. CHUẨN BỊ</b>


<i>1. Giáo viên: SGK, Giáo án, Máy chiếu Projector</i>
<i>2. Học sinh: HS: SGK, vỏ</i>


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



- Gợi mở, vấn đáp.
- Làm việc theo nhóm


<b>IV. NỘI DUNG BÀI GIẢNG</b>
<b>1. Ổn định lớp: </b>


- Chào thầy cô.


- Cán bộ lớp báo cáo sỉ số
- Chỉnh đốn trang phục


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


<b>Nêu cấu trúc câu lệnh For_do (dạng tiến và dạng lùi)?giải thích ý nghĩa câu lệnh?</b>


<b>3. Bài mới:</b>


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


<b>Hoạt động 1: vận dụng lệnh For_to_do.</b>
<b>Gv. Chiếu thuật toán của bài toán</b>


tong_1a


Gv. Viết chương trình pascal tính
tong_1a. và giải thích thành phần các
câu lệnh.


Hs. Học sinh chú ý nghe giảng.



<b>Ví dụ</b>


<b>Ví dụ 1 : Chương trình cài đặt thuật toán</b>


tong_1a


<b>tong_1a:</b>


<b>program tong_1a;</b>
<b>var a,N:integer;</b>


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

<b>GV : Lấy ví dụ minh họa trong</b>


Pascal để các em thấy được sự thay
đổi giá trị của biến đếm trong một
chương trình thực sự của Pascal .
Vd: a=2;


Write(‘nhap gia tri cua a=’);readln(a);
S:=1/a;


<b>For N:=1 to 100 do S:=S+1/(a+N)</b>


Write(S:8:4);
readln


<b>End.</b>


<b>Hoạt động 2: Vận dụng câu lệnh For_downto_do.</b>


<b>Gv. Chiếu thuật toán của bài tốn</b>


tong_1b


nhóm viết bài tốn với thuật tốn tính


<b>tong_1b.</b>


<b>Hs. Học sinh thảo luận nhóm</b>


Báo cáo kết quả


<b>tong_1b:</b>


<b>program tong_1a;</b>
<b>var a,N:integer;</b>


S:real;


<b>Begin</b>


Write(‘nhap gia tri cua a=’);readln(a);
S:=1/a;


<b>For N:=100 downto 100 do S:=S+1/(a+N)</b>


Write(S:8:4);
readln


<b>End.</b>



<b>Hoạt động 3: Kết hợp giữa lệnh lặp và lệnh rẽ nhánh</b>


Gv. Chiếu đề bài ví dụ 2. Định hướng
phương pháp và yêu cầu học sinh lên
bảng làm bài


Hs. Suy nghĩ trả lời


<b>Gv. Với 2 ví dụ này, giáo viên nên gõ</b>


sẵn chương trình. Sau khi chữa bài
cho học sinh quan sát việc chạy
chương trình, giáo viên vừa cho chạy
chương trình vừa giải thích ý nghĩa
các lệnh trong chương trình (chú ý
nhiều đến lệnh lặp) .


<b>Ví dụ 2 : Tính tổng các số nguyên chia hết cho 3</b>


hoặc 5 trong phạm vi từ M đến N (M<N).


<b>Var M,N,i:Integer;</b>
<b>Begin</b>


Write(‘nhap so M nho hon so N’);
Write(‘M, N =’); Readln(M,N);
T:=0;


<b>For i:=M to N do </b>



<b> If (i mod 3 =0) or (i mod 5=0) then </b>
T:=T+I;


Write(‘Ket qua’,T);
Readln


<b>End.</b>


<b>4. Củng cố</b>


- Nhắc lại một số khái niệm mới
- Nhắc lại cấu trúc câu lệnh.
- Cho bài tập về nhà


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

………
………
………
………
………
………
………
………


Tuần 07


Tiết 14 Ngày soạn: 10/09/2010Ngày giảng :…/…/….


<b>Bài 10: CẤU TRÚC LẶP</b>
<b>I. MỤC ĐÍCH, YÊU CẦU</b>



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


<b>- Biết được cấu trúc chung của lệnh lặp WHILE trong ngơn ngữ lập trình.</b>
<b>- Hiểu được cấu trúc lặp với số lần không biết trước và câu lệnh While_do</b>


<i><b>2. Kỹ năng: Sử dụng được lệnh lặp While để lập trình giải quyết được một số bài tốn</b></i>


đơn giản


<i>3. Về tư duy và thái độ: </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. CHUẨN BỊ</b>


<i>1. Giáo viên: SGK, Giáo án, Máy chiếu Projector</i>
<i>2. Học sinh: HS: SGK, vỏ</i>


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


- Gợi mở, vấn đáp.
- Làm việc theo nhóm


<b>IV. NỘI DUNG BÀI GIẢNG</b>
<b>1. Ổn định lớp: </b>


- Chào thầy cô.



- Cán bộ lớp báo cáo sỉ số
- Chỉnh đốn trang phục


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


Dùng câu lệnh lặp For_do tính tổng sau S=12<sub>+3</sub>2<sub>+5</sub>2<sub>+…+(2n-1)</sub>2<sub> với n được nhập vào</sub>
từ bàn phím.


<b>3.Bài mới:</b>


<b>Hoạt động của Gv & Hs</b> <b>Nội dung</b>


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

cầu học sinh tự xây dựng thuật toán giải
bài toán 2, nếu tự xây dựng được thuật
tốn thì các em sẽ hiểu hơn về lặp không
biết trước số lần


Đưa thêm ví dụ : Nhắc lại bài tốn
gửi tiền vào ngân hàng: Nếu có số tiền là
A, muốn gửi vào ngân hàng để được số
tiền là B > A thì cần gửi trong bao lâu với
lãi suất là k%.


Yêu cầu học sinh đưa ra cách giải cho
bài toán này .


<b>GV : Phân tích phương án trả lời của học</b>


sinh sau đó đưa ra lời giải cho bài tốn.



Để giải bài toán 2 ta dùng thuật toán như sau
:


Bước 1 : S :=1/a; N :=0;


Bước 2 : Nếu 1/(a+N) < 0.0001 thì chuyển
đến bước 5 ;


Bước 3: N :=N +1;


Bước 4: S := S+ 1/(a+N) rồi quay lại bước 2;
Bước 5: Đưa kết qủa S ra màn hình rồi kết
thúc


- Từ bước 2 đến bước 4 được lặp lại nhiều
lần nếu điều kiện 1/(a+N) < 0.0001 chưa
được thỏa mãn.


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

Do Trong Pascal, giải thích ý nghĩa các
thành phần.


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


Gv: Đưa ra bài toán 2.


- Định hướng và cùng học sinh phân tích
đưa ra thuật tốn.


Hs. Nghe và trả lời



Gv. Cài đặt thuật tốn, chạy thử chương
trình. Giải thích các dịng lệnh của chương
trình.


Hs. Nghe giảng


Gv. Đưa ra ví dụ 2.


Phân tích, định hướng và yêu cầu Hs
nêu thuật toán.


Hs. Suy nghĩ trả lời.


<b>Gv. Phân tích thuật tốn và chia lớp thành</b>


4 nhóm. Cho học sinh cài đặt thuật toán
Hs. Cài đặt thuật toán.


Báo cáo kết quả của nhóm.


Gv. Sửa và chiếu chương trình đã làm sẳn
và chạy chương trình cho hs quan sát.
Hs. Chú ý quan sát và ghi bài.


_ Pascal sử dụng câu lệnh lặp While


- Do để tổ chức lặp với số lần chưa viết như
sau


<b>While <Điều kiện> Do <Câu lệnh>;</b>


<b>Trong đó</b>


<i>- Điều kiện là biểu thức quan hệ hoặc logic.</i>
<i>- Câu lệnh là một câu lệnh trong Pascal.</i>
<i><b>Ý nghĩa : Khi điều kiện cịn đúng thì cịn</b></i>


thực hiện câu lệnh sau Do sau đó lại quay lại
<i>kiểm tra điều kiện.</i>


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


b1: S1/a; N0;


b2: Nếu 1/(a+N)<0.0001 Chuyển đến b5
b3: NN+1;


b4: SS+1/(a+N) rồi quay lại bước 2
b5: Đưa S ra màn hình


Chương trình:


<b>Var a,N:Integer;</b>


S: real;


<b>Begin</b>


Write(‘Nhap gia tri a=’);readln(a);
<b> While not(1/(a+N)<0.0001) do</b>



<b> Begin</b>


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


<b> End;</b>


Write(‘tong S la’, S:8:4);
readln


<b>End.</b>


<b>Ví dụ 2 : Tìm ước chung lớn nhất của M và</b>


N.


Thuật toán :


B1: Nếu M = N thì ƯCLN := M;
Kết thúc.


B2: Nếu M > N thì M := M – N rồi quay lại
B1, ngược lại N := N – M rồi quay lại B1
Sau đây là chương trình tìm UCLN;


<b>4. Củng cố</b>


<b> - Nhắc lại cấu trúc câu lệnh lặp không biết trước số lần lặp While_do</b>
- Cho bài tập về nhà.



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

………
………
………
………
Tuần 08


Tiết 15-16 Ngày soạn: 10/09/2010Ngày giảng :…/…/….


<b>BÀI TẬP VÀ THỰC HÀNH 2</b>
<b>I. MỤC ĐÍCH, YÊU CẦU</b>


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


- Nắm chắc cấu trúc và sơ đồ thực hiện của cấu trúc rẽ nhánh


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


- Rèn luyện kỹ năng sử dụng cấu trúc rẽ nhánh trong việc giải một số bài toán cụ thể
- Làm quen với cơng cụ phục vụ và hiệu chỉnh chương trình


<i>3. Về tư duy và thái độ: </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. CHUẨN BỊ</b>


<i>1. Giáo viên: SGK, Giáo án, Máy chiếu Projector</i>
<i>2. Học sinh: HS: SGK, vỏ</i>



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


- Gợi mở, vấn đáp.
- Làm việc theo nhóm


<b>IV. NỘI DUNG BÀI GIẢNG</b>


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


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


- Chào thầy cô.


- Cán bộ lớp báo cáo sỉ số
- Chỉnh đốn trang phục


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


Dùng câu lệnh lặp For_do tính tổng sau S=12<sub>+3</sub>2<sub>+5</sub>2<sub>+…+(2n-1)</sub>2<sub> với n được nhập vào</sub>
từ bàn phím.


<b>3.Bài mới:</b>


<i>Làm quen với một chương trình và các cơng cụ hiệu chỉnh chương trình</i>


a. Mục tiêu


- Học sinh hiểu được nội dung chương trình và kết quả sau khi thực hiện chương
trình. Biết các cơng cụ hiệu chỉnh chương trình khi cần thiết như thực hiện từng bước và
xem kết quả trung gian



b. nội dung


- Ba số nguyên dương a, b, c được gọi là bộ số Pitago nếu tổng bình phương của hai số
bằng bình phương số còn lại.


- Yêu cầu: Viết chương trình nhập từ bàn phím ba số ngun dương a, b, c và kiểm tra
xem chúng có phải là bộ số Pitago hay không


<b>Hoạt động của Gv & Hs</b> <b>Nội dung</b>


Gv. Gợi ý để học sinh nêu khái niện về bộ
số Pitago


Hs. Theo dõi dẫn dắt để nêu khái niệm về
bộ số Pitago.


Gv. Yêu cầu học sinh lấy ví dụ cụ thể.


<b>1. Bộ số Pitago</b>


Tổng bình phương của hai số bằng bình
phương số cịn lại. a2<sub>=b</sub>2<sub>+c</sub>2


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

Gv. Để kiểm tra bộ ba số a,b,c có phải là
bộ 3 số Pitago ta phải kiểm tra đẳng thức
nào?


Hs. Dựa vào khái niệm trả lời



Gv. Yêu cầu học sinh soạn vào máy theo
yêu cầu.


Hs. Làm bài


Gv. Yêu cầu học sinh lưu chương trình,
sốt lỗi, chạy chương trìn,… để học sinh
làm quen với công cụ trong môi trường
Turbo pascal 7.0.


Nhập các bộ số để kiểm tra thuật toán
Vd: 3 4 5 / 4 7 10 / ……


Hs. Làm theo yêu cầu của gv


a, b, c là bộ số Pitago thì xãy ra một trong
các đẳng thức sau


a2<sub> = b</sub>2<sub> + c</sub>2<sub>.</sub>
b2<sub> = a</sub>2<sub> + c</sub>2<sub>.</sub>
c2<sub> = a</sub>2<sub> + b</sub>2<sub>.</sub>


<b>Program Pitago;</b>
<b>Var a, b, c: Integer;</b>
<b>Begin</b>


Write(‘Nhap a, b, c=’);readln(a, b, c);


<b>If (a</b>2<sub> = b</sub>2<sub> + c</sub>2<b><sub> ) or ( b</sub></b>2<sub> = a</sub>2<sub> + c</sub>2<b><sub> ) or ( c</sub></b>2<sub> = </sub>
a2<sub> + b</sub>2<b><sub>) then write(a, b, c ,‘la bo ba </sub></b>



Pitago’)


<b> Else write(‘khong phai la bo ba pitago’);</b>
readln


<b>End.</b>


<b>F2 (File/save): Lưu chương trình</b>
<b>F9 : Sốt lỗi chương trình</b>
<b>Ctrl+ F9 : Chạy chương trình</b>


………


<b>4. Củng cố</b>


<b> - Nhắc lại cấu trúc câu lệnh rẽ nhánh If_then</b>


- Các thao tác cơ bản trong việc soạn thảo và biên dịch chương trình


<b>V. PHỤ LỤC</b>


………
………
………
………
………
………
………
………


………


<i><b>Tiết 16</b></i>


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


- Chào thầy cô.


- Cán bộ lớp báo cáo sỉ số
- Chỉnh đốn trang phục


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


Trong khi giảng bài


<b>3.Bài mới:</b>


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

trúc dữ liệu và lệnh phù hợp để lập trình


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

<b> - Nhắc lại cấu trúc câu lệnh rẽ nhánh If_then</b>
- Cho bài tập về nhà.


<b>V. PHỤ LỤC</b>


………
………
………
………
………
………


………
………
………


Tuần 09


Tiết 17 Ngày soạn: 18/09/2010Ngày giảng :…/…/….


<b>BÀI TẬP CHƯƠNG 3</b>
<b>I. MỤC ĐÍCH, YÊU CẦU</b>


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


- Biết sử dụng đúng lệnh lặp For . . . Do
- Biết sử dụng đúng lệnh lặp While . . . Do


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


- Bước đầu sử dụng được lệnh lặp For . . . do , và While . . . Do để lập trình giải quyết
1 số bài toán đơn giản.


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


- Bước đầu biết lựa chọn đúng dạng lệnh lặp để lập trình giải quyết một số bài tốn đơn
giản.


<i><b>3. Tư duy và thái độ: Tích cực trong học tập, cẩn thận , chính xác.</b></i>
<b>II. CHUẨN BỊ</b>


<b>1. Giáo viên: Sách giáo khoa, sách giáo viên, một số bài tập áp dụng...</b>


<b>2. Học sinh: sgk, và chuẩn bị bài tập trước</b>


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


<b>1. Phương pháp: Gợi mở, vấn đáp, đan xen hoạt động nhóm</b>
<b>2. Phương tiện: Giáo án.</b>


<b>IV. TIẾN TRÌNH BÀI HỌC</b>
<b>1. Ổn định lớp, kiểm tra sĩ số.</b>


<b>2. Kiểm tra bài cũ Kiểm tra trong khi giảng bài</b>
<b>3. Bài mới</b>


<b>Hoạt động của Gv & Hs</b> <b>Nội dung</b>


<b>Hoạt động 1: Rèn luyện kĩ năng vận dụng câu lệnh For và câu lệnh rẽ nhánh If</b>


<i>Gv. Dẫn dắt: Từ bài toán KTBC ở trên, nếu ta</i>
y/cầu tính và đưa ra màn hình tổng các số chẵn
và tổng các số lẻ trong phạm vi từ a đến b.
Ghi bảng (sửa lại nội dung đề bài toán)


<i><b>Bài 1: Viết CT nhập vào 2 số nguyên </b></i>


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

Hs. -Ghi đề bài tốn


-Lắng nghe, phân tích bài toán và trả lời:


Gv. - So sánh với bài tốn trước thì có gì khác?
- Ta cần đưa ra màn hình mấy giá trị?



- Việc chính cần thực hiện trong câu lệnh lặp là
gì?


- Hãy mơ tả việc trên bằng lệnh lặp For?
Hs. Đứng tại chổ trả lời:


For I:=a To b Do
If I mod 2 =0
then S1:=S1+I
else S2:=S2+I ;


Gv. Cho hs thảo luận nhóm
Hs. Học sinh thảo luận nhóm
Báo cáo kết quả theo nhóm


Gv. Nhận xét chỉnh sửa và cho chạy thử chương
trình.(chương trình soạn trước)


Tl: tính tổng các số chẵn và tổng các
số lẻ riêng


Tl: 2 giá trị (S1: tổng chẵn; S2: tổng
lẻ)


Tl: Kiểm tra biến đếm i : nếu i là chẵn
thì S1:=S1+i ngược lại (i là lẻ)thì
S2:=S2+i.


<i>Chương trình</i>



<b>Var a, b, i , S1, S2 : longint;</b>
<b>Begin </b>


Write(‘Nhap a va b (a<b): ‘);
Readln(a, b);


S1 := 0; S2 := 0;
<b> For i := a To b Do </b>
If i mod 2 = 0


then S1 := S1 + i
else S2 := S2 + i;
Writeln(‘Tong chan: ’, S1,


’ Tong le: ’,S2);
Readln


<b>End.</b>


<b>Hoạt động 2: Tiếp tục vận dụng câu lệnh lặp For để giải quyết một bài toán đơn</b>
<b>giản</b>


<b>Gv. Nêu đề bài toán (Ghi bảng)</b>


- Cách tính tiền gửi tiết kiệm hàng tháng như
thế nào?


- Vậy, cơng thức tính tiền thu được sau mỗi
tháng như thế nào?



- câu lệnh lặp này lặp bao nhiêu lần?


- Xác định giá trị đầu và giá trị cuối của câu
lệnh For để thực hiện việc lặp trên?


<b>Hs. Đọc đề bài, phân tích và trả lời câu hỏi</b>




-Thảo luận nhóm và tự viết chương trình


<b>Gv. Chuẩn hóa lại bài làm của hs bằng chương</b>


trình mẫu (treo chtrình đã chuẩn bị trên bảng
phụ).


- Chạy chương trình.


- Thử nghiệm với 1 năm, 14 tháng,….


<b>Hs. Quan sát chtrình của giáo viên và ghi nhớ.</b>


<b>Bài 2: Ơng Ba có số tiền là S, ông gửi</b>


tiết kiệm ngân hàng với lãi suất
1.5%/tháng. Hỏi sau 12 tháng gửi
(không rút tiền lãi hàng tháng), ông ta
được số tiền là bao nhiêu?



<i>Phân tích</i>


Tl: Với số tiền S, sau mỗi tháng sẽ có
lãi là: 0.015*S.


Số tiền này sẽ cộng vào số tiền ban
đầu để tính lãi cho tháng tiếp theo.
<b>Tl: S := S + 0.015*S;</b>


Tl: 12 lần


Tl: gtrị đầu là 1; gtrị cuối là 12.


<i>Cài đặt chương trình</i>
<b>Var s:real; i:byte;</b>
<b>Begin</b>


Write(‘So tien ban dau: ’);
Readln(S);


<b> For i:= 1 To 12 Do S:= S +</b>
0.015*S;


Writeln(‘So tien nhan duoc la:
’,S:8:3);


Readln


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

<b>toán đơn giản.</b>
<b>Gv. hướng dẫn học sinh tìm thuật tốn</b>



- Hs nghe giảng


<b>Gv. phân nhóm cho hs thảo luận tính tổng sử </b>


<b>dụng lệnh While_do</b>


<b>Hs. thảo luận nhóm</b>


- Báo cáo kết quả


- Chú ý theo dõi và nhận xét
- Ghi chép.


<b>Gv. treo kết quả hs lên hoặc gọi hs lên trình bày</b>


* Chuẩn hóa lại bài làm của hs bằng chương
trình mẫu (treo chtrình đã chuẩn bị trên bảng
phụ).


<b>Bài 2 : Tính tổng sau.</b>
S 1 2 3 4 ... n      <b> </b>
<i>Phân tích</i>


b1: S0; i0;


b2:Nếu i<n Chuyển đến b5
b3: ii+1;


b4: SS+i; rồi quay lại bước 2


b5: Đưa S ra màn hình


<i>Cài đặt chương trình</i>
<b>Program vd;</b>


<b>Var I,n, S:integer;</b>
<b>Begin</b>


Writeln(‘Nhập vào gtrị n = ’);
S:=0;


i:=0;


<b> While i<=n do</b>
<b> Begin</b>


S:=S+1;
Inc(i);


<b> End;</b>


Writeln(‘Tổng của ’,n,’ số là ‘,S);
Readln;


<b>End.</b>
<b>4. Cũng cố, dăn dò</b>


- Cấu trúc chung của Câu lệnh lặp While . . . Do, Câu lệnh lặp For . . . do
- Về nhà xem lại các bài tập đã giải và làm bài tập còn lại trong sgk.



<b>V. PHỤ LỤC</b>


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

Tiết 18 Ngày giảng :…/…/….


<b>KIỂM TRA 1 TIẾT</b>
<b>I. MỤC ĐÍCH, YÊU CẦU</b>


<i><b>1. Mục tiêu đánh giá:</b></i>


Đánh giá kết quả học tập của học sinh sau khi học xong chương II:


Các thành phần cơ sở của Ngơn ngữ Pascal; phép tốn, biểu thức, câu lệnh gán; tổ
chức vào ra đơn giản, cấu trúc rẽ nhánh và lặp.


<i><b>2. Yêu cầu của đề:</b></i>


- Về kiến thức: kiểm tra kiến thức của HS về quy tắc đặt tên biến; biết cách khai
báo; viết biểu thức; hiểu câu lệnh gán.


- Vận dụng kiến thức về biểu thức, câu lệnh gán, vào ra đơn giản, cấu trúc rẽ nhánh
và lặp.


<b>II. NỘI DUNG</b>


<i><b>1.</b></i> Ma trận đề:


<b>Nội </b>
<b>dung-Điểm</b>
<b>Mức độ</b>



<b>Đề 1</b> <b>Đề 2</b>


Biết Câu 1, 2


1 điểm


Câu 1, 2


1 điểm


Hiểu Câu 3, 5, 9


4 điểm


Câu 3, 5, 9


4 điểm


Vận dụng Câu 4, 6, 7, 8, 10


5 điểm


Câu 4, 6, 7, 8, 10


5 điểm


Tổng 10 câu


10 điểm 10 câu 10 điểm



<i><b>2. Nội dung đề kiểm tra:</b></i>


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

A. Phần trắc nghiệm: 0,5 điểm/ câu


Câu 1 Câu 2 Câu 3 Câu 4 Câu 5 Câu 6 Câu 7 Câu 8


Đề 1 C B C C B B C D


Đề 2 C D B C A D B B


B. Phần tự luận:
Đề 1:


<i><b>Câu 9 (3điểm) Dòng 1: khai báo biến i thuộc kiểu số nguyên (Byte).</b></i>


Dòng 2: gán giá trị 100 cho biến i.


Dịng 3: Đưa xâu kí tự và giá trị của biến i ra màn hình.
Dịng 4: gán giá trị của biểu thức i+10 cho biến i.


Dòng 5: đưa xâu kí tự và giá trị của i lúc sau ra màn hình và chừa 5 chỗ để
ghi giá trị của i.


Dịng 6: Tạm dừng chương trình để quan sát kết quả trên màn hình.


<i><b>Câu 10: (3điểm)</b></i>


Var i, n, S : Integer;
Begin



S := 0;


For i := 1 to n Do


If i Mod 2 <> 0 Then S := S+ sqr(i);


Writeln(‘Tong cac so le la: ’,S);


Readln
End.


Đề 2:


<i><b>Câu 9: (3điểm)</b></i>


Dòng 1: khai báo biến s, n, i thuộc kiểu số nguyên (Byte).
Dòng 2: Thông báo nhập giá trị n, đọc giá trị n.


Dòng 3: Gán giá trị đầu tiên cho biến s là 1999.


Dòng 4: Cho biến i lặp từ giá trị đầu bằng 0 cho tới n và thực hiện câu lệnh
tương ứng tăng giá trị của tổng s:= s+ (2*i +1).


Dịng 5: Đưa kết quả tính tổng ra màn hình..


Dịng 6: Tạm dừng chương trình để quan sát kết quả trên màn hình.


<i><b>Câu 10: (3điểm)</b></i>


<b>Var</b> i, n, S : Integer;



<b>Begin</b>


S := 0;


<b> </b> <b>For i := 1 to n do S := S+ sqr(i);</b>


Writeln(‘Tong cac so le la: ’,S);
Readln


<b>End.</b>


<i>Lưu ý: HS có thể sử dụng câu lệnh While_Do</i>


Var i, n, S : Integer;


<b>Begin</b>


S := 0; i := 1;


<b>While i < n do</b>
<b>Begin</b>


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

Writeln(‘Tong cac so le la: ’,S);
Readln


<b>End.</b>
<b>III. PHỤ LỤC</b>


Thống kê



………
………...
...
...
..


<b>Chương 4: KIỂU DỮ LIỆU CÓ CẤU TRÚC</b>


Tuần 10


Tiết 19 Ngày soạn: 28/09/2010Ngày giảng :…/…/….


<b>Bài 11: KIỂU MẢNG</b>
<b>I. MỤC ĐÍCH, YÊU CẦU</b>


<i>1. Kiến thức</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 mảng một chiều, cách khai báo biến kiểu mảng một chiều.


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


- Biết được các thành phần trong khai báo kiểu mảng một chiều;


- Biết được định danh của một phần tử kiểu mảng một chiều xuất hiện trong một
chương trình;



- Biết cách khai báo mảng đơn giản với chỉ số miền con của kiểu nguyên;
- Biết cách tham chiếu đến các phần tử của mảng một chiều.


<i><b> 3. Tư duy và thái độ: Tự giác, tích cực, chủ động và sáng tạo trong tìm kiếm tri thức.</b></i>


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


<b>1. Giáo viên: giáo án, sgk, sơ đồ cấu trúc mảng 1 chiều</b>
<b>2. Học sinh: sgk</b>


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


<b> -Đặt vấn đề,gợi mở thuyết giảng.</b>
<b>IV. HOẠT ĐỘNG DẠY HỌC</b>
<b>1. Ổn định lớp :</b>


- Chào thầy cô .


- Cán bộ lớp báo cáo sĩ số .
- Chỉnh đốn trang phục .


<b>2. Kiểm tra bài cũ (Không kiểm tra)</b>
<b>3. Bài mới</b>


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

Trước khi vào bài, giáo viên đưa ra một số vấn
đề cần giải quyết như sau :


Với những kiểu dữ liệu như đã biết, làm thế nào
để :



- 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à xử lý bảng kết quả thi tốt
nghiệp ?


<b>HS : Đưa ra các phương án để trả lời cho 3 câu</b>


hỏi trên .


<b>GV : Các ngơn ngữ lập trình thường cung cấp</b>


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 3 câu hỏi
trên .


<b>GV : Đưa ra ví dụ, cần lập lập trình xử lý một</b>


dãy số nguyên, hãy tìm cách lưu trữ một dãy số
ngun trong khi lập trình ?


Có thể sử dụng ví dụ trong SGK để
học sinh dễ theo dõi, gõ trước chương
trình để có thể sử dụng cho các phần
tiếp theo .



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

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 3 câu hỏi
trên .


<b>GV : Đưa ra ví dụ, cần lập lập trình xử lý một</b>


dãy số nguyên, hãy tìm cách lưu trữ một dãy số
nguyên trong khi lập trình ?


Bằng cách nào để lưu trữ được thông tin dưới
dạng bảng khi lập trình ?


<b>HS : Đưa ra ý kiến .</b>


<b>GV : Đánh giá ý kiến của học sinh, sau đó đưa ra</b>


mục đích của việc sử dụng cấu trúc mảng trong
chương trình .


<b>GV : Đưa ra khái niệm mảng một chiều và một</b>


số yếu tố liên quan trong lập trình nói chung .


<b>GV : Đi sâu phân tích hai chương trình để cho</b>


học sinh nhận thấy sự tiện lợi khi sử dụng mảng .


<b>HS : Trong khi giáo viên phân tích hai chương</b>



trình, học sinh sẽ đưa ra ý kiến nhận xét về 2
chương trình.


<b>GV : Đưa ra cách khai báo mảng một chiều trong</b>


ngôn ngữ Pascal, giải thích ý nghĩa của các từ
khóa mới .


<b>GV : Khai báo bằng cách nào tiện lợi hơn ?</b>
<b>HS : Thường thì học sinh trả lời cách 1 tiện lợi</b>


<b>mảng :</b>


- 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à một dãy hữu hạn
các phần tử có cùng kiểu, mảng được
đặt tên và mỗi phần tử mang một chỉ
số. Để mô tả mảng một chiều ta cần
xác định kiểu của các phần tử và
cách đánh chỉ số các phần tử .


<b>Với mảng một chiều ta quan tâm</b>
<b>đến :</b>


- Tên mảng một chiều .



- Số lượng phần tử trong mảng .
- Kiểu dữ liệu của phần tử .
- Cách khai báo biến mảng một


chiều .


- Cách truy cập vào từng phần
tử của mảng .


<b>Xét ví dụ : Nhập vào nhiệt độ trung</b>


bình mỗi ngày trong tuần . Tính và
đưa ra màn hình nhiệt độ trung bình
của cả tuần và đếm số ngày có nhiệt
độ lớn hơn nhiệt độ trung bình này .
Quan sát hai chương trình viết bằng
ngơn ngữ Pascal cùng để giải bài toán
trên .


- Chương trình 1 : Khơng sử
dụng kiểu mảng .


- Chương trình 2 : Sử dụng kiểu
mảng một chiều .


<b>a> Khai báo mảng một chiều </b>


Trong ngôn ngữ Pascal, mảng một
chiều được khai báo bằng hai cách


như sau :


<b>Cách 1 :</b>


Var <Tên mảng> : Array[kiểu chỉ số]
of <kiểu phần tử> ;


<b>Cách 2 : </b>


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

- Cấu trúc của mảng và hai cách khai báo mảng
- Làm bài tập và xem bài mới


<b>V. PHỤ LỤC</b>


………
………
………
………
………
………
………
Tuần 10


Tiết 20 Ngày soạn: 28/09/2010Ngày giảng :…/…/….


<b>Bài 11: KIỂU MẢNG</b>
<b>I. MỤC ĐÍCH, YÊU CẦU</b>


1. Kiến thức: Khai báo kiểu, biến mảng một chiều, cách tham chiếu dến các p/tử trong
mảng.



<b>2. Kĩ năng: Hs sử dụng được biến kiểu mảng một chiều để giải quyết một bài toán đơn </b>
giản.


<b>3. Tư duy và thái độ: Tự giác, tích cực, chủ động và sáng tạo trong tìm kiếm tri thức.</b>


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


<b>1. Giáo viên: giáo án, bảng phụ, sgk</b>
<b>2. Học sinh: sgk</b>


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


Thuyết trình vấn đáp, gợi mở giải quyết vấn đề


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


- Chào thầy cô .


- Cán bộ lớp báo cáo sĩ số .
- Chỉnh đốn trang phục .


<b>2. Kiểm tra bài cũ</b>
<b>3. Bài mới</b>


<b>Hoạt động của Gv & Hs</b> <b>Nội dung</b>


<b>Hoạt động 1: Bài tốn tìm max với thuật tốn so sánh</b>
<b>GV : Đưa ra ví dụ .</b>



<b>HS : Xây dựng thuật toán để giải bài toán (thuật</b>


toán đã học ở lớp 10) .


<b>GV soạn sẵn chương trình và cho học sinh quan</b>


sát chương trình .


Nếu có nhiều thời gian, giáo viên sẽ tiến hành


<b>b> Một số ví dụ : </b>


<b>Ví dụ 1 : Tìm phần tử lớn nhất của</b>


một dãy số nguyên .


<b>- Input : Số nguyên dương N và</b>
dãy số A1, A2, ….., AN


<b>- Output : Chỉ số và giá trị của số</b>
lớn nhất trong dãy


<b>- Ý tưởng : </b>


+ Đặt số A1 là số lớn nhất (max)
+ Cho i lặp từ 2 đến N, nếu


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

dàng nhận ra các thao tác cần phải thực hiện khi



viết chương trình . <b>Chương trình như sau :</b>Program timmax ;
Uses crt ;


var a : array[1..250] of integer ;
n,i,max,csmax : Integer ;
Begin


clrscr ;


Write('Nhap n = ') ;
Readln(n) ;


For i := 1 to n do
Begin


Write('a[',i,'] = ') ;
readln(a[i]) ;
End ;


max := a[i] ;
csmax := 1 ;
For i := 2 to n do
If a[i] > max then
Begin


max := a[i] ;
csmax :=i ;
End ;


Writeln('Gia tri lon nhat : ',max) ;


Writeln('chi so ptu lon nhat :
',csmax) ;


Readln ;
End .


<b>Hoạt động 2: Bài toán sắp xếp với thuật tốn tráo đổi</b>
<b>GV : Đưa ra ví dụ, nhắc lại ý tưởng của thuật toán</b>


.


<b>HS : Xây dựng thuật toán để giải bài toán (thuật</b>


toán đã học ở lớp 10) .


<b> GV soạn sẵn chương trình và cho học sinh quan</b>
sát chương trình .


Nếu có thời gian, giáo viên sẽ tiến hành soạn
chương trình từ đầu để học sinh có thể dễ dàng
nhận ra việc chuyển đổi ngơn ngữ từ ngơn ngữ
thuật tốn sang ngơn ngữ lập trình .


<b>Ví dụ 2 : Sắp xếp dãy số nguyên</b>


theo bằng thuật toán tráo đổi .


<b>- Input : Số nguyên dương N và</b>
dãy số A1, A2, …, AN



<b>- Output : Dãy A được sắp xếp</b>
theo thứ tự không giảm .


<b>- Ý tưởng :</b>


+ Đổi để đưa số lớn nhất về vị
trí cuối cùng .


+ Làm tương tự đối với những
số cịn lại .


<b>Chương trình như sau :</b>


Program sapxep ;
Uses crt ;


var A : Array[1..250] of integer ;
n,i,j,tg : Integer ;


Begin
clrscr ;


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

For i := 1 to n do
Begin


Write('A[',i,'] = ') ;
readln(A[i]) ;
End ;


For j := n downto 2 do


Begin


For i := 1 to j-1 do
If A[i] > A[i+1] then
Begin


tg := A[i] ;
A[i] := A[i+1] ;
A[i+1] := tg ;
End ;


End ;


Writeln('day sau khi sap xep : ') ;
For i := 1 to n do


write(a[i]:8) ;
readln ;
End .


Writeln('chi so ptu lon nhat :
',csmax);


readln ;
End .


<b>4. Cũng cố, dăn dò</b>


- Cấu của mảng một chiều



- Cách khai báo, nhập và truy xuất phần tử của mảng
- Về nhà làm bài tập sách giáo khoa


<b>V. PHỤ LỤC</b>


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

Tiết 21 Ngày giảng :…/…/….


<b>Bài 11: KIỂU MẢNG</b>
<b>I. MỤC ĐÍCH, YÊU CẦU</b>


1. Kiến thức: Khai báo kiểu, biến mảng một chiều, cách tham chiếu dến các p/tử trong
mảng.


<b>2. Kĩ năng: Hs sử dụng được biến kiểu mảng một chiều để giải quyết một bài toán đơn </b>
giản.


<b>3. Tư duy và thái độ: Tự giác, tích cực, chủ động và sáng tạo trong tìm kiếm tri thức.</b>


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


<b>1. Giáo viên: giáo án, bảng phụ, sgk</b>
<b>2. Học sinh: sgk</b>


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


Thuyết trình, vấn đáp, gợi mở giải quyết vấn đề


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



- Chào thầy cô .


- Cán bộ lớp báo cáo sĩ số .
- Chỉnh đốn trang phục .


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


1. Nêu cách khai báo mảng và giải thích từng thành phần câu lệnh
2. Cách nhập giá trị cho mảng và truy xuất giá trị của mảng.


<b>3. Bài mới</b>


<b>Hoạt động của Gv & Hs</b> <b>Nội dung</b>


<b>GV : Đưa ra ví dụ, nhắc lại ý tưởng của thuật</b>


toán .


<b>HS : Xây dựng thuật toán để giải bài toán (thuật</b>


toán đã học ở lớp 10) .


<b>GV soạn sẵn chương trình và cho học sinh quan</b>


sát chương trình .


<b>Ví dụ 3 : Tìm kiếm nhị phân .</b>


<b>- Input : Dãy số A</b>1, A2,………,
AN đã được sắp xếp tăng dần .


<b>- Output : Có hay khơng chỉ số</b>


i mà A[i] = k hoặc thơng báo
khơng tìm thấy .


<b>- Ý tưởng : </b>


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

Nếu có thời gian, giáo viên sẽ tiến hành soạn
chương trình từ đầu để học sinh có thể dễ dàng
nhận ra việc chuyển đổi ngôn ngữ từ ngôn ngữ
thuật tốn sang ngơn ngữ lập trình .


<b>Chương trình như sau : </b>


Program sapxep ;
Uses crt ;


var A : Array[1..250] of integer ;
n,i,k : Integer ;


dau,cuoi,giua : Integer ;
TK : boolean ;


Begin
clrscr ;


Write('Nhap so ptu mang n = ') ;
Readln(n) ;


For i := 1 to n do


Begin


Write('A[',i,'] = ') ;
readln(A[i]) ;
End ;


Write('nhap so can tim k : ') ;
Readln(k);


dau := 1 ; cuoi := n ;
TK := false ;


while (dau <= cuoi) and Not TK Do
Begin


giua := (dau+cuoi) div 2 ;
If A[giua] = k then TK := true
Else


If a[giua]>k then cuoi := giua - 1
Else dau := giua + 1 ;


End ;


If TK then write('Chi so la : ',giua)
else write(' Khong tim thay ');
readln ;


End .



<b>4. Cũng cố, dăn dị</b>


- Làm lại các ví du để khắc sâu lý thuyết.
- Làm bài tập SGK


- Học bài mới phần 2. Kiểu mảng hai chiều


<b>V. PHỤ LỤC</b>


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

………


Tuần 11


Tiết 22 Ngày soạn: 04/10/2010Ngày giảng :…/…/….


<b>Bài 11: KIỂU MẢNG</b>
<b>I. MỤC ĐÍCH, YÊU CẦU</b>


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


- Biết được một kiểu dữ liệu mới là kiểu mảng hai chiều.


- Biết được cách tạo kiểu mảng hai chiều, cách khai báo biến, tham chiếu đến từng phần
tử của mảng


<i>2. Kỹ năng</i>


- Tạo được kiểu mảng hai chiều và khai báo biến mảng hai chiều trong ngơn ngữ lập trình
Pascal. Sử dụng đúng biến mảng để giải quyết một số bài toán cụ thể



<i><b>3. Tư duy và thái độ: Tự giác, tích cực, chủ động và sáng tạo trong tìm kiếm tri thức.</b></i>
<b>II. CHUẨN BỊ</b>


<b>1. Giáo viên: giáo án, bảng phụ, sgk, projector, phiếu học tập.</b>
<b>2. Học sinh: sgk</b>


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


Thuyết trình, vấn đáp, gợi mở, hoạt động project


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


- Chào thầy cô .


- Cán bộ lớp báo cáo sĩ số .
- Chỉnh đốn trang phục .


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


Lập trình nhập vào từ bàn phím một dãy số nguyên bất kỳ sau đó đưa ra giá trị lớn
nhất và nhỏ nhất của dãy số đó


<b>3. Bài mới</b>


<b>Hoạt động của Gv & Hs</b> <b>Nội dung</b>


<b>Hoạt động 1: Khái niệm và khai báo mảng hai chiều</b>
<b>GV : Quay lại ví dụ về lưu trữ dữ liệu dạng bảng</b>



để các em nhận ra nhu cầu phải sử dụng mảng 2
chiều trong lập trình .


<b>2. Kiểu mảng 2 chiều :</b>


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

<b>GV : Khai báo cách nào tiện lợi hơn (tương tự</b>


mảng 1 chiều) ?


<b>HS : Thường thì học sinh vẫn chọn cách 1 .</b>
<b>GV : Tùy theo trường hợp cụ thể nhưng thường</b>


thì cách 1 hay được dùng hơn .


<b>GV : Khi khai báo mảng 2 chiều cần chú ý điều</b>


gì ?


<b>HS : Tìm câu trả lời, GV gợi ý để các em chỉ ra</b>


được 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 .


<b>GV : Gọi một số học sinh lên khai báo một số</b>


biến mảng một chiều theo yêu cầu của giáo viên .


Minh họa bằng hình ảnh mảng 2 chiều và chỉ số


<b>đến :</b>



- Tên kiểu mảng hai chiều .
- Số lượng phần tử của mỗi


chiều trong mảng .


- Kiểu dữ liệu của phần tử .
- Cách khai báo biến mảng hai


chiều .


- Cách truy cập vào từng phần
tử của mảng .


<b>a> Khai báo mảng hai chiều</b>


- Trong ngôn ngữ Pascal, mảnh hai
chiều được khai báo như sau :


<b>Cách 1 : Khai báo trực tiếp</b>


Var : <Tên mảng> : Array[kiểu chỉ số
dòng, kiểu chỉ số cột] of < kiểu phần
tử> ;


<b>Cách 2 : Khai báo gián tiếp thông </b>


qua khai báo kiểu mảng


<i>Type <Tên kiểu mảng> = Array[kiểu </i>



<i>chỉ số dòng, kiểu chỉ số cột] of <kiểu </i>
<i>phần tử> ;</i>


<i>Var <Tên mảng> : <Tên kiểu mảng> ;</i>


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


<b>Khai báo biến mảng thông qua </b>
<b>kiểu mảng :</b>


Type


ArrayInteger = Array[1..10,1..15] of
Integer ;


ArrayReal=Array[1..50,1..100] of
Real ;


Var A : ArrayInteger ;
B : ArrayReal ;


<b>Khai báo mảng trực tiếp :</b>


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

truy cập phần tử mảng .


<b>Cách truy cập vào phần tử của </b>
<b>mảng hai chiều :</b>


<i><Tên mảng>[chỉ số dịng, chỉ số cột]</i>



<b>Ví dụ : A[1,3], B[23,66],……</b>
<b>Hoạt động 2: Một số ví dụ về mảng hai chiều</b>


<b>GV cho học sinh quan sát chương trình và giải</b>


thích các lệnh trong chương trình, chú ý đi sâu
vào các lệnh lặp để các em nhận ra thường thì ta
<b>sử dụng vịng lặp for - do để duyệt qua các phần</b>
tử mảng .


GV nên soạn sẵn chương trình và cho các em
quan sát chương trình, và chạy thử chương trình
trên máy để các em tiện theo dõi .


<b>Program Timkiem;</b>


Uses crt;


var A : Array[1..100,1..100] of Integer;
i,j,n,m : Byte ;


k,d : integer ;
Begin


Clrscr ;


Write(' Nhap so dong, so cot cua mang : ') ;
Readln(m,n);



For i := 1 to m do
For j := 1 to n do
Begin


Write(' A[',i,',',j,'] = ');
Readln(A[i,j]);


End ;


Writeln(' Mang vua nhap vao la : ');
Writeln;


For i := 1 to m do
Begin


For j := 1 to n do
Write(a[i,j]:4) ;
Writeln;


Writeln;
End;


Write(' Nhap gia tri k : ');
Readln(k) ;


d := 0 ;


For i := 1 to m do
For j := 1 to n do



<b>> Một số ví dụ :</b>
<b>Ví dụ 1 :</b>


Chương trình sau đưa ra màn hình
bảng cửu chương .


Program cuuchuong;
Uses crt ;


var A : Array[1..9,1..9] of Integer ;
i, j : Byte ;


Begin
Clrscr ;


Writeln('Bang cuu chuong 1 -> 9 : ');
Writeln ;


For i := 1 to 9 do
For j := 1 to 9 do
A[i,j] := i*j ;
For i := 1 to 9 do
Begin


For j := 1 to 9 do Write(a[i,j]:4);
Writeln ;


Writeln ;
End ;
Readln ;


End .


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


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

Begin


write('So nho hon ',k,' la ');
write(a[i,j]:8);


d := d+1 ;
End ;
If d = 0 then


Write('Khong co ptu nao nho hon ',k);
readln;


End .


<b>4. Cũng cố, dăn dị</b>


- Ơn cấu trúc mảng


- ôn lại cấu trúc lặp để nhập giá trị và truy xuất phần tử của mảng
- Về nhà xem lại các bài tập đã giải và làm bài tập còn lại trong sgk.


<b>V. PHỤ LỤC</b>


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

Tiết 23-24 Ngày giảng :…/…/….


<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. Về kiến thức:</b></i>


- Củng cố cho HS những hiểu biết về kiểu dữ liệu mảng.


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


- Khai báo được kiểu dữ liệu mảng, nhập dữ liệu mảng, đưa ra màn hình chỉ số và giá
trị của các phần tử mảng.


- Duyệt qua phần tử của mảng để xử lý từng phần tử.


- Nâng cao kĩ năng sử dụng một số kiểu lệnh kiểu dữ liệu mảng một chiều trong lập
trình, cụ thể:


+ Khai báo kiểu dữ liệu mảng một chiều
+ Nhập, xuất dữ liệu cho mảng


+ Duyệt qua tất cả các phần tử của mảng để xử lý từng phần tử.
- Biết giải một số bài toán thường gặp:


+ Tính tổng các phần tử thoả mãn các điều kiện nào đó
+ Đếm số các phần tử thoả mãn điều kiện nào đó
+ Tìm phần tử lớn nhất, nhỏ nhất


<i> 3. Về tư duy và thái độ:</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. CHUẨN BỊ:</b>


1.GV: Phịng máy tính, máy chiếu Projector.
2. HS: SGK, bài tập.


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


- Vấn đáp tìm tịi, vấn đáp tái hiện, giải quyết vấn đề.


<b>IV. TIẾN TRÌNH BÀI HỌC:</b>


<i><b>Tiết 23</b></i>


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


- Chào thầy cô .


- Cán bộ lớp báo cáo sĩ số .
- Chỉnh đốn trang phục .


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


Lập trình nhập vào từ bàn phím một dãy số nguyên bất kỳ sau đó đưa ra giá trị lớn
nhất và nhỏ nhất của dãy số đó


<b>3. Bài mới</b>


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

Gv. Cài đặt và trình chiếu CT mẫu
bài 1a.



<b> </b>


<b>- MyArray là tên kiểu dữ liệu hay tên</b>


biến?


Hs. Xem bài mẫu được trình chiếu và
trả lời


Gv. Nhận xét. Chạy thử chương trình
1a


- Dòng lệnh nào dùng để tạo biến
mảng A?


<b> - Lệnh For i:=1 to n do </b>


<b>Write(A[i]:5); có ý nghĩa gì?</b>


<b> - Lệnh For i:=1 to n do If A[i] </b>


<b>mod k = 0 then s:=s + A[i]; thực </b>


hiện nhiệm vụ gì?


<b> - Lệnh s:=s+A[i]; được thực hiện </b>
bao nhiêu lần.


Hs. Trả lời các câu hỏi đặt ra



Gv. Cho hs tự chạy thử chương trình.
Để lấy kết quả.


Gv. Chiếu bài 1b. cho học sinh phân
tích ý nghĩa và tác dụng của từng
dịng lệnh


Hs. Thảo luận nhóm
Báo cáo kết quả
Gv. Nhận xét


Gv. Cho học sinh chạy chương trình
và quan sát kết quả


<b>Bài 1a.</b>


<b>{1}Program sum1;</b>


<b>{2}Type Myarray=array[1..100] of integer;</b>
<b>{3}Var A : Myarray;</b>


s,n,i,k: integer;
<b>{4}begin</b>


{5}write(‘nhap n=’); readln(n);


<b>{6}for i:=1 to n do A[i]:=radom(301)- </b>
radom(301);


<b>{7}for i:=1 to n do write(A[i]:5);writeln;</b>


{8}write(‘nhap k=’);readln(k);


{9}s:=0;


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


<b>{10} if A[i] mod k= 0 then s:=s+A[i];</b>
{11}writeln(‘tong so can tinh la’,s);


{12}readln
<b>{13}end.</b>


<i>Giải thích một số dòng lệnh cơ bản</i>


{2}: khai báo một kiểu mảng tối đa 100 phần tử
{3}: tạo ra biến mảng A


{6}: Tạo mảng ngẫu nhiên gồm n số nguyên
{7}: viết ra mảng vừa tạo


<b>- Lệnh For i:=1 to n do If A[i] mod k = 0 then </b>


<b>s:=s + A[i]; thực dùng để tính tổng các bội số </b>


của k


<b>- s:=s+A[i]; thực hiện n lần</b>


<b>Bài 1b.</b>



<b>{1}Program Maxelement;</b>


<b>{2}Type Myarray=array[1..100] of integer;</b>
<b>{3}Var A : Myarray;</b>


n,i,j: integer;
<b>{4}begin</b>


{5}write(‘nhap sl day so n=’); readln(n);
<b>{6}for i:=1 to n do</b>


<b> Begin</b>


<b>{7} Write(‘nhap phan tu </b>
thu’,i,’=’);readln(A[i]);


<b> End;</b>
<b> J:=1</b>


<b>{8}for i:=2 to n do</b>


<b>{9} if A[i]>A[j] then j:=i;</b>


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

<b>{12}end.</b>


<i><b>4. Củng cố: </b></i>


- Yêu cầu HS sửa lại chương trình trên để có thể nhập một mảng có 10 phần tử từ bàn
phím.



- Học bài cũ và làm bài tập sgk


<b>V. PHỤ LỤC</b>


………
………
………
………
………
………
………


<i><b>Tiết 24 </b></i>


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


- Chào thầy cô .


- Cán bộ lớp báo cáo sĩ số .
- Chỉnh đốn trang phục .


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


Không kiểm tra


<b>3. Bài mới</b>


<b>Hoạt động của Gv & Hs</b> <b>Nội dung</b>


<b>Hoạt động 1: Ôn lại kiến thức để chuẩn bị làm bài tập và thực hành</b>


<b>Gv. Cách khai báo mảng trực tiếp? gián </b>


tiếp ?


<b>Hs. Trả lời câu hỏi</b>
<b>Gv. Nhận xét bổ sung</b>


<b>1. Khai báo mảng</b>


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


<i> Khai báo trực tiếp</i>


<b>var <tên biến mảng>: array[kiểu chỉ số] of</b>


<kiểu phần tử>;


<i>- Cách khai báo gián tiếp</i>


<b>type<tên kiểu mảng> = array[kiểu chỉ số] </b>


of <kiểu phần tử>;


<b>var <tên biến mảng> : <tên kiểu mảng></b>
<b>Hoạt động 2: Đọc đề và tìm hiểu yêu cầu bài tập 2 SGK</b>


<b>Gv. Yêu cầu HS đọc đề BT2 SGK</b>


u cầu của bài tốn là gì?



<b>Hs. Đọc đề và tìm hiểu yêu cầu của đề</b>


Trả lời câu hỏi


- Tìm phần tử có giá trị lớn nhất trong
mảng


- In ra màn hình chỉ số nhỏ nhất của phần
từ có giá trị lớn nhất


<b>Hoạt động 3: Đọc chương trình và chạy chương trình trên giấy để hiểu thuật tốn</b>
<b>của chương trình. Chỉnh sửa chương trình để đưa ra chỉ số của các phần tử có cùng</b>


<b>giá trị lớn nhất</b>
<b>Gv. - Việc tạo mảng dữ liệu được thể hiện </b>


ở phần nào trong chương trình ?


<b>Hs. Thể hiện ở câu lệnh for thứ nhất của </b>


chương trình.


<b>Gv. - Tìm giá trị lớn nhất và đưa ra màn </b>


Treo bảng phụ chương trình của bài tốn.
B1: j=1, i=2, A[i]=2, A[j]=4


 A[i]< A[j]
B2: j=1, i=3, A[i] = 5, A[j] =4



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

lớn nhất được thể hiện ở phần nào ?


<b>Hs. Từ j:=1 đến cuối chương trình</b>


<b>Hs. Vai trị của biến j trong chương trình </b>


nhằm mục đích gì ?


<b>Hs. Giữ lại chỉ số của phần tử có giá trị lớn</b>


nhất.


<b>Gv. Thực hiện chương trình với giá trị của </b>


mảng nhập vào cụ thể như sau:


4 2 5 7 6 7


- Hãy dựa vào phần tìm giá trị lớn nhất và
chạy chương trình trên giấy nháp và cho
kết quả ?


- Gọi HS lên bảng chạy lại chương trình


<b>Hs. Thực hiện yêu cầu của GV.</b>
<b>Gv.</b>


- Có cần giữ lại đoạn chương trình tìm giá
trị lớn nhất khơng ?



- Để đưa ra màn hình tất các chỉ số của các
phần tử đạt giá trị lớn nhất có cần duyệt lại
các phân tử của mảng không ?


- Cần thêm lệnh nào có thê in được tất cả
các chỉ số của các phần tử có giá trị lớn
nhất ?


- Đưa câu lệnh đó vào vị trí nào của
chương trình ?


<b>Hs. </b>


- Có {1,2}
- Trả lời câu hỏi.


- Đưa vào cuối chương trình


 A[i]>A[j] j=4
B4: j=4, i=5, A[i]=6, A[j]=7


 A[i]<A[j]
B5: j=4, i=6, A[i]=7, A[j]=5


kết quả chỉ số: 4
A[4] = 7


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


<b> If A[i] = A[j] then write (i);</b>



<b>Hoạt động 4: HS chạy chương trình trên máy tính và cho kết quả:</b>


<i><b>4. Củng cố: </b></i>


- Yêu cầu HS sửa lại chương trình trên để có thể nhập một mảng có 10 phần tử từ bàn
phím.


- HS về nhà làm bài tập 4.15 trong sách bài tập.


- Chuẩn bị chương trình bài 2 bài thực hành 3 chương IV trong SGK.


<b>V. PHỤ LỤC</b>


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

Tiết 25-26 Ngày giảng :…/…/….


<b>BÀI TẬP VÀ THỰC HÀNH 4</b>
<b>I. MỤC ĐÍCH, YÊU CẦU</b>


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


- Củng cố kiến thức về dữ liệu kiểu mảng.


- Xây dựng cấu trúc dữ liệu, hiểu thuật toán sắp xếp bằng tráo đổi.


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


- Biết chỉnh sữa lỗi trong chương trình.


- Tự nhập các bộ dữ liệu để hiểu ý nghĩa một số câu lệnh.



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


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


- Nghiêm túc thực hiện đúng nội quy phòng máy, tự giác trong khi lập trình.


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


<b> 1. Gv:Bảng phụ viết sẵn chương trình, phịng máy, project.</b>
<b> 2. Hs: Sgk, CT đã được viết sẵn.</b>


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


<b> Thuyết trình vấn đáp, gợi mở giải quyết vấn đề</b>
<b>IV. Tiến hành dạy học</b>


<i><b>Tiết 25</b></i>
<i><b>1. Ổn định tổ chức lớp.</b></i>


- Chào thầy cô .


- Cán bộ lớp báo cáo sĩ số .
- Chỉnh đốn trang phục .


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


<b>Câu 1: Nêu cách khai báo kiểu mảng 1 chiều.</b>



<b>Câu 2: Nhập từ bàn phím xây dựng mảng một chiều A có 6 phần tử.</b>
<b>3. Bài mới</b>


<b>Hoạt động của Gv & Hs</b> <b>Nội dung</b>


<b>Hoạt động 1: Xác định bài tốn và tìm hiểu chương trình.</b>
<b>Gv. Chiếu đề bài lên bảng.</b>


<b>Hs. Quan sát đề và lằng nghe câu hỏi của gv.</b>


<b>Đề: Sắp xếp dãy số</b>


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

<b>Hs. Trả lời câu hỏi.</b>


- Vào: mảng A


- Ra: mảng A đã sắp xếp


<b>Gv.</b> minh hoạ bài toán:


<b>A 5 7 2 8 6 4</b>


1 2 3 4 5 6
Mảng A đã sắp xếp:


<b>A 2 4 5 6 7 8</b>


1 2 3 4 5 6
- Yêu cầu hs nhắc lại ý tưởng thuật toán(Lớp 10)



<b>Hs. Theo dãy số minh họa, nhớ lại thuật toán sắp xếp đã học.</b>
<b>Gv. Nhận xét và chiếu thuật toán đã được liệt kê các bước.</b>


Từ thuật toán yêu cầu học sinh viết chương trình


<b>Hs. Viết chương trình</b>


<b>Gv. Nhận xét và chạy chương trìn</b>
<i>* Tìm hiểu chương trình</i>


<b>Gv. - Vai trị của biến i, j trong CT?</b>


- Vai trò của biến i, j trong CT?


- Đoạn lệnh nào thực hiện tráo đổi giá trị 2 phần tử liền kề của
mảng?


<b>Hs. Trả lời câu hỏi.</b>


<b>Gv. Giải thích một số lệnh của CT.</b>


<b>Hs. Chú ý, lắng nghe, quan sát và ghi nhớ.</b>
<b>Gv. - Yêu cầu hs tự nhập dữ liệu với CT có sẵn.</b>


- Giúp hs phát hiện và sữa lỗi.


- Thuật toán trên tiến hành đưa số lớn thứ j về đến vị trí j
sau mỗi vịng lặp:


<b>For i:= 1 to j-1 do </b>



<b>Hs. Chạy CT, nhập dữ liệu, xm kết quả.</b>


- Chỉnh sữa CT thông qua các thông báo lỗi.
- Chú ý hiểu rõ thêm về CT


- Đoạn lệnh nào thực hiện tráo đổi giá trị 2 phần tử liền kề của
mảng?


Giải thích một số lệnh của CT.


<b>Hs. - Chú ý, lắng nghe, quan sát và ghi nhớ</b>


<i>* Chương trình</i>


SGK_trang 56


<b>- TL: Dùng làm biến</b>
chỉ số.


<b>- TL:3 lệnh: tg := a[i];</b>
a[i]:=


a[i+1];


a[i+1]:=
tg;


<b>Hoạt động 2: Xác định bài toán câu b.</b>
<b>Gv. - Y/cầu hs xác I/O bài toán?</b>



- Biến Dem được tăng lên khi nào?


<b>Hs. Trả lời câu hỏi</b>


<b>Gv. - Cần đưa câu lệnh tăng Dem vào chỗ nào trong CT trên?</b>
<b> - - Câu lệnh khởi tạo Dem:= 0 được đặt vào vị trí nào trong</b>


CT?


+ Trước CL đầu tiên:


For j:= N down to 2 do
+ Trước CL duyệt:


For i:= 1 to j-1 do
+ Trước 3 CL tráo đổi
+ Sau 3 CL tráo đổi


<b>Hs. Học sinh trả lời câu hỏi</b>


<b>Đề: Khai báo biến đếm</b>


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



<b>1. Xác định bài tốn:</b>


+ I: mảng a;


+O: mảng a đã sắp xếp,
số lần tráo đổi (Dem);


<b>TL: Khi A[i] > A[i+1] </b>


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

- Hướng dẫn hs chỉnh sửa và chạy CT.


<b>Hs. – Học sinh thảo luận nhóm (Thêm các CL như đã hướng</b>


dẫn vào CT.)


- báo cáo kết quả (Chạy CT)


<b>Gv. – Đánh giá kết quả của hs</b>


<b>TL: Trong thân CL If:</b>


trước hoặc sau 3 lệnh
tráo đổi.


<b>TL: Chọn một trong hai</b>


phương án 3, 4.


<i>* chương trình: Sửa câu</i>
lệnh theo gợi ý của



chương trình


SGK_trang 65


<b>4.Củng cố </b>


Uốn nắn những sai sót thường gặp của Hs.
Ơn tập lại lý thuyết


Xem, chuẩn bị trước bài toán thực hành


<b>V. PHỤ LỤC</b>


………
………
………
………
………
………
………


<i><b>Tiết 26</b></i>
<i><b>1. Ổn định tổ chức lớp.</b></i>


- Chào thầy cô .


- Cán bộ lớp báo cáo sĩ số .
- Chỉnh đốn trang phục .



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


Không kiểm tra


<b>3. Bài mới</b>


<b>Hoạt động của Gv & Hs</b> <b>Nội dung</b>


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

<b>Hs. gián tiếp:</b>


trực tiếp:


<i>* Tìm hiểu đề bài</i>


<b>Gv. Ghi đề bài lên bảng.</b>


<b> Y/cầu hs xác định dữ liệu vào/ra của bài toán?</b>
<b>Hs. Trả lời câu hỏi.</b>


<i>* Phân tích thuật tốn</i>


<b>Gv. </b> lấy ví dụ minh hoạ


<b>A 4 5 1 2 3 7</b>


1 2 3 4 5 6


<b>B</b>



1 2 3 4 5 6
Ban đầu: mọi B[i] = 0


<b>Hs. Theo dõi ví dụ minh hoạ</b>


<b>Gv. Hỏi: mỗi B[i] được tạo mới bằng bao nhiêu? </b>
<b>Gv. GV minh hoạ một số phần tử: B[1], B[2], B[3]</b>


- Y/cầu hs tìm kết quả mảng B theo ví dụ trên.


<b>Hs. </b>Học sinh trả lời:


<b>B 4 9 10 12 15 22</b>


1 2 3 4 5 6


<b>Gv. Y/cầu hs cho biết từng phần của CT cần xây dựng?</b>
<b>Hs. Học sinh trả lời câu hỏi</b>


<b>Gv. Bước B2 được cụ thể trong CT như thế nào?</b>
<b>Hs. sử dụng 2 vòng for lồng nhau.</b>


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


b[i]: =0;


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


b[i]:=b[i]+a[j];



<b>end;</b>


<i>* Tối ưu thuật tốn</i>


<b>Gv. Dựa vào phần phân tích ví dụ thuật toán ở trên.</b>


Gv hỏi: So sánh giá trị B[i] và B[i-1]?
Đặc biệt: B[1]=?


<b>Hs. Tl: B[i]:=B[i-1]+A[i]</b>


Tl: B[1]=A[1]


<b>Gv. Chúng ta ln hướng tới thuật tốn tối ưu. Đối với</b>


bài tốn này theo phân tích ở trên ta đã tận dụng được
kết quả của việc tính tổng i -1 phần tử có sẵn ở bước
trước.


- Do vậy ta có được:


+ Số lượng phép tốn '+' ít hơn
+Chỉ dùng 1 vòng lặp for


-> chỉ sd 1 biến chỉ số i cho cả 2 mảng A, B


<b>Hs. Nhìn bảng, tự điều chỉnh hành vi nhận thức.</b>


<b>Đề: Cho mảng A gồm n phần</b>



tử. Viết CT tạo ra mảng
B[1..n], trong đó B[i] là tổng
của i phần tử đầu tiên của
mảng A.


Input: A gồm n phần tử


Output: In ra mảng B(theo yêu
cầu)


<i>Tóm lại: B[i] = A[1] + …+</i>


A[i]


=
i


j=1
[ ]
<i>A j</i>




Khai báo:
+ k/báo mảng
+ biến đơn
Phần thân:
B1: tạo mảng A.



B2: xd mảng B theo A.
B3: In mảng B.


Chương trình cải tiến_SGK.tr
65/66


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

<b>Hs. Thực hành theo nhóm, báo cáo kết quả</b>
<b>Gv. Nhận xét, đánh giá kết quả</b>


<b>4.Củng cố </b>


Uốn nắn những sai sót thường gặp của Hs.
Ôn tập lại lý thuyết


Xem, chuẩn bị trước bài 12: Kiểu xâu.


<b>V. PHỤ LỤC</b>


………
………
………
………
………
………
………


Tuần 14


Tiết 27 Ngày soạn: 19/10/2010Ngày giảng :…/…/….



<b>Bài 11: KIỂU XÂU</b>
<b>I. MỤC ĐÍCH, YÊU CẦU</b>


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


- Biết được một kiểu dự liệu mới, biết được khái niệm kiểu xâu.
- Phân biệt được sự giống và khác giữa kiểu mảng với kiểu xâu.


- Biết được cách khai báo biến, nhập/xuất dữ liệu, tham chiếu dến từng kí tự của xâu.
- Biết các phép toán liên quan đến xâu.


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


- Khai báo được biến kiểu xâu trong ngơn ngữ lập trình Pascal.


- Sử dụng biến xâu và các phép toán trên xâu để giải quyết một bài toán đơn giản.


<i>3. Tư duy và thái độ:</i>


<b> Tự giác, tích cực, chủ động và sáng tạo trong tìm kiếm tri thức.</b>
<b>II. CHUẨN BỊ</b>


<i>1. GV: Máy vi tính, Máy chiếu để giới thiệu ví dụ.</i>
<i>2. HSSGK.</i>


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


Thuyết trình, vấn đáp


<b>IV. NỘI DUNG BÀI GIẢNG</b>


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


- Chào thầy cô .


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

<b>2. Kiểm tra bài cũ (không kiểm tra)</b>
<b>3. Bài mới</b>


<b>Hoạt động của Gv & Hs</b> <b>Nội dung</b>


<b>Hoạt động 1: Khái niệm về xâu</b>
<b>GV : Để lưu trữ và xử lý Họ tên của một người,</b>


các kiểu dữ liệu đã học có đáp ứng được ?


<b>HS : Đưa ra một số phương án .</b>


<b>GV : Phân tích các phương án của học sinh, từ</b>


đó đưa ra yêu cầu cần sử dụng một kiểu mới :
Kiểu xâu .


<b>GV : Giới thiệu một số khái niệm và thao tác </b>


thường dùng khi làm việc với xâu ký tự trong lập
trình nói chung .


<b>GV : Đây là cách khai báo trong ngôn ngữ</b>


Pascal, trong các ngôn ngữ khác nhau có thể có
cách khai báo khác nhau . Do đó khi viết chương


trình bằng ngơn ngữ nào cần tìm hiểu rõ các đối
tượng của ngơn ngữ đó .


Độ dài tối đa của xâu phụ thuộc vào ngôn ngữ
lập trình, thường là 255 ký tự .


Cách viết hằng xâu trong các ngôn ngữ khác
nhau cũng có sự khác nhau .


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


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


- Mỗi kí tự được gọi là một phần tử
của xâu .


- Số lượng kí tự trong xâu được gọi
là độ dài của xâu .


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


- Tham chiếu tới phần tử trong xâu
được xác định thông qua chỉ số
của phần tử trong xâu .


- Chỉ số phần tử trong xâu thường
được đánh số là 1 .



- Trong ngôn ngữ Pacal, tham
chiếu tới phần tử thường được
viết :


<Tên biến xâu>[chỉ số]


<b>Cách khai báo và xử lí xâu trong</b>
<b>ngơn ngữ Pascal :</b>


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


<b>Pascal sử dụng từ khóa STRING để</b>
khai báo xâu . Độ dài tối đa của xâu
<b>được viết trong [ ] sau từ khóa</b>


<b>STRING . Khai báo như sau :</b>


<i>Var <tên biến> : String[độ dài lớn</i>


<i>nhất của xâu] ;</i>
<b>Ví dụ : </b>


<b>Var Ten : String[10] ;</b>


Ho_dem : String[50] ;
Que : String ;


<b>Chú ý : </b>


- Nếu không khai báo độ dài tối đa


cho biến xâu kí tự thì độ dài
ngầm định của xâu là 255 .
- Độ dài lớn nhất của xâu là 255


ký tự .


- Hằng xâu kí tự được đặt trong
<b>cặp nháy đơn ‘ ’ .</b>


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

‘ nGuyen vaN A ’


Hỏi cần có các thao tác gì để chỉnh sửa xâu kí tự
này ? (cần đưa xâu về dạng ‘Nguyen Van A’)


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


<b>GV : Phân tích ý kiến và gợi ý để các em nhận ra</b>


cần :


- Xóa bớt một số dấu cách .


- Chuyển chữ hoa về chữ thường và ngược
lại .


<b>GV : Đưa ra một số câu hỏi :</b>


- Làm sao biết một ký tự là dấu cách ?
- Làm sao để xóa đi một vài kí tự ?



- Làm sao để thêm vào một xâu một vài kí
tự ?


- Làm sao để có được chữ in hoa tương ứng
với chữ thường.


- Làm sao có được chữ cái thường tương
ứng với chữ hoa ?


- Làm sao biết xâu hiện có bao nhiêu kí tự ?


<b>Từ đó đưa ra các thủ tục chuẩn và hàm chuẩn</b>
<b>của Pascal thường dùng để xử lí xâu .</b>


Ứng với mỗi thủ tục hoặc hàm, giáo viên lấy ví
dụ trong một chương trình Pascal cụ thể để các
em hiểu được ý nghĩa các thủ tục và hàm này .
Trong môi trường soạn thảo của Pascal, giáo viên
chỉ cần làm một chương trình đơn giản có sử
dụng một trong các thủ tục hoặc hàm này để các
em theo dõi .


<i><b>2 Các thao tác xử lí xâu</b></i>


- Với các xâu kí tự có các phép
phép xâu và phép so sánh hai
xâu kí tự .


- Phép ghép xâu : Kí hiệu bằng
<b>dấu cộng + .</b>



<b>Ví dụ : ‘Ha’ + ‘Noi’ cho kết quả là</b>


‘Ha Noi’


<b>Phép so sánh : <, <=, >, >=, = , <>,</b>


Pascal tự động so sánh lần lượt từ kí
tự từ trái sang phải .


<b>Ví dụ : ‘AB’ < ‘AC’, ‘ABC’ ></b>


‘ABB’, ‘ABC’ <’ABCD’


<b>Một số thủ tục chuẩn dùng để xử lí</b>
<b>xâu :</b>


<b>- Delete(St,vt,n) xóa n kí tự của</b>
xâu St bắt đầu từ vị trí vt .
<b>- Insert(S1,S1,vt) chèn sâu S1</b>


vào S2 bắt đầu từ vị trí vt của
S2


<b>- Val(St,x,m) Đổi giá trị xâu St</b>
thành số ghi giá trị vào biến X,
nếu 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</b>
xâu kí tự lưu trong St .


<b>Một số hàm chuẩn :</b>


<b>- Copy(St,vt,n) sao chép từ xâu</b>
St n kí tự từ vị trí vt .


<b>- Pos(S1,S2) tìm vị trí xuất hiện</b>
đầu tiên của S1 trong S2 .
<b>- Length(St) : cho độ dài xâu St</b>


.


<b>- Upcase(ch) : cho chữ cái viết</b>
hoa tương ứng với chữ thường
trong ch .


<b>- CHR(X) : cho kí tự có mã X</b>
trong bảng mã ASCII .


<b>Ord(ch) : cho mã của kí tự ch trong </b>


bảng mã .


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

- Về nhà xem lại các bài tập đã giải và làm bài tập còn lại trong sgk.


<b>V. PHỤ LỤC</b>


………


………
………
………
………
………
………


Tuần 14


Tiết 28 Ngày soạn: 24/10/2010Ngày giảng :…/…/….


<b>Bài 11: KIỂU XÂU</b>
<b>I. MỤC ĐÍCH, YÊU CẦU</b>


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


- Hiểu được lợi ích của các hàm và thủ tục liên quan đến xâu tring ngơn ngữ lập trình
Pascal.


- Nắm được cấu trúc ching và chức năng của một số hàm liên quan đến xâu.


<i>2. Kỹ năng</i>


- Bước đầu sử dụng được một số hàm, thủ tục thơng dụng về xâu.
- Có thể cài đặt được một số chương trình đơn giản có sử dụng xâu
<b>3. Tư duy và thái độ: </b>


<b> - Tự giác, tích cực, chủ động và sáng tạo trong tìm kiếm tri thức.</b>
<b>II. CHUẨN BỊ</b>



- GV: Giáo án, SGK, sách GV, bảng phụ soạn các ví dụ.
- HS: Sách GK.


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


- Đặt vấn đề.


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


- Diễn giải, dùng bảng để ghi lại các chi tiết quan trọng trong ví dụ


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

- Chào thầy cô .


- Cán bộ lớp báo cáo sĩ số .
- Chỉnh đốn trang phục .


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


1. Nêu khái niệm kiểu xâu và các thao tác trên xâu
2. Nêu các hàm xử lý xâu và ý nghĩa


<b>3. Bài mới</b>


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

Giáo viên soạn sẵn các ví dụ này để tiện
cho học sinh theo dõi trên màn hình cũng
như việc chạy thử và khơng làm mất thời
gian ngồi viết chương trình .


Với mỗi ví dụ, giáo viên đi sâu vào câu
lệnh trực tiếp đáp ứng yêu cầu của ví dụ,


như vậy các em sẽ tiếp thu nhanh hơn .


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


dài hơn .


<b>Ví dụ 2 : Nhập 1 xâu, kiểm tra xem ký tự</b>


đầu tiên của xâu S1 có trùng với ký tự cuối
cùng của xâu S2 hay khơng ?


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


đó theo thứ tự ngược lại của các ký tự trong
xâu .


<b>VD 1 : </b>


Program vd1 ;
Uses crt ;


Var s1,s2 : String ;
Begin


Clrscr ;


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


Write('Nhap xau thu 2 : ') ;


Readln(s2) ;


If length(s1) > Length(s2) then
Write(s1)


else


Write(s2);
Readln ;
End .


<b>VD 2 :</b>


Program vd2 ;
Uses crt ;


Var s1,s2 : String ;
x : Byte ;


Begin
Clrscr ;


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


Write('Nhap xau thu 2 : ');
Readln(s2) ;


x := length(s2) ;
If s1[1] = s2[x] then


Write('Trung nha')
else


Write('Khac nhau');
Readln ;


End .


<b>VD 3 : </b>


Program vd3 ;
Uses crt ;
Var i,k : Byte ;
a : String ;
Begin


Clrscr ;


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

- Cấu trúc chung của Câu lệnh lặp While . . . Do, Câu lệnh lặp For . . . do
- Về nhà xem lại các bài tập đã giải và làm bài tập còn lại trong sgk.


<b>V. PHỤ LỤC</b>


………
………
………
………
………
………
………



Tuần 15
Tiết 29- 30


Ngày soạn:…./…./2010
Ngày dạy :…./…./………


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


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


- Khắc sâu thêm phần kiến thức về lý thuyết kiểu kí tự, đặc biệt là các hàm và thủ tục
liên quan.


- Nắm được một số thuật toán cơ bản: tạo xâu mới, đếm số lần xuất hiện một kí tự


<i>2. Kỹ năng</i>


- Khai báo biế kiểu xâu


- Nhập, xuất giá trị cho biến xâu.
- Duyệt qua tất cả các kí tự của xâu.
- Sử dụng được các hàm và thủ tục chuẩn


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


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


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



Gv. Máy chiếu Projestor để hướng dẫn. Tổ chức trong phòng máy để học sinh có được
kỹ năng cơ bản khi làm việc với xâu.


Hs. SGK, bài tập ở nhà, nội dụng bài thực hành 5


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


<b>IV. NỘI DUNG BÀI GIẢNG</b>
<b>1.Ổn định lớp :</b>


- Chào thầy cô .


- Cán bộ lớp báo cáo sĩ số .
- Chỉnh đốn trang phục .


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


1. Nêu khái niệm kiểu xâu và các thao tác trên xâu
2. Nêu các hàm xử lý xâu và ý nghĩa


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

<i>a. Mục tiêu: hiểu được một chương trình, đề xuất phương án cải tiến.</i>
<i>b. Nội dung</i>


- Nhập vào một xâu, kiểm tra xem xâu đó có phải là một Palidrom hay khơng
- Chương trình


<b> Var i, x:Byte; a,p:string;</b>


<b> Begin</b>



Write(‘nhap vao mot xau’);
readln(a);


x:=length(a);
p:= ‘’;


<b> For i:=x downto 1 do p:=p+a[i];</b>


<b> If a=p then write(‘xau la Palidrom’)</b>
<b> else write(‘xau khong la Palidrom’);</b>
Readln;


<b> End.</b>


<i> c. các bước tiến hành</i>


<b>Hoạt động của Gv & Hs</b> <b>Nội dung</b>


1. Tìm hiểu đề bài
Gv.


– Giới thiệu nội dung đề bài lên bảng
- Diễn giải: Một xâu được gọi là đối xứng
khi ta đọc các ký tự từ phải sang trái sẽ
giống các ký tự từ trái sang phải.


Ví dụ:


Phải: 12321 abccba


Khơng: abcabc


<b>1. Đề bài</b>


Nhập vào từ bàn phím một xâu. Kiểm tra
xâu đó có phải là xâu đối xứng hay không?
(Xâu Palindrome)


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

- giới thiệu nội dung đề bài lên bảng.
- Diễn giải: Một xâu đợc gọi là
Palidrom nếu ta đọc các kí tự từ phải
sang trái sẽ giống khi đọc từ trái sang phải.
- Yêu cầu học sinh cho hai ví dụ về
xâu palidrom và một ví dụ khơng phi l
palidrom .


2. tìm hiểu chơng trình 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?




- Thực hiện chơng trình để học sinh
kiểm nghiệm suy luận của mình.
3. 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 một xâu


palidrom?


- Hỏi: kí tự thứ i đối xứng với kí tự vị
trí nào?


- Hỏi: Cần phải so ssánh bao nhiêu cặp
kí tự trong xâu để biết đợc xâu đó ;à
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
hoàn chỉnh.


- Yêu cầu học sinh nhập dữ liệu cho
sẵn của giáo viên và thông báo kết quả.
- Xác nhận những bài làm có kết quả
đúng.




Ph¶i: 12321 abccba
Không phải: abcdea


2. Quan sát chơng trình, suy nghĩ phân


tích để hiểu chơng trình.


- KiĨm tra mét xâu có phải Palidrom
hay không?


- In ra: ‘xau la Palidrom’


‘Xau khong la palidrom’
- Quan s¸t giáo viên thực hiện chơng
trình, nhập dữ liệu và kết quả của chơng
trình.


3. Chú ý theo dõi yêu cầu của giáo viên, trả
lời một số câu hái dÉn d¾t.


- Các kí tự ở vị trí này giống nhau.
- Kí tự thứ i đối xứng với kí t thứ
length() – i +1


- So sánh tối đalength() div 2.


- Cã thĨ dïng For hc 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ả.


2. Hoạt động 2: Rèn luyện kĩ năng lập trình.


a.Mục tiêu:


- Học sinh biết phân tích u cầu để viết một chơng trình hoàn chỉnh.
b. Nội dung.


- Viết chơng trình nhập vào một xâu kí tự S và thông báo ra màn hình số lần xuất
hiện trong S của mỗi chữ cái tiếng Anh(không phân biệt chứ hoa, chữ thờng).


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


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


- Chiếu nội dung đề bài lên bảng. Nêu
mục đích của bài tốn.


- Chia líp thµnh 2 nhãm:


+ Nhãm 1: Đặt các câu hỏi phân tích.
+ Nhóm 2: Trả lời các câu hỏi phân


1. Quan sát đề và xác định những công
việc cần thực hiện.




Nhãm 1:


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

- Theo dâi những câu hỏi phân tích
Của nhóm 1 và trả lêi c©u hái ph©n tÝch
cđa nhãm 2.



- Bæ sung và sửa sai cho cả nhóm 1 và
nhóm 2.


2. Yêu cầu học sinh độc lập viết chơng
trình hồn chỉnh theo thuật tốn đã phát
hin trờn.


- Yêu cầu 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ú kt qu sai.


- Nêu các nhiệm vụ chính cần thực
hiện khi giải quyết bài toán.


- Hỏi: Cấu trúc dữ liệu phải sử dụng nh
thế nào?


- Ta phải sử dụng hàm nào?
Nhóm 2:


- Vào: Một xâu S.



- Ra: d·y c¸c sè øng víi sù xt 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().


2. Độc lập soạn chơng trình vào máy.


- Tìm test


- Nhập dữ liệu của giáo viên và thực
hiện chơng trình để xem kết quả.


- Thông báo kết quả cho giáo viên.


IV. Đánh giá cuối bài
<b> 1. Những nội dung đã học.</b>


- Một số thuật toán đơn giản liên quan đến xâu kí tự: Kiểm tra một xâu đối xứng,
tìm tần xuất hiện của kí t cú trong xõu.


2. Câu hỏi và bài tËp vỊ nhµ.


</div>

<!--links-->

×