Giáo án môn Tin 11 cả năm chương trình chuẩn

Trọn bộ giáo án môn Tin học 11 cả năm theo chương trình chuẩn. Tài liệu được biên soạn dưới dạng file pdf gồm 112 trang được chia theo từng chương, từng bài cụ thể giúp bạn dễ dàng tham khảo. Mời bạn đọc đón xem!

Trang 1
Tiết 1_PPCT
Ngày soạn:
Ngày dạy:
CHƯƠNG I: MỘT SỐ KHÁI NIỆM VỀ LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH
BÀI 1: KHÁI NIỆM LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH
A. MỤC ĐÍCH VÀ YÊU CẦU
1. Mục đích:
- Ôn lại kiến thức đã học lớp 10 về thuật toán.
- Giới thiệu các khái niệm về chương trình nguồn, chương trình dịch và chương trình đích.
- Giới thiệu một số ngôn ngữ lập trình thông dụng.
2. Yêu cầu:
- Học sinh nắm được các khái niệm bản về chương trình nguồn, chương trình dịch
chương trình đích.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Lấy học sinh làm trung m, đặt vấn đề cho các trường hợp sử dụng thực tế từ đó giúp các
em nắm bắt được vấn đề tốt hơn.
- Đặt câu hỏi gợi mở giúp học sinh hiểu được vấn đề.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- Các khái niệm về chương trình nguồn, chương trình dịch và chương trình đích.
- Các khái niệm thông dịch và biên dịch.
D. PHƯƠNG TIỆN DẠY HỌC
- Sử dụng máy Projector.
- Bảng đen, phấn trắng.
E. NỘI DUNG GIẢNG DẠY
I. ĐẶT VẤN ĐỀ CHO BÀI GIẢNG ( 5ph )
Thông tin được đưa o máy tính, y tính xử cho ta kết qunhư mong muốn. Vậy
nhờ vào đâu y tính có thể xử lý được các thông tin đó? Để máy tính có thể xử lý thông tin
thì nó phải được lập trình. Bài học hôm nay ta sẽ tìm hiểu ngôn ngữ lập trình có mấy
loại ?II. NỘI DUNG BÀI HỌC
Thời
gian
Nội dung ghi bảng
Hoạt động của GV
Hoạt động
của HS
10
ph
BÀI 1: KHÁI NIỆM LẬP TRÌNH VÀ
NGÔN NGỮ LẬP TRÌNH
1. Thuật toán:
Có hai dạng để diễn tả thuật toán:
Liệt kê.
Dùng sơ đồ khối.
VD: so sánh a và b
- Ghi bài học lên bảng.
- Trước khi tìm hiểu vngôn ngữ
lập trình, ta ôn lại phần thuật
toán.
- Em nào nhắc lại khái niệm về
thuật toán ?
- mấy dạng để diễn tả thuật
toán?
- Em hãy diễn tả thuật toán so
Trang 2
10
ph
15
ph
Để giải quyết một bài toán ta thực
hiện các bước sau:
1) Xác định bài toán.
2) Diễn tả thuật toán.
3) Viết chương trình.
4) Chạy và kiểm tra chương trình.
Khái niệm lập trình: Lập trình
sử dụng CTDL các câu lệnh của
ngôn ngữ lập trình cụ thể để tả
dữ liệu diễn đạt các thao tác
thuật toán.
2. Quá trình chuyển đổi chương
trình
* CT nguồn:
- Là CT viết trên ngôn ngữ bậc cao.
- Được nhiều người s dụng m
công cụ lập trình.
- Thực hiện được trên nhiều loại
máy tính khác nhau.
* CT dịch:
- chức năng chuyển đổi CT viết
bằng ngôn ngữ bậc cao thành
chương trình ngôn ngữ máy.
Có hai loại
Thông dịch (Interpreter): quá
trình dịch lặp lại nhiều lần cho đến
khi kết thúc chương trình.
Các bước lặp:
1) Kiểm tra tính đúng đắn của
câu lệnh tiếp theo trong chương
trình nguồn.
2) Chuyển đổi câu lệnh đó
thành một hay nhiều câu lệnh
tương ứng trong ngôn ngữ máy.
3) Thực hiện các câu lệnh vừa
sánh 2 s a b theo hai dạng
trên?
- Như vậy muốn y tính hiểu
xử thông tin chính xác ta
nhập vào thì con người cần phải
lập trình.
- Mọi bài toán thuật toán đều
thể giải được trên máy tính
điện tử, bao gồm các bước nào
mà ta đã học?
- Bước cuối cùng đó lập trình,
lập trình gì? em nào thể nêu
khái niệm về lập trình?
- Như đồ diễn tả thuật toán
trên, CTDL cách lưu trữ giá trị
a b. Còn câu lệnh để mô tả
thuật toán trong Pascal như sau:
If a > b then writeln(‘max=’,a)
Else writeln(‘max =’,b);
- Chương trình viết bằng ngôn
ngữ pascal trên ngôn ngữ bậc
cao chính chương trình nguồn.
làm sao để y tính hiểu xử
được thì phải thông qua một
chương trình dịch để chuyển sang
chương trình đích ngôn ngữ
máy. ta quá trình chuyển đổi
như sau:
- Em y nêu đặc điểm của CT
nguồn?
- Em hãy nêu chức năng của CT
dịch?
- Chương trình dịch hai loại
thông dịch biên dịch. Các em
xem VD trong SGK.
- Thông dịch là gì?
- Hiện nay một số ngôn ngữ
lập trình thông dụng như:
- Biên dịch là gì?
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
CT nguồn
CT dịch
CT đích
Trang 3
chuyển đổi được.
Biên dịch (compiler): quá trình
dịch lặp chỉ một lần.
Các bước lặp:
1) Duyệt, phát hiện lỗi, kiểm tra
tính đùng đắn của các câu lệnh
trong CT nguồn.
2) Dịch toàn bộ CT nguồn thành
một CT đích thể lưu trữ
để sử dụng lại khi cần thiết.
Chú ý:
+ Thông dịch không chương
trình đích để lưu trữ.
+ Biên dịch dịch thể lưu trữ để
sử dụng về sau.
* CT đích: là ngôn ngữ máy.
- Nêu đặc điểm của thông dịch
của biên dịch.
* Pascal, Turbo C++ những
ngôn ngữ ứng dụng trong nhà
trường phục vụ học lập trình
sở.
* C#, C++ lập trình ứng dụng.
* ASP, ASP.net, J#, JAVA thiết
kế Website...
Học sinh
theo dỏi,
ghi chép
trả lời.
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:.
- Khái niệm lập trình.
- Khái niệm thông dịch và biên dịch.
2. Bài tập về nhà:
1. Khái niệm lập trình. Khái niệm thông dịch và biên dịch.
2. Những phát biểu nào dưới đây là sai?
A. Output của mọi chương trình đều là chương trình trên ngôn ngữ máy.
B. Chương trình viết bằng hợp ngữ không phải Input hay Output của bất cứ chương
trình dịch nào.
C. Để biên soạn một chương trình trên ngôn ngữ bậc cao thể sử dụng nhiều hệ soạn
thảo văn bản khác nhau.
D. Chương trình dịch là thành phần chính của một ngôn ngữ lập trình bậc cao.
3. Phát biểu nào dưới đây đúng:Chương trình y các lệnh được tổ chức theo các quy
tắc được xác định bởi một ngôn ngữ lập trình cụ thể.
A. Trong chế độ thông dịch mỗi câu lệnh của chương trình nguồn được dịch thành một
câu lệnh của chương trình đích.
B. Mọi bài toán đều có chương trình để giải trêny tính.
C. Nếu chương trình nguồn có lỗi cú pháp thì chương trình đích cũng có lỗi cú pháp.
Trang 4
Tiết 2_PPCT
Ngày soạn:
Ngày dạy:
BÀI 2: CÁC THÀNH PHẦN CỦA NGÔN NGỮ LẬP TRÌNH
A. MỤC ĐÍCH VÀ YÊU CẦU
1. Mục đích:
- Giúp học sinh hiểu được 3 thành phần bản của ngôn ngữ lập trình: Bảng chữ cái,
pháp và ngữ nghĩa.
- Giới thiệu các khái niệm về tên, tên chuẩn, tên dành riêng.
2. Yêu cầu:
- Học sinh chú ý học tập, tích cực xây dựng bài học.
- Học sinh phải ghi nhớ các quy tắc đặt tên, hằng và biến trong ngôn ngữ lập trình.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- 3 thành phần cơ bản của ngôn ngữ lập trình: bảng chữ cái, cú pháp và ngữ nghĩa.
- Các quy tắc đặt tên, khái niệm về biến.
D. PHƯƠNG TIỆN DẠY HỌC
- Hình ảnh minh họa.
- Bảng đen, phấn trắng.
E. KIỂM TRA BÀI CŨ ( 5ph ).
1. Nêu khái niệm về thông dịch và biên dịch, hai thành phần này trong chươg trình dịch
khác nhau ở chỗ nào?
2. Nêu các bước thực hiện của thông dịch biên dịch.
3. F. NỘI DUNG GIẢNG DẠY
I. ĐẶT VẤN ĐỀ CHO BÀI GIẢNG (3ph)
Như các em đã biết, con người dùng hai loại ngôn ngữ đó ngôn ngữ nói ngôn ngữ viết.
Để máy tính thể làm việc được giao tiếp được thì cũng cần ngôn ngữ, đó ngôn
ngữ lập trình. Ngôn nglập trình được soạn thảo trên các môi trường lập trình tương ứng như
ngô ngữ Pascal được soạn thảo trên môi trường Turbo Pascal,... nhằm giải quyết các bài toán do
con người yêu cầu. Vậy ngôn ngữ lập trình những thành phần o quy tắc không.
Bài học hôm nay thầy sẽ giới thiệu cho các em hiểu rõ hơn về vấn đề này.
II. NỘI DUNG BÀI HỌC
Thời
gian
Nội dung ghi bảng
Hoạt động của GV
Hoạt động
của HS
Trang 5
12
ph
20
ph
BÀI 2: CÁC THÀNH PHẦN CỦA NGÔN
NGỮ LẬP TRÌNH
1. Các thành phần cơ bản
3 thành phần:
Chữ cái.
Cú pháp.
Ngữ nghĩa.
a) Chữ cái: tập c tự được dùng
để viết chương trình.
- Ký tự là chữ cái: ‘a’...’z’,‘A’...‘Z’
- Số thập phân: 0, 1, ..., 8, 9.
- Các ký tự đặc biệt: #, $, -, +, ...
Chú ý:
- Bảng chữ cái trong các ngôn ngữ khác
nhau có thể khác nhau một số ký tự:
VD: Pascal sử dụng dấu ‘’
C++ sử dụng dấu “”, \, và !
b) pháp: bộ quy tắc để viết
chương trình.
VD: ten a (không hợp lệ khoảng
trắng)
Var x integer; (không hợp lệ
thiếu dấu ‘:’)
c) Ngữ nghĩa: xác định ý nghĩa của
các tổ hợp ký tự trong chương trình.
VD: A và B nhận giá trị nguyên.
X và Y nhận giá trị thực.
Ta sử dụng phép toán trong ngôn ngữ
lập trình như sau:
A+B: là cộng hai số nguyên
X+Y: là cộng hai số thực.
Chú ý: - CT sẽ phát hiện lỗi pháp
trước, lỗi ngữ nghĩa sau.
- Khi lỗi pháp không còn thì chương
trình mới thực hiện.
- Khi chương trình được thực hiện trên
dữ liệu cụ thể thì lỗi ngữ nghĩa mới được
phát hiện.
VD:
2. Một số khái niệm
a) Tên
Khái niệm: Tên một dãy liên tiếp
không quá 127 tự bao gồm chữ số,
chữ cái hoặc dấu gạch dưới.
- Ghi bài học lên bảng.
- Em nào cho biết ngôn ngữ
lập trình mấy thành phần,
những thành phần đó là?
- Các tự được sử dụng
trong ngôn ngữ để viết
chương trình.
- Nhìn vào bảng chữ cái các
em thấy khác với chữ cái
trong ngôn ngữ tự nhiên
không?
- Trong ngôn ngữ tự nhiên khi
sử dụng bảng chữ cái cũng
phải pháp. VD về các
thành phần trong câu chủ
ngữ, vị ngữ ...
- Trong ngôn ng lập trình
cũng vậy cũng cần phải
pháp.
- Em nào cho thầy biết
pháp trong ngôn ngữ lập trình
dùng để làm gì?
- Cú pháp là bộ quy tắc để viết
chương trình, dựa vào đó
người lập trình chương
trình dịch biết được tổ hợp
nào của c tự trong bảng
chữ cái hợp lệ. Các em xem
các VD sau:
ten a
Var x integer;
- Ngoài pháp, trong ngôn
ngữ lập trình n ngữ
nghĩa.
- VD sau cho các em hiểu
hơn về ngữ nghĩa.
- Em nào thể cho biết khi
chương trình bắt đầu thực hiện
thì chương trình dịch phát
hiện lỗi pháp dễ dàng hơn
hay khó khăn hơn ngữ nghĩa?
- Để thể viết một chương
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Trang 6
Quy tắc đặt tên:
- Không có khoảng trắng.
- Không bắt đầu bằng chữ số.
- Không chứa ký tự đặc biệt.
VD: 43c (tên sai)
A_c (tên đúng)
Ten_f (tên đúng)
Hoa# (tên sai)
Chú ý:
- Tên dùng để quản phân biệt các
đối tượng trong chương trình.
- Để gợi nhớ nội dung của đối tượng.
- Tên có 3 loại:
* Tên dành riêng (từ khóa): Dùng với
ý nghĩa riêng xác định. Không được sử
dụng với các mục đích khác nhau.
VD(SGK).
* Tên chuẩn: Dùng với ý nghĩa nhất
định nào đó, thể sử dụng với các mục
đích khác nhau. VD(SGK).
* Tên do người lập trình tự đặt:
Không được trùng với tên dành riêng.
b) Hằng và biến
* Hằng: Hằng đại lượng giá trị
không thay đổi trong qtrình thực hiện
chương trình.
Có 3 loại hằng:
+ Hằng số học: là các hằng số nguyên
hay số thực: 3, -3, ...
+ Hằng logic: True hoặc False
+ Hằng xâu: chuỗi tự trong bảng
ASCII, nằm trong cặp dấu nháy đơn
( ‘’ ) của Pascal.
Chú ý:
- Hằng dấu ‘’ trong Pascal là “”.
VD: ‘‘s’’ có hằng xâu là ‘s’
- Hằng số thực E được biểu diễn bởi số
mũ của 10
VD: 2.1E-6 = 2 x 10
-6
.
-2.236E01 = -2.236 x 10
01
= -22.36
- thể sử dụng hằng Hexa, cần thêm $
trước giá trị biểu diễn:
VD: $A1
16
= 161
10
* Biến: đại lượng được đặt tên, dùng
để lưu trữ giá trị giá trị thể được
thay đổi trong quá trình thực hiện
chương trình.
c) Chú thích
trình không còn lỗi pháp ta
cần chú ý một số quy tắc về
cách đặt tên.
- Em nào xét xem các VD sau
VD nào cách đặt tên đúng,
vì sao?
- Ngoài quy định phải đặt tên
cho chương trình tcần phải
khai báo hằng và biến.
- Các em xem các VD trong
SGK giải thích các hiệu
E trong hằng số học.
- Em nào thể lấy một VD
để làm rõ khái niệm về biến.
VD: A, B,tong là biến nguyên
A:=5; B:=6;
Tong:=A+B;
Tong:=A+B+A;
Giá trị của tổng là thay đổi.
- Đoạn chú thích trong chương
trình nhằm giúp người lập
trình nêu c câu dẫn
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Trang 7
- Trong Pascal sử dụng cặp dấu
{và}hoặc (*và*).
- Chú thích không ảnh ởng đến
chương trình nguồn nên chương trình
dịch bỏ qua.
không cần phải tuân thủ quy
tắc trong ngôn ngữ lập trình.
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:.
- 3 thành phần cơ bản trong ngôn ngữ lập trình.
- Khái niệm và quy tắc đặt tên. Khái niệm và ý nghĩa sử dụng biến.
2. Bài tập về nhà: Các bài tập trong SGK.
Trang 8
Tiết 3_PPCT
Ngày soạn:
Ngày dạy:
CÂU HỎI VÀ BÀI TẬP
A. MỤC ĐÍCH VÀ YÊU CẦU
1. Mục đích:
- Giúp học sinh ôn lại những kiến thức đã học.
2. Yêu cầu:
- Học sinh chú ý học tập, tích cực xây dựng bài học.
- Học sinh phải chuẩn bị kiến thức ôn tại nhà.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Nêu các bài tập, đặt câu hỏi gợi ý để HS nắm vững bài học.
C. NỘI DUNG GIẢNG DẠY
Câu 1: Trong chế độ biên dịch, một chương trình đã được dịch thông suốt, hệ thống không báo
lỗi. Có thể khẳng định rằng ta đã có một chương trình đúng hay chưa? Tại sao?
(Chưa đúng, vì sai ngữ nghĩa).
Câu 2: Trong chế độ thông dịch, giả sử 2/3 số câu lệnh trong chương trình đã được thực hiện.
thể khẳng định rằng như vậy chương trình không còn chứa lỗi pháp nữa hay không? Tại
sao? (Không thể khẳng định được, vì các câu lệnh khác chưa được kiểm tra).
Câu 3: Sau khi chương trình đã được dịch thông suốt, không còn lỗi pháp, cần tiếp tục
hiệu chỉnh, tức tìm sửa lỗi trong chương trình nguồn nữa hay không? (Có: cần KT ngữ
nghĩa).
Câu 4: Trong một chương trình còn lỗi pháp, thông thường trình biên dịch hay chương
trình thông dịch phát hiện ra lỗi nhanh hơn? Vì sao?
(Trình biên dịch phát hiện lỗi nhanh hơn vì nó có nhiệm vụ phát hiện lỗi cú pháp đầu tiên).
Câu 5: Hãy chọn những biểu diễn hằng trong các biểu diễn dưới đây:
A) end B) ‘a078’ C) 78
D) *63 E) 5.63 F) -96
Câu 6: y chọn những biểu diễn tên trong các biểu diễn dưới đây:
A) 75 B) abcd C) 78ab
D) ab68 E) ‘abc’ F) (xyz)
Câu 7: y chọn những đáp án là từ khóa (tên dành riêng) trong Pascal:
A) begin B) ‘begin’ C) integer
D) var E) real F) end
Câu 8: y chọn những đáp án là tên chuẩn trong Pascal:
A) real B) uses C) const
D) integer E) byte F) sqr
Trang 9
Câu 9: Trong dòng thông tin chú thích thể chứa tự ngoài bảng chữ cái của ngôn nghay
không và tại sao? (Có thể, vì chương trình biên dịch không kiểm tra lỗi trong chú thích)
Câu 10: Hãy nêu 6 VD (6 tên) người ng đặt sai trong ngôn ngữ lập trình Pascal chỉ ra
lỗi, cách sửa các tên đó sao cho đúng.
Câu 11: Bổ sung các bài tập 4, 5, 6 trong SGK Tin học 11 (trang 13).
Trang 10
Tiết 4_PPCT
Ngày soạn:
Ngày dạy:
CHƯƠNG II: CHƯƠNG TRÌNH ĐƠN GIẢN
BÀI 3: CẤU TRÚC CHƯƠNG TRÌNH
A. MỤC ĐÍCH VÀ YÊU CẦU
1. Mục đích:
- Giúp học sinh nắm được cấu trúc chung của một chương trình đơn giản.
- Nhận biết được các phần của một chương trình đơn giản.
2. Yêu cầu:
- Học sinh chú ý học tập, tích cực xây dựng bài học.
- Học sinh nắm được cấu trúc của một chương trình đơn giản.
- Biết cách đặt tên, khai báo biến trong chương trình.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- Cấu trúc chương trình.
- Khai báo tên, thư viện, hằng và biến trong chương trình.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng.
E. NỘI DUNG GIẢNG DẠY
I. ĐẶT VẤN ĐỀ CHO BÀI GIẢNG
Các em đã m hiểu về ngôn ngữ lập trình mỗi ngôn ngữ lập trình đều cấu trúc để cho
người lập trình viết chương trình sao cho đúng quy tắc. Trong ngôn ngữ lập trình Pascal hay
C++ đều đưa ra cấu trúc riêng của nó. Ta sẽ tìm hiểu cấu trúc của nó là gì?
II. NỘI DUNG BÀI HỌC
Thời
gian
Nội dung ghi bảng
Hoạt động của GV
Hoạt động
của HS
15
ph
BÀI 3: CẤU TRÚC CHƯƠNG TRÌNH
1. Cấu trúc chung
*Ngôn ngữ lập trình có 2 phần:
- Phần khai báo.
- Phần thân.
- Ghi bài học lên bảng.
- Trên bảng một cấu trúc của
một chương trình được viết trên
ngôn ngữ lập trình Pascal. Em
nào cho thấy biết phần nào
phần khai báo, phần nào phần
thân chương trình?
- Trên bảng cấu trúc chung của
một chương trình đơn giản bao
Học sinh
theo dỏi,
ghi chép
trả lời.
Trang 11
20
ph
2. Các thành phần của chương
trình.
a) Phần khai báo
* Khai báo tên chương trình:
Cú pháp:
Program <tên chương trình>;
Chú ý: Tên chương trình do người
lập trình tự đặt theo pháp quy
tắc của Pascal.
VD: program dtHCN;
* Khai báo thư viện
Cú pháp:
Uses <tên các thư viện>;
VD:
Uses crt;
Chú ý: Trong Pascal khi khai báo
thư viện crt ta dùng lệnh clrscr
trong phần thân chương trình để
xóa kết quả trước của chương trình
trên màn hình.
* Khai báo hằng
Cú pháp:
Const <tên hằng> = <giá trị của
hằng>;
VD: Const n = 100;
Xau = ‘hang xau’;
Lg = true;
* Khai báo biến (BÀI HỌC SAU)
b) Phần thân chương trình
Cú pháp:
Begin
<dãy các câu lệnh>;
End.
gồm 2 phần, đó phần khai báo
và phần thân chương trình.
- Em nào đã biết cú pháp của từng
phần trong phần khai báo y
không?
- Chúng ta sẽ tìm hiểu về các
phần này trong mục tiếp theo.
- Đối với phần khai báo em nào
cho thầy dụ về khai báo tên
chương trình tính diện tích hình
chữ nhật?
- Trong phần khai báo tên bắt
buộc không?
- Mỗi ngôn ngữ lập trình đều
sẵn thư viện cung cấp một số
chương trình đã được lập sẵn. Để
sử dụng các chương trình đó ta
khai báo thư viện chứa nó.
- Em nào lấy VD về khai báo thư
viện.
- Em o thể nhắc lại khái
niệm về hằng? Có mấy loại hằng.
- Em hãy lấy 3 VD khai báo cho 3
loại hằng khác nhau.
- Các em chú ý trong khai báo
hằng thường được sử dụng cho
những giá trị xuất hiện nhiều lần
trong chương trình.
- Phần khai báo tiếp theo khai
báo biến. Em nào nhắc lại khái
niệm biến gì? dùng để làm
gì?
- Cách khai báo biến bài học sau
ta sẽ nghiên cứu kỹ hơn.
- Phần thân chương trình được bắt
đầu bằng từ khóa begin kết
thúc bằng từ khóa end
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Trang 12
VD1: đoạn thân chương trình tính
tổng hai số a và b
Begin
Writeln(‘nhap a va b’);
readln(a,b);
Tong:=a+b;
Writeln(‘tong cua a va b
la:’,tong);
End.
3. dụ chương trình đơn giản
(SGK)
- Các em cho biết dấu (;) dùng để
làm gì?
- Các em xem VD sau trong SGK
tại sao lại không có phần khai báo
biến.
- GV nhắc lại ý nghĩa của biến
bằng cách nêu thêm VD bài trước
đã học viết trong thân chương
trình:
VD: A, B,tong là biến nguyên
A:=5; B:=6;
Tong:=A+B;
Tong:=A+B+A;
Giá trị của tổng là thay đổi.
Học sinh
theo dỏi,
ghi chép
trả lời.
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:.
- Cấu trúc chương trình.
- Các khai báo tên chương trình, hằng, biến...
2. Bài tập về nhà:
1. Nêu cấu trúc chung của một chương trình Pascal?
2. Khi nào thì một chương trình không có phần khai báo? Nêu một ví dụ minh họa.
3. Nếu khai báo thừa biến hoặc hằng; tức khai báo các biến, hằng không ng đến
trong phần thân chương trình, chương trình dịch báo sai không, sao? (Không,
nhưng có lời cảnho không nên sử dụng thừa biến)
Trang 13
Tiết 5_PPCT
Ngày soạn:
Ngày dạy:
BÀI 4-5: MỘT SỐ KIỂU DỮ LIỆU CHUẨN VÀ KHAI BÁO BIẾN
A. MỤC ĐÍCH VÀ YÊU CẦU
1. Mục đích:
- Giúp học sinh nắm được một số kiểu dữ liệu chuẩn: kiểu nguyên, kiểu thực, kí tự và logic.
- Xác định được kiểu cần khai báo của dữ liệu đơn giản.
2. Yêu cầu:
- Học sinh chú ý học tập, tích cực xây dựng bài học.
- Học sinh phải ghi nhớ và hiểu các kiểu dữ liệu và biết cách khai báo biến.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học.
- Phát huy tính tích cực chủ động sáng tạo của học sinh.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- Các kiểu dữ liệu chuẩn: kiểu nguyên, kiểu thực, kí tự và logic
- Khai báo biến.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng.
E. KIỂM TRA BÀI CŨ ( 5ph ).
1. Nêu cấu trúc chung của chương trình Pascal.
2. Khi nào thì một chương trình không có phần khai báo? Nêu một ví dụ minh họa.
F. NỘI DUNG GIẢNG DẠY
I. ĐẶT VẤN ĐỀ CHO BÀI GIẢNG
Em nào cho biết khái niệm về dữ liệu. Như vậy dữ liệu thông tin đã được hóa trong
máy tính. Dữ liệu trong mỗi ngôn ngữ lập trình chỉ một số kiểu chuẩn nhất định mặc
thông tin rất đa dạng. Mỗi kiểu được đặc trưng bởi tên kiểu (VD biến kiểu nguyên mang gtrị
số nguyên...), miền giá trị, bộ nhớ lưu trữ, các phép toán, các m thủ tục sử dụng chúng.
Vậy tên của từng kiểu dữ liệu đó là gì ta sang bài học mới.
II. NỘI DUNG BÀI HỌC
Thời
gian
Nội dung ghi bảng
Hoạt động của GV
Hoạt động
của HS
5 ph
BÀI 4-5: MỘT SỐ KIỂU DỮ LIỆU
CHUẨN VÀ KHAI BÁO BIẾN (tiết 5)
1. Kiểu nguyên
- Ghi bài học lên bảng.
- Trong toán học ta các tập
số gì?
- Kiểu nguyên tương ứng với
tập số nào?
- Các kiểu nguyên được lưu trữ
Học sinh
theo dỏi,
ghi chép
trả lời.
Trang 14
5 ph
5 ph
5 ph
Chú ý: Kiểu Byte Word chỉ biểu
diễn cho số nguyên dương.
2. Kiểu thực
3. Kiểu kí tự
Chú ý:
-Việc so sánh các tự được thực
hiện bằng cách so sánh các mã
ASCII tương ứng.
VD:
- A có mã ASCII là 65, a = 97
- B có mã ASCII là 66, b = 98
=> A < B, a < b.
4. Kiểu logic
Chú ý:
- Kiểu Logic kiểu thứ tự đếm
được.
- Trong quá trình lập trình, người lập
trình cần m hiểu đặc trưng của các
kiểu dữ liệu chuẩn được xác định bởi
bộ dịch và sử dụng để khai báo biến.
kết quả tính toán số đúng.
Giá trị của phần nguyên
không số hoặc số thập
phân.
- Tuy nhiên tập số nguyên
hạn thứ tự, đếm được
nhưng trong y tính kiểu
nguyên hữu hạn, thứ tự.
Bảng trên là bảng kiểu nguyên.
- Kiểu số thực được lưu trữ
kết quả tính toán chỉ gần đúng
với sai số không đáng kể. Miền
giá trị được mở rông hơn so với
kiểu số nguyên, số thực trong
máy tính cũng rời rạc hữu
hạn.
- Em nào cho thầy biết nếu phép
toán sử dụng kiểu số nguyên
kiểu số thực thì kết quả cho ra
kiểu gì? (Kiểu số thực).
- Kiểu tự tập giá trị các
tự trong bảng ASCII,
được dùng khi thông tin các
tự, xâu (string). vậy hầu
hết các ngôn ngữ lập trình đều
kiểu tự để làm việc với
văn bản.
- Kiểu tự phải kiểu
thứ tự, đếm được không ? Dựa
vào đâu để thực hiện việc so
sánh các kí tự?
- Việc so sánh các tự được
thực hiện bằng cách so sánh các
mã ASCII của chúng.
- Kiểu logic trong Pascal chỉ
2 giá trị True úng)
False (sai), được dùng khi kiểm
tra một điều kiện hoặc tìm giá
trị của một biểu thức logic.
- Theo em kiểu logic có phải
kiểu có thứ tự đếm được không?
(Là kiểu có thứ tự đếm được).
- Một số ngôn ngữ lập trình
không dùng kiểu logic như
C++, thay vào đó các giá trị 0
(false), khác 0 (true).
- Em nào nhắc lại khái niệm về
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Trang 15
5. Khai báo biến
Cú pháp:
Var <DS biến>:<Kiểu DL>;
* Trong đó:
- DS biến: một hoặc nhiều tên
biến, mỗi biến cách nhau bởi dấu
phẩy (,).
- Kiểu dữ liệu 1 trong các kiểu
chuẩn (real, integer,...) hoặc kiểu do
người dùng tự định nghĩa (chương
IV).
- Sau từ khóa var thể khai báo
nhiều danh sách biến khác nhau.
VD1: - Khai báo biến bài toán tính
diện tích hình chữ nhật lấy giá trị vào
ra giá trị nguyên:
Var a,b: integer;
dt: integer;
VD2: - Khai báo biến cho bài toán
nhập 1 kí tự từ bàn phím:
Var Kitu: char;
Chú ý:
- Tên biến phải gợi nhớ.
- Tên biến không quá dài, quá ngắn.
- Khi khai báo biến phải chú ý đến
phạm vi giá trị.
VD2: Trong VD1 nếu khai báo:
Var a,b: real;
dt: integer; => Là sai
- Các biến đơn chỉ chứa một giá trị
tại một thời điểm.
- Các biến của kiểu d liệu cấu
trúc thể chứa hơn một giá trị tại
một thời điểm như biến mảng.
biến.
- Ý nghĩa sử dụng biến để làm
gì?
- Trong khi khai báo biến, lưu ý
về những biến là hằng số, ta nên
khai báo biến hằng số bằng m
const .
VD: Khai báo biến cho bài toán
tính diện tích hình thang
chiều cao bằng 5dv:
Const cao = 5;
Var daynho,daylon: real;
- Tên biến phải gợi nhớ để
người lập trình người xem
chương trình biết ý nghĩa sử
dụng của biến đó.
- Khi khai báo biến phải chú ý
đến phạm vị giá trị, VD biến
khai báo để u trữ số học sinh
trong lớp kiểu byte, nhưng
biến khai báo để lưu trữ học
sinh trong trường là kiểu word.
VD: khai báo biến mảng
Var mang:array[1..10] of
integer;
Biến mang chứa 10 giá trị tại
một thời điểm.
Học sinh
theo dỏi,
ghi chép
trả lời.
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph)
a) Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:.
- Kiểu số nguyên, số thực, kí tự, logic.
- Cách khai báo biến:
Var <danh sách biến>:<kiểu dữ liệu>;
2. Kiểm tra 15ph:(15 ph)
Câu 1: Hãy chọn những biểu diễn hằng trong các biểu diễn dưới đây:
A) begin B) ‘12ab’ C) -102
D) 15- E) A92 F) var
Câu 2: y chọn những biểu diễn tên trong các biểu diễn dưới đây:
A) bien B) 92A C) pi
Trang 16
D) A92 E) ‘abc’ F) (xyz)
Câu 3: Nêu các cách khai báo biến cho bài toán tính giá trị biểu thức sau:
a)
*
xy
z
S x y z
xy
b)
sinS x y

(trong đó hàm sin()
là một biểu thức nên không khai báo).
Trang 17
Tiết 6_PPCT
Ngày soạn:
Ngày dạy:
BÀI 6: PHÉP TOÁN, BIỂU THỨC, CÂU LỆNH GÁN
A. MỤC ĐÍCH VÀ YÊU CẦU
1. Mục đích:
- Học sinh biết các khái niệm: Phép toán, biểu thức số học, m số học chuẩn, biểu thức
quan hệ.
2. Yêu cầu:
- Học sinh hiểu lệnh gán.
- Viết được lệnh gán.
- Viết được các biểu thức số học và logic với các phép toán thông dụng.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học.
- Phát huy tính tích cực chủ động sáng tạo của học sinh.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- Các phép toán.
- Các hàm số học chuẩn.
- Biểu thức quan hệ.
- Biểu thức logic.
- Câu lệnh gán.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng.
E. KIỂM TRA BÀI CŨ ( 5ph ).
1. Nêu các kiểu dữ liệu đã học và ý nghĩa sử dụng của mỗi kiểu dữ liệu đó.
2. Khai báo biến cho bài toán tính diện tích hình tròn.
3. Sửa lỗi cho khai báo trong một bài toán sau:
Var x_y:real
3x: real;
E = 2.34;
Đáp án:
2. const pi=3.14;
var r, dt:real;
3.
Const e = 2.34; (nên khai báo hằng số)
Var x_y:real; (thiếu dấu ;)
x: real; (tên đặt sai quy tắc)
F. NỘI DUNG GIẢNG DẠY
I. ĐẶT VẤN ĐỀ CHO BÀI GIẢNG ( 5ph )
Trang 18
Các em đã biết các kiểu dữ liệu, cách khai báo biến. Tuy nhiên đối với dữ liệu số học thì
trong Pascal xử giống như các phép toán thông thường không? Như cộng, trừ nhân chia.
Đặc biệt phép chia, thì cách thực hiện các phép chia trên mỗi kiểu dữ liệu giống nhau
không? VD như phép chia số nguyên, phép chia số thực,... Bài học hôm nay ta sẽ tìm hiểu kỹ v
những vấn đề trên.
II. NỘI DUNG BÀI HỌC
Thời
gian
Nội dung ghi bảng
Hoạt động của GV
Hoạt động
của HS
5 ph
5 ph
5 ph
5 ph
BÀI 6: PHÉP TOÁN, BIỂU THỨC, CÂU
LỆNH GÁN (tiết 6)
1. Phép toán
Chú ý:
- Kết quả của phép toán quan hệ cho
giá trị logic.
- Một trong những ứng dụng của
phép toán logic để tạo ra các biểu
thức phức tạp từ các quan hệ đơn
giản.
VD:
1. 7 div 4 = 1;
2. 7 mod 4 = 3;
3. Not(true) = false;
4. True and False = False;
5. True or False = True
2. Biểu thức số học
* VD về biểu thức số học:
* Mức ưu tiên các phép toán:
- Ghi bài học lên bảng.
- Để tả thuật toán, mỗi ngôn
ngữ lập trình đều xác định sử
dụng một số khái niệm cơ bản:
Phép toán, biểu thức, gán giá
trị...
- Đối với phép toán toán học
phép toán trong Pascal, các em
xem trên bảng sẽ thấy nhiều
hiệu tương ứng khác nhau.
VD phép chia là dấu (/).
- Với ý nghĩa sử dụng các phép
toán em nào thể đưa ra đáp
án cho các phép toán sau:
1. 7 div 4 = ?;
2. 7 mod 4 = ?;
3. Not(true) = ?;
4. True and False = ?;
5. True or False = ?;
- Trong lập trình biểu thức số
học một biến kiểu số, hoặc
một hằng số, hoặc các biến kiểu
số các hằng số liên kết với
nhau bởi một s hữu hạn phép
toán số học.
- Em nào thể điền kết quả
biểu thức TP trong các biểu
thức toán học tương ứng?
- Các em chú ý về mức ưu tiên
của các phép toán như sau:
(bảng hình bên)
Học sinh
theo dỏi,
ghi chép
bài học.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Trang 19
15
ph
Chú ý:
- Các phép toán trên được thực hiện
trong dấu ngoặc tròn ( ) đầu tiên.
- Phép toán IN để xác định biểu thức
có trong một tập hợp không.
VD:
4 IN [1..14] => kq là True
3. Hàm số học chuẩn
*Để lập trình được thuận tiện, các
ngôn ngữ lập trình đều thư viện
chứa một số chương trình tính giá trị
những hàm toán học thường dung.
Các chương trình như vậy gọi các
hàm chuẩn.
* Một số hàm chuẩn thường dung:
+ Các hàm kiểu thực hoặc nguyên:
- Round(x) Cho giá trị số
nguyên gần x nhất.
- Trunc(x) Cho giá trị phần
nguyên của x.
+ Các hàm kiểu thực:
- SQR(x) Cho giá trị là x
2
.
- SQRT(x) Cho giá trị
x
(x>=0).
- ABS(x) Cho giá trị là
x
- LN(x) Cho giá trị là lnx (x>0).
- EXP(x)Cho giá trị là e
x
.
- SIN(x) Cho giá trị là sinx.
- COS(x)Cho giá trị là cosx.
VD: Biểu diễn biểu thức toán học
bằng TP sau:
1. x
2
+
x
=> sqr(x) + sqrt(x).
2. sin(3x
3
) + cosx
=>sin(3*x*sqr(x))+cos(x).
+ Các hàm khác:
- INC(k,i): Tăng giá trị k lên i lần.
- DEC(k,i): Giảm giá trị k lên i lần.
4. Biểu thức quan hệ
Cú pháp:
- Đối với các phép toán sẽ
không đủ quy tắc để biểu diễn
các phép toán học. Do đó trong
TP đưa ra các hàm số học chuẩn
để thực hiện các phép toán đó.
- Ta bảng các hàm chuẩn
sau:
+ Các hàm kiểu thực hoặc
nguyên:
- SQR(x) Cho giá trị là x
2
.
- SQRT(x) Cho giá trị
x
(x>=0).
- ABS(x) Cho giá trị
x
Đối với các biểu thức
x
kết
quả có thể là kiểu thực
+ Các hàm kiểu thực:
- LN(x) Cho giá trị lnx
(x>0).
- EXP(x)Cho giá trị là e
x
.
- SIN(x) Cho giá trị là sinx.
- COS(x)Cho giá trị là cosx.
- Dựa vào các hàm đã cho, em
hãy biểu diễn các biểu thức sau
sang dạng của TP:
1. x
2
+
x
=> ?
2. sin(3x
3
) + cosx =>?
- Ngoài các m số học chuẩn,
để sử dụng các phép toán quan
hệ TP cung cấp biểu thức quan
hệ theo cú pháp sau:
- Biểu thức quan hệ được thực
hiện theo trình tự: Tính giá trị
biểu thức trước khi thực hiện
phép toán quan hệ theo mức ưu
tiên của phép toán.
- Kết quả của biểu thức quan hệ
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Trang 20
* Trong đó: Biểu thức 1 Biểu
thức 2 cùng kiểu dữ liệu xâu hoặc
cùng kiểu số học.
VD:
i+3 > j+1;
x >= x+1;
5. Biểu thức logic
* Biểu thức logic đơn giản biến
logic hoặc hằng logic.
* Giá trị của biểu thức logic là true
hoặc false
VD:
Tập giá trị của x:
1 ≤ x ≤ 6 → (1<= x) and (x <= 6)
Điều kiện x là số chẵn không chia hết
cho 4:
(x mod 2 = 0) and (x mod 4 <>0)
6. Câu lệnh gán
Cú pháp:
<tên biến> := <biểu thức>;
VD:
x := 5; (x=5)
y := 4; (y=4)
x := x+y; (x=9)
- Một số phương pháp biểu diễn
thông thường:
Ý nghĩa
Biểu diễn trong TP
Cộng thêm
S := S + i
Trừ đi
S := S - i
Nhân thêm
S := S * i
Chia ho
S := S / i
Chú ý:
- Biểu thức bên phải cần được xác
định giá trị trước khi gán.
- Kiểu của biểu thức bên phải dấu
gán phải phù hợp với kiểu của biến
gán.
là giá trị logic true hoặc false.
VD: điều kiện để điểm M(x,y)
thuộc hình tròn tâm I(a,b), bán
kính R là:
- Cuối cùng là câu lệnh gán, đây
một trong những lệnh bản
nhất của ngôn ngữ lập trình.
- Em thử nhận xét xem cách gán
giá trị cho biến sau đã hợp lệ
chưa?
* Khai báo:
Var a: char;
x,y : real;
* Gán:
a := x+y;
Học sinh
theo dỏi,
ghi chép
trả lời.
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:.
- Các phép toán.
- Các hàm số học chuẩn.
- Biểu thức quan hệ.
- Biểu thức logic.
- Câu lệnh gán.
2. Bài tập về nhà:
Trang 21
1. Viết các biểu thức sau trong TP
a) S = (x
3
+ sin(x
2
y))
2
b)
tan(3 ) cot( )
3
S x x
c)
2
4S b ac
d)
2
2
3
2
x y xy
Sx
a


e)
3
sin ( cos )S x x
3
sin ( cos )xx
f)
tan(3 ) cot( )
3
S x x
2. Viết biểu thức logic cho bài toán: điều kiện để x là số không âm là số lẻ?
Gợi ý: (x >0) and (3 mod 2 <> 0).
3. Viết biểu thức logic cho bài toán: In ra số ợng (lấy tên biến SL) học sinh đạt loại khá
với điều kiện hoặc DT > 6.5 hoặc DV > 6.5 và DTB > 6.5.
Gợi ý: ((DT > 6.5 ) or (DV > 6.5 )) and (DTB > 6.5)
Trang 22
Tiết 7_PPCT
Ngày soạn:
Ngày dạy:
BÀI 7-8: CÁC THỦ TỤC VÀO/RA ĐƠN GIẢN
SOẠN THẢO, DỊCH, THỰC HIỆN VÀ HIỆU CHỈNH CHƯƠNG TRÌNH
A. MỤC ĐÍCH VÀ YÊU CẦU
1. Mục đích:
- Học sinh biết các lệnh vào/ra đơn giản để nhập dữ liệu từ bàn phím hoặc đưa dữ liệu ra
màn hình.
- Viết được một số lệnh vào/ra đơn giản.
- Biết cách soạn thảo, dịch, thực hiện và hiệu chỉnh chương trình.
2. Yêu cầu:
- Học sinh hiểu các thủ tục vào/ra.
- Biết các thao tác trực tiếp trên công cụ lập trình Pascal.
- Biết xử lý các lỗi khi lập trình.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học.
- Phát huy tính tích cực chủ động sáng tạo của học sinh.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- Các thủ tục vào/ra (Read/Readln và Write/Writeln).
- Các thao tác xử lý lỗi chương trình.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng.
- Máy chiếu đa năng.
E. KIỂM TRA BÀI CŨ ( 5ph ).
Các bài tập đã giao về nhà.
E. NỘI DUNG GIẢNG DẠY
I. ĐẶT VẤN ĐỀ CHO BÀI GIẢNG ( 2ph )
Các em đã được tìm hiểu về các kiểu của biến, cách khai báo biến, các phương pháp biến đổi
từ công thức toán học sang Pascal. Em nào thể cho thầy biết m thế nào để thể xử các
thông tin đó trên máy tính? (Thông qua ngôn ngữ lập trình Pascal để sử dụng các thủ tục và các
hàm nhằm thực hiện xử các thông tin đó). Bài học hôm nay ta sẽ tìm hiểu về môi trường lập
trình Pascal cũng như các thủ tục hay hàm đơn giản.
II. NỘI DUNG BÀI HỌC
Thời
gian
Nội dung ghi bảng
Hoạt động của thầy
Hoạt động
của trò
15
BÀI 7-8: CÁC THỦ TỤC VÀO/RA, SOẠN
THẢO CHƯƠNG TRÌNH... (tiết 8)
1. Nhập dữ liệu từ bàn phím
* Thủ tục nhập:
- Ghi bài học lên bảng.
- VD: Bài toán tính diện tích
hình tròn:
program dt_hinhtron;
uses crt;
Học sinh
theo dỏi,
ghi chép
Trang 23
ph
20
ph
Cú pháp:
Read(<danh sách biến vào>);
hoặc
Readln(<danh sách biến vào>);
* Trong đó:
- Danh sách biến vào thể 1
hoặc nhiều biến, nếu nhiều biến thì
mỗi biến cách nhau bởi dấu phẩy (,).
VD:
- Read(r) hoặc Readln(r); Nhập 1 giá
trị cho bán kính r.
- Read(r1, r2,...) hoặc Readln(r1,
r2,...); Nhập nhiều giá trị cho bán
kính r.
2. Đưa dữ liệu ra màn hình
* Thủ tục xuất:
Cú pháp:
Write(<danh sách kết quả ra>);
hoặc
Writeln(<danh sách kết quả ra>);
* Trong đó:
- Write: Khi thực hiện chương trình
con trỏ nằm trên dòng hiện tại.
- Writeln: Con trỏ tự động xuống
dòng tiếp theo.
- Danh sách kết quả ra: thể tên
biến đơn, biểu thức, xâu tự hoặc
hằng số.
- Đối với biến đơn, biểu thức, hằng
số thì không có dấu nháy đơn (‘’).
VD:
- write('nhap ban kinh '); in ra : nhap ban
kinh
- writeln('dien tich hinh tron co ban kinh
',r:5:2,' la',s:6:2); In ra: dien tich hinh tron
co ban kinh 2.00 la 12.56.
Chú ý:
- Các thủ tục Readln hoặc Writeln
thể không có tham số.
VD: Readln; (Tạm dừng xem kq
chương trình). Writeln; (Tự động đưa
con trỏ xuống dòng).
- Quy cách ra:
const pi=3.14;
var r,s:real;
begin
clrscr;
write('nhap ban kinh ');readln(r);
s:=pi*sqr(r);
writeln('dien tich hinh tron co ban
kinh ',r:5:2,' la',s:6:2);
readln
end.
-VD trên một chương trình
đơn giản. Input của chương
trình trên gì? Để đưa thông
tin vào thì thông qua câu lệnh
nào? (Khi thực hiện chương
trình người ta nhập giá trị bán
kính thông qua câu lệnh nhập
Read/Readln)
- Mỗi lần nhập giá trị cho bán
kính thì giá trị đó được gán cho
biến r.
- Khi nhập nhiều giá trị cho
biến thì xong mỗi thao tác nhập
sử dụng phím Enter để nhập
giá trị tiếp theo.
- Chú ý khi nhập giá trị của biến
thì phải tương ứng với kiểu của
biến.
- Em nào thể sử dụng máy
tính đã có sẵn chương trình
nhập giá trị cho biến r ?
- Để đưa câu dẫn 'nhap ban kinh '
kết quả tính diện tích ra màn
hình thì người ta sử dụng câu
lệnh nào ? (câu lệnh xuất Write/
Writeln).
- Em nào cho thầy biết khi thực
hiện chương trình thì thủ tục
Write Writeln khác nhau
điểm nào?
- Em nào cho thầy biết khi thực
hiện chương trình VD trên,
thủ tục write('nhap ban kinh '); sẽ in
ra như thế nào?
- Còn đối với câu lệnh
writeln('dien tich hinh tron co ban
kinh ',r:5:2,' la',s:6:2); sẽ in ra như
thế nào nếu ta nhập bán kính
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Trang 24
5 ph
:<độ rộng>:<số chữ số thập phân>
hoặc
:<độ rộng>
3. Soạn thảo, dịch, thực hiện
hiệu chỉnh chương trình
*Thao tác thực hiện:
- Soạn thảo: Gõ nội dung chương
trình.
- Lưu chương trình: Nhấp phím F2.
- Mở CT có sẵn trong TP: Nhấn F3
- Kiểm tra chương trình: F9.
- Biên dịch chương trình: Alt+F9.
- Chạy chương trình: Ctrl+F9.
- Đóng cửa sổ chương trình: Alt+F3.
- Thoát khỏi Pascal: Alt+X.
bằng 2?
- Em nào cho biết hiên tượng
sẽ xảy ra nếu câu lệnh in kết
quả được thay đổi như sau:
writeln('dien tich hinh tron co ban
kinh ',r ,' la', s); ? In kết quả
vậy Pascal đưa quy cách của
kết quả ra.
VD: writeln('dien tich hinh tron co
ban kinh ',r:5:2,' la',s:6:2);
- Em nhận xét về cách viết
trên: ( r được dành 5 vị trí trong
đó 2 vị trí dành cho chữ số
thập phân, 1 vị trí cho phần
nguyên 1 vị trí cho dấu (.),
còn diện tích 6 vị trí, 2 vị trí
cho phần thập phân 3 vị trí
cho phần nguyên, 1 vị trí cho
dấu (.))
- Để thể thực hiện chương
trình được viết bằng ngôn ngữ
lập trình thì ta cần soạn thảo
chương trình trên môi trường
ngôn ngữ lập trình cthể. Ngôn
ngữ lập trình Pascal là một ví dụ
ta sẽ tìm hiểu về môi trường
lập trình này
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (3 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:.
- Thủ tục nhập dữ liệu: Read/Readln.
- Thủ tục xuất dữ liệu: Write/Writeln.
- Quy cách định dạng số.
2. Bài tập về nhà:
1. Chuẩn bị bài tập và thực hành số 1.
2. Viết các chương trình tính diện tích hình thang, tam giác biết cạnh đáy và chiều cao.
3. Bài thực hành 3, 4, 5 trang 35 SGK.
Thanh bảng
chọn
Tên tệp CT
Cột
Dòng
Trang 25
Tiết 8,9_PPCT
Ngày soạn:
Ngày dạy:
BÀI TẬP VÀ THỰC HÀNH SỐ 1
A. MỤC ĐÍCH VÀ YÊU CẦU
1. Mục đích:
- Học sinh bước đầu lập trình được các chương trình đơn giản.
- Thao tác thành thạo trên môi trường Pascal.
2. Yêu cầu:
- Học chuẩn bị bài tập ở nhà của tiết học trước.
- Học sinh chú ý làm bài tập và thực hành.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Gợi ý phương pháp lập trình đơn giản.
- Hướng dẫn học sinh biết cách hiệu chỉnh các lỗi sai khi thực hiện chương trình.
C. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng.
- Phòng máy.
E. NỘI DUNG GIẢNG DẠY
Bài 1: Em hãy nêu lại các thao tác lập trình trên môi trường ngôn ngữ lập trình Pascal.
Gợi ý: - Mở môi trường lập trình Pascal.
- Soạn thảo chương trình.
- Nhấp phím F9 để kiểm tra chương trình.
- Nhấp tổ hợp phím Ctrl+F9 để chạy chương trình.
- Nhập giá trị kiểm thử.
Bài 2: Soạn thảo thực hiện chạy chương trình giải phương trình bậc 2 theo hướng dẫn trong
SGK trang 34.
Bài 3: Viết chương trình nhập sa (a>0) rồi tính đưa ra diện tích phần gạch chéo trong hình
bên, kết quả làm tròn đến 4 chữ số hàng thập phân.
Gợi ý: - Xác định Input và Output
- Viết chương trình.
- Nhập thử các bộ số khác nhau.
- write('dien tich phan con lai la ',sqr(a)*pi/2:10:2);
Bài 4: Lập trình tính và đưa ra màn hình vận tốc v của một vật rơi từ độ cao h, biết rằng
2v gh
, trong đó g là gia tốc rơi tự do và g=9,8m/s
2
. Độ cao h(m) được nhập vào từ bàn phím.
Gợi ý: - Xác định Input và Output
- Viết chương trình.
- Nhập thử các bộ số khác nhau.
v := sqrt(2*g*h);
writeln(‘van toc cua vat khi cham dat la: v = ’, v:8:2,’m/s’);
Bài 5: Hãy chỉ ra 4 lỗi (ba lỗi dịch, một lỗi thực hiện) trong chương trình Pascal sau:
Var x,y,z = integer; {dong 1}
Trang 26
Begin {dong 2}
X := 200; {dong 3}
Y := 250 {dong 4}
Z = X*Y; {dong 5}
Write(z); {dong 6}
Readln {dong 7}
End. {dong 8}
Trả lời:
- Lỗi 1: Dấu (=) ở dòng 1 phải đổi thành dấu (:).
- Lỗi 2: Thiếu dấu (;) ở dòng 4.
- Lỗi 3: Ký hiệu sai lệnh gán ở dòng 5.
- Biểu thức X*Y không được xác định đúng khai báo Z kiểu integer nên Z không thể
nhận giá trị 200*250 = 500000
Bài 6: Viết chương trình tính giá trị của biểu thức 2x
4
- 3x
3
+ 4x
2
- 5x + 6.
Gợi ý: - Xác định Input và Output
- Viết chương trình.
- Nhập thử các bộ số khác nhau.
- Y := x*(x*(x*(2*x - 3) + 4) -5) + 6;
Bài 7: Viết chương trình tính giá trị của biểu thức
3
(1 )
1
1
y
x
z
Bz
a
x

Gợi ý: - Xác định Input và Output
- Viết chương trình.
- Nhập thử các bộ số khác nhau.
- A = (1+z) * ((x+y/z)/(a 1/ (1+sqr(x)*x)));
Bài 8: Viết chương trình nhập vào 2 số a, b. Sau đó hoán đổi giá trị của 2 số đó:
Gợi ý: Cho phép dùng biến trung gian.
Bài 9: Dùng các phép toán DIV MOD để đổi thời gian từ số giây ra giờ phút giây với
số giây nhập từ bàn phím:
Program GPGiay;
Var h,p,s: Integer;
Begin
Write('Nhap vao thoi gian s = '); Readln(s);
write(s:6,'giay duoc doi thanh: ');
P := s div 60;
S := s mod 60;
H := p div 60;
P := p mod 60;
Writeln(h:4,'gio',p:4,'phut',s:4,'giay');
Không dùng biến trung gian:
a := a + b;
b := a - b;
a := a - b;
Dùng biến trung gian: tam
tam:=a;
a:=b;
b:=tam;
Trang 27
Readln;
End.
Bài 10: Bài tập 8a SGK, trang 36 (câu b tương tự)
Gợi ý: Cách 1: (y<=1) and (abs(x) <= y)
Cách 2: ((y < 1) or (y = 1)) and ((abs(x) < y) or (abs(x) = y))
Chú ý: (y<=1) and (abs(x) <= 1) là sai: Giả sử A(0,7 ; 0,5) không nằm trong vùng gạch chéo.
Bài 11: Bài tập 2.24 Sách bài tập, trang 12. Đáp án đúng D.
Gợi ý: - Điều kiện để tọa độ điểm nằm trên hoặc ngoài đường tròn là: (x*x + y*y 25) nên
là đáp án D và E.
- Vì tọa độ điểm nằm trên đường biên nên chỉđk (abs(x) ≤ 5) and (abs(y) ≤ 5) thỏa
mãn vì có dấu bằng xảy ra.
Bài 12: BT 2.25 Sách bài tập, trang 13. Gợi ý: Tính d1, d2 d = d2 - d1. Hoặc d = (30-10)t
Bài tập tương tự: Trên đoạn đường có 2 điểm xuất phát X và Y cách xa nhau A km. Một người
đi xe máy xuất phát từ điểm X với tốc độ B km/h, người đi ôtô xuất phát từ điểm Y với tốc độ C
km/h (A B +C ). y viết chương trình in kết quả sau bao lâu thì 2 người gặp nhau gặp tại
vị trí cách X bao xa biết rằng A, B, C được nhập từ bàn phím.
Bài 13: Bài tập 2.26 Sách bài tập, trang 13. Hiền gọi điện thoại trao đổi với Minh, cứ mỗi phút
dùng điện thoại phải trả a đồng. Cuộc gọi o dài t phút. y viết chương trình tính đưa ra
màn hình số tiền mẹ bạn Hiền cuối tháng phải thanh toán cho cuộc trao đổi y. Các số liệu
at (nguyên dương) được nhập từ bàn phím.
Bài 14: Bài tập 2.27 Sách bài tập, trang 13. Theo quy định của nhà trường, mỗi trường hợp
không đeo thẻ học sinh sẽ bị trừ đi 3 điểm thi đua của lớp, mỗi trường hợp nói chuyện trong lớp
bị trừ 2 điểm mỗi trường hợp đi muộn tr 5 điểm. Sổ đầu bài ghi nhận trong tháng t
trường hợp không đeo thẻ, n trường hợp nói chuyện và m trường hợp đi muộn. y nhập các dữ
liệu y vào từ bàn phím đưa ra màn hình số điểm thi đua lớp bị trừ trong tháng. Tất cả
các dữ liệu đều là số nguyên.
Bài 15: Bài tập 2.30 Sách bài tập, trang 13. Để đắp thiệt hại cho nhân dân trong công tác
phòng chống dịch cúm gia cầm H5N1, nhà nước hỗ trợ cho các hộ gia cầm bị thiêu hủy theo
định mức sau: mỗi con gia cầm từ một tháng tuổi trở xuống a đồng, mỗi con gia cầm trên 1
tháng tuổi dưới 3 tháng tuổi b đồng, từ 3 tháng tuổi trở lên c đồng 1 con. Một hộ nông
dân có đàn gia cầm n con phải thiêu hủy, trong đàn m con dưới 3 tháng tuổi, trong số đó k
con từ 1 tháng tuổi trở xuống (0 <= k <= m <= n <= 10000). Hãy lập trình nhập dữ liệu a, b,
c, m, n, k từ bàn phím, tính đưa ra màn hình số tiền hỗ trợ nhà nước sẽ chi trả cho hộ nông
dân trên. Tất cả các dữ liệu vào đều là số nguyên.
Gợi ý:
- Có k con dưới 1 tháng => có a*k đồng.
- Có m con dưới 3 tháng trong đó bao gồm cả k con dưới 1 tháng => có b*(m-k) đồng.
- Có tất cả n con trong trại nên có c*(n-m) đồng.
=> Vậy số tiền mà nhà nước phải hỗ trợ là: a*k + b*(m-k) + c*(n-m) đồng.
Bài 16: Bài tập 2.33 Sách bài tập, trang 15. Lập trình nhập từ bàn phím 2 số thực a b, nh
đưa ra màn hình:
a) Trung bình cộng các bình phương của 2 số đó.
b) Trung bình cộng các giá trị tuyệt đối của 2 số đó.
Bài 17: Bài tập 2.39 ch bài tập, trang 17. Cho số nguyên N 4 chữ số. y dùng các phép
DIV và MOD tính tổng các chữ số của N. Dữ liệu nhập vào từ bàn phím.
Gợi ý: tong := 0;
Tong := n div 1000;
Trang 28
Kq := n mod 1000;
Tong := tong + (kq div 100);
Kq := kq mod 100;
Tong := tong + (kq div 10);
Kq := kq mod 10;
Tong := tong + kq;
Trang 29
Tiết 10_PPCT
Ngày soạn:
Ngày dạy:
BÀI TẬP VÀ KIỂM TRA 15ph
A. MỤC ĐÍCH VÀ YÊU CẦU
1. Mục đích:
Học sinh ôn lại các kiến thức đã học về các nội dung chính sau:
1. Cấu trúc chung của một chương trình.
2. Cách khai báo biến.
3. Các hàm chuẩn và câu lệnh gán.
Kiểm tra 15ph nhằm đánh giá tình hình học tập của học sinh.
2. Yêu cầu:
- Học sinh đã ôn lý thuyết và làm một số bài tập có nội dung liên quan tại nhà.
- Tích cực tham gia làm bài tập.
- Học sinh trật tự khi làm bài kiểm tra.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Hướng dẫn học sinh trả lời các câu hỏi trắc nghiệm. Sau mỗi lựa chọn đúng hoặc sai đều
câu hỏi vì sao.
- Một số câu hỏi tự luận để học sinh tư duy trong quá trình làm bài.
C. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng.
F. NỘI DUNG GIẢNG DẠY
Câu 1: Trong biểu thức bất kỳ, ngôn ngữ lập trình dùng những loại nào để xác định trình tự
thực hiện các phép tính?
Trả lời:
Chỉ dùng một loại đó là dấu ngoặc tròn ().
Câu 2: Chương trình dịch Pascal sẽ cấp phát bao nhiêu byte bộ nhớ cho các biến trong khai báo
sau: var a, b, c, d: integer;
x, y, z: real;
w: word;
Trả lời:
var a, b, c, d: integer; (2 byte)
x, y, z: real; (6 byte)
w: word; (2 byte)
Câu 3: Chỉ ra các lỗi trong khai báo sau:
Var i, m, n: real;
Pi = 3.14;
5x, y2: integer;
Trả lời:
Var i, m, n: real;
Pi = 3.14; (Lỗi do vị trí khai báo sai )
5x, y2: integer; (Lỗi do đặt tên sai)
Trang 30
Câu 4: Em có nhận xét gì về các khai báo sau? Hãy viết lại các khai báo cho hợp lý hơn.
Var p: real;
N: integer;
A: real;
K: integer;
B1: real;
C: integer;
Trả lời: Các khai báo trên là quá dài, nên gộp các biến cùng kiểu trong khai báo.
Var p, A, B1: real;
N, K, C: integer;
Câu 5: Viết lại các biểu thức sau từ dạng toán học sang dạng biểu diễn tương ứng trong Pascal:
a)
3
3
1
y
x
b)
2
sinx
cos
a
ax
c)
x y
x
y
2
d)
2
3
sin
cos 1
x
x
e)
3
1x y x
f)
4
2
24
xy
xx
Trả lời:
a) abs(x+sqr(sqr(y)))/sqrt(2*sqr(x)-4*x) b) (a+sinx)/sqrt(sqr(x)+cos(x))
c) (2*exp(x+y)+x-y*sqr(y))/(sqr(x)+sqr(y)) d) sqr(sinx)/cosx*sqr(cos(x))
e) sqrt(x+y)+abs(x*sqr(x)-1)
f) (abs(x+sqr(y)*sqr(y)))/(sqrt(2*sqr(x)-4*y))
Đề kiểm tra 15ph
Câu 1: Viết chương trình giải các bài toán sau:
a/ A =
3
22
2
xy
e x y
xy

b/ B = e
2
| sin ( ) |a x x
Câu 2: Mỗi học sinh y nhập vào 2 số nguyên dương bất ktừ bàn phím, nêu các bước thực
hiện của chương trình để đưa ra kết quả đúng. Lưu ý: giá trị nhập cho a b không được trùng
nhau.
Trang 31
Tiết 11_PPCT
Ngày soạn:
Ngày dạy:
BÀI 9: CẤU TRÚC RẼ NHÁNH
A. MỤC ĐÍCH VÀ YÊU CẦU
1. Mục đích:
- Học sinh hiểu nhu cầu của cấu trúc rẽ nhánh trong biểu diễn thuật toán.
- Hiểu câu lệnh rẽ nhánh (dạng thiếu và dạng đủ).
- Hiểu câu lệnh ghép.
2. Yêu cầu:
- Học sinh chú ý học tập.
- Sử dụng được cấu trúc rẽ nhánh trong mô tả thuật toán của một số bài toán đơn giản.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học.
- Sử dụng các mô hình như sơ đồ khối, thực hiện giải thuật trên sơ đồ khối.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- Cấu trúc câu lệnh rẽ nhánh dạng thiếu và dạng đủ.
- Cấu trúc, ý nghĩa sử dụng câu lệnh ghép.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng.
- Máy chiếu đa năng.
E. NỘI DUNG GIẢNG DẠY
I. ĐẶT VẤN ĐỀ CHO BÀI GIẢNG ( 2ph )
Trong cuộc sống các em thường gặp những tình huống lúc đúng, lúc sai. Có nhiều vấn đề
cách giải quyết lại theo các hướng khác nhau. Đó những trường hợp phân nhánh. Vậy thì các
thông tin khi đưa vào y tính như vậy không? Nếu thì máy tính xử thế nào? VD như
trường hợp giải bài toán nghiệm của phương trình bậc 2 biện luận theo delta.
II. NỘI DUNG BÀI HỌC
Thời
gian
Nội dung ghi bảng
Hoạt động của thầy
Hoạt động
của trò
15
ph
BÀI 9: CẤU TRÚC RẼ NHÁNH (tiết 11-12)
1. Rẽ nhánh
VD1:
* Châu hẹn Ngọc: Chiều mai nếu trời
không mưa thì Châu sẽ đến nhà
Ngọc.
* Ngọc nói với Châu: Chiều mai nếu
trời không mưa thì Ngọc sẽ đến nhà
Châu, nếu trời mưa t sẽ gọi điện
cho Châu để trao đổi.
- Ghi bài học lên bảng.
- Mời một em đọc VD trong
SGK về cuộc hẹn giữa Châu
Ngọc.
- VD bạn vừa đọc một
VD thực tế các em thường gặp.
Ở đây có 2 tình huống rõ rệt xảy
ra:
* Châu hẹn Ngọc: Chiều mai
nếu trời không mưa thì Châu sẽ
Học sinh
theo dỏi,
ghi chép
bài học.
Trang 32
20
ph
5 ph
Diễn đạt dạng thiếu:
Nếu ... thì...
Diễn đạt dạng đầy đủ:
Nếu ... thì..., nếu không thì...
VD2: Giải phương trình bậc 2:
ax
2
+ bx + c = 0 (a ≠ 0)
* Giải thuật sơ đồ khối
2. Câu lệnh If – then
a) Dạng thiếu:
Cú pháp:
If <điều kiện> then <câu lệnh>;
b) Dạng đủ:
Cú pháp:
If <điều kiện> then <câu lệnh 1>
else <câu lệnh 2>;
* Trong đó:
- DK: điều kiện là biểu thức logic.
- Câu lệnh: Là câu lệnh trong Pascal.
- Trước Else không có dấu (;).
VD: Các VD trong SGK.
3. Câu lệnh ghép
đến nhà Ngọc.
* Ngọc nói với Châu: Chiều
mai nếu trời không mưa thì
Ngọc sẽ đến nhà Châu, nếu trời
mưa thì sẽ gọi điện cho Châu để
trao đổi.
- Như vậy 2 tình huống xảy ra
cho ta 2 khả ng diễn đạt, tình
huống thứ 2 diễn đạt đầy đủ
hơn.
- Vậy trong toán học các khả
năng xảy ra như vậy không?
Câu trả lời có. Ta xem VD
giải phương trình bậc 2:
ax
2
+ bx + c = 0 (a 0). Bạn
nào thể viết thuật toán trên
theo sơ đồ khối hoặc liệt kê.
- Trên bảng các em thấy
đồ thể hiện cấu trúc rẽ nhánh
trường hợp nghiệm
nghiệm.
- Vậy em nào biết để thực hiện
bài toán rẽ nhánh trên ngôn ngữ
lập trình Pascal cho phép người
lập trình sử dụng câu lệnh nào ?
Đó là câu lệnh If then.
- Tương ứng với 2 dạng thiếu và
đủ trên, Pascal hai dạng
câu lệnh If then như sau:
a) Dạng thiếu:
If <điều kiện> then <câu
lệnh>;
b) Dạng đủ:
If <điều kiện> then <câu
lệnh> else <câu lệnh 2>;
- Dang thiếu chỉ thực hiện 1 câu
lệnh nếu đúng, sai thì kết thúc,
Còn dạng đủ thực hiện theo 2
nhánh, nếu đúng thì thực hiện
câu lệnh 1, sai thì thực hiện câu
lệnh 2.
- Các em xem các VD trong
sách giáo khoa cài đặt các
bài toán đó.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Trang 33
Trong qtrình giải các bài toán
phức tạp, không phải chỉ thao tác với
1 câu lệnh thể thao tác với
nhiều câu lệnh, các câu lệnh được
gộp lại và tạo thành câu lệnh ghép.
Câu lệnh ghép có dạng:
Begin
<Các câu lệnh>;
End;
VD:
If d < 0 then write(‘vo nghiem’)
else
begin
x1 := (-b-sqrt(D)) / (2*a*c);
x2 := -b/a x1;
end;
Chú ý:
- Câu lệnh if - then thể lồng nhau
và có dạng:
Dạng 1:
If <Đk 1> then
Begin
<câu lệnh 1>;
If <Đk 2> then <câu lệnh 2>;
End
Else <câu lệnh 3>;
Dạng 2:
If <Đk 1> then <câu lệnh 1>;
If <Đk 2> then <câu lệnh 2>
Else <câu lệnh 3>;
- Từ khóa Begin End không
chỉ dùng để bắt đầu hoặc kết
thúc một chương trình còn
dùng để bắt đầu hoặc kết thúc
một y c câu lệnh đó câu
lệnh ghép.
- Em nào thể viết chương
trình cho bài toán giải phương
trình bậc 2.
Học sinh
theo dỏi,
ghi chép
làm bài
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (3 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:.
- Thủ tục nhập dữ liệu: Read/Readln.
- Thủ tục xuất dữ liệu: Write/Writeln.
- Quy cách định dạng số.
2. Bài tập về nhà:
1. m số lớn nhất của 2 số x, y.
2. Giải phương trình bậc 2.
3. Viết chương trình tìm giá trị lớn nhất của 3 số a, b, c.
4. Viết chương trình nhập từ bàn phím một số nguyên dương, in ra màn hình kq số chẵn
hoặc số lẻ.
5. Viết chương trình nhập từ bàn phím một số nguyên, in ra màn hình kq số âm hoặc số
dương.
6. m GTLN của 4 số a, b, c, d là những số nguyên được nhập từ bàn phím.
Gợi ý:
max:=a;
if b > max then max := b;
if c > max then max := c;
Trang 34
if d > max then max := d;
write('max= ', max);
7. Nhập 3 số nguyên từ bàn phím, tính in ra màn hình kết quả bình phương của các số
không âm và lập phương của các số âm.
Trang 35
Tiế 12,13_PPCT
Ngày soạn:
Ngày dạy:
BÀI 10: CẤU TRÚC LẶP
A. MỤC ĐÍCH VÀ YÊU CẦU
1. Mục đích:
- Học sinh hiểu nhu cầu của cấu trúc lặp trong biểu diễn thuật toán.
- Hiểu cấu trúc lặp với số lần lặp biết trước.
2. Yêu cầu:
- Học sinh biết cách vận dụng đúng đắn từng loại cấu trúc lặp trong từng tình huống cụ thể.
- Biết cách mô tả thuật toán trong một số bài toán đơn giản.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học.
- Sử dụng các mô hình như sơ đồ khối, thực hiện giải thuật trên sơ đồ khối.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- Khái niệm lặp trong thuật toán.
- Cấu trúc lặp với số lần đã biết trước, câu lệnh lặp FOR-DO.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng.
- Máy chiếu đa năng.
E. NỘI DUNG GIẢNG DẠY
I. ĐẶT VẤN ĐỀ CHO BÀI GIẢNG ( 5ph )
Các em đã bao giờ gặp các tình huống lặp chưa? Em nào thể kể cho thầy biết một số tình
huống lặp em biết? VD1 như chương trình tính điểm cho 50 học sinh trong lớp. Quá trình
giáo viên nhập htên, điểm cho từng em học sinh là một quá trình lặp liên tục cho đến khi nhập
đầy đcho 50 học sinh thì mới kết thúc. Như vậy qtrình lặp trên quá trình lặp với số lần
đã biết trước 50 lần lặp. Hoặc tình huống thứ 2 là: Em thực hiện một công việc gánh ớc
để đổ vào 1 thùng ớc? Em biết cần bao nhiêu thùng ớc thì đủ không? Như vậy em cần
phải đổ đầy thùng nước không biết cần bao nhiêu gánh nước. Đó tình huống lặp với số
lần chưa biết trước? Vậy trong ngông ngữ lập trình Pascal cung cấp cho người lập trình các
công cụ để thực hiện các bài toán về lặp không? Ta sang bài học mới để tìm hiểu các công cụ
này nhé!
II. NỘI DUNG BÀI HỌC
Thời
gian
Nội dung ghi bảng
Hoạt động của thầy
Hoạt động
của trò
Trang 36
10
ph
10
ph
BÀI 10: CẤU TRÚC LẶP (tiết 14)
1. Lặp
Cho
az
2a
. Tính giá trị S
Bài 1:
1 1 1 1
... .
1 2 100
S
a a a a
Bài 2:
1 1 1 1
... ...
12
S
a a a a N
Cho đến khi
1
0,0001
aN
- Hai bài toán đều thực hiện phép lặp
cộng bắt đầu từ N=0..
- Bài toán 1 thực hiện lặp với N=100.
- Bài toán 2 thực hiện phép lặp chưa
biết trước số lần N, phép lặp dừng
cho tới khi
1
0,0001
aN
.
2. Lặp với số lần biết trước câu
lệnh FOR-DO
Thuật toán
Dạng lặp tiến:
Nhập a
S:=1/a; N:=0
N:=N+1
N>100
S:=S+1/(a+N)
In S
F
T
Dạng lăp lùi:
Nhập a
S:=1/a; N:=101
N:=N-1
N<1
S:=S+1/(a+N)
In S
F
T
Nhận xét:
- Lặp tiến: Xuất phát N=0, sau mỗi
lần lặp thì N tăng lên 1 đơn vị.
- Lặp lùi: Xuất phát N=101, Sau mỗi
- Ghi bài học lên bảng.
- Các em vừa được biết 2 VD về
lặp thường thấy trong cuộc sống
tự nhiên. y giờ ta sẽ xem xét
2 VD trong toán học trong
SGK.
- Từ 2 bài toán trên em nào cho
thầy biết bài thứ nhất lặp cộng
bao nhiêu lần? xuất phát từ
số hạng nào, tại số hạng này N
bằng bao nhiêu?
- Còn đối với bài toán 2 lặp
cộng bao nhiêu lần? xuất
phát từ số hạng nào, tại số hạng
này N bằng bao nhiêu?
=> Như vậy đối với bài toán 1
phép lặp giới hạn 100 lần, bài
toán 2 phép lặp không biết
trước, nó thực hiện lặp cộng cho
đến khi thỏa mãn điều kiện
1
0,0001
aN
thì kết thúc.
- Bài học hôm nay ta nghiên
cứu về phép lặp đã biết trước số
lần lặp tương ứng với cấu trúc
câu lệnh FOR-DO.
- Em nào thể nêu ý tưởng
thuật toán để giải bài toán 1.
- Ta 2 cách để viết thuật toán
giải bài toán 1. Đó lặp tiến
lặp lùi.
- Em nào thể trình bày thuật
toán dưới dạng sơ đồ khối.
- Em nào thể nhận xét về hai
dạng lặp trên điểm giống
và khác nhau ở chỗ nào?
- Em nào cho thầy biết tương
ứng với 2 dạng lặp trên thì ngôn
ngữ lập trình Pascal đã cung cấp
cho chúng ta câu lệnh nào?
- Đó câu lệnh FOR-DO dùng
để tả cho hai dạng lặp
trên.
- Em nào thể nêu cách thức
hoạt động của câu lệnh FOR-
Học sinh
theo dỏi,
ghi chép
bài học.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Trang 37
20
ph
30
ph
lần lặp thì N giảm đi một đơn vị.
- Số lần lặp tiến và lặp lùi là 100 lần.
* Câu lệnh FOR-DO
Dạng lặp tiến:
FOR <biến đếm>:=<gt.đầu> TO
<gt.cuối> DO <câu lệnh>;
Dạng lặp lùi:
FOR <biến đếm> := <gt.cuối>
DOWNTO <gt.đầu> DO <câu
lệnh>;
Trong đó:
- Biến đếm: biến đơn, thường có
kiểu nguyên.
- gt.đầu, gt.cuối: c biểu thức
cùng kiểu với biến đếm.
Chú ý:
- Giá trị của biến đếm được điều
chỉnh tự động, câu lệnh sau DO
không được thay đổi giá trị biến đếm.
VD1: Chương trình cài đặt cho bài
toán 1 theo 2 dạng lặp (SGK)
VD2: (SGK)
DO?
- Câu lệnh FOR-DO được áp
dụng trong bước mấy của 2
dạng thuật toán trên?
- Em nào thể viết chương
trình tương ng với 2 dạng
thuật toán đó.
Áp dụng vào thuật toán hoặc
chương trình em nào có thể thực
hiện chạy chương trình với a=2
- VD2: GV giúp học sinh tìm
hiểu thuật toán, cài đặt chương
trình kiểm thử bằng các bộ
test.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
làm bài
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (15 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:.
- Câu lệnh lặp dạng tiến: FOR <biến đếm>:=<gt.đầu> TO <gt.cuối> DO <câu lệnh>;
- Câu lệnh lặp dạng lùi: FOR <biến đếm> := <gt.cuối> DOWNTO <gt.đầu> DO <câu lệnh>;
2. Bài tập về nhà:
1. Viết chương trình nhập số nguyên dương N từ bàn phím và thực hiện các công việc sau:
a) Đếm xem có bao nhiêu số chẵn, bao nhiêu số lẻ trong phạm vi từ 1 đến N.
b) Tính tổng giá trị các số chẵn, số lẻ.
2. Viết chương trình tính giá trị của mỗi tổng sau, với n được nhập từ bàn phím
a)
1 2 ...Sn
.
b)
1-2+3-4+.....+ .S

n1
1n
Gợi ý:
s:= 0;
dau:=1;
for i:=1 to n do
Dùng While - Do
S:=0; i:=1;
While i<=N Do
Begin
S:=S+i;
i:=i+1;
End;
Dùng FOR - Do
S:=0;
For i:=1 to N do S:=S+i;
Trang 38
begin
s:=s+i*dau;
dau:=-dau;
end;
c)
50
1
1
n
n
n
Trang 39
Tiết 14_PPCT
Ngày soạn:
Ngày dạy:
BÀI 10: CẤU TRÚC LẶP
A. MỤC ĐÍCH VÀ YÊU CẦU
1. Mục đích:
- Học sinh hiểu nhu cầu của cấu trúc lặp trong biểu diễn thuật toán.
- Hiểu cấu trúc lặp với số lần lặp chưa biết trước, kiểm tra điều kiện trước khi lặp.
2. Yêu cầu:
- Học sinh biết cách vận dụng đúng đắn từng loại cấu trúc lặp trong từng tình huống cụ thể.
- Biết cách mô tả thuật toán trong một số bài toán đơn giản.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học.
- Sử dụng các mô hình như sơ đồ khối, thực hiện giải thuật trên sơ đồ khối.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- Lặp với số lần chưa biết trước, câu lệnh lặp While - Do
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng.
- Máy chiếu đa năng.
E. KIỂM TRA BÀI CŨ (15ph)
1. Nêu cấu trúc câu lệnh lặp với số lần biết trước. Tại sao trong câu lệnh lặp FOR-DO người
ta không cần câu lệnh thay đổi giá trị của biến chỉ số.
2. Viết chương trình tính giá trị của mỗi tổng sau, với n được nhập từ bàn phím
a)
1 2 ...Sn
.
b)
50
1
1
n
n
n
F. NỘI DUNG GIẢNG DẠY
I. NỘI DUNG BÀI HỌC
Thời
gian
Nội dung ghi bảng
Hoạt động của thầy
Hoạt động
của trò
10
ph
BÀI 10: CẤU TRÚC LẶP (tiết 14)
Cho
az
2a
. Tính giá trị S
Bài 2:
1 1 1 1
... ...
12
S
a a a a N
Cho đến khi
1
0,0001
aN
3. Lặp với số lần chưa biết trước
và câu lệnh WHILE-DO
Thuật toán liệt kê:
- Ghi bài học lên bảng.
- Bài trước các em đã tìm hiểu
khái niệm về lặp lặp với số
lần biết trước, bài học hôm nay
ta sang phần tiếp theo lặp với
số lần chưa biết trước, ta sẽ làm
việc trên bài toán 2 trong bài
này số lần lặp N là chưa biết.
- Em nào thể nêu ý tưởng
Học sinh
theo dỏi,
ghi chép
bài học.
Trang 40
10
ph
10
ph
B1: Nhập a;
B2: S:=1/a; N:=0;
B3: Nếu 1/(a+N)<0,0001 → B6;
B4: N:=N+1;
B5: S:=S+1/(a+N) → B2;
B6: In S
Cú pháp câu lệnh lặp:
While <ĐK> do <câu lệnh>;
* Trong đó:
- ĐK: Điều kiện là biểu thức logic;
- Câu lệnh:Làcâu lệnhđơn hoặc ghép.
Thuật toán theo sơ đồ khối:
Nhập a
S:=1/a;
N:=0;
1/(a+N)
<0.0001?
N:=N+1;
S:=S+1/(a+N);
In S
F
T
Chương trình:
Program tong_2;
Var a, n : Integer;
S : Real;
Begin
Write(‘nhap a= ’); Readln(a);
S:=1/a;
N:=0;
While 1/(a+N)>=0.0001 Do
Begin
N := N + 1;
S := S + 1/(a+N);
End;
Writeln(‘tong S cua bai toan 2
la ’, S:10:2);
Readln;
End.
VD1: m ƯCLN của 2 số nguyên
dương M và N.
*Ý tưởng:
- Nhập kiểm tra 2 sM N, nếu
M=N thì ƯCLN M. Nếu không
thực hiện vòng lặp n M=M-N nếu
M>N và ngược lại, cho đến khi M=N
*Thuật toán:
giải bài toán 2?
- Em nào có thể viết thuật toán
giải bài toán 2 bằng phương
pháp liệt kê?
- Theo em lặp với số lần chưa
biết trước có mấy dạng?
- Lặp với số lần chưa biết trước
có 2 dạng:
Dạng 1:
Trong khi <ĐK> còn đúng thì
thực hiện <câu lệnh>.
Dạng 2:
Thực hiện <công việc> trong
khi <ĐK> còn đúng.
- Ở dạng 1: Đầu tiên kiểm tra và
tính giá trị của ĐK, nếu ĐK còn
đúng thì thực hiện công việc
chỉ thực hiện 1 lần. Mỗi lần
thực hiện công việc thể sẽ
làm thay đổi giá trị của ĐK nên
đến một lúc nào đó ĐK lặp
không còn đúng nữa vòng
lặp sẽ được kết thúc.
- Theo em ĐK lặp trong bài
toán 2 khi nào thì kết
thúc lặp?
- Như vậy thuật toán của bài
toán 2 áp dụng phương pháp lặp
dạng 1. kiểm tra ĐK
1/(a+N)<0,0001 trước khi thực
hiện công việc lặp.
- Tương ứng với dạng 1 em nào
cho biết câu lệnh lặp trong
Pascal là gì?
- Theo đồ khối vòng lặp
While Do thể hiện trong
những bước nào?
- Theo cấu trúc lặp trong Pascal,
em nào thể viết chương trình
giải bài toán 2 theo dạng 1?
- Em hãy thực hiện phép lặp với
a = 9995.
B1: Nhập a = 5;
B2: Gán N=0;
B3: Thực hiện lặp:
1/9995 > 0.0001:
N:=0+1=1;
S:=1/9995+1/(9996) → B3
1/9996 > 0.0001:
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Trang 41
Nhập M,N
M = N ?
Nhập M,N
M > N ?
N:=N-M
M:=M-N
T
T
S S
*Chương trình:
Program UCLN;
Var m,n : Integer;
Begin
Write(‘Nhap m va n: ’);
readln(m,n);
While m<>n do
If m > n then m := m - n
Else n := n m;
Writeln(‘UCLN = ’, M);
Readln
End.
N:=1+1=2;
S:=1/9995+1/(9996)
+1/(9997) → B3
1/9996>0.0001:
N:=2+1=3;
S:=1/9995+1/(9996)
+1/(9997) +1/(9998) → B3
…….
1/10000 = 0.0001:
N:=4+1=6;
S:=1/9995+1/(9996)
+1/(9997) + 1/(9998) +
1/(9999) + 1/(10000) +
1/(10001) → B3
1/10001 < 0.0001→ B6
Kết thúc
- Ta xem xét tiếp 2 VD sau:
VD1: m ƯCLN của 2 số
nguyên dương M và N.
- Em nào thể nêu ý tưởng
thực hiện bài toán?
- Em nào viết được thuật toán?
- Em nào viết chương trình thực
hiện thuật trên.
- Em nào thể thực hiện
chương trình trên bằng bộ test:
M=28, N=12.
II. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:
- Ý nghĩa sử dụng câu lệnh lặp với số lần chưa biết trước While Do.
- Câu lệnh lặp While Do.
2. Bài tập về nhà:
1. th dùng câu lệnh While-Do để thay thế cho câu lệnh For-Do được không? Nếu
được, hãy thực hiện điều đó với chương trình Tong_1a.
2. Cho số thực a. Tìm số nguyên dương N nhỏ nhất thỏa mãn:
1 1 1
1 ...
23
a
N
Gợi ý: Cách 1: Dùng vòng lặp vô hạn
S := 1; N := 1;
While true do {cho vòng lặp vô hạn vì đk luôn đúng}
Begin
If s>a then break;
Inc(n);
S := s + 1/n;
End;
Cách 2: Không dùng vòng lặp vô hạn
Trang 42
S := 1; N := 1;
While s<=a do {cho vòng lặp giới hạn đến s=a}
Begin
Inc(n);
S := s + 1/n;
End;
Trang 43
Tiết 15,16_PPCT
Ngày soạn:
Ngày dạy:
BÀI TẬP VÀ THỰC HÀNH 2
A. MỤC ĐÍCH VÀ YÊU CẦU
1. Mục đích:
- Học sinh làm quen với công cụ hiệu chỉnh chương trình.
- Hiểu câu lệnh rẽ nhánh (dạng thiếu và dạng đủ).
- Thực hành các bài tập sử dụng vòng lặp biết trước và chưa biết trước.
2. Yêu cầu:
- Học sinh biết xây dựng chương trình cấu trúc rẽ nhánh, lặp.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Giúp HS làm quen với cấu trúc rẽ nhánh thông qua các bài tập từ đơn giản đến phức tạp.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng.
- Phòng máy thực hành.
E. NỘI DUNG GIẢNG DẠY
Câu 1: Bài toán Bộ số Pi-ta-go:
Nêu bài toán.
Nêu ý tưởng giải bài toán.
Xây dựng chương trình.
Thực hiện chương trình trên máy tính.
Thực hiện theo các bước hướng dẫn thực hành trong sách giáo khoa.
Câu 2: Viết chương trình tính giá trị của hàm:
a)
22
0,5
xy
z x y

Program tinhGTBT;
Var x, y, z: real;
Begin
Write(‘nhap x, y: ’);readln(x,y);
Z:= sqr(x) + sqr(y);
If z<=1 then writeln(‘z=’, z:10:2)
Else
If (z>1) and (y>=x) then writeln(‘z= ’,x+y:10:2)
Else
If y<x then writeln(‘z=’, 0.5:6:2);
Readln
End.
b)
xy
Z
xy

Nếu
Nếu ,
Nếu ,
Nếu điểm (x,y) thuộc hình tròn bán kính r (r>0), tâm (a,b).
Trong các trường hợp còn lại
Trang 44
Gợi ý: If (sqr(x-a) + sqr(y-b)) <= sqr(r) then Z := abs(x) + abs(y)
Else Z := x+y;
Bài 3: Viết chương trình tính các tổng sau, với N được nhập từ bàn phím:
2 2 2 2
1 2 3 ...SN
Gợi ý:
S := 0;
For i := 1 to N do S := S + sqr(i);
Trang 45
Tiết 17_PPCT
Ngày soạn:
Ngày dạy:
BÀI TẬP
A. MỤC ĐÍCH VÀ YÊU CẦU
1. Mục đích:
- Thực hành câu lệnh rẽ nhánh (dạng thiếu và dạng đủ).
- Thực hành các bài tập sử dụng vòng lặp biết trước và chưa biết trước.
2. Yêu cầu:
- Học sinh tự viết chương trình cấu trúc rẽ nhánh, lặp.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Giúp HS làm quen với cấu trúc rẽ nhánh thông qua các bài tập.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng.
- Phòng y thực hành.
E. NỘI DUNG GIẢNG DẠY
Bài 1: Viết chương trình tính các tổng sau, với N được nhập từ bàn phím:
b)
2 2 2 2
1 1 1 1
1 ...
234
S
N
G ợi ý: S := 0;
For i := 1 to N do S := S + 1/sqr(i);
Câu 2: Lập trình giải bài toán sau: Nhập số nguyên dương N từ bàn phím. Tìm số nguyên k nhỏ
nhất thỏa mãn điều kiện 3
k
> N. Đưa ra màn hình giá trị k và 3
k
.
Gợi ý: k := 0; S := 1;
While S <= N do
Begin
Inc(k);
S := exp(k*ln(3));
End;
Câu 3: Viết chương trình nhập số nguyên và kiểm tra số vừa nhập là số chẵn hay số lẻ.
Gợi ý: Nếu N mod 2 = 0 thì N là số chẵn, ngược lại là số lẻ.
Câu 4: Viết chương trình giải phương trình bậc nhất ax + b = 0
Chương trình:
Var a,b,x : real;
Begin
Write('a = '); Readln(a);
Write('b = '); Readln(b);
If a = 0 Then
If b = 0 Then
Writeln('Phuong trinh co vo so nghiem')
Else
Chú ý:
log
ln
n
e
a
n n a
a e e
Trang 46
Writeln('Phuong trinh vo nghiem')
Else
Begin
x:= -b/a;
Writeln('Phuong trinh co nghiem la :',x:6:2); end; readln ; end.
Trang 47
Tiết 18_PPCT
Ngày soạn:
Ngày dạy:
KIỂM TRA 1 TIẾT
Câu 1: Viết chương trình nhập vào số nguyên dương N. In ra màn hình tất cả các ước số của N.
Câu 2: Viết chương trình nhập vào số nguyên dương N rồi thông báo n màn hình số đó phải số
chẵn hay không.
Câu 3: Tính tổng sau, với N được nhập vào từ bàn phím
S = 2 - 4 + 6 - 8 + ... + (-1)
n+1
.2n
Trang 48
Tiết 19_PPCT
Ngày soạn:
Ngày dạy:
CHƯƠNG II: KIỂU DỮ LIỆU CÓ CẤU TRÚC
BÀI 11: KIỂU MẢNG
A. MỤC ĐÍCH VÀ YÊU CẦU
1. Mục đích:
- Cung cấp cho học sinh kiến thức về mảng, biết mảng một chiều, biết khái báo mảng, xây
dựng và sử dụng mảng một chiều.
2. Yêu cầu:
HS cần nắm được:
- Kiểu mảng một kiểu dữ liệu có cấu trúc, rất cần thiết hữu ích trong nhiều chương
trình.
- Mảng một chiều là một dãy hữu hạn các phần tử cùng kiểu.
- Các ngôn ngữ lập trình thông dụng cho phép người lập trình y dựng kiểu dữ liệu mảng
một chiều.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học.
- Thuyết trình, diễn giải, hỏi đáp.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- Khái niệm mảng một chiều.
- Cách khai báo mảng một chiều.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng.
E. NỘI DUNG GIẢNG DẠY
I. ĐẶT VẤN ĐỀ CHO BÀI GIẢNG (10ph):
Ta một dụ sau: Nhập vào nhiệt độ trung bình của mỗi ngày trong tuần. nh tin ra
màn hình nhiệt độ trung bình của tuần số lượng ngày trong tuần có nhiệt đcao hơn nhiệt độ
trung bình tính được.
Em nào cho thầy biết nếu không sử dụng mảng một chiều thì để giải bài toán y ta làm thế
nào? => sử dụng câu lệnh IF-THEN.
- Chương trình minh hoạ:
Progam nhietdotuan;
Var
t1,t2,t3,t4,t5,t6,t7,tb: real;
Dem: integer;
Begin
Write(‘ nhap vao nhiet do cua 7 ngay:’); readln(t1,t2,t3,t4,t5,t6,t7);
tb:=(t1+t2+t3+t4+t5+t6+t7)/7;
Dem:=0;
Trang 49
If t1> tb then dem:=dem+1;
If t2> tb then dem:=dem+1;
If t3> tb then dem:=dem+1;
If t4> tb then dem:=dem+1;
If t5> tb then dem:=dem+1;
If t6> tb then dem:=dem+1;
If t7> tb then dem:=dem+1;
Writeln(‘nhiet do trung binh tuan:’,tb:4:1);
Writeln(‘so ngay nhiet do cao hon nhiet do trung binh trong tuan:’,dem:2);
Readln;
End.
=> Như vậy nếu sử dụng câu lệnh IF-THEN thì trong trường hợp tính số lượng ngày trong
năm có nhiệt đlớn hơn nhiệt độ trung bình ta làm thế nào? => Phải sử dụng nhiều câu lệnh IF-
THEN, bài toán trn phức tạp khó khăn hơn. Để giải quyết vấn đề y người ta đã đưa ra
một kiểu dữ liệu để lưu các giá trị y, đó kiểu dữ liệu cấu trúc - Kiểu dữ liệu mảng. Kiểu
dữ liệu mảng cho phép ta có thể truy xuất tới bất kỳ một phần tử nào có giá trị. Các thao tác trên
các biến trở nên dễ dàng hơn. Vậy kiểu mảng là gì ta sang bài học mới.
II. NỘI DUNG BÀI HỌC
Thời
gian
Nội dung ghi bảng
Hoạt động của thầy
Hoạt động
của trò
5ph
10
BÀI 11: KIỂU MẢNG (tiết 19)
1. Kiểu mảng 1 chiều
Khái niệm: một dãy hữu hạn
bao gồm các phần tử cùng kiểu, được
đặt tên mỗi pt chỉ số nhất định
chiều dài nhất định.
VD1: Mảng nhiệt độ:
+ Xây dựng kiểu mảng:
.Tên kiểu mảng.
.Số lượng phần tử;
.Kiểu dữ liệu của phần tử.
.Khai báo các biến cho mảng
.Cách tham chiếu đến phần tử.
a. khai báo:
C1: Khai báo trực tiếp
Var <tên mảng> : array [kiểu chỉ
- Giáo viên viết đề bài:
- Em nào thnêu khái niệm
về mảng.
=> Mảng một dãy hữu hạn
các phần tử, tên, chỉ số
phần tử và chiều dài nhất định
- VD mảng nhiệt độ có 7 phần
tử, mỗi phần tử nhiệt độ của
ngày trong tuần. Chỉ số i vị
trí thứ i của phần tử trong mảng.
Do đó để lưu nhiệt độ của các
ngày trong tuần người ta sử
dụng cấu trúc mảng như trên.
- Em nào cho thầy biết khi y
dựng kiểu mảng một chiều thì
ngôn ngữ lập trình cung cấp cho
người lập trình những quy tắc
cho phép xây dựng mảng một
chiều những vấn đề gì?
- Bất k bài toán nào có sử dụng
biến cũng cần phải khai báo,
vậy khi dùng biến mảng một
chiều thì ta cần phải khai báo.
Học sinh
theo dỏi,
ghi chép
bài học.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
Trang 50
ph
số] of <kiểu phần tử>;
VD2: Khai báo mảng nhiệt độ.
Var
Nhietdo : array [1..7] of real;
C2:Khai báo gián tiếp
Type <tên kiểu mảng> = array [kiểu
chỉ số] of <kiểu phần tử>;
Var <tênmảng> : <tên kiểu mảng>
VD3: Khai báo mảng nhiệt độ.
Type
Mangnhietdo = array [1..7] of real;
Var
Nhietdo : mangnhietdo;
* Chú ý:
- Kiểu chỉ số một đoạn số nguyên
liên tục n1..n2. (n1≤ n2). Cho biết số
phần tử có trong mảng.
- Kiểu phần tử kiểu của các phần
tử trong mảng.
- Cách nhập truy xuất (tham
chiếu) tới các phần tử trong mảng:
+ Tham chiếu tới các phần tử của
mảng được xác định bởi tên mảng
cùng với chỉ số được viết trong cặp
dấu ngoặc [và].
VD: Giá trị của phần tử thứ 5 trong
mảng nhiệt độ là nhietdo[5] = 41.6
+ Dùng câu lệnh FOR-DO để nhập
và xuất giá trị phần tử của mảng.
VD:
Có mấy cách khai báo?
- Cú pháp khai báo trực tiếp n
thế nào?
- Em nào thể khai báo mảng
nhiệt độ đã cho ở trên?
- Trong trường hợp ta cần nhiều
mảng cùng kiểu mảng thì
làm thế nào? phải cần khai
báo nhiều lần như khai báo trực
tiếp không?
Var
Nhietdo : array [1..7] of real;
Nhietdo2 : array [1..7] of real;
Nhietdo3 : array [1..7] of real;
Ta cách khai báo gián tiếp
nhằm hạn chế việc khai báo dài
dòng như trên vẫn đảm bảo
như bài toán yêu cầu.
- Em nào thể khai báo gián
tiếp cho biến mảng nhiệt độ
trên.
- Bây giờ em nào thể khai
báo một biến mảng cho bài toán
sau theo 2 cách: Khai báo một
biến mảng số nguyên bất kỳ.
VD4: Khai báo biến mảng
nguyên.
C1: Khai báo trực tiếp
Var m_nguyen : array[1..n] of
integer;
C2: Khai báo gián tiếp
Type mang = array [1..n] of
integer;
Var mang_nguyen : mang;
- Em nào thể cho thầy biết
để đưa ra giá trị nhiệt độ của
ngày thứ 5 trong mảng nhiệt độ
ở trên ta làm thế nào?
- Ta thể truy xuất bất kỳ
nhiệt độ của từng phần tử trong
mảng được không?
- Để nhập nhiệt độ của 7 ngày
trong tuần vào mảng ta m thế
nào?
- Dùng câu lệnh FOR-DO để
nhập xuất giá trị phần tử của
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Trang 51
15
ph
* Thao tác nhập nhiệt độ cho 7 ny
trong tuần:
For i:=1 to 7 do
Begin
Write (‘nhap nhiet do cua ngay
thu’,i:2,’ =’); readln(nhietdo[i]);
End.
* Thao tác xuất nhiệt độ cho 7 ngày
trong tuần:
For i:=1 to 7 do
Begin
Write (‘ nhiet do cua ngay thu’,i:2,’ =’,
nhietdo[i]:10:2);
End.
- Thao tác gán mảng với mảng: Cho
mảng A mảng B cùng kiểu. Ta
viết A:=B thì tất cả c giá trị mảng
B sẽ nằm trong mảng A.
VD:
Var A,B : array[1..5] of byte;
i:byte;
Begin
For i:=1 to 5 do a[i] := i;
B:=A;
...
End.
- Thao tác gán giá trị cho mảng:
a[i] := i;
mảng.
- Em nào thể viết đoạn
chương trình nhập nhiệt độ của
7 ngày trong tuần?
- Tương tự em nào có thể viết
đoạn chương trình xuất nhiệt độ
trung bình của mỗi ngày sau khi
đã nhập.
- Cho a,b các biến cùng
một kiểu mảng gi sử các
phần tử của biến a đã được gán
giá trị, khi đó ta thể dùng
lệnh gán b:=a; Sau lệnh gán y
các phần tử của biến mảng b
giá trị tương ứng giống như các
phần tử của biến mảng a.
Học sinh
theo dỏi,
ghi chép
làm bài
Học sinh
theo dỏi,
ghi chép
làm bài
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:
+ Nguyên tắc sử dụng mảng
+ Cách khai báo và thao tác trên mảng.
2. Bài tập:
Bài 1: m hiểu viết chương trình cho bài toán sau: Nhập vào nhiệt độ trung bình của n
ngày bất ktrong m. Tính tin ra màn nh nhiệt độ trung bình của n y đó số lượng
ngày trong có nhiệt độ cao hơn nhiệt độ trung bình tính được.
Bài 2: Tìm hiểu trước 2 VD tiếp theo trong sách giáo khoa.
Bài 3: Viết chương trình nhập n phần tử các số nguyên cho mảng 1 chiều thực hiện
các công việc sau:
a) Đếm xem có bao nhiêu số chẵn, bao nhiêu số lẻ và hiển thị dãy số chẵn, dãy số lẻ trên..
b) Đếm xem có bao nhiêu số nguyên dương, số nguyên âm và hiển thị dãy các số trên.
Trang 52
BÀI 11: KIỂU MẢNG (tiết 20-21) - (Ngày soạn: 22/10/2009)
A. MỤC ĐÍCH VÀ YÊU CẦU
1. Mục đích:
- Củng cố giúp HS hiểu sâu sắc hơn thuật toán m kiếm, sắp xếp bản HS đã được
học ở lớp 10.
- Minh hoạ, củng cố và nâng cao những hiểu biết của HS trong tiết 1 về mảng một chiều.
- Hình thành kĩ năng cơ bản về sử dụng kiểu mảng trong cài đặt chương trình.
2. Yêu cầu:
- Học sinh đã ôn lại thuật toán của lớp 10 về các phép duyệt dãy số, sắp xếp, tìm kiếm...
B. PHƯƠNG PHÁP GIẢNG DẠY
- Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học.
- Thuyết trình, diễn giải, hỏi đáp.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- Thuật toán tìm kiếm, sắp xếp.
- Biết cách thao tác trên mảng 1 chiều.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng.
E. NỘI DUNG GIẢNG DẠY
I. KIỂM TRA BÀI CŨ (10ph):
1. Nêu 2 cách khai báo biến mảng?
2. Để nhập hoặc xuất dữ liệu trong mảng 1 chiều ta làm thế nào?
3. Viết chương trình bài: Nhập vào nhiệt độ trung bình của n ngày bất kỳ trong m. Tính
tin ra màn hình nhiệt độ trung bình của n này đó số lượng ngày trong nhiệt độ cao hơn
nhiệt độ trung bình tính được.
const max = 366;
type mangnd = array[1..max] of real;
var nhietdo : mangnd;
dem, i, n: byte;
tongnd, tb: real;
begin
write('nhap so ngay:'); readln(n);
tongnd:=0;
for i:=1 to n do
begin
write('nhap nhiet do ngay thu',i:2,'=');
readln(nhietdo[i]);
tongnd:=tongnd+nhietdo[i];
end;
dem:=0; tb:=tongnd/n;
for i:=1 to n do
if nhietdo[i]>tb then dem:=dem+1;
writeln('nhiet do trung binh cua',n:2,'ngay la',tb:10:2);
writeln('so ngay co nhiet do lon hon ',tb:12:2,' la:', dem:2);
readln
end.
Trang 53
II. NỘI DUNG BÀI HỌC
Thời
gian
Nội dung ghi bảng
Hoạt động của thầy
Hoạt động
của trò
- Chúng ta xét một số VD sau:
VD1: Tìm phần tử lớn nhất
của dãy số nguyên.- Yêu cầu
xác định bài toán: Input
output?
- Yêu cầu HS đưa ra thuật toán
liệt kê đã được học ở lớp 10.
- Nhận xét đưa ra thuật toán
chính xác.
- Em o thể thực hiện theo
thuật toán cho một bộ test sau:
N=4, a
1
=4,a
2
=2, a
3
=7,a
4
=1.
- Yêu cầu đọc SGK suy nghĩ
về chương trình để trả lời câu
hỏi.
? Trong bài y ta cần khai báo
những biến nào?
- Ta nhận thấy dãy các số
nguyên nên khai báo theo kiểu
biến mảng và mảng này là mảng
các số nguyên dấu. Ngoài ra
chúng ta thể khai báo một số
khai báo khac nữa như: khai
báo thư viện, khai báo hằng,
khai báo kiểu dữ liệu mảng.
- Một em y lên bảng viết
đoạn chương trình nhập giá trị
cho các phần tử của mảng.
- t luận vừa viết chương trình
vừa giải thích. đây chỉ số của
phần tử mang giá trị lớn nhất
chúng ta sẽ chỉ ra phần tử lớn
nhất cuối cùng.
? Như vậy chúng ta cần khai
báo thêm một biến nào?
- Chúng ta tìm hiểu tiếp VD tiếp
theo:
VD2: Sắp xếp dãy số nguyên
bằng thuật toán tráo đổi.
- Yêu cầu xác định bài toán:
Input và output bài toán?
- Yêu cầu nều thuật toán tráo
Học sinh
theo dỏi,
ghi chép
bài học.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Trang 54
đổi đã được học ở lớp 10.
- Từ thuật toán trên ta thực hiện
bộ test sau:
Với N =4, a
1
=4, a
2
=2,a
3
=7,a
4
=1.
B1: Nhập N=4 a
1
= 4, a
2
=2,
a
3
=7,a
4
=1.
B2: MN(M=4);
Lần 1: B3: M<2(4<2) =>sai.
B4:MM-1=4-1=3, i0;
B5: ii+1=0+1=1.
B6: (i=1)>(M=3)=>sai
B7: (a
1
=4)>(a
1+1
=2)=>đúng nên
tráo đổi a
1
a
2
cho
nhau.=>a
1
=2,a
2
=4.
B8: Quay lại B5.
B5: i i+1=1+1=2;
B6: (i=2)>(M=4)=>sai.
B7: (a
2
=4)>(a
3
=7)=>sai.
B8: Quay lại B5.
B5: ii+1=2+1=3.
B6: (i=3)>(M=3)=>sai.
B7:(a
3
=7)>(a
3+1
=1)=>đúng nên
tráo đổi a
3
a
4
cho
nhau=>a
3
=1, a
4
=7.
B8: quay lại B5.
B5: ii+1=3+1=4.
B6: (i=4)>(M=3)=>đúng nên
quay lại B3.
Lần 2: …
Lần 3:…
Lần 4:…
Tương tự như cách thực hiện
lần 1 ta sẽ y đưc sắp xếp
thành dãy không giảm:1 2 4 7.
? Theo các em qua thuật toán
trên ta cần khai báo những biến
nào?
- Nhận xét kết luận những
biến cần khai o. Trước hết
chúng ta làm quen với một thuật
toán tráo đổi 2số
a
i
a
j
nhau
như sau:
Tam:=a
i
; a
i
=a
j
; a
j
=tam;
vậy chúng ta cần khai báo
các biến sau:
N, i, tam, mảng số nguyên, j.
- Chúng ta sẽ có phần khai báo:
tên chương trình, thư viện,
hằng, khai báo dữ liệu mảng
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
làm bài
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
Trang 55
như dụ 1. yêu cầu các em tự
viết vào
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:
+ Cách sử dụng mảng trong một số bài toán phức tạp.
+ Thao tác duyệt các phần tử trên mảng.
2. Bài tập:
Bài 1: Viết chương trình nhập vào một dãy số bất kỳ và in ra màn hình dãy số vừa nhập.
Bài 2: Tìm hiểu mảng 2 chiều.
Bài 3: Viết chương trình nhập vào n số nguyên dương rồi tính trung bình cộng trung
bình nhân của nó.
Hướng dẫn:
- Khai báo biến n,i kiểu số nguyên. Biến mảng m kiểu số nguyên để chứa dãy số nhập vào.
Các biến tbc,tbn kiểu số thực để chứa kết quả.
- Sử dụng lệnh for tính tổng, tích của n số nguyên dương đó từ đó tính trung bình cộng
trung bình nhân.
Bài 4: Nhập 1 dãy số thực cho mảng a gồm n phần tử, tính trung bình cộng của các số âm.
uses crt;
const max=100;
type mang=array[1..max] of real;
var i,n,d: integer;
a:mang;
s:real;
begin
clrscr;
write('nhap so phan tu n= ');readln(n);
writeln('nhap gia tri cho mang:');
for i:=1 to n do
begin
write('a[',i,']= ');
readln(a[i]);
end;
s:=0; d:=0;
for i:=1 to n do
if a[i]<0 then
begin
inc(d);
s:=s+a[i];
end;
if d>0 then writeln('trong day co ',d:2,'so am va tong cua chung la',s:8:2)
else writeln('khong co so am nao ca');
readln
end.
Bài 5 (BT giao về nhà nhưng không sửa để dành kiểm tra 1t): Nhập 1 y số thực cho
mảng a gồm n phần tử, hãy kiểm tra:
Trang 56
a) Kiểm tra là dãy số tăng hay không?
b) Dãy có phải là dãy số đan dấu không? (không xét số 0)
const max=100;
type mang=array[1..max] of real;
var i,n,d1,d2: integer;
a:mang;
begin
write('nhap so phan tu n= ');readln(n);
writeln('nhap gia tri cho mang:');
for i:=1 to n do
begin
write('a[',i,']= ');
readln(a[i]);
end;
d1:=0; d2:=0; (d1 kiểm tra dãy tăng, d2 kiểm tra dãy đan dấu)
for i:=1 to n-1 do
begin
if a[i] > a[i+1] then inc(d1);
if a[i]*a[i+1]>=0 then inc(d2);
end;
if d1=0 then writeln('la day tang')
else writeln('khong phai day tang');
if d2=0 then writeln('day dan dau')
else writeln('day khong dan dau');
readln
end.
Trang 57
BÀI 11: KIỂU MẢNG (tiết bổ sung không theo PPCT)
A. MỤC ĐÍCH VÀ YÊU CẦU
1. Mục đích:
- Minh hoạ, củng cố nâng cao những hiểu biết của học về mảng 1 chiều ( cấu trúc, ch
khai báo, cách tham chiếu một phần tử ích lợi của kiểu dữ liệu này), từng bước hình thành
thao tác trên mảng 2 chiều.
- Hình thành kỹ năng cơ bản về sử dụng kiểu mảng trong cài đặt chương trình.
- Rèn luyện thái độ tích độ tích cực học tập.
- Rrèn luyện tính kiên nhẫn, thích phám phá.
2. Yêu cầu:
HS cần nắm được:
- Kiểu mảng 1 chiều.
- Biết thao tác trên mảng 2 chiều.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học.
- Thuyết trình, diễn giải, hỏi đáp.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- Khái niệm mảng 2 chiều.
- Cách khai báo mảng 2 chiều.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng.
E. NỘI DUNG GIẢNG DẠY
I. KIỂM TRA BÀI CŨ (10ph):
Bài 1: Viết chương trình nhập vào một dãy số bất kỳ và in ra màn hình dãy số vừa nhập.
Bài 2: Viết chương trình nhập vào n số nguyên dương rồi tính trung bình cộng của nó.
Chương trình:
Program Tinh_tb;
Var n,i: integer;
tbc,tbn :real;
a:array[1..100] of integer;
Begin
Write(' nhap n>0 : ');Readln(n);
tbc:=0; tbn:=1;
For i:=1 to n do
Begin
Write('a[',i,'] >0: ');
Readln(a[i]);
Tbc:=tbc+a[i];
End;
tbc:= tbc/n;
writeln( 'trung binh cong cua day la:', tbc:8:2);
Readln
End.
Trang 58
II. NỘI DUNG BÀI HỌC
Thời
gian
Nội dung ghi bảng
Hoạt động của thầy
Hoạt động
của trò
15
ph
BÀI 11: KIỂU MẢNG
2. Kiểu mảng hai chiều
Các yếu tố xác định mảng hai chiều:
+ Tên mảng một chiều.
+ Số phần tử trên một dòng một
cột.
+ Kiểu dữ liệu của phần tử.
+Cách khai báo biến mảng một
chiều.
* 2 cách tạo kiểu mảng 2 chiều:
a) Khai báo:
Cách 1: Khai báo trực tiếp
Var <tên biến mảng>:array[chỉ số
hang, chỉ số cột] of <kiểu phần tử>;
Cách 2: Khai báo gián tiếp
Type <Tên kiểu mảng> = array [chỉ
số dòng, Chỉ số cột] Of <Kiểu phần
tử>;
Var <tên mảng>:<tên kiểu mảng>;
VD: Khai báo mảng 2 chiều dùng
cho bảng cửu chương:
C1:Khai báo trực tiếp:
Var Bang_CC : array [1..9,1..10] of
integer;
C2: Khai báo gián tiếp
Type Mang = array [1..9,1..10] of
integer;
Var Bang_CC : Mang;
Chú ý:
- Ngoài mảng 1 2 chiều còn
mảng nhiều chiều.
- Tham chiếu đến các phần tử:
Tên_biến_mảng[chỉ_số_dòng,
Chỉ_số_cột];
- Để nhập dữ liệu xuất dữ liệu từ
mảng ta sử dụng 2 vòng FOR-DO
lồng nhau.
- Cách nhập dữ liệu trong mảng 2
chiều:
Writeln('nhap mang 2 chieu:');
- Giới thiệu VD trong SGK
(trang 59): Tính đưa ra màn
hình bảng cửu chương.
- Hỏi: Sử dụng kiến thức mảng
một chiều, y đưa ra cách lưu
trữ bảng cửu chương? => Sử
dụng 9 mảng một chiều, một
mảng lưu một hàng của bảng.
- Hỏi tiếp: Với các lưu trữ như
vậy ta cần phải khai báo bao
nhiêu biến mảng? => Dùng
mảng một chiều ta khai báo 9
biến mảng.
- Vậy khó khăn khi khai báo
9 biến mảng => Khó khăn viết
chương trình nhập xuất dữ liệu
dài.
- Để khắc phục khó khăn ta xem
một mảng một chiều một
phần tử, ta ghép 9 mảng một
chiều thành một mảng hai
chiều.
- Yêu cầu HS nhận xét về mảng
hai chiều => Nhận xét: Nếu xem
mỗi hàng của mảng hai chiều
một phần tử thì ta thể nói
mảng hai chiều mảng một
chiều mỗi phần tử mảng
một chiều.
- Hỏi: Để tả kiểu mảng hai
chiều, ta cần xác định những
yếu tố chính nào?
- Em y nêu cách khai báo
biến mảng 2 chiều.
- Để tham chiếu đến các phần tử
của mảng 2 chiều ta làm thế
nào?
- Em nào nêu cách nhập xuất
dữ liệu của mảng 2 chiều ?
- Vậy việc nhập xuất dữ liệu
giống trong mảng 1 chiều
nhưng dùng câu lệnh FOR-DO
lồng nhau.
Học sinh
theo dỏi,
ghi chép
bài học.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Trang 59
15
ph
For i:=1 to n do
For j:=1 to n do
Begin
Write('a[',i,',',j,']= ');
Readln(a[i,j]);
End;
- Cách xuất dữ liệu trong mảng 2
chiều:
Writeln(‘xuat DL mang 2 chieu:');
For i:=1 to n do
For j:=1 to n do
Begin
Write('a[',i,',',j,']= ', a[i,j]:3);
End;
b) Một số ví dụ:
VD1: Viết chương trình tính đưa
ra màn hình bảng cửu chương.(SGK)
VD2:Viết chương trình nhập vào từ
bàn phím các phần tử của mảng hai
chiều B gồm 5, hàng 7 cột với các
phần tử các số nguyên một số
nguyên K. Sau đó, đưa ra màn hình
các phần tử của mảng giá trị nhỏ
hơn K.
- Các em nghiên cứu VD 1
trong sách giáo khoa và cho biết
cách tính bảng cửu chương
trong chương trình?
- Các em nghiên cứu VD1 trong
sách giáo khoa và trả lời các câu
hỏi sau:
+ Để giải bài toán trên cần loại
mảng nào, vì sao?
+ Giá trị lưu trong mảng kiểu
số gì?
+ Khi cài đặt bài toán trên có
cần nhập giá trị cho mảng
không? Vì sao?
+ Để tính giá trị của bảng cửu
chương ta làm thế nào?
+ Để in giá trị của bảng cửu
chương ta làm thế nào?
- Em nào thể viết chương
trình cài đặt cho bài toán trên.
- Các em nghiên cứu VD 2: Để
nhập các giá trị cho mảng ta
làm thế nào?
- Để so sánh các giá trị của
mảng nhỏ hơn K ta làm thế
nào?
- Em nào thể viết chương
trình cài đặt cho bài toán trên.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
làm bài
Học sinh
theo dỏi,
ghi chép
làm bài
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:
+ Nguyên tắc sử dụng mảng 2 chiều.
+ Cách khai báo và thao tác trên mảng 2 chiều.
2. Bài tập:
Bài 1: Chuẩn bị bài thực hành số 3.
Trang 60
BÀI TẬP VÀ THỰC HÀNH SỐ 3 (tiết 23-24) - (Ngày soạn: 28/10/2009)
A. MỤC ĐÍCH VÀ YÊU CẦU
1. Mục đích:
- Nâng cao năng sử dụng một số câu lệnh một số kiểu dữ liệu thông qua việc tìm kiếm,
chạy thử các chương trình có sẵn.
- Biết giải một số bài toán tính toán, tìm kiếm đơn giản trên máy tính.
2. Yêu cầu:
- Học sinh nắm được các kiến thức cơ bản về mảng.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Chia lớp thành 2 nhóm nếu không đủ máy, 3HS/1máy.
- Lấy điểm thực hành theo các câu hỏi ý nghĩa các câu lệnh, các ý nhỏ yêu cầu bổ sung trong
SGK (ý b Bài 1, ý b Bài 2).
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- Ôn tập mảng 1 chiều và 2 chiều.
D. PHƯƠNG TIỆN DẠY HỌC
- Sử dụng máy Projector.
- Bảng đen, phấn trắng.
E. NỘI DUNG GIẢNG DẠY
I. NỘI DUNG BÀI HỌC
Thời
gian
Nội dung ghi bảng
Hoạt động của thầy
Hoạt động
của trò
40
ph
BÀI TẬP VÀ THỰC HÀNH SỐ 3 (tiết
23-24)
Bài 1: Tạo mảng A gồm n
(n<=100) số nguyên, mỗi số trị
tuyệt đối không vượt quá 300. Tính
tổng các phần tử của mảng bội
số của một số nguyên dương k cho
trước.
a. Hãy tìm hiểu và chạy thử chương
tình sau đây:
Program sum1;
uses crt;
const nmax=100;
type myarray= array[1..max] of
integer;
Var a:myarray;
S, n, i, k: integer;
Begin
Clrscr; randomize;
writeln(‘nhập n=:’); readln(n);
for i:=1 to n do
a[i]:=random(300)- random(300);
- Đưa ra nội dung bài thực hành:
Tạo mảng A gồm n (n<=100)
số nguyên, mỗi số trị tuyệt đối
không vượt quá 300. Tính tổng
các phần tử của mảng bội số
của một số nguyên dương k cho
trước.
- Yêu cầu học sinh tìm hiểu
chạy thử chương trình trên.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
Trang 61
40
ph
for i:=1 to n do write(a[i]:5);
writeln;
write(‘nhập k=’);readln(k);
s:=0;
For i:=1 to n do
if a[i] mod k =0 then s:=s+a[i];
Writeln(‘tổng cần tính là:’, s);
Readln
End.
b. Hãy đưa các câu lệnh sau đây
vào vị trí cần thiết nhằm sửa
chương trình trong câu a) để
được chương trình đưa ra các số
dương và số các số âm trong mảng.
posi, neg: integer
posi:= 0; neg:=0;
if a[i] >0 then posi:=posi+1
else if a[i]<0 then neg:=neg+1;
writeln(posi:4, neg:4);
Bài 2: Viết chương trình tìm phần
tử lớn nhất của mảng đưa ra
màn hình chỉ số giá trị của phần
tử tìm được. Nếu nhiều phần
cùng giá trị lớn nhất thì đưa ra
phần tử có chỉ số nhỏ nhất.
a. Hãy tìm hiểu chương trình sau
đây:
program maxelment;
const nmax=100;
type myarray=array[1..nmax] of
integer;
var a:myarray;
n, i, j: integer;
begin
writeln(‘nhập số lượng phần
tử của dãy số, n=’); readln(n);
for i:=1 to n do
begin
write(‘phần tử thứ’,i,’=’);
readln(a[i]);
end;
j:=1;
for i:=2 to n do
if a[i]>a[j] then j:=i;
write(‘chi so:’,j,’gia trị:’,
a[j]:4);
readln;
end.
- Yêu cầu một HS trả lời yêu cầu
của bài toán.
- Nhận xét yêu cầu HS thực
hành sửa chương trình câu
a)và chạy chương trình vừa
sửa..
- Suy nghĩ và trả lời.
Program sum1;
uses crt;
const nmax=100;
type myarray= array[1..max] of
integer;
Var a:myarray;
S, n, i, k, posi, neg: integer;
Begin
Clrscr; randomize;
writeln(‘nhập n=:’); readln(n);
for i:=1 to n do
a[i]:=random(300)- random(300);
for i:=1 to n do write(a[i]:5);
writeln;
write(‘nhập k=’);readln(k);
posi:= 0; neg:=0;
if a[i] >0 then posi:=posi+1
else if a[i]<0 thenneg:=neg+1;
writeln(posi:4, neg:4);
Readln
End.
Bài 2. ớng dẫn HS thực hành
và làm bài tập.
Bài 2: câu b:?Chương trình
cần giữ lại đoạn tìm phần tử
giá trị lớn nhất không?
? Để đưa ra tất cả
các chỉ số của các phần tử đạt giá
trị lớn nhất đó cần duyệt lại tất
cả các phần tử trong mảng
không?
b. Ta sửa nhu sau:
for i:=2 to n do
if a[i]>=a[j] then j:=i;
- Cần giữ lại;
- Cần duyệt lại tất cả các
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
Trang 62
b. Chỉnh sửa chương trình để đưa
ra chỉ số lớn nhất của các phần tử
có cùng giá trị lớn nhất.
phần tử của mảng để làm
được việc đó.
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (10 ph)
1. Củng cố:
Cho HS dừng thực hành để kiểm tra trong 5phút. Đánh giá những kết quả làm được
chưa làm được của HS.
2. Bài tập về nhà:
1. Viết chương trình để đưa ra chỉ số của các phần tử có cùng giá trị lớn nhất.
2. Chuẩn bị bài thực hành số 4.
3. Viết chương trình nhập n phần tử các số nguyên dương vào mảng 1 chiều a
đếm xem có bao nhiêu phần tử bằng k? (k được nhập từ bàn phím).
Trang 63
BÀI TẬP VÀ THỰC HÀNH SỐ 4 (tiết 25-26) - (Ngày soạn: 28/10/2009)
A. MỤC ĐÍCH VÀ YÊU CẦU
1. Mục đích:
- Củng cố cho HS những kiến thức và kĩ năng đã có khi lập trình với kiểu dữ liệu mảng.
- Củng cố cho HS một thuật toán sắp xếp các phần tử của một dãy (bằng tráo đổi) và kĩ năng
diễn đạt thuật toán này bằng chương trình sử dụng dữ liệu kiểu mảng.
- Rèn luyện HS một ý thức cần của người lập trình là viết chương trình với khối lượng
tính toán ít nhất có thể được.
- 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.
2. Yêu cầu:
- Học sinh nghiêm túc trong quá trình thực hành.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Thuyết trình, hướng dẫn thực hành.
C. PHƯƠNG TIỆN DẠY HỌC
Máy chiếu projector, phòng máy, SGK, giáo án.
E. NỘI DUNG GIẢNG DẠY
I. NỘI DUNG BÀI HỌC
Thời
gian
Nội dung ghi bảng
Hoạt động của thầy
Hoạt động
của trò
30
ph
30
ph
ph
BÀI TẬP VÀ THỰC HÀNH SỐ 4 (tiết
25-26)
Bài 1: Tìm hiểu và chạy thử
chương trình thực hiện thuật toán
sắp xếp dãy số nguyên bằng thuật
toán tráo đổi với cac giá trị khác
nhau của n dưới đây. Qua đó nhận
xét về thời gian chạy của chương
trình.
a. {Chương trình SGK trang 65,
66}
b. Khai báo thêm biến 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 thực hiện tráo đổi trong
thuật toán. Đưa kết quả tìm được
ra màn hình.
Bài 2: y đọc tìm hiểu những
phân tích đviết chương trình giải
bài toán:
Cho mảng a gồm n phần tử. Hãy
viết chương trình tạo mảng b[1..n],
trong đó b[i] tổng của i phần tử
đầu tiên của a.
- Đưa ra nội dung bài thực hành:
- Đoạn nào thể hiện một lần tráo
đổi giá trị của hai phần tử liền kề
của mảng?
- For j:=n dowto 2 do
For i:=1 to n j-1 do
If a[i]>a[i+1] then
Begin
T:=a[i];
A[i]:=a[i+1];
A[i+1]:=a[i];
End;
- Qua bài thực hành số 3, chúng
ta thấy thể tăng biến Dem để
đếm số lần tráo đổi hay không?
Để m điều đó phải đăt câu lệnh
tăng biến Dem ở đâu?
- thể làm được. ta đặt
như sau:
Dem:integer;
Dem:=0;
For j:=n dowto 2 do
For i:=1 to j-1 do
If a[i]>a[i+1] then
Begin
T:=a[i];
Chú ý theo
dõi SGK
nội dung
bài thực
hành .
Học sinh
theo dỏi,
thực hành
và trả lời.
Trang 64
20
ph
Program subsum1;
uses crt;
const nmax=100;
type myarray= array[1..max] of
integer;
Var a, b:myarray;
n, i, j: integer;
Begin
Clrscr; randomize;
writeln(‘nhập n=:’); readln(n);
for i:=1 to n do
a[i] := random(300)-
random(300);
for i:=1 to n do write(a[i]:5);
writeln;
{Bắt đầu tạo b}
for i:=1 to n do
begin
b[i]:=0;
for j:=1 to i do
b[i]:=b[i]+a[j];
end;
{Kết thúc tạo b}
for i:=1 to n do write(b[i]:5);
readln;
end.
Bài 3: Viết chương trình nhập n
phần tử các số nguyên dương
vào mảng 1 chiều a đếm xem
bao nhiêu phần tử bằng k? (k được
nhập từ bàn phím).
A[i]:=a[i+1];
A[i+1]:=a[i];
Dem:=dem+1;
End;
- Hướng dẫn học sinh thựchành.
Bài 2:
- Thực hành theo hướng dẫn của
GV.
- Để ý ta thấy có hệ thức sau:
B[1]=a[1];
B[i]=b[i-1]+a[i];
Do đó, ta thể đổi đoạn {băt
đầu tạo b} đến{kết thúc tạo b}
bởi hai lệnh:
b[1]:=a[1];
for i:=2 to n do B[i]:= b[i-
1]+a[i];
Bài 3: ớng dẫn HS thực hành
bổ sung.
Học sinh
theo dỏi,
thực hành
và trả lời.
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (10 ph)
1. Củng cố:
Cho HS dừng thực hành để kiểm tra trong 5phút. Đánh giá những kết quả làm được
chưa làm được của HS.
2. Bài tập về nhà:
1. Sửa chương trình bài 2 thành chương trình hoàn chỉnh khi thay đổi đoạn {băt đầu
tạo b} đến {kết thúc tạo b} bởi hai lệnh:
b[1]:=a[1];
for i:=2 to n do B[i]:=b[i-1]+a[i];
2. Chuẩn bị bài học kiểu xâu.
Trang 65
BÀI 12: KIỂU XÂU (tiết 27-28) - (Ngày soạn: 09/11/2009)
A. MỤC ĐÍCH VÀ YÊU CẦU
1. Mục đích:
- Học sinh biết được xâu là một dãy ký tự (có thể coi xâu là mảng một chiều).
- Biết cách khai báo xâu và truy cập phần tử của xâu.
- Sử dụng được một số thủ tục, hàm thông dụng về xâu.
- Cài đặt được một số chương trình đơn giản về xâu.
2. Yêu cầu:
- Học sinh đã nắm được kiểu mảng.
- Hình thành tư duy về thuật toán xử lý kiểu xâu.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Thuyết trình, vấn đáp.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- Khai báo kiểu xâu
- Các hàm và thủ tục kiểu xâu.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng, máy chiếu đa năng.
E. NỘI DUNG GIẢNG DẠY
II. NỘI DUNG BÀI HỌC
Thời
gian
Nội dung ghi bảng
Hoạt động của thầy
Hoạt động
của trò
10
ph
15
ph
BÀI 12: KIỂU XÂU (tiết 27-28)
* Một số khái niệm:
- Xâu là một dãy ký tự trong bảng
ASCII.
- Mỗi tự được gọi là một phần tử
của xâu.
- Số lượng tự trong xâu được gọi
là độ dài của xâu.
- Xâu độ dài bằng 0 được gọi
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ử xâu.
- Chỉ số phần tử trong xâu thường
được đánh số là 1, 2, 3...
- Trong NNLT Pascal, tham chiếu tới
phần tử của nó được viết là:
<Tên biến xâu> [chỉ số]
* Cách khai báo thao tác trên
kiểu xâu:
1. Khai báo:
Var <tên biến> : String [độ dài lớn
- Đặt vấn đề: Để lưu trữ thông
tin họ tên của một người, các
kiểu dữ liệu đã học đáp ứng
được không?
- Phân tích các phương án của
học sinh, từ đó đưa ra yêu cầu
cần phải sử dụng một kiểu dữ
liệu mới đó là kiểu xâu.
- Giới thiệu một số khái niệm và
thao tác thường dùng khi làm
việc với xâu ký tự trong lập
trình nói chung.
- Đây cách khai báo trong
NGLT Pascal, đối với các ngôn
ngữ lập trình khác thể
cách khai báo khác.
Học sinh
theo dỏi,
ghi chép
bài học.
Học sinh
theo dỏi,
ghi chép
trả lời.
Trang 66
15
ph
40
ph
nhất của xâu];
Trong đó:
- String: tên dành riêng để khai
báo kiểu xâu.
VD:
Var Ten : String[10] ;
Ho_dem : String[50] ;
Que : String ;
Chú ý:
- Nếu không khai báo độ dài tối đa
cho biến xâu tự thì độ dài ngầm
định của nó là 255.
VD: Var xaumax : String;
- Hằng xâu được đặt trong cặp dấu
nháy đơn ‘’.
2. Các thao tác xử lý xâu:
- Ghép xâu, nối xâu (+):
VD: S1 = ‘HA’, S2 = ‘NOI’
S = S1+S2 = ‘HA NOI
- Các phép so sánh xâu (SGK):
* Pascal sẽ so sánh xâu theo thứ tự
từ trái sang phải.
* S1 > S2 nếu tự đàu tiên khác
nhau giữa chúng kể từ trái sang phải
trong xâu S1 có mã ASCII lớn hơn.
VD: S1 = ‘aB’, S2 = ‘AB’
=> S1 > S2. vì a = 97, A = 65.
* Nếu S1
S2 thì S1 < S2.
S1 = ‘Bc’ , S2 = ‘aBcd’
=> S1 < S2
- Một số thủ tục và hàm chuẩn:
* Delete(St,vt,n): Xóa đi n tự bắt
đầu từ vị trí vt trong xâu st
VD: St = ‘Song Hong’
Delete(St,1,5) Kết quả
St1 = ‘Hong’
* INSERT(St1, St2, vt): Chèn xâu
St1 vào xâu St2 bắt đầu từ vị trí vt.
VD:
St1 = ‘vi-
St2 = ‘May-tinh’
Insert(St1,st2,5) Kết quả
St2 = ‘May-vi-tinh’
COPY(St, vt, n): Tạo một u gồm
n tự liên tiếp được lấy trong xâu
St bắt đầu từ vị trí vt.
VD: St1 = ‘Xau-ky-tu’
Copy(St,5,5) Kết quả St2 = ‘ky tu’
LENGTH(St): St = ‘Tin hoc’
- Nếu không khai báo độ dài tối
đa cho biến xâu tự thì độ dài
ngầm định của nó là bao nhiêu?
- Cho xâu tự: ‘nGuyen vaN
A’. Để xử xâu trên cần bao
nhiêu thao tác để được xâu hoàn
chỉnh ‘Nguyen Van A’ ?
- Làm sao để biết một ký tự
dấu cách ?
- Làm thế nào để xóa đi một
vài ký tự?
- Làm thế nào đthêm một vài
ký tự ?
- Để in chữ hoa thì làm thế
nào?
- Làm thế nào để kiểm tra xâu
có bao nhiêu ký tự?
=> Từ đó đưa ra một sthủ tục
và hàm chuẩn.
- Ứng với mỗi thủ tục hàm
chuẩn giáo viên lấy VD cụ thể
trong Pascal để các em hiểu.
- Trong các VD đã trong
Sách giáo khoa, giáo viên đặt ra
các câu hỏi gợi mở để học sinh
viết chương trình.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
làm bài
Trang 67
Length(St) Kết quả St có độ dài là 7
POS(St1, St2): Cho vị trí xuất hiện
đầu tiên của xâu St1 trong xâu St2.
Nếu xâu St1 không trong xâu St2
thì cho kết quả là 0.
VD:
St2 = ‘Tin hoc’
St1 = ‘hoc’
Pos(St1,St2) Kết quả xuất hiện đầu
tiên của St1 tại vị trí 5
UPCASE(Ch): Cho giá trị tự
in hoa ứng với ký tự Ch.
Ch:= Upcase(a) cho kết quả là
ch = A
* Một số VD trong SGK:
VD1: Viết chương trình nhập vào 2
biến xâu và in ra xâu dài hơn.
VD2: Nhập vào 2 xâu tự kiểm
tra ký tự đầu tiên của xâu thứ nhất
trùng với ký tự cuối cùng của xâu thứ
2 không ?
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (10 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:
- Nhắc lại một số khái niệm xâu.
- Các thủ tục và hàm.
2. Bài tập:
Bài 1: Bài 10 (trang 80): Viết chương trình nhập từ bàn phím xâu tự S độ dài không
quá 100. Hãy cho biết có bao nhiêu chữ số xuất hiện trong xâu S.
Bài 2: Viết chương trình nhập một xâu ký tự. Thực hiện thao tác sao chép xâu tại vị trí bất kỳ.
var s1,s2:string;
pos, num:integer;
begin
write('nhap xau s1: '); readln(s1);
write('vi tri ky tu can sao chep: '); readln(pos);
write('so luong ky tu can sao chep: '); readln(num);
s2:=copy(s1,pos,num);
writeln('xau moi la: ',s2);
readln
end.
Bài 3: Nhập 1 xâu, viết ra màn hình xâu dài hơn
Sử dụng câu lệnh: If length(s1) > Length(s2) then
Cách 1:
Write(‘Nhap xau St: ‘); Readln(St);
For i:=1 to length(St) do
If St[i] IN [‘0’..’9’] Then d:=d+1;
Write(‘So ky tu chu so trong xau: ‘, d);
Cách 2:
For i:=1 to length(St) do
If ( ‘0’ <= st[i] ) and ( s[i] <= ‘9’ ) Then
d:=d+1;
Write(‘So ky tu chu so trong xau: ‘, d);
Trang 68
BÀI TẬP VÀ THỰC HÀNH SỐ 5 (tiết 30-31) - (Ngày soạn: 16/11/2009)
A. MỤC ĐÍCH VÀ YÊU CẦU
1. Mục đích:
- Khắc sâu thêm phần kiến thức về thuyết kiểu xâu tự, đặc biệt các hàm 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ự…
- Khai báo biến kiểu xâu.
- Nhập, xuất giá trị cho biến xâu.
- Duyệt qua tất cả các kí tự của xâu.
- Sử dụng được các hàm và thủ tục chuẩn.
2. Yêu cầu:
- Tích cực chủ động trong thực hành
B. PHƯƠNG PHÁP GIẢNG DẠY
- Chia lớp thành 2 nhóm nếu không đủ máy, 3HS/1máy.
C. PHƯƠNG TIỆN DẠY HỌC
1. Chuẩn bị của giáo viên:
- Máy chiếu
2. Chuẩn bị của học sinh:
- Sách giáo khoa, bài tập ở nhà
D. NỘI DUNG GIẢNG DẠY
I. NỘI DUNG BÀI HỌC
Thời
gian
Nội dung ghi bảng
Hoạt động của thầy
Hoạt động
của trò
30
ph
BÀI TẬP VÀ THỰC HÀNH SỐ 5 (tiết
30-31)
Bài thực hành 1: Nhập vào một
xâu, kiểm tra xem phải
một palindrome hay không?
a) Chạy thử chương trình:
Var i, x: byte; a, p: string;
Begin
Write(‘nhap vao mot xau’);
Readln(a);
x:= length(a);
p:=’ ‘;
for i:=x downto 1 do p := p+a[i];
if a = p then write(‘xau la
palidrom’)
else write(‘xau khong la
palindrome’);
readln;
end.
b) Viết lại chương trình trên trong
đó không dùng biến xâu p.
Bài thực hành 1:
- Tìm hiểu đề bài
- Giới thiệu nội dung đề bài lên
bảng.
- Diễn giài: một xâu được gọi
palidrom nếu ta đọc các từ
phải sang trái sẽ giống khi đọc từ
trái sang phải (Xâu đảo)
- Yêu cầu học sinh cho hai d
về xâu palidrom một dụ
không phải là palidrom
- 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
chức năng 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 .
- Cải tiến chương trình:
- Nêu yêu cầu mới: viết lại
Học sinh
theo dỏi,
thực hành
và trả lời.
Học sinh
theo dỏi,
Trang 69
30
ph
20
ph
Cách 1:
Var i, x: byte; a: string;
Palin: boolean;
Begin
Write(‘nhap xau’); Readln(a);
x:= length(a);
palin := true;
for i:=1 to x div 2 do
if a[i]<>a[x-i+1] then palin:=false;
if palin then write(‘ la palidrom’)
else write(‘xau khong la
palindrome’);
readln;
end.
Cách 2:
Var i, x: byte; a: string;
Begin
Write(‘nhap xau’); Readln(a);
x:= length(a);
i:=1;
while (i<=(x div 2)) and
(a[i]=a[x-i+1]) do i:=i+1;
if i>(x div 2) then write(‘ la
palidrom’)
else write(‘xau khong la
palindrome’);
readln;
end.
Bài thực hành 2: Viết chương
trình nhập o một u tự S
thông báo ra màn hình số lần xuất
hiện của mỗi chữ cái tiếng anh
trong S (không phân biệt chữ hoa
chữ thường)
Bài thực nh 3: Thay thế xâu
tự “anh” bằng xâu “em”.
var st:string;
i, vt:integer;
begin
write('nhap xau ');readln(st);
writeln;
while pos('anh',st) <> 0 do
begin
vt:= pos('anh',st);
delete(st,vt,3);
insert('em',st,vt);
end;
chương trình 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: tự thứ i đối xứng với
tự vị trí nào?
- Hỏi: cần phải so sánh bao nhiêu
tự trong xâu để biết đươc xâu
đó là palidrom?
- Hỏi: dùng cấu trúc lặp để 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 thông
báo kết quả
- Xác nhận những bài làm có kết
quả đúng
Bài thực hành 2:
1. Giới thiệu đề bài:
- Chiếu nội dung đề bài lên bảng.
nêu mục đích của bài toán
- Chia lớp thành hai nhóm
+ Nhóm 1: đặt câu hỏi phân tích
+ Nhóm 2: trả lời các câu hỏi
phân tích
- Theo dõi những câu hỏi
phân tích của nhón 1 trả lời
câu hỏi phân tích của nhóm 2. Bổ
sung sửa sai cho cả nhóm 1
nhóm 2.
Nhóm 1:
- Hỏi: dữ liệu vào, dữ liệu ra của
bài toán?
- Nêu các nhiệm vụ chính cần
thực hiện khi giải quyết bài toán
- Hỏi cấu trúc dữ liệu phải sử
dụng như thế nào?
- Ta phải sử dụng hàm nào
Nhóm 2:
- Vào: một xâu S
- Ra: giải các số ứng với sụ xuất
hiện của mỗi loại kí tự trong xâu
- TT:duyệt từ trái sang phải, thêm
một đơn vị cho kí tự đọc được
- Cấu trúc dữ liệu: Dem[‘A’..’Z’]
- Dùng hàm Upcase()
2. Độc lập soạn chương trình
vào máy :
Học sinh
theo dỏi,
thực hành
và trả lời.
Học sinh
theo dỏi,
thực hành
và trả lời.
Học sinh
theo dỏi,
thực hành
Trang 70
write('xau moi la ',st);
readln
end.}
- Nhập dữ liệu của giáo viên và
thực hiện chương trình và để xem
xét kết quả
- Thông báo kết quả cho giáo
viên.
Bài thực hành 3:
- Hướng dẫn học sinh sử dụng các
hàm Pos, Insert, và hàm Delete.
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (10 ph)
1. Củng cố:
Một số thuật toán đơn giản liên quan đến xâu kí tự: kiểm tra một xâu đối xứng, tìm tần
suất xuất hiện của các kí tự có trong xâu.
2. Bài tập về nhà:
Nhập 2 xâu ký tự S1 và S2, kiểm tra xem xâu S2 có phải là xâu đảo của xâu S1 không ?
Trang 71
ÔN TẬP HỌC KỲ I (tiết 32-33) - (Ngày soạn: 17/11/2009)
LÝ THUYẾT:
Câu 1: So sánh câu lệnh lặp với số lần biết trước và chưa biết trước?
Câu 2: So sánh kiểu dữ liệu mảng và kiểu xâu?
BÀI TẬP: Viết chương trình thực hiện c bài toán sau: (Cần nêu ý tưởng thuật toán trước
khi viết chương trình)
Câu 1: Nhập vào một số nguyên N 3 chữ số, sau đó in ra màn nh tổng các chữ số của N.
VD: N = 123 kết quả là: 6.
Câu 2: Hoán đổi 2 số nguyên M N theo 2 cách: dùng biến trung gian không dùng biến
trung gian.
Câu 3: Tính giá trị biểu thức:
a)
3
2
sin
ab
Sa
x

b) e
| sin ( ) |a x x
2
c)
2
4b ac
e
Câu 4: Nhập vào độ dài hai cạnh của tam giác và góc giữa hai cạnh đó, sau đó tính và in ra màn
hình diện tích của tam giác.
Gợi ý: Công thức tính diện tích tam giác: S =
)sin(..
2
1
ba
Câu 5: Hãy in ra màn hình các số nguyên từ 1 đến 100 sao cho mỗi dòng có 10 chữ số.
Gợi ý: for i := 1 to 100 do
If (i mod 10 = 0) then writeln;
Câu 6: Tính x
y
Câu 7: Tính
n
x
. Gợi ý:
n
x
= x
1/n
=
1/
ln
n
x
e
=
1/ ln
exp(1/ *ln )
nx
e n x
Câu 8: Tính các tổng sau: với N được nhập vào từ bàn phím
S0 = n! = 1*2*...*n {n giai thừa}
Câu 9: Tìm giá trị N nhỏ nhất để:
S = n! > A
gt := 1; n:= 1;
While gt<=A do {cho vòng lặp giới hạn đến s=a}
Begin
Inc(n);
gt := gt*n;
End;
Với A, B được nhập từ bàn phím
Câu 10: Viết chương trình nhập vào số nguyên N. In ra màn hình tất cả các ước số của N.
Ý tưởng: Cho biến i chạy từ 1 tới N. Nếu N MOD i=0 thì viết i ra màn hình.
Var N,i : Integer;
Begin
Clrscr;
Write('Nhap so nguyen N= '); Readln(N);
Trang 72
For i:=1 To N Do
If N MOD i=0 Then Write(i:5);
Readln;
End.
Câu 12: Viết chương trình tìm các số có 3 chữ số
abc
sao cho:
abc
= a
3
+ b
3
+ c
3
.
Câu 13: Viết chương trình nhập 2 số nguyên a b từ bàn phím (a<b). Xác định slượng các
số nguyên lẻ i thỏa mãn điều kiện a ≤ i ≤b. Đưa ra màn hình số lượng tính được bản thân các
số lẻ này theo thứ tự tăng dần (mỗi số trên 1 dòng).
dem:=0;
for i:=a to b do
if (i mod 2 <> 0) then
begin
inc(dem);
writeln(i);
end;
write('vay co ',dem,' so le');
Bài 13: Viết chương trình nhập vào một xâu tự từ bàn phím. Đổi xâu tự đó sang chin
hoa rồi in kết quả ra màn hình.
Ví dụ :Xâu abcdAbcD sẽ cho ra xâu ABCDABCD.
Write(‘Nhap xau St: ‘); Readln(St);
For i:=1 to length(St) do
St[i]:=Upcase(St[i]);
Write(‘Xau ket qua: ‘, St);
Bài 14: Nhập 1 xâu, viết ra màn hình xâu đó nhưng đã được bỏ tất cả các ký tự là dấu cách
Var i,k : Byte ;
a,b : String ;
Begin
Write('Nhap xau : '); Readln(a) ;
k := length(a);
b :=' ' ;
For i := 1 to k do if a[i] <> ' ' then b := b+a[i];
Write(‘xau moi la: ’,b);
Readln;
End .
Bài 15: Viết chương trình nhập một xâutự. In ra màn hình xâu tự là chữ hoa, xâu t
chữ thường.
Var s1,s2 : String ; {Chữ thường là: S1[i] in ['a'..'z']}
i : Byte ;
Begin
Write('Nhap xau s1 : '); Readln(s1) ;
s2 := ' ' ;
For i := 1 to length(s1) do If (S1[i] in ['A'..'Z']) then s2 := s2 + s1[i] ;
Write(‘cac ky tu la chu HOA trong xau la: ’,s2);
Readln ;
End .
Trang 73
BÀI 13: KIỂU BẢN GHI (tiết 35)
(Ngày soạn: 28/11/2010; Ngày dạy: ....../......./20....)
A. MỤC ĐÍCH VÀ YÊU CẦU
1. Mục đích:
- Học sinh biết được các khái niệm bản ghi.
- Biết cách khai báo bản ghi.
2. Yêu cầu:
- Học sinh hăng say học tập.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Thuyết trình, vấn đáp.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- Khai báo kiểu bản ghi.
- Các thuật toán xử lý trên kiểu bản ghi.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng, máy chiếu đa năng.
E. NỘI DUNG GIẢNG DẠY
I. NỘI DUNG BÀI HỌC
Thời
gian
Nội dung ghi bảng
Hoạt động của thầy
Hoạt động
của trò
20
ph
25
ph
BÀI 13: KIỂU BẢN GHI (tiết 35)
* Một số khái niệm:
VD: Bảng điểm kết qu thi.
- Kiểu bản ghi được dùng để tả
các đối tượng cùng thuộc nh,
thể có các kiểu dữ liệu khác nhau.
- Bản ghi được gọi Record, mỗi
Record sẽ lưu trữ dữ liệu về một đối
tượng cần quản lý.
- Mỗi thuộc tính của từng đối tượng
sẽ tương ứng với từng bản ghi.
- Các ngôn ngữ lập trình thường cho
phép xác định:
Tên kiểu bản ghi.
Tên các trường.
Kiểu dữ liệu của trường.
Cách khai báo biến.
Cách tham chiếu đến các trường.
1. Khai báo.
* Cách định nghĩa kiểu và khai báo
biến:
- Xét VD sau:
Viết chương trình quản các
thí sinh của một k thi tuyển
sinh. Chương trình cần quản
được:
+ SBD thí sinh.
+ Họ tên.
+ Giới tính ...
=> thể quản các thông tin
trên bằng mảng 1 chiều được
không?
=> Từ đó đưa ra kiểu bản ghi.
- GV lấy 1 VD cho học sinh
nhận biết các thành phần trong
kiểu bản ghi.
- Ngôn ngữ Pascal không cho
phép khai báo biến bản ghi trực
Học sinh
theo dỏi,
ghi chép
bài học.
Học sinh
theo dỏi,
ghi chép
trả lời.
Trang 74
40
ph
Type <tên kiểu bản ghi> = Record
<tên trường 1>:<kiểu trường1>
<tên trường 2>:<kiểu trường2>
...............
<tên trường n>:<kiểu trườngn>
End;
Var <tên biến>:<tên kiểu bản ghi>;
VD:
Type HOCSINH = Record
Hoten : String [30];
Ngaysinh : String [10];
Gioitinh : boolean;
Toan, ly, hoa : real;
End;
Var A, B : HOCSINH;
Lop:array[1..Max]of HOCSINH
Trong đó:
- A, B hai bản ghi đơn chứa tất cả
các thông tin Hoten, Ngaysinh,
Gioitinh.
- Lop một mảng chứa nhiều bản
ghi (giống như dạng bảng chứa nhiều
dòng) chứa tất cả các thông tin
Hoten, Ngaysinh, Gioitinh.
*Cách truy cập từng trường trong
kiểu bản ghi:
<tên biến mảng>. <tên trường>
VD:
A.hoten
B.ngaysinh
Lop[i].Hoten. (i là vị trí bất kỳ).
2. Gán giá trị:
Có 2 cách:
C1: Dùng lệnh gán trực tiếp.
- Nếu A, B 2 bản ghi cùng kiểu ta
có thể gán giá trị của A cho B:
VD: A:=B; hoặc B:=A;
C2: Gán giá trị cho từng trường.
VD:
A.hoten := ‘nguyen van an’;
Readln(A.ngaysinh);
tiếp phải khai báo biến bản
ghi thông qua các kiểu bản ghi.
- m thế nào thể khai báo
nhiều biến bản ghi cùng một
kiểu ?
=> Sử dụng kiểu mảng trong đó
phần tử mảng sẽ kiểu bản
ghi.
Var <tên mảng>:Array[1..n] of
<tên kiểu bản ghi>;
- Đưa ra một số VD.
- Từ VD trên em y cho biết ý
nghĩa của cách khai báo hai
biến bản ghi A, B và Lop.
- Khi nhập thông tin vào từ bàn
phím ta phải nhập thông tin vào
từ trường.
- Chương trình được viết trong
NNLT Pascal dùng kiểu bản ghi
để xử bằng kết quả thi bao
gồm 2 môn toán văn của học
sinh. Sau khi nhập xong sẽ đưa
ra kết quả học tập và hạnh kiểm.
(SGK)
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
II. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:
- Nhắc lại một số khái niệm kiểu bản ghi.
- Cấu trúc kiểu bản ghi.
Trang 75
2. Bài tập:
Bài 11 (trang 80-SGK):
a) Nếu cần in ra kiểu xếp loại GIOI, KHA, TRUNG BINH, YEU thì chương trình
XEP_LOAI cần khai báo như thế nào?
b) y bổ sung thêm vào chương trình XEP_LOAI những lệnh cần thiết để chương trình
đưa ra danh sách học sinh xếp loại A.
Program XeploaiA ;
uses crt ;
Type Hocsinh = Record
Ten : String[30] ;
Ngaysinh : String[10] ;
Diachi : String[50] ;
toan, van : real ;
Xeploai : Char ;
End ;
Var Lop : array[1..100] of Hocsinh ;
i, n : Byte ;
Tg : Real ;
Begin
Clrscr ;
Write(' Cho biet so hoc sinh : ') ; Readln(n) ;
For i := 1 to n do
Begin
Writeln(' Vao thong tin cho hoc sinh thu ',i,' : ') ;
Write (' Ho ten : ') ; readln(Lop[i].ten) ;
Write(' Ngay sinh : ') ; readln(Lop[i].Ngaysinh) ;
Write(' Dia chi : ') ; readln(Lop[i].Diachi) ;
Write(' Diem Toan : ') ; readln(Lop[i].toan) ;
Write(' Diem Van ') ; readln(Lop[i].van) ;
Tg := Lop[i].toan + Lop[i].van ;
if Tg >= 18 then Lop[i].Xeploai := 'A'
Else if Tg >= 14 then Lop[i].Xeploai := 'B'
Else if Tg >= 10 then Lop[i].Xeploai := 'C'
Else Lop[i].Xeploai := 'D'
End ;
Readln ;
For i := 1 to n do
Writeln(i : 4, Lop[i].ten : 30 , ' --- Loai : ', Lop[i].Xeploai);
writeln('danh sach hoc sinh xep loai A la:');
for i:=1 to n do
if Lop[i].xeploai='A' then writeln('Hoc sinh o vi tri thu ',i,': ', lop[i].ten);
Readln ;
End.
Trang 76
CÂU HỎI VÀ BÀI TẬP (tiết 36)
(Ngày soạn: 29/11/2010; Ngày dạy: ....../......./20....)
A. MỤC ĐÍCH VÀ YÊU CẦU
1. Mục đích:
- Giúp HS viết một số chương trình đơn giản kiểu bản ghi.
- Hiểu được cấu trúc kiểu bản ghi, bản ghi tổ chức theo mảng, theo kiểu xâu.
- Học sinh giải quyết tốt các bài tập tương tự.
2. Yêu cầu:
- Học sinh chú ý làm bài tập.
- Chuẩn bị tốt bài tập ở nhà.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Hướng dẫn HS nêu ý tưởng thuật toán, sau đó viết chương trình và test.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- Ôn tập Kiểu bản ghi.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng.
E. NỘI DUNG GIẢNG DẠY
Câu 1: Nhập tọa độ điểm M(x,y) và xuất ra màn hình tọa độ vừa nhập của M.
TYPE Toa_do=RECORD
x,y:Integer;
END;
VAR M:Toa_do;
Begin
Writeln('TOA DO DIEM M(x,y)');
Writeln('-Nhap toa do diem M= ');
Write('+X= '); Readln(M.x); Write('+Y= '); Readln(M.y);
Writeln('-Xuat toa do diem M= (',M.x,',',M.y,’)’);
Readln
End.
Câu 2: Hãy in ra màn hình kết quả là hai người cùng thông tin: họ tên, tuổi. Trong đó thông tin
của một người đã có sẵn trong Pascal.
TYPE NhanVien = RECORD
Holot : String[17];
Ten : String[7];
Tuoi : 18..60;
END;
VAR Nv1, Nv2 : Nhanvien;
Begin
Writeln('PHEP GAN BAN GHI');
Writeln('Dung toan tu gan');
Nv1.Holot:='Nguyen Van';
Nv1.Ten:='Xuan';
Nv1.Tuoi:=30;
Nv2:=Nv1;
Writeln(Nv1.Holot,' ',Nv1.Ten,' ',Nv1.Tuoi,' tuoi');
Writeln(Nv2.Holot,' ',Nv2.Ten,' ',Nv2.Tuoi,' tuoi');
Readln
End.
Trang 77
u 3: Viết chương trình cho bài toán sau: Nhà trường muốn quản danh sách học sinh theo
các thông tin sau: Họ tên, quê quán, gioitinh. Hãy nhập thông tin trên và in ra màn hình số lượng
học sinh cùng quê (quê được nhập từ bàn phím).
Type Hocsinh = Record
Ten : String[30] ;
Diachi : String[50] ;
gioitinh : string[3] ;
End ;
Var Lop : array[1..100] of Hocsinh ;
i,n,dem : Byte ;
que:string[50];
Begin
Write(' Cho biet so hoc sinh : '); Readln(n) ;
For i := 1 to n do
Begin
Writeln(' Vao thong tin cho hoc sinh thu ',i,' : ') ;
Write (' Ho ten : ') ; readln(Lop[i].ten) ;
Write(' Dia chi : ') ; readln(Lop[i].Diachi) ;
Write(' gioi tinh: ') ; readln(Lop[i].gioitinh) ;
End ;
write('nhap que quan de dem so HS: '); readln(que);
dem:=0;
For i := 1 to n do if lop[i].diachi=que then inc(dem);
write('co ',dem,' hoc sinh cung que ',que);
Readln ;
End.
Trang 78
BÀI 14-15: KIỂU DỮ LIỆU TỆP VÀ THAO TÁC VỚI TỆP (tiết 37)
(Ngày soạn: 04/12/2010; Ngày dạy: ....../......./20....)
A. MỤC ĐÍCH VÀ YÊU CẦU
1. Kiến thức :
- Học sinh biết được vai trò của kiểu dữ liệu tệp .
- Học sinh biết được có hai cách phân loại tệp .
- Học sinh biết khai báo biến tệp và các thao tác cơ bản đối với tệp văn bản .
2. Kỹ năng :
- Dần dần hình thành kỹ năng về các thao tác với tệp văn bản .
3. Thái độ :
- Rèn luyện cho học sinh ý thức lưu trữ dữ liệu một cách khoa học, phòng chống mất
mát thông tin hoặc nhiễm virút .
B. PHƯƠNG PHÁP GIẢNG DẠY
- Sử dụng PP thuyết trình, giảng giải, gợi ý nêu vấn đề.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- Khái niệm kiểu dữ liệu tệp.
- Các thao tác tạo và xử lý tệp.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng, máy chiếu đa năng.
E. NỘI DUNG GIẢNG DẠY
Đặt vấn đề cho bài học:
Trong các giờ thực hành đã học, sau khi chạy một chương trình ta thấy kết quả in lên màn
hình, tuy nhiên muốn sử dụng kết quả đó về sau thì không được. Để khắc phục nhược điểm y
ta nghiên cứu dữ liệu kiểu tệp.
II. NỘI DUNG BÀI HỌC
Thời
gian
Nội dung ghi bảng
Hoạt động của thầy
Hoạt động
của trò
10
ph
5 ph
BÀI 14: KIỂU DỮ LIỆU TỆP VÀ THAO
TÁC VỚI TỆP (tiết 37)
* Phân loại tệp :
- Theo cách tổ chức dữ liệu :
+ Tệp văn bản .
+ Tệp có cấu trúc .
- Theo cách thức truy cập :
+ Tệp truy cập tuần tự .
+ Tệp truy cập trực tiếp .
* Các thao tác trên tệp (Hình SGK
trang 86) :
1. Khai báo
Cú pháp:
Var <tên biến tệp>: Text ;
GV: Trong máy tính những
loại bộ nhớ nào? Loại bộ nhớ
nào không bị mất dữ liệu khi tắt
máy hoặc mất điện?
- GV hỏi: Em y cho biết dữ
liệu trong các kiểu dữ liệu từ
trước đến nay ta sử dụng được
lưu trữ loại bộ nhớ nào khi
thực hiện chương trình? Vì sao?
- GV diễn giải: Để u trữ được
dữ liệu ta phải lưu bộ nhớ
ngoài thông thông qua kiểu dữ
liệu tệp. Mọi ngôn ngữ lập trình
đều các thao tác: khai báo
biến tệp, mở tệp, đọc/ ghi dữ
Đó bộ
nhớ RAM.
mất
dữ liệu khi
mất điện
+ Không
mất thông
tin khi tắt
máy.
+ Dung
lượng dữ
Trang 79
25
ph
VD: Var t1, t2: text;
2. Thao tác với tệp.
a) Gắn tên tệp
Cú pháp:
Assign(<tên biến tệp>, <tên tệp>);
VD1: Để gán tên tệp baihoc.txt cho
biến tệp f ta có 2 cách:
Assign(f, ‘baihoc.txt’);
Assign(f, ‘D:\baihoc.txt’);
Chú ý: Không tác tác trên tên tệp
thao tác thông qua biến tệp.
b) Mở tệp
* Mở tệp để ghi:
Cú pháp:
Rewrite(<tên biến tệp>);
VD2:
Assign(f, ‘baihoc.txt’);
Rewrite(f);
* Mở tệp để đọc:
Cú pháp:
Reset(<tên biến tệp>);
VD3:
Assign(f, ‘baihoc.txt’);
Reset(f);
c) Đọc/ghi tệp văn bản
* Đọc tệp:
Cú pháp:
Read(<biến tệp>,<DS biến>);
Hoặc
Readln(<biến tệp>,<DS biến>);
VD: Ghi vào tệp các số nguyên m, n
vào tệp baihoc thông qua biến tệp f:
Read(f, m, n);
* Ghi tệp:
Cú pháp:
Write(<biến tệp>,<DS kết quả>);
Hoặc
Writeln(<biến tệp>,<DS kết quả>);
VD: In ra màn hình các số nguyên m,
n vừa ghi vào tệp bài học:
Write(f, ’m= ‘,m,’ va n=’,n);
Trong đó:
- DS biến: một hoặc nhiều biến
đơn.
- DS kết quả: một hoặc nhiều
phần tử.
- Để c động lên tệp như đếm các pt
liệu, đóng tệp.
- Yêu cầu học sinh nghiên cứu
SGK cho biết đặc điểm của
kiểu tệp? Có mấy loại kiểu tệp?
- Yêu cầu HS trình y khái
niệm tệp cấu trúc tệp văn
bản.
- GV giới thiệu cấu trúc chung
của khai báo biến tệp.
- Yêu cầu HS tìm ví dụ cụ thể.
GV giới thiệu các thao tác xử
tệp như: gán tên tệp, tạo tệp mới
để ghi, mở tệp để đọc, đóng tệp.
- Yêu cầu HS lấy dụ minh
hoạ mở tệp để ghi thông tin
mở tệp để đọc thông tin.
- GV chiếu đồ làm việc với
tệp lên bảng, hình 16 trang 86
SGK. Yêu cầu học sinh giải
thích ý nghĩa của sơ đồ.
- GV giới thiệu cấu trúc chung
của thủ tục đọc ghi dữ liệu tệp
văn bản. Yêu cầu HS lấy dụ
minh hoạ.
- HS sinh quan sát cấu trúc
chung và tìm ví dụ minh họa:
- Readln(f, x1, x2); Đọc dữ liệu
từ biến tệp f, đặt giá trị vào hai
biến x1, x2.
- Writeln(g, ‘Tong la’, x1+x2);
Ghi vào biến tệp g hai tham số
dòng chữ ‘Tong la’ giá trị
tổng x1+x2.
+ hai
loại kiểu
tệp: tệp
cấu trúc
tệp văn
bản.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Học sinh
theo dỏi,
ghi chép
trả lời.
Trang 80
của tệp thì phải đọc tệp trước khi
thao tác.
Chú ý:
- Hàm EOF(<biến tệp>) trả về giá trị
TRUE nếu con trỏ tệp vị trí cuối
tệp.
- Hàm EOLN(<biến tệp>) trả về giá
trị TRUE nếu con trỏ tệp vị trí cuối
dòng.
d) Đóng tệp
Cú pháp:
Close(<biến tệp>);
- Các hàm y thường dùng với
hàm While-Do để kiểm tra vị trí
con trỏ trong tệp VB.
- Sau khi thao tác với tệp VB
cần phải đóng VB bằng thủ tục
Close.
Học sinh
theo dỏi,
ghi chép
trả lời.
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:
- Gọi một học sinh khái quát lại vai trò của kiểu tệp và phân loại tệp.
- Học sinh khái quát lại các thao tác phải thực hiện khi đọc dữ liệu từ tệp và ghi dữ liệu
vào tệp dựa vào hình 16 SGK).
2. Bài tập: (HS chuẩn bị trước các bài tập dưới đây để tiết sau làm BT và thi KT 15ph)
1. Đọc trước bài 16: Ví dụ làm việc với tệp (trang 87).
2. Nhập và tính tổng 2 số nguyên, giá trị được lưu vào tệp songuyen.txt.
var f:text;
tong,m,n:integer;
begin
assign(f,'D:\songuyen.txt'); rewrite(f);
write('nhap n= '); readln(n);
write('nhap m= '); readln(m);
writeln(f,n); writeln(f,m);
tong:=n+m;
writeln(f,tong);
close(f);
readln;
end.
3. Hiển thị trên màn hình giá trị 2 số nguyên và tổng của chúng ở bài 2.
4. Nhập thông tin của một học sinh gồm họ tên, quê quán, lớp và lưu vào tệp hocsinh.txt.
var hoten, quequan, lop:string;
f:text;
begin
assign(f,'d:\hocsinh.txt'); rewrite(f);
write('nhap ho va ten:'); readln(hoten); writeln(f,'ho va ten: ',hoten);
write('nhap que quan:'); readln(quequan); writeln(f,'que quan: ',quequan);
write('nhap lop hoc:'); readln(lop); writeln(f,'hoc sinh lop: ',lop);
close(f);
end.
5. Hiển thị thông tin đã nhập ở bài 4.
var f:text;
st:string;
begin
Trang 81
assign(f,'d:\hocsinh.txt'); reset(f);
while not eof(f) do
begin
readln(f,st);
writeln(st);
end;
close(f);
readln
end.
Trang 82
BÀI 16: VÍ DỤ VỀ THAO TÁC VỚI TỆP (tiết 38)
(Ngày soạn: 10/12/2010; Ngày dạy: ....../......./20 )
A. MỤC ĐÍCH VÀ YÊU CẦU
1. Mục đích:
- Biết các lệnh khai báo tệp văn bản
- Biết các bước làm việc với tệp : gán tên cho biến tệp, mở tệp, đọc/ghi tệp,đóng tệp.
2. Yêu cầu:
- Khai báo đúng kiểu tệp.
- Nắm được các bước thao tác với tệp.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Gợi mở nêu vấn đề, chia nhóm thảo luận.
C. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng, máy chiếu đa năng.
E. NỘI DUNG GIẢNG DẠY
I. NỘI DUNG BÀI HỌC
Thời
gian
Nội dung ghi bảng
Hoạt động của thầy
Hoạt động của trò
5 ph
10
ph
10
ph
BÀI 16: VÍ DỤ VỀ THAO
TÁC VỚI TỆP (tiết 38)
Câu hỏi thảo luận 1:
Ưu điểm của tệp trong
quá trình lưu trữ dữ liệu
gì?
Trả lời: Tệp thể lưu trữ
một lượng lớn dữ liệu trên
bộ nhớ ngoài, vậy, dữ
liệu sẽ không bị mất khi
cúp điện hoặc tắt máy.
Câu hỏi thảo luận 2:
Nêu một số trường hợp
cần phải dùng tệp?
Trả lời: Khi lượng thông
tin lớn cần lưu trữ lâu
dài thì chúng ta sẽ dùng
tệp.
Câu hỏi thảo luận 3:
Trong đ thao tác với
tệp, khi cần nhập dữ liệu
Giới thiệu sơ lược những nội
dung cần quan tâm:
- Tệp dữ liệu là gì?
- Tệp u trữ dữ liệu như thế
nào?
Gợi ý để HS trả lời tốt câu
hỏi:
- Tệp lưu trữ dữ liệu bộ nhớ
nào?
- u trữ dữ liệu như vậy
ưu điểm gì?
Gợi ý để HS trả lời sau khi
trình chiếu
- Khi dữ liệu cần sử dụng chỉ
trong 1 ngày thì cần dùng
tệp không?
- Lượng dữ liệu kích thước
như thế nào thì n lưu trữ
dạng tệp?....
Gợi ý để HS trả lời câu hỏi:
Thảo luận theo nhóm
(không xem tài liệu)
- Đại diện của từng
nhóm phát biểu ý kiến
nhóm mình.
- Các nhóm nhận xét
đánh giá cho nhóm bạn
Các nhóm nêu ý kiến
nhận xét ý kiến của
nhóm bạn
Nghe gợi ý, hướng dẫn
thảo luận nhóm để
Trang 83
5 ph
5 ph
từ tệp phải dùng những
thao tác nào?
Trả lời:Gắn tên tệp, mở
tệp để ghi, ghi dữ liệu vào
tệp, đóng tệp để hoàn tất
việc ghi dữ liệu.
assign (f, fi);
rewrite(f);
write(f,’ ‘,y,’ ‘,z);
close(f);
Câu hỏi thảo luận 4:
Tại sao cần câu lệnh
mở tệp trước khi đọc/ ghi
tệp?
Trả lời: Trước khi sử dụng
tệp phải câu lệnh mở
tệp để trình dịch biết thực
hiện mục đích mở tệp để
đọc hay ghi, đồng thời đặt
con trỏ tệp vào vị trí thích
hợp.
Câu hỏi thảo luận 5:
Tại sai phải dùng câu lệnh
đóng tệp sau khi đã kết
thúc ghi dữ liệu vào tệp?
Trả lời: Phải dùng câu
lệnh đóng tệp sau khi đã
kết thúc ghi dữ liệu vào tệp
để hệ thống hoàn tất việc
ghi dữ liệu ra tệp.
-Khi làm việc với tệp dữ liệu
cần những gì?, những thao
tác nào không thể thiếu?
- Gợi ý phạm vi để HS
sở làm bài: bài 14
Gợi ý để HS trả lời:
- Tệp dữ liệu do chương trình
nào quản lý?.
- khi đọc ghi dữ liệu
khác nhau?, chương trình
dịch có thể hiểu được chúng ta
muốn làm gì không nếu không
mở tệp?
Hướng dẫn để HS làm bài:
- Khi đi ra khỏi nhà chúng ta
cần phải đóng cửa nhà lại
hay không?, mục đích của
việc đóng cửa nhà lại gì?.
- Việc đóng tệp cũng gần
giống như việc đóng cửa nhà.
câu trả lời chính c
nhất.
Các nhóm nêu ý kiến
của nhóm mình trao
đổi ý kiến với nhóm
bạn
Thảo luận để trả lời câu
hỏi
Đại diện của từng
nhóm phát biểu ý kiến
của nhóm mình.
- Trao đổi ý kiến trong
nhóm
II. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (10 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:
- Lệnh var tep, tep1: text; có ý nghĩa gì?
TL: Khai báo biến tep và tep1
- Lệnh assign(tep1,’BAITAP.DAT’); có nghĩa là gì?
TL: gắn biến tep1 với tệp dữ liệu có tên là BAITAP.DAT
- Lệnh close(tep1); có ý nghĩa gì?
TL: Đóng tệp có chứa biến tệp là tep1.
2. Bài tập:
Thực hành các chương trình bài 16 (tiết 38) và các bài tập đã làm trong bài học trước (tiết 37).
Trang 84
BÀI 17: CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI (tiết 39-40)
(Ngày soạn: 20/12/2010; Ngày dạy: ....../......./....... )
A. MỤC TIÊU
1. Kiến thức
- Biết được khái niệm chương trình con
- Biết được ý nghĩa của chương trình con, sự cần thiết phải viết một chương trình thành các
chương trình con.
- Biết được cấu trúc của chương trình con.
- Phân biệt được 2 loại chương trình con là hàm và thủ tục.
2. Kĩ năng
- Nhận biết các thành phần trong phần đầu của thủ tục.
- Nhận biết được hai loại tham số hình thức trong phần đầu của thủ tục
- Nhận biết được cách khai báo hai loại chương trình con cùng với tham số hình thức của
chúng.
3. Thái độ
- Rèn luyện phẩm chất của người lập trình ntinh thần hợp tác làm việc theo nhóm, tuân thủ
yêu cầu vì một công việc chung.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Giảng giải, thuyết trình và mô phỏng.
C. KIẾN THỨC TRỌNG TÂM
- Khái niệm chương trình con.
- Cấu trúc chương trình con.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng, máy chiếu đa năng.
E. NỘI DUNG GIẢNG DẠY
Đặt vấn đề cho bài học mới:
Khi viết chương trình giải các bài toán phức tạp, chương trình thường rất dài, người đọc rất
khó nhận biết được chương trình thực hiện công việc vấn đề đặt ra phải cấu trúc chương
trình như thế nào để dđọc dễ hiểu. Mặt khác việc giải quyết các bài toán lớn thường đòi hỏi
phải phân thành nhiều bài toán con, vậy khi lập trình cần phải chia chương trình thành nhiều
chương trình con.
CẤU TRÚC CHUNG CỦA MỘT CHƯƠNG TRÌNH CÓ SỬ DỤNG CTC
PROGRAM Tên_chương_trình;
USES CRT;
CONST ............;
TYPE ............;
VAR ............;
PROCEDURE THUTUC[(Các tham số)];
[Khai báo Const, Type, Var]
BEGIN
<Các câu lệnh>;
END;
FUNCTION HAM[(Các tham số)]:<Kiểu dữ liệu>;
[Khai báo Const, Type, Var]
Trang 85
BEGIN
<Các câu lệnh>;
HAM:=<Giá trị>;
END;
BEGIN {Chương trình chính}
<Các câu lệnh>;
THUTUC[(...)];
<Các câu lệnh>;
A:= HAM[(...)];
<Các câu lệnh>;
END.
II. NỘI DUNG BÀI HỌC
Nội dung ghi bảng
Hoạt động của thầy
Hoạt động của trò
BÀI 17: CHƯƠNG TRÌNH CON VÀ
PHÂN LOẠI (tiết 39-40)
1. Khái niệm chương trình con.
Khái niệm:
Chương trình con một y lệnh
tả một số thao tác nhất định
thể được thực hiện (được gọi) từ
nhiều vị trí trong chương trình.
VD: SGK
* Lợi ích của việc sử dụng chương
trình con:
- Tránh việc phải viết lặp đi lặp lại
cùng một dãy lệnh.
- Hỗ trợ việc thực hiện các chương
trình lớn.
- Phục vụ quá trình trừu tượng hóa.
- Mở rộng khả năng ngôn ngữ.
- Thuận tiện cho việc nâng cấp,
phát triển chương trình.
2. Phân loại chương trình con.
a) Phân loại:
* Hàm (Function): Thực hiện một
số thao tác nào đó trả về một giá
trị thông qua tên hàm.
VD: SGK
* Thủ tục (Procedure): Thực hiện
các thao tác nhất định, nhưng
không trả về giá trị thông qua tên
của nó.
VD: SGK
b) Cấu trúc chương trình
Cấu trúc chung của ctc
<Phần đầu>
- Chiếu hai chương trình con
được viết sẵn: ( sẵn trong
SGK), một chương trình không
sử dụng ctc, một ct sử dụng
ctc.
- Gọi 1 HS nhận xét về tính ngắn
gọi và dễ hiểu của 2 ct?
- Khi nào nên sử dụng ct con?
- Yêu cầu học sinh cho biết k/n
của chương trìng con?
- mấy loại ctc? gọi tên của
chúng?
- Các em đã sử dụng hàm th
tục chưa? lấy một số hàm th
tục đã được học?
- Ý nghĩa của hàm và thủ tục?
- Yêu cầu hs so sánh với cấu trúc
của ct chính.
- Yêu cầu hs giải thích phần khai
báo, phần thân ctc?
- GV diễn giảng: Phần đầu ctc
tên ctc các tham số ctc các tham
số y được gọi tham số hình
thức, khi dùng chương trìng con
ta phải truyền tham số cho chúng,
tham số được truyền vào đgl
tham số thực sự.
- Để sử dụng hàm và thủ tục các
em thường viết ở đâu và viết như
thế nào?
VD: Tìm hiểu CTCon sau:
- Học sinh quan sát 2
ctc được giáo viên đưa
ra, nhằm so sánh trong
đầu về sự khác biệt
của 2 ct này.
- Nhận xét ct sử
dụng ctc, ngắn gọi dễ
hiểu hơn so với ct
không sử dụng ctc.
- Đối với bài toán lớn,
nhiều người viết, ct
dài cần chia ra nhiều
đoạn, nhiều lệnh
lặp đi lặp lại khi đó
nên sử dụng ctc.
- HS đọc SGK trả
lời.
- hai loại chương
trình con: m thủ
tục.
- Hàm thủ tục
chuẩn
- VD: m sqrt(), hàm
abs(), length(), …
- Hàm sử dụng một số
thao tác nào đó trả
về một giá trị kiểu đơn
giản thông qua tên
hàm.
- Thủ tục thực hiện
Trang 86
<[phần khai báo]>
<phần thân>
* Trong đó:
- Phần đầu của chương trình con
bắt buộc phải có.
- Phần khai báo thể biến,
hằng,…
- Phân thân một dãy lệnh thực
hiện nhiệm vụ nhất định của ctc.
*Chú ý về tham số:
+ Tham số hình thức: tham số
được đưa vào khi định nghĩa
chương trình con.
- CT con thể hoặc không
tham số hình thức
+ Tham số thực sự: tham số
được viết trong lời gọi chương trình
con. Gồm các hằng biến nằm
trong dấu ngoặc (và) có tên CTCon.
+ Biến toàn cục: các biến được
khai báo trong CT chính.
+ Biến cục bộ: các biến được
khai báo trong CTCon.
+ Mọi CT con sử dụng được biến
toàn cục.
+ CT chính CT con khác không
sử dụng được biến cục bộ của CT
con.
b) Thực hiện chương trình con.
- Lệnh gọi CT con sẽ thực hiện từ
trên xuống dưới trong CT chính.
- Khi thực hiện gọi CT con, các
tham số hình thức dùng để nhập dữ
liệu vào của tham số thực sự tương
ứng. Khi xuất dữ liệu thì tham số
hình thức lưu trữ dữ liệu ra sẽ trả
giá trị cho tham số thực sự tương
ứng.
- A,B
biến toàn cục, x1,y1,x2,y2
biến cục bộ dùng trong các CT
con congtru.
- x1,y1,x2,y2 các tham số hình
thức trong thủ tục hàm dưới
đây:
- Khi nhập giá trị A B, thực
hiện CTCon CONG(A,B) thì A,B
tham số thực sự truyền cho
x1,y1 tương ứng.
- Nếu viết lời gọi CTCon
CONG(2, 5) thì tham số hình
thức x1,y1 sẽ nhận giá trị của
tham số thực sự là x1=1, y1=5.
- Tiếp tục thực hiện lời gọi CT
con TRU(A,B) tương tự.
- Nếu viết TRU(B,A) thì x2 nhận
giá trị của B, y2 nhận giá trị của
A để thực hiện phép toán trong
CTC.
các thao tác nhất định,
nhưng không trả về
giá trị thông qua tên
của nó.
- Giống như kiểu khai
báo của chương trình
chính.
- Khác nhau: Phần đầu
của chương trình con
là bắt buộc phải có.
- Phần khai báo thể
là biến, hằng,…
- Phân thân một y
lệnh thực hiện nhiệm
vụ nhất định của ctc.
- Viết trong ct chính,
viết thủ tục kèm theo
các tham số kết
thúc dấu chẩm phẩy
(;). Viết hàm trong
lệnh nào đó hoặc trong
thủ tục, m không
được viết như lệnh.
II. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (10 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:
- Ctc đóng vai trò quan trọng trong lập trình, đặc biệt là trong lập trình có cấu trúc.
- Các lơị ích cơ bản của ctc.
- Có hai loại ctc
- Cấu trúc của ctc
- Ctc được gọi thông qua tên của nó.
2. Bài tập:
- Đọc trước nội dung bài: Ví dụ về cách viết và sử dụng ctc, sách giáo khao trang 96.
- Ôn lại các khái niệm về tham số, biến cục bộ, biến toàn cục và cách thực hiện chương
trình con.
Trang 87
BÀI 18: VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON (tiết 41)
(Ngày soạn: 22/01/2011; Ngày dạy: ....../......./20 )
A. MỤC ĐÍCH – YÊU CẦU
1. Kiến thức:
- Biết được cấu trúc chung và vị trí của thủ tục trong chương trình chính.
- Phân biệt được tham số giá trị và tham số biến trong thủ tục.
- Nắm được khai báo biến toàn cục và biến cục bộ.
2. Kỹ năng:
- Nhận biết được các thành phần trong đầu của một thủ tục.
- Nhận biết được hai loại tham số hình thức trong đầu của một thủ tục.
- Nhận biết được lời gọi thủ tục ở chương trình chính cùng với tham số thực sự.
3. Thái độ:
- Rèn luyện cho học sinh phẩm chất của người lập trình như tinh thần hợp tác, làm việc
theo nhóm, tuân thủ các yêu cầu của một công việc chung.
- Rèn luyện cho học sinh đức tính chịu khó học hỏi, cẩn thận trong lúc làm việc.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Giảng giải, thuyết trình và mô phỏng.
C. KIẾN THỨC TRỌNG TÂM
- Cách viết và sử dụng thủ tục.
- Cách viết và sử dụng hàm.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng, máy chiếu đa năng.
E. KIỂM TRA BÀI CŨ:
Câu 1: Em hãy nêu khái niệm thủ tục? Nêu cấu trúc chung của một chương trình con?
Câu 2: Em hãy lên viết chương trình vẽ một hình chữ nhật.
F. NỘI DUNG GIẢNG DẠY
I. NỘI DUNG BÀI HỌC
Nội dung ghi bảng
Hoạt động của thầy
Hoạt động của trò
BÀI 18: VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ
DỤNG CHƯƠNG TRÌNH CON (tiết 41-
42)
1. Cách viết và sử dụng thủ tục
VD:Vẽ hình chữ nhật SGK
a) Cấu trúc của thủ tục:
Lưu ý:
- Procedure: Từ khoá
- Tên thủ tục: Bắt buộc phải có.
- Kết thúc thủ tục bằng từ kh
- Giới thiệu ví dụ mở đầu.
GV: Từ bài dẫn dắt vấn đề sang
bài mới. Khi muốn vẽ một HCN thì
chúng ta phải viết c lệnh như trên
bảng -> mất thời gian. Để khắc
phục điều đó chúng ta phải làm gì?
GV: Cụ thchúng ta sẽ viết thủ
tục. Cách viết đó như thế nào m
nay chúng ta sẽ cùng tìm hiểu
GV: Chiếu vidu_thutuc1, giới thiệu
cho học sinh cấu trúc thủ tục, lời
gọi thủ tục.
* Tìm hiểu cấu trúc thủ tục
GV: Vị trí của thủ tục nằm phần
nào trong chương trình chính?
HS: Viết chương
trình con.
HS: Quan sát theo
dõi ví dụ
HS: Nằm phần
khai báo,sau khái
báo biến.
Trang 88
End;
- Kết thúc chương trình chính
dấu (.) sau End.
b. Ví dụ về thủ tục.
VD: Vẽ hình chữ nhật bằng cách
xây dựng thủ tục (SGK).
Các khái niệm:
- Tham số hình thức gồm 2 loại:
Tham biến tham số giá trị
(tham trị).
- Tham biến: Khai báo phải có từ
khoá Var. Khi gọi chương trình
con, các tham số hình thức là biến
chỉ được phép thay thế bằng các
tham số thực sự biến các giá
trị y thể thay đổi trong quá
trình thực hiện chương trinh.
- Tham số giá trị: Khi khai báo
không có từ khoá Var trước, khi
gọi chương trình con, các tham số
giá trị sẽ được thay thế bằng các
tham số thực sự giá trị hoặc
biến.
VD1: Viết CT con tính tổng, hiệu
của 2 số nguyên a và b.
- x1,
y1, x2, y2 đều tham biến. Nếu
CTC tổng không tham số thì ta
viết: Procedure cong; lời gọi
cong; Khi đó trong thân CTC
phải sử dụng biến CT chính:
tong := A + B;
VD2: Tìm hiểu về tham biến.
GV: Cấu trúc chung của thủ tục
bao gồm có mấy phần?
GV: Phân biệt sự giống nhau khác
nhau giữa thủ tục chương trình
chính.
GV: Em hãy nêu cấu trúc chung
của thủ tục?
* Tìm hiểu tham số hình thức
tham số thực sự.
GV: Chiếu VD_thutuc2 <sgk T
98
)
GV: Phân biệt VD_thutuc2 với
thutuc1.
GV: Thutuc2 cho phép vẽ nhiều
hình chữ nhật với kích thước khác
nhau bởi hai tham số
chdai,chrong.
GV: Trong chương trình chúng ta
vẽ được bao nhiêu nhiêu hình chữ
nhật.
GV: Vì sao?
GV: Đưa ra phương án đúng
giải thích cho học sinh.
Trong lời gọi ve_hcn(a,b)
vòng lặp (for i:=1 to 4 do ) nên ta
vẽ được 4 hình chữ nhật. Giáo viên
chạy chương trình cho học sinh
quan sát.
GV: Theo em chdai, chrong, 25,
10, a, b được gọi là gì?
GV: Em hãy chỉ ra tham số hình
thức và tham số thực ở ví dụ trên.
a,b: Là tham số thực sự
4/ m hiểu tham số giá trị tham
số biến.
GV: Chiếu dụ thambien1 lên
bảng.
HS: Quan sát dụ trả lời câu
hỏi.
GV: Trong phần đầu của thủ tục
tên thambien1 khác với thủ
tục ve_hcn.
HS: Phần khai báo có chữ Var.
GV: Tham số trong chương trình
con hai chức năng: Đưa dữ liệu
vào, đưa kết quả ra.
GV: Quan sát dụ thambien1 cho
HS: Ba phần: Tên
thủ tục, khai báo
của thủ tục, phần
thân.
HS: Thủ tục nằm
trong chương trình
chính, thủ tục mở
đầu bằng từ
Procedure
HS: Quan sát,
nghiên cứu trả lời
câu hỏi.
HS: Thutuc2
thêm chdai, chrong
trong phần đầu
của thủ tục.
HS: 3 hình chữ nhật
HS: Thông qua lời
gọi: Ve_hcn(25,10);
Ve_hcn(5,10);
Ve_hcn(a,b);
HS: Tham số
HS: chdai, chrong:
tham số hình thức.
HS: x, y thuộc loại
Trang 89
(SGK).
biết x, y thuộc loại tham biến nào?
GV: Chiếu dụ tham bien2, x, y
thuộc loại tham số nào?
GV: Chiếu cho chạy chương
trình các dụ để cho học sinh nắm
hơn về tham số biến tham số
giá trị.
tham số biến.
HS: x: Tham số giá
trị, y: Tham số biến
II. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:
2. Bài tập:
1. Đọc trước nội dung mục 2: Cách viết và sử dụng hàm.
2. Viết chương trình con dạng thủ tục tính tích, thương của 2 số A B. cho biết các
cách viết khác nhau về tham số, CTC không có tham số, cách thực hiện CTC.
3. Viết chương trình con tính diện tích các hình tròn, hình thang, hình chữ nhật khi biết độ
dài của các cạnh.
Const Pi: real =3.14;
Var r, a, cr, cd: real;
chon: integer;
Procedure dien_tich_hinh_tron (r: real);
Var dt: real;
Begin
dt:=Pi*2*r;
Writeln('dien tich hinh tron la :', dt:6:2);
End;
Procedure dien_tich_hinh_vuong (a: real);
Var dt: real;
Begin
dt:=a*a;
Writeln('Dien tich hinh vuong la :', dt:6:2);
End;
Procedure dien_tich_hinh_CN (cr, cd: real);
Var dt:real;
Trang 90
Begin
dt:=(cr+cd)/2;
Writeln(' Dien tich hinh chu nhat la :', dt);
End;
Begin
Writeln('nhap ban kinh :'); Readln(r);
Writeln('Nhap canh hinh vuong:'); Readln(a);
Writeln('nhap chieu rong hinh chu nhat:'); Readln(cr);
writeln('Nhap chieu dai hinh chu nhat'); readln(cd);
Writeln('chon:'); Readln(chon);
dien_tich_hinh_tron(r);
dien_tich_hinh_vuong(a);
dien_tich_hinh_CN(cr,cd);
Readln;
End.
4. Viết chương trình con dạng thủ tục để tính N!
var n,gt:integer;
Procedure tinhgt(n: integer; var gt:integer);
var i:integer;
begin
if i=0 then gt:=1
else begin
gt:=1;
for i:=1 to n do gt:=gt*i;
end;
end;
BEGIN
write('nhap n= '); readln(n);
write('giai thua cua ',n,' la: ');
tinhgt(n,gt);
write(‘Giai thua cua 2 so la: ’,gt);
readln;
Trang 91
BÀI 18: VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON (tiết 42)
(Ngày soạn: 22/01/2011; Ngày dạy: ....../......./20 )
A. MỤC ĐÍCH – YÊU CẦU
1. Kiến thức:
- Học sinh biết cấu trúc chung của một hàm (Function).
- Học sinh nắm được sự giống nhau và khác nhau giữa thủ tục và hàm.
- Học sinh nhận biết được các thành phần trong đầu hàm.
- Học sinh nhận biết được câu lệnh sử dụng hàm ở chương trình cùng các tham số thực sự.
2. Kỹ năng:
- Nhận biết được các thành phần trong đầu của một hàm.
3. Thái độ:
- Rèn luyện cho học sinh phẩm chất của người lập trình như tinh thần hợp tác, làm việc
theo nhóm, tuân thủ các yêu cầu của một công việc chung.
- Rèn luyện cho học sinh đức tính chịu khó học hỏi, cẩn thận trong lúc làm việc.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Giảng giải, thuyết trình và mô phỏng.
C. KIẾN THỨC TRỌNG TÂM
- Cách viết và sử dụng hàm.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng, máy chiếu đa năng.
E. KIỂM TRA BÀI CŨ:
1. Em hãy cho biết cấu trúc chung của thủ tục (Procedure) và giải thích rõ từng thành phần?
2. m các bài tập 2, 3, 4 đã nêu trong bài học trước.
F. NỘI DUNG GIẢNG DẠY
I. NỘI DUNG BÀI HỌC
Nội dung ghi bảng
Hoạt động của thầy
Hoạt động của trò
BÀI 18: VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ
DỤNG CHƯƠNG TRÌNH CON
(tiết 42)
2. Cách viết và sử dụng hàm
* Cấu Trúc của Hàm:
Function <Tên hàm>[(Danh sách
tham số)]:<kiểu dữ liệu>;
[( Phần khai báo)];
Begin
[<dãy các lệnh>];
<Tên hàm> := <Biểuthức>;
end;
* Sự giống nhau khác nhau
giữa thủ tục và hàm:
Giống nhau:
- Đều chương trình con, cấu
GV: - Chúng ta đã tim hiểu về thủ
tục (Procedure), đây chương
trình con không giá trị trả về.
Hôm nay chúng ta sẽ tìm hiểu về
một loại chương trình con giá tr
trả về đó Hàm (Function). Vậy
Hàm Thủ tục khác nhau như thế
nào? Cách viết sử dụng m
như thế nào?
- Ghi tựa đề bài và phần 2.
GV: Xét bài toán tìm số nhỏ nhất
trong 2 số:
a và b.
-Đặt câu hỏi: Theo các em bài toán
trên cho ta kết quả là gì?
Lắng nghe.
Lắng nghe trả
lời. (Học sinh trả lời
Trang 92
trúc giống một chương trình.
- Đều thể chứa các tham số,
cùng tuân theo các quy định về
khai báo sử dụng các loại tham
số này. (Có thể không tham
số)
Khác nhau:
- Hàm luôn trả về một giá trị
thuộc kiểu xác định thông qua tên
hàm. (các kiểu dữ liệu đơn giản:
integer, real, boolean, char,
string).
- Đầu hàm bắt đầu bằng từ khóa
Function còn thủ tục bắt đầu với
từ khóa Procedure.
- Phải chỉ ra kết quả của hàm
thuộc kiểu dữ liệu nào.
- Trong thân hàm thường có câu
lệnh gán giá trị cho tên hàm.
- Khi viết các bài toán giá trị
luôn thay đổi, giá trị y cần
in Kết quả thì sử dụng hàm kq
lấy thông qua n hàm không
cần tham biến. Nếu viết dạng thủ
tục thì phức tạp phải khai báo
thêm tham biến để lấy giá trị thay
đổi.
* Cách sử dụng hàm:
Việc sử dụng hàm giống như
việc sử dụng các hàm chuẩn.
=> Khi viết lệnh gọi tên hàm
gồm: Tên hàm tham số thực
sự tương ứng với các tham số
hình thức.
VD 1: Rút gọn phân số (SGK)
- Nếu ý tưởng giải bài toán.
- Chương trình (SGK).
- Cách thực hiện i toán theo
chương trình:
VD: nhập tuso=21, mauso=27
=> a = 3, kq =
7
9
.
VD 2: Tìm Min 3 số (SGK).
GV: Vậy thì bài toán trên chúng ta
không thể sử dụng thủ tục mà phải
sử dụng hàm. Các em hãy quan sát
cấu trúc chung của Hàm như sau:
Dùng máy chiếu chiếu cấu trúc
của hàm.
Các em y chỉ ra những điểm
giống nhau khác nhau giữa
Thủ tục và Hàm?
Kiểu dữ liệu là các kiểu nào?
GV: Nhận xét, giải thích chốt
lại.
GV: Các em xem dụ 1 SGK
trang 101 cho biết việc sử dụng
Hàm như thế nào?
GV: Nhận xét, giải thích và chốt lại.
- Học sinh nêu ý tưởng giải bài
toán VD 1>
- Học sinh nêu ý tưởng và thực hiện
bài toán tìm gtrị nhỏ nhất của 3
số a, b, c.
được).
HS: Thảo luận
nhóm trong thời
gian 5 phút một
em trả lời.
- Các nhóm khác
nhận xét bổ
sung.
Tự ghi bài.
Xem ví dụ 1 SGK
trang 101 và thảo luận
nhóm trong 3 phút
Một em trả lời câu
hỏi.
Các nhóm khác
nhận xét bổ
sung.
Tự ghi bài.
Tìm UCLN của tử
số mẫu số, sau
đó lấy tử số mẫu
số chia cho UCLN.
II. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:
+ Ví dụ trên thực hiện chương trình gì?
+ Hãy cho biết kết quả trả về của hàm MIN?
+ Giải thích lời gọi hàm: Min(Min(a,b),c)?
+ Hãy chỉ ra tham số hình thức, tham số thực sự, biến toàn cục và biến cục bộ?
Trang 93
2. Bài tập:
Bài 1: Viết CTC dạng hàm để tính n! = 1.2...n.
Ý tưởng: Vì bài toán này trả về 1 giá trị duy nhất nên ta dùng hàm.
Bài 2: Viết hàm tìm Max của 2 số thực x,y.
Bài 3: Viết hàm XMU(x:Real;n:Byte):Real; để tính giá trị x
n
.
Trang 94
BÀI TẬP VÀ THỰC HÀNH 6 (tiết 43-44)
(Ngày soạn: 20/02/2011; Ngày dạy: ....../......./2011)
A. MỤC ĐÍCH – YÊU CẦU
- Rèn luyện các thao tác xử lí xâu, kĩ năng tạo hiệu ứng chữ chạy trên màn hình.
- Nâng cao kĩ năng viết, sử dụng chương trình con.
- Tổ chức những hoạt động trong phòng y để học sinh có được c kĩ năng cơ bản trong việc
tổ chức và sử dụng chương trình con trong lập trình.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Thuyết trình, vấn đáp.
C. PHƯƠNG TIỆN DẠY HỌC
- Máy chiếu, máy tính, phông chiếu hoặc bảng, phòng thực hành.
E. NỘI DUNG GIẢNG DẠY
I. NỘI DUNG BÀI HỌC
Nội dung ghi bảng
Hoạt động của thầy
Hoạt động của
trò
BÀI TẬP VÀ THỰC HÀNH 6 (tiết 43-44)
Bài tập 1:
a) Tìm hiểu cách xây dựng 2 thủ tục sau:
- Thủ tục CatDan(s1,s2);
- Thủ tục CanGiua(s);
b) Viết chương trình nhập một xâu tự từ
bàn phím đưa xâu đó ra màn hình có dạng
dòng chữ chạy giữa màn hình văn bản
25x80.
Uses crt;
Type str79 = string[79];
Var s1, s2: str79;
stop: boolean;
Procedure catdan(s1:str79; var s2: str79);
begin
s2:=copy(s1,2,length(s1)- 1) + s1(1);
end;
procedure cangiua(var s:str79);
var i, n: integer;
begin
n:= length(s);
n:= (80-n) div 2;
for i:= 1 to n do s:=’ ‘ + s;
end;
begin
clrscr;
write(‘Nhap xau s1:’); readln(s1);
cangiua(s1);
clrscr;
GV: Cho bài tập ( làm tiếp
theo bài tiết trước)
+ Hướng dẫn học sinh đưa ra
giải thuật .
+ Giáo viên hướng dẫn cách
viết .
Hướng dẫn cách khai báo
xâu ký tự:
Cách 1 : gián tiếp .
TYPE
Tên chuoi1 =
string[ spt tối đa ];
Tên chuoi1 =
string;
Var biên1: tên chuoi 1;
Biến 2 : ten chuoi 2;
Cách 2: Trực tiếp .
VAR biến 1: string[spt
tối đa];
Biến 2: string;
GV: cho học sinh giải bài
trên máy.
GV: hướng dẫn học sinh sửa
lỗi.
HS: thực hành
trên máy.
Trang 95
stop:=false;
while not (stop) do
begin
gotoxy(1,12);
write(s1);
delay(500);
catdan(s1,s2);
s1:= s2;
stop:= keypressed;
end;
readln;
end.
c) Bổ sung câu lệnh theo yêu cầu SGK.
Bài tập 2: Thực hành các bài tập dạng thủ
tục dạng hàm các bài tập về nhà đã
giao:
a) Tích và thương 2 số.
b) Diện tích các hình.
c) Tính x
y
.
d) Tính n!
GV: Cho bài tập :
+ Học sinh đưa ra giải thuật
.
+ Giáo viên ớng dẫn học
sinh giải thuật cách viết
chương trình.
HS: thực hành
trên máy.
II. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (15 ph)
Bài 1: Thực hành trên máy chương trình sau để m hiểu về tham số cách thực hiện chương
trình con trên máy tính:
* Bạn hãy in và chạy thử 3 chương trình sau đây:
a. Program Tham-so;
Var a, b: Integer;
(*==========================================*)
Procedure VD-thamso(x,y: interger);
Begin
x:=x+1; y:= y+1;
Writeln(x:5,y:5);
End;
(*==========================================*)
Begin
a:=1; b:=4
VD-thamso(a,b)
Writeln(a:5,b:5)
END.
Kết quả chạy sẽ là:
2 5
1 4
b. Program Tham-so;
Var a,b: interger
(*==========================================*)
Procedure VD-thamso(x:integer; Var y: integer)
Begin
x:= x+1; y:=y+1;
Trang 96
Writeln(x:5, y:5);
End;
(*==========================================*)
Begin {Chương trình chính}
a:=1; b:=4;
VD-thamso(a,b);
Writeln(a:5,b:5);
END.
Kết quả chạy sẽ là:
1 4
1 5
c. Program Tham-so;
Var a, b: integer;
(*==========================================*)
Procedure VD-thamso(Var x, y: integer)
Begin
x:= x+1; y:= y+1;
Writeln (x:5, y:5);
End;
(*==========================================*)
Begin {chương trình chính}
a:= 1; b:=4;
VD-thamso(a,b);
Writeln(a:5,b:5);
END.
Kết quả chạy sẽ là:
2 5
2 5
Bạn hãy giải thích xem kết quả tại sao lại như vậy (phân biệt số tham biến và tham trị).
Giải thích:
a. Cả 2 tham số x y của thủ tục VD_ thamso đều tham tr cho nên khi gọi thủ tục
VD_thamso (a, b) với a=1; b=4 thì x=1; y=4 ,sau đó x,y bị thay đổi giá trị (cộng thêm 1) và trên
màn hình in ra:
2 5
Kết thúc thủ tục này biến a và b không bị thay đổi giá trị vì vậy lệnh Writeln (a:5, b:5); in ra:
1 4
b. Thủ tục VD_ thamso sử dụng tham trị x tham số biến y cho nên khi gọi thủ tục
VD_thamso(a, b) thì cũng giống a. màn hình hiện:
2 5
Tuy nhiên khi kết thúc thủ tục biến a vẫn giữ nguyên giá trị, c
n biến b bị thay đổi nên màn hình
hiện:
1 5
c. Thủ tục VD_thamso sử dụng cả 2 tham số hình thức tham biến cho nên khi gọi thủ tục
VD_thamso (a, b) thì màn hình xuất hiện:
2 5
Kết thúc thủ tục này cả 2 biến a, b đều bị thay đổi cho nên lệnh Writeln(a:5, b:5) in ra màn hình
2 5
Trang 97
KIỂM TRA 15 ph
Viết chương trình chính cho các bài toán sau:
Đề 1
Bài 1 (6 đ): Nhập vào 3 số nguyên dương a, b, c. y kiểm tra xem a, b, c lập thành độ dài 3
cạnh của 1 tam giác không?
Bài 2 (4 đ): Viết chương trình nhập một u tự. In ra màn hình xâu tự trên slần xuất
hiện của từng ký tự chữ cái trong xâu. (Tương tự bài 5 - Ôn tập k 1)
Đề 2
Bài 1 (6 đ): Nhập số nguyên N, kiểm tra N là số chẵn hay số lẻ?
Bài 2 (4 đ): Viết chương trình nhập một u tự. In ra màn hình xâu tự trên slần xuất
hiện của từng ký tự chữ cái trong xâu. (Tương tự bài 5 - Ôn tập kỳ 1)
Đề 3
Bài 1 (6 đ): Nhập số nguyên N, kiểm tra N là số dương hay số âm?
Bài 2 (4 đ): Viết chương trình nhập một xâu ký tự. In ra màn hình xâu ký tự trên và đếm xem có
bao nhiêu ký tự giống ký tự X, X được nhập từ bàn phím. (Tương tự đề kiểm tra kỳ 1)
Đề 4
Bài 1 (6 đ): Viết chương nhập vào 1 số nguyên dương bất kỳ, thông báo số vừa nhập có chia hết
cho 3 và 5 không?
Bài 2 (4 đ): Viết chương trình nhập một xâu ký tự. In ra màn hình xâu ký tự trên và đếm xem có
bao nhiêu ký tự giống ký tự X, X được nhập từ bàn phím. (Tương tự đề kiểm tra kỳ 1)
Trang 98
BÀI TẬP VÀ THỰC HÀNH 7 (tiết 45-46)
(Ngày soạn: 22/02/2011; Ngày dạy: ....../......./2011)
A. MỤC ĐÍCH – YÊU CẦU
1. Kiến thức
+ Nâng cao kỹ năng viết, sử dụng chương trình con.
2. Kĩ năng:
+ Rèn luyện cho học sinh kĩ năng lập trình giải quyết một số bài toán đơn giản.
+ Rèn luyện học sinh được những năng bản trong việc tổ chức sử dụng
chương trình con trong lập trình.
+ Biết cách viết một chương trình có cấu trúc để giải một bài toán trên máy tính.
3. Thái độ:
+ Tích cực trong học tập, hứng thú tiếp thu kiến thức mới.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Thuyết trình, vấn đáp.
C. PHƯƠNG TIỆN DẠY HỌC
- Máy chiếu, máy tính, phông chiếu hoặc bảng, phòng thực hành.
E. NỘI DUNG GIẢNG DẠY
I. NỘI DUNG BÀI HỌC
Nội dung ghi bảng
Hoạt động của thầy
Hoạt động của
trò
BÀI TẬP VÀ THỰC HÀNH 7
(tiết 45-46)
Tiết 1
Câu 1: Tại sao các chương trình con:
Kh_cach, chuvi, dientích, đều hàm
không là thủ tục?
Tại sao các hàm trên trả về cho ta một số
thực?
Câu 2: Tại sao các chương trình con
hienthi, tinhchat, dacanh lại thụ tục
không là hàm?
Ổ định lớp
Để tả hay quản điểm
hay tam giác ta dùng kiểu dữ
liệu nào?
Khi biết toạ độ ba đỉnh của
một tam giác thì ta thể
tìm được những yếu tố nào?
-> Mỗi yếu tố một
chương trình con trong lập
trình -> Theo yêu cầu của đề
bài ta cần y dựng những
chương trình con nào?
Hãy tìm hiểu thảo luận
chương trình câu b trả
lời các câu hỏi sau:
Câu 1: Tại sao các chương
trình con: Kh_cach, chuvi,
dientích, đều m
không là thủ tục?
Tại sao các m trên trả
về cho ta một số thực?
Câu 2: Tại sao các chương
trình con hienthi, tinhchat,
dacanh lại thụ tục mà
Độ dài của
của các cạnh,
chu vi, diện tích,
tính chất của
tam (đều, cân
hay) vuông của
tam giác đó.
Trả lời:
+Procedure
daicanh (var
R:tamgiac, var
a,b,c: real);
+ function chuvi
(varR:tamgiac) :
real ;
+ function
dientich (var
R:tamgiac):real;
+ function
kh_cach (var
P,Q: Diem):real;
+ Procedure
hienthi (var
R:tamgiac);
Trang 99
không là hàm?
Yêu cầu học sinh copy bài
chuẩn bị ở nhà vào máy (hay
giáo viên chuẩn bị sẵn)
tiến hành kiểm tra lỗi
chạy thử.
Quan sát giúp đỡ học sinh
khi gặp khó khăn.
+ Procedure
tinhchat (var
R:tamgiac, var
deu,can,vuong:
boolean);
Tra lời: trả về
giá trị qua tên
hàm.
Do khoảng các
hai điểm thể
số thực ->
chuvi, dientich
cũmg thể
số thực.
Không trả về
một giá trị cụ
thể
Tiết 2
uses crt;
type
Diem=record
x,y: real;
end;
tamgiac=record
A,B,C: Diem;
end;
const eps = 1.0E-6;
var T:tamgiac;
d,cn,v:boolean;
n,i,deu,can,vuong:word;
f,f1:text;
function kh_cach(P,Q:Diem):real;
begin
kh_cach:=sqrt((P.x-Q.x)*(P.x-Q.x)+(P.y-
Q.y)*(P.y-Q.y));
end;
procedure daicanh(var R:tamgiac; var a,b,c:
real);
begin
a:=kh_cach(R.B,R.C);
b:=kh_cach(R.A,R.C);
c:=kh_cach(R.A,R.B);
end;
procedure tinhchat(var R:tamgiac; var
deu,can,vuong:boolean);
Phân tích bài toán:
+ Input là gì?
+ Output là gì?
+ Input Output nằm
đâu?
-> vậy để lập trình giải
bài toán ta cần những
thao tác nào?
Hướng giải quyết bài toán:
+ Bài toán cần những
chương trình con nào?
thể khai thác ở đâu?
+ Các thao tác đọc tệp văn
bản.
+ Các thao tác đếm c loại
tam giác.
+ Các thao tác để ghi kết
quả đạt được.
-> Các thao tác thực hiện
trên chương trình chính(
sử dụng máy chiếu hoặc
ghi lên bảng):
- khởi tạo các biến
đếm.
- Mở tệp tamgiac.dat
để đọc.
Dòng đầu tiên
chứa số N
N dòng tiếp
theo chứ toạ độ
ba đỉnh của tam
giác.
Dòng đầu số
tam giác đều
Dòng thứ hai
số tam giác cân
(không đều).
Dòng thứ ba
số tam giác
vuông.
Trả lời: nằm
trong hai tệp
tên
tamgiac.dat
tamgiac.out.
Cần 3 chương
trình con:
kh_cách,
daicanh,
tinhchat.(sử
dụng các
Trang 100
var a,b,c: real;
begin
deu:=false;
can:=false;
vuong:=false;
daicanh(R,a,b,c);
if (abs(a-b) < eps) and (abs(a-c)<eps)
then
begin
deu:=true;
can:=true;
end
else
if (abs(a-b)<eps) or (abs(a-c)<eps) or
(abs(b-c)<eps) then
can:=true;
if (abs(a*a+b*b-c*c)<eps) or
(abs(a*a+c*c-b*b)<eps)
or(abs(c*c+b*b-a*a)<eps) then
vuong:=true;
end;
begin
deu:=0;
can:=0;
vuong:=0;
assign(f,'tamgiac.dat');
reset(f);
readln(f,n);
assign(f1,'tamgiac.out');
rewrite(f1);
for i:=1 to n do
begin
readln(f,T.A.x,T.A.y,T.B.x,T.B.y,T.C.x,T.C
.y);
tinhchat(T,d,cn,v);
if d then deu:=deu+1
else
begin
if cn then can:=can+1;
if v then vuong:=vuong+1;
end;
writeln(f1,'co: ',deu,'tam giac deu');
writeln(f1,'co: ',can,'tam giac can(khong
deu)');
writeln(f1,'co:',vuong,'tam giacvuong');
writeln(f1);
end;
close(f);
close(f1);
end.
- Đọc số N.
- Từ dòng 1 đến dòng
N thực hiện các thao
tác :
+ Đọc 6 s vào 6 biến
(readln(T.A.x,T.A.y,T.B.x,T
.B.y,T.C.x,T.C.y))
+ Gọi thủ tục tính chất.
+ Kiểm tra điều kiện
đếm.
- Mở tệp tamgiac.out
để ghi kết quả.
Yêu cầu học sinh lập trình
giải bài toán.
Quan sát giải đáp thắc
mắc của học sinh.
Hướng dẫn học sinh chạy
thử kiểm tra chương trình
trên tệp có sẵn bằng cách đổi
tên tệp tamgiac.dat thành
các tên tệp có sẵn.
chương trình
sẵn ở câu
b).
Theo dõi
Thực hành trên
máy
Chạy thử
kiểm tra lỗi.
Kiểm tra
chương trình
với các tệp
thông ssẵn
đối chiểu kết
quả.
Trang 101
II. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (10 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:
- Thủ tục, hàm , tham sgiá trị, tham số biến, tham số thực sự, biến tòan cục, biến cục bộ.
- Tìm hiểu một số chương trình con liên quan đến tam giác.
2. Bài tập:
1. Viết chương trình nhập vào số tự nhiên N rồi thông báo lên màn hình số đó phải số
nguyên tố hay không.
2. Viết chương trình nhập vào số nguyên N. In ra màn hình tất cả các ước số của N.
For i:=1 To N Do
If N MOD i=0 Then Write(i:5);
3. Viết chương trình nhập y N số nguyên. nh tổng bình phương của các số dương
tổng bình phương của các số âm.
4. Với giá trị N được nhập từ bàn phím, hãy thực hiện các công việc sau:
a) Nhập N số nguyên và tính tổng giá trị các số âm, tổng giá trị các số dương.
b) Tìm in ra giá trị, vị trí của số lớn nhất, số nhỏ nhất. {trường hợp nhiều GTNN
GTLN giống nhau thì in ra tất cả các vị trí đó: dùng vòng FOR i và If A[i] = GTLN để in
ra tất cả các vị trí của GTLN}
c) Sắp xếp dãy giảm dần.
Trang 102
BÀI 19: THƯ VIỆN CHƯƠNG TRÌNH CON CHUẨN (tiết 48-49)
(Ngày soạn: 03/03/2011; Ngày dạy: ....../......./2011)
A. MỤC TIÊU:
1. Kiến thức:
- Học sinh biết được một số chương trình con chuẩn.
2. Kỹ năng:
- Bước đầu sử dụng được các thư viện đó trong lập trình.
- Khởi động chế độ đồ họa.
- Sử dụng được các thủ tục vẽ điểm, đường, hình tròn, hình ellipse, hình chữ nhật.
3. Thái độ:
- Học sinh chú ý học tập.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Giảng giải, thuyết trình và mô phỏng.
C. KIẾN THỨC TRỌNG TÂM
- Tìm hiểu các thư viện: CRT, GRAPH, các thủ tục vẽ điểm, đường thẳng và các hình cơ bản.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng, máy chiếu đa năng.
E. NỘI DUNG GIẢNG DẠY
I. HOẠT ĐỘNG I: Tìm hiểu thư viện CRT (tiết 1).
1. Mục tiêu:
- Học sinh biết được một số chương trình con chuẩn trong thư viện.
2. Nội dung:
- Thư viện CRT chứa các thủ tục liên quan đến việc quản, khai thác màn hình, bàn phím.
VD: + Thủ tục Clrscr: xóa màn hình.
+ Textcolor(c): đặt màu chữ cho màn hình, trong đó c là hằng hoặc biến có giá trị
nguyên không âm để xác định màu.
+ Thủ tục Texbackground(c): đặt màu cho nền màn hình. (Giá trị màu trong SGK).
+ Thủ tục Gotoxy(x,y): đưa con trỏ đến vị trí cột x dòng y của màn hình văn bản.
3. Tiến hành dạy học:
Hoạt động của thầy
Hoạt động của trò
1. Tìm hiểu thủ tục Clrscr:
- Yêu cầu học sinh nghiên cứu SGK, kể tên các
chương trình con trong thư viện CRT.
- Cho HS tham khảo chương trình sau:
Begin
Clrscr;
Readln;
End.
- Biên dịch chương trình. Hỏi? Tại sao lại xuất
hiện lỗi? khắc phục như thế nào?
- Thêm Uses CRT; o đầu chương trình thực
hiện chương trình để HS thấy được kết quả, chú ý
cho HS ghi nhớ màn hình trước lúc thực hiện
chương trình.
- Hỏi: Chức năng của thủ tục Clrscr;
1. Tham khảo SGK:
- Clrscr, textcolor, textbackground,
gotoxy.
- Quan sát chương trình.
- sử dụng thủ tục nhưng chưa sử
dụng thư viện CRT.
- Thêm lệnh Uses CRT;
- Quan sát giáo viên thực hiện chương
trình.
- Xóa màn hình.
Trang 103
2. Tìm hiểu thủ tục Textcolor.
- Chiếu chương trình VD sau:
Uses CRT;
Begin
Write(‘chua dat mau chu’);
Textcolor(4);
Write(‘da dat mau chu do’);
Readln
End.
- Thực hiện chương trình để HS thấy kết quả.
- Hỏi: Chức năng của lệnh Textcolor(4);
3. Tìm hiểu thủ tục Texbackground.
- chiếu chương trình VD sau:
Uses CRT;
Begin
Textbackground(1);
Write(‘da dat mau nen’);
Readln
End.
- Thực hiệc CT để HS thấy được kết quả.
- Hỏi: Chức năng của lệnh Texbackground(1).
4. Tìm hiểu thủ tục Gotoxy.
- Chiếu chương trình VD sau:
Uses CRT;
Begin
Write(‘con tro dang o cot 10 dong 20’);
Gotoxy(10,20);
Readln
End.
- Thực hiện CT để HS thấy kết quả.
- Hỏi: Chức năng của lệnh Gotoxy(10,20);
- Quan sát chương trình.
- HS quan sát chương trình.
- Đặt màu chữ thành màu chữ đỏ.
- HS quan sát chương trình.
- Đặt màu nền thành màu xanh da trời.
- Quan sát chương trình.
- Quan sát kết quả.
- Đưa con trỏ về vị trí cột 10, dòng 20.
II. HOẠT ĐỘNG II: Tìm hiểu thư viện Graph (tiết 1).
1. Mục tiêu:
- Học sinh biết được cách khởi động chế độ đồ họa.
2. Nội dung:
- Thư viện Graph chứa các chương trình phục vụ khai thác khả năng đồ họa của MT ở mức
độ thông dụng như vẽ điểm, các đường, tô màu,…
- Các thiết bị và chương trình hỗ trợ đồ họa:
+ Có hai chế độ màn hình: đồ họa và văn bản.
+ Bảng mạch điều khiển màn hình thiết bị đảm bảo tương tác giữa bộ xử màn
hình để thực hiện các chế độ phân giải và màu sắc.
+ TP Pascal cung cấp các chương trình điều khiển (có phần mở rộng BGI) tương ứng
với các loại card đồ họa. Khi khởi động chế độ đồ họa cần chỉ ra đường dẫn đến chương trình
này.
+ Tọa độ màn nh được đánh stừ 0. Cột được đánh số từ trái qua phải, dòng được
đánh số từ trên xuống dưới. Giá trị lớn nhất của tọa độ dòng tọa đcột được gọi độ phân
giải của màn hình.
Trang 104
+ Để thực hiện được các chức ng đhọa sử dụng các thủ tục m trong thư
viện Graph.
- Khởi động chế độ đồ họa: Initgraph(dr,md:integer;pth:string);
dr : Là số hiệu của trình điều khiển BGI .
md : Là số hiệu của độ phân giải.
pth : Là đường dẫn tới các tệp BGI: Closegraph;
- Kết thúc chế độ đồ họa về chế độ văn bản:
3. Tiến hành dạy học:
Hoạt động của thầy
Hoạt động của trò
1. Yêu cầu HS nghiên cứu SGK để trả lời các
câu hỏi:
- Hỏi: Các dạng dữ liệu nào thể được hiển thị
trên màn hình?
- Hỏi: Nhiệm vụ chính của Card màn hình?
- Hỏi: Khi nói màn hình đphân giải 640x480
là nói đến điều gì?
2. Đưa ra cấu trúc chung của thủ tục khởi động
đồ họa.
* Initgraph(dr, md : integer ; pth : string) ;
- Giải thích các thông số trong thủ tục cho HS.
- Cho HS thấy một VD khởi động đồ họa.
3. Giới thiệu thtục trở về chế độ đồ văn bản
Closegraph;
- Yêu cầu khởi động chế độ đồ họa chuyển về
chế độ văn bản.
1. Tham khảo SGK để trả lời.
- Văn bản và hình ảnh.
- Làm cầu nối giữa CPU màn hình
khi thể hiện thông tin.
- nói đến màn hình 640 dòng
480 cột.
2. Quan sát theo dõi dẫn dắt của giáo
viên.
- Quan sát giáo viên thực hiện.
3. Quan sát so sánh giữa hai chế độ
văn bản và đồ họa.
- Thay phiên nhau thực hiện việc chuyển
đổi giữa hai chế độ văn bản và đồ họa.
III. HOẠT ĐỘNG III: Tìm hiểu các thủ tục vẽ điểm, đường và các hình cơ bản (tiết 2).
1. Mục tiêu:
- Học sinh biết được các thủ tục vẽ điểm, đường các hình bản, biết các thủ tục, c
tham số và các chức năng của từng thủ tục.
2. Nội dung:
- Trước khi vẽ, ta đặt màu cho nét vẽ: Setcolor(word);
- Vẽ điểm: Putpixel(x,y:integer; color:word);
- Vẽ đường thẳng: Line(x1,y1,x2,y2:integer); (x1,y1,x2,y2: các tọa độ điểm đầu-cuối)
Lineto(x,y:integer); (vẽ từ vị trí con trỏ đến điểm có tọa độ x,y).
Linerel(dx,dy:integer); (tọa độ hiện tại cộng với gia số dx,dy)
- Vẽ hình tròn: Circle(x,y:integer; r:word);
- Vẽ hình chữ nhật: Rectang(x1,y1,x2,y2:integer);
- Vẽ hình Elip: Ellipse(x,y:integer; stangle,endangle,xr,yr:word);
3. Tiến hành dạy học:
Hoạt động của thầy
Hoạt động của trò
1. Tìm hiểu thủ tục Setcolor.
- Cấu trúc chung của thủ tục:
Setcolor(m:word);
- Chương trình VD:
1. Quan sát cấu trúc chung suy
nghĩ để trả lời câu hỏi.
- Quan sát chương trình.
Trang 105
Uses graph
Begin
Drive:=0;
Initgraph(drive,mode,‘c:\Tp\BGI’);
Circle(12,40,100);
Setcolor(4);
Circle(12,40,200);
Readln;
End.
- Thực hiện CT để HS thấy được kết quả.
- Hỏi: Chức năng của thủ tục Setcolor.
2. Tìm hiểu thủ tục Putpixel
- Cấu trúc chung của thủ tục:
Putpixel(x,y:integer;color:word);
- Chiếu chương trình VD:
Uses graph;
var driver,mode:integer;
Begin
Driver:=0;
Initgraph(driver, mode, 'D:\tp\BGI');
Putpixel(100,40,14);
readln
End.
- Thực hiện chương trình để HS thấy kết quả.
- Hỏi: Chức năng của thủ tục Putpixel.
3. Tìm hiểu thủ tục Line.
- Cấu trúc chung của thủ tục Line:
Line(x1,y1,x2,y2:integer);
- Chiếu chương trình VD nhưng thay lệnh
Putpixel(12,40,15); bằng lệnh Line(1,1,20,20);
- Thực hiện CT để HS thấy được kết quả.
- Hỏi: Chức năng của thủ tục Line.
4. Tìm hiểu thủ tục Lineto.
- Cấu trúc chung của thủ tục:
Lineto(x,y:integer);
- Chiếu chương trình VD trên nhưng thay lệnh
Putpixel(12,40,15); bằng lệnh Lineto(20,20);
- Thực hiện CT để HS thấy được kết quả.
- Hỏi: Chức năng của thủ tục Lineto.
5. Tìm hiểu thủ tục Linerel.
- Cấu trúc chung của thủ tục:
Linerel(dx,dy:integer);
- Hỏi: Chức năng của thủ tục Linerel.
6. Tìm hiểu thủ tục Circle, Ellipse,
Rectangle .
- Cấu trúc chung của thủ tục:
- Quan sát kết quả của chương trình.
- Vẽ một điểm màu Color trên màn
hình tại tọa độ (x,y).
2. Quan sát cấu trúc chung suy
nghĩ để trả lời câu hỏi.
- Quan sát chương trình.
- Quan sát kết quả chương trình.
- Vẽ một đường thẳng từ điểm tọa độ
(x1,y1) đến điểm có tọa độ (x2,y2).
3. Quan sát cấu trúc chung suy
nghĩ để trả lời câu hỏi.
- Quan sát chương trình.
- Quan sát kết quả chương trình.
- Vẽ một đoạn thẳng từ điểm hiện tại đến
điểm có tọa độ (x,y).
4. Quan sát cấu trúc chung suy
nghĩ để trả lời câu hỏi.
- Vẽ đoạn thẳng nối điểm hiện tại với
điểm có tọa độ bằng tọa độ điểm hiện tại
cộng với dx, dy.
5. Quan sát cấu trúc chung suy
nghĩ để trả lời câu hỏi.
- Quan sát chương trình.
- Quan sát kết quả chương trình.
+ Circle : Vẽ một đường tròn m tại
(x,y) và bán kính r.
+ Ellipse : Vẽ cung của Ellipse tâm
tại điểm x,y với bán kính trục xr, yr, từ
góc khởi đầu stangle đến góc kết thúc
endangle .
6. Quan sát cấu trúc chung suy
nghĩ để trả lời câu hỏi.
Trang 106
* Circle(x,y:integer;r:word);
* Ellipse(x,y:integer; stangle, endangle,
xr,yr:word);
* Rectangle(x1,y1,x2,y2:integer);
- Chương trình VD:
Uses graph;
var driver,mode:integer;
Begin
Driver:=0;
Initgraph(driver, mode, 'D:\tp\BGI');
setcolor(86);
Circle(40,40,30);
setcolor(14);
Ellipse(500,200,50,120,50,100);
setcolor(2);
Rectangle(100,100,200,200);
readln
End.
- Quan sát chương trình.
- Quan sát kết quả chương trình.
- Setcolor (m:word) : đặt màu cho nét vẽ
với màu có số hiệu m.
IV. HOẠT ĐỘNG IV: Tìm hiểu một số thư viện khác (tiết 2).
1. Mục tiêu:
- Học sinh biết được tên và chức năng của thư viện: System, Dos, Printer.
2. Nội dung:
- Thư viện System chứa các hàm cấp các thủ tục vào/ra các chương trình đều
dùng tới.
- Thư viện DOS chứa các thủ tục cho phép thực hiện trực tiếp các lệnh như tạo thư mục,
thiết lập ngày giờ hệ thống.
- Thư viện Printer cung cấp các thủ tục làm việc với máy in.
3. Tiến hành dạy học:
Hoạt động của thầy
Hoạt động của trò
1. Yêu cầu HS nghiên cứu SGK, u tên các
thư viện.
2. Yêu cầu HS nêu chức năng của mỗi thư
viện.
1. Các thư viện:System, Dos, Printer
2. Chức năng mỗi thư viện:
- System : Chứa các hàm và thủ tục vào/ra
sơ cấp.
- Dos : Chứa các thủ tục như tạo thư mục,
đóng mở file,…
- Printer : Chức các thủ tục liên quan đến
máy in.
V. HOẠT ĐỘNG V: Rèn luyện kỹ năng lập trình (Thời gian bổ sung).
1. Mục tiêu:
- Bước đầu HS sử dụng được các thủ tục của thư viện Graph để viết chương trình vẽ một số
hình cơ bản.
2. Nội dung: Viết chương trình vẽ 20 hình tròn lồng nhau có tọa độ tâm là điểm chính giữa
của màn hình, các hình có bán kính cách nhau 5 điểm ảnh.
Trang 107
3. Tiến hành dạy học:
Hỏi: Chức năng của thủ tụcạt động của thầy
Hỏi: Chức năng của thủ tụcạt động
của trò
1. Giới thiệu nội dung yêu cầu lên bảng.
Định hướng cách giải quyết vấn đề cho HS.
- Thủ tục để vẽ được một hình tròn m điểm
chính giữa màn hình.
- Cần bao nhiêu câu lệnh như vậy, dùng cấu trúc
nào để điều khiển.
2. Chia lớp làm 3 nhóm, một nhóm viết chương
trình trên máy, 2 nhóm viết lên bìa trong.
- Thu phiếu trả lời. Chiếu lên bảng gọi HS nhóm
khác lên nhận xét đánh giá. Sửa chương trình hoàn
chỉnh cho học sinh viết trên máy.
3. Thực hiện chương trình trên máy để HS thấy
kết quả.
1. Quan sát yêu cầu của GV:
Circle(x,y : integer ; r : word);
- Cần 20 câu lệnh, n dùng vòng For để
chương trình ngắn gọn.
2. Thảo luận theo nhóm để viết
chương trình lên giấy bìa trong.
- Báo cáo kết quả viết được.
- Nhận xét, đánh giá và bổ sung thiếu sót
của các nhóm khác.
3. Quan sát kết quả trên màn hình.
VI. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:
+ Thư viện chương trình con cung cấp những chương trình con chuẩn nhằm mở rộng khả
năng ứng dụng.
+ Khởi động chế độ đồ họa. Chuyển từ chế độ màn hình đồ họa sang chế độ màn hình văn
bản.
+ Thủ tục vẽ điểm, đường và các hình cơ bản.
2. Bài tập:
* Đọc thêm bài đọc thêm 4 SGK, Trang 118.
Trang 108
BÀI TẬP, ÔN TẬP HỌC KỲ II (tiết 50)
(Ngày soạn: 20/02/2010; Ngày dạy: ....../......./2010)
A. MỤC ĐÍCH – YÊU CẦU
1. Kiến thức
+ Tiếp tục củng cố cho học sinh những kiến thức đã học.
2. Kĩ năng:
+ Rèn luyện cho học sinh kĩ năng lập trình giải quyết một số bài toán dạng CT con.
3. Thái độ:
+ Tích cực trong học tập, hứng thú tiếp thu kiến thức mới.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Thuyết trình, vấn đáp.
E. NỘI DUNG ÔN TẬP.
Viết chương trình dạng CTC cho các bài tập sau: (Mỗi BT là một chương trình chính)
Chú ý: Khi viết chương trình con dạng hàm, giá trị trả về chỉ cần gán khi phép tính giá trị được
thực hiện nhiều lần. VD chương trình con tính giai thừa….
1. Viết một chương trình bằng cách thực hiện lần lượt các công việc sau:
a) Lập thủ tục nhập ba số thực dương a, b, c từ bàn phím.
b) Lập thủ tục kiểm tra xem ba số trên có lập thành ba cạnh của tam giác hay không.
c) Viết thủ tục tính diện tích tam giác theo công thức:
1
sin
2
S ab C
d) Viết thủ tục tính các trung tuyến của tam giác:
2. Nhập n, m các snguyên dương, liệt các số nguyên tố nằm trong khoảng từ n đến
m. (n < m).
3. Viết chương trình con sử dụng hàm tính: giai thừa của a và a
n
.
var n:longint;
5. Tối giản phân số a/b.
6. Nhập tử mẫu số của 2 phân s(a, b) (c, d). Thực hiện phép toán @ (có thể +, -,
*, /) và in kết quả là phân số tối giản:
@
a c p
b d q
7. Nhập n phần tử là các số nguyên dương và số k và thực hiện các công việc sau:
a) Đếm xem trong dãy có bao nhiêu số bằng k?
b) Đếm xem trong y có bao nhiêu số lớn hơn k?
c) Đếm xem trong dãy có bao nhiêu số nhỏ hơn k?
8. Nhập dãy số thực a. Nhập số x. Sắp xếp lại dãy a thành dãy giảm.
9. Nhập dãy số thực a. Xét xem có thể sắp xếp dãy a thành dãy cấp số cộng không?
const max=100;
type mang=array[1..max] of real;
var i,n,k: integer;
a:mang;
x:real;
function ktsc:boolean;
var i:integer;
d:real;
begin
ktsc:=false;
d:=a[2]-a[1];
Trang 109
for i:=1 to n-1 do
if a[i+1]-a[i]<>d then exit;
ktsc:=true;
end;
begin
write('nhap so phan tu n= '); readln(n);
writeln('nhap gia tri cho mang:');
for i:=1 to n do
begin
write('a[',i,']= ');
readln(a[i]);
end;
for i:=1 to n-1 do
for k:=i+1 to n do
if a[i]>a[k] then
begin
x:=a[i];
a[i]:=a[k];
a[k]:=x;
end;
if ktsc then writeln('co the sap xep thanh cap so cong')
else writeln('khong the sap xep thanh cap so cong');
readln
end.
10. Viết chương trình nhập một xâu ký tự. Thực hiện xóa các ký tự là chữ số.
VAR s:string;
FUNCTION posnum(s:string):byte;
var ok:boolean;
i:integer;
begin
ok:=false;
i:=1;
while (i<=length(s))and(not ok) do
if s[i] in ['0'..'9'] then ok:=true
else i:=i+1;
if ok then posnum := i else posnum:=0;
end;
BEGIN
writeln('nhap xau s: ');readln(s);
while posnum(s)<>0 do delete(s,posnum(s),1);
writeln('xau moi la: ',s);
readln
END.
11. Nhập xâu tự tách xâu đó thành 2 xâu với vị trí số lượng tự cần tách được
nhập từ bàn phím: VD: Nhập xâu s1 = “HOANG NGOC QUE” , cần tách 4 tự lưu tại
xâu s2 tại vị trí thứ 7 => kq: s1= ‘HOANG QUE’ và s2 = “NGOC.
var s1,s2:string;
pos, num:integer;
procedure tachxau;
begin
Trang 110
write('nhap vi tri can tach: '); readln(pos);
write('nhap so ky tu can tach: '); readln(num);
s2:=copy(s1,pos,num);
delete(s1,pos,num);
writeln('xau s1= ',s1);
writeln('xau s2= ',s2);
end;
begin
write('nhap xau s1: '); readln(s1);
tachxau;
readln
end.
12. Nhập một xâu ký tự và thực hiện:
a) Xóa tất cả các tự trắng thừa trong một xâu tự: (kí tự trắng thừa tự trắng xuất
hiện ở đầu xâu, cuối xâu và có từ 2 KT trắng trở lên ở giữa các từ).
b) Từ xâu đã chuẩn hóa ở câu a, hãy đếm xem trong xâu có bao nhiêu từ.
13. Giả sử có tệp VB.txt trên ổ đĩa D. Thực hiện các công việc sau:
a) Nhập 1 xâu kí tự :
b) Đếm số kí tự là chữ số, chữ cái trong xâu.
c) In ra xâu chữ hoa.
14. Giả sử có tệp VB.txt trên ổ đĩa D. Thực hiện các công việc sau:
a) Nhập và ghi xâu văn bản vào tệp VB.txt.
b) Đọc và in ra xâu văn bản đó.
c) Nhập một kí tự K (K là kí tự bất kỳ), đếm xem có bao nhiêu kí tự K xuất hiện trong xâu.
VAR f:text;
s:string;
PROCEDURE NHAP;
begin
assign(f,'D:\vb.txt'); rewrite(f);
write('Nhap xau KT: '); readln(s);
writeln(f,s);
close(f);
end;
PROCEDURE DOC_IN;
begin
assign(f,'d:\vb.txt'); reset(f);
while not eof(f) do
begin
readln(f,s);
writeln('xau trong tep la: ',s);
end;
close(f);
end;
PROCEDURE DEMK;
var ik,demk:integer;
k:char;
begin
assign(f,'d:\vb.txt'); reset(f);
write('nhap k= '); readln(k);
Trang 111
demk:=0;
for ik:=1 to length(s) do
if s[ik] = k then inc(demk);
writeln('co ',demk,' phan tu la ',k);
close(f);
end;
PROCEDURE DEMDONG;
var dong: integer;
id: byte;
begin
Assign(f,'d:\vb.txt'); reset(f);
dong:=0;
while not EOF(f) do
begin
readln(f,s);
inc(dong);
end;
writeln('so dong ',dong:2);
close(f);
end;
BEGIN
clrscr;
nhap;
doc_in;
demk;
demdong;
readln
END.
15. Nhà trường cần quản một lớp học gồm N học sinh. Hãy viết chương trình kiểu bản
ghi thực hiện các công việc sau:
a) Nhập thông tin học sinh: số thứ tự, họ tên, giới tính, quê quán, điểm toán, điểm văn.
b) Xếp loại và in ra màn hình kết quả của bảng điểm theo loại:
Loại “GIOI” nếu điểm TB ≥ 8.0.
Loại “KHA” nếu điểm 6.5 ≤ TB < 8.0
Loại “TB” nếu điểm 5.0 ≤ TB < 6.5
Trường hợp còn lại là loại yếu.
16. Nhà trường cần in danh sách một lớp học gồm N học sinh. Hãy viết chương trình kiểu
bản ghi thực hiện các công việc sau:
a) Nhập thông tin học sinh: số thứ tự, họ tên, điểm toán, điểm lý, điểm tin.
b) In danh sách vừa nhập theo mẫu sau:
17. Viết chương trình kiểu bản ghi để quản lý một thư viện sách theo các yêu cầu sau:
Trang 112
a) Nhập thông tin cần quản gồm: Tên sách (tens), tên nxuất bản (nxb), năm xuất bản
(nxb), giá tiền (gia), số lượng (sl).
b) Đưa ra danh sách tên sách, năm XB các cuốn sách của cùng 1 nhà xuất bản. NXB nhập
từ bàn phím.
c) Tính tổng số tiền sách trong thư viện.
| 1/112

Preview text:

Tiết 1_PPCT Ngày soạn: Ngày dạy:
CHƯƠNG I: MỘT SỐ KHÁI NIỆM VỀ LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH
BÀI 1: KHÁI NIỆM LẬP TRÌNH VÀ NGÔN NGỮ LẬP TRÌNH
A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích:
- Ôn lại kiến thức đã học lớp 10 về thuật toán.
- Giới thiệu các khái niệm về chương trình nguồn, chương trình dịch và chương trình đích.
- Giới thiệu một số ngôn ngữ lập trình thông dụng. 2. Yêu cầu:
- Học sinh nắm được các khái niệm cơ bản về chương trình nguồn, chương trình dịch và chương trình đích.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Lấy học sinh làm trung tâm, đặt vấn đề cho các trường hợp sử dụng thực tế từ đó giúp các
em nắm bắt được vấn đề tốt hơn.
- Đặt câu hỏi gợi mở giúp học sinh hiểu được vấn đề.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- Các khái niệm về chương trình nguồn, chương trình dịch và chương trình đích.
- Các khái niệm thông dịch và biên dịch.
D. PHƯƠNG TIỆN DẠY HỌC
- Sử dụng máy Projector.
- Bảng đen, phấn trắng.
E. NỘI DUNG GIẢNG DẠY
I. ĐẶT VẤN ĐỀ CHO BÀI GIẢNG ( 5ph )
Thông tin được đưa vào máy tính, máy tính xử lý và cho ta kết quả như mong muốn. Vậy
nhờ vào đâu mà máy tính có thể xử lý được các thông tin đó? Để máy tính có thể xử lý thông tin
thì nó phải được lập trình. Bài học hôm nay ta sẽ tìm hiểu ngôn ngữ lập trình là gì và nó có mấy
loại ?II. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng
Hoạt động của GV gian của HS
BÀI 1: KHÁI NIỆM LẬP TRÌNH VÀ - Ghi bài học lên bảng. Học sinh
NGÔN NGỮ LẬP TRÌNH
- Trước khi tìm hiểu về ngôn ngữ theo dỏi, 10
lập trình, ta ôn lại phần thuật ghi chép và 1. Thuật toán: ph trả lời.
Có hai dạng để diễn tả thuật toán: toán.
- Em nào nhắc lại khái niệm về Liệt kê. thuật toán  ? Dùng sơ đồ khối.
- Có mấy dạng để diễn tả thuật toán?
VD: so sánh a và b
- Em hãy diễn tả thuật toán so Trang 1
sánh 2 số a và b theo hai dạng trên?
- Như vậy muốn máy tính hiểu và
xử lý thông tin chính xác mà ta Học sinh
nhập vào thì con người cần phải theo dỏi, lập trình. ghi chép và
- Mọi bài toán có thuật toán đều trả lời.
có thể giải được trên máy tính
điện tử, nó bao gồm các bước nào mà ta đã học?
Để giải quyết một bài toán ta thực - Bước cuối cùng đó là lập trình, Học sinh
hiện các bước sau:
lập trình là gì? em nào có thể nêu theo dỏi, 1) Xác định bài toán.
khái niệm về lập trình? 2) Diễn tả thuật toán.
- Như sơ đồ diễn tả thuật toán ghi chép và trả lời. 3) Viết chương trình.
trên, CTDL là cách lưu trữ giá trị
4) Chạy và kiểm tra chương trình. a và b. Còn câu lệnh để mô tả 10
thuật toán trong Pascal như sau: ph
Khái niệm lập trình: Lập trình là
sử dụng CTDL và các câu lệnh của If a > b then writeln(‘max=’,a)
ngôn ngữ lập trình cụ thể để mô tả Else writeln(‘max =’,b);
dữ liệu và diễn đạt các thao tác
- Chương trình viết bằng ngôn thuật toán. ngữ
pascal trên là ngôn ngữ bậc
2. Quá trình chuyển đổi chương cao chính là chương trình nguồn.
làm sao để máy tính hiểu và xử lý trình được
thì nó phải thông qua một CT nguồn CT dịch CT đích chương
trình dịch để chuyển sang
chương trình đích là ngôn ngữ * CT nguồn:
máy. ta có quá trình chuyển đổi
- Là CT viết trên ngôn ngữ bậc cao. như sau:
- Được nhiều người sử dụng làm công cụ lập trình.
- Em hãy nêu đặc điểm của CT nguồn? Học sinh
- Thực hiện được trên nhiều loại theo dỏi, máy tính khác nhau. ghi chép và * CT dịch: trả lời.
- Có chức năng chuyển đổi CT viết bằng ngôn ngữ bậc cao
- Em hãy nêu chức năng của CT thành
chương trình ngôn ngữ máy. dịch ? Có hai loại 15 Thông dịch ph
(Interpreter): Là quá
trình dịch lặp lại nhiều lần cho đến
khi kết thúc chương trình.
- Chương trình dịch có hai loại Các bước lặp:
thông dịch và biên dịch. Các em Học sinh xem VD trong SGK. 1)
Kiểm tra tính đúng đắn của
câu lệnh tiếp theo trong chương theo dỏi, - Thông dịch là gì? trình nguồn. ghi chép và
- Hiện nay có một số ngôn ngữ
lập trình thông dụng như: trả lời. 2)
Chuyển đổi câu lệnh đó
thành một hay nhiều câu lệnh
tương ứng trong ngôn ngữ máy. - Biên dịch là gì? 3)
Thực hiện các câu lệnh vừa Trang 2 chuyển đổi được.
- Nêu đặc điểm của thông dịch và
Biên dịch (compiler): Là quá trình của biên dịch.
dịch lặp chỉ một lần.
* Pascal, Turbo C++ là những Các bước lặp:
ngôn ngữ ứng dụng trong nhà
1) Duyệt, phát hiện lỗi, kiểm tra trường phục vụ học lập trình cơ
tính đùng đắn của các câu lệnh sở. trong CT nguồn.
* C#, C++ lập trình ứng dụng.
2) Dịch toàn bộ CT nguồn thành * ASP, ASP.net, J#, JAVA thiết
một CT đích và có thể lưu trữ kế Website... Học sinh
để sử dụng lại khi cần thiết. theo dỏi, ghi chép và Chú ý: trả lời.
+ Thông dịch không có chương
trình đích để lưu trữ.
+ Biên dịch dịch có thể lưu trữ để sử dụng về sau.
* CT đích: là ngôn ngữ máy.
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:. - Khái niệm lập trình. -
Khái niệm thông dịch và biên dịch.
2. Bài tập về nhà:
1. Khái niệm lập trình. Khái niệm thông dịch và biên dịch.
2. Những phát biểu nào dưới đây là sai?
A. Output của mọi chương trình đều là chương trình trên ngôn ngữ máy.
B. Chương trình viết bằng hợp ngữ không phải là Input hay Output của bất cứ chương trình dịch nào.
C. Để biên soạn một chương trình trên ngôn ngữ bậc cao có thể sử dụng nhiều hệ soạn thảo văn bản khác nhau.
D. Chương trình dịch là thành phần chính của một ngôn ngữ lập trình bậc cao.
3. Phát biểu nào dưới đây là đúng:Chương trình là dãy các lệnh được tổ chức theo các quy
tắc được xác định bởi một ngôn ngữ lập trình cụ thể.
A. Trong chế độ thông dịch mỗi câu lệnh của chương trình nguồn được dịch thành một
câu lệnh của chương trình đích.
B. Mọi bài toán đều có chương trình để giải trên máy tính.
C. Nếu chương trình nguồn có lỗi cú pháp thì chương trình đích cũng có lỗi cú pháp. Trang 3 Tiết 2_PPCT Ngày soạn: Ngày dạy:
BÀI 2: CÁC THÀNH PHẦN CỦA NGÔN NGỮ LẬP TRÌNH
A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích:
- Giúp học sinh hiểu được 3 thành phần cơ bản của ngôn ngữ lập trình: Bảng chữ cái, cú pháp và ngữ nghĩa.
- Giới thiệu các khái niệm về tên, tên chuẩn, tên dành riêng. 2. Yêu cầu:
- Học sinh chú ý học tập, tích cực xây dựng bài học.
- Học sinh phải ghi nhớ các quy tắc đặt tên, hằng và biến trong ngôn ngữ lập trình.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- 3 thành phần cơ bản của ngôn ngữ lập trình: bảng chữ cái, cú pháp và ngữ nghĩa.
- Các quy tắc đặt tên, khái niệm về biến.
D. PHƯƠNG TIỆN DẠY HỌC
- Hình ảnh minh họa.
- Bảng đen, phấn trắng.
E. KIỂM TRA BÀI CŨ ( 5ph ).
1. Nêu khái niệm về thông dịch và biên dịch, hai thành phần này trong chươg trình dịch khác nhau ở chỗ nào?
2. Nêu các bước thực hiện của thông dịch và biên dịch.
3. F. NỘI DUNG GIẢNG DẠY
I. ĐẶT VẤN ĐỀ CHO BÀI GIẢNG (3ph)
Như các em đã biết, con người dùng hai loại ngôn ngữ đó là ngôn ngữ nói và ngôn ngữ viết.
Để máy tính có thể làm việc được và giao tiếp được thì nó cũng cần có ngôn ngữ, đó là ngôn
ngữ lập trình. Ngôn ngữ lập trình được soạn thảo trên các môi trường lập trình tương ứng như
ngô ngữ Pascal được soạn thảo trên môi trường Turbo Pascal,... nhằm giải quyết các bài toán do
con người yêu cầu. Vậy ngôn ngữ lập trình có những thành phần nào và nó có quy tắc không.
Bài học hôm nay thầy sẽ giới thiệu cho các em hiểu rõ hơn về vấn đề này. II. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng
Hoạt động của GV gian của HS Trang 4 - Ghi bài học lên bảng.
BÀI 2: CÁC THÀNH PHẦN CỦA NGÔN
- Em nào cho biết ngôn ngữ Học sinh NGỮ LẬP TRÌNH
lập trình có mấy thành phần, theo dỏi, 12
những thành phần đó là gì? ghi chép và
1. Các thành phần cơ bản ph trả lời.
Có 3 thành phần:
- Các ký tự được sử dụng Chữ cái. 
trong ngôn ngữ để viết Cú pháp. chương trình.  Ngữ nghĩa.
- Nhìn vào bảng chữ cái các
em có thấy khác với chữ cái a) Chữ cái:
Là tập các ký tự được dùng trong ngôn ngữ tự nhiên
để viết chương trình. không?
- Ký tự là chữ cái: ‘a’...’z’,‘A’...‘Z’ Học sinh
- Số thập phân: 0, 1, ..., 8, 9.
- Trong ngôn ngữ tự nhiên khi theo dỏi,
- Các ký tự đặc biệt: #, $, -, +, ...
sử dụng bảng chữ cái cũng ghi chép và Chú ý:
phải có cú pháp. VD về các trả lời.
- Bảng chữ cái trong các ngôn ngữ khác thành phần trong câu có chủ
nhau có thể khác nhau một số ký tự: ngữ, vị ngữ ...
VD: Pascal sử dụng dấu ‘’
- Trong ngôn ngữ lập trình
C++ sử dụng dấu “”, \, và !
cũng vậy cũng cần phải có cú pháp.
b) Cú pháp: Là bộ quy tắc để viết chương trình.
- Em nào cho thầy biết cú Học sinh
pháp trong ngôn ngữ lập trình
VD: ten a (không hợp lệ vì có khoảng theo dỏi, trắng) dùng để làm gì? ghi chép và
- Cú pháp là bộ quy tắc để viết
Var x integer; (không hợp lệ vì trả lời. thiếu dấu ‘:’)
chương trình, dựa vào đó mà
người lập trình và chương
c) Ngữ nghĩa: Là xác định ý nghĩa của trình dịch biết được tổ hợp
các tổ hợp ký tự trong chương trình.
nào của các ký tự trong bảng
VD: A và B nhận giá trị nguyên.
chữ cái là hợp lệ. Các em xem
X và Y nhận giá trị thực. các VD sau:
Ta sử dụng phép toán trong ngôn ngữ  ten a lập trình như sau:  Var x integer;
A+B: là cộng hai số nguyên
- Ngoài cú pháp, trong ngôn
X+Y: là cộng hai số thực.
ngữ lập trình còn có ngữ nghĩa.
Chú ý: - CT sẽ phát hiện lỗi cú pháp - VD sau cho các em hiểu rõ
trước, lỗi ngữ nghĩa sau. hơn về ngữ nghĩa.
- Khi lỗi cú pháp không còn thì chương trình mới thực hiện.
- Khi chương trình được thực hiện trên
dữ liệu cụ thể thì lỗi ngữ nghĩa mới được - Em nào có thể cho biết khi Học sinh phát hiện.
chương trình bắt đầu thực hiện theo dỏi, VD:
thì chương trình dịch phát ghi chép và
hiện lỗi cú pháp dễ dàng hơn trả lời. 20
2. Một số khái niệm
hay khó khăn hơn ngữ nghĩa? ph a) Tên
Khái niệm: Tên là một dãy liên tiếp
không quá 127 ký tự bao gồm chữ số,
chữ cái hoặc dấu gạch dưới.
- Để có thể viết một chương Trang 5
Quy tắc đặt tên:
trình không còn lỗi cú pháp ta
- Không có khoảng trắng.
cần chú ý một số quy tắc về
- Không bắt đầu bằng chữ số. cách đặt tên. Học sinh
- Không chứa ký tự đặc biệt. theo dỏi, VD: 43c (tên sai) ghi chép và A_c (tên đúng) trả lời. Ten_f (tên đúng) Hoa# (tên sai) Chú ý:
- Tên dùng để quản lý và phân biệt các
đối tượng trong chương trình.
- Để gợi nhớ nội dung của đối tượng.
- Em nào xét xem các VD sau - Tên có 3 loại:
VD nào có cách đặt tên đúng,
* Tên dành riêng (từ khóa): Dùng với vì sao?
ý nghĩa riêng xác định. Không được sử
dụng với các mục đích khác nhau. VD(SGK).
* Tên chuẩn: Dùng với ý nghĩa nhất
định nào đó, có thể sử dụng với các mục Học sinh đích khác nhau. VD(SGK). theo dỏi,
* Tên do người lập trình tự đặt: ghi chép và
Không được trùng với tên dành riêng. trả lời.
b) Hằng và biến
- Ngoài quy định phải đặt tên
* Hằng: Hằng là đại lượng có giá trị cho chương trình thì cần phải
không thay đổi trong quá trình thực hiện khai báo hằng và biến. chương trình.
Có 3 loại hằng:
+ Hằng số học: là các hằng số nguyên hay số thực: 3, -3, ...
+ Hằng logic: True hoặc False
+ Hằng xâu: Là chuỗi ký tự trong bảng
mã ASCII, nằm trong cặp dấu nháy đơn - Các em xem các VD trong ( ‘’ ) của Pascal.
SGK và giải thích các ký hiệu Chú ý: E trong hằng số học.
- Hằng dấu ‘’ trong Pascal là “”.
VD: ‘‘s’’ có hằng xâu là ‘s’
- Hằng số thực E được biểu diễn bởi số mũ của 10 VD: 2.1E-6 = 2 x 10-6.
- Em nào có thể lấy một VD
-2.236E01 = -2.236 x 1001 = -22.36
để làm rõ khái niệm về biến.
- Có thể sử dụng hằng Hexa, cần thêm $ VD: A, B,tong là biến nguyên
trước giá trị biểu diễn: A:=5; B:=6; VD: $A116 = 16110 Tong:=A+B;
* Biến: Là đại lượng được đặt tên, dùng Tong:=A+B+A;
để lưu trữ giá trị và giá trị có thể được Giá trị của tổng là thay đổi.
thay đổi trong quá trình thực hiện chương trình.
- Đoạn chú thích trong chương
trình nhằm giúp người lập c) Chú thích
trình nêu các câu dẫn mà Trang 6
- Trong Pascal sử dụng cặp dấu không cần phải tuân thủ quy {và}hoặc (*và*).
tắc trong ngôn ngữ lập trình.
- Chú thích không ảnh hưởng đến
chương trình nguồn nên chương trình dịch bỏ qua.
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:. -
3 thành phần cơ bản trong ngôn ngữ lập trình. -
Khái niệm và quy tắc đặt tên. Khái niệm và ý nghĩa sử dụng biến.
2. Bài tập về nhà: Các bài tập trong SGK. Trang 7 Tiết 3_PPCT Ngày soạn: Ngày dạy:
CÂU HỎI VÀ BÀI TẬP
A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích:
- Giúp học sinh ôn lại những kiến thức đã học. 2. Yêu cầu:
- Học sinh chú ý học tập, tích cực xây dựng bài học.
- Học sinh phải chuẩn bị kiến thức ôn tại nhà.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Nêu các bài tập, đặt câu hỏi gợi ý để HS nắm vững bài học.
C. NỘI DUNG GIẢNG DẠY
Câu 1:
Trong chế độ biên dịch, một chương trình đã được dịch thông suốt, hệ thống không báo
lỗi. Có thể khẳng định rằng ta đã có một chương trình đúng hay chưa? Tại sao?
(Chưa đúng, vì sai ngữ nghĩa).
Câu 2: Trong chế độ thông dịch, giả sử 2/3 số câu lệnh trong chương trình đã được thực hiện.
Có thể khẳng định rằng như vậy chương trình không còn chứa lỗi cú pháp nữa hay không? Tại
sao? (Không thể khẳng định được, vì các câu lệnh khác chưa được kiểm tra).
Câu 3: Sau khi chương trình đã được dịch thông suốt, không còn lỗi cú pháp, có cần tiếp tục
hiệu chỉnh, tức là tìm và sửa lỗi trong chương trình nguồn nữa hay không? (Có: Vì cần KT ngữ nghĩa).
Câu 4: Trong một chương trình còn có lỗi cú pháp, thông thường trình biên dịch hay chương
trình thông dịch phát hiện ra lỗi nhanh hơn? Vì sao?
(Trình biên dịch phát hiện lỗi nhanh hơn vì nó có nhiệm vụ phát hiện lỗi cú pháp đầu tiên).
Câu 5: Hãy chọn những biểu diễn hằng trong các biểu diễn dưới đây: A) end B) ‘a078’ C) 78 D) *63 E) 5.63 F) -96
Câu 6: Hãy chọn những biểu diễn tên trong các biểu diễn dưới đây: A) 75 B) abcd C) 78ab D) ab68 E) ‘abc’ F) (xyz)
Câu 7: Hãy chọn những đáp án là từ khóa (tên dành riêng) trong Pascal: A) begin B) ‘begin’ C) integer D) var E) real F) end
Câu 8: Hãy chọn những đáp án là tên chuẩn trong Pascal: A) real B) uses C) const D) integer E) byte F) sqr Trang 8
Câu 9: Trong dòng thông tin chú thích có thể chứa ký tự ngoài bảng chữ cái của ngôn ngữ hay
không và tại sao? (Có thể, vì chương trình biên dịch không kiểm tra lỗi trong chú thích)
Câu 10: Hãy nêu 6 VD (6 tên) mà người dùng đặt sai trong ngôn ngữ lập trình Pascal và chỉ ra
lỗi, cách sửa các tên đó sao cho đúng.
Câu 11: Bổ sung các bài tập 4, 5, 6 trong SGK Tin học 11 (trang 13). Trang 9 Tiết 4_PPCT Ngày soạn: Ngày dạy:
CHƯƠNG II: CHƯƠNG TRÌNH ĐƠN GIẢN
BÀI 3: CẤU TRÚC CHƯƠNG TRÌNH
A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích:
- Giúp học sinh nắm được cấu trúc chung của một chương trình đơn giản.
- Nhận biết được các phần của một chương trình đơn giản. 2. Yêu cầu:
- Học sinh chú ý học tập, tích cực xây dựng bài học.
- Học sinh nắm được cấu trúc của một chương trình đơn giản.
- Biết cách đặt tên, khai báo biến trong chương trình.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- Cấu trúc chương trình.
- Khai báo tên, thư viện, hằng và biến trong chương trình.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng.
E. NỘI DUNG GIẢNG DẠY
I. ĐẶT VẤN ĐỀ CHO BÀI GIẢNG
Các em đã tìm hiểu về ngôn ngữ lập trình và mỗi ngôn ngữ lập trình đều có cấu trúc để cho
người lập trình viết chương trình sao cho đúng quy tắc. Trong ngôn ngữ lập trình Pascal hay
C++ đều đưa ra cấu trúc riêng của nó. Ta sẽ tìm hiểu cấu trúc của nó là gì?
II. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng
Hoạt động của GV gian của HS
BÀI 3: CẤU TRÚC CHƯƠNG TRÌNH - Ghi bài học lên bảng. Học sinh theo dỏi, 1. Cấu trúc chung
- Trên bảng là một cấu trúc của 15 ghi chép và
*Ngôn ngữ lập trình có 2 phần:
một chương trình được viết trên ph
ngôn ngữ lập trình Pascal. Em trả lời.
- Phần khai báo.
nào cho thấy biết phần nào là - Phần thân.
phần khai báo, phần nào là phần thân chương trình?
- Trên bảng cấu trúc chung của
một chương trình đơn giản bao Trang 10
gồm 2 phần, đó là phần khai báo
và phần thân chương trình.
- Em nào đã biết cú pháp của từng Học sinh
phần trong phần khai báo này theo dỏi, không? ghi chép và
- Chúng ta sẽ tìm hiểu rõ về các trả lời.
phần này trong mục tiếp theo. Học sinh theo dỏi,
2. Các thành phần của chương - Đối với phần khai báo em nào
cho thầy ví dụ về khai báo tên ghi chép và trình. trả lời.
a) Phần khai báo
chương trình tính diện tích hình
* Khai báo tên chương trình: chữ nhật? Cú pháp:
- Trong phần khai báo tên có bắt buộc không? Program ;
- Mỗi ngôn ngữ lập trình đều có
Chú ý: Tên chương trình do người sẵn thư viện cung cấp một số
lập trình tự đặt theo cú pháp quy chương trình đã được lập sẵn. Để tắc của Pascal.
sử dụng các chương trình đó ta VD: program dtHCN;
khai báo thư viện chứa nó.
- Em nào lấy VD về khai báo thư
* Khai báo thư viện viện. Cú pháp: Uses ; VD: Uses crt;
Chú ý: Trong Pascal khi khai báo Học sinh
thư viện crt ta dùng lệnh clrscr - Em nào có thể nhắc lại khái theo dỏi,
trong phần thân chương trình để niệm về hằng? Có mấy loại hằng. ghi chép và
xóa kết quả trước của chương trình trả lời. 20 trên màn hình.
- Em hãy lấy 3 VD khai báo cho 3 ph loại hằng khác nhau. * Khai báo hằng Cú pháp:
- Các em chú ý trong khai báo Const =
hằng thường được sử dụng cho hằng>;
những giá trị xuất hiện nhiều lần VD: Const n = 100; trong chương trình. Xau = ‘hang xau’;
- Phần khai báo tiếp theo là khai Học sinh Lg = true;
báo biến. Em nào nhắc lại khái theo dỏi, * Khai báo biến
niệm biến là gì? Nó dùng để làm (BÀI HỌC SAU) ghi chép và gì? trả lời.
b) Phần thân chương trình
- Cách khai báo biến bài học sau Cú pháp:
ta sẽ nghiên cứu kỹ hơn. Begin
- Phần thân chương trình được bắt ;
đầu bằng từ khóa begin và kết End.
thúc bằng từ khóa end Trang 11
- Các em cho biết dấu (;) dùng để
VD1: đoạn thân chương trình tính làm gì? tổng hai số a và b Begin Writeln(‘nhap a va b’); - Các em xem VD sau trong SGK readln(a,b);
tại sao lại không có phần khai báo Tong:=a+b; biến. Writeln(‘tong cua a va b Học sinh la:’,tong);
- GV nhắc lại ý nghĩa của biến theo dỏi, End.
bằng cách nêu thêm VD bài trước ghi chép và
đã học viết trong thân chương trả lời. trình:
VD: A, B,tong là biến nguyên
3. Ví dụ chương trình đơn giản A:=5; B:=6; (SGK) Tong:=A+B; Tong:=A+B+A;
Giá trị của tổng là thay đổi.
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:. - Cấu trúc chương trình. -
Các khai báo tên chương trình, hằng, biến...
2. Bài tập về nhà:
1. Nêu cấu trúc chung của một chương trình Pascal?
2. Khi nào thì một chương trình không có phần khai báo? Nêu một ví dụ minh họa.
3. Nếu khai báo thừa biến hoặc hằng; tức là khai báo các biến, hằng không dùng đến
trong phần thân chương trình, chương trình dịch có báo sai không, vì sao? (Không,
nhưng có lời cảnh báo không nên sử dụng thừa biến)
Trang 12 Tiết 5_PPCT Ngày soạn: Ngày dạy:
BÀI 4-5: MỘT SỐ KIỂU DỮ LIỆU CHUẨN VÀ KHAI BÁO BIẾN
A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích:
- Giúp học sinh nắm được một số kiểu dữ liệu chuẩn: kiểu nguyên, kiểu thực, kí tự và logic.
- Xác định được kiểu cần khai báo của dữ liệu đơn giản. 2. Yêu cầu:
- Học sinh chú ý học tập, tích cực xây dựng bài học.
- Học sinh phải ghi nhớ và hiểu các kiểu dữ liệu và biết cách khai báo biến.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học.
- Phát huy tính tích cực chủ động sáng tạo của học sinh.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- Các kiểu dữ liệu chuẩn: kiểu nguyên, kiểu thực, kí tự và logic - Khai báo biến.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng.
E. KIỂM TRA BÀI CŨ ( 5ph ).
1. Nêu cấu trúc chung của chương trình Pascal.
2. Khi nào thì một chương trình không có phần khai báo? Nêu một ví dụ minh họa.
F. NỘI DUNG GIẢNG DẠY
I. ĐẶT VẤN ĐỀ CHO BÀI GIẢNG

Em nào cho biết khái niệm về dữ liệu. Như vậy dữ liệu là thông tin đã được mã hóa trong
máy tính. Dữ liệu trong mỗi ngôn ngữ lập trình chỉ có một số kiểu chuẩn nhất định mặc dù
thông tin rất đa dạng. Mỗi kiểu được đặc trưng bởi tên kiểu (VD biến kiểu nguyên mang giá trị
là số nguyên...)
, miền giá trị, bộ nhớ lưu trữ, các phép toán, các hàm và thủ tục sử dụng chúng.
Vậy tên của từng kiểu dữ liệu đó là gì ta sang bài học mới.
II. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng
Hoạt động của GV gian của HS
BÀI 4-5: MỘT SỐ KIỂU DỮ LIỆU - Ghi bài học lên bảng. Học sinh
CHUẨN VÀ KHAI BÁO BIẾN (tiết 5) theo dỏi, ghi chép và 1. Kiểu nguyên
- Trong toán học ta có các tập 5 ph số gì? trả lời.
- Kiểu nguyên tương ứng với tập số nào?
- Các kiểu nguyên được lưu trữ Trang 13
và kết quả tính toán là số đúng.
Giá trị của nó là phần nguyên
không có số dư hoặc số thập phân.
- Tuy nhiên tập số nguyên là vô
hạn và có thứ tự, đếm được Học sinh 5 ph
nhưng trong máy tính kiểu theo dỏi,
nguyên là hữu hạn, có thứ tự. ghi chép và
Bảng trên là bảng kiểu nguyên. trả lời.
Chú ý: Kiểu Byte và Word chỉ biểu - Kiểu số thực được lưu trữ và
diễn cho số nguyên dương.
kết quả tính toán chỉ gần đúng
với sai số không đáng kể. Miền 2. Kiểu thực
giá trị được mở rông hơn so với
kiểu số nguyên, số thực trong Học sinh
máy tính cũng là rời rạc và hữu theo dỏi, hạn.
- Em nào cho thầy biết nếu phép ghi chép và trả lời.
toán sử dụng kiểu số nguyên và
kiểu số thực thì kết quả cho ra 5 ph
kiểu gì? (Kiểu số thực).
- Kiểu kí tự có tập giá trị là các
kí tự trong bảng mã ASCII,
được dùng khi thông tin là các 3. Kiểu kí tự
kí tự, xâu (string). Vì vậy hầu
hết các ngôn ngữ lập trình đều
có kiểu kí tự để làm việc với văn bản.
- Kiểu kí tự có phải là kiểu có Chú ý:
thứ tự, đếm được không ? Dựa
-Việc so sánh các kí tự được thực vào đâu để thực hiện việc so
hiện bằng cách so sánh các mã sánh các kí tự? ASCII tương ứng.
- Việc so sánh các kí tự được VD:
thực hiện bằng cách so sánh các Học sinh
- A có mã ASCII là 65, a = 97 mã ASCII của chúng. theo dỏi,
- B có mã ASCII là 66, b = 98 ghi chép và => A < B, a < b.
- Kiểu logic trong Pascal chỉ có trả lời.
2 giá trị là True (đúng) và 4. Kiểu logic
False (sai), được dùng khi kiểm
tra một điều kiện hoặc tìm giá
trị của một biểu thức logic.
- Theo em kiểu logic có phải là
kiểu có thứ tự đếm được không? Chú ý:
(Là kiểu có thứ tự đếm được).
- Kiểu Logic là kiểu có thứ tự đếm - Một số ngôn ngữ lập trình Học sinh được.
không dùng kiểu logic như theo dỏi,
- Trong quá trình lập trình, người lập C++, thay vào đó là các giá trị 0 ghi chép và
trình cần tìm hiểu đặc trưng của các (false), khác 0 (true). trả lời.
kiểu dữ liệu chuẩn được xác định bởi
5 ph bộ dịch và sử dụng để khai báo biến.
- Em nào nhắc lại khái niệm về Trang 14 biến. 5. Khai báo biến
- Ý nghĩa sử dụng biến để làm Cú pháp: gì? Var :; * Trong đó:
- Trong khi khai báo biến, lưu ý
- DS biến: là một hoặc nhiều tên về những biến là hằng số, ta nên
biến, mỗi biến cách nhau bởi dấu khai báo biến hằng số bằng hàm phẩy (,). const .
- Kiểu dữ liệu là 1 trong các kiểu
chuẩn (real, integer,...) hoặc kiểu do VD: Khai báo biến cho bài toán
người dùng tự định nghĩa (chương tính diện tích hình thang có IV). chiều cao bằng 5dv:
- Sau từ khóa var có thể khai báo Const cao = 5;
nhiều danh sách biến khác nhau. Var daynho,daylon: real;
VD1: - Khai báo biến bài toán tính
diện tích hình chữ nhật lấy giá trị vào - Tên biến phải gợi nhớ để ra giá trị nguyên:
người lập trình và người xem Var a,b: integer;
chương trình biết ý nghĩa sử Học sinh dt: integer; dụng của biến đó. theo dỏi,
- Khi khai báo biến phải chú ý ghi chép và
VD2: - Khai báo biến cho bài toán đến phạm vị giá trị, VD biến nhập 1 kí trả lời. tự từ bàn phím:
khai báo để lưu trữ số học sinh Var Kitu: char;
trong lớp là kiểu byte, nhưng
biến khai báo để lưu trữ học Chú ý:
sinh trong trường là kiểu word.
- Tên biến phải gợi nhớ.
- Tên biến không quá dài, quá ngắn. VD: khai báo biến mảng
- Khi khai báo biến phải chú ý đến Var mang:array[1..10] of phạm vi giá trị. integer;
VD2: Trong VD1 nếu khai báo:
Biến mang chứa 10 giá trị tại Var a,b: real; một thời điểm.
dt: integer; => Là sai
- Các biến đơn chỉ chứa một giá trị tại một thời điểm.
- Các biến của kiểu dữ liệu có cấu
trúc có thể chứa hơn một giá trị tại
một thời điểm như biến mảng.
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph)
a) Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:. -
Kiểu số nguyên, số thực, kí tự, logic. - Cách khai báo biến: Var :;
2. Kiểm tra 15ph:(15 ph)
Câu 1: Hãy chọn những biểu diễn hằng trong các biểu diễn dưới đây: A) begin B) ‘12ab’ C) -102 D) 15- E) A92 F) ‘var’
Câu 2: Hãy chọn những biểu diễn tên trong các biểu diễn dưới đây: A) bien B) 92A C) pi Trang 15 D) A92 E) ‘abc’ F) (xyz)
Câu 3: Nêu các cách khai báo biến cho bài toán tính giá trị biểu thức sau: x y a) z S
 x* y z
b) S  sin  x y (trong đó hàm sin() x y
là một biểu thức nên không khai báo). Trang 16 Tiết 6_PPCT Ngày soạn: Ngày dạy:
BÀI 6: PHÉP TOÁN, BIỂU THỨC, CÂU LỆNH GÁN
A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích:
- Học sinh biết các khái niệm: Phép toán, biểu thức số học, hàm số học chuẩn, biểu thức quan hệ. 2. Yêu cầu:
- Học sinh hiểu lệnh gán.
- Viết được lệnh gán.
- Viết được các biểu thức số học và logic với các phép toán thông dụng.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học.
- Phát huy tính tích cực chủ động sáng tạo của học sinh.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau: - Các phép toán.
- Các hàm số học chuẩn. - Biểu thức quan hệ. - Biểu thức logic. - Câu lệnh gán.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng.
E. KIỂM TRA BÀI CŨ ( 5ph ).
1. Nêu các kiểu dữ liệu đã học và ý nghĩa sử dụng của mỗi kiểu dữ liệu đó.
2. Khai báo biến cho bài toán tính diện tích hình tròn.
3. Sửa lỗi cho khai báo trong một bài toán sau: Var x_y:real 3x: real; E = 2.34; Đáp án: 2. const pi=3.14; var r, dt:real; 3.
Const e = 2.34; (nên khai báo hằng số) Var x_y:real; (thiếu dấu ;) x: real;
(tên đặt sai quy tắc)
F. NỘI DUNG GIẢNG DẠY
I. ĐẶT VẤN ĐỀ CHO BÀI GIẢNG ( 5ph ) Trang 17
Các em đã biết các kiểu dữ liệu, cách khai báo biến. Tuy nhiên đối với dữ liệu số học thì
trong Pascal có xử lý giống như các phép toán thông thường không? Như cộng, trừ nhân chia.
Đặc biệt là phép chia, thì cách thực hiện các phép chia trên mỗi kiểu dữ liệu có giống nhau
không? VD như phép chia số nguyên, phép chia số thực,... Bài học hôm nay ta sẽ tìm hiểu kỹ về những vấn đề trên.
II. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng
Hoạt động của GV gian của HS
BÀI 6: PHÉP TOÁN, BIỂU THỨC, CÂU - Ghi bài học lên bảng.
LỆNH GÁN (tiết 6)
- Để mô tả thuật toán, mỗi ngôn Học sinh 1. Phép toán
ngữ lập trình đều xác định và sử theo dỏi, 5 ph
dụng một số khái niệm cơ bản: ghi chép
Phép toán, biểu thức, gán giá bài học. trị...
- Đối với phép toán toán học và
phép toán trong Pascal, các em
xem trên bảng sẽ thấy có nhiều
kí hiệu tương ứng là khác nhau. VD phép chia là dấu (/). 5 ph Chú ý:
- Với ý nghĩa sử dụng các phép
- Kết quả của phép toán quan hệ cho toán em nào có thể đưa ra đáp Học sinh giá trị logic. án cho các phép toán sau: theo dỏi,
- Một trong những ứng dụng của 1. 7 div 4 = ?; ghi chép và
phép toán logic là để tạo ra các biểu 2. 7 mod 4 = ?; trả lời.
thức phức tạp từ các quan hệ đơn 3. Not(true) = ?; giản. 4. True and False = ?; VD: 5. True or False = ?; 1. 7 div 4 = 1; 5 ph 2. 7 mod 4 = 3; 3. Not(true) = false;
- Trong lập trình biểu thức số Học sinh 4. True and False = False;
học là một biến kiểu số, hoặc theo dỏi, 5. True or False = True
một hằng số, hoặc các biến kiểu ghi chép và
số và các hằng số liên kết với trả lời.
2. Biểu thức số học
nhau bởi một số hữu hạn phép
* VD về biểu thức số học: toán số học.
- Em nào có thể điền kết quả
biểu thức TP trong các biểu
thức toán học tương ứng?
- Các em chú ý về mức ưu tiên
của các phép toán như sau: (bảng hình bên)
5 ph * Mức ưu tiên các phép toán: Trang 18
- Đối với các phép toán sẽ là Chú ý:
không đủ quy tắc để biểu diễn
- Các phép toán trên được thực hiện
trong dấu ngoặc tròn ( ) đầu tiên.
các phép toán học. Do đó trong Học sinh 15
TP đưa ra các hàm số học chuẩn
- Phép toán IN để xác định biểu thức theo dỏi, ph
có trong một tập hợp không.
để thực hiện các phép toán đó. ghi chép và VD: trả lời.
4 IN [1..14] => kq là True
- Ta có bảng các hàm chuẩn sau:
3. Hàm số học chuẩn
+ Các hàm kiểu thực hoặc
*Để lập trình được thuận tiện, các nguyên:
ngôn ngữ lập trình đều có thư viện
- SQR(x)  Cho giá trị là x2.
chứa một số chương trình tính giá trị
- SQRT(x) Cho giá trị là x
những hàm toán học thường dung. (x>=0).
Các chương trình như vậy gọi là các - ABS(x) Cho giá trị là Học sinh x hàm chuẩn. theo dỏi,
* Một số hàm chuẩn thường dung:
Đối với các biểu thức x kết ghi chép và
+ Các hàm kiểu thực hoặc nguyên: quả có thể là kiểu thực trả lời.
- Round(x)  Cho giá trị là số nguyên gần x nhất + Các hàm kiểu thực: .
- LN(x) Cho giá trị là lnx
- Trunc(x)  Cho giá trị là phần nguyên của x. (x>0).
- EXP(x)Cho giá trị là ex.
+ Các hàm kiểu thực:
- SIN(x) Cho giá trị là sinx.
- SQR(x)  Cho giá trị là x2.
- COS(x)Cho giá trị là cosx.
- SQRT(x) Cho giá trị là x (x>=0).
- Dựa vào các hàm đã cho, em
- ABS(x) Cho giá trị là x
hãy biểu diễn các biểu thức sau
- LN(x) Cho giá trị là lnx (x>0). sang dạng của TP:
- EXP(x)Cho giá trị là ex. 1. x2 + x => ?
- SIN(x) Cho giá trị là sinx. 2. sin(3x3) + cosx =>? Học sinh
- COS(x)Cho giá trị là cosx. theo dỏi,
VD: Biểu diễn biểu thức toán học - Ngoài các hàm số học chuẩn, ghi chép và bằng TP sau:
để sử dụng các phép toán quan trả lời.
1. x2 + x => sqr(x) + sqrt(x).
hệ TP cung cấp biểu thức quan 2. sin(3x3) + cosx hệ theo cú pháp sau: =>sin(3*x*sqr(x))+cos(x). + Các hàm khác:
- Biểu thức quan hệ được thực
hiện theo trình tự: Tính giá trị
- INC(k,i): Tăng giá trị k lên i lần. Học sinh
biểu thức trước khi thực hiện
- DEC(k,i): Giảm giá trị k lên i lần. theo dỏi,
phép toán quan hệ theo mức ưu ghi chép và
4. Biểu thức quan hệ tiên của phép toán. trả lời. Cú pháp:
- Kết quả của biểu thức quan hệ Trang 19 là giá trị logic
true hoặc false.
* Trong đó: Biểu thức 1
VD: điều kiện để điểm M(x,y) và Biểu thức 2
thuộc hình tròn tâm I(a,b), bán
có cùng kiểu dữ liệu xâu hoặc cùng kiểu số học. kính R là: VD: i+3 > j+1; x >= x+1; 5. Biểu thức logic
* Biểu thức logic đơn giản là biến logic hoặc hằng logic.
* Giá trị của biểu thức logic là true hoặc false
- Cuối cùng là câu lệnh gán, đây
là một trong những lệnh cơ bản VD:
nhất của ngôn ngữ lập trình. Tập giá trị của x:
1 ≤ x ≤ 6 → (1<= x) and (x <= 6)
Điều kiện x là số chẵn không chia hết cho 4:
(x mod 2 = 0) and (x mod 4 <>0)
- Em thử nhận xét xem cách gán 6. Câu lệnh gán
giá trị cho biến sau đã hợp lệ Cú pháp: chưa? := ; * Khai báo: VD: Var a: char; Học sinh x := 5; (x=5) x,y : real; theo dỏi, y := 4; (y=4) * Gán: ghi chép và x := x+y; (x=9) a := x+y; trả lời.
- Một số phương pháp biểu diễn thông thường: Ý nghĩa Biểu diễn trong TP Cộng thêm S := S + i Trừ đi S := S - i Nhân thêm S := S * i Chia ho S := S / i Chú ý:
- Biểu thức bên phải cần được xác
định giá trị trước khi gán.
- Kiểu của biểu thức bên phải dấu
gán phải phù hợp với kiểu của biến gán.
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:. - Các phép toán.
- Các hàm số học chuẩn. - Biểu thức quan hệ. - Biểu thức logic. - Câu lệnh gán.
2. Bài tập về nhà: Trang 20
1. Viết các biểu thức sau trong TP  a) S = (x3+ sin(x2y))2
b) S  tan(3x)  cot(x  ) c) 2
S b  4ac d) 3 2 x y  3xy  2 S x  e) 3
S  sin (x cos x) 3 sin (x cos x)
f) S  tan(3x)  cot(x  ) 2a 3
2. Viết biểu thức logic cho bài toán: điều kiện để x là số không âm và là số lẻ?
Gợi ý: (x >0) and (3 mod 2 <> 0).
3. Viết biểu thức logic cho bài toán: In ra số lượng (lấy tên biến là SL) học sinh đạt loại khá
với điều kiện hoặc DT > 6.5 hoặc DV > 6.5 và DTB > 6.5.
Gợi ý: ((DT > 6.5 ) or (DV > 6.5 )) and (DTB > 6.5) Trang 21 Tiết 7_PPCT Ngày soạn: Ngày dạy:
BÀI 7-8: CÁC THỦ TỤC VÀO/RA ĐƠN GIẢN
SOẠN THẢO, DỊCH, THỰC HIỆN VÀ HIỆU CHỈNH CHƯƠNG TRÌNH
A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích:
- Học sinh biết các lệnh vào/ra đơn giản để nhập dữ liệu từ bàn phím hoặc đưa dữ liệu ra màn hình.
- Viết được một số lệnh vào/ra đơn giản.
- Biết cách soạn thảo, dịch, thực hiện và hiệu chỉnh chương trình. 2. Yêu cầu:
- Học sinh hiểu các thủ tục vào/ra.
- Biết các thao tác trực tiếp trên công cụ lập trình Pascal.
- Biết xử lý các lỗi khi lập trình.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học.
- Phát huy tính tích cực chủ động sáng tạo của học sinh.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- Các thủ tục vào/ra (Read/Readln và Write/Writeln).
- Các thao tác xử lý lỗi chương trình.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng. - Máy chiếu đa năng.
E. KIỂM TRA BÀI CŨ ( 5ph ).
Các bài tập đã giao về nhà.
E. NỘI DUNG GIẢNG DẠY
I. ĐẶT VẤN ĐỀ CHO BÀI GIẢNG ( 2ph )

Các em đã được tìm hiểu về các kiểu của biến, cách khai báo biến, các phương pháp biến đổi
từ công thức toán học sang Pascal. Em nào có thể cho thầy biết làm thế nào để có thể xử lý các
thông tin đó trên máy tính? (Thông qua ngôn ngữ lập trình Pascal để sử dụng các thủ tục và các
hàm nhằm thực hiện xử lý các thông tin đó)
. Bài học hôm nay ta sẽ tìm hiểu về môi trường lập
trình Pascal cũng như các thủ tục hay hàm đơn giản.
II. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng
Hoạt động của thầy gian của trò
BÀI 7-8: CÁC THỦ TỤC VÀO/RA, SOẠN - Ghi bài học lên bảng.
THẢO CHƯƠNG TRÌNH... (tiết 8)
- VD: Bài toán tính diện tích Học sinh
1. Nhập dữ liệu từ bàn phím hình tròn: theo dỏi, 15 * Thủ tục nhập: program dt_hinhtron; uses crt; ghi chép Trang 22 ph Cú pháp: const pi=3.14; bài học. Read(); var r,s:real; begin hoặc clrscr; Readln();
write('nhap ban kinh ');readln(r); s:=pi*sqr(r);
writeln('dien tich hinh tron co ban * Trong đó: kinh ',r:5:2,' la',s:6:2);
- Danh sách biến vào có thể có 1 readln end.
hoặc nhiều biến, nếu nhiều biến thì
mỗi biến cách nhau bởi dấu phẩy (,). Học sinh
-VD trên là một chương trình theo dỏi,
đơn giản. Input của chương VD:
trình trên là gì? Để đưa thông ghi chép và
- Read(r) hoặc Readln(r); Nhập 1 giá trả lời.
tin vào thì thông qua câu lệnh trị cho bán kính r.
nào? (Khi thực hiện chương
- Read(r1, r2,...) hoặc Readln(r1,
trình người ta nhập giá trị bán
r2,...); Nhập nhiều giá trị cho bán
kính thông qua câu lệnh nhập kính r. Read/Readln)
- Mỗi lần nhập giá trị cho bán Học sinh
kính thì giá trị đó được gán cho theo dỏi,
2. Đưa dữ liệu ra màn hình biến r. * Thủ tục xuất: ghi chép và
- Khi nhập nhiều giá trị cho trả lời. Cú pháp:
biến thì xong mỗi thao tác nhập Write(); sử dụng phím Enter để nhập hoặc giá trị tiếp theo. Writeln();
- Chú ý khi nhập giá trị của biến * Trong đó:
thì phải tương ứng với kiểu của 20 Học sinh
- Write: Khi thực hiện chương trình biến. ph
con trỏ nằm trên dòng hiện tại. theo dỏi,
- Em nào có thể sử dụng máy ghi chép và
- Writeln: Con trỏ tự động xuống tính đã có sẵn chương trình dòng tiếp theo. trả lời.
nhập giá trị cho biến r ?
- Danh sách kết quả ra: Có thể là tên
biến đơn, biểu thức, xâu ký tự hoặc - Để đưa câu dẫn 'nhap ban kinh '
và kết quả tính diện tích ra màn hằng số .
hình thì người ta sử dụng câu
- Đối với biến đơn, biểu thức, hằng lệnh nào
số thì không có dấu nháy đơn (‘’).
? (câu lệnh xuất Write/ Writeln). VD: -
write('nhap ban kinh '); in ra : nhap ban - Em nào cho thầy biết khi thực Học sinh kinh
hiện chương trình thì thủ tục theo dỏi, -
writeln('dien tich hinh tron co ban kinh Write và Writeln khác nhau ghi chép và
',r:5:2,' la',s:6:2); In ra: dien tich hinh tron điểm nào? trả lời. co ban kinh 2.00 la 12.56.
- Em nào cho thầy biết khi thực Chú ý:
hiện chương trình ở VD trên,
- Các thủ tục Readln hoặc Writeln
thủ tục write('nhap ban kinh '); sẽ in thể không có tham số . ra như thế nào?
VD: Readln; (Tạm dừng xem kq
- Còn đối với câu lệnh
chương trình). Writeln; (Tự động đưa
writeln('dien tich hinh tron co ban con trỏ xuống dòng).
kinh ',r:5:2,' la',s:6:2); sẽ in ra như - Quy cách ra:
thế nào nếu ta nhập bán kính Trang 23
:<độ rộng>: bằng 2? hoặc :<độ rộng>
- Em nào cho biết hiên tượng gì
sẽ xảy ra nếu câu lệnh in kết Học sinh
3. Soạn thảo, dịch, thực hiện và quả được thay đổi như sau: theo dỏi,
hiệu chỉnh chương trình
writeln('dien tich hinh tron co ban ghi chép và
kinh ',r ,' la', s); ? In kết quả là trả lời. Thanh bảng chọn Tên tệp CT
Vì vậy Pascal đưa quy cách của Học sinh kết quả ra. theo dỏi, ghi chép và 5 ph
VD: writeln('dien tich hinh tron co trả lời.
ban kinh ',r:5:2,' la',s:6:2);
- Em có nhận xét gì về cách viết
trên: ( r được dành 5 vị trí trong
đó có 2 vị trí dành cho chữ số Cột Dòng
thập phân, 1 vị trí cho phần nguyên và 1 vị trí cho dấu (.),
còn diện tích có 6 vị trí, 2 vị trí
*Thao tác thực hiện:
cho phần thập phân và 3 vị trí
- Soạn thảo: Gõ nội dung chương
cho phần nguyên, 1 vị trí cho trình. dấu (.))
- Lưu chương trình: Nhấp phím F2.
- Mở CT có sẵn trong TP: Nhấn F3
- Để có thể thực hiện chương
trình được viết bằng ngôn ngữ
- Kiểm tra chương trình: F9.
lập trình thì ta cần soạn thảo
- Biên dịch chương trình: Alt+F9.
chương trình trên môi trường
- Chạy chương trình: Ctrl+F9. ngôn ngữ lập
- Đóng cửa sổ chương trình: Alt+F3. trình cụ thể. Ngôn
ngữ lập trình Pascal là một ví dụ Học sinh
- Thoát khỏi Pascal: Alt+X.
và ta sẽ tìm hiểu về môi trường theo dỏi, lập trình này ghi chép và trả lời.
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (3 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:.
- Thủ tục nhập dữ liệu: Read/Readln.
- Thủ tục xuất dữ liệu: Write/Writeln.
- Quy cách định dạng số.
2. Bài tập về nhà:
1. Chuẩn bị bài tập và thực hành số 1.
2. Viết các chương trình tính diện tích hình thang, tam giác biết cạnh đáy và chiều cao.
3. Bài thực hành 3, 4, 5 trang 35 SGK. Trang 24 Tiết 8,9_PPCT Ngày soạn: Ngày dạy:
BÀI TẬP VÀ THỰC HÀNH SỐ 1
A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích:
- Học sinh bước đầu lập trình được các chương trình đơn giản.
- Thao tác thành thạo trên môi trường Pascal. 2. Yêu cầu:
- Học chuẩn bị bài tập ở nhà của tiết học trước.
- Học sinh chú ý làm bài tập và thực hành.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Gợi ý phương pháp lập trình đơn giản.
- Hướng dẫn học sinh biết cách hiệu chỉnh các lỗi sai khi thực hiện chương trình.
C. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng. - Phòng máy.
E. NỘI DUNG GIẢNG DẠY
Bài 1:
Em hãy nêu lại các thao tác lập trình trên môi trường ngôn ngữ lập trình Pascal.
Gợi ý: - Mở môi trường lập trình Pascal.
- Soạn thảo chương trình.
- Nhấp phím F9 để kiểm tra chương trình.
- Nhấp tổ hợp phím Ctrl+F9 để chạy chương trình.
- Nhập giá trị kiểm thử.
Bài 2: Soạn thảo và thực hiện chạy chương trình giải phương trình bậc 2 theo hướng dẫn trong SGK trang 34.
Bài 3: Viết chương trình nhập số a (a>0) rồi tính và đưa ra diện tích phần gạch chéo trong hình
bên, kết quả làm tròn đến 4 chữ số hàng thập phân.
Gợi ý: - Xác định Input và Output - Viết chương trình.
- Nhập thử các bộ số khác nhau.
- write('dien tich phan con lai la ',sqr(a)*pi/2:10:2);
Bài 4: Lập trình tính và đưa ra màn hình vận tốc v của một vật rơi từ độ cao h, biết rằng v  2gh
, trong đó g là gia tốc rơi tự do và g=9,8m/s2. Độ cao h(m) được nhập vào từ bàn phím.
Gợi ý: - Xác định Input và Output - Viết chương trình.
- Nhập thử các bộ số khác nhau. v := sqrt(2*g*h);
writeln(‘van toc cua vat khi cham dat la: v = ’, v:8:2,’m/s’);
Bài 5: Hãy chỉ ra 4 lỗi (ba lỗi dịch, một lỗi thực hiện) trong chương trình Pascal sau: Var x,y,z = integer; {dong 1} Trang 25 Begin {dong 2} X := 200; {dong 3} Y := 250 {dong 4} Z = X*Y; {dong 5} Write(z); {dong 6} Readln {dong 7} End. {dong 8} Trả lời:
- Lỗi 1: Dấu (=) ở dòng 1 phải đổi thành dấu (:).
- Lỗi 2: Thiếu dấu (;) ở dòng 4.
- Lỗi 3: Ký hiệu sai lệnh gán ở dòng 5.
- Biểu thức X*Y không được xác định đúng vì khai báo Z có kiểu integer nên Z không thể
nhận giá trị 200*250 = 500000
Bài 6: Viết chương trình tính giá trị của biểu thức 2x4 - 3x3 + 4x2 - 5x + 6.
Gợi ý: - Xác định Input và Output - Viết chương trình.
- Nhập thử các bộ số khác nhau.
- Y := x*(x*(x*(2*x - 3) + 4) -5) + 6;
Bài 7: Viết chương trình tính giá trị của biểu thức y x   (1 ) z B z 1 a  3 1 x
Gợi ý: - Xác định Input và Output - Viết chương trình.
- Nhập thử các bộ số khác nhau.
- A = (1+z) * ((x+y/z)/(a – 1/ (1+sqr(x)*x)));
Bài 8: Viết chương trình nhập vào 2 số a, b. Sau đó hoán đổi giá trị của 2 số đó:
Gợi ý: Cho phép dùng biến trung gian.
Dùng biến trung gian: tam
Không dùng biến trung gian: tam:=a; a := a + b; a:=b; b := a - b; b:=tam; a := a - b;
Bài 9:
Dùng các phép toán DIV và MOD để đổi thời gian từ số giây ra giờ và phút và giây với
số giây nhập từ bàn phím: Program GPGiay; Var h,p,s: Integer; Begin
Write('Nhap vao thoi gian s = '); Readln(s);
write(s:6,'giay duoc doi thanh: '); P := s div 60; S := s mod 60; H := p div 60; P := p mod 60;
Writeln(h:4,'gio',p:4,'phut',s:4,'giay'); Trang 26 Readln; End.
Bài 10: Bài tập 8a SGK, trang 36 (câu b tương tự)
Gợi ý: Cách 1: (y<=1) and (abs(x) <= y)
Cách 2: ((y < 1) or (y = 1)) and ((abs(x) < y) or (abs(x) = y))
Chú ý: (y<=1) and (abs(x) <= 1) là sai: Giả sử A(0,7 ; 0,5) không nằm trong vùng gạch chéo.
Bài 11: Bài tập 2.24 Sách bài tập, trang 12. Đáp án đúng D.
Gợi ý: - Điều kiện để tọa độ điểm nằm trên hoặc ngoài đường tròn là: (x*x + y*y ≥ 25) nên là đáp án D và E.
- Vì tọa độ điểm nằm trên đường biên nên chỉ có đk (abs(x) ≤ 5) and (abs(y) ≤ 5) thỏa
mãn vì có dấu bằng xảy ra.
Bài 12: BT 2.25 Sách bài tập, trang 13. Gợi ý: Tính d1, d2  d = d2 - d1. Hoặc d = (30-10)t
Bài tập tương tự: Trên đoạn đường có 2 điểm xuất phát X và Y cách xa nhau A km. Một người
đi xe máy xuất phát từ điểm X với tốc độ B km/h, người đi ôtô xuất phát từ điểm Y với tốc độ C
km/h (A ≥ B +C ). Hãy viết chương trình in kết quả sau bao lâu thì 2 người gặp nhau và gặp tại
vị trí cách X bao xa biết rằng A, B, C được nhập từ bàn phím.
Bài 13: Bài tập 2.26 Sách bài tập, trang 13. Hiền gọi điện thoại trao đổi với Minh, cứ mỗi phút
dùng điện thoại phải trả a đồng. Cuộc gọi kéo dài t phút. Hãy viết chương trình tính và đưa ra
màn hình số tiền mà mẹ bạn Hiền cuối tháng phải thanh toán cho cuộc trao đổi này. Các số liệu
at (nguyên dương) được nhập từ bàn phím.
Bài 14: Bài tập 2.27 Sách bài tập, trang 13. Theo quy định của nhà trường, mỗi trường hợp
không đeo thẻ học sinh sẽ bị trừ đi 3 điểm thi đua của lớp, mỗi trường hợp nói chuyện trong lớp
bị trừ 2 điểm và mỗi trường hợp đi muộn trừ 5 điểm. Sổ đầu bài ghi nhận trong tháng có t
trường hợp không đeo thẻ, n trường hợp nói chuyện và m trường hợp đi muộn. Hãy nhập các dữ
liệu này vào từ bàn phím và đưa ra màn hình số điểm thi đua mà lớp bị trừ trong tháng. Tất cả
các dữ liệu đều là số nguyên.
Bài 15: Bài tập 2.30 Sách bài tập, trang 13. Để bù đắp thiệt hại cho nhân dân trong công tác
phòng chống dịch cúm gia cầm H5N1, nhà nước hỗ trợ cho các hộ có gia cầm bị thiêu hủy theo
định mức sau: mỗi con gia cầm từ một tháng tuổi trở xuống a đồng, mỗi con gia cầm trên 1
tháng tuổi và dưới 3 tháng tuổi là b đồng, từ 3 tháng tuổi trở lên là c đồng 1 con. Một hộ nông
dân có đàn gia cầm n con phải thiêu hủy, trong đàn có m con dưới 3 tháng tuổi, trong số đó có k
con từ 1 tháng tuổi trở xuống (0 <= k <= m <= n <= 10000). Hãy lập trình nhập dữ liệu a, b,
c, m, n, k từ bàn phím, tính và đưa ra màn hình số tiền hỗ trợ nhà nước sẽ chi trả cho hộ nông
dân trên. Tất cả các dữ liệu vào đều là số nguyên. Gợi ý:
- Có k con dưới 1 tháng => có a*k đồng.
- Có m con dưới 3 tháng trong đó bao gồm cả k con dưới 1 tháng => có b*(m-k) đồng.
- Có tất cả n con trong trại nên có c*(n-m) đồng.
=> Vậy số tiền mà nhà nước phải hỗ trợ là: a*k + b*(m-k) + c*(n-m) đồng.
Bài 16: Bài tập 2.33 Sách bài tập, trang 15. Lập trình nhập từ bàn phím 2 số thực a và b, tính và đưa ra màn hình:
a) Trung bình cộng các bình phương của 2 số đó.
b) Trung bình cộng các giá trị tuyệt đối của 2 số đó.
Bài 17: Bài tập 2.39 Sách bài tập, trang 17. Cho số nguyên N có 4 chữ số. Hãy dùng các phép
DIV và MOD tính tổng các chữ số của N. Dữ liệu nhập vào từ bàn phím. Gợi ý: tong := 0; Tong := n div 1000; Trang 27 Kq := n mod 1000; Tong := tong + (kq div 100); Kq := kq mod 100; Tong := tong + (kq div 10); Kq := kq mod 10; Tong := tong + kq; Trang 28 Tiết 10_PPCT Ngày soạn: Ngày dạy:
BÀI TẬP VÀ KIỂM TRA 15ph
A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích:
Học sinh ôn lại các kiến thức đã học về các nội dung chính sau:
1. Cấu trúc chung của một chương trình. 2. Cách khai báo biến.
3. Các hàm chuẩn và câu lệnh gán.
Kiểm tra 15ph nhằm đánh giá tình hình học tập của học sinh. 2. Yêu cầu:
- Học sinh đã ôn lý thuyết và làm một số bài tập có nội dung liên quan tại nhà.
- Tích cực tham gia làm bài tập.
- Học sinh trật tự khi làm bài kiểm tra.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Hướng dẫn học sinh trả lời các câu hỏi trắc nghiệm. Sau mỗi lựa chọn đúng hoặc sai đều có câu hỏi vì sao.
- Một số câu hỏi tự luận để học sinh tư duy trong quá trình làm bài.
C. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng.
F. NỘI DUNG GIẢNG DẠY
Câu 1: Trong biểu thức bất kỳ, ngôn ngữ lập trình dùng những loại nào để xác định trình tự
thực hiện các phép tính? Trả lời:
Chỉ dùng một loại đó là dấu ngoặc tròn ().
Câu 2: Chương trình dịch Pascal sẽ cấp phát bao nhiêu byte bộ nhớ cho các biến trong khai báo sau: var a, b, c, d: integer; x, y, z: real; w: word; Trả lời: var a, b, c, d: integer; (2 byte) x, y, z: real; (6 byte) w: word; (2 byte)
Câu 3: Chỉ ra các lỗi trong khai báo sau: Var i, m, n: real; Pi = 3.14; 5x, y2: integer; Trả lời: Var i, m, n: real;
Pi = 3.14; (Lỗi do vị trí khai báo sai ) 5x, y2: integer;
(Lỗi do đặt tên sai) Trang 29
Câu 4: Em có nhận xét gì về các khai báo sau? Hãy viết lại các khai báo cho hợp lý hơn. Var p: real; N: integer; A: real; K: integer; B1: real; C: integer;
Trả lời: Các khai báo trên là quá dài, nên gộp các biến cùng kiểu trong khai báo. Var p, A, B1: real; N, K, C: integer;
Câu 5: Viết lại các biểu thức sau từ dạng toán học sang dạng biểu diễn tương ứng trong Pascal: 3 y a  s inx x y a) b) c) 3 x 1 2 a  cos x x 2 y 2 4 sin x x y d) e) 3
x y x 1 f) 3 cos x 1 2 2x  4x Trả lời:
a) abs(x+sqr(sqr(y)))/sqrt(2*sqr(x)-4*x)

b) (a+sinx)/sqrt(sqr(x)+cos(x))
c) (2*exp(x+y)+x-y*sqr(y))/(sqr(x)+sqr(y))
d) sqr(sinx)/cosx*sqr(cos(x))
e) sqrt(x+y)+abs(x*sqr(x)-1)
f) (abs(x+sqr(y)*sqr(y)))/(sqrt(2*sqr(x)-4*y)) Đề kiểm tra 15ph
Câu 1: Viết chương trình giải các bài toán sau:  3 2 x y ex y 2   a/ A = b/ B = e | a sin (x) x | 2 2 x y
Câu 2: Mỗi học sinh hãy nhập vào 2 số nguyên dương bất kỳ từ bàn phím, nêu các bước thực
hiện của chương trình để đưa ra kết quả đúng. Lưu ý: giá trị nhập cho a và b không được trùng nhau. Trang 30 Tiết 11_PPCT Ngày soạn: Ngày dạy:
BÀI 9: CẤU TRÚC RẼ NHÁNH
A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích:
- Học sinh hiểu nhu cầu của cấu trúc rẽ nhánh trong biểu diễn thuật toán.
- Hiểu câu lệnh rẽ nhánh (dạng thiếu và dạng đủ). - Hiểu câu lệnh ghép. 2. Yêu cầu:
- Học sinh chú ý học tập.
- Sử dụng được cấu trúc rẽ nhánh trong mô tả thuật toán của một số bài toán đơn giản.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học.
- Sử dụng các mô hình như sơ đồ khối, thực hiện giải thuật trên sơ đồ khối.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- Cấu trúc câu lệnh rẽ nhánh dạng thiếu và dạng đủ.
- Cấu trúc, ý nghĩa sử dụng câu lệnh ghép.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng. - Máy chiếu đa năng.
E. NỘI DUNG GIẢNG DẠY
I. ĐẶT VẤN ĐỀ CHO BÀI GIẢNG ( 2ph )

Trong cuộc sống các em thường gặp những tình huống lúc đúng, lúc sai. Có nhiều vấn đề mà
cách giải quyết lại theo các hướng khác nhau. Đó là những trường hợp phân nhánh. Vậy thì các
thông tin khi đưa vào máy tính có như vậy không? Nếu có thì máy tính xử lý thế nào? VD như
trường hợp giải bài toán nghiệm của phương trình bậc 2 biện luận theo delta.
II. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng
Hoạt động của thầy gian của trò
BÀI 9: CẤU TRÚC RẼ NHÁNH (tiết 11-12) - Ghi bài học lên bảng.
- Mời một em đọc VD trong 1. Rẽ nhánh Học sinh
SGK về cuộc hẹn giữa Châu và VD1: theo dỏi, 15
* Châu hẹn Ngọc: Chiều mai nếu Ngọc. trời ghi chép ph
không mưa thì Châu sẽ đến nhà - VD mà bạn vừa đọc là một bài học. Ngọc.
VD thực tế các em thường gặp.
* Ngọc nói với Châu: Chiều mai nếu Ở đây có 2 tình huống rõ rệt xảy
trời không mưa thì Ngọc sẽ đến nhà ra:
* Châu hẹn Ngọc: Chiều mai
Châu, nếu trời mưa thì sẽ gọi điện cho Châu để trao đổi. nếu
trời không mưa thì Châu sẽ Trang 31 đến nhà Ngọc.
 Diễn đạt dạng thiếu:
* Ngọc nói với Châu: Chiều
Nếu ... thì...
mai nếu trời không mưa thì
 Diễn đạt dạng đầy đủ:
Ngọc sẽ đến nhà Châu, nếu trời
Nếu ... thì..., nếu không thì...
mưa thì sẽ gọi điện cho Châu để Học sinh trao đổi. theo dỏi,
VD2: Giải phương trình bậc 2:
- Như vậy 2 tình huống xảy ra ghi chép và ax2 + bx + c = 0 (a ≠ 0)
cho ta 2 khả năng diễn đạt, tình trả lời.
* Giải thuật sơ đồ khối
huống thứ 2 diễn đạt đầy đủ hơn.
- Vậy trong toán học có các khả
năng xảy ra như vậy không?
Câu trả lời là có. Ta xem VD Học sinh
giải phương trình bậc 2: theo dỏi,
ax2 + bx + c = 0 (a ≠ 0). Bạn
nào có thể viết thuật toán trên ghi chép và trả lời.
theo sơ đồ khối hoặc liệt kê.
- Trên bảng các em thấy rõ sơ
đồ thể hiện cấu trúc rẽ nhánh
2. Câu lệnh If – then
trường hợp có nghiệm và vô 20
a) Dạng thiếu: nghiệm. ph Cú pháp:
- Vậy em nào biết để thực hiện Học sinh
If <điều kiện> then ;
bài toán rẽ nhánh trên ngôn ngữ theo dỏi,
lập trình Pascal cho phép người ghi chép và
lập trình sử dụng câu lệnh nào ? trả lời.
Đó là câu lệnh If – then.
- Tương ứng với 2 dạng thiếu và
đủ ở trên, Pascal có hai dạng
câu lệnh If – then như sau:
a) Dạng thiếu:
If <điều kiện> then b) Dạng đủ: lệnh>; Cú pháp:
b) Dạng đủ:
If <điều kiện> then
If <điều kiện> then
lệnh> else ; else ;
- Dang thiếu chỉ thực hiện 1 câu Học sinh
lệnh nếu đúng, sai thì kết thúc, theo dỏi,
Còn dạng đủ thực hiện theo 2 ghi chép và
nhánh, nếu đúng thì thực hiện trả lời.
câu lệnh 1, sai thì thực hiện câu lệnh 2. * Trong đó:
- DK: điều kiện là biểu thức logic.
- Câu lệnh: Là câu lệnh trong Pascal.
- Trước Else không có dấu (;).
VD: Các VD trong SGK. - Các em xem các VD trong 5 ph
sách giáo khoa và cài đặt các 3. Câu lệnh ghép bài toán đó. Trang 32
Trong quá trình giải các bài toán
phức tạp, không phải chỉ thao tác với - Từ khóa Begin và End không
1 câu lệnh mà có thể thao tác với chỉ dùng để bắt đầu hoặc kết Học sinh
nhiều câu lệnh, các câu lệnh được thúc một chương trình mà còn theo dỏi,
gộp lại và tạo thành câu lệnh ghép.
dùng để bắt đầu hoặc kết thúc ghi chép và
Câu lệnh ghép có dạng:
một dãy các câu lệnh đó là câu làm bài Begin lệnh ghép. ; End; VD:
If d < 0 then write(‘vo nghiem’) else begin
x1 := (-b-sqrt(D)) / (2*a*c); x2 := -b/a – x1;
- Em nào có thể viết chương end;
trình cho bài toán giải phương Chú ý: trình bậc 2.
- Câu lệnh if - then có thể lồng nhau và có dạng: Dạng 1: If <Đk 1> then Begin ; If <Đk 2> then ; End Else ; Dạng 2: If <Đk 1> then ; If <Đk 2> then Else ;
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (3 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:.
- Thủ tục nhập dữ liệu: Read/Readln.
- Thủ tục xuất dữ liệu: Write/Writeln.
- Quy cách định dạng số.
2. Bài tập về nhà:
1. Tìm số lớn nhất của 2 số x, y.
2. Giải phương trình bậc 2.
3. Viết chương trình tìm giá trị lớn nhất của 3 số a, b, c.
4. Viết chương trình nhập từ bàn phím một số nguyên dương, in ra màn hình kq là số chẵn hoặc số lẻ.
5. Viết chương trình nhập từ bàn phím một số nguyên, in ra màn hình kq là số âm hoặc số dương.
6. Tìm GTLN của 4 số a, b, c, d là những số nguyên được nhập từ bàn phím. Gợi ý: max:=a; if b > max then max := b;
if c > max then max := c;
Trang 33
if d > max then max := d; write('max= ', max);
7. Nhập 3 số nguyên từ bàn phím, tính và in ra màn hình kết quả là bình phương của các số
không âm và lập phương của các số âm. Trang 34 Tiế 12,13_PPCT Ngày soạn: Ngày dạy:
BÀI 10: CẤU TRÚC LẶP
A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích:
- Học sinh hiểu nhu cầu của cấu trúc lặp trong biểu diễn thuật toán.
- Hiểu cấu trúc lặp với số lần lặp biết trước. 2. Yêu cầu:
- Học sinh biết cách vận dụng đúng đắn từng loại cấu trúc lặp trong từng tình huống cụ thể.
- Biết cách mô tả thuật toán trong một số bài toán đơn giản.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học.
- Sử dụng các mô hình như sơ đồ khối, thực hiện giải thuật trên sơ đồ khối.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- Khái niệm lặp trong thuật toán.
- Cấu trúc lặp với số lần đã biết trước, câu lệnh lặp FOR-DO.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng. - Máy chiếu đa năng.
E. NỘI DUNG GIẢNG DẠY
I. ĐẶT VẤN ĐỀ CHO BÀI GIẢNG ( 5ph )

Các em đã bao giờ gặp các tình huống lặp chưa? Em nào có thể kể cho thầy biết một số tình
huống lặp mà em biết? VD1 như chương trình tính điểm cho 50 học sinh trong lớp. Quá trình
giáo viên nhập họ tên, điểm cho từng em học sinh là một quá trình lặp liên tục cho đến khi nhập
đầy đủ cho 50 học sinh thì mới kết thúc. Như vậy quá trình lặp ở trên là quá trình lặp với số lần
đã biết trước là 50 lần lặp. Hoặc tình huống thứ 2 là: Em thực hiện một công việc là gánh nước
để đổ vào 1 thùng nước? Em có biết cần bao nhiêu thùng nước thì đủ không? Như vậy em cần
phải đổ đầy thùng nước mà không biết là cần bao nhiêu gánh nước. Đó là tình huống lặp với số
lần chưa biết trước? Vậy trong ngông ngữ lập trình Pascal có cung cấp cho người lập trình các
công cụ để thực hiện các bài toán về lặp không? Ta sang bài học mới để tìm hiểu các công cụ này nhé!
II. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng
Hoạt động của thầy gian của trò Trang 35
BÀI 10: CẤU TRÚC LẶP (tiết 14) - Ghi bài học lên bảng. 1. Lặp
- Các em vừa được biết 2 VD về Học sinh
lặp thường thấy trong cuộc sống
Cho a z a  2 . Tính giá trị S theo dỏi, 10
tự nhiên. Bây giờ ta sẽ xem xét Bài 1: 1 1 1 1 ghi chép ph S    ... . 2 VD trong toán học trong a a 1 a  2 a 100 bài học. 1 1 1 1 SGK.       Bài 2: S ... ... a a 1 a  2 a N
- Từ 2 bài toán trên em nào cho
thầy biết bài thứ nhất lặp cộng Cho đến khi 1  0,0001
bao nhiêu lần? Và xuất phát từ a N
số hạng nào, tại số hạng này N
- Hai bài toán đều thực hiện phép lặp cộng bắt đầu từ N=0.. bằng bao nhiêu?
- Bài toán 1 thực hiện lặp với N=100. - Còn đối với bài toán 2 lặp
cộng bao nhiêu lần? Và xuất
- Bài toán 2 thực hiện phép lặp chưa
biết trước số lần N, phép lặp dừng phát từ số hạng nào, tại số hạng Học sinh này N bằng bao nhiêu? theo dỏi, cho tới khi 1  0,0001.
=> Như vậy đối với bài toán 1 a N ghi chép và
2. Lặp với số lần biết trước và câu phép lặp giới hạn 100 lần, bài trả lời. 10 lệnh FOR
toán 2 phép lặp là không biết -DO ph Thuật toán
trước, nó thực hiện lặp cộn g cho Dạng lặp tiến:
đến khi thỏa mãn điều kiện 1 Nhập a  0,0001 thì kết thúc. a N S:=1/a; N:=0
- Bài học hôm nay ta nghiên Học sinh
cứu về phép lặp đã biết trước số theo dỏi, N:=N+1
lần lặp tương ứng với cấu trúc ghi chép và câu lệnh FOR-DO. trả lời. T N>100
- Em nào có thể nêu ý tưởng
thuật toán để giải bài toán 1. F S:=S+1/(a+N)
- Ta có 2 cách để viết thuật toán
giải bài toán 1. Đó là lặp tiến và lặp lùi. In S
- Em nào có thể trình bày thuật
toán dưới dạng sơ đồ khối. Dạng lăp lùi: Nhập a
- Em nào có thể nhận xét về hai
dạng lặp trên nó có điểm giống S:=1/a; N:=101
và khác nhau ở chỗ nào? N:=N-1
- Em nào cho thầy biết tương Học sinh T
ứng với 2 dạng lặp trên thì ngôn theo dỏi, N<1
ngữ lập trình Pascal đã cung cấp ghi chép và F
cho chúng ta câu lệnh nào? trả lời. S:=S+1/(a+N)
- Đó là câu lệnh FOR-DO dùng
để mô tả cho hai dạng lặp ở In S trên. Nhận xét:
- Lặp tiến: Xuất phát N=0, sau mỗi
lần lặp thì N tăng lên 1 đơn vị.
- Em nào có thể nêu cách thức
- Lặp lùi: Xuất phát N=101, Sau mỗi hoạt động của câu lệnh FOR- Trang 36
lần lặp thì N giảm đi một đơn vị. DO?
- Số lần lặp tiến và lặp lùi là 100 lần. * Câu lệnh FOR-DO
- Câu lệnh FOR-DO được áp Dạng lặp tiến:
dụng trong bước mấy của 2 Học sinh 20
FOR := TO dạng thuật toán trên? theo dỏi, ph DO ; ghi chép và Dạng lặp lùi:
- Em nào có thể viết chương trả lời.
FOR := trình tương ứng với 2 dạng DOWNTO DO lệnh>;
Áp dụng vào thuật toán hoặc Học sinh Trong đó:
chương trình em nào có thể thực theo dỏi,
- Biến đếm: Là biến đơn, thường có hiện chạy chương trình với a=2 ghi chép và kiểu nguyên. làm bài
- gt.đầu, gt.cuối: Là các biểu thức có - VD2: GV giúp học sinh tìm
cùng kiểu với biến đếm.
hiểu thuật toán, cài đặt chương Chú ý:
trình và kiểm thử bằng các bộ
- Giá trị của biến đếm được điều test.
chỉnh tự động, câu lệnh sau DO 30
không được thay đổi giá trị biến đếm. ph
VD1: Chương trình cài đặt cho bài
toán 1 theo 2 dạng lặp (SGK) VD2: (SGK)
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (15 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:.
- Câu lệnh lặp dạng tiến: FOR := TO DO ;
- Câu lệnh lặp dạng lùi: FOR := DOWNTO DO ;
2. Bài tập về nhà:
1. Viết chương trình nhập số nguyên dương N từ bàn phím và thực hiện các công việc sau:
a) Đếm xem có bao nhiêu số chẵn, bao nhiêu số lẻ trong phạm vi từ 1 đến N.
b) Tính tổng giá trị các số chẵn, số lẻ.
2. Viết chương trình tính giá trị của mỗi tổng sau, với n được nhập từ bàn phím
a) S  1 2  ...  n . Dùng FOR - Do Dùng While - Do S:=0; S:=0; i:=1; For i:=1 to N do S:=S+i; While i<=N Do Begin S:=S+i; i:=i+1; End; n1
b) S  1-2+3-4+.....+ 1 .n Gợi ý: s:= 0; dau:=1; for i:=1 to n do Trang 37 begin s:=s+i*dau; dau:=-dau; end; 50 n  c)  n n 1 1 Trang 38 Tiết 14_PPCT Ngày soạn: Ngày dạy:
BÀI 10: CẤU TRÚC LẶP
A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích:
- Học sinh hiểu nhu cầu của cấu trúc lặp trong biểu diễn thuật toán.
- Hiểu cấu trúc lặp với số lần lặp chưa biết trước, kiểm tra điều kiện trước khi lặp. 2. Yêu cầu:
- Học sinh biết cách vận dụng đúng đắn từng loại cấu trúc lặp trong từng tình huống cụ thể.
- Biết cách mô tả thuật toán trong một số bài toán đơn giản.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học.
- Sử dụng các mô hình như sơ đồ khối, thực hiện giải thuật trên sơ đồ khối.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- Lặp với số lần chưa biết trước, câu lệnh lặp While - Do
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng. - Máy chiếu đa năng.
E. KIỂM TRA BÀI CŨ (15ph)
1. Nêu cấu trúc câu lệnh lặp với số lần biết trước. Tại sao trong câu lệnh lặp FOR-DO người
ta không cần câu lệnh thay đổi giá trị của biến chỉ số.
2. Viết chương trình tính giá trị của mỗi tổng sau, với n được nhập từ bàn phím
a) S  1 2  ...  n . 50 n  b)  n n 1 1
F. NỘI DUNG GIẢNG DẠY I. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng
Hoạt động của thầy gian của trò
BÀI 10: CẤU TRÚC LẶP (tiết 14) - Ghi bài học lên bảng.
- Bài trước các em đã tìm hiểu
Cho a z a  2 . Tính giá trị S Học sinh
khái niệm về lặp và lặp với số 1 1 1 1 theo dỏi, 10
Bài 2: S    ...
... lần biết trước, bài học hôm nay a a 1 a  2 a N ghi chép ph
ta sang phần tiếp theo là lặp với bài học. Cho đến khi 1  0,0001
số lần chưa biết trước, ta sẽ làm a N
việc trên bài toán 2 trong bài
3. Lặp với số lần chưa biết trước
này số lần lặp N là chưa biết. và câu lệnh WHILE-DO
Thuật toán liệt kê:
- Em nào có thể nêu ý tưởng Trang 39 B1: Nhập a; giải bài toán 2? B2: S:=1/a; N:=0;
- Em nào có thể viết thuật toán
B3: Nếu 1/(a+N)<0,0001 → B6;
giải bài toán 2 bằng phương B4: N:=N+1; pháp liệt kê? B5: S:=S+1/(a+N) → B2;
- Theo em lặp với số lần chưa B6: In S
biết trước có mấy dạng? Học sinh
Cú pháp câu lệnh lặp:
- Lặp với số lần chưa biết trước theo dỏi,
While <ĐK> do <câu lệnh>; có 2 dạng: ghi chép và * Trong đó: Dạng 1: trả lời.
- ĐK: Điều kiện là biểu thức logic;
Trong khi <ĐK> còn đúng thì
- Câu lệnh:Làcâu lệnhđơn hoặc ghép. thực hiện .
Thuật toán theo sơ đồ khối: Dạng 2: Thực hiện trong Nhập a
khi <ĐK> còn đúng. Học sinh
- Ở dạng 1: Đầu tiên kiểm tra và S:=1/a; theo dỏi,
tính giá trị của ĐK, nếu ĐK còn N:=0;
đúng thì thực hiện công việc và ghi chép và trả lời.
chỉ thực hiện 1 lần. Mỗi lần N:=N+1; F 1/(a+N)
thực hiện công việc có thể sẽ <0.0001? S:=S+1/(a+N);
làm thay đổi giá trị của ĐK nên T
đến một lúc nào đó ĐK lặp
không còn đúng nữa và vòng In S 10
lặp sẽ được kết thúc. ph Chương trình:
- Theo em ĐK lặp trong bài Program tong_2;
toán 2 là gì và khi nào thì kết Var a, n : Integer; thúc lặp? S : Real;
- Như vậy thuật toán của bài Begin
toán 2 áp dụng phương pháp lặp
Write(‘nhap a= ’); Readln(a); dạng 1. Nó kiểm tra ĐK S:=1/a;
1/(a+N)<0,0001 trước khi thực Học sinh N:=0; hiện công việc lặp. theo dỏi, While 1/(a+N)>=0.0001 Do
- Tương ứng với dạng 1 em nào ghi chép và Begin
cho biết câu lệnh lặp trong trả lời. N := N + 1; Pascal là gì? S := S + 1/(a+N);
- Theo sơ đồ khối vòng lặp End;
While – Do thể hiện trong
Writeln(‘tong S cua bai toan 2 những bước nào? la ’, S:10:2);
- Theo cấu trúc lặp trong Pascal, Readln;
em nào có thể viết chương trình 10 End.
giải bài toán 2 theo dạng 1? ph
VD1: Tìm ƯCLN của 2 số nguyên dương M và N.
- Em hãy thực hiện phép lặp với *Ý tưởng: a = 9995.
- Nhập và kiểm tra 2 số M và N, nếu B1: Nhập a = 5;
M=N thì ƯCLN là M. Nếu không B2: Gán N=0; Học sinh
thực hiện vòng lặp gán M=M-N nếu B3: Thực hiện lặp: theo dỏi,
M>N và ngược lại, cho đến khi M=N  1/9995 > 0.0001: ghi chép và *Thuật toán: N:=0+1=1; trả lời. S:=1/9995+1/(9996) → B3  1/9996 > 0.0001: Trang 40 Nhập M,N N:=1+1=2; S:=1/9995+1/(9996) Học sinh S S theo dỏi, M = N ? M > N ? N:=N-M +1/(9997) → B3 ghi chép và T T  1/9996>0.0001: làm bài Nhập M,N M:=M-N N:=2+1=3; S:=1/9995+1/(9996) +1/(9997) +1/(9998) → B3  ……. *Chương trình:  1/10000 = 0.0001: Program UCLN; N:=4+1=6; Var m,n : Integer; S:=1/9995+1/(9996) Begin +1/(9997) + 1/(9998) + Write(‘Nhap m va n: ’); 1/(9999) + 1/(10000) + readln(m,n); 1/(10001) → B3 While m<>n do  1/10001 < 0.0001→ B6 If m > n then m := m - n Kết thúc Else n := n – m;
- Ta xem xét tiếp 2 VD sau: Writeln(‘UCLN = ’, M); VD1: Tìm ƯCLN của 2 số Readln nguyên dương M và N. End.
- Em nào có thể nêu ý tưởng thực hiện bài toán?
- Em nào viết được thuật toán?
- Em nào viết chương trình thực hiện thuật trên.
- Em nào có thể thực hiện
chương trình trên bằng bộ test: M=28, N=12.
II. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:
- Ý nghĩa sử dụng câu lệnh lặp với số lần chưa biết trước While – Do.
- Câu lệnh lặp While – Do.
2. Bài tập về nhà:
1. Có thể dùng câu lệnh While-Do để thay thế cho câu lệnh For-Do được không? Nếu
được, hãy thực hiện điều đó với chương trình Tong_1a.
2. Cho số thực a. Tìm số nguyên dương N nhỏ nhất thỏa mãn: 1 1 1 1  ...  a 2 3 N
Gợi ý: Cách 1: Dùng vòng lặp vô hạn S := 1; N := 1;
While true do {cho vòng lặp vô hạn vì đk luôn đúng} Begin If s>a then break; Inc(n); S := s + 1/n; End;
Cách 2: Không dùng vòng lặp vô hạn Trang 41 S := 1; N := 1;
While s<=a do {cho vòng lặp giới hạn đến s=a} Begin Inc(n); S := s + 1/n; End; Trang 42 Tiết 15,16_PPCT Ngày soạn: Ngày dạy:
BÀI TẬP VÀ THỰC HÀNH 2
A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích:
- Học sinh làm quen với công cụ hiệu chỉnh chương trình.
- Hiểu câu lệnh rẽ nhánh (dạng thiếu và dạng đủ).
- Thực hành các bài tập sử dụng vòng lặp biết trước và chưa biết trước. 2. Yêu cầu:
- Học sinh biết xây dựng chương trình cấu trúc rẽ nhánh, lặp.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Giúp HS làm quen với cấu trúc rẽ nhánh thông qua các bài tập từ đơn giản đến phức tạp.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng. - Phòng máy thực hành.
E. NỘI DUNG GIẢNG DẠY
Câu 1:
Bài toán Bộ số Pi-ta-go:  Nêu bài toán.
 Nêu ý tưởng giải bài toán.
 Xây dựng chương trình.
 Thực hiện chương trình trên máy tính.
 Thực hiện theo các bước hướng dẫn thực hành trong sách giáo khoa.
Câu 2: Viết chương trình tính giá trị của hàm: 2 2
x y Nếu 
z  x y Nếu , a)  0, 5  Nếu , Program tinhGTBT; Var x, y, z: real; Begin
Write(‘nhap x, y: ’);readln(x,y); Z:= sqr(x) + sqr(y);
If z<=1 then writeln(‘z=’, z:10:2) Else
If (z>1) and (y>=x) then writeln(‘z= ’,x+y:10:2) Else If y Readln End.
 x y Nếu điểm (
x,y) thuộc hình tròn bán kính r (r>0), tâm (a,b). b) Z   x y
Trong các trường hợp còn lại Trang 43
Gợi ý: If (sqr(x-a) + sqr(y-b)) <= sqr(r) then Z := abs(x) + abs(y) Else Z := x+y;
Bài 3: Viết chương trình tính các tổng sau, với N được nhập từ bàn phím: 2 2 2 2
S  1  2  3  ...  N Gợi ý: S := 0;
For i := 1 to N do S := S + sqr(i); Trang 44 Tiết 17_PPCT Ngày soạn: Ngày dạy: BÀI TẬP
A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích:
- Thực hành câu lệnh rẽ nhánh (dạng thiếu và dạng đủ).
- Thực hành các bài tập sử dụng vòng lặp biết trước và chưa biết trước. 2. Yêu cầu:
- Học sinh tự viết chương trình cấu trúc rẽ nhánh, lặp.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Giúp HS làm quen với cấu trúc rẽ nhánh thông qua các bài tập.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng. - Phòng máy thực hành.
E. NỘI DUNG GIẢNG DẠY
Bài 1:
Viết chương trình tính các tổng sau, với N được nhập từ bàn phím: 1 1 1 1 b) S  1   ... 2 2 2 2 2 3 4 N
G ợi ý: S := 0;
For i := 1 to N do S := S + 1/sqr(i);
Câu 2: Lập trình giải bài toán sau: Nhập số nguyên dương N từ bàn phím. Tìm số nguyên k nhỏ
nhất thỏa mãn điều kiện 3k > N. Đưa ra màn hình giá trị k và 3k. Gợi ý: k := 0; S := 1; While S <= N do Chú ý: Begin n log n n ln e a a a ee Inc(k); S := exp(k*ln(3)); End;
Câu 3: Viết chương trình nhập số nguyên và kiểm tra số vừa nhập là số chẵn hay số lẻ.
Gợi ý: Nếu N mod 2 = 0 thì N là số chẵn, ngược lại là số lẻ.
Câu 4: Viết chương trình giải phương trình bậc nhất ax + b = 0 Chương trình: Var a,b,x : real; Begin Write('a = '); Readln(a); Write('b = '); Readln(b); If a = 0 Then If b = 0 Then
Writeln('Phuong trinh co vo so nghiem') Else Trang 45
Writeln('Phuong trinh vo nghiem') Else Begin x:= -b/a;
Writeln('Phuong trinh co nghiem la :',x:6:2); end; readln ; end. Trang 46 Tiết 18_PPCT Ngày soạn: Ngày dạy: KIỂM TRA 1 TIẾT
Câu 1: Viết chương trình nhập vào số nguyên dương N. In ra màn hình tất cả các ước số của N.
Câu 2: Viết chương trình nhập vào số nguyên dương N rồi thông báo lên màn hình số đó có phải là số chẵn hay không.
Câu 3: Tính tổng sau, với N được nhập vào từ bàn phím
S = 2 - 4 + 6 - 8 + ... + (-1)n+1.2n Trang 47 Tiết 19_PPCT Ngày soạn: Ngày dạy:
CHƯƠNG II: KIỂU DỮ LIỆU CÓ CẤU TRÚC
BÀI 11: KIỂU MẢNG
A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích:
- Cung cấp cho học sinh kiến thức về mảng, biết mảng một chiều, biết khái báo mảng, xây
dựng và sử dụng mảng một chiều. 2. Yêu cầu: HS cần nắm được:
- Kiểu mảng là một kiểu dữ liệu có cấu trúc, rất cần thiết và hữu ích trong nhiều chương trình.
- Mảng một chiều là một dãy hữu hạn các phần tử cùng kiểu.
- Các ngôn ngữ lập trình thông dụng cho phép người lập trình xây dựng kiểu dữ liệu mảng một chiều.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học.
- Thuyết trình, diễn giải, hỏi đáp.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- Khái niệm mảng một chiều.
- Cách khai báo mảng một chiều.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng.
E. NỘI DUNG GIẢNG DẠY
I. ĐẶT VẤN ĐỀ CHO BÀI GIẢNG (10ph):
Ta có một ví dụ sau: Nhập vào nhiệt độ trung bình của mỗi ngày trong tuần. Tính và tin ra
màn hình nhiệt độ trung bình của tuần và số lượng ngày trong tuần có nhiệt độ cao hơn nhiệt độ trung bình tính được.
Em nào cho thầy biết nếu không sử dụng mảng một chiều thì để giải bài toán này ta làm thế
nào? => sử dụng câu lệnh IF-THEN. - Chương trình minh hoạ: Progam nhietdotuan; Var
t1,t2,t3,t4,t5,t6,t7,tb: real; Dem: integer; Begin
Write(‘ nhap vao nhiet do cua 7 ngay:’); readln(t1,t2,t3,t4,t5,t6,t7); tb:=(t1+t2+t3+t4+t5+t6+t7)/7; Dem:=0; Trang 48 If t1> tb then dem:=dem+1; If t2> tb then dem:=dem+1; If t3> tb then dem:=dem+1; If t4> tb then dem:=dem+1; If t5> tb then dem:=dem+1; If t6> tb then dem:=dem+1; If t7> tb then dem:=dem+1;
Writeln(‘nhiet do trung binh tuan:’,tb:4:1);
Writeln(‘so ngay nhiet do cao hon nhiet do trung binh trong tuan:’,dem:2); Readln; End.
=> Như vậy nếu sử dụng câu lệnh IF-THEN thì trong trường hợp tính số lượng ngày trong
năm có nhiệt độ lớn hơn nhiệt độ trung bình ta làm thế nào? => Phải sử dụng nhiều câu lệnh IF-
THEN, bài toán trở nên phức tạp và khó khăn hơn. Để giải quyết vấn đề này người ta đã đưa ra
một kiểu dữ liệu để lưu các giá trị này, đó là kiểu dữ liệu có cấu trúc - Kiểu dữ liệu mảng. Kiểu
dữ liệu mảng cho phép ta có thể truy xuất tới bất kỳ một phần tử nào có giá trị. Các thao tác trên
các biến trở nên dễ dàng hơn. Vậy kiểu mảng là gì ta sang bài học mới.
II. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng
Hoạt động của thầy gian của trò
BÀI 11: KIỂU MẢNG (tiết 19)
- Giáo viên viết đề bài:
- Em nào có thể nêu khái niệm Học sinh
1. Kiểu mảng 1 chiều về mảng. theo dỏi, 5ph
Khái niệm: Là một dãy hữu hạn => Mảng là một dãy hữu hạn ghi chép
bao gồm các phần tử cùng kiểu, được các phần tử, nó có tên, chỉ số bài học.
đặt tên mỗi pt có chỉ số nhất định và phần tử và chiều dài nhất định
có chiều dài nhất định.
- VD mảng nhiệt độ có 7 phần
tử, mỗi phần tử là nhiệt độ của
VD1: Mảng nhiệt độ:
ngày trong tuần. Chỉ số i là vị
trí thứ i của phần tử trong mảng.
Do đó để lưu nhiệt độ của các
ngày trong tuần người ta sử
dụng cấu trúc mảng như trên. Học sinh
- Em nào cho thầy biết khi xây theo dỏi,
+ Xây dựng kiểu mảng:
dựng kiểu mảng một chiều thì ghi chép và .Tên kiểu mảng.
ngôn ngữ lập trình cung cấp cho trả lời. .Số lượng phần tử;
người lập trình những quy tắc
.Kiểu dữ liệu của phần tử.
cho phép xây dựng mảng một
.Khai báo các biến cho mảng
chiều những vấn đề gì?
.Cách tham chiếu đến phần tử.
- Bất kỳ bài toán nào có sử dụng
a. khai báo:
biến cũng cần phải khai báo, Học sinh
C1: Khai báo trực tiếp
vậy khi dùng biến mảng một theo dỏi, 10
Var : array [kiểu chỉ chiều thì ta cần phải khai báo. ghi chép và Trang 49 ph số] of ; Có mấy cách khai báo? trả lời.
- Cú pháp khai báo trực tiếp như
VD2: Khai báo mảng nhiệt độ. thế nào? Var
- Em nào có thể khai báo mảng
Nhietdo : array [1..7] of real;
nhiệt độ đã cho ở trên?
- Trong trường hợp ta cần nhiều
mảng có cùng kiểu mảng thì
C2:Khai báo gián tiếp
làm thế nào? Có phải cần khai
Type = array [kiểu báo nhiều lần như khai báo trực chỉ số] of ; tiếp không? Var : Var
Nhietdo : array [1..7] of real;
VD3: Khai báo mảng nhiệt độ.
Nhietdo2 : array [1..7] of real; Học sinh Type
Nhietdo3 : array [1..7] of real; theo dỏi,
Mangnhietdo = array [1..7] of real; Var
Ta có cách khai báo gián tiếp ghi chép và trả lời. Nhietdo : mangnhietdo;
nhằm hạn chế việc khai báo dài
dòng như trên mà vẫn đảm bảo như bài toán yêu cầu.
- Em nào có thể khai báo gián
tiếp cho biến mảng nhiệt độ ở trên.
- Bây giờ em nào có thể khai
báo một biến mảng cho bài toán
sau theo 2 cách: Khai báo một
biến mảng số nguyên bất kỳ.
VD4: Khai báo biến mảng Học sinh nguyên. theo dỏi, C1: Khai báo trực tiếp ghi chép và
Var m_nguyen : array[1..n] of trả lời. * Chú ý: integer;
- Kiểu chỉ số là một đoạn số nguyên C2: Khai báo gián tiếp
liên tục n1..n2. (n1≤ n2). Cho biết số Type mang = array [1..n] of phần tử có trong mảng. integer;
- Kiểu phần tử là kiểu của các phần Var mang_nguyen : mang; tử trong mảng.
- Cách nhập và truy xuất (tham
chiếu) tới các phần tử trong mảng:
- Em nào có thể cho thầy biết là
+ Tham chiếu tới các phần tử của để đưa ra giá trị nhiệt độ của
mảng được xác định bởi tên mảng ngày thứ 5 trong mảng nhiệt độ
cùng với chỉ số được viết trong cặp ở trên ta làm thế nào? dấu ngoặc [và].
- Ta có thể truy xuất bất kỳ
nhiệt độ của từng phần tử trong
VD: Giá trị của phần tử thứ 5 trong mảng được không?
mảng nhiệt độ là nhietdo[5] = 41.6
- Để nhập nhiệt độ của 7 ngày
trong tuần vào mảng ta làm thế
+ Dùng câu lệnh FOR-DO để nhập nào?
và xuất giá trị phần tử của mảng.
- Dùng câu lệnh FOR-DO để
nhập và xuất giá trị phần tử của VD: Trang 50
* Thao tác nhập nhiệt độ cho 7 ngày mảng. trong tuần:
- Em nào có thể viết đoạn 15 For i:=1 to 7 do
chương trình nhập nhiệt độ của ph Begin 7 ngày trong tuần? Học sinh
Write (‘nhap nhiet do cua ngay
thu’,i:2,’ =’); readln(nhietdo[i]); theo dỏi, End.
- Tương tự em nào có thể viết ghi chép và
* Thao tác xuất nhiệt độ cho 7 ngày đoạn chương trình xuất nhiệt độ làm bài trong tuần:
trung bình của mỗi ngày sau khi For i:=1 to 7 do đã nhập. Begin
Write (‘ nhiet do cua ngay thu’,i:2,’ =’, nhietdo[i]:10:2); End.
- Thao tác gán mảng với mảng: Cho
mảng A và mảng B cùng kiểu. Ta
viết A:=B thì tất cả các giá trị mảng B sẽ nằm trong mảng A . VD:
- Cho a,b là các biến có cùng
Var A,B : array[1..5] of byte; Học sinh
một kiểu mảng và giả sử các i:byte; theo dỏi,
phần tử của biến a đã được gán Begin ghi chép và For i:=1 to 5 do a[i] := i;
giá trị, khi đó ta có thể dùng làm bài B:=A;
lệnh gán b:=a; Sau lệnh gán này ...
các phần tử của biến mảng b có End.
giá trị tương ứng giống như các
- Thao tác gán giá trị cho mảng:
phần tử của biến mảng a. a[i] := i;
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:
+ Nguyên tắc sử dụng mảng
+ Cách khai báo và thao tác trên mảng. 2. Bài tập:
Bài 1: Tìm hiểu và viết chương trình cho bài toán sau: Nhập vào nhiệt độ trung bình của n
ngày bất kỳ trong năm. Tính và tin ra màn hình nhiệt độ trung bình của n này đó và số lượng
ngày trong có nhiệt độ cao hơn nhiệt độ trung bình tính được.
Bài 2: Tìm hiểu trước 2 VD tiếp theo trong sách giáo khoa.
Bài 3: Viết chương trình nhập n phần tử là các số nguyên cho mảng 1 chiều và thực hiện các công việc sau:
a) Đếm xem có bao nhiêu số chẵn, bao nhiêu số lẻ và hiển thị dãy số chẵn, dãy số lẻ trên..
b) Đếm xem có bao nhiêu số nguyên dương, số nguyên âm và hiển thị dãy các số trên. Trang 51
BÀI 11: KIỂU MẢNG (tiết 20-21) - (Ngày soạn: 22/10/2009)

A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích:
- Củng cố và giúp HS hiểu sâu sắc hơn thuật toán tìm kiếm, sắp xếp cơ bản mà HS đã được học ở lớp 10.
- Minh hoạ, củng cố và nâng cao những hiểu biết của HS trong tiết 1 về mảng một chiều.
- Hình thành kĩ năng cơ bản về sử dụng kiểu mảng trong cài đặt chương trình. 2. Yêu cầu:
- Học sinh đã ôn lại thuật toán của lớp 10 về các phép duyệt dãy số, sắp xếp, tìm kiếm...
B. PHƯƠNG PHÁP GIẢNG DẠY
- Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học.
- Thuyết trình, diễn giải, hỏi đáp.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- Thuật toán tìm kiếm, sắp xếp.
- Biết cách thao tác trên mảng 1 chiều.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng.
E. NỘI DUNG GIẢNG DẠY
I. KIỂM TRA BÀI CŨ (10ph):
1. Nêu 2 cách khai báo biến mảng?
2. Để nhập hoặc xuất dữ liệu trong mảng 1 chiều ta làm thế nào?
3. Viết chương trình bài: Nhập vào nhiệt độ trung bình của n ngày bất kỳ trong năm. Tính và
tin ra màn hình nhiệt độ trung bình của n này đó và số lượng ngày trong có nhiệt độ cao hơn
nhiệt độ trung bình tính được. const max = 366;
type mangnd = array[1..max] of real; var nhietdo : mangnd; dem, i, n: byte; tongnd, tb: real; begin
write('nhap so ngay:'); readln(n); tongnd:=0; for i:=1 to n do begin
write('nhap nhiet do ngay thu',i:2,'='); readln(nhietdo[i]); tongnd:=tongnd+nhietdo[i]; end; dem:=0; tb:=tongnd/n; for i:=1 to n do
if nhietdo[i]>tb then dem:=dem+1;
writeln('nhiet do trung binh cua',n:2,'ngay la',tb:10:2);
writeln('so ngay co nhiet do lon hon ',tb:12:2,' la:', dem:2); readln end. Trang 52
II. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng
Hoạt động của thầy gian của trò
- Chúng ta xét một số VD sau:
VD1: Tìm phần tử lớn nhất của dãy số nguyên. Học sinh - Yêu cầu
xác định bài toán: Input và theo dỏi, ghi chép output? bài học.
- Yêu cầu HS đưa ra thuật toán liệt kê đã được học ở lớp 10.
- Nhận xét và đưa ra thuật toán chính xác.
- Em nào có thể thực hiện theo
thuật toán cho một bộ test sau: N=4, a 1=4,a2=2, a3=7,a4=1.
- Yêu cầu đọc SGK và suy nghĩ
về chương trình để trả lời câu Học sinh hỏi. theo dỏi, ghi chép và
? Trong bài này ta cần khai báo những biến trả lời. nào?
- Ta nhận thấy dãy các số
nguyên nên khai báo theo kiểu
biến mảng và mảng này là mảng
các số nguyên có dấu. Ngoài ra
chúng ta có thể khai báo một số
khai báo khac nữa như: khai
báo thư viện, khai báo hằng,
khai báo kiểu dữ liệu mảng. Học sinh
- Một em hãy lên bảng viết
đoạn chương trình nhập giá trị theo dỏi,
cho các phần tử của mảng. ghi chép và trả lời.
- t luận và vừa viết chương trình
vừa giải thích. ở đây chỉ số của
phần tử mang giá trị lớn nhất
chúng ta sẽ chỉ ra phần tử lớn nhất cuối cùng.
? Như vậy chúng ta cần khai báo thêm một biến nào?
- Chúng ta tìm hiểu tiếp VD tiếp theo:
VD2: Sắp xếp dãy số nguyên
bằng thuật toán tráo đổi.
Học sinh theo dỏi,
- Yêu cầu xác định bài toán: ghi chép và Input và output bài toán? trả lời.
- Yêu cầu nều thuật toán tráo Trang 53
đổi đã được học ở lớp 10.
- Từ thuật toán trên ta thực hiện bộ test sau: Với N =4, a 1=4, a2=2,a3=7,a4=1. B1: Nhập N=4 và a 1= 4, a2=2, a 3=7,a4=1. B2: MN(M=4); Lần 1
: B3: M<2(4<2) =>sai. B4:MM-1=4-1=3, i0; B5: ii+1=0+1=1. Học sinh B6: (i=1)>(M=3)=>sai theo dỏi,
B7: (a1=4)>(a1+1=2)=>đúng nên ghi chép và tráo đổi a1và a2 cho trả lời. nhau.=>a 1=2,a2=4. B8: Quay lại B5. B5: i i+1=1+1=2; B6: (i=2)>(M=4)=>sai. B7: (a 2=4)>(a3=7)=>sai. B8: Quay lại B5. B5: ii+1=2+1=3. B6: (i=3)>(M=3)=>sai. Học sinh
B7:(a3=7)>(a3+1=1)=>đúng nên theo dỏi,
tráo đổi a3 và a4 cho ghi chép và nhau=>a3=1, a4=7. làm bài B8: quay lại B5. B5: ii+1=3+1=4.
B6: (i=4)>(M=3)=>đúng nên quay lại B3. Lần 2: … Lần 3:… Lần 4:…
Tương tự như cách thực hiện
lần 1 ta sẽ có dãy được sắp xếp thành dãy không giảm: 1 2 4 7.
? Theo các em qua thuật toán
trên ta cần khai báo những biến nào?
- Nhận xét và kết luận những
biến cần khai báo. Trước hết
chúng ta làm quen với một thuật toán tráo đổi 2số ai và aj nhau như sau: Học sinh Tam:=ai; ai=aj; aj=tam; theo dỏi,
Vì vậy chúng ta cần khai báo ghi chép và các biến sau: trả lời.
N, i, tam, mảng số nguyên, j.
- Chúng ta sẽ có phần khai báo:
tên chương trình, thư viện, Học sinh
hằng, khai báo dữ liệu mảng theo dỏi, Trang 54
như ví dụ 1. yêu cầu các em tự ghi chép và viết vào trả lời.
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:
+ Cách sử dụng mảng trong một số bài toán phức tạp.
+ Thao tác duyệt các phần tử trên mảng. 2. Bài tập:
Bài 1: Viết chương trình nhập vào một dãy số bất kỳ và in ra màn hình dãy số vừa nhập.
Bài 2: Tìm hiểu mảng 2 chiều.
Bài 3: Viết chương trình nhập vào n số nguyên dương rồi tính trung bình cộng và trung bình nhân của nó. Hướng dẫn:
- Khai báo biến n,i kiểu số nguyên. Biến mảng m kiểu số nguyên để chứa dãy số nhập vào.
Các biến tbc,tbn kiểu số thực để chứa kết quả.
- Sử dụng lệnh for tính tổng, tích của n số nguyên dương đó từ đó tính trung bình cộng và trung bình nhân.
Bài 4: Nhập 1 dãy số thực cho mảng a gồm n phần tử, tính trung bình cộng của các số âm. uses crt; const max=100;
type mang=array[1..max] of real; var i,n,d: integer; a:mang; s:real; begin clrscr;
write('nhap so phan tu n= ');readln(n);
writeln('nhap gia tri cho mang:'); for i:=1 to n do begin write('a[',i,']= '); readln(a[i]); end; s:=0; d:=0; for i:=1 to n do if a[i]<0 then begin inc(d); s:=s+a[i]; end;
if d>0 then writeln('trong day co ',d:2,'so am va tong cua chung la',s:8:2)
else writeln('khong co so am nao ca'); readln end.
Bài 5 (BT giao về nhà nhưng không sửa để dành kiểm tra 1t): Nhập 1 dãy số thực cho
mảng a gồm n phần tử, hãy kiểm tra: Trang 55
a) Kiểm tra là dãy số tăng hay không?
b) Dãy có phải là dãy số đan dấu không? (không xét số 0) const max=100;
type mang=array[1..max] of real; var i,n,d1,d2: integer; a:mang; begin
write('nhap so phan tu n= ');readln(n);
writeln('nhap gia tri cho mang:'); for i:=1 to n do begin write('a[',i,']= '); readln(a[i]); end;
d1:=0; d2:=0; (d1 kiểm tra dãy tăng, d2 kiểm tra dãy đan dấu) for i:=1 to n-1 do begin
if a[i] > a[i+1] then inc(d1);
if a[i]*a[i+1]>=0 then inc(d2); end;
if d1=0 then writeln('la day tang')
else writeln('khong phai day tang');
if d2=0 then writeln('day dan dau')
else writeln('day khong dan dau'); readln end. Trang 56
BÀI 11: KIỂU MẢNG (tiết bổ sung không theo PPCT)
A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích:
- Minh hoạ, củng cố và nâng cao những hiểu biết của học về mảng 1 chiều ( cấu trúc, cách
khai báo, cách tham chiếu một phần tử và ích lợi của kiểu dữ liệu này), từng bước hình thành
thao tác trên mảng 2 chiều.
- Hình thành kỹ năng cơ bản về sử dụng kiểu mảng trong cài đặt chương trình.
- Rèn luyện thái độ tích độ tích cực học tập.
- Rrèn luyện tính kiên nhẫn, thích phám phá. 2. Yêu cầu: HS cần nắm được: - Kiểu mảng 1 chiều.
- Biết thao tác trên mảng 2 chiều.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Lấy học sinh làm trung tâm, lấy các VD cụ thể để học sinh nắm vững bài học.
- Thuyết trình, diễn giải, hỏi đáp.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- Khái niệm mảng 2 chiều.
- Cách khai báo mảng 2 chiều.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng.
E. NỘI DUNG GIẢNG DẠY
I. KIỂM TRA BÀI CŨ (10ph):
Bài 1:
Viết chương trình nhập vào một dãy số bất kỳ và in ra màn hình dãy số vừa nhập.
Bài 2: Viết chương trình nhập vào n số nguyên dương rồi tính trung bình cộng của nó. Chương trình: Program Tinh_tb; Var n,i: integer; tbc,tbn :real; a:array[1..100] of integer; Begin
Write(' nhap n>0 : ');Readln(n); tbc:=0; tbn:=1; For i:=1 to n do Begin Write('a[',i,'] >0: '); Readln(a[i]); Tbc:=tbc+a[i]; End; tbc:= tbc/n;
writeln( 'trung binh cong cua day la:', tbc:8:2); Readln End. Trang 57
II. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng
Hoạt động của thầy gian của trò
BÀI 11: KIỂU MẢNG - Giới thiệu VD trong SGK
(trang 59): Tính và đưa ra màn Học sinh
2. Kiểu mảng hai chiều hình bảng cửu chương. theo dỏi,
Các yếu tố xác định mảng hai chiều: - Hỏi: Sử dụng kiến thức mảng ghi chép + Tên mảng một chiều.
một chiều, hãy đưa ra cách lưu bài học.
+ Số phần tử trên một dòng và một trữ bảng cửu chương? => Sử cột.
dụng 9 mảng một chiều, một
+ Kiểu dữ liệu của phần tử.
mảng lưu một hàng của bảng.
+Cách khai báo biến mảng một chiều.
- Hỏi tiếp: Với các lưu trữ như 15
vậy ta cần phải khai báo bao ph
* 2 cách tạo kiểu mảng 2 chiều:
nhiêu biến mảng? => Dùng a) Khai báo:
mảng một chiều ta khai báo 9
Cách 1: Khai báo trực tiếp biến mảng. Học sinh
Var :array[chỉ số - Vậy khó khăn gì khi khai báo theo dỏi,
hang, chỉ số cột] of ;
9 biến mảng => Khó khăn viết ghi chép và
chương trình nhập xuất dữ liệu
Cách 2: Khai báo gián tiếp trả lời. dài.
Type = array [chỉ số
- Để khắc phục khó khăn ta xem
dòng, Chỉ số cột] Of
một mảng một chiều là một tử>;
phần tử, ta ghép 9 mảng một
Var :<tên kiểu mảng>;
chiều thành một mảng hai chiều.
VD: Khai báo mảng 2 chiều dùng Học sinh
cho bảng cửu chương:
- Yêu cầu HS nhận xét về mảng theo dỏi,
hai chiều => Nhận xét: Nếu xem
C1:Khai báo trực tiếp: ghi chép và
mỗi hàng của mảng hai chiều là
Var Bang_CC : array [1..9,1..10] of trả lời.
một phần tử thì ta có thể nói integer;
mảng hai chiều là mảng một
C2: Khai báo gián tiếp
chiều mà mỗi phần tử là mảng
Type Mang = array [1..9,1..10] of một chiều. integer;
- Hỏi: Để mô tả kiểu mảng hai
chiều, ta cần xác định những Var Bang_CC : Mang; yếu tố chính nào? Chú ý:
- Em hãy nêu cách khai báo
- Ngoài mảng 1 và 2 chiều còn có biến mảng 2 chiều. mảng nhiều chiều.
- Để tham chiếu đến các phần tử
- Tham chiếu đến các phần tử: của mảng 2 chiều ta làm thế
Tên_biến_mảng[chỉ_số_dòng, nào? Chỉ_số_cột];
- Em nào nêu cách nhập và xuất Học sinh
- Để nhập dữ liệu và xuất dữ liệu từ dữ liệu của mảng 2 chiều ? theo dỏi,
mảng ta sử dụng 2 vòng FOR-DO - Vậy việc nhập và xuất dữ liệu ghi chép và lồng nhau.
giống trong mảng 1 chiều trả lời.
- Cách nhập dữ liệu trong mảng 2 nhưng dùng câu lệnh FOR-DO chiều: lồng nhau.
Writeln('nhap mang 2 chieu:'); Trang 58 For i:=1 to n do - Các em nghiên cứu VD 1 For j:=1 to n do
trong sách giáo khoa và cho biết Begin
cách tính bảng cửu chương Học sinh Write('a[',i,',',j,']= '); trong chương trình? Readln(a[i,j]); theo dỏi,
- Các em nghiên cứu VD1 trong End; ghi chép và
sách giáo khoa và trả lời các câu
- Cách xuất dữ liệu trong mảng 2 trả lời. hỏi sau: chiều:
+ Để giải bài toán trên cần loại
Writeln(‘xuat DL mang 2 chieu:'); mảng nào, vì sao? For i:=1 to n do
+ Giá trị lưu trong mảng là kiểu For j:=1 to n do Begin số gì?
Write('a[',i,',',j,']= ', a[i,j]:3);
+ Khi cài đặt bài toán trên có End;
cần nhập giá trị cho mảng Học sinh không? Vì sao? theo dỏi, 15
b) Một số ví dụ:
+ Để tính giá trị của bảng cửu ph
VD1: Viết chương trình tính và đưa chương ta làm thế nào? ghi chép và
ra màn hình bảng cửu chương.(SGK) + Để in giá trị của bảng cửu làm bài chương ta làm thế nào?
VD2:Viết chương trình nhập vào từ - Em nào có thể viết chương
bàn phím các phần tử của mảng hai trình cài đặt cho bài toán trên.
chiều B gồm 5, hàng 7 cột với các
phần tử là các số nguyên và một số - Các em nghiên cứu VD 2: Để
nguyên K. Sau đó, đưa ra màn hình nhập các giá trị cho mảng ta
các phần tử của mảng có giá trị nhỏ làm thế nào? Học sinh hơn K.
- Để so sánh các giá trị của theo dỏi,
mảng nhỏ hơn K ta làm thế nào? ghi chép và
- Em nào có thể viết chương làm bài
trình cài đặt cho bài toán trên.
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:
+ Nguyên tắc sử dụng mảng 2 chiều.
+ Cách khai báo và thao tác trên mảng 2 chiều. 2. Bài tập:
Bài 1: Chuẩn bị bài thực hành số 3. Trang 59
BÀI TẬP VÀ THỰC HÀNH SỐ 3 (tiết 23-24) - (Ngày soạn: 28/10/2009)

A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích:
- Nâng cao kĩ năng sử dụng một số câu lệnh và một số kiểu dữ liệu thông qua việc tìm kiếm,
chạy thử các chương trình có sẵn.
- Biết giải một số bài toán tính toán, tìm kiếm đơn giản trên máy tính. 2. Yêu cầu:
- Học sinh nắm được các kiến thức cơ bản về mảng.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Chia lớp thành 2 nhóm nếu không đủ máy, 3HS/1máy.
- Lấy điểm thực hành theo các câu hỏi ý nghĩa các câu lệnh, các ý nhỏ yêu cầu bổ sung trong
SGK (ý b Bài 1, ý b Bài 2).
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- Ôn tập mảng 1 chiều và 2 chiều.
D. PHƯƠNG TIỆN DẠY HỌC
- Sử dụng máy Projector.
- Bảng đen, phấn trắng.
E. NỘI DUNG GIẢNG DẠY I. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng
Hoạt động của thầy gian của trò
BÀI TẬP VÀ THỰC HÀNH SỐ 3 (tiết Học sinh 23-24) theo dỏi, 40 ghi chép và
Bài 1: Tạo mảng A gồm n - Đưa ra nội dung bài thực hành: ph trả lời.
(n<=100) số nguyên, mỗi số có trị Tạo mảng A gồm n (n<=100)
tuyệt đối không vượt quá 300. Tính số nguyên, mỗi số có trị tuyệt đối
tổng các phần tử của mảng là bội không vượt quá 300. Tính tổng
số của một số nguyên dương k cho các phần tử của mảng là bội số trước.
của một số nguyên dương k cho trước.
a. Hãy tìm hiểu và chạy thử chương tình sau đây: Program sum1;
- Yêu cầu học sinh tìm hiểu và Học sinh uses crt;
chạy thử chương trình trên. theo dỏi, const nmax=100; ghi chép và
type myarray= array[1..max] of trả lời. integer; Var a:myarray; S, n, i, k: integer; Begin Clrscr; randomize;
writeln(‘nhập n=:’); readln(n); for i:=1 to n do Học sinh
a[i]:=random(300)- random(300); theo dỏi, Trang 60
for i:=1 to n do write(a[i]:5);
- Yêu cầu một HS trả lời yêu cầu ghi chép và writeln; của bài toán. trả lời.
write(‘nhập k=’);readln(k); s:=0;
For i:=1 to n do
- Nhận xét và yêu cầu HS thực
if a[i] mod k =0 then s:=s+a[i];
hành sửa chương trình ở câu
Writeln(‘tổng cần tính là:’, s);
a)và chạy chương trình vừa Readln sửa.. End. - Suy nghĩ và trả lời.
b. Hãy đưa các câu lệnh sau đây Program sum1;
vào vị trí cần thiết nhằm sửa uses crt;
chương trình trong câu a) để có const nmax=100;
được chương trình đưa ra các số type myarray= array[1..max] of
dương và số các số âm trong mảng. integer; posi, neg: integer Var a:myarray; posi:= 0; neg:=0;
S, n, i, k, posi, neg: integer;
if a[i] >0 then posi:=posi+1 Begin Học sinh
else if a[i]<0 then neg:=neg+1; Clrscr; randomize; theo dỏi, writeln(posi:4, neg:4);
writeln(‘nhập n=:’); readln(n); ghi chép và
Bài 2: Viết chương trình tìm phần for i:=1 to n do trả lời.
tử lớn nhất của mảng và đưa ra a[i]:=random(300)- random(300); 40
màn hình chỉ số và giá trị của phần for i:=1 to n do write(a[i]:5); ph
tử tìm được. Nếu có nhiều phần tư writeln;
có cùng giá trị lớn nhất thì đưa ra write(‘nhập k=’);readln(k);
phần tử có chỉ số nhỏ nhất. posi:= 0; neg:=0;
a. Hãy tìm hiểu chương trình sau if a[i] >0 then posi:=posi+1 đây:
else if a[i]<0 thenneg:=neg+1; program maxelment; writeln(posi:4, neg:4); Học sinh const nmax=100; Readln theo dỏi,
type myarray=array[1..nmax] of End. ghi chép và integer; trả lời. var a:myarray; n, i, j: integer; begin
Bài 2. Hướng dẫn HS thực hành
writeln(‘nhập số lượng phần và làm bài tập.
tử của dãy số, n=’); readln(n);
Bài 2: câu b:?Chương trình có
for i:=1 to n do
cần giữ lại đoạn tìm phần tử có begin
giá trị lớn nhất không?
write(‘phần tử thứ’,i,’=’); ? Để đưa ra tất cả readln(a[i]);
các chỉ số của các phần tử đạt giá end;
trị lớn nhất đó có cần duyệt lại tất j:=1;
cả các phần tử trong mảng
for i:=2 to n do không?
if a[i]>a[j] then j:=i;
write(‘chi so:’,j,’gia trị:’, b. Ta sửa nhu sau: a[j]:4);
for i:=2 to n do readln;
if a[i]>=a[j] then j:=i; end. - Cần giữ lại; Học sinh
- Cần duyệt lại tất cả các theo dỏi, Trang 61
b. Chỉnh sửa chương trình để đưa
phần tử của mảng để làm ghi chép và
ra chỉ số lớn nhất của các phần tử được việc đó. trả lời.
có cùng giá trị lớn nhất.
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (10 ph) 1. Củng cố:
Cho HS dừng thực hành để kiểm tra trong 5phút. Đánh giá những kết quả làm được và chưa làm được của HS.
2. Bài tập về nhà:
1. Viết chương trình để đưa ra chỉ số của các phần tử có cùng giá trị lớn nhất.
2. Chuẩn bị bài thực hành số 4.
3. Viết chương trình nhập n phần tử là các số nguyên dương vào mảng 1 chiều a và
đếm xem có bao nhiêu phần tử bằng k? (k được nhập từ bàn phím). Trang 62
BÀI TẬP VÀ THỰC HÀNH SỐ 4 (tiết 25-26) - (Ngày soạn: 28/10/2009)
A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích:
- Củng cố cho HS những kiến thức và kĩ năng đã có khi lập trình với kiểu dữ liệu mảng.
- Củng cố cho HS một thuật toán sắp xếp các phần tử của một dãy (bằng tráo đổi) và kĩ năng
diễn đạt thuật toán này bằng chương trình sử dụng dữ liệu kiểu mảng.
- Rèn luyện HS một ý thức cần có của người lập trình là viết chương trình với khối lượng
tính toán ít nhất có thể được.
- 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. 2. Yêu cầu:
- Học sinh nghiêm túc trong quá trình thực hành.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Thuyết trình, hướng dẫn thực hành.
C. PHƯƠNG TIỆN DẠY HỌC
Máy chiếu projector, phòng máy, SGK, giáo án.
E. NỘI DUNG GIẢNG DẠY I. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng
Hoạt động của thầy gian của trò
BÀI TẬP VÀ THỰC HÀNH SỐ 4 (tiết - Đưa ra nội dung bài thực hành: Học sinh 25-26)
- Đoạn nào thể hiện một lần tráo theo dỏi,
đổi giá trị của hai phần tử liền kề ghi chép và
Bài 1: Tìm hiểu và chạy thử 30 của mảng? trả lời.
chương trình thực hiện thuật toán ph
sắp xếp dãy số nguyên bằng thuật - For j:=n dowto 2 do
toán tráo đổi với cac giá trị khác For i:=1 to n j-1 do Chú ý theo
nhau của n dưới đây. Qua đó nhận If a[i]>a[i+1] then dõi SGK
xét về thời gian chạy của chương Begin T:=a[i]; nội dung trình. A[i]:=a[i+1]; bài thực hành .
a. {Chương trình SGK trang 65, A[i+1]:=a[i]; End; 66}
- Qua bài thực hành số 3, chúng
b. Khai báo thêm biến nguyên Dem ta thấy có thể tăng biến Dem để
và bổ sung vào chương trình những đếm số lần tráo đổi hay không?
câu lệnh cần thiết để biến Dem tính Để làm điều đó phải đăt câu lệnh Học sinh
số lần thực hiện tráo đổi trong tăng biến Dem ở đâu? theo dỏi,
thuật toán. Đưa kết quả tìm được - Có thể làm được. Và ta đặt nó thực hành ra màn hình. như sau: và trả lời. Dem:integer;
Bài 2: Hãy đọc và tìm hiểu những 30 Dem:=0;
phân tích để viết chương trình giải ph
For j:=n dowto 2 do bài toán: ph
For i:=1 to j-1 do
Cho mảng a gồm n phần tử. Hãy
If a[i]>a[i+1] then
viết chương trình tạo mảng b[1..n], Begin
trong đó b[i] là tổng của i phần tử T:=a[i]; đầu tiên của a. Trang 63 Program subsum1; A[i]:=a[i+1]; uses crt; A[i+1]:=a[i]; Học sinh const nmax=100; Dem:=dem+1; theo dỏi,
type myarray= array[1..max] of End; thực hành integer;
- Hướng dẫn học sinh thựchành. và trả lời. Var a, b:myarray; n, i, j: integer; Bài 2: Begin
- Thực hành theo hướng dẫn của Clrscr; randomize; GV.
writeln(‘nhập n=:’); readln(n);
for i:=1 to n do
- Để ý ta thấy có hệ thức sau: a[i] := random(300)- B[1]=a[1]; random(300); B[i]=b[i-1]+a[i];
for i:=1 to n do write(a[i]:5);
Do đó, ta có thể đổi đoạn {băt writeln;
đầu tạo b} đến{kết thúc tạo b} {Bắt đầu tạo b} bởi hai lệnh:
for i:=1 to n do b[1]:=a[1]; begin
for i:=2 to n do B[i]:= b[i- b[i]:=0; 1]+a[i];
for j:=1 to i do b[i]:=b[i]+a[j]; Học sinh end; theo dỏi, {Kết thúc tạo b} thực hành
for i:=1 to n do write(b[i]:5); và trả lời. readln; end.
Bài 3: Hướng dẫn HS thực hành bổ sung. 20
Bài 3: Viết chương trình nhập n ph
phần tử là các số nguyên dương
vào mảng 1 chiều a và đếm xem có
bao nhiêu phần tử bằng k? (k được nhập từ bàn phím).
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (10 ph) 1. Củng cố:
Cho HS dừng thực hành để kiểm tra trong 5phút. Đánh giá những kết quả làm được và chưa làm được của HS.
2. Bài tập về nhà:
1. Sửa chương trình bài 2 thành chương trình hoàn chỉnh khi thay đổi đoạn {băt đầu
tạo b} đến {kết thúc tạo b} bởi hai lệnh: b[1]:=a[1];
for i:=2 to n do B[i]:=b[i-1]+a[i];
2. Chuẩn bị bài học kiểu xâu. Trang 64
BÀI 12: KIỂU XÂU (tiết 27-28) - (Ngày soạn: 09/11/2009)
A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích:
- Học sinh biết được xâu là một dãy ký tự (có thể coi xâu là mảng một chiều).
- Biết cách khai báo xâu và truy cập phần tử của xâu.
- Sử dụng được một số thủ tục, hàm thông dụng về xâu.
- Cài đặt được một số chương trình đơn giản về xâu. 2. Yêu cầu:
- Học sinh đã nắm được kiểu mảng.
- Hình thành tư duy về thuật toán xử lý kiểu xâu.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Thuyết trình, vấn đáp.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau: - Khai báo kiểu xâu
- Các hàm và thủ tục kiểu xâu.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng, máy chiếu đa năng.
E. NỘI DUNG GIẢNG DẠY II. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng
Hoạt động của thầy gian của trò
BÀI 12: KIỂU XÂU (tiết 27-28)
- Đặt vấn đề: Để lưu trữ thông
tin họ tên của một người, các Học sinh 10
* Một số khái niệm:
kiểu dữ liệu đã học có đáp ứng theo dỏi, ph
- Xâu là một dãy ký tự trong bảng mã được không? ghi chép ASCII. bài học.
- Mỗi ký tự được gọi là một phần tử - Phân tích các phương án của của xâu.
học sinh, từ đó đưa ra yêu cầu
- Số lượng ký tự trong xâu được gọi cần phải sử dụng một kiểu dữ là độ dài của xâu.
liệu mới đó là kiểu xâu.
- Xâu có độ dài bằng 0 được 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ử xâu. Học sinh
- Chỉ số phần tử trong xâu thường - Giới thiệu một số khái niệm và được đánh số là 1 theo dỏi, , 2, 3...
thao tác thường dùng khi làm ghi chép và
- Trong NNLT Pascal, tham chiếu tới việc với xâu ký tự trong lập
phần tử của nó được viết là: trả lời. trình nói chung. [chỉ số]
- Đây là cách khai báo trong 15
* Cách khai báo và thao tác trên NGLT Pascal, đối với các ngôn ph kiểu xâu:
ngữ lập trình khác có thể có 1. Khai báo: cách khai báo khác.
Var : String [độ dài lớn Trang 65 nhất của xâu]; Học sinh Trong đó:
- Nếu không khai báo độ dài tối theo dỏi,
- String: Là tên dành riêng để khai đa cho biến xâu ký tự thì độ dài ghi chép và báo kiểu xâu.
ngầm định của nó là bao nhiêu? trả lời. VD: Var Ten : String[10] ; Ho_dem : String[50] ; Que : String ; Chú ý:
- Nếu không khai báo độ dài tối đa
cho biến xâu ký tự thì độ dài ngầm - Cho xâu ký tự: ‘nGuyen vaN định của nó là 255.
A’. Để xử lý xâu trên cần bao
nhiêu thao tác để được xâu hoàn
VD: Var xaumax : String; chỉnh ‘Nguyen Van A’ ?
- Hằng xâu được đặt trong cặp dấu nháy đơn ‘’.
2. Các thao tác xử lý xâu: Học sinh 15
- Ghép xâu, nối xâu (+): theo dỏi, ph
VD: S1 = ‘HA’, S2 = ‘NOI’
- Làm sao để biết một ký tự là S = S1+S2 = ‘HA NOI’ ghi chép và dấu cách ? trả lời.
- Các phép so sánh xâu (SGK):
- Làm thế nào để xóa đi một
* Pascal sẽ so sánh xâu theo thứ tự vài ký tự? từ trái sang phải.
- Làm thế nào để thêm một vài
* S1 > S2 nếu ký tự đàu tiên khác ký tự ?
nhau giữa chúng kể từ trái sang phải
- Để in chữ hoa thì làm thế
trong xâu S1 có mã ASCII lớn hơn. nào?
VD: S1 = ‘aB’, S2 = ‘AB’
- Làm thế nào để kiểm tra xâu
=> S1 > S2. vì a = 97, A = 65. có bao nhiêu ký tự? * Nếu S1  S2 thì S1 < S2. Học sinh
S1 = ‘Bc’ , S2 = ‘aBcd’
=> Từ đó đưa ra một số thủ tục theo dỏi, => S1 < S2 và hàm chuẩn. ghi chép và
- Một số thủ tục và hàm chuẩn: trả lời.
* Delete(St,vt,n): Xóa đi n ký tự bắt 40
đầu từ vị trí vt trong xâu st ph
VD: St = ‘Song Hong’
Delete(St,1,5) Kết quả
- Ứng với mỗi thủ tục và hàm St1 = ‘Hong’
chuẩn giáo viên lấy VD cụ thể
trong Pascal để các em hiểu.
* INSERT(St1, St2, vt): Chèn xâu
St1 vào xâu St2 bắt đầu từ vị trí vt. Học sinh VD: theo dỏi, St1 = ‘vi -’ ghi chép và St2 = ‘May -tinh’ làm bài
Insert(St1,st2,5) Kết quả
- Trong các VD đã có trong
St2 = ‘May-vi-tinh’
Sách giáo khoa, giáo viên đặt ra
COPY(St, vt, n): Tạo một xâu gồm
n ký tự liên tiếp được lấy trong xâu các câu hỏi gợi mở để học sinh
St bắt đầu từ vị trí vt. viết chương trình.
VD: St1 = ‘Xau-ky-tu’
Copy(St,5,5) Kết quả St2 = ‘ky tu’
LENGTH(St): St = ‘Tin hoc’ Trang 66
Length(St) Kết quả St có độ dài là 7
POS(St1, St2): Cho vị trí xuất hiện Học sinh
đầu tiên của xâu St1 trong xâu St2. theo dỏi,
Nếu xâu St1 không có trong xâu St2 ghi chép và
thì cho kết quả là 0. làm bài VD: St2 = ‘Tin hoc’ St1 = ‘hoc’
Pos(St1,St2) Kết quả xuất hiện đầu
tiên của St1 tại vị trí 5
UPCASE(Ch): Cho giá trị là ký tự
in hoa ứng với ký tự Ch.
Ch:= Upcase(a) cho kết quả là ch = A * Một số VD trong SGK:
VD1:
Viết chương trình nhập vào 2
biến xâu và in ra xâu dài hơn.
VD2: Nhập vào 2 xâu ký tự và kiểm
tra ký tự đầu tiên của xâu thứ nhất có
trùng với ký tự cuối cùng của xâu thứ 2 không ?

III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (10 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:
- Nhắc lại một số khái niệm xâu. - Các thủ tục và hàm. 2. Bài tập:
Bài 1:
Bài 10 (trang 80): Viết chương trình nhập từ bàn phím xâu ký tự S có độ dài không
quá 100. Hãy cho biết có bao nhiêu chữ số xuất hiện trong xâu S. Cách 1: Cách 2:
Write(‘Nhap xau St: ‘); Readln(St); For i:=1 to length(St) do For i:=1 to length(St) do
If ( ‘0’ <= st[i] ) and ( s[i] <= ‘9’ ) Then
If St[i] IN [‘0’..’9’] Then d:=d+1; d:=d+1;
Write(‘So ky tu chu so trong xau: ‘, d);
Write(‘So ky tu chu so trong xau: ‘, d);
Bài 2: Viết chương trình nhập một xâu ký tự. Thực hiện thao tác sao chép xâu tại vị trí bất kỳ. var s1,s2:string; pos, num:integer; begin
write('nhap xau s1: '); readln(s1);
write('vi tri ky tu can sao chep: '); readln(pos);
write('so luong ky tu can sao chep: '); readln(num); s2:=copy(s1,pos,num); writeln('xau moi la: ',s2); readln end.
Bài 3: Nhập 1 xâu, viết ra màn hình xâu dài hơn
Sử dụng câu lệnh: If length(s1) > Length(s2) then Trang 67
BÀI TẬP VÀ THỰC HÀNH SỐ 5 (tiết 30-31) - (Ngày soạn: 16/11/2009)
A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích:
- Khắc sâu thêm phần kiến thức về lý thuyết kiểu xâu kí tự, đặc biệt là các hàm và thủ tục liên quan.
- Nắm được một số thuật toán cơ bản: tạo xâu mới, đếm số lần xuất hiện một kí tự…
- Khai báo biến kiểu xâu.
- Nhập, xuất giá trị cho biến xâu.
- Duyệt qua tất cả các kí tự của xâu.
- Sử dụng được các hàm và thủ tục chuẩn. 2. Yêu cầu:
- Tích cực chủ động trong thực hành
B. PHƯƠNG PHÁP GIẢNG DẠY
- Chia lớp thành 2 nhóm nếu không đủ máy, 3HS/1máy.
C. PHƯƠNG TIỆN DẠY HỌC
1. Chuẩn bị của giáo viên: - Máy chiếu
2. Chuẩn bị của học sinh:
- Sách giáo khoa, bài tập ở nhà
D. NỘI DUNG GIẢNG DẠY I. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng
Hoạt động của thầy gian của trò
BÀI TẬP VÀ THỰC HÀNH SỐ 5 (tiết Bài thực hành 1: Học sinh 30-31) - Tìm hiểu đề bài theo dỏi, 30 thực hành
Bài thực hành 1: Nhập vào một - Giới thiệu nội dung đề bài lên ph và trả lời.
xâu, kiểm tra xem nó có phải là bảng. một pali ndrome hay không?
- Diễn giài: một xâu được gọi là
a) Chạy thử chương trình:
palidrom nếu ta đọc các kí tư từ Var i, x: byte; a, p: string;
phải sang trái sẽ giống khi đọc từ Begin
trái sang phải (Xâu đảo)
Write(‘nhap vao mot xau’);
- Yêu cầu học sinh cho hai ví dụ
về xâu palidrom và một ví dụ Readln(a); x:= length(a); không phải là palidrom p:=’ ‘;
- Tìm hiểu chương trình gợi ý Học sinh
for i:=x downto 1 do p := p+a[i]; - Chiếu chương trình lên bảng theo dỏi,
if a = p then write(‘xau la
- Hỏi: chương trình sau đây có thực hành palidrom’)
chức năng làm gì? kết quả in ra và trả lời. else write(‘xau khong la màn hình như thế nào? palindrome’); readln;
- Thực hiện chương trình để học end.
sinh kiểm nghiệm suy luận của
b) Viết lại chương trình trên trong mình .
đó không dùng biến xâu p.
- Cải tiến chương trình: Học sinh
- Nêu yêu cầu mới: viết lại theo dỏi, Trang 68 Cách 1:
chương trình mà không sử dụng thực hành Var i, x: byte; a: string; biến trung gian p. và trả lời. Palin: boolean;
- Yêu cầu: nhận xét về các cặp ở Begin
vị trí đối xứng nhau trong một
Write(‘nhap xau’); Readln(a); xâu palidrom? x:= length(a);
- Hỏi: kí tự thứ i đối xứng với kí palin := true; tự vị trí nào? for i:=1 to x div 2 do
- Hỏi: cần phải so sánh bao nhiêu
if a[i]<>a[x-i+1] then palin:=false; kí tự trong xâu để biết đươc xâu
if palin then write(‘ la palidrom’) đó là palidrom? else write(‘xau khong la
- Hỏi: dùng cấu trúc lặp để so palindrome’); sánh? readln;
- Yêu cầu học sinh viết chương end. trình hoàn chỉnh Cách 2:
- Yêu cầu học sinh nhập dữ liệu Var i, x: byte; a: string;
cho sẵn của giáo viên và thông Begin báo kết quả Học sinh
Write(‘nhap xau’); Readln(a);
- Xác nhận những bài làm có kết theo dỏi, x:= length(a); quả đúng thực hành i:=1; Bài thực hành 2: và trả lời. while (i<=(x div 2)) and
1. Giới thiệu đề bài: (a[i]=a[x-i+1]) do i:=i+1;
- Chiếu nội dung đề bài lên bảng.
if i>(x div 2) then write(‘ la
nêu mục đích của bài toán palidrom’) - Chia lớp thành hai nhóm else write(‘xau khong la
+ Nhóm 1: đặt câu hỏi phân tích palindrome’);
+ Nhóm 2: trả lời các câu hỏi readln; phân tích Học sinh end. -
Theo dõi những câu hỏi theo dỏi,
phân tích của nhón 1 và trả lời thực hành 30
Bài thực hành 2: Viết chương câu hỏi phân tích của nhóm 2. Bổ và trả lời. ph
trình nhập vào một xâu kí tự S và sung và sửa sai cho cả nhóm 1 và
thông báo ra màn hình số lần xuất nhóm 2.
hiện của mỗi chữ cái tiếng anh Nhóm 1:
trong S (không phân biệt chữ hoa - Hỏi: dữ liệu vào, dữ liệu ra của chữ thường) bài toán?
- Nêu các nhiệm vụ chính cần
thực hiện khi giải quyết bài toán
Bài thực hành 3: Thay thế xâu kí 20
- Hỏi cấu trúc dữ liệu phải sử
tự “anh” bằng xâu “em”. ph dụng như thế nào? var st:string;
- Ta phải sử dụng hàm nào i, vt:integer; Nhóm 2: begin - Vào: một xâu S
write('nhap xau ');readln(st);
- Ra: giải các số ứng với sụ xuất writeln;
hiện của mỗi loại kí tự trong xâu
while pos('anh',st) <> 0 do
- TT:duyệt từ trái sang phải, thêm begin
một đơn vị cho kí tự đọc được vt:= pos('anh',st);
- Cấu trúc dữ liệu: Dem[‘A’..’Z’] delete(st,vt,3); Học sinh - Dùng hàm Upcase() insert('em',st,vt);
2. Độc lập soạn chương trình theo dỏi, end; thực hành vào máy : Trang 69 write('xau moi la ',st);
- Nhập dữ liệu của giáo viên và và trả lời. readln
thực hiện chương trình và để xem end.} xét kết quả
- Thông báo kết quả cho giáo viên. Bài thực hành 3:
- Hướng dẫn học sinh sử dụng các
hàm Pos, Insert, và hàm Delete.
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (10 ph) 1. Củng cố:
Một số thuật toán đơn giản liên quan đến xâu kí tự: kiểm tra một xâu đối xứng, tìm tần
suất xuất hiện của các kí tự có trong xâu.
2. Bài tập về nhà:
Nhập 2 xâu ký tự S1 và S2, kiểm tra xem xâu S2 có phải là xâu đảo của xâu S1 không ? Trang 70
ÔN TẬP HỌC KỲ I (tiết 32-33) - (Ngày soạn: 17/11/2009) LÝ THUYẾT:
Câu 1: So sánh câu lệnh lặp với số lần biết trước và chưa biết trước?
Câu 2: So sánh kiểu dữ liệu mảng và kiểu xâu?
BÀI TẬP: Viết chương trình thực hiện các bài toán sau: (Cần nêu ý tưởng thuật toán trước
khi viết chương trình)
Câu 1: N
hập vào một số nguyên N có 3 chữ số, sau đó in ra màn hình tổng các chữ số của N.
VD: N = 123 kết quả là: 6.
Câu 2: Hoán đổi 2 số nguyên M và N theo 2 cách: dùng biến trung gian và không dùng biến trung gian.
Câu 3: Tính giá trị biểu thức: a b a) 3 S a  2 sin x 2
b) e |a  sin (x)  | x 2 b 4ac c) e
Câu 4: Nhập vào độ dài hai cạnh của tam giác và góc giữa hai cạnh đó, sau đó tính và in ra màn
hình diện tích của tam giác.
Gợi ý: Công thức tính diện tích tam giác: S = 1 . a . b sin( ) 2
Câu 5: Hãy in ra màn hình các số nguyên từ 1 đến 100 sao cho mỗi dòng có 10 chữ số.
Gợi ý: for i := 1 to 100 do
If (i mod 10 = 0) then writeln;
Câu 6: Tính xy 1/ ln n x 1/n ln x
Câu 7: Tính n x . Gợi ý: n x = x1/n = e = e
 exp(1/ n*ln x)
Câu 8: Tính các tổng sau: với N được nhập vào từ bàn phím
S0 = n! = 1*2*...*n {n giai thừa}
Câu 9: Tìm giá trị N nhỏ nhất để: S = n! > A gt := 1; n:= 1;
While gt<=A do {cho vòng lặp giới hạn đến s=a} Begin Inc(n); gt := gt*n; End;
Với A, B được nhập từ bàn phím
Câu 10: Viết chương trình nhập vào số nguyên N. In ra màn hình tất cả các ước số của N.
Ý tưởng: Cho biến i chạy từ 1 tới N. Nếu N MOD i=0 thì viết i ra màn hình. Var N,i : Integer; Begin Clrscr;
Write('Nhap so nguyen N= '); Readln(N); Trang 71 For i:=1 To N Do If N MOD i=0 Then Write(i:5); Readln; End.
Câu 12: Viết chương trình tìm các số có 3 chữ số abc sao cho: abc = a3 + b3 + c3.
Câu 13: Viết chương trình nhập 2 số nguyên ab từ bàn phím (a). Xác định số lượng các
số nguyên lẻ i thỏa mãn điều kiện a ≤ i ≤b. Đưa ra màn hình số lượng tính được và bản thân các
số lẻ này theo thứ tự tăng dần (mỗi số trên 1 dòng). dem:=0; for i:=a to b do if (i mod 2 <> 0) then begin inc(dem); writeln(i); end;
write('vay co ',dem,' so le');
Bài 13: Viết chương trình nhập vào một xâu ký tự từ bàn phím. Đổi xâu ký tự đó sang chữ in
hoa rồi in kết quả ra màn hình.
Ví dụ :Xâu abcdAbcD sẽ cho ra xâu ABCDABCD.
Write(‘Nhap xau St: ‘); Readln(St); For i:=1 to length(St) do St[i]:=Upcase(St[i]);
Write(‘Xau ket qua: ‘, St);
Bài 14: Nhập 1 xâu, viết ra màn hình xâu đó nhưng đã được bỏ tất cả các ký tự là dấu cách Var i,k : Byte ; a,b : String ; Begin
Write('Nhap xau : '); Readln(a) ; k := length(a); b :=' ' ;
For i := 1 to k do if a[i] <> ' ' then b := b+a[i]; Write(‘xau moi la: ’,b); Readln; End .
Bài 15: Viết chương trình nhập một xâu ký tự. In ra màn hình xâu ký tự là chữ hoa, xâu ký tự là chữ thường.
Var s1,s2 : String ; {Chữ thường là: S1[i] in ['a'..'z']} i : Byte ; Begin
Write('Nhap xau s1 : '); Readln(s1) ; s2 := ' ' ;
For i := 1 to length(s1) do If (S1[i] in ['A'..'Z']) then s2 := s2 + s1[i] ;
Write(‘cac ky tu la chu HOA trong xau la: ’,s2); Readln ; End . Trang 72
BÀI 13: KIỂU BẢN GHI (tiết 35)
(Ngày soạn: 28/11/2010; Ngày dạy: ....../......./20....)
A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích:
- Học sinh biết được các khái niệm bản ghi.
- Biết cách khai báo bản ghi. 2. Yêu cầu:
- Học sinh hăng say học tập.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Thuyết trình, vấn đáp.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau: - Khai báo kiểu bản ghi.
- Các thuật toán xử lý trên kiểu bản ghi.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng, máy chiếu đa năng.
E. NỘI DUNG GIẢNG DẠY I. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng
Hoạt động của thầy gian của trò
BÀI 13: KIỂU BẢN GHI (tiết 35) - Xét VD sau:
* Một số khái niệm:
Viết chương trình quản lý các Học sinh 20
thí sinh của một kỳ thi tuyển
VD: Bảng điểm kết quả thi. theo dỏi, ph
sinh. Chương trình cần quản lý
- Kiểu bản ghi được dùng để mô tả ghi chép
các đối tượng có cùng thuộc tính, có được: bài học.
thể có các kiểu dữ liệu khác nhau. + SBD thí sinh. + Họ tên.
- Bản ghi được gọi là Record, mỗi
Record sẽ lưu trữ dữ liệu về một đối + Giới tính ... tượng cần quản lý.
=> Có thể quản lý các thông tin
- Mỗi thuộc tính của từng đối tượng
sẽ tương ứng với từng bản ghi.
trên bằng mảng 1 chiều được không?
- Các ngôn ngữ lập trình thường cho phép xác định:
=> Từ đó đưa ra kiểu bản ghi.  Tên kiểu bản ghi. Học sinh 
- GV lấy 1 VD và cho học sinh Tên các trường. theo dỏi,
nhận biết các thành phần trong  ghi chép và
Kiểu dữ liệu của trường. kiểu bản ghi.  trả lời. Cách khai báo biến.
 Cách tham chiếu đến các trường. 1. Khai báo. 25
* Cách định nghĩa kiểu và khai báo - Ngôn ngữ Pascal không cho ph biến:
phép khai báo biến bản ghi trực Trang 73 Type = Record
tiếp mà phải khai báo biến bản
: ghi thông qua các kiểu bản ghi. Học sinh : theo dỏi, ...............
- Làm thế nào có thể khai báo ghi chép và
: nhiều biến bản ghi cùng một trả lời. End; kiểu ? Var :;
=> Sử dụng kiểu mảng trong đó
phần tử mảng sẽ có kiểu bản VD: ghi. Type HOCSINH = Record Hoten : String [30];
Var :Array[1..n] of Ngaysinh : String [10]; ; Gioitinh : boolean; Toan, ly, hoa : real; - Đưa ra một số VD. End; Var A, B : HOCSINH;
- Từ VD trên em hãy cho biết ý
Lop:array[1..Max]of HOCSINH nghĩa của cách khai báo hai Học sinh
biến bản ghi A, B và Lop. theo dỏi, Trong đó: ghi chép và
- A, B là hai bản ghi đơn chứa tất cả - Khi nhập thông tin vào từ bàn trả lời.
các thông tin Hoten, Ngaysinh, phím ta phải nhập thông tin vào Gioitinh. từ trường.
- Lop là một mảng chứa nhiều bản
ghi (giống như dạng bảng chứa nhiều
dòng) chứa tất cả các thông tin - Chương trình được viết trong Hoten, Ngaysinh, Gioitinh.
NNLT Pascal dùng kiểu bản ghi
để xử lý bằng kết quả thi bao
*Cách truy cập từng trường trong
gồm 2 môn toán và văn của học kiểu bản ghi:
sinh. Sau khi nhập xong sẽ đưa . Học sinh
ra kết quả học tập và hạnh kiểm. theo dỏi, 40 VD: (SGK) A.hoten ghi chép và ph B.ngaysinh trả lời.
Lop[i].Hoten. (i là vị trí bất kỳ). 2. Gán giá trị: Có 2 cách:
C1: Dùng lệnh gán trực tiếp.
- Nếu A, B là 2 bản ghi cùng kiểu ta
có thể gán giá trị của A cho B: VD: A:=B; hoặc B:=A;
C2: Gán giá trị cho từng trường. VD:
A.hoten := ‘nguyen van an’; Readln(A.ngaysinh);
II. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:
- Nhắc lại một số khái niệm kiểu bản ghi.
- Cấu trúc kiểu bản ghi. Trang 74 2. Bài tập: Bài 11 (trang 80-SGK):
a) Nếu cần in ra kiểu xếp loại là GIOI, KHA, TRUNG BINH, YEU thì chương trình
XEP_LOAI cần khai báo như thế nào?
b) Hãy bổ sung thêm vào chương trình XEP_LOAI những lệnh cần thiết để chương trình
đưa ra danh sách học sinh xếp loại A. Program XeploaiA ; uses crt ; Type Hocsinh = Record Ten : String[30] ; Ngaysinh : String[10] ; Diachi : String[50] ; toan, van : real ; Xeploai : Char ; End ;
Var Lop : array[1..100] of Hocsinh ; i, n : Byte ; Tg : Real ; Begin Clrscr ;
Write(' Cho biet so hoc sinh : ') ; Readln(n) ; For i := 1 to n do Begin
Writeln(' Vao thong tin cho hoc sinh thu ',i,' : ') ;
Write (' Ho ten : ') ; readln(Lop[i].ten) ;
Write(' Ngay sinh : ') ; readln(Lop[i].Ngaysinh) ;
Write(' Dia chi : ') ; readln(Lop[i].Diachi) ;
Write(' Diem Toan : ') ; readln(Lop[i].toan) ;
Write(' Diem Van ') ; readln(Lop[i].van) ;
Tg := Lop[i].toan + Lop[i].van ;
if Tg >= 18 then Lop[i].Xeploai := 'A'
Else if Tg >= 14 then Lop[i].Xeploai := 'B'
Else if Tg >= 10 then Lop[i].Xeploai := 'C' Else Lop[i].Xeploai := 'D' End ; Readln ; For i := 1 to n do
Writeln(i : 4, Lop[i].ten : 30 , ' --- Loai : ', Lop[i].Xeploai);
writeln('danh sach hoc sinh xep loai A la:'); for i:=1 to n do
if Lop[i].xeploai='A' then writeln('Hoc sinh o vi tri thu ',i,': ', lop[i].ten); Readln ; End. Trang 75
CÂU HỎI VÀ BÀI TẬP (tiết 36)
(Ngày soạn: 29/11/2010; Ngày dạy: ....../......./20....)
A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích:
- Giúp HS viết một số chương trình đơn giản kiểu bản ghi.
- Hiểu được cấu trúc kiểu bản ghi, bản ghi tổ chức theo mảng, theo kiểu xâu.
- Học sinh giải quyết tốt các bài tập tương tự. 2. Yêu cầu:
- Học sinh chú ý làm bài tập.
- Chuẩn bị tốt bài tập ở nhà.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Hướng dẫn HS nêu ý tưởng thuật toán, sau đó viết chương trình và test.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau: - Ôn tập Kiểu bản ghi.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng.
E. NỘI DUNG GIẢNG DẠY
Câu 1:
Nhập tọa độ điểm M(x,y) và xuất ra màn hình tọa độ vừa nhập của M. TYPE Toa_do=RECORD x,y:Integer; END; VAR M:Toa_do; Begin
Writeln('TOA DO DIEM M(x,y)');
Writeln('-Nhap toa do diem M= ');
Write('+X= '); Readln(M.x); Write('+Y= '); Readln(M.y);
Writeln('-Xuat toa do diem M= (',M.x,',',M.y,’)’); Readln End.
Câu 2: Hãy in ra màn hình kết quả là hai người cùng thông tin: họ tên, tuổi. Trong đó thông tin
của một người đã có sẵn trong Pascal. TYPE NhanVien = RECORD Holot : String[17]; Ten : String[7]; Tuoi : 18..60; END; VAR Nv1, Nv2 : Nhanvien; Begin Writeln('PHEP GAN BAN GHI'); Writeln('Dung toan tu gan'); Nv1.Holot:='Nguyen Van'; Nv1.Ten:='Xuan'; Nv1.Tuoi:=30; Nv2:=Nv1;
Writeln(Nv1.Holot,' ',Nv1.Ten,' ',Nv1.Tuoi,' tuoi');
Writeln(Nv2.Holot,' ',Nv2.Ten,' ',Nv2.Tuoi,' tuoi'); Readln End. Trang 76
Câu 3: Viết chương trình cho bài toán sau: Nhà trường muốn quản lý danh sách học sinh theo
các thông tin sau: Họ tên, quê quán, gioitinh. Hãy nhập thông tin trên và in ra màn hình số lượng
học sinh cùng quê (quê được nhập từ bàn phím). Type Hocsinh = Record Ten : String[30] ; Diachi : String[50] ; gioitinh : string[3] ; End ;
Var Lop : array[1..100] of Hocsinh ; i,n,dem : Byte ; que:string[50]; Begin
Write(' Cho biet so hoc sinh : '); Readln(n) ; For i := 1 to n do Begin
Writeln(' Vao thong tin cho hoc sinh thu ',i,' : ') ;
Write (' Ho ten : ') ; readln(Lop[i].ten) ;
Write(' Dia chi : ') ; readln(Lop[i].Diachi) ;
Write(' gioi tinh: ') ; readln(Lop[i].gioitinh) ; End ;
write('nhap que quan de dem so HS: '); readln(que); dem:=0;
For i := 1 to n do if lop[i].diachi=que then inc(dem);
write('co ',dem,' hoc sinh cung que ',que); Readln ; End. Trang 77
BÀI 14-15: KIỂU DỮ LIỆU TỆP VÀ THAO TÁC VỚI TỆP (tiết 37)
(Ngày soạn: 04/12/2010; Ngày dạy: ....../......./20....)
A. MỤC ĐÍCH VÀ YÊU CẦU 1. Kiến thức :
- Học sinh biết được vai trò của kiểu dữ liệu tệp .
- Học sinh biết được có hai cách phân loại tệp .
- Học sinh biết khai báo biến tệp và các thao tác cơ bản đối với tệp văn bản . 2. Kỹ năng :
- Dần dần hình thành kỹ năng về các thao tác với tệp văn bản . 3. Thái độ :
- Rèn luyện cho học sinh có ý thức lưu trữ dữ liệu một cách khoa học, phòng chống mất
mát thông tin hoặc nhiễm virút .
B. PHƯƠNG PHÁP GIẢNG DẠY
- Sử dụng PP thuyết trình, giảng giải, gợi ý nêu vấn đề.
C. KIẾN THỨC TRỌNG TÂM
Trong bài này cần cung cấp cho học sinh các kiến thức sau:
- Khái niệm kiểu dữ liệu tệp.
- Các thao tác tạo và xử lý tệp.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng, máy chiếu đa năng.
E. NỘI DUNG GIẢNG DẠY
Đặt vấn đề cho bài học:
Trong các giờ thực hành đã học, sau khi chạy một chương trình ta thấy kết quả in lên màn
hình, tuy nhiên muốn sử dụng kết quả đó về sau thì không được. Để khắc phục nhược điểm này
ta nghiên cứu dữ liệu kiểu tệp.
II. NỘI DUNG BÀI HỌC Thời Hoạt động Nội dung ghi bảng
Hoạt động của thầy gian của trò
BÀI 14: KIỂU DỮ LIỆU TỆP VÀ THAO GV: Trong máy tính có những
TÁC VỚI TỆP (tiết 37)
loại bộ nhớ nào? Loại bộ nhớ
nào không bị mất dữ liệu khi tắt Đó là bộ * Phân loại tệp : 10 máy hoặc mất điện? nhớ RAM.
- Theo cách tổ chức dữ liệu : ph
- GV hỏi: Em hãy cho biết dữ Vì nó mất + Tệp văn bản .
liệu trong các kiểu dữ liệu từ dữ liệu khi + Tệp có cấu trúc .
trước đến nay ta sử dụng được mất điện
- Theo cách thức truy cập :
lưu trữ ở loại bộ nhớ nào khi
+ Tệp truy cập tuần tự .
thực hiện chương trình? Vì sao?
+ Tệp truy cập trực tiếp .
- GV diễn giải: Để lưu trữ được + Không
* Các thao tác trên tệp (Hình SGK
dữ liệu ta phải lưu nó ở bộ nhớ mất thông trang 86) : 5 ph
ngoài thông thông qua kiểu dữ tin khi tắt 1. Khai báo
liệu tệp. Mọi ngôn ngữ lập trình máy. Cú pháp:
đều có các thao tác: khai báo + Dung Var : Text ;
biến tệp, mở tệp, đọc/ ghi dữ lượng dữ Trang 78 VD: Var t1, t2: text; liệu, đóng tệp. liệu được 2. Thao tác với tệp. lưu trữ lớn.
- Yêu cầu học sinh nghiên cứu a) Gắn tên tệp
SGK và cho biết đặc điểm của + Có hai 25
kiểu tệp? Có mấy loại kiểu tệp? loại kiểu Cú pháp: ph tệp: tệp có Assign(, );
- Yêu cầu HS trình bày khái cấu trúc và
VD1: Để gán tên tệp baihoc.txt cho niệm tệp có cấu trúc và tệp văn tệp văn
biến tệp f ta có 2 cách: bản. bản.
Assign(f, ‘baihoc.txt’);
Assign(f, ‘D:\baihoc.txt’);
Chú ý: Không tác tác trên tên tệp mà - GV giới thiệu cấu trúc chung
thao tác thông qua biến tệp. của khai báo biến tệp. Học sinh b) Mở tệp theo dỏi, * Mở tệp để ghi:
- Yêu cầu HS tìm ví dụ cụ thể. ghi chép và Cú pháp:
GV giới thiệu các thao tác xử lý trả lời. Rewrite();
tệp như: gán tên tệp, tạo tệp mới VD2:
để ghi, mở tệp để đọc, đóng tệp.
Assign(f, ‘baihoc.txt’); Rewrite(f); * Mở tệp để đọc:
- Yêu cầu HS lấy ví dụ minh Cú pháp:
hoạ mở tệp để ghi thông tin và Học sinh Reset();
mở tệp để đọc thông tin. theo dỏi, VD3: ghi chép và
Assign(f, ‘baihoc.txt’); trả lời. Reset(f);
c) Đọc/ghi tệp văn bản
- GV chiếu sơ đồ làm việc với * Đọc tệp:
tệp lên bảng, hình 16 trang 86 Cú pháp:
SGK. Yêu cầu học sinh giải Read(,);
thích ý nghĩa của sơ đồ. Hoặc Readln(,);
VD: Ghi vào tệp các số nguyên m, n
- GV giới thiệu cấu trúc chung
vào tệp baihoc thông qua biến tệp f:
của thủ tục đọc ghi dữ liệu tệp Read(f, m, n);
văn bản. Yêu cầu HS lấy ví dụ * Ghi tệp: minh hoạ. Cú pháp: Học sinh Write(,);
- HS sinh quan sát cấu trúc theo dỏi, Hoặc
chung và tìm ví dụ minh họa: ghi chép và Writeln(,); trả lời.
VD: In ra màn hình các số nguyên m,
- Readln(f, x1, x2); Đọc dữ liệu
n vừa ghi vào tệp bài học:
từ biến tệp f, đặt giá trị vào hai
Write(f, ’m= ‘,m,’ va n=’,n); biến x1, x2. Trong đó:
- DS biến: Là một hoặc nhiều biến - Writeln(g, ‘Tong la’, x1+x2); đơn.
Ghi vào biến tệp g hai tham số
- DS kết quả: Là một hoặc nhiều dòng chữ ‘Tong la’ và giá trị phần tử. tổng x1+x2.
- Để tác động lên tệp như đếm các pt Trang 79
của tệp thì phải đọc tệp trước khi thao tác. Chú ý:
- Các hàm này thường dùng với Học sinh
- Hàm EOF() trả về giá trị hàm While-Do để kiểm tra vị trí
TRUE nếu con trỏ tệp ở vị trí cuối con trỏ trong tệp VB. theo dỏi, tệp. ghi chép và trả lời.
- Hàm EOLN() trả về giá - Sau khi thao tác với tệp VB
trị TRUE nếu con trỏ tệp ở vị trí cuối cần phải đóng VB bằng thủ tục dòng. Close. d) Đóng tệp Cú pháp: Close();
III. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:
- Gọi một học sinh khái quát lại vai trò của kiểu tệp và phân loại tệp.
- Học sinh khái quát lại các thao tác phải thực hiện khi đọc dữ liệu từ tệp và ghi dữ liệu
vào tệp dựa vào hình 16 SGK).
2. Bài tập: (HS chuẩn bị trước các bài tập dưới đây để tiết sau làm BT và thi KT 15ph)
1. Đọc trước bài 16: Ví dụ làm việc với tệp (trang 87).
2. Nhập và tính tổng 2 số nguyên, giá trị được lưu vào tệp songuyen.txt. var f:text; tong,m,n:integer; begin
assign(f,'D:\songuyen.txt'); rewrite(f);
write('nhap n= '); readln(n);
write('nhap m= '); readln(m); writeln(f,n); writeln(f,m); tong:=n+m; writeln(f,tong); close(f); readln; end.
3. Hiển thị trên màn hình giá trị 2 số nguyên và tổng của chúng ở bài 2.
4. Nhập thông tin của một học sinh gồm họ tên, quê quán, lớp và lưu vào tệp hocsinh.txt.
var hoten, quequan, lop:string; f:text; begin
assign(f,'d:\hocsinh.txt'); rewrite(f);
write('nhap ho va ten:'); readln(hoten); writeln(f,'ho va ten: ',hoten);
write('nhap que quan:'); readln(quequan); writeln(f,'que quan: ',quequan);
write('nhap lop hoc:'); readln(lop); writeln(f,'hoc sinh lop: ',lop); close(f); end.
5. Hiển thị thông tin đã nhập ở bài 4. var f:text; st:string; begin Trang 80
assign(f,'d:\hocsinh.txt'); reset(f); while not eof(f) do begin readln(f,st); writeln(st); end; close(f); readln end. Trang 81
BÀI 16: VÍ DỤ VỀ THAO TÁC VỚI TỆP (tiết 38)
(Ngày soạn: 10/12/2010; Ngày dạy: ....../......./20 )
A. MỤC ĐÍCH VÀ YÊU CẦU 1. Mục đích:
- Biết các lệnh khai báo tệp văn bản
- Biết các bước làm việc với tệp : gán tên cho biến tệp, mở tệp, đọc/ghi tệp,đóng tệp. 2. Yêu cầu:
- Khai báo đúng kiểu tệp.
- Nắm được các bước thao tác với tệp.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Gợi mở nêu vấn đề, chia nhóm thảo luận.
C. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng, máy chiếu đa năng.
E. NỘI DUNG GIẢNG DẠY I. NỘI DUNG BÀI HỌC Thời Nội dung ghi bảng
Hoạt động của thầy
Hoạt động của trò gian
BÀI 16: VÍ DỤ VỀ THAO
Giới thiệu sơ lược những nội
TÁC VỚI TỆP (tiết 38) dung cần quan tâm: - Tệp dữ liệu là gì?
- Tệp lưu trữ dữ liệu như thế Thảo luận theo nhóm
5 ph Câu hỏi thảo luận 1: nào? (không xem tài liệu)
Ưu điểm của tệp trong Gợi ý để HS trả lời tốt câu
quá trình lưu trữ dữ liệu là hỏi: - Đại diện của từng gì?
- Tệp lưu trữ dữ liệu ở bộ nhớ nhóm phát biểu ý kiến
Trả lời: Tệp có thể lưu trữ nhóm mình. nào?
một lượng lớn dữ liệu trên - Lưu trữ dữ liệu như vậy có - Các nhóm nhận xét
bộ nhớ ngoài, vì vậy, dữ ưu điểm gì? đánh giá cho nhóm bạn
liệu sẽ không bị mất khi
cúp điện hoặc tắt máy.
Câu hỏi thảo luận 2:
Gợi ý để HS trả lời sau khi Các nhóm nêu ý kiến
Nêu một số trường hợp trình chiếu
và nhận xét ý kiến của
cần phải dùng tệp? nhóm bạn
Trả lời: Khi lượng thông - Khi dữ liệu cần sử dụng chỉ 10
tin lớn và cần lưu trữ lâu trong 1 ngày thì có cần dùng ph
dài thì chúng ta sẽ dùng tệp không? tệp.
- Lượng dữ liệu có kích thước
như thế nào thì nên lưu trữ ở dạng tệp?.... 10
Câu hỏi thảo luận 3: ph
Trong sơ đồ thao tác với Nghe gợi ý, hướng dẫn
tệp, khi cần nhập dữ liệu Gợi ý để HS trả lời câu hỏi: và thảo luận nhóm để Trang 82
từ tệp phải dùng những -Khi làm việc với tệp dữ liệu có câu trả lời chính xác thao tác nào?
cần có những gì?, những thao nhất.
Trả lời:Gắn tên tệp, mở tác nào là không thể thiếu?
tệp để ghi, ghi dữ liệu vào - Gợi ý phạm vi để HS có cơ Các nhóm nêu ý kiến
tệp, đóng tệp để hoàn tất sở làm bài: bài 14 của nhóm mình và trao việc ghi dữ liệu. đổi ý kiến với nhóm assign (f, fi); bạn rewrite(f); write(f,’ ‘,y,’ ‘,z); close(f);
5 ph Câu hỏi thảo luận 4:
Gợi ý để HS trả lời:
Tại sao cần có câu lệnh - Tệp dữ liệu do chương trình
mở tệp trước khi đọc/ ghi nào quản
lý?. Thảo luận để trả lời câu tệp?
- khi đọc và ghi dữ liệu có gì hỏi
Trả lời: Trước khi sử dụng khác nhau?, và chương trình
tệp phải có câu lệnh mở dịch có thể hiểu được chúng ta Đại diện của từng
tệp để trình dịch biết thực muốn làm gì không nếu không nhóm phát biểu ý kiến
hiện mục đích mở tệp để mở tệp? của nhóm mình.
đọc hay ghi, đồng thời đặt
con trỏ tệp vào vị trí thích hợp. 5 ph
Câu hỏi thảo luận 5:
Hướng dẫn để HS làm bài:
Tại sai phải dùng câu lệnh - Trao đổi ý kiến trong
đóng tệp sau khi đã kết
- Khi đi ra khỏi nhà chúng ta nhóm
thúc ghi dữ liệu vào tệp?
có cần phải đóng cửa nhà lại
Trả lời: Phải dùng câu hay không?, mục đích của
lệnh đóng tệp sau khi đã việc đóng cửa nhà lại là gì?.
kết thúc ghi dữ liệu vào tệp - Việc đóng tệp cũng gần
để hệ thống hoàn tất việc giống như việc đóng cửa nhà. ghi dữ liệu ra tệp.
II. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (10 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:
- Lệnh var tep, tep1: text; có ý nghĩa gì?
TL: Khai báo biến tep và tep1
- Lệnh assign(tep1,’BAITAP.DAT’); có nghĩa là gì?
TL: gắn biến tep1 với tệp dữ liệu có tên là BAITAP.DAT
- Lệnh close(tep1); có ý nghĩa gì?
TL: Đóng tệp có chứa biến tệp là tep1. 2. Bài tập:
Thực hành các chương trình bài 16 (tiết 38) và các bài tập đã làm trong bài học trước (tiết 37). Trang 83
BÀI 17: CHƯƠNG TRÌNH CON VÀ PHÂN LOẠI (tiết 39-40)
(Ngày soạn: 20/12/2010; Ngày dạy: ....../......./....... ) A. MỤC TIÊU 1. Kiến thức
- Biết được khái niệm chương trình con
- Biết được ý nghĩa của chương trình con, sự cần thiết phải viết một chương trình thành các chương trình con.
- Biết được cấu trúc của chương trình con.
- Phân biệt được 2 loại chương trình con là hàm và thủ tục. 2. Kĩ năng
- Nhận biết các thành phần trong phần đầu của thủ tục.
- Nhận biết được hai loại tham số hình thức trong phần đầu của thủ tục
- Nhận biết được cách khai báo hai loại chương trình con cùng với tham số hình thức của chúng. 3. Thái độ
- Rèn luyện phẩm chất của người lập trình như tinh thần hợp tác làm việc theo nhóm, tuân thủ
yêu cầu vì một công việc chung.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Giảng giải, thuyết trình và mô phỏng.
C. KIẾN THỨC TRỌNG TÂM
- Khái niệm chương trình con.
- Cấu trúc chương trình con.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng, máy chiếu đa năng.
E. NỘI DUNG GIẢNG DẠY
Đặt vấn đề cho bài học mới:
Khi viết chương trình giải các bài toán phức tạp, chương trình thường rất dài, người đọc rất
khó nhận biết được chương trình thực hiện công việc gì vấn đề đặt ra là phải cấu trúc chương
trình như thế nào để dễ đọc dễ hiểu. Mặt khác việc giải quyết các bài toán lớn thường đòi hỏi
phải phân thành nhiều bài toán con, vì vậy khi lập trình cần phải chia chương trình thành nhiều chương trình con.
CẤU TRÚC CHUNG CỦA MỘT CHƯƠNG TRÌNH CÓ SỬ DỤNG CTC
PROGRAM Tên_chương_trình; USES CRT; CONST ............; TYPE ............; VAR ............;
PROCEDURE THUTUC[(Các tham số)]; [Khai báo Const, Type, Var] BEGIN ; END;
FUNCTION HAM[(Các tham số)]:; [Khai báo Const, Type, Var] Trang 84 BEGIN ; HAM:=; END;
BEGIN {Chương trình chính} ; THUTUC[(...)]; ; A:= HAM[(...)]; ; END.
II. NỘI DUNG BÀI HỌC Nội dung ghi bảng
Hoạt động của thầy
Hoạt động của trò - Học sinh quan sát 2
BÀI 17: CHƯƠNG TRÌNH CON VÀ
- Chiếu hai chương trình con ctc được giáo viên đưa
PHÂN LOẠI (tiết 39-40) được viết ra, nhằm so sánh trong
1. Khái niệm chương trình con. sẵn: (Có sẵn trong
SGK), một chương trình không đầu về sự khác biệt Khái niệm:
sử dụng ctc, một ct có sử dụng của 2 ct này.
Chương trình con là một dãy lệnh
mô tả một số thao tác nhất định và ctc.
có thể được thực hiện (được gọi) từ - Gọi 1 HS nhận xét về tính ngắn - Nhận xét ct có sử
gọi và dễ hiểu của 2 ct? dụng ctc, ngắn gọi dễ
nhiều vị trí trong chương trình.
- Khi nào nên sử dụng ct con? hiểu hơn so với ct VD: SGK
- Yêu cầu học sinh cho biết k/n không sử dụng ctc.
* Lợi ích của việc sử dụng chương của chương trìng con?
- Đối với bài toán lớn, trình con:
- Có mấy loại ctc? gọi tên của nhiều người viết, ct
- Tránh việc phải viết lặp đi lặp lại dài cần chia ra nhiều cùng một dãy lệnh. chúng? đoạn, có nhiều lệnh
- Hỗ trợ việc thực hiện các chương
lặp đi lặp lại khi đó trình lớn.
- Các em đã sử dụng hàm và thủ
tục chưa? lấy một số hàm và thủ nên sử dụng ctc.
- Phục vụ quá trình trừu tượng hóa. tục đã được học? - HS đọc SGK và trả
- Mở rộng khả năng ngôn ngữ.
- Ý nghĩa của hàm và thủ tục? lời.
- Thuận tiện cho việc nâng cấp, phát triển chương trình.
- Yêu cầu hs so sánh với cấu trúc của ct chính.
2. Phân loại chương trình con.
- Yêu cầu hs giải thích phần khai a) Phân loại: báo, phần thân ctc? - Có hai loại chương
* Hàm (Function): Thực hiện một - GV diễn giảng: Phần đầu ctc có trình con: hàm và thủ
số thao tác nào đó và trả về một giá tên ctc các tham số ctc các tham tục. trị thông qua tên hàm.
số này được gọi là tham số hình - Hàm và thủ tục VD: SGK
thức, khi dùng chương trìng con chuẩn
* Thủ tục (Procedure): Thực hiện ta phải truyền tham số cho chúng, - VD: Hàm sqrt(), hàm
các thao tác nhất định, nhưng tham số được truyền vào đgl abs(), length(), …
không trả về giá trị thông qua tên tham số thực sự. - Hàm sử dụng một số của nó.
- Để sử dụng hàm và thủ tục các thao tác nào đó và trả VD: SGK
em thường viết ở đâu và viết như thế nào?
về một giá trị kiểu đơn giản thông qua tên
b) Cấu trúc chương trình VD: Tìm hiểu CTCon sau:
Cấu trúc chung của ctc hàm. - Thủ tục thực hiện Trang 85
<[phần khai báo]>
các thao tác nhất định, nhưng không trả về * Trong đó: giá trị thông qua tên
- Phần đầu của chương trình con là của nó. bắt buộc phải có. - Giống như kiểu khai
- Phần khai báo có thể là biến, báo của chương trình hằng,… chính.
- Phân thân là một dãy lệnh thực - Khác nhau: Phần đầu
hiện nhiệm vụ nhất định của ctc. của chương trình con
*Chú ý về tham số: là bắt buộc phải có.
+ Tham số hình thức: Là tham số - Phần khai báo có thể
được đưa vào khi định nghĩa là biến, hằng,… chương trình con. - Phân thân là một dãy
- CT con có thể có hoặc không có lệnh thực hiện nhiệm tham số hình thức
vụ nhất định của ctc.
+ Tham số thực sự: Là tham số
được viết trong lời gọi chương trình
- A,B - Viết trong ct chính,
con. Gồm các hằng và biến nằm là biến toàn cục, x1,y1,x2,y2 là viết thủ tục kèm theo
trong dấu ngoặc (và) có tên CTCon. biến cục bộ dùng trong các CT các tham số và kết
+ Biến toàn cục: Là các biến được con congtru. thúc là dấu chẩm phẩy khai báo trong CT chính.
- x1,y1,x2,y2 là các tham số hình (;). Viết hàm trong
+ Biến cục bộ: Là các biến được thức trong thủ tục và hàm dưới lệnh nào đó hoặc trong khai báo trong CTCon. đây: thủ tục, hàm không
+ Mọi CT con sử dụng được biến được viết như lệnh. toàn cục.
- Khi nhập giá trị A và B, thực
+ CT chính và CT con khác không hiện CTCon CONG(A,B) thì A,B
sử dụng được biến cục bộ của CT là tham số thực sự truyền cho con. x1,y1 tương ứng.
- Nếu viết lời gọi CTCon
b) Thực hiện chương trình con.
CONG(2, 5) thì tham số hình
- Lệnh gọi CT con sẽ thực hiện từ thức x1,y1 sẽ nhận giá trị của
trên xuống dưới trong CT chính.
tham số thực sự là x1=1, y1=5.
- Khi thực hiện gọi CT con, các - Tiếp tục thực hiện lời gọi CT
tham số hình thức dùng để nhập dữ con TRU(A,B) tương tự.
liệu vào của tham số thực sự tương - Nếu viết TRU(B,A) thì x2 nhận
ứng. Khi xuất dữ liệu thì tham số giá trị của B, y2 nhận giá trị của
hình thức lưu trữ dữ liệu ra sẽ trả A để thực hiện phép toán trong
giá trị cho tham số thực sự tương CTC. ứng.
II. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (10 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:
- Ctc đóng vai trò quan trọng trong lập trình, đặc biệt là trong lập trình có cấu trúc.
- Các lơị ích cơ bản của ctc. - Có hai loại ctc - Cấu trúc của ctc
- Ctc được gọi thông qua tên của nó. 2. Bài tập:
- Đọc trước nội dung bài: Ví dụ về cách viết và sử dụng ctc, sách giáo khao trang 96.
- Ôn lại các khái niệm về tham số, biến cục bộ, biến toàn cục và cách thực hiện chương trình con. Trang 86
BÀI 18: VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON (tiết 41)
(Ngày soạn: 22/01/2011; Ngày dạy: ....../......./20 )
A. MỤC ĐÍCH – YÊU CẦU 1. Kiến thức:
- Biết được cấu trúc chung và vị trí của thủ tục trong chương trình chính.
- Phân biệt được tham số giá trị và tham số biến trong thủ tục.
- Nắm được khai báo biến toàn cục và biến cục bộ. 2. Kỹ năng:
- Nhận biết được các thành phần trong đầu của một thủ tục.
- Nhận biết được hai loại tham số hình thức trong đầu của một thủ tục.
- Nhận biết được lời gọi thủ tục ở chương trình chính cùng với tham số thực sự. 3. Thái độ:
- Rèn luyện cho học sinh phẩm chất của người lập trình như tinh thần hợp tác, làm việc
theo nhóm, tuân thủ các yêu cầu của một công việc chung.
- Rèn luyện cho học sinh đức tính chịu khó học hỏi, cẩn thận trong lúc làm việc.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Giảng giải, thuyết trình và mô phỏng.
C. KIẾN THỨC TRỌNG TÂM
- Cách viết và sử dụng thủ tục.
- Cách viết và sử dụng hàm.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng, máy chiếu đa năng. E. KIỂM TRA BÀI CŨ:
Câu 1
: Em hãy nêu khái niệm thủ tục? Nêu cấu trúc chung của một chương trình con?
Câu 2: Em hãy lên viết chương trình vẽ một hình chữ nhật.
F. NỘI DUNG GIẢNG DẠY I. NỘI DUNG BÀI HỌC Nội dung ghi bảng
Hoạt động của thầy
Hoạt động của trò
BÀI 18: VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ
- Giới thiệu ví dụ mở đầu.
DỤNG CHƯƠNG TRÌNH CON (tiết 41-
GV: Từ bài cũ dẫn dắt vấn đề sang 42)
bài mới. Khi muốn vẽ một HCN thì
1. Cách viết và sử dụng thủ tục chúng ta phải viết các lệnh như trên VD:Vẽ hình chữ nhật SGK
bảng -> mất thời gian. Để khắc
a) Cấu trúc của thủ tục: HS: Viết chương
phục điều đó chúng ta phải làm gì? trình con.
GV: Cụ thể là chúng ta sẽ viết thủ
tục. Cách viết đó như thế nào hôm
nay chúng ta sẽ cùng tìm hiểu
GV: Chiếu vidu_thutuc1, giới thiệu
cho học sinh cấu trúc thủ tục, lời HS: Quan sát theo Lưu ý: gọi thủ tục. dõi ví dụ - Procedure: Từ khoá
* Tìm hiểu cấu trúc thủ tục HS: Nằm ở phần
- Tên thủ tục: Bắt buộc phải có.
GV: Vị trí của thủ tục nằm ở phần khai báo,sau khái
- Kết thúc thủ tục bằng từ khoá nào trong chương trình chính? báo biến. Trang 87 End;
GV: Cấu trúc chung của thủ tục HS: Ba phần: Tên
- Kết thúc chương trình chính là bao gồm có mấy phần? thủ tục, khai báo
dấu (.) sau End.
GV: Phân biệt sự giống nhau khác của thủ tục, phần
nhau giữa thủ tục và chương trình thân.
b. Ví dụ về thủ tục. chính.
HS: Thủ tục nằm ở
VD: Vẽ hình chữ nhật bằng cách GV: Em hãy nêu cấu trúc chung trong chương trình
xây dựng thủ tục (SGK). của thủ tục? chính, thủ tục mở Các khái niệm: đầu bằng từ
- Tham số hình thức gồm 2 loại: * Tìm hiểu tham số hình thức và Procedure
Tham biến và tham số giá trị tham số thực sự. (tham trị).
GV: Chiếu VD_thutuc2
- Tham biến: Khai báo phải có từ GV: Phân biệt VD_thutuc2 với
khoá Var. Khi gọi chương trình thutuc1.
con, các tham số hình thức là biến GV: Thutuc2 cho phép vẽ nhiều HS: Quan sát,
chỉ được phép thay thế bằng các hình chữ nhật với kích thước khác nghiên cứu trả lời
tham số thực sự là biến và các giá nhau bởi vì có hai tham số câu hỏi.
trị này có thể thay đổi trong quá chdai,chrong. HS: Thutuc2 có
trình thực hiện chương trinh.
GV: Trong chương trình chúng ta thêm chdai, chrong
- Tham số giá trị: Khi khai báo vẽ được bao nhiêu nhiêu hình chữ ở trong phần đầu
không có từ khoá Var ở trước, khi nhật. của thủ tục.
gọi chương trình con, các tham số GV: Vì sao?
giá trị sẽ được thay thế bằng các GV: Đưa ra phương án đúng và
tham số thực sự là giá trị hoặc giải thích cho học sinh. biến.
Trong lời gọi ve_hcn(a,b) vì có
VD1: Viết CT con tính tổng, hiệu vòng lặp (for i:=1 to 4 do ) nên ta
của 2 số nguyên a và b.
vẽ được 4 hình chữ nhật. Giáo viên
chạy chương trình cho học sinh quan sát.
HS: 3 hình chữ nhật
GV: Theo em chdai, chrong, 25, HS: Thông qua lời
10, a, b được gọi là gì? gọi: Ve_hcn(25,10); Ve_hcn(5,10);
GV: Em hãy chỉ ra tham số hình Ve_hcn(a,b);
thức và tham số thực ở ví dụ trên.
a,b: Là tham số thực sự
4/ Tìm hiểu tham số giá trị và tham số biến.
GV: Chiếu ví dụ thambien1 lên bảng.
HS: Quan sát ví dụ và trả lời câu HS: Tham số hỏi.
GV: Trong phần đầu của thủ tục có -
x1, tên thambien1 có gì khác với thủ
y1, x2, y2 đều là tham biến. Nếu tục ve_hcn. HS: chdai, chrong:
CTC tổng không có tham số thì ta HS: Phần khai báo có chữ Var. tham số hình thức.
viết: Procedure cong; và lời gọi GV: Tham số trong chương trình
cong; Khi đó trong thân CTC con có hai chức năng: Đưa dữ liệu
phải sử dụng biến CT chính: vào, đưa kết quả ra. tong := A + B;
HS: x, y thuộc loại
VD2: Tìm hiểu về tham biến. GV: Quan sát ví dụ thambien1 cho Trang 88 (SGK).
biết x, y thuộc loại tham biến nào? tham số biến.
GV: Chiếu ví dụ tham bien2, x, y HS: x: Tham số giá
thuộc loại tham số nào? trị, y: Tham số biến
GV: Chiếu và cho chạy chương
trình các ví dụ để cho học sinh nắm
rõ hơn về tham số biến và tham số giá trị.
II. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau: 2. Bài tập:
1. Đọc trước nội dung mục 2: Cách viết và sử dụng hàm.
2. Viết chương trình con dạng thủ tục tính tích, thương của 2 số A và B. Và cho biết các
cách viết khác nhau về tham số, CTC không có tham số, cách thực hiện CTC.
3. Viết chương trình con tính diện tích các hình tròn, hình thang, hình chữ nhật khi biết độ dài của các cạnh. Const Pi: real =3.14; Var r, a, cr, cd: real; chon: integer;
Procedure dien_tich_hinh_tron (r: real); Var dt: real; Begin dt:=Pi*2*r;
Writeln('dien tich hinh tron la :', dt:6:2); End;
Procedure dien_tich_hinh_vuong (a: real); Var dt: real; Begin dt:=a*a;
Writeln('Dien tich hinh vuong la :', dt:6:2); End;
Procedure dien_tich_hinh_CN (cr, cd: real); Var dt:real; Trang 89 Begin dt:=(cr+cd)/2;
Writeln(' Dien tich hinh chu nhat la :', dt); End; Begin
Writeln('nhap ban kinh :'); Readln(r);
Writeln('Nhap canh hinh vuong:'); Readln(a);
Writeln('nhap chieu rong hinh chu nhat:'); Readln(cr);
writeln('Nhap chieu dai hinh chu nhat'); readln(cd);
Writeln('chon:'); Readln(chon); dien_tich_hinh_tron(r); dien_tich_hinh_vuong(a); dien_tich_hinh_CN(cr,cd); Readln; End.
4. Viết chương trình con dạng thủ tục để tính N! var n,gt:integer;
Procedure tinhgt(n: integer; var gt:integer); var i:integer; begin if i=0 then gt:=1 else begin gt:=1; for i:=1 to n do gt:=gt*i; end; end; BEGIN
write('nhap n= '); readln(n);
write('giai thua cua ',n,' la: '); tinhgt(n,gt);
write(‘Giai thua cua 2 so la: ’,gt); readln; Trang 90
BÀI 18: VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ DỤNG CHƯƠNG TRÌNH CON (tiết 42)
(Ngày soạn: 22/01/2011; Ngày dạy: ....../......./20 )
A. MỤC ĐÍCH – YÊU CẦU 1. Kiến thức:
- Học sinh biết cấu trúc chung của một hàm (Function).
- Học sinh nắm được sự giống nhau và khác nhau giữa thủ tục và hàm.
- Học sinh nhận biết được các thành phần trong đầu hàm.
- Học sinh nhận biết được câu lệnh sử dụng hàm ở chương trình cùng các tham số thực sự. 2. Kỹ năng:
- Nhận biết được các thành phần trong đầu của một hàm. 3. Thái độ:
- Rèn luyện cho học sinh phẩm chất của người lập trình như tinh thần hợp tác, làm việc
theo nhóm, tuân thủ các yêu cầu của một công việc chung.
- Rèn luyện cho học sinh đức tính chịu khó học hỏi, cẩn thận trong lúc làm việc.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Giảng giải, thuyết trình và mô phỏng.
C. KIẾN THỨC TRỌNG TÂM
- Cách viết và sử dụng hàm.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng, máy chiếu đa năng.
E. KIỂM TRA BÀI CŨ:
1. Em hãy cho biết cấu trúc chung của thủ tục (Procedure) và giải thích rõ từng thành phần?
2. Làm các bài tập 2, 3, 4 đã nêu trong bài học trước.
F. NỘI DUNG GIẢNG DẠY I. NỘI DUNG BÀI HỌC Nội dung ghi bảng
Hoạt động của thầy
Hoạt động của trò
BÀI 18: VÍ DỤ VỀ CÁCH VIẾT VÀ SỬ
GV: - Chúng ta đã tim hiểu về thủ Lắng nghe.
DỤNG CHƯƠNG TRÌNH CON
tục (Procedure), đây là chương (tiết 42)
trình con không có giá trị trả về.
2. Cách viết và sử dụng hàm
Hôm nay chúng ta sẽ tìm hiểu về
* Cấu Trúc của Hàm:
một loại chương trình con có giá trị
Function [(Danh sách trả về đó là Hàm (Function). Vậy tham số)]:;
Hàm và Thủ tục khác nhau như thế [( Phần khai báo)];
nào? Cách viết và sử dụng Hàm Begin như thế nào? [];
- Ghi tựa đề bài và phần 2. := ; end;
GV: Xét bài toán tìm số nhỏ nhất trong 2 số:
* Sự giống nhau và khác nhau a và b.
giữa thủ tục và hàm:
-Đặt câu hỏi: Theo các em bài toán Giống nhau:
trên cho ta kết quả là gì? Lắng nghe và trả
- Đều là chương trình con, có cấu
lời. (Học sinh trả lời Trang 91
trúc giống một chương trình. được).
- Đều có thể chứa các tham số, GV: Vậy thì bài toán trên chúng ta
cùng tuân theo các quy định về không thể sử dụng thủ tục mà phải
khai báo và sử dụng các loại tham sử dụng hàm. Các em hãy quan sát
số này. (Có thể không có tham cấu trúc chung của Hàm như sau: số)
 Dùng máy chiếu chiếu cấu trúc Khác nhau: của hàm.
- Hàm luôn trả về một giá trị  Các em hãy chỉ ra những điểm
thuộc kiểu xác định thông qua tên
giống nhau và khác nhau giữa
hàm. (các kiểu dữ liệu đơn giản: Thủ tục và Hàm? integer, real, boolean,
char,  Kiểu dữ liệu là các kiểu nào? HS: Thảo luận string). nhóm trong thời
- Đầu hàm bắt đầu bằng từ khóa gian 5 phút và một
Function còn thủ tục bắt đầu với GV: Nhận xét, giải thích và chốt em trả lời. từ khóa Procedure. lại. - Các nhóm khác
- Phải chỉ ra kết quả của hàm nhận xét và bổ
thuộc kiểu dữ liệu nào.
GV: Các em xem ví dụ 1 SGK sung.
- Trong thân hàm thường có câu trang 101 và cho biết việc sử dụng
lệnh gán giá trị cho tên hàm. Hàm như thế nào? Tự ghi bài.
- Khi viết các bài toán có giá trị
luôn thay đổi, mà giá trị này cần
in Kết quả thì sử dụng hàm vì kq GV: Nhận xét, giải thích và chốt lại.
lấy thông qua tên hàm mà không Xem ví dụ 1 SGK
cần tham biến. Nếu viết dạng thủ trang 101 và thảo luận
tục thì phức tạp vì phải khai báo nhóm trong 3 phút
thêm tham biến để lấy giá trị thay Một em trả lời câu đổi. hỏi.
* Cách sử dụng hàm:
Việc sử dụng hàm giống như Các nhóm khác
việc sử dụng các hàm chuẩn. nhận xét và bổ
=> Khi viết lệnh gọi tên hàm - Học sinh nêu ý tưởng giải bài sung.
gồm: Tên hàmtham số thực toán VD 1>
sự tương ứng với các tham số Tự ghi bài. hình thức. Tìm UCLN của tử
VD 1: Rút gọn phân số (SGK) số và mẫu số, sau
- Nếu ý tưởng giải bài toán.
đó lấy tử số và mẫu - Chương trình (SGK). số chia cho UCLN.
- Cách thực hiện bài toán theo chương trình:
- Học sinh nêu ý tưởng và thực hiện VD: nhập tuso=21, mauso=27
bài toán tìm giá trị nhỏ nhất của 3 7 => a = 3, kq = . số a, b, c. 9
VD 2: Tìm Min 3 số (SGK).
II. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:
+ Ví dụ trên thực hiện chương trình gì?
+ Hãy cho biết kết quả trả về của hàm MIN?
+ Giải thích lời gọi hàm: Min(Min(a,b),c)?
+ Hãy chỉ ra tham số hình thức, tham số thực sự, biến toàn cục và biến cục bộ? Trang 92 2. Bài tập:
Bài 1:
Viết CTC dạng hàm để tính n! = 1.2...n.
Ý tưởng: Vì bài toán này trả về 1 giá trị duy nhất nên ta dùng hàm.
Bài 2: Viết hàm tìm Max của 2 số thực x,y.
Bài 3: Viết hàm XMU(x:Real;n:Byte):Real; để tính giá trị xn. Trang 93
BÀI TẬP VÀ THỰC HÀNH 6 (tiết 43-44)
(Ngày soạn: 20/02/2011; Ngày dạy: ....../......./2011)
A. MỤC ĐÍCH – YÊU CẦU
- Rèn luyện các thao tác xử lí xâu, kĩ năng tạo hiệu ứng chữ chạy trên màn hình.
- Nâng cao kĩ năng viết, sử dụng chương trình con.
- Tổ chức những hoạt động trong phòng máy để học sinh có được các kĩ năng cơ bản trong việc
tổ chức và sử dụng chương trình con trong lập trình.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Thuyết trình, vấn đáp.
C. PHƯƠNG TIỆN DẠY HỌC
- Máy chiếu, máy tính, phông chiếu hoặc bảng, phòng thực hành.
E. NỘI DUNG GIẢNG DẠY I. NỘI DUNG BÀI HỌC Hoạt động của Nội dung ghi bảng
Hoạt động của thầy trò
BÀI TẬP VÀ THỰC HÀNH 6 (tiết 43-44)
GV: Cho bài tập ( làm tiếp Bài tập 1: theo bài tiết trước)
a) Tìm hiểu cách xây dựng 2 thủ tục sau:
+ Hướng dẫn học sinh đưa ra
- Thủ tục CatDan(s1,s2); giải thuật .
- Thủ tục CanGiua(s);
+ Giáo viên hướng dẫn cách
b) Viết chương trình nhập một xâu kí tự từ viết .
bàn phím và đưa xâu đó ra màn hình có dạng Hướng dẫn cách khai báo
dòng chữ chạy giữa màn hình văn bản xâu ký tự: 25x80.  Cách 1 : gián tiếp . Uses crt; TYPE Type str79 = string[79]; Tên chuoi1 = Var s1, s2: str79; string[ spt tối đa ]; stop: boolean; Tên chuoi1 = HS: thực hành
Procedure catdan(s1:str79; var s2: str79); string; trên máy. begin Var biên1: tên chuoi 1;
s2:=copy(s1,2,length(s1)- 1) + s1(1); Biến 2 : ten chuoi 2; end; Cách 2: Trực tiếp .
procedure cangiua(var s:str79); VAR biến 1: string[spt var i, n: integer; tối đa]; begin Biến 2: string; n:= length(s); n:= (80-n) div 2;
GV: cho học sinh giải bài
for i:= 1 to n do s:=’ ‘ + s; trên máy. end; begin
GV: hướng dẫn học sinh sửa clrscr; lỗi.
write(‘Nhap xau s1:’); readln(s1); cangiua(s1); clrscr; Trang 94 stop:=false; while not (stop) do begin gotoxy(1,12); write(s1); delay(500); catdan(s1,s2); s1:= s2; stop:= keypressed; end; readln; end.
c) Bổ sung câu lệnh theo yêu cầu SGK.
Bài tập 2: Thực hành các bài tập dạng thủ
tục và dạng hàm là các bài tập về nhà đã HS: thực hành giao: GV: Cho bài tập : trên máy. a) Tích và thương 2 số.
+ Học sinh đưa ra giải thuật b) Diện tích các hình. . c) Tính xy.
+ Giáo viên hướng dẫn học d) Tính n!
sinh giải thuật và cách viết chương trình.
II. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (15 ph)
Bài 1:
Thực hành trên máy chương trình sau để tìm hiểu về tham số và cách thực hiện chương trình con trên máy tính:
* Bạn hãy in và chạy thử 3 chương trình sau đây:
a. Program Tham-so;

Var
a, b: Integer;
(*==========================================*)
Procedure VD-thamso(x,y: interger); Begin
x:=x+1; y:= y+1;
Writeln(x:5,y:5); End;
(*==========================================*) Begin
a:=1; b:=4
VD-thamso(a,b)
Writeln(a:5,b:5) END. Kết quả chạy sẽ là: 2 5 1 4
b. Program Tham-so;
Var
a,b: interger
(*==========================================*)
Procedure VD-thamso(x:integer; Var y: integer) Begin
x:= x+1; y:=y+1; Trang 95
Writeln(x:5, y:5); End;
(*==========================================*)
Begin {Chương trình chính}
a:=1; b:=4;
VD-thamso(a,b);
Writeln(a:5,b:5); END. Kết quả chạy sẽ là: 1 4 1 5
c. Program Tham-so;
Var
a, b: integer;
(*==========================================*)
Procedure VD-thamso(Var x, y: integer) Begin
x:= x+1; y:= y+1;
Writeln (x:5, y:5); End;
(*==========================================*)
Begin {chương trình chính}
a:= 1; b:=4;
VD-thamso(a,b);
Writeln(a:5,b:5); END. Kết quả chạy sẽ là: 2 5 2 5
Bạn hãy giải thích xem kết quả tại sao lại như vậy (phân biệt số tham biến và tham trị). Giải thích:
a. Cả 2 tham số x và y của thủ tục VD_ thamso đều là tham trị cho nên khi gọi thủ tục
VD_thamso (a, b) với a=1; b=4 thì x=1; y=4 ,sau đó x,y bị thay đổi giá trị (cộng thêm 1) và trên màn hình in ra: 2 5
Kết thúc thủ tục này biến a và b không bị thay đổi giá trị vì vậy lệnh Writeln (a:5, b:5); in ra: 1 4
b. Thủ tục VD_ thamso sử dụng tham trị x và tham số biến y cho nên khi gọi thủ tục
VD_thamso(a, b) thì cũng giống a. màn hình hiện: 2 5
Tuy nhiên khi kết thúc thủ tục biến a vẫn giữ nguyên giá trị, c ̣n biến b bị thay đổi nên màn hình hiện: 1 5
c. Thủ tục VD_thamso sử dụng cả 2 tham số hình thức là tham biến cho nên khi gọi thủ tục
VD_thamso (a, b) thì màn hình xuất hiện: 2 5
Kết thúc thủ tục này cả 2 biến a, b đều bị thay đổi cho nên lệnh Writeln(a:5, b:5) in ra màn hình 2 5 Trang 96 KIỂM TRA 15 ph
Viết chương trình chính cho các bài toán sau: Đề 1
Bài 1 (6 đ): Nhập vào 3 số nguyên dương a, b, c. Hãy kiểm tra xem a, b, c có lập thành độ dài 3
cạnh của 1 tam giác không?
Bài 2 (4 đ): Viết chương trình nhập một xâu ký tự. In ra màn hình xâu ký tự trên và số lần xuất
hiện của từng ký tự chữ cái trong xâu. (Tương tự bài 5 - Ôn tập kỳ 1) Đề 2
Bài 1 (6 đ): Nhập số nguyên N, kiểm tra N là số chẵn hay số lẻ?
Bài 2 (4 đ): Viết chương trình nhập một xâu ký tự. In ra màn hình xâu ký tự trên và số lần xuất
hiện của từng ký tự chữ cái trong xâu. (Tương tự bài 5 - Ôn tập kỳ 1) Đề 3
Bài 1 (6 đ): Nhập số nguyên N, kiểm tra N là số dương hay số âm?
Bài 2 (4 đ): Viết chương trình nhập một xâu ký tự. In ra màn hình xâu ký tự trên và đếm xem có
bao nhiêu ký tự giống ký tự X, X được nhập từ bàn phím. (Tương tự đề kiểm tra kỳ 1) Đề 4
Bài 1 (6 đ): Viết chương nhập vào 1 số nguyên dương bất kỳ, thông báo số vừa nhập có chia hết cho 3 và 5 không?
Bài 2 (4 đ): Viết chương trình nhập một xâu ký tự. In ra màn hình xâu ký tự trên và đếm xem có
bao nhiêu ký tự giống ký tự X, X được nhập từ bàn phím. (Tương tự đề kiểm tra kỳ 1) Trang 97
BÀI TẬP VÀ THỰC HÀNH 7 (tiết 45-46)
(Ngày soạn: 22/02/2011; Ngày dạy: ....../......./2011)
A. MỤC ĐÍCH – YÊU CẦU 1. Kiến thức
+ Nâng cao kỹ năng viết, sử dụng chương trình con. 2. Kĩ năng:
+ Rèn luyện cho học sinh kĩ năng lập trình giải quyết một số bài toán đơn giản.
+ Rèn luyện học sinh có được những kĩ năng cơ bản trong việc tổ chức và sử dụng
chương trình con trong lập trình.
+ Biết cách viết một chương trình có cấu trúc để giải một bài toán trên máy tính. 3. Thái độ:
+ Tích cực trong học tập, hứng thú tiếp thu kiến thức mới.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Thuyết trình, vấn đáp.
C. PHƯƠNG TIỆN DẠY HỌC
- Máy chiếu, máy tính, phông chiếu hoặc bảng, phòng thực hành.
E. NỘI DUNG GIẢNG DẠY I. NỘI DUNG BÀI HỌC Hoạt động của Nội dung ghi bảng
Hoạt động của thầy trò
BÀI TẬP VÀ THỰC HÀNH 7 Ổ định lớp Độ dài của (tiết 45-46) của các cạnh, Tiết 1
Để mô tả hay quản lý điểm chu vi, diện tích,
hay tam giác ta dùng kiểu dữ tính chất của liệu nào? tam (đều, cân
Câu 1: Tại sao các chương trình con: hay) vuông của
Kh_cach, chuvi, dientích, đều là hàm mà Khi biết toạ độ ba đỉnh của
một tam giác thì ta có thể tam giác đó. không là thủ tục?
tìm được những yếu tố nào?
Tại sao các hàm trên trả về cho ta một số Trả lời: thực?
-> Mỗi yếu tố là một
chương trình con trong lập +Procedure
trình -> Theo yêu cầu của đề daicanh (var
bài ta cần xây dựng những R:tamgiac, var chương trình con nào? a,b,c: real);
Hãy tìm hiểu và thảo luận + function chuvi
chương trình ở câu b và trả (varR:tamgiac) :
Câu 2: Tại sao các chương trình con lời các câu hỏi sau:
hienthi, tinhchat, dacanh lại là thụ tục mà real ;
Câu 1: Tại sao các chương + function không là hàm?
trình con: Kh_cach, chuvi, dientich (var
dientích, đều là hàm mà R:tamgiac):real; không là thủ tục? + function
Tại sao các hàm trên trả kh_cach (var
về cho ta một số thực? P,Q: Diem):real;
Câu 2: Tại sao các chương + Procedure
trình con hienthi, tinhchat, hienthi (var
dacanh lại là thụ tục mà R:tamgiac); Trang 98 không là hàm? + Procedure
Yêu cầu học sinh copy bài tinhchat (var
chuẩn bị ở nhà vào máy (hay R:tamgiac, var
giáo viên chuẩn bị sẵn) và deu,can,vuong:
tiến hành kiểm tra lỗi và boolean); chạy thử. Tra lời: trả về giá trị qua tên
Quan sát giúp đỡ học sinh hàm. khi gặp khó khăn. Do khoảng các hai điểm có thể là số thực -> chuvi, dientich cũmg có thể là số thực. Không trả về một giá trị cụ thể Phân tích bài toán: Tiết 2 + Input là gì? Dòng đầu tiên uses crt; + Output là gì? chứa số N type N dòng tiếp Diem=record
+ Input và Output nằm ở theo chứ toạ độ x,y: real; đâu? ba đỉnh của tam end; giác. tamgiac=record
-> Vì vậy để lập trình giải Dòng đầu là số A,B,C: Diem;
bài toán ta cần có những tam giác đều end; thao tác nào? Dòng thứ hai là const eps = 1.0E-6;
Hướng giải quyết bài toán: số tam giác cân var T:tamgiac;
+ Bài toán cần có những (không đều). d,cn,v:boolean;
chương trình con nào? Có Dòng thứ ba là n,i,deu,can,vuong:word; thể khai thác ở đâu? số tam giác f,f1:text; vuông.
function kh_cach(P,Q:Diem):real;
+ Các thao tác đọc tệp văn begin bản. Trả lời: nằm
kh_cach:=sqrt((P.x-Q.x)*(P.x-Q.x)+(P.y-
+ Các thao tác đếm các loại trong hai tệp có Q.y)*(P.y-Q.y)); tam giác. tên là end;
+ Các thao tác để ghi kết tamgiac.dat và
procedure daicanh(var R:tamgiac; var a,b,c: quả đạt được. tamgiac.out. real); begin
-> Các thao tác thực hiện a:=kh_cach(R.B,R.C);
trên chương trình chính( b:=kh_cach(R.A,R.C);
sử dụng máy chiếu hoặc Cần 3 chương c:=kh_cach(R.A,R.B); ghi lên bảng): trình con: end;
- khởi tạo các biến kh_cách, đếm. daicanh,
procedure tinhchat(var R:tamgiac; var
- Mở tệp tamgiac.dat tinhchat.(sử deu,can,vuong:boolean); để đọc. dụng các Trang 99 var a,b,c: real; - Đọc số N. chương trình có begin
- Từ dòng 1 đến dòng sẵn ở câu deu:=false; N thực hiện các thao can:=false; tác : b). vuong:=false;
+ Đọc 6 số vào 6 biến Theo dõi daicanh(R,a,b,c); (readln(T.A.x,T.A.y,T.B.x,T Thực hành trên
if (abs(a-b) < eps) and (abs(a-c).B.y,T.C.x,T.C.y)) máy then
+ Gọi thủ tục tính chất. Chạy thử và begin
+ Kiểm tra điều kiện và kiểm tra lỗi. deu:=true; đếm. Kiểm tra can:=true;
- Mở tệp tamgiac.out chương trình end để ghi kết quả. với các tệp else
Yêu cầu học sinh lập trình thông số có sẵn
if (abs(a-b)giải bài toán. và đối chiểu kết (abs(b-c) quả. can:=true; if (abs(a*a+b*b-c*c) (abs(a*a+c*c-b*b) or(abs(c*c+b*b-a*a) vuong:=true; end; begin deu:=0; can:=0; vuong:=0; assign(f,'tamgiac.dat'); reset(f); readln(f,n); assign(f1,'tamgiac.out'); rewrite(f1); for i:=1 to n do begin
readln(f,T.A.x,T.A.y,T.B.x,T.B.y,T.C.x,T.C
Quan sát và giải đáp thắc .y); mắc của học sinh. tinhchat(T,d,cn,v);
Hướng dẫn học sinh chạy if d then deu:=deu+1
thử và kiểm tra chương trình else
trên tệp có sẵn bằng cách đổi begin tên tệp tamgiac.dat thành if cn then can:=can+1; các tên tệp có sẵn. if v then vuong:=vuong+1; end;
writeln(f1,'co: ',deu,'tam giac deu');
writeln(f1,'co: ',can,'tam giac can(khong deu)');
writeln(f1,'co:',vuong,'tam giacvuong'); writeln(f1); end; close(f); close(f1); end. Trang 100
II. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (10 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:
- Thủ tục, hàm , tham số giá trị, tham số biến, tham số thực sự, biến tòan cục, biến cục bộ.
- Tìm hiểu một số chương trình con liên quan đến tam giác. 2. Bài tập:
1. Viết chương trình nhập vào số tự nhiên N rồi thông báo lên màn hình số đó có phải là số nguyên tố hay không.
2. Viết chương trình nhập vào số nguyên N. In ra màn hình tất cả các ước số của N. For i:=1 To N Do If N MOD i=0 Then Write(i:5);
3. Viết chương trình nhập dãy N số nguyên. Tính tổng bình phương của các số dương và
tổng bình phương của các số âm.
4. Với giá trị N được nhập từ bàn phím, hãy thực hiện các công việc sau:
a) Nhập N số nguyên và tính tổng giá trị các số âm, tổng giá trị các số dương.
b) Tìm và in ra giá trị, vị trí của số lớn nhất, số nhỏ nhất. {trường hợp có nhiều GTNN và
GTLN giống nhau thì in ra tất cả các vị trí đó: dùng vòng FOR i và If A[i] = GTLN để in
ra tất cả các vị trí của GTLN}
c) Sắp xếp dãy giảm dần. Trang 101
BÀI 19: THƯ VIỆN CHƯƠNG TRÌNH CON CHUẨN (tiết 48-49)
(Ngày soạn: 03/03/2011; Ngày dạy: ....../......./2011) A. MỤC TIÊU: 1. Kiến thức:
- Học sinh biết được một số chương trình con chuẩn. 2. Kỹ năng:
- Bước đầu sử dụng được các thư viện đó trong lập trình.
- Khởi động chế độ đồ họa.
- Sử dụng được các thủ tục vẽ điểm, đường, hình tròn, hình ellipse, hình chữ nhật. 3. Thái độ:
- Học sinh chú ý học tập.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Giảng giải, thuyết trình và mô phỏng.
C. KIẾN THỨC TRỌNG TÂM
- Tìm hiểu các thư viện: CRT, GRAPH, các thủ tục vẽ điểm, đường thẳng và các hình cơ bản.
D. PHƯƠNG TIỆN DẠY HỌC
- Bảng đen, phấn trắng, máy chiếu đa năng.
E. NỘI DUNG GIẢNG DẠY
I. HOẠT ĐỘNG I: Tìm hiểu thư viện CRT (tiết 1)
. 1. Mục tiêu:
- Học sinh biết được một số chương trình con chuẩn trong thư viện. 2. Nội dung:
- Thư viện CRT chứa các thủ tục liên quan đến việc quản lý, khai thác màn hình, bàn phím.
VD: + Thủ tục Clrscr: xóa màn hình.
+ Textcolor(c): đặt màu chữ cho màn hình, trong đó c là hằng hoặc biến có giá trị
nguyên không âm để xác định màu.
+ Thủ tục Texbackground(c): đặt màu cho nền màn hình. (Giá trị màu trong SGK).
+ Thủ tục Gotoxy(x,y): đưa con trỏ đến vị trí cột x dòng y của màn hình văn bản.
3. Tiến hành dạy học:
Hoạt động của thầy
Hoạt động của trò
1. Tìm hiểu thủ tục Clrscr: 1. Tham khảo SGK:
- Yêu cầu học sinh nghiên cứu SGK, kể tên các - Clrscr, textcolor, textbackground,
chương trình con trong thư viện CRT. gotoxy.
- Cho HS tham khảo chương trình sau: - Quan sát chương trình. Begin Clrscr; Readln; End.
- Biên dịch chương trình. Hỏi? Tại sao lại xuất - Vì sử dụng thủ tục nhưng chưa sử
hiện lỗi? khắc phục như thế nào? dụng thư viện CRT.
- Thêm Uses CRT; vào đầu chương trình và thực - Thêm lệnh Uses CRT;
hiện chương trình để HS thấy được kết quả, chú ý - Quan sát giáo viên thực hiện chương
cho HS ghi nhớ màn hình trước lúc thực hiện trình. chương trình. - Xóa màn hình.
- Hỏi: Chức năng của thủ tục Clrscr; Trang 102
2. Tìm hiểu thủ tục Textcolor.
- Chiếu chương trình VD sau: - Quan sát chương trình. Uses CRT; Begin
Write(‘chua dat mau chu’); Textcolor(4);
- HS quan sát chương trình.
Write(‘da dat mau chu do’);
- Đặt màu chữ thành màu chữ đỏ. Readln End.
- Thực hiện chương trình để HS thấy kết quả.
- Hỏi: Chức năng của lệnh Textcolor(4);
3. Tìm hiểu thủ tục Texbackground.
- chiếu chương trình VD sau: Uses CRT;
- HS quan sát chương trình. Begin Textbackground(1); Write(‘da dat mau nen’); Readln
- Đặt màu nền thành màu xanh da trời. End.
- Thực hiệc CT để HS thấy được kết quả.
- Hỏi: Chức năng của lệnh Texbackground(1).
4. Tìm hiểu thủ tục Gotoxy. - Quan sát chương trình.
- Chiếu chương trình VD sau: Uses CRT; Begin
Write(‘con tro dang o cot 10 dong 20’); Gotoxy(10,20); - Quan sát kết quả. Readln End.
- Đưa con trỏ về vị trí cột 10, dòng 20.
- Thực hiện CT để HS thấy kết quả.
- Hỏi: Chức năng của lệnh Gotoxy(10,20);
II. HOẠT ĐỘNG II: Tìm hiểu thư viện Graph (tiết 1)
. 1. Mục tiêu:
- Học sinh biết được cách khởi động chế độ đồ họa. 2. Nội dung:
- Thư viện Graph chứa các chương trình phục vụ khai thác khả năng đồ họa của MT ở mức
độ thông dụng như vẽ điểm, các đường, tô màu,…
- Các thiết bị và chương trình hỗ trợ đồ họa:
+ Có hai chế độ màn hình: đồ họa và văn bản.
+ Bảng mạch điều khiển màn hình là thiết bị đảm bảo tương tác giữa bộ xử lý và màn
hình để thực hiện các chế độ phân giải và màu sắc.
+ TP Pascal cung cấp các chương trình điều khiển (có phần mở rộng là BGI) tương ứng
với các loại card đồ họa. Khi khởi động chế độ đồ họa cần chỉ ra đường dẫn đến chương trình này.
+ Tọa độ màn hình được đánh số từ 0. Cột được đánh số từ trái qua phải, dòng được
đánh số từ trên xuống dưới. Giá trị lớn nhất của tọa độ dòng và tọa độ cột được gọi là độ phân giải của màn hình. Trang 103
+ Để thực hiện được các chức năng đồ họa và sử dụng các thủ tục và hàm trong thư viện Graph.
- Khởi động chế độ đồ họa: Initgraph(dr,md:integer;pth:string);
dr : Là số hiệu của trình điều khiển BGI .
md : Là số hiệu của độ phân giải.
pth : Là đường dẫn tới các tệp BGI: Closegraph;
- Kết thúc chế độ đồ họa về chế độ văn bản:
3. Tiến hành dạy học:
Hoạt động của thầy
Hoạt động của trò
1. Yêu cầu HS nghiên cứu SGK để trả lời các 1. Tham khảo SGK để trả lời. câu hỏi:
- Hỏi: Các dạng dữ liệu nào có thể được hiển thị - Văn bản và hình ảnh. trên màn hình?
- Làm cầu nối giữa CPU và màn hình
- Hỏi: Nhiệm vụ chính của Card màn hình? khi thể hiện thông tin.
- Hỏi: Khi nói màn hình có độ phân giải 640x480 - Là nói đến màn hình có 640 dòng và là nói đến điều gì? 480 cột.
2. Đưa ra cấu trúc chung của thủ tục khởi động 2. Quan sát theo dõi dẫn dắt của giáo đồ họa. viên.
* Initgraph(dr, md : integer ; pth : string) ;
- Giải thích các thông số trong thủ tục cho HS.
- Cho HS thấy một VD khởi động đồ họa.
- Quan sát giáo viên thực hiện.
3. Giới thiệu thủ tục trở về chế độ đồ văn bản 3. Quan sát và so sánh giữa hai chế độ Closegraph;
văn bản và đồ họa.
- Yêu cầu khởi động chế độ đồ họa và chuyển về chế độ văn bản.
- Thay phiên nhau thực hiện việc chuyển
đổi giữa hai chế độ văn bản và đồ họa.
III. HOẠT ĐỘNG III: Tìm hiểu các thủ tục vẽ điểm, đường và các hình cơ bản (tiết 2)
. 1. Mục tiêu:
- Học sinh biết được các thủ tục vẽ điểm, đường và các hình cơ bản, biết các thủ tục, các
tham số và các chức năng của từng thủ tục. 2. Nội dung:
- Trước khi vẽ, ta đặt màu cho nét vẽ: Setcolor(word); - Vẽ điểm:
Putpixel(x,y:integer; color:word); - Vẽ đường thẳng:
Line(x1,y1,x2,y2:integer); (x1,y1,x2,y2: các tọa độ điểm đầu-cuối)
Lineto(x,y:integer); (vẽ từ vị trí con trỏ đến điểm có tọa độ x,y).
Linerel(dx,dy:integer); (tọa độ hiện tại cộng với gia số dx,dy) - Vẽ hình tròn: Circle(x,y:integer; r:word); - Vẽ hình chữ nhật: Rectang(x1,y1,x2,y2:integer); - Vẽ hình Elip:
Ellipse(x,y:integer; stangle,endangle,xr,yr:word);
3. Tiến hành dạy học:
Hoạt động của thầy
Hoạt động của trò
1. Tìm hiểu thủ tục Setcolor.
1. Quan sát cấu trúc chung và suy
- Cấu trúc chung của thủ tục:
nghĩ để trả lời câu hỏi. Setcolor(m:word); - Chương trình VD: - Quan sát chương trình. Trang 104 Uses graph Begin Drive:=0;
Initgraph(drive,mode,‘c:\Tp\BGI’); Circle(12,40,100); Setcolor(4); Circle(12,40,200);
- Quan sát kết quả của chương trình. Readln;
- Vẽ một điểm có màu Color trên màn End.
hình tại tọa độ (x,y).
- Thực hiện CT để HS thấy được kết quả.
- Hỏi: Chức năng của thủ tục Setcolor.
2. Quan sát cấu trúc chung và suy
nghĩ để trả lời câu hỏi.

2. Tìm hiểu thủ tục Putpixel - Quan sát chương trình.
- Cấu trúc chung của thủ tục:
- Quan sát kết quả chương trình.
Putpixel(x,y:integer;color:word);
- Vẽ một đường thẳng từ điểm có tọa độ - Chiếu chương trình VD:
(x1,y1) đến điểm có tọa độ (x2,y2). Uses graph; var driver,mode:integer;
3. Quan sát cấu trúc chung và suy Begin
nghĩ để trả lời câu hỏi. Driver:=0; - Quan sát chương trình.
Initgraph(driver, mode, 'D:\tp\BGI');
- Quan sát kết quả chương trình. Putpixel(100,40,14); readln
- Vẽ một đoạn thẳng từ điểm hiện tại đến End.
điểm có tọa độ (x,y).
- Thực hiện chương trình để HS thấy kết quả.
- Hỏi: Chức năng của thủ tục Putpixel.
4. Quan sát cấu trúc chung và suy
nghĩ để trả lời câu hỏi.

3. Tìm hiểu thủ tục Line.
- Vẽ đoạn thẳng nối điểm hiện tại với
- Cấu trúc chung của thủ tục Line:
điểm có tọa độ bằng tọa độ điểm hiện tại
Line(x1,y1,x2,y2:integer); cộng với dx, dy.
- Chiếu chương trình VD nhưng thay lệnh
Putpixel(12,40,15); bằng lệnh Line(1,1,20,20);
5. Quan sát cấu trúc chung và suy
- Thực hiện CT để HS thấy được kết quả.
nghĩ để trả lời câu hỏi.
- Hỏi: Chức năng của thủ tục Line.
4. Tìm hiểu thủ tục Lineto. - Quan sát chương trình.
- Cấu trúc chung của thủ tục: Lineto(x,y:integer);
- Chiếu chương trình VD trên nhưng thay lệnh
Putpixel(12,40,15); bằng lệnh Lineto(20
- Quan sát kết quả chương trình. ,20);
- Thực hiện CT để HS thấy được kết quả.
+ Circle : Vẽ một đường tròn có tâm tại
- Hỏi: Chức năng của thủ tục Lineto. (x,y) và bán kính r.
5. Tìm hiểu thủ tục Linerel.
- Cấu trúc chung của thủ tục:
+ Ellipse : Vẽ cung của Ellipse có tâm
Linerel(dx,dy:integer);
tại điểm x,y với bán kính trục xr, yr, từ
- Hỏi: Chức năng của thủ tục Linerel.
góc khởi đầu stangle đến góc kết thúc endangle .
6. Tìm hiểu thủ tục Circle, Ellipse, Rectangle .
6. Quan sát cấu trúc chung và suy
- Cấu trúc chung của thủ tục:
nghĩ để trả lời câu hỏi. Trang 105
* Circle(x,y:integer;r:word); - Quan sát chương trình.
* Ellipse(x,y:integer; stangle, endangle, xr,yr:word);
* Rectangle(x1,y1,x2,y2:integer);
- Quan sát kết quả chương trình. - Chương trình VD: Uses graph;
- Setcolor (m:word) : đặt màu cho nét vẽ var driver,mode:integer; với màu có số hiệu m. Begin Driver:=0;
Initgraph(driver, mode, 'D:\tp\BGI'); setcolor(86); Circle(40,40,30); setcolor(14);
Ellipse(500,200,50,120,50,100); setcolor(2); Rectangle(100,100,200,200); readln End.
IV. HOẠT ĐỘNG IV: Tìm hiểu một số thư viện khác (tiết 2).
1. Mục tiêu:
- Học sinh biết được tên và chức năng của thư viện: System, Dos, Printer. 2. Nội dung:
- Thư viện System chứa các hàm sơ cấp và các thủ tục vào/ra mà các chương trình đều dùng tới.
- Thư viện DOS chứa các thủ tục cho phép thực hiện trực tiếp các lệnh như tạo thư mục,
thiết lập ngày giờ hệ thống.
- Thư viện Printer cung cấp các thủ tục làm việc với máy in.
3. Tiến hành dạy học:
Hoạt động của thầy
Hoạt động của trò
1. Yêu cầu HS nghiên cứu SGK, nêu tên các 1. Các thư viện:System, Dos, Printer thư viện.
2. Chức năng mỗi thư viện:
- System :
Chứa các hàm và thủ tục vào/ra
2. Yêu cầu HS nêu chức năng của mỗi thư sơ cấp. viện.
- Dos : Chứa các thủ tục như tạo thư mục, đóng mở file,…
- Printer : Chức các thủ tục liên quan đến máy in.
V. HOẠT ĐỘNG V: Rèn luyện kỹ năng lập trình (Thời gian bổ sung). 1. Mục tiêu:
- Bước đầu HS sử dụng được các thủ tục của thư viện Graph để viết chương trình vẽ một số hình cơ bản.
2. Nội dung: Viết chương trình vẽ 20 hình tròn lồng nhau có tọa độ tâm là điểm chính giữa
của màn hình, các hình có bán kính cách nhau 5 điểm ảnh. Trang 106
3. Tiến hành dạy học:
Hỏi: Chức năng của thủ tụcạt động
Hỏi: Chức năng của thủ tụcạt động của thầy của trò
1. Giới thiệu nội dung yêu cầu lên bảng.
1. Quan sát yêu cầu của GV:
Định hướng cách giải quyết vấn đề cho HS.
- Thủ tục để vẽ được một hình tròn có tâm là điểm Circle(x,y : integer ; r : word); chính giữa màn hình.
- Cần 20 câu lệnh, nên dùng vòng For để
- Cần bao nhiêu câu lệnh như vậy, dùng cấu trúc chương trình ngắn gọn. nào để điều khiển.
2. Chia lớp làm 3 nhóm, một nhóm viết chương
trình trên máy, 2 nhóm viết lên bìa trong.

2. Thảo luận theo nhóm để viết
chương trình lên giấy bìa trong.
- Thu phiếu trả lời. Chiếu lên bảng gọi HS nhóm
- Báo cáo kết quả viết được.
khác lên nhận xét đánh giá. Sửa chương trình hoàn
chỉnh cho học sinh viết trên máy.
- Nhận xét, đánh giá và bổ sung thiếu sót của các nhóm khác.
3. Thực hiện chương trình trên máy để HS thấy kết quả.
3. Quan sát kết quả trên màn hình.
VI. CỦNG CỐ BÀI HỌC VÀ BÀI TẬP VỀ NHÀ (5 ph)
1. Củng cố: Qua bài học HS nắm vững những kiến thức trọng tâm sau:
+ Thư viện chương trình con cung cấp những chương trình con chuẩn nhằm mở rộng khả năng ứng dụng.
+ Khởi động chế độ đồ họa. Chuyển từ chế độ màn hình đồ họa sang chế độ màn hình văn bản.
+ Thủ tục vẽ điểm, đường và các hình cơ bản. 2. Bài tập:
* Đọc thêm bài đọc thêm 4 SGK, Trang 118. Trang 107
BÀI TẬP, ÔN TẬP HỌC KỲ II (tiết 50)
(Ngày soạn: 20/02/2010; Ngày dạy: ....../......./2010)
A. MỤC ĐÍCH – YÊU CẦU 1. Kiến thức
+ Tiếp tục củng cố cho học sinh những kiến thức đã học. 2. Kĩ năng:
+ Rèn luyện cho học sinh kĩ năng lập trình giải quyết một số bài toán dạng CT con. 3. Thái độ:
+ Tích cực trong học tập, hứng thú tiếp thu kiến thức mới.
B. PHƯƠNG PHÁP GIẢNG DẠY
- Thuyết trình, vấn đáp. E. NỘI DUNG ÔN TẬP.
Viết chương trình dạng CTC cho các bài tập sau:
(Mỗi BT là một chương trình chính)
Chú ý: Khi viết chương trình con dạng hàm, giá trị trả về chỉ cần gán khi phép tính giá trị được
thực hiện nhiều lần. VD chương trình con tính giai thừa….
1. Viết một chương trình bằng cách thực hiện lần lượt các công việc sau: a)
Lập thủ tục nhập ba số thực dương a, b, c từ bàn phím. b)
Lập thủ tục kiểm tra xem ba số trên có lập thành ba cạnh của tam giác hay không. c)
Viết thủ tục tính diện tích tam giác theo công thức: 1 S ab sin C 2 d)
Viết thủ tục tính các trung tuyến của tam giác:
2. Nhập n, m là các số nguyên dương, liệt kê các số nguyên tố nằm trong khoảng từ n đến m. (n < m).
3. Viết chương trình con sử dụng hàm tính: giai thừa của a và an. var n:longint;
5. Tối giản phân số a/b.
6. Nhập tử và mẫu số của 2 phân số (a, b) và (c, d). Thực hiện phép toán @ (có thể là +, -,

*, /) và in kết quả là phân số tối giản a c p : @  b d q
7. Nhập n phần tử là các số nguyên dương và số k và thực hiện các công việc sau:
a) Đếm xem trong dãy có bao nhiêu số bằng k?
b) Đếm xem trong dãy có bao nhiêu số lớn hơn k?
c) Đếm xem trong dãy có bao nhiêu số nhỏ hơn k?
8. Nhập dãy số thực a. Nhập số x. Sắp xếp lại dãy a thành dãy giảm.
9. Nhập dãy số thực a. Xét xem có thể sắp xếp dãy a thành dãy cấp số cộng không? const
max=100;
type mang=array[1..max] of real; var i,n,k: integer; a:mang; x:real; function ktsc:boolean; var i:integer; d:real; begin ktsc:=false; d:=a[2]-a[1]; Trang 108 for i:=1 to n-1 do
if a[i+1]-a[i]<>d then exit; ktsc:=true; end; begin
write('nhap so phan tu n= '); readln(n);
writeln('nhap gia tri cho mang:'); for i:=1 to n do begin write('a[',i,']= '); readln(a[i]); end; for i:=1 to n-1 do for k:=i+1 to n do if a[i]>a[k] then begin x:=a[i]; a[i]:=a[k]; a[k]:=x; end;
if ktsc then writeln('co the sap xep thanh cap so cong')
else writeln('khong the sap xep thanh cap so cong'); readln end.
10. Viết chương trình nhập một xâu ký tự. Thực hiện xóa các ký tự là chữ số. VAR s:string;
FUNCTION posnum(s:string):byte; var ok:boolean; i:integer; begin ok:=false; i:=1;
while (i<=length(s))and(not ok) do
if s[i] in ['0'..'9'] then ok:=true else i:=i+1;
if ok then posnum := i else posnum:=0; end; BEGIN
writeln('nhap xau s: ');readln(s);
while posnum(s)<>0 do delete(s,posnum(s),1); writeln('xau moi la: ',s); readln END.
11. Nhập xâu ký tự và tách xâu đó thành 2 xâu với vị trí và số lượng ký tự cần tách được
nhập từ bàn phím: VD: Nhập xâu s1 = “HOANG NGOC QUE” , cần tách 4 kí tự lưu tại
xâu s2 tại vị trí thứ 7 => kq: s1= ‘HOANG QUE’ và s2 = “NGOC”.
var s1,s2:string; pos, num:integer; procedure tachxau; begin Trang 109
write('nhap vi tri can tach: '); readln(pos);
write('nhap so ky tu can tach: '); readln(num); s2:=copy(s1,pos,num); delete(s1,pos,num); writeln('xau s1= ',s1); writeln('xau s2= ',s2); end; begin
write('nhap xau s1: '); readln(s1); tachxau; readln end.
12. Nhập một xâu ký tự và thực hiện:
a) Xóa tất cả các kí tự trắng dư thừa trong một xâu ký tự: (kí tự trắng dư thừa là kí tự trắng xuất
hiện ở đầu xâu, cuối xâu và có từ 2 KT trắng trở lên ở giữa các từ).
b) Từ xâu đã chuẩn hóa ở câu a, hãy đếm xem trong xâu có bao nhiêu từ.
13. Giả sử có tệp VB.txt trên ổ đĩa D. Thực hiện các công việc sau: a) Nhập 1 xâu kí tự :
b) Đếm số kí tự là chữ số, chữ cái trong xâu. c) In ra xâu chữ hoa.
14. Giả sử có tệp VB.txt trên ổ đĩa D. Thực hiện các công việc sau:
a) Nhập và ghi xâu văn bản vào tệp VB.txt.
b) Đọc và in ra xâu văn bản đó.
c) Nhập một kí tự K (K là kí tự bất kỳ), đếm xem có bao nhiêu kí tự K xuất hiện trong xâu. VAR f:text; s:string; PROCEDURE NHAP; begin
assign(f,'D:\vb.txt'); rewrite(f);
write('Nhap xau KT: '); readln(s); writeln(f,s); close(f); end; PROCEDURE DOC_IN; begin
assign(f,'d:\vb.txt'); reset(f); while not eof(f) do begin readln(f,s);
writeln('xau trong tep la: ',s); end; close(f); end; PROCEDURE DEMK; var ik,demk:integer; k:char; begin
assign(f,'d:\vb.txt'); reset(f);
write('nhap k= '); readln(k); Trang 110 demk:=0; for ik:=1 to length(s) do if s[ik] = k then inc(demk);
writeln('co ',demk,' phan tu la ',k); close(f); end; PROCEDURE DEMDONG; var dong: integer; id: byte; begin
Assign(f,'d:\vb.txt'); reset(f); dong:=0; while not EOF(f) do begin readln(f,s); inc(dong); end; writeln('so dong ',dong:2); close(f); end; BEGIN clrscr; nhap; doc_in; demk; demdong; readln END.
15. Nhà trường cần quản lý một lớp học gồm N học sinh. Hãy viết chương trình kiểu bản
ghi thực hiện các công việc sau:
a) Nhập thông tin học sinh: số thứ tự, họ tên, giới tính, quê quán, điểm toán, điểm văn.
b) Xếp loại và in ra màn hình kết quả của bảng điểm theo loại: 
Loại “GIOI” nếu điểm TB ≥ 8.0. 
Loại “KHA” nếu điểm 6.5 ≤ TB < 8.0 
Loại “TB” nếu điểm 5.0 ≤ TB < 6.5 
Trường hợp còn lại là loại yếu.
16. Nhà trường cần in danh sách một lớp học gồm N học sinh. Hãy viết chương trình kiểu
bản ghi thực hiện các công việc sau:
a) Nhập thông tin học sinh: số thứ tự, họ tên, điểm toán, điểm lý, điểm tin.
b) In danh sách vừa nhập theo mẫu sau:
17. Viết chương trình kiểu bản ghi để quản lý một thư viện sách theo các yêu cầu sau: Trang 111
a) Nhập thông tin cần quản lý gồm: Tên sách (tens), tên nhà xuất bản (nxb), năm xuất bản
(nxb), giá tiền (gia), số lượng (sl).
b) Đưa ra danh sách là tên sách, năm XB các cuốn sách của cùng 1 nhà xuất bản. NXB nhập từ bàn phím.
c) Tính tổng số tiền sách trong thư viện. Trang 112